summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Boddie <dboddie@trolltech.com>2009-05-19 14:45:28 (GMT)
committerDavid Boddie <dboddie@trolltech.com>2009-05-19 14:45:28 (GMT)
commit8821284ac4e55caf5fe712fca002e79220e9cf7e (patch)
treeb1d82e77ee04ee50b24298ae58f46c0980ec0e5d
parent2c5b7fe040575aa2ee560117c1c3455724c2f9ae (diff)
parent13f703741dee67adc7d92e4bcf525431334c9a60 (diff)
downloadQt-8821284ac4e55caf5fe712fca002e79220e9cf7e.zip
Qt-8821284ac4e55caf5fe712fca002e79220e9cf7e.tar.gz
Qt-8821284ac4e55caf5fe712fca002e79220e9cf7e.tar.bz2
Merge branch '4.5' of git@scm.dev.nokia.troll.no:qt/qt into 4.5
-rwxr-xr-x.hgignore4
-rw-r--r--FAQ.txt (renamed from FAQ)4
-rw-r--r--LGPL_EXCEPTION.txt (renamed from LGPL_EXCEPTION.TXT)0
-rwxr-xr-xconfig.tests/unix/compile.test9
-rw-r--r--config.tests/unix/opengles1/opengles1.pro2
-rw-r--r--config.tests/unix/opengles1cl/opengles1cl.pro2
-rw-r--r--config.tests/unix/opengles2/opengles2.pro2
-rw-r--r--config.tests/x11/xlib/xlib.cpp9
-rw-r--r--config.tests/x11/xlib/xlib.pro3
-rwxr-xr-xconfigure109
-rw-r--r--configure.exebin1939968 -> 856064 bytes
-rw-r--r--demos/demos.pro2
-rw-r--r--demos/embeddeddialogs/customproxy.cpp17
-rw-r--r--demos/embeddeddialogs/customproxy.h1
-rw-r--r--demos/embeddeddialogs/main.cpp1
-rw-r--r--demos/qtdemo/colors.cpp3
-rw-r--r--demos/qtdemo/menumanager.cpp3
-rw-r--r--demos/qtdemo/xml/examples.xml7
-rw-r--r--dist/README2
-rw-r--r--dist/changes-4.5.1463
-rw-r--r--dist/changes-4.5.2144
-rw-r--r--doc/doc.pri4
-rw-r--r--doc/src/accessible.qdoc2
-rw-r--r--doc/src/activeqt.qdoc6
-rw-r--r--doc/src/credits.qdoc2
-rw-r--r--doc/src/datastreamformat.qdoc8
-rw-r--r--doc/src/deployment.qdoc4
-rw-r--r--doc/src/designer-manual.qdoc12
-rw-r--r--doc/src/examples.qdoc3
-rw-r--r--doc/src/examples/codeeditor.qdoc2
-rw-r--r--doc/src/examples/collidingmice-example.qdoc39
-rw-r--r--doc/src/examples/containerextension.qdoc2
-rw-r--r--doc/src/examples/fancybrowser.qdoc148
-rw-r--r--doc/src/examples/flowlayout.qdoc115
-rw-r--r--doc/src/examples/fortuneserver.qdoc2
-rw-r--r--doc/src/examples/ftp.qdoc4
-rw-r--r--doc/src/examples/googlechat.qdoc51
-rw-r--r--doc/src/examples/googlesuggest.qdoc51
-rw-r--r--doc/src/examples/icons.qdoc2
-rw-r--r--doc/src/examples/musicplayerexample.qdoc2
-rw-r--r--doc/src/examples/qobjectxmlmodel.qdoc2
-rw-r--r--doc/src/examples/qxmlstreambookmarks.qdoc5
-rw-r--r--doc/src/examples/tabdialog.qdoc2
-rw-r--r--doc/src/examples/tooltips.qdoc2
-rw-r--r--doc/src/examples/transformations.qdoc2
-rw-r--r--doc/src/examples/trollprint.qdoc2
-rw-r--r--doc/src/images/fancybrowser-example.pngbin0 -> 98031 bytes
-rw-r--r--doc/src/images/flowlayout-example.pngbin5054 -> 29350 bytes
-rw-r--r--doc/src/images/googlechat-example.pngbin0 -> 52624 bytes
-rw-r--r--doc/src/images/googlesuggest-example.pngbin0 -> 18809 bytes
-rw-r--r--doc/src/index.qdoc6
-rw-r--r--doc/src/known-issues.qdoc9
-rw-r--r--doc/src/layout.qdoc24
-rw-r--r--doc/src/licenses.qdoc20
-rw-r--r--doc/src/mac-differences.qdoc2
-rw-r--r--doc/src/model-view-programming.qdoc2
-rw-r--r--doc/src/phonon-api.qdoc6
-rw-r--r--doc/src/platform-notes.qdoc4
-rw-r--r--doc/src/porting4-overview.qdoc6
-rw-r--r--doc/src/porting4.qdoc1
-rw-r--r--doc/src/properties.qdoc7
-rw-r--r--doc/src/q3valuelist.qdoc2
-rw-r--r--doc/src/qalgorithms.qdoc2
-rw-r--r--doc/src/qmake-manual.qdoc10
-rw-r--r--doc/src/qnamespace.qdoc2
-rw-r--r--doc/src/qset.qdoc2
-rw-r--r--doc/src/qt4-intro.qdoc9
-rw-r--r--doc/src/qtcocoa-known-issues.qdoc168
-rw-r--r--doc/src/qtdesigner.qdoc2
-rw-r--r--doc/src/qtscriptdebugger-manual.qdoc2
-rw-r--r--doc/src/snippets/alphachannel.cpp7
-rw-r--r--doc/src/snippets/code/doc_src_installation.qdoc2
-rw-r--r--doc/src/snippets/code/doc_src_layout.qdoc45
-rw-r--r--doc/src/snippets/code/doc_src_properties.qdoc1
-rw-r--r--doc/src/snippets/code/doc_src_qtestlib.qdoc6
-rw-r--r--doc/src/snippets/code/src_qdbus_qdbusargument.cpp2
-rw-r--r--doc/src/snippets/sqldatabase/sqldatabase.cpp2
-rw-r--r--doc/src/stylesheet.qdoc16
-rw-r--r--doc/src/tech-preview/known-issues.html2
-rw-r--r--doc/src/timers.qdoc4
-rw-r--r--doc/src/tutorials/addressbook-sdk.qdoc179
-rw-r--r--doc/src/xquery-introduction.qdoc2
-rw-r--r--examples/dialogs/standarddialogs/dialog.cpp6
-rw-r--r--examples/examples.pro2
-rw-r--r--examples/graphicsview/collidingmice/main.cpp4
-rw-r--r--examples/graphicsview/collidingmice/mouse.cpp5
-rw-r--r--examples/graphicsview/collidingmice/mouse.h7
-rw-r--r--examples/graphicsview/elasticnodes/edge.cpp18
-rw-r--r--examples/itemviews/chart/pieview.cpp2
-rw-r--r--examples/layouts/flowlayout/flowlayout.cpp88
-rw-r--r--examples/layouts/flowlayout/flowlayout.h12
-rw-r--r--examples/layouts/flowlayout/window.cpp3
-rw-r--r--examples/layouts/flowlayout/window.h3
-rw-r--r--examples/network/googlesuggest/googlesuggest.cpp223
-rw-r--r--examples/network/googlesuggest/googlesuggest.h (renamed from util/install/mac/unpackdlgimpl.h)49
-rw-r--r--examples/network/googlesuggest/googlesuggest.pro9
-rw-r--r--examples/network/googlesuggest/main.cpp (renamed from doc/src/snippets/webkit/simple/main.cpp)16
-rw-r--r--examples/network/googlesuggest/searchbox.cpp (renamed from util/install/win/dialogs/folderdlgimpl.h)40
-rw-r--r--examples/network/googlesuggest/searchbox.h (renamed from util/install/mac/licensedlgimpl.h)25
-rw-r--r--examples/network/network.pro1
-rw-r--r--examples/opengl/hellogl_es/hellogl_es.pro12
-rw-r--r--examples/opengl/hellogl_es2/hellogl_es2.pro6
-rw-r--r--examples/phonon/README2
-rw-r--r--examples/tutorials/addressbook/README2
-rw-r--r--examples/webkit/fancybrowser/fancybrowser.pro11
-rw-r--r--examples/webkit/fancybrowser/jquery.min.js19
-rw-r--r--examples/webkit/fancybrowser/jquery.qrc5
-rw-r--r--examples/webkit/fancybrowser/main.cpp (renamed from util/install/win/uninstaller/uninstallimpl.h)23
-rw-r--r--examples/webkit/fancybrowser/mainwindow.cpp185
-rw-r--r--examples/webkit/fancybrowser/mainwindow.h (renamed from util/install/win/pages/sidedecorationimpl.h)52
-rw-r--r--examples/webkit/googlechat/form.ui214
-rw-r--r--examples/webkit/googlechat/googlechat.cpp163
-rw-r--r--examples/webkit/googlechat/googlechat.h (renamed from util/install/mac/licensedlgimpl.cpp)48
-rw-r--r--examples/webkit/googlechat/googlechat.pro11
-rw-r--r--examples/webkit/googlechat/main.cpp (renamed from util/install/win/archive.h)18
-rw-r--r--examples/webkit/webkit.pro4
-rw-r--r--examples/widgets/movie/movie.pro2
-rw-r--r--mkspecs/common/mac-g++.conf8
-rw-r--r--mkspecs/features/include_source_dir.prf1
-rw-r--r--mkspecs/features/moc.prf74
-rw-r--r--mkspecs/features/uic.prf14
-rw-r--r--mkspecs/features/win32/ltcg.prf5
-rw-r--r--mkspecs/macx-g++/qmake.conf4
-rw-r--r--mkspecs/macx-g++42/qmake.conf5
-rw-r--r--mkspecs/win32-msvc2005/qmake.conf7
-rw-r--r--mkspecs/win32-msvc2008/qmake.conf7
-rw-r--r--mkspecs/wince50standard-mipsii-msvc2008/default_post.prf2
-rw-r--r--qmake/generators/makefile.cpp14
-rw-r--r--qmake/generators/makefile.h6
-rw-r--r--qmake/generators/metamakefile.cpp2
-rw-r--r--qmake/generators/win32/msvc_nmake.cpp6
-rw-r--r--qmake/generators/win32/msvc_vcproj.cpp2
-rw-r--r--qmake/generators/win32/winmakefile.cpp18
-rw-r--r--qmake/generators/xmloutput.cpp2
-rw-r--r--qmake/project.cpp4
-rw-r--r--src/3rdparty/README5
-rw-r--r--src/3rdparty/phonon/ds9/mediaobject.cpp27
-rw-r--r--src/3rdparty/phonon/phonon/phononnamespace.h5
-rw-r--r--src/3rdparty/powervr/pvr2d.h502
-rw-r--r--src/3rdparty/powervr/wsegl.h240
-rw-r--r--src/3rdparty/webkit/ChangeLog8
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/ChangeLog57
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/bytecode/CodeBlock.cpp1
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/parser/Lexer.h2
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/parser/Nodes.cpp2
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/parser/Nodes.h2
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/JSGlobalObjectFunctions.cpp8
-rw-r--r--src/3rdparty/webkit/VERSION2
-rw-r--r--src/3rdparty/webkit/WebCore/ChangeLog293
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLCanvasElement.cpp4
-rw-r--r--src/3rdparty/webkit/WebCore/page/DOMWindow.cpp3
-rw-r--r--src/3rdparty/webkit/WebCore/page/DOMWindow.h2
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/qt/FontCacheQt.cpp27
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/qt/FontFallbackListQt.cpp12
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/qt/FontQt.cpp33
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/qt/GraphicsContextQt.cpp80
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/qt/ImageBufferQt.cpp127
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/qt/ImageDecoderQt.cpp13
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/qt/ImageDecoderQt.h3
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/qt/ImageQt.cpp5
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/qt/PathQt.cpp74
-rw-r--r--src/3rdparty/webkit/WebCore/platform/network/qt/QNetworkReplyHandler.cpp4
-rw-r--r--src/3rdparty/webkit/WebCore/platform/network/qt/ResourceRequestQt.cpp16
-rw-r--r--src/3rdparty/webkit/WebCore/platform/qt/DragDataQt.cpp6
-rw-r--r--src/3rdparty/webkit/WebCore/platform/qt/RenderThemeQt.cpp4
-rw-r--r--src/3rdparty/webkit/WebCore/platform/qt/WheelEventQt.cpp13
-rw-r--r--src/3rdparty/webkit/WebCore/plugins/mac/PluginViewMac.cpp15
-rw-r--r--src/3rdparty/webkit/WebCore/plugins/qt/PluginViewQt.cpp6
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/qwebframe.cpp4
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp27
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/qwebview.cpp18
-rw-r--r--src/3rdparty/webkit/WebKit/qt/ChangeLog83
-rw-r--r--src/3rdparty/webkit/WebKit/qt/docs/docs.pri15
-rw-r--r--src/3rdparty/webkit/WebKit/qt/docs/qtwebkit.qdoc (renamed from doc/src/qtwebkit.qdoc)6
-rw-r--r--src/3rdparty/webkit/WebKit/qt/docs/qtwebkit.qdocconf195
-rw-r--r--src/3rdparty/webkit/WebKit/qt/docs/webkitsnippets/qtwebkit_build_snippet.qdoc (renamed from doc/src/snippets/code/doc_src_qtwebkit.qdoc)0
-rw-r--r--src/3rdparty/webkit/WebKit/qt/docs/webkitsnippets/qtwebkit_qwebview_snippet.cpp (renamed from doc/src/snippets/code/src_3rdparty_webkit_WebKit_qt_Api_qwebview.cpp)0
-rw-r--r--src/3rdparty/webkit/WebKit/qt/docs/webkitsnippets/simple/main.cpp34
-rw-r--r--src/3rdparty/webkit/WebKit/qt/docs/webkitsnippets/simple/simple.pro (renamed from doc/src/snippets/webkit/simple/simple.pro)0
-rw-r--r--src/3rdparty/webkit/WebKit/qt/docs/webkitsnippets/webpage/main.cpp (renamed from doc/src/snippets/webkit/webpage/main.cpp)19
-rw-r--r--src/3rdparty/webkit/WebKit/qt/docs/webkitsnippets/webpage/webpage.pro (renamed from doc/src/snippets/webkit/webpage/webpage.pro)0
-rw-r--r--src/3rdparty/webkit/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp67
-rw-r--r--src/activeqt/container/container.pro40
-rw-r--r--src/activeqt/control/control.pro30
-rw-r--r--src/corelib/arch/qatomic_mips.h106
-rw-r--r--src/corelib/codecs/qtsciicodec.cpp3
-rw-r--r--src/corelib/codecs/qutfcodec.cpp4
-rw-r--r--src/corelib/concurrent/qfutureinterface.h2
-rw-r--r--src/corelib/concurrent/qfuturewatcher.cpp2
-rw-r--r--src/corelib/global/qfeatures.h54
-rw-r--r--src/corelib/global/qglobal.h8
-rw-r--r--src/corelib/global/qlibraryinfo.cpp107
-rw-r--r--src/corelib/global/qnamespace.h6
-rw-r--r--src/corelib/io/qdatastream.cpp2
-rw-r--r--src/corelib/io/qdir.cpp47
-rw-r--r--src/corelib/io/qdiriterator.cpp4
-rw-r--r--src/corelib/io/qfile.cpp22
-rw-r--r--src/corelib/io/qfilesystemwatcher_inotify.cpp2
-rw-r--r--src/corelib/io/qfsfileengine_unix.cpp2
-rw-r--r--src/corelib/io/qfsfileengine_win.cpp11
-rw-r--r--src/corelib/io/qprocess_unix.cpp8
-rw-r--r--src/corelib/io/qresource.cpp2
-rw-r--r--src/corelib/io/qsettings.cpp6
-rw-r--r--src/corelib/io/qtemporaryfile.cpp275
-rw-r--r--src/corelib/io/qtextstream.cpp6
-rw-r--r--src/corelib/io/qurl.cpp6
-rw-r--r--src/corelib/kernel/qcoreapplication.cpp4
-rw-r--r--src/corelib/kernel/qcoreevent.cpp1
-rw-r--r--src/corelib/kernel/qcoreevent.h1
-rw-r--r--src/corelib/kernel/qeventdispatcher_glib.cpp3
-rw-r--r--src/corelib/kernel/qeventdispatcher_win.cpp15
-rw-r--r--src/corelib/kernel/qeventloop.cpp5
-rw-r--r--src/corelib/kernel/qobject.cpp30
-rw-r--r--src/corelib/kernel/qobject_p.h1
-rw-r--r--src/corelib/kernel/qsharedmemory.cpp4
-rw-r--r--src/corelib/kernel/qtimer.cpp2
-rw-r--r--src/corelib/kernel/qvariant.cpp5
-rw-r--r--src/corelib/thread/qthread.cpp12
-rw-r--r--src/corelib/thread/qthread_unix.cpp3
-rw-r--r--src/corelib/thread/qthread_win.cpp3
-rw-r--r--src/corelib/tools/qbytearraymatcher.cpp3
-rw-r--r--src/corelib/tools/qbytearraymatcher.h7
-rw-r--r--src/corelib/tools/qhash.cpp224
-rw-r--r--src/corelib/tools/qlinkedlist.cpp4
-rw-r--r--src/corelib/tools/qlistdata.cpp12
-rw-r--r--src/corelib/tools/qlocale.cpp4
-rw-r--r--src/corelib/tools/qrect.cpp2
-rw-r--r--src/corelib/tools/qsharedpointer_impl.h21
-rw-r--r--src/corelib/tools/qsize.cpp2
-rw-r--r--src/corelib/tools/qstring.cpp38
-rw-r--r--src/corelib/tools/qstring.h2
-rw-r--r--src/corelib/tools/qstringlist.cpp2
-rw-r--r--src/corelib/tools/qtimeline.cpp4
-rw-r--r--src/corelib/tools/qvector.h4
-rw-r--r--src/dbus/qdbusintegrator.cpp13
-rw-r--r--src/dbus/qdbuspendingcall.cpp10
-rw-r--r--src/gui/accessible/qaccessible_mac.mm122
-rw-r--r--src/gui/accessible/qaccessiblewidget.cpp13
-rw-r--r--src/gui/dialogs/qabstractprintdialog.cpp2
-rw-r--r--src/gui/dialogs/qfiledialog.cpp340
-rw-r--r--src/gui/dialogs/qfiledialog_mac.mm2
-rw-r--r--src/gui/dialogs/qfiledialog_p.h39
-rw-r--r--src/gui/dialogs/qfilesystemmodel.cpp5
-rw-r--r--src/gui/dialogs/qfilesystemmodel.h2
-rw-r--r--src/gui/dialogs/qfilesystemmodel_p.h12
-rw-r--r--src/gui/dialogs/qfontdialog_mac.mm73
-rw-r--r--src/gui/dialogs/qinputdialog.cpp181
-rw-r--r--src/gui/dialogs/qmessagebox.cpp87
-rw-r--r--src/gui/dialogs/qprintdialog_unix.cpp4
-rw-r--r--src/gui/dialogs/qsidebar.cpp27
-rw-r--r--src/gui/dialogs/qsidebar_p.h13
-rw-r--r--src/gui/dialogs/qwizard.cpp4
-rw-r--r--src/gui/dialogs/qwizard_win.cpp5
-rw-r--r--src/gui/dialogs/qwizard_win_p.h2
-rw-r--r--src/gui/embedded/qscreen_qws.cpp2
-rw-r--r--src/gui/embedded/qscreentransformed_qws.cpp16
-rw-r--r--src/gui/embedded/qscreenvfb_qws.cpp3
-rw-r--r--src/gui/embedded/qsoundqss_qws.cpp40
-rw-r--r--src/gui/embedded/qwindowsystem_qws.cpp2
-rw-r--r--src/gui/graphicsview/qgraphicsitem.cpp595
-rw-r--r--src/gui/graphicsview/qgraphicsitem_p.h60
-rw-r--r--src/gui/graphicsview/qgraphicslayoutitem.cpp2
-rw-r--r--src/gui/graphicsview/qgraphicsproxywidget.cpp8
-rw-r--r--src/gui/graphicsview/qgraphicsscene.cpp415
-rw-r--r--src/gui/graphicsview/qgraphicsscene_p.h4
-rw-r--r--src/gui/graphicsview/qgraphicssceneevent.cpp14
-rw-r--r--src/gui/graphicsview/qgraphicsview.cpp292
-rw-r--r--src/gui/graphicsview/qgraphicsview_p.h7
-rw-r--r--src/gui/graphicsview/qgraphicswidget.cpp58
-rw-r--r--src/gui/graphicsview/qgraphicswidget_p.h2
-rw-r--r--src/gui/image/qicon.cpp5
-rw-r--r--src/gui/image/qimage.cpp12
-rw-r--r--src/gui/image/qimagereader.cpp1
-rw-r--r--src/gui/image/qpixmap.cpp20
-rw-r--r--src/gui/image/qpixmap_win.cpp1
-rw-r--r--src/gui/image/qpixmap_x11.cpp2
-rw-r--r--src/gui/image/qpixmapcache.cpp11
-rw-r--r--src/gui/inputmethod/qwininputcontext_win.cpp10
-rw-r--r--src/gui/itemviews/qabstractitemview.cpp31
-rw-r--r--src/gui/itemviews/qabstractitemview_p.h1
-rw-r--r--src/gui/itemviews/qheaderview.cpp31
-rw-r--r--src/gui/itemviews/qheaderview_p.h3
-rw-r--r--src/gui/itemviews/qitemselectionmodel.cpp20
-rw-r--r--src/gui/itemviews/qlistview.cpp7
-rw-r--r--src/gui/itemviews/qlistwidget.cpp2
-rw-r--r--src/gui/itemviews/qsortfilterproxymodel.cpp27
-rw-r--r--src/gui/itemviews/qtreeview.cpp2
-rw-r--r--src/gui/kernel/qapplication.cpp144
-rw-r--r--src/gui/kernel/qapplication_mac.mm32
-rw-r--r--src/gui/kernel/qapplication_qws.cpp69
-rw-r--r--src/gui/kernel/qapplication_win.cpp27
-rw-r--r--src/gui/kernel/qapplication_x11.cpp114
-rw-r--r--src/gui/kernel/qclipboard.cpp2
-rw-r--r--src/gui/kernel/qcocoaapplication_mac.mm22
-rw-r--r--src/gui/kernel/qcocoaapplicationdelegate_mac.mm33
-rw-r--r--src/gui/kernel/qcocoamenuloader_mac.mm22
-rw-r--r--src/gui/kernel/qcocoapanel_mac.mm13
-rw-r--r--src/gui/kernel/qcocoaview_mac.mm156
-rw-r--r--src/gui/kernel/qcocoaview_mac_p.h3
-rw-r--r--src/gui/kernel/qcocoawindow_mac.mm33
-rw-r--r--src/gui/kernel/qcocoawindowdelegate_mac.mm39
-rw-r--r--src/gui/kernel/qcursor.h2
-rw-r--r--src/gui/kernel/qcursor_mac.mm16
-rw-r--r--src/gui/kernel/qevent.cpp13
-rw-r--r--src/gui/kernel/qlayout.cpp11
-rw-r--r--src/gui/kernel/qmacdefines_mac.h2
-rw-r--r--src/gui/kernel/qshortcutmap.cpp1
-rw-r--r--src/gui/kernel/qt_cocoa_helpers_mac.mm40
-rw-r--r--src/gui/kernel/qt_cocoa_helpers_mac_p.h1
-rw-r--r--src/gui/kernel/qt_mac.cpp45
-rw-r--r--src/gui/kernel/qt_mac_p.h3
-rw-r--r--src/gui/kernel/qwidget.cpp119
-rw-r--r--src/gui/kernel/qwidget_mac.mm234
-rw-r--r--src/gui/kernel/qwidget_p.h3
-rw-r--r--src/gui/kernel/qwidget_x11.cpp19
-rw-r--r--src/gui/kernel/qx11embed_x11.cpp7
-rw-r--r--src/gui/painting/qbackingstore.cpp17
-rw-r--r--src/gui/painting/qblendfunctions.cpp173
-rw-r--r--src/gui/painting/qcolor.cpp4
-rw-r--r--src/gui/painting/qcolormap_win.cpp6
-rw-r--r--src/gui/painting/qdrawhelper.cpp95
-rw-r--r--src/gui/painting/qemulationpaintengine.cpp22
-rw-r--r--src/gui/painting/qmemrotate.cpp29
-rw-r--r--src/gui/painting/qmemrotate_p.h9
-rw-r--r--src/gui/painting/qpaintdevice_qws.cpp3
-rw-r--r--src/gui/painting/qpaintdevice_win.cpp5
-rw-r--r--src/gui/painting/qpaintdevice_x11.cpp216
-rw-r--r--src/gui/painting/qpaintengine.cpp4
-rw-r--r--src/gui/painting/qpaintengine_mac.cpp5
-rw-r--r--src/gui/painting/qpaintengine_p.h12
-rw-r--r--src/gui/painting/qpaintengine_raster.cpp183
-rw-r--r--src/gui/painting/qpaintengine_raster_p.h2
-rw-r--r--src/gui/painting/qpaintengine_x11.cpp35
-rw-r--r--src/gui/painting/qpainter.cpp369
-rw-r--r--src/gui/painting/qpainterpath.cpp4
-rw-r--r--src/gui/painting/qprintengine_mac.mm66
-rw-r--r--src/gui/painting/qprintengine_mac_p.h1
-rw-r--r--src/gui/painting/qprintengine_win.cpp2
-rw-r--r--src/gui/painting/qprinter.cpp10
-rw-r--r--src/gui/painting/qtextureglyphcache.cpp11
-rw-r--r--src/gui/painting/qtransform.cpp86
-rw-r--r--src/gui/painting/qtransform.h22
-rw-r--r--src/gui/painting/qwindowsurface.cpp7
-rw-r--r--src/gui/painting/qwindowsurface_raster.cpp4
-rw-r--r--src/gui/styles/gtksymbols.cpp67
-rw-r--r--src/gui/styles/gtksymbols_p.h11
-rw-r--r--src/gui/styles/qgtkstyle.cpp70
-rw-r--r--src/gui/styles/qmacstyle_mac.mm101
-rw-r--r--src/gui/styles/qstylesheetstyle.cpp30
-rw-r--r--src/gui/styles/qwindowsmobilestyle.cpp3
-rw-r--r--src/gui/styles/qwindowsvistastyle.cpp23
-rw-r--r--src/gui/styles/qwindowsvistastyle_p.h1
-rw-r--r--src/gui/styles/qwindowsxpstyle.cpp4
-rw-r--r--src/gui/text/qcssparser.cpp35
-rw-r--r--src/gui/text/qfont.cpp10
-rw-r--r--src/gui/text/qfontdatabase_win.cpp12
-rw-r--r--src/gui/text/qfontdatabase_x11.cpp2
-rw-r--r--src/gui/text/qfontengine.cpp39
-rw-r--r--src/gui/text/qfontengine_ft.cpp53
-rw-r--r--src/gui/text/qfontengine_mac.mm31
-rw-r--r--src/gui/text/qfontengine_p.h4
-rw-r--r--src/gui/text/qfontengine_win.cpp6
-rw-r--r--src/gui/text/qtextcursor.cpp5
-rw-r--r--src/gui/text/qtextdocument.cpp2
-rw-r--r--src/gui/text/qtextformat.cpp2
-rw-r--r--src/gui/text/qtextformat.h6
-rw-r--r--src/gui/text/qtextlayout.cpp62
-rw-r--r--src/gui/text/qtextobject.cpp2
-rw-r--r--src/gui/text/qtexttable.cpp7
-rw-r--r--src/gui/util/qcompleter.cpp9
-rw-r--r--src/gui/util/qundostack.cpp2
-rw-r--r--src/gui/widgets/qabstractbutton.cpp9
-rw-r--r--src/gui/widgets/qabstractbutton.h3
-rw-r--r--src/gui/widgets/qcalendarwidget.cpp2
-rw-r--r--src/gui/widgets/qcocoamenu_mac.mm41
-rw-r--r--src/gui/widgets/qcombobox.cpp2
-rw-r--r--src/gui/widgets/qcombobox_p.h2
-rw-r--r--src/gui/widgets/qdialogbuttonbox.cpp3
-rw-r--r--src/gui/widgets/qlcdnumber.cpp2
-rw-r--r--src/gui/widgets/qlineedit.cpp2
-rw-r--r--src/gui/widgets/qmaccocoaviewcontainer_mac.mm22
-rw-r--r--src/gui/widgets/qmacnativewidget_mac.mm22
-rw-r--r--src/gui/widgets/qmainwindow.cpp11
-rw-r--r--src/gui/widgets/qmainwindowlayout_mac.mm44
-rw-r--r--src/gui/widgets/qmdiarea.cpp2
-rw-r--r--src/gui/widgets/qmenu.cpp4
-rw-r--r--src/gui/widgets/qmenu_p.h2
-rw-r--r--src/gui/widgets/qmenu_wince.cpp18
-rw-r--r--src/gui/widgets/qmenubar.cpp2
-rw-r--r--src/gui/widgets/qplaintextedit.cpp2
-rw-r--r--src/gui/widgets/qscrollarea.cpp2
-rw-r--r--src/gui/widgets/qsplitter.cpp2
-rw-r--r--src/gui/widgets/qtabbar.cpp99
-rw-r--r--src/gui/widgets/qtabbar_p.h33
-rw-r--r--src/gui/widgets/qtabwidget.cpp2
-rw-r--r--src/gui/widgets/qtoolbar.cpp11
-rw-r--r--src/gui/widgets/qtoolbox.cpp2
-rw-r--r--src/network/access/access.pri6
-rw-r--r--src/network/access/qhttp.cpp2
-rw-r--r--src/network/access/qhttpnetworkconnection.cpp1161
-rw-r--r--src/network/access/qhttpnetworkconnection_p.h243
-rw-r--r--src/network/access/qhttpnetworkheader.cpp123
-rw-r--r--src/network/access/qhttpnetworkheader_p.h (renamed from util/install/win/resource.h)82
-rw-r--r--src/network/access/qhttpnetworkreply.cpp686
-rw-r--r--src/network/access/qhttpnetworkreply_p.h224
-rw-r--r--src/network/access/qhttpnetworkrequest.cpp261
-rw-r--r--src/network/access/qhttpnetworkrequest_p.h144
-rw-r--r--src/network/access/qnetworkaccesshttpbackend.cpp42
-rw-r--r--src/network/access/qnetworkaccessmanager.cpp3
-rw-r--r--src/network/access/qnetworkcookie.cpp51
-rw-r--r--src/network/access/qnetworkcookie_p.h1
-rw-r--r--src/network/access/qnetworkdiskcache.cpp17
-rw-r--r--src/network/access/qnetworkreplyimpl.cpp44
-rw-r--r--src/network/kernel/qauthenticator.cpp11
-rw-r--r--src/network/kernel/qnetworkinterface.cpp2
-rw-r--r--src/network/kernel/qnetworkproxy.cpp22
-rw-r--r--src/network/socket/qabstractsocket.cpp6
-rw-r--r--src/network/socket/qlocalserver_unix.cpp6
-rw-r--r--src/network/socket/qlocalsocket_p.h1
-rw-r--r--src/network/socket/qlocalsocket_unix.cpp28
-rw-r--r--src/network/socket/qlocalsocket_win.cpp2
-rw-r--r--src/network/socket/qnativesocketengine_unix.cpp19
-rw-r--r--src/network/ssl/qsslcipher.cpp2
-rw-r--r--src/network/ssl/qsslsocket_openssl_symbols.cpp9
-rw-r--r--src/opengl/opengl.pro10
-rw-r--r--src/opengl/qgl.cpp26
-rw-r--r--src/opengl/qgl_cl_p.h2
-rw-r--r--src/opengl/qgl_mac.mm30
-rw-r--r--src/opengl/qgl_p.h1
-rw-r--r--src/opengl/qglframebufferobject.cpp4
-rw-r--r--src/opengl/qglpixelbuffer_egl.cpp8
-rw-r--r--src/opengl/qglpixelbuffer_mac.mm9
-rw-r--r--src/opengl/qglpixelbuffer_win.cpp2
-rw-r--r--src/opengl/qpaintengine_opengl.cpp59
-rw-r--r--src/opengl/qwindowsurface_gl.cpp6
-rw-r--r--src/plugins/accessible/widgets/simplewidgets.h1
-rw-r--r--src/plugins/gfxdrivers/directfb/directfb.pro42
-rw-r--r--src/plugins/gfxdrivers/directfb/qdirectfbkeyboard.cpp130
-rw-r--r--src/plugins/gfxdrivers/directfb/qdirectfbmouse.cpp41
-rw-r--r--src/plugins/gfxdrivers/directfb/qdirectfbmouse.h1
-rw-r--r--src/plugins/gfxdrivers/directfb/qdirectfbpaintdevice.cpp75
-rw-r--r--src/plugins/gfxdrivers/directfb/qdirectfbpaintdevice.h19
-rw-r--r--src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp1477
-rw-r--r--src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.h2
-rw-r--r--src/plugins/gfxdrivers/directfb/qdirectfbpixmap.cpp272
-rw-r--r--src/plugins/gfxdrivers/directfb/qdirectfbpixmap.h11
-rw-r--r--src/plugins/gfxdrivers/directfb/qdirectfbscreen.cpp581
-rw-r--r--src/plugins/gfxdrivers/directfb/qdirectfbscreen.h66
-rw-r--r--src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.cpp (renamed from src/plugins/gfxdrivers/directfb/qdirectfbsurface.cpp)166
-rw-r--r--src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.h (renamed from src/plugins/gfxdrivers/directfb/qdirectfbsurface.h)24
-rw-r--r--src/plugins/gfxdrivers/powervr/QWSWSEGL/QWSWSEGL.pro2
-rw-r--r--src/plugins/gfxdrivers/powervr/QWSWSEGL/pvrqwsdrawable.c68
-rw-r--r--src/plugins/gfxdrivers/powervr/QWSWSEGL/pvrqwsdrawable_p.h2
-rw-r--r--src/plugins/gfxdrivers/powervr/README12
-rw-r--r--src/plugins/gfxdrivers/powervr/powervr.pri2
-rw-r--r--src/plugins/gfxdrivers/powervr/pvreglscreen/pvreglscreen.cpp2
-rw-r--r--src/plugins/gfxdrivers/powervr/pvreglscreen/pvreglscreen.pro7
-rw-r--r--src/plugins/iconengines/svgiconengine/qsvgiconengine.cpp24
-rw-r--r--src/plugins/qpluginbase.pri2
-rw-r--r--src/qbase.pri2
-rw-r--r--src/qt3support/dialogs/q3filedialog.cpp13
-rw-r--r--src/qt3support/network/q3http.cpp2
-rw-r--r--src/qt3support/network/q3urloperator.cpp2
-rw-r--r--src/qt3support/text/q3richtext.cpp3
-rw-r--r--src/qt3support/widgets/q3action.cpp2
-rw-r--r--src/qt3support/widgets/q3groupbox.cpp4
-rw-r--r--src/qt3support/widgets/q3popupmenu.cpp2
-rw-r--r--src/qt3support/widgets/q3progressbar.cpp2
-rw-r--r--src/qt3support/widgets/q3scrollview.cpp2
-rw-r--r--src/script/qscriptvalueiterator.cpp4
-rw-r--r--src/scripttools/debugging/qscriptbreakpointswidget.cpp8
-rw-r--r--src/scripttools/debugging/qscriptcompletiontask.cpp8
-rw-r--r--src/scripttools/debugging/qscriptdebugger.cpp6
-rw-r--r--src/scripttools/debugging/qscriptdebuggeragent.cpp19
-rw-r--r--src/scripttools/debugging/qscriptdebuggeragent_p.h3
-rw-r--r--src/scripttools/debugging/qscriptdebuggeragent_p_p.h6
-rw-r--r--src/scripttools/debugging/qscriptdebuggerbackend.cpp2
-rw-r--r--src/scripttools/debugging/qscriptdebuggercommandexecutor.cpp4
-rw-r--r--src/scripttools/debugging/qscriptdebuggerconsoleglobalobject.cpp5
-rw-r--r--src/scripttools/debugging/qscriptdebuggerlocalswidget.cpp8
-rw-r--r--src/scripttools/debugging/qscriptdebuggerscriptedconsolecommand.cpp18
-rw-r--r--src/scripttools/debugging/qscriptedit.cpp10
-rw-r--r--src/scripttools/debugging/qscriptenginedebugger.h4
-rw-r--r--src/sql/drivers/db2/qsql_db2.cpp105
-rw-r--r--src/sql/drivers/ibase/qsql_ibase.cpp73
-rw-r--r--src/sql/drivers/mysql/qsql_mysql.cpp144
-rw-r--r--src/sql/drivers/mysql/qsql_mysql.h3
-rw-r--r--src/sql/drivers/oci/qsql_oci.cpp60
-rw-r--r--src/sql/drivers/odbc/qsql_odbc.cpp148
-rw-r--r--src/sql/drivers/odbc/qsql_odbc.h4
-rw-r--r--src/sql/drivers/psql/qsql_psql.cpp32
-rw-r--r--src/sql/drivers/sqlite/qsql_sqlite.cpp16
-rw-r--r--src/sql/drivers/sqlite2/qsql_sqlite2.cpp20
-rw-r--r--src/sql/drivers/tds/qsql_tds.cpp21
-rw-r--r--src/sql/kernel/qsqldatabase.cpp2
-rw-r--r--src/sql/kernel/qsqldriver.cpp140
-rw-r--r--src/sql/kernel/qsqldriver.h6
-rw-r--r--src/sql/kernel/qsqlquery.cpp2
-rw-r--r--src/sql/models/qsqlrelationaltablemodel.cpp73
-rw-r--r--src/sql/models/qsqltablemodel.cpp20
-rw-r--r--src/src.pro2
-rw-r--r--src/svg/qsvghandler.cpp33
-rw-r--r--src/svg/qsvgstyle.cpp12
-rw-r--r--src/svg/qsvgstyle_p.h11
-rw-r--r--src/svg/qsvgwidget.cpp16
-rw-r--r--src/testlib/qtestcase.cpp2
-rw-r--r--src/tools/uic/cpp/cppwriteinitialization.cpp16
-rw-r--r--src/xml/sax/qxml.cpp2
-rw-r--r--src/xmlpatterns/expr/qapplytemplate.cpp3
-rw-r--r--src/xmlpatterns/expr/qxsltsimplecontentconstructor.cpp2
-rw-r--r--src/xmlpatterns/functions/qsequencefns.cpp3
-rw-r--r--tests/arthur/common/images.qrc1
-rw-r--r--tests/arthur/common/images/borderimage.pngbin0 -> 826 bytes
-rw-r--r--tests/arthur/common/paintcommands.cpp19
-rw-r--r--tests/arthur/common/qengines.cpp4
-rw-r--r--tests/arthur/data/qps/borderimage.qps164
-rw-r--r--tests/arthur/data/qps/borderimage_qps.pngbin0 -> 91838 bytes
-rw-r--r--tests/auto/auto.pro3
-rw-r--r--tests/auto/bic/tst_bic.cpp19
-rw-r--r--tests/auto/collections/tst_collections.cpp38
-rw-r--r--tests/auto/compilerwarnings/tst_compilerwarnings.cpp2
-rw-r--r--tests/auto/macgui/tst_gui.cpp7
-rw-r--r--tests/auto/mediaobject/tst_mediaobject.cpp20
-rw-r--r--tests/auto/moc/forgotten-qinterface.h2
-rw-r--r--tests/auto/moc/tst_moc.cpp84
-rw-r--r--tests/auto/network-settings.h9
-rw-r--r--tests/auto/q3accel/q3accel.pro1
-rw-r--r--tests/auto/q3accel/tst_q3accel.cpp86
-rw-r--r--tests/auto/q3action/q3action.pro1
-rw-r--r--tests/auto/q3actiongroup/q3actiongroup.pro1
-rw-r--r--tests/auto/q3buttongroup/clickLock/clickLock.pro3
-rw-r--r--tests/auto/q3buttongroup/tst_q3buttongroup.pro1
-rw-r--r--tests/auto/q3canvas/q3canvas.pro1
-rw-r--r--tests/auto/q3checklistitem/q3checklistitem.pro1
-rw-r--r--tests/auto/q3combobox/q3combobox.pro1
-rw-r--r--tests/auto/q3cstring/q3cstring.pro1
-rw-r--r--tests/auto/q3cstring/tst_q3cstring.cpp86
-rw-r--r--tests/auto/q3databrowser/q3databrowser.pro1
-rw-r--r--tests/auto/q3dateedit/q3dateedit.pro1
-rw-r--r--tests/auto/q3datetimeedit/q3datetimeedit.pro1
-rw-r--r--tests/auto/q3deepcopy/q3deepcopy.pro1
-rw-r--r--tests/auto/q3dict/q3dict.pro1
-rw-r--r--tests/auto/q3dns/q3dns.pro1
-rw-r--r--tests/auto/q3dockwindow/q3dockwindow.pro1
-rw-r--r--tests/auto/q3filedialog/q3filedialog.pro1
-rw-r--r--tests/auto/q3frame/q3frame.pro1
-rw-r--r--tests/auto/q3groupbox/q3groupbox.pro1
-rw-r--r--tests/auto/q3hbox/q3hbox.pro1
-rw-r--r--tests/auto/q3header/q3header.pro1
-rw-r--r--tests/auto/q3header/tst_q3header.cpp4
-rw-r--r--tests/auto/q3iconview/q3iconview.pro1
-rw-r--r--tests/auto/q3listbox/q3listbox.pro3
-rw-r--r--tests/auto/q3listview/q3listview.pro1
-rw-r--r--tests/auto/q3listviewitemiterator/q3listviewitemiterator.pro1
-rw-r--r--tests/auto/q3mainwindow/q3mainwindow.pro1
-rw-r--r--tests/auto/q3popupmenu/q3popupmenu.pro1
-rw-r--r--tests/auto/q3process/q3process.pro1
-rw-r--r--tests/auto/q3process/tst/tst.pro3
-rw-r--r--tests/auto/q3progressbar/q3progressbar.pro1
-rw-r--r--tests/auto/q3progressdialog/q3progressdialog.pro1
-rw-r--r--tests/auto/q3ptrlist/q3ptrlist.pro1
-rw-r--r--tests/auto/q3ptrlist/tst_q3ptrlist.cpp13
-rw-r--r--tests/auto/q3richtext/q3richtext.pro1
-rw-r--r--tests/auto/q3scrollview/q3scrollview.pro3
-rw-r--r--tests/auto/q3semaphore/q3semaphore.pro1
-rw-r--r--tests/auto/q3serversocket/q3serversocket.pro1
-rw-r--r--tests/auto/q3socket/q3socket.pro1
-rw-r--r--tests/auto/q3socketdevice/q3socketdevice.pro1
-rw-r--r--tests/auto/q3socketdevice/tst_q3socketdevice.cpp7
-rw-r--r--tests/auto/q3sqlcursor/q3sqlcursor.pro1
-rw-r--r--tests/auto/q3sqlselectcursor/q3sqlselectcursor.pro1
-rw-r--r--tests/auto/q3stylesheet/q3stylesheet.pro1
-rw-r--r--tests/auto/q3tabdialog/q3tabdialog.pro1
-rw-r--r--tests/auto/q3table/q3table.pro1
-rw-r--r--tests/auto/q3table/tst_q3table.cpp1
-rw-r--r--tests/auto/q3textbrowser/q3textbrowser.pro1
-rw-r--r--tests/auto/q3textedit/q3textedit.pro1
-rw-r--r--tests/auto/q3textedit/tst_q3textedit.cpp2
-rw-r--r--tests/auto/q3textstream/q3textstream.pro1
-rw-r--r--tests/auto/q3textstream/tst_q3textstream.cpp10
-rw-r--r--tests/auto/q3timeedit/q3timeedit.pro1
-rw-r--r--tests/auto/q3timeedit/tst_q3timeedit.cpp4
-rw-r--r--tests/auto/q3toolbar/q3toolbar.pro1
-rw-r--r--tests/auto/q3uridrag/q3uridrag.pro3
-rw-r--r--tests/auto/q3urloperator/q3urloperator.pro3
-rw-r--r--tests/auto/q3valuelist/q3valuelist.pro3
-rw-r--r--tests/auto/q3valuelist/tst_q3valuelist.cpp6
-rw-r--r--tests/auto/q3valuevector/q3valuevector.pro3
-rw-r--r--tests/auto/q3widgetstack/q3widgetstack.pro3
-rw-r--r--tests/auto/qabstractitemmodel/tst_qabstractitemmodel.cpp5
-rw-r--r--tests/auto/qabstractitemview/tst_qabstractitemview.cpp68
-rw-r--r--tests/auto/qabstractslider/tst_qabstractslider.cpp4
-rw-r--r--tests/auto/qaccessibility/tst_qaccessibility.cpp525
-rw-r--r--tests/auto/qalgorithms/tst_qalgorithms.cpp8
-rw-r--r--tests/auto/qbitarray/tst_qbitarray.cpp163
-rw-r--r--tests/auto/qbuttongroup/tst_qbuttongroup.cpp19
-rw-r--r--tests/auto/qbytearraymatcher/qbytearraymatcher.pro4
-rw-r--r--tests/auto/qbytearraymatcher/tst_qbytearraymatcher.cpp124
-rw-r--r--tests/auto/qcache/tst_qcache.cpp14
-rw-r--r--tests/auto/qcalendarwidget/tst_qcalendarwidget.cpp53
-rw-r--r--tests/auto/qcheckbox/tst_qcheckbox.cpp6
-rw-r--r--tests/auto/qcolor/tst_qcolor.cpp21
-rw-r--r--tests/auto/qcolordialog/tst_qcolordialog.cpp2
-rw-r--r--tests/auto/qcombobox/tst_qcombobox.cpp28
-rw-r--r--tests/auto/qcommandlinkbutton/tst_qcommandlinkbutton.cpp4
-rw-r--r--tests/auto/qcompleter/tst_qcompleter.cpp104
-rw-r--r--tests/auto/qcssparser/tst_cssparser.cpp23
-rw-r--r--tests/auto/qdatastream/tst_qdatastream.cpp4
-rw-r--r--tests/auto/qdate/tst_qdate.cpp21
-rw-r--r--tests/auto/qdatetime/tst_qdatetime.cpp15
-rw-r--r--tests/auto/qdbuspendingcall/tst_qdbuspendingcall.cpp73
-rw-r--r--tests/auto/qdesktopservices/tst_qdesktopservices.cpp5
-rw-r--r--tests/auto/qdialog/tst_qdialog.cpp21
-rw-r--r--tests/auto/qdir/tst_qdir.cpp4
-rw-r--r--tests/auto/qdirmodel/tst_qdirmodel.cpp2
-rw-r--r--tests/auto/qfile/rename-fallback.qrc5
-rw-r--r--tests/auto/qfile/test/test.pro2
-rw-r--r--tests/auto/qfile/tst_qfile.cpp78
-rw-r--r--tests/auto/qfiledialog/tst_qfiledialog.cpp192
-rw-r--r--tests/auto/qfilesystemmodel/tst_qfilesystemmodel.cpp41
-rw-r--r--tests/auto/qfilesystemwatcher/tst_qfilesystemwatcher.cpp6
-rw-r--r--tests/auto/qfont/tst_qfont.cpp3
-rw-r--r--tests/auto/qfontdatabase/tst_qfontdatabase.cpp2
-rw-r--r--tests/auto/qfuture/tst_qfuture.cpp2
-rw-r--r--tests/auto/qgl/tst_qgl.cpp65
-rw-r--r--tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp435
-rw-r--r--tests/auto/qgraphicsitemanimation/tst_qgraphicsitemanimation.cpp6
-rw-r--r--tests/auto/qgraphicsproxywidget/tst_qgraphicsproxywidget.cpp21
-rw-r--r--tests/auto/qgraphicsscene/tst_qgraphicsscene.cpp35
-rw-r--r--tests/auto/qgraphicsview/tst_qgraphicsview.cpp90
-rw-r--r--tests/auto/qgraphicswidget/tst_qgraphicswidget.cpp85
-rw-r--r--tests/auto/qhash/tst_qhash.cpp25
-rw-r--r--tests/auto/qheaderview/tst_qheaderview.cpp24
-rw-r--r--tests/auto/qhostinfo/tst_qhostinfo.cpp2
-rw-r--r--tests/auto/qhttp/tst_qhttp.cpp2
-rw-r--r--tests/auto/qhttpsocketengine/tst_qhttpsocketengine.cpp25
-rw-r--r--tests/auto/qicoimageformat/tst_qticoimageformat.cpp35
-rw-r--r--tests/auto/qicon/tst_qicon.cpp2
-rw-r--r--tests/auto/qimage/tst_qimage.cpp11
-rw-r--r--tests/auto/qimagereader/tst_qimagereader.cpp27
-rw-r--r--tests/auto/qiodevice/tst_qiodevice.cpp10
-rw-r--r--tests/auto/qitemdelegate/tst_qitemdelegate.cpp1
-rw-r--r--tests/auto/qitemeditorfactory/tst_qitemeditorfactory.cpp4
-rw-r--r--tests/auto/qitemmodel/modelstotest.cpp9
-rw-r--r--tests/auto/qitemmodel/tst_qitemmodel.cpp2
-rw-r--r--tests/auto/qitemselectionmodel/tst_qitemselectionmodel.cpp46
-rw-r--r--tests/auto/qitemview/tst_qitemview.cpp22
-rw-r--r--tests/auto/qkeysequence/tst_qkeysequence.cpp8
-rw-r--r--tests/auto/qlabel/tst_qlabel.cpp2
-rw-r--r--tests/auto/qlibrary/tst_qlibrary.cpp11
-rw-r--r--tests/auto/qline/tst_qline.cpp8
-rw-r--r--tests/auto/qlineedit/tst_qlineedit.cpp4
-rw-r--r--tests/auto/qlistview/tst_qlistview.cpp28
-rw-r--r--tests/auto/qlocalsocket/test/test.pro14
-rw-r--r--tests/auto/qlocalsocket/tst_qlocalsocket.cpp22
-rw-r--r--tests/auto/qmainwindow/tst_qmainwindow.cpp10
-rw-r--r--tests/auto/qmake/qmake.pro2
-rw-r--r--tests/auto/qmake/testcompiler.cpp303
-rw-r--r--tests/auto/qmake/testcompiler.h49
-rw-r--r--tests/auto/qmake/testdata/functions/functions.pro14
-rw-r--r--tests/auto/qmake/testdata/shadow_files_build/README2
-rw-r--r--tests/auto/qmake/tst_qmake.cpp34
-rw-r--r--tests/auto/qmap/tst_qmap.cpp10
-rw-r--r--tests/auto/qmenu/tst_qmenu.cpp34
-rw-r--r--tests/auto/qmenubar/tst_qmenubar.cpp37
-rw-r--r--tests/auto/qmetaobject/tst_qmetaobject.cpp4
-rw-r--r--tests/auto/qmetatype/tst_qmetatype.cpp2
-rw-r--r--tests/auto/qmovie/tst_qmovie.cpp5
-rw-r--r--tests/auto/qmutexlocker/tst_qmutexlocker.cpp4
-rw-r--r--tests/auto/qnativesocketengine/tst_qnativesocketengine.cpp22
-rw-r--r--tests/auto/qnetworkcookie/tst_qnetworkcookie.cpp8
-rw-r--r--tests/auto/qnetworkcookiejar/tst_qnetworkcookiejar.cpp11
-rw-r--r--tests/auto/qnetworkdiskcache/tst_qnetworkdiskcache.cpp3
-rw-r--r--tests/auto/qnetworkinterface/tst_qnetworkinterface.cpp6
-rw-r--r--tests/auto/qnetworkproxy/tst_qnetworkproxy.cpp33
-rw-r--r--tests/auto/qnetworkreply/tst_qnetworkreply.cpp111
-rw-r--r--tests/auto/qobject/tst_qobject.cpp6
-rw-r--r--tests/auto/qobjectrace/tst_qobjectrace.cpp89
-rw-r--r--tests/auto/qpainter/tst_qpainter.cpp40
-rw-r--r--tests/auto/qpainterpath/tst_qpainterpath.cpp5
-rw-r--r--tests/auto/qpicture/tst_qpicture.cpp2
-rw-r--r--tests/auto/qpixmapcache/tst_qpixmapcache.cpp10
-rw-r--r--tests/auto/qprinter/tst_qprinter.cpp39
-rw-r--r--tests/auto/qprocess/tst_qprocess.cpp2
-rw-r--r--tests/auto/qpushbutton/tst_qpushbutton.cpp4
-rw-r--r--tests/auto/qreadlocker/tst_qreadlocker.cpp4
-rw-r--r--tests/auto/qrect/tst_qrect.cpp40
-rw-r--r--tests/auto/qregexp/tst_qregexp.cpp18
-rw-r--r--tests/auto/qregion/tst_qregion.cpp13
-rw-r--r--tests/auto/qscriptvalueiterator/tst_qscriptvalueiterator.cpp33
-rw-r--r--tests/auto/qset/tst_qset.cpp8
-rw-r--r--tests/auto/qsettings/tst_qsettings.cpp14
-rw-r--r--tests/auto/qsharedpointer/tst_qsharedpointer.cpp137
-rw-r--r--tests/auto/qsidebar/tst_qsidebar.cpp31
-rw-r--r--tests/auto/qsizef/tst_qsizef.cpp23
-rw-r--r--tests/auto/qsocks5socketengine/tst_qsocks5socketengine.cpp35
-rw-r--r--tests/auto/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp157
-rw-r--r--tests/auto/qsplitter/tst_qsplitter.cpp5
-rw-r--r--tests/auto/qsqldatabase/tst_databases.h59
-rw-r--r--tests/auto/qsqldatabase/tst_qsqldatabase.cpp47
-rw-r--r--tests/auto/qsqldriver/qsqldriver.pro16
-rw-r--r--tests/auto/qsqldriver/tst_qsqldriver.cpp218
-rw-r--r--tests/auto/qsqlquery/tst_qsqlquery.cpp52
-rw-r--r--tests/auto/qsqlrelationaltablemodel/tst_qsqlrelationaltablemodel.cpp455
-rw-r--r--tests/auto/qsqltablemodel/tst_qsqltablemodel.cpp15
-rw-r--r--tests/auto/qsqlthread/tst_qsqlthread.cpp2
-rw-r--r--tests/auto/qsslsocket/tst_qsslsocket.cpp39
-rw-r--r--tests/auto/qstandarditemmodel/tst_qstandarditemmodel.cpp52
-rw-r--r--tests/auto/qstring/tst_qstring.cpp4
-rw-r--r--tests/auto/qstyle/tst_qstyle.cpp7
-rw-r--r--tests/auto/qstylesheetstyle/tst_qstylesheetstyle.cpp3
-rw-r--r--tests/auto/qsvgdevice/tst_qsvgdevice.cpp10
-rw-r--r--tests/auto/qsvgrenderer/tst_qsvgrenderer.cpp44
-rw-r--r--tests/auto/qsystemtrayicon/tst_qsystemtrayicon.cpp5
-rw-r--r--tests/auto/qtabbar/tst_qtabbar.cpp32
-rw-r--r--tests/auto/qtconcurrentmap/tst_qtconcurrentmap.cpp31
-rw-r--r--tests/auto/qtcpserver/tst_qtcpserver.cpp2
-rw-r--r--tests/auto/qtemporaryfile/qtemporaryfile.pro3
-rw-r--r--tests/auto/qtemporaryfile/tst_qtemporaryfile.cpp78
-rw-r--r--tests/auto/qtessellator/testtessellator.cpp2
-rw-r--r--tests/auto/qtessellator/tst_tessellator.cpp8
-rw-r--r--tests/auto/qtessellator/utils.cpp2
-rw-r--r--tests/auto/qtextcodec/test/test.pro1
-rw-r--r--tests/auto/qtextcodec/tst_qtextcodec.cpp12
-rw-r--r--tests/auto/qtextcursor/tst_qtextcursor.cpp10
-rw-r--r--tests/auto/qtextdocument/tst_qtextdocument.cpp81
-rw-r--r--tests/auto/qtextdocumentfragment/tst_qtextdocumentfragment.cpp17
-rw-r--r--tests/auto/qtextlayout/tst_qtextlayout.cpp3
-rw-r--r--tests/auto/qtextscriptengine/tst_qtextscriptengine.cpp2
-rw-r--r--tests/auto/qtextstream/tst_qtextstream.cpp4
-rw-r--r--tests/auto/qthread/tst_qthread.cpp5
-rw-r--r--tests/auto/qthreadonce/tst_qthreadonce.cpp2
-rw-r--r--tests/auto/qtime/tst_qtime.cpp14
-rw-r--r--tests/auto/qtimeline/tst_qtimeline.cpp6
-rw-r--r--tests/auto/qtimer/tst_qtimer.cpp65
-rw-r--r--tests/auto/qtransform/tst_qtransform.cpp10
-rw-r--r--tests/auto/qtranslator/qtranslator.pro2
-rw-r--r--tests/auto/qtreeview/tst_qtreeview.cpp49
-rw-r--r--tests/auto/qtreewidget/tst_qtreewidget.cpp9
-rw-r--r--tests/auto/qtreewidgetitemiterator/tst_qtreewidgetitemiterator.cpp14
-rw-r--r--tests/auto/qudpsocket/tst_qudpsocket.cpp4
-rw-r--r--tests/auto/qurl/tst_qurl.cpp8
-rw-r--r--tests/auto/qvariant/tst_qvariant.cpp4
-rw-r--r--tests/auto/qwaitcondition/tst_qwaitcondition.cpp14
-rw-r--r--tests/auto/qwidget/tst_qwidget.cpp235
-rw-r--r--tests/auto/qwmatrix/tst_qwmatrix.cpp17
-rw-r--r--tests/auto/qwritelocker/tst_qwritelocker.cpp4
-rw-r--r--tests/auto/qxmlstream/XML-Test-Suite-LICENSE.txt59
-rw-r--r--tests/auto/rcc/tst_rcc.cpp15
-rw-r--r--tests/auto/uic/baseline/languagesdialog.ui.h12
-rw-r--r--tests/auto/utf8/tst_utf8.cpp309
-rw-r--r--tests/auto/utf8/utf8.pro3
-rw-r--r--tests/auto/windowsmobile/test/ddhelper.cpp121
-rw-r--r--tests/auto/windowsmobile/test/ddhelper.h21
-rw-r--r--tests/auto/windowsmobile/test/test.pro24
-rw-r--r--tests/auto/windowsmobile/test/testQMenuBar_current.pngbin0 -> 23702 bytes
-rw-r--r--tests/auto/windowsmobile/test/testSimpleWidget_current.pngbin0 -> 21940 bytes
-rw-r--r--tests/auto/windowsmobile/test/tst_windowsmobile.cpp191
-rw-r--r--tests/auto/windowsmobile/test/windowsmobile.qrc6
-rw-r--r--tests/auto/windowsmobile/testQMenuBar/main.cpp72
-rw-r--r--tests/auto/windowsmobile/testQMenuBar/testQMenuBar.pro2
-rw-r--r--tests/auto/windowsmobile/windowsmobile.pro9
-rw-r--r--tests/benchmarks/qgraphicswidget/qgraphicswidget.pro6
-rw-r--r--tests/benchmarks/qgraphicswidget/tst_qgraphicswidget.cpp60
-rw-r--r--tests/benchmarks/qimagereader/tst_qimagereader.cpp2
-rw-r--r--tests/benchmarks/qobject/main.cpp14
-rw-r--r--tests/benchmarks/qpainter/tst_qpainter.cpp6
-rw-r--r--tools/activeqt/activeqt.pro11
-rw-r--r--tools/assistant/compat/mainwindow.cpp24
-rw-r--r--tools/assistant/tools/assistant/assistant.qchbin366592 -> 368640 bytes
-rw-r--r--tools/assistant/tools/assistant/bookmarkmanager.cpp77
-rw-r--r--tools/assistant/tools/assistant/centralwidget.cpp487
-rw-r--r--tools/assistant/tools/assistant/centralwidget.h17
-rw-r--r--tools/assistant/tools/assistant/cmdlineparser.cpp9
-rw-r--r--tools/assistant/tools/assistant/cmdlineparser.h2
-rw-r--r--tools/assistant/tools/assistant/contentwindow.cpp63
-rw-r--r--tools/assistant/tools/assistant/contentwindow.h2
-rw-r--r--tools/assistant/tools/assistant/doc/HOWTO5
-rw-r--r--tools/assistant/tools/assistant/doc/assistant.qdocconf5
-rw-r--r--tools/assistant/tools/assistant/helpviewer.cpp72
-rw-r--r--tools/assistant/tools/assistant/helpviewer.h7
-rw-r--r--tools/assistant/tools/assistant/indexwindow.cpp66
-rw-r--r--tools/assistant/tools/assistant/indexwindow.h2
-rw-r--r--tools/assistant/tools/assistant/main.cpp35
-rw-r--r--tools/assistant/tools/assistant/mainwindow.cpp146
-rw-r--r--tools/assistant/tools/assistant/mainwindow.h5
-rw-r--r--tools/assistant/tools/assistant/preferencesdialog.cpp175
-rw-r--r--tools/assistant/tools/assistant/searchwidget.cpp73
-rw-r--r--tools/assistant/tools/assistant/searchwidget.h4
-rw-r--r--tools/assistant/translations/qt_help.pro1
-rw-r--r--tools/assistant/translations/translations.pro1
-rw-r--r--tools/assistant/translations/translations_adp.pro1
-rw-r--r--tools/checksdk/main.cpp12
-rw-r--r--tools/configure/configureapp.cpp32
-rw-r--r--tools/configure/tools.cpp42
-rw-r--r--tools/designer/src/components/formeditor/formwindow_widgetstack.cpp6
-rw-r--r--tools/designer/src/components/formeditor/formwindow_widgetstack.h3
-rw-r--r--tools/designer/src/components/propertyeditor/designerpropertymanager.cpp2
-rw-r--r--tools/designer/src/components/propertyeditor/propertyeditor.cpp7
-rw-r--r--tools/designer/src/designer/versiondialog.cpp24
-rw-r--r--tools/designer/src/lib/shared/actioneditor.cpp8
-rw-r--r--tools/designer/src/lib/shared/actionrepository.cpp17
-rw-r--r--tools/designer/src/lib/shared/actionrepository_p.h7
-rw-r--r--tools/designer/src/lib/shared/formwindowbase.cpp10
-rw-r--r--tools/designer/src/lib/shared/formwindowbase_p.h3
-rw-r--r--tools/designer/src/lib/shared/newactiondialog.cpp4
-rw-r--r--tools/designer/src/lib/shared/newactiondialog_p.h2
-rw-r--r--tools/designer/src/lib/shared/qdesigner_propertycommand.cpp4
-rw-r--r--tools/designer/src/lib/shared/qdesigner_utils.cpp2
-rw-r--r--tools/designer/src/lib/uilib/resourcebuilder.cpp16
-rw-r--r--tools/designer/src/uitools/quiloader.cpp198
-rw-r--r--tools/designer/translations/translations.pro1
-rw-r--r--tools/linguist/lconvert/main.cpp2
-rw-r--r--tools/linguist/linguist/linguist.pro1
-rw-r--r--tools/linguist/linguist/mainwindow.cpp24
-rw-r--r--tools/linguist/linguist/messageeditor.cpp7
-rw-r--r--tools/linguist/linguist/messagemodel.cpp10
-rw-r--r--tools/linguist/lrelease/main.cpp15
-rw-r--r--tools/linguist/lupdate/main.cpp1
-rw-r--r--tools/linguist/shared/profileevaluator.cpp30
-rw-r--r--tools/linguist/shared/qm.cpp1
-rw-r--r--tools/linguist/shared/translator.cpp58
-rw-r--r--tools/linguist/shared/translator.h5
-rw-r--r--tools/linguist/shared/translatormessage.h26
-rw-r--r--tools/linguist/shared/ts.cpp6
-rw-r--r--tools/linguist/shared/ui.cpp24
-rw-r--r--tools/macdeployqt/macdeployqt/main.cpp2
-rw-r--r--tools/macdeployqt/shared/shared.cpp4
-rw-r--r--tools/porting/src/portingrules.cpp2
-rw-r--r--tools/qdbus/qdbusviewer/qdbusviewer.cpp17
-rw-r--r--tools/qdbus/qdbusxml2cpp/qdbusxml2cpp.cpp6
-rw-r--r--tools/qdoc3/htmlgenerator.cpp29
-rw-r--r--tools/qdoc3/qdoc3.pro7
-rw-r--r--tools/qdoc3/test/assistant.qdocconf6
-rw-r--r--tools/qdoc3/test/carbide-eclipse-integration.qdocconf6
-rw-r--r--tools/qdoc3/test/designer.qdocconf6
-rw-r--r--tools/qdoc3/test/eclipse-integration.qdocconf2
-rw-r--r--tools/qdoc3/test/jambi.qdocconf4
-rw-r--r--tools/qdoc3/test/linguist.qdocconf6
-rw-r--r--tools/qdoc3/test/qmake.qdocconf6
-rw-r--r--tools/qdoc3/test/qt-build-docs.qdocconf17
-rw-r--r--tools/qdoc3/test/qt-html-templates.qdocconf3
-rw-r--r--tools/qdoc3/test/qt-inc.qdocconf7
-rw-r--r--tools/qdoc3/test/qt.qdocconf17
-rw-r--r--tools/qdoc3/test/standalone-eclipse-integration.qdocconf6
-rw-r--r--tools/qtconfig/mainwindow.cpp14
-rw-r--r--tools/qvfb/qvfb.cpp10
-rw-r--r--tools/shared/qtpropertybrowser/qtbuttonpropertybrowser.cpp4
-rw-r--r--tools/shared/qtpropertybrowser/qtbuttonpropertybrowser.h4
-rw-r--r--tools/shared/qtpropertybrowser/qteditorfactory.cpp4
-rw-r--r--tools/shared/qtpropertybrowser/qteditorfactory.h4
-rw-r--r--tools/shared/qtpropertybrowser/qtgroupboxpropertybrowser.cpp4
-rw-r--r--tools/shared/qtpropertybrowser/qtgroupboxpropertybrowser.h4
-rw-r--r--tools/shared/qtpropertybrowser/qtpropertybrowser.cpp4
-rw-r--r--tools/shared/qtpropertybrowser/qtpropertybrowser.h6
-rw-r--r--tools/shared/qtpropertybrowser/qtpropertybrowserutils.cpp7
-rw-r--r--tools/shared/qtpropertybrowser/qtpropertybrowserutils_p.h4
-rw-r--r--tools/shared/qtpropertybrowser/qtpropertymanager.cpp27
-rw-r--r--tools/shared/qtpropertybrowser/qtpropertymanager.h4
-rw-r--r--tools/shared/qtpropertybrowser/qttreepropertybrowser.cpp4
-rw-r--r--tools/shared/qtpropertybrowser/qttreepropertybrowser.h4
-rw-r--r--tools/shared/qtpropertybrowser/qtvariantproperty.cpp8
-rw-r--r--tools/shared/qtpropertybrowser/qtvariantproperty.h4
-rw-r--r--tools/tools.pro2
-rw-r--r--translations/assistant_adp_de.ts59
-rw-r--r--translations/assistant_adp_ja.ts56
-rw-r--r--translations/assistant_adp_pl.ts50
-rw-r--r--translations/assistant_adp_untranslated.ts60
-rw-r--r--translations/assistant_adp_zh_CN.ts43
-rw-r--r--translations/assistant_adp_zh_TW.ts223
-rw-r--r--translations/assistant_de.qmbin20332 -> 18688 bytes
-rw-r--r--translations/assistant_de.ts270
-rw-r--r--translations/assistant_ja.ts259
-rw-r--r--translations/assistant_pl.ts231
-rw-r--r--translations/assistant_untranslated.ts259
-rw-r--r--translations/assistant_zh_CN.ts219
-rw-r--r--translations/assistant_zh_TW.ts293
-rw-r--r--translations/designer_de.qmbin152455 -> 151189 bytes
-rw-r--r--translations/designer_de.ts575
-rw-r--r--translations/designer_ja.ts729
-rw-r--r--translations/designer_pl.ts727
-rw-r--r--translations/designer_untranslated.ts556
-rw-r--r--translations/designer_zh_CN.ts704
-rw-r--r--translations/designer_zh_TW.ts1664
-rw-r--r--translations/linguist_de.qmbin47074 -> 45915 bytes
-rw-r--r--translations/linguist_de.ts504
-rw-r--r--translations/linguist_fr.ts152
-rw-r--r--translations/linguist_ja.ts140
-rw-r--r--translations/linguist_pl.ts145
-rw-r--r--translations/linguist_untranslated.ts150
-rw-r--r--translations/linguist_zh_CN.ts142
-rw-r--r--translations/linguist_zh_TW.ts477
-rw-r--r--translations/qt_ar.ts576
-rw-r--r--translations/qt_de.qmbin181913 -> 181348 bytes
-rw-r--r--translations/qt_de.ts597
-rw-r--r--translations/qt_es.ts564
-rw-r--r--translations/qt_fr.ts579
-rw-r--r--translations/qt_help_de.qmbin9381 -> 9583 bytes
-rw-r--r--translations/qt_help_de.ts30
-rw-r--r--translations/qt_help_ja.ts27
-rw-r--r--translations/qt_help_pl.ts28
-rw-r--r--translations/qt_help_untranslated.ts27
-rw-r--r--translations/qt_help_zh_CN.ts27
-rw-r--r--translations/qt_help_zh_TW.ts78
-rw-r--r--translations/qt_iw.ts578
-rw-r--r--translations/qt_ja_JP.ts570
-rw-r--r--translations/qt_pl.ts618
-rw-r--r--translations/qt_pt.ts564
-rw-r--r--translations/qt_ru.ts576
-rw-r--r--translations/qt_sk.ts570
-rw-r--r--translations/qt_sv.ts566
-rw-r--r--translations/qt_uk.ts564
-rw-r--r--translations/qt_untranslated.ts572
-rw-r--r--translations/qt_zh_CN.ts575
-rw-r--r--translations/qt_zh_TW.ts1892
-rw-r--r--translations/qtconfig_pl.ts40
-rw-r--r--translations/qtconfig_untranslated.ts33
-rw-r--r--translations/qtconfig_zh_CN.ts43
-rw-r--r--translations/qtconfig_zh_TW.ts203
-rw-r--r--translations/qvfb_pl.ts8
-rw-r--r--translations/qvfb_untranslated.ts7
-rw-r--r--translations/qvfb_zh_CN.ts4
-rw-r--r--translations/qvfb_zh_TW.ts70
-rw-r--r--util/install/archive/archive.pro9
-rw-r--r--util/install/archive/qarchive.cpp471
-rw-r--r--util/install/archive/qarchive.h138
-rw-r--r--util/install/configure_installer.cache30
-rw-r--r--util/install/install.pro9
-rw-r--r--util/install/keygen/keygen.pro13
-rw-r--r--util/install/keygen/keyinfo.cpp164
-rw-r--r--util/install/keygen/keyinfo.h123
-rw-r--r--util/install/keygen/main.cpp250
-rw-r--r--util/install/mac/licensedlg.ui134
-rw-r--r--util/install/mac/mac.pro11
-rw-r--r--util/install/mac/main.cpp117
-rw-r--r--util/install/mac/unpackage.icnsbin29372 -> 0 bytes
-rw-r--r--util/install/mac/unpackdlg.ui330
-rw-r--r--util/install/mac/unpackdlgimpl.cpp200
-rw-r--r--util/install/package/main.cpp397
-rw-r--r--util/install/package/package.pro25
-rw-r--r--util/install/win/archive.cpp115
-rw-r--r--util/install/win/dialogs/folderdlg.ui184
-rw-r--r--util/install/win/dialogs/folderdlgimpl.cpp119
-rw-r--r--util/install/win/environment.cpp362
-rw-r--r--util/install/win/environment.h73
-rw-r--r--util/install/win/globalinformation.cpp168
-rw-r--r--util/install/win/globalinformation.h93
-rw-r--r--util/install/win/install-edu.rc3
-rw-r--r--util/install/win/install-eval.rc3
-rw-r--r--util/install/win/install-noncommercial.rc4
-rw-r--r--util/install/win/install-qsa.rc5
-rw-r--r--util/install/win/install.icobin2998 -> 0 bytes
-rw-r--r--util/install/win/install.rc4
-rw-r--r--util/install/win/main.cpp100
-rw-r--r--util/install/win/pages/buildpage.ui92
-rw-r--r--util/install/win/pages/configpage.ui474
-rw-r--r--util/install/win/pages/finishpage.ui63
-rw-r--r--util/install/win/pages/folderspage.ui259
-rw-r--r--util/install/win/pages/licenseagreementpage.ui202
-rw-r--r--util/install/win/pages/licensepage.ui264
-rw-r--r--util/install/win/pages/optionspage.ui503
-rw-r--r--util/install/win/pages/pages.cpp349
-rw-r--r--util/install/win/pages/pages.h226
-rw-r--r--util/install/win/pages/progresspage.ui78
-rw-r--r--util/install/win/pages/sidedecoration.ui108
-rw-r--r--util/install/win/pages/sidedecorationimpl.cpp205
-rw-r--r--util/install/win/pages/winintropage.ui39
-rw-r--r--util/install/win/qt.arq3
-rw-r--r--util/install/win/resource.cpp162
-rw-r--r--util/install/win/setupwizardimpl.cpp2571
-rw-r--r--util/install/win/setupwizardimpl.h276
-rw-r--r--util/install/win/setupwizardimpl_config.cpp1564
-rw-r--r--util/install/win/shell.cpp472
-rw-r--r--util/install/win/shell.h87
-rw-r--r--util/install/win/uninstaller/quninstall.pro7
-rw-r--r--util/install/win/uninstaller/uninstall.ui167
-rw-r--r--util/install/win/uninstaller/uninstaller.cpp142
-rw-r--r--util/install/win/uninstaller/uninstallimpl.cpp75
-rw-r--r--util/install/win/win.pro136
-rw-r--r--util/qlalr/doc/qlalr.qdocconf2
-rwxr-xr-xutil/scripts/make_qfeatures_dot_h41
-rwxr-xr-xutil/webkit/mkdist-webkit39
982 files changed, 31747 insertions, 29740 deletions
diff --git a/.hgignore b/.hgignore
index 784d507..eb6ff05 100755
--- a/.hgignore
+++ b/.hgignore
@@ -5,6 +5,8 @@ syntax: glob
*~
*.a
+*.la
+*.pc
*.core
*.moc
*.o
@@ -45,7 +47,9 @@ bin/rcc*
bin/uic*
bin/qcollectiongenerator
bin/qhelpgenerator
+bin/macdeployqt
tools/qdoc3/qdoc3*
+tools/macdeployqt/macchangeqt/macchangeqt
#configure.cache
mkspecs/default
mkspecs/qconfig.pri
diff --git a/FAQ b/FAQ.txt
index c243e5c..1d2266d 100644
--- a/FAQ
+++ b/FAQ.txt
@@ -1,4 +1,4 @@
-This is a list of Frequently Asked Questions regarding Qt Release 4.5.0.
+This is a list of Frequently Asked Questions regarding this Qt release.
Q: I'm using a Unix system and I downloaded the Zip package. However, when I try
to run the configure script, I get the following error message:
@@ -8,7 +8,7 @@ to Unix style line endings (LF). To avoid this problem, uncompress the file
again and give the option "-a" to unzip, which will then add the correct line
endings.
-Q: I'm running Windows XP and I downloaded the qt-win-eval-4.5.0-vs2008.exe
+Q: I'm running Windows XP and I downloaded the qt-win-eval-%VERSION%-vs2008.exe
version of Qt. However, when I try to run the examples I get an error saying:
"The application failed to start because the application configuration is
incorrect. Reinstalling the application may fix this problem.". I reinstalled
diff --git a/LGPL_EXCEPTION.TXT b/LGPL_EXCEPTION.txt
index 8d0f85e..8d0f85e 100644
--- a/LGPL_EXCEPTION.TXT
+++ b/LGPL_EXCEPTION.txt
diff --git a/config.tests/unix/compile.test b/config.tests/unix/compile.test
index b5afa18..ff51c91 100755
--- a/config.tests/unix/compile.test
+++ b/config.tests/unix/compile.test
@@ -14,6 +14,8 @@ shift 7
LFLAGS=""
INCLUDEPATH=""
CXXFLAGS=""
+MAC_ARCH_CXXFLAGS=""
+MAC_ARCH_LFLAGS=""
while [ "$#" -gt 0 ]; do
PARAM=$1
case $PARAM in
@@ -21,6 +23,11 @@ while [ "$#" -gt 0 ]; do
LFLAGS="$LFLAGS -framework \"$2\""
shift
;;
+ -arch)
+ MAC_ARCH_CXXFLAGS="$MAC_ARCH_CXXFLAGS -arch $2"
+ MAC_ARCH_LFLAGS="$MAC_ARCH_LFLAGS -arch $2"
+ shift
+ ;;
-F*|-m*|-x*)
LFLAGS="$LFLAGS $PARAM"
CXXFLAGS="$CXXFLAGS $PARAM"
@@ -53,7 +60,7 @@ test -d "$OUTDIR/$TEST" || mkdir -p "$OUTDIR/$TEST"
cd "$OUTDIR/$TEST"
make distclean >/dev/null 2>&1
-"$OUTDIR/bin/qmake" -nocache -spec "$QMKSPEC" "CONFIG+=$QMAKE_CONFIG" "LIBS*=$LFLAGS" "INCLUDEPATH*=$INCLUDEPATH" "QMAKE_CXXFLAGS*=$CXXFLAGS" "$SRCDIR/$TEST/$EXE.pro" -o "$OUTDIR/$TEST/Makefile"
+"$OUTDIR/bin/qmake" -nocache -spec "$QMKSPEC" "CONFIG+=$QMAKE_CONFIG" "LIBS*=$LFLAGS" "LIBS+=$MAC_ARCH_LFLAGS" "INCLUDEPATH*=$INCLUDEPATH" "QMAKE_CXXFLAGS*=$CXXFLAGS" "QMAKE_CXXFLAGS+=$MAC_ARCH_CXXFLAGS" "$SRCDIR/$TEST/$EXE.pro" -o "$OUTDIR/$TEST/Makefile"
if [ "$VERBOSE" = "yes" ]; then
make
diff --git a/config.tests/unix/opengles1/opengles1.pro b/config.tests/unix/opengles1/opengles1.pro
index d800a5d..ad8dd31 100644
--- a/config.tests/unix/opengles1/opengles1.pro
+++ b/config.tests/unix/opengles1/opengles1.pro
@@ -6,4 +6,4 @@ for(p, QMAKE_LIBDIR_OPENGL) {
}
CONFIG -= qt
-LIBS += $$QMAKE_LIBS_OPENGL
+LIBS += $$QMAKE_LIBS_OPENGL_QT
diff --git a/config.tests/unix/opengles1cl/opengles1cl.pro b/config.tests/unix/opengles1cl/opengles1cl.pro
index c9addf9..415cdbb 100644
--- a/config.tests/unix/opengles1cl/opengles1cl.pro
+++ b/config.tests/unix/opengles1cl/opengles1cl.pro
@@ -6,4 +6,4 @@ for(p, QMAKE_LIBDIR_OPENGL) {
}
CONFIG -= qt
-LIBS += $$QMAKE_LIBS_OPENGL
+LIBS += $$QMAKE_LIBS_OPENGL_QT
diff --git a/config.tests/unix/opengles2/opengles2.pro b/config.tests/unix/opengles2/opengles2.pro
index 13f95a1..0dfae42 100644
--- a/config.tests/unix/opengles2/opengles2.pro
+++ b/config.tests/unix/opengles2/opengles2.pro
@@ -6,4 +6,4 @@ for(p, QMAKE_LIBDIR_OPENGL) {
}
CONFIG -= qt
-LIBS += $$QMAKE_LIBS_OPENGL
+LIBS += $$QMAKE_LIBS_OPENGL_QT
diff --git a/config.tests/x11/xlib/xlib.cpp b/config.tests/x11/xlib/xlib.cpp
new file mode 100644
index 0000000..8d25bf5
--- /dev/null
+++ b/config.tests/x11/xlib/xlib.cpp
@@ -0,0 +1,9 @@
+#include <X11/Xlib.h>
+
+int main(int, char **)
+{
+ Display *d = XOpenDisplay(NULL);
+ XCloseDisplay(d);
+ return 0;
+}
+
diff --git a/config.tests/x11/xlib/xlib.pro b/config.tests/x11/xlib/xlib.pro
new file mode 100644
index 0000000..658161e
--- /dev/null
+++ b/config.tests/x11/xlib/xlib.pro
@@ -0,0 +1,3 @@
+CONFIG += x11
+CONFIG -= qt
+SOURCES = xlib.cpp
diff --git a/configure b/configure
index f0b7f90..20bf457 100755
--- a/configure
+++ b/configure
@@ -119,7 +119,13 @@ elif [ -f "$relpath"/src/gui/kernel/qapplication_qws.cpp ]; then
# ~ src/gui/base/qapplication_qws.cpp is present
# ~ this is the free or commercial edition
# ~ this is the internal edition and Qt Embedded is explicitly enabled
- PLATFORM_QWS=maybe
+ if [ -f "$relpath"/src/gui/kernel/qapplication_mac.mm ]; then
+ # This is a depot build, or an all-platforms package
+ PLATFORM_QWS=maybe
+ else
+ # This must be the embedded package, since the Qt/Mac source files are not present
+ PLATFORM_QWS=yes
+ fi
fi
#-----------------------------------------------------------------------------
@@ -199,10 +205,10 @@ earlyArgParse()
h|help|--help|-help)
if [ "$VAL" = "yes" ]; then
OPT_HELP="$VAL"
- COMMERCIAL_USER="yes" #doesn't matter we will display the help
+ COMMERCIAL_USER="no" #doesn't matter we will display the help
else
UNKNOWN_OPT=yes
- COMMERCIAL_USER="yes" #doesn't matter we will display the help
+ COMMERCIAL_USER="no" #doesn't matter we will display the help
fi
;;
--*)
@@ -273,7 +279,7 @@ if [ "$COMMERCIAL_USER" = "ask" ]; then
if [ "$commercial" = "c" ]; then
COMMERCIAL_USER="yes"
break
- else [ "$commercial" = "o" ];
+ elif [ "$commercial" = "o" ]; then
COMMERCIAL_USER="no"
break
fi
@@ -662,6 +668,7 @@ CFG_INOTIFY=auto
CFG_RPATH=yes
CFG_FRAMEWORK=auto
CFG_MAC_ARCHS=
+MAC_ARCHS_COMMANDLINE=
CFG_MAC_DWARF2=auto
CFG_MAC_XARCH=auto
CFG_MAC_CARBON=yes
@@ -2692,16 +2699,28 @@ if [ "$QT_CROSS_COMPILE" = "yes" ]; then
fi
fi
-# check -arch arguments for validity.
+# process CFG_MAC_ARCHS
if [ "$PLATFORM_MAC" = "yes" ]; then
- ALLOWED="x86 ppc x86_64 ppc64"
+# check -arch arguments for validity.
+ ALLOWED="x86 ppc x86_64 ppc64 i386"
for i in $CFG_MAC_ARCHS
do
if echo "$ALLOWED" | grep -w -v "$i" > /dev/null 2>&1; then
- echo "Unknown architecture: \"$i\". Supported architechtures: x86 ppc x86_64 ppc64";
+ echo "Unknown architecture: \"$i\". Supported architectures: x86[i386] ppc x86_64 ppc64";
exit 2;
fi
done
+
+# replace "i386" with "x86" to support configuring with -arch i386 as an alias for x86.
+ CFG_MAC_ARCHS="${CFG_MAC_ARCHS/i386/x86}"
+
+# Build commmand line arguments we can pass to the compiler during configure tests
+# by prefixing each arch with "-arch".
+ CFG_MAC_ARCHS_GCC_FORMAT="${CFG_MAC_ARCHS/x86/i386}"
+ CFG_MAC_ARCHS_GCC_FORMAT="${CFG_MAC_ARCHS/i386_64/x86_64}"
+ for ARCH in $CFG_MAC_ARCHS_GCC_FORMAT; do
+ MAC_ARCHS_COMMANDLINE="$MAC_ARCHS_COMMANDLINE -arch $ARCH"
+ done
fi
# find the default framework value
@@ -3964,7 +3983,7 @@ if [ -n "$PERL" ] && [ -x "$relpath/bin/syncqt" ]; then
[ "$CFG_DEV" = "yes" ] && SYNCQT_OPTS="$SYNCQT_OPTS -check-includes"
if [ "$OPT_SHADOW" = "yes" ]; then
"$outpath/bin/syncqt" $SYNCQT_OPTS
- elif [ "$CFG_DEV" = "yes" ]; then
+ elif [ "$CFG_DEV" = "yes" ] || [ ! -d $relpath/include ]; then
QTDIR="$relpath" perl "$outpath/bin/syncqt" $SYNCQT_OPTS
fi
fi
@@ -4238,7 +4257,7 @@ if [ "$CFG_ZLIB" = "no" ]; then
ZLIB_FORCED=yes
fi
if [ "$CFG_ZLIB" = "auto" ]; then
- if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/zlib "zlib" $L_FLAGS $I_FLAGS $l_FLAGS; then
+ if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/zlib "zlib" $L_FLAGS $I_FLAGS $l_FLAGS $MAC_ARCHS_COMMANDLINE; then
CFG_ZLIB=system
else
CFG_ZLIB=yes
@@ -4255,7 +4274,7 @@ if [ "$CFG_JPEG" = "auto" ]; then
fi
# detect jpeg
if [ "$CFG_LIBJPEG" = "auto" ]; then
- if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/libjpeg "libjpeg" $L_FLAGS $I_FLAGS $l_FLAGS; then
+ if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/libjpeg "libjpeg" $L_FLAGS $I_FLAGS $l_FLAGS $MAC_ARCHS_COMMANDLINE; then
CFG_LIBJPEG=system
else
CFG_LIBJPEG=qt
@@ -4282,7 +4301,7 @@ fi
# detect tiff
if [ "$CFG_LIBTIFF" = "auto" ]; then
- if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/libtiff "libtiff" $L_FLAGS $I_FLAGS $l_FLAGS; then
+ if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/libtiff "libtiff" $L_FLAGS $I_FLAGS $l_FLAGS $MAC_ARCHS_COMMANDLINE; then
CFG_LIBTIFF=system
else
CFG_LIBTIFF=qt
@@ -4299,7 +4318,7 @@ if [ "$CFG_MNG" = "auto" ]; then
fi
# detect mng
if [ "$CFG_LIBMNG" = "auto" ]; then
- if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/libmng "libmng" $L_FLAGS $I_FLAGS $l_FLAGS; then
+ if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/libmng "libmng" $L_FLAGS $I_FLAGS $l_FLAGS $MAC_ARCHS_COMMANDLINE; then
CFG_LIBMNG=system
else
CFG_LIBMNG=qt
@@ -4308,7 +4327,7 @@ fi
# detect png
if [ "$CFG_LIBPNG" = "auto" ]; then
- if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/libpng "libpng" $L_FLAGS $I_FLAGS $l_FLAGS; then
+ if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/libpng "libpng" $L_FLAGS $I_FLAGS $l_FLAGS $MAC_ARCHS_COMMANDLINE; then
CFG_LIBPNG=system
else
CFG_LIBPNG=qt
@@ -4347,13 +4366,13 @@ for _SQLDR in $CFG_SQL_AVAILABLE; do
QT_CFLAGS_MYSQL=""
fi
else
- if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/mysql_r "MySQL (thread-safe)" $QT_LFLAGS_MYSQL_R $L_FLAGS $QT_CFLAGS_MYSQL $I_FLAGS $l_FLAGS; then
+ if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/mysql_r "MySQL (thread-safe)" $QT_LFLAGS_MYSQL_R $L_FLAGS $QT_CFLAGS_MYSQL $I_FLAGS $l_FLAGS $MAC_ARCHS_COMMANDLINE; then
QMakeVar add CONFIG use_libmysqlclient_r
if [ "$CFG_SQL_mysql" = "auto" ]; then
CFG_SQL_mysql=plugin
fi
QT_LFLAGS_MYSQL="$QT_LFLAGS_MYSQL_R"
- elif "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/mysql "MySQL (thread-unsafe)" $QT_LFLAGS_MYSQL $L_FLAGS $QT_CFLAGS_MYSQL $I_FLAGS $l_FLAGS; then
+ elif "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/mysql "MySQL (thread-unsafe)" $QT_LFLAGS_MYSQL $L_FLAGS $QT_CFLAGS_MYSQL $I_FLAGS $l_FLAGS $MAC_ARCHS_COMMANDLINE; then
if [ "$CFG_SQL_mysql" = "auto" ]; then
CFG_SQL_mysql=plugin
fi
@@ -4382,7 +4401,7 @@ for _SQLDR in $CFG_SQL_AVAILABLE; do
fi
[ -z "$QT_CFLAGS_PSQL" ] || QT_CFLAGS_PSQL="-I$QT_CFLAGS_PSQL"
[ -z "$QT_LFLAGS_PSQL" ] || QT_LFLAGS_PSQL="-L$QT_LFLAGS_PSQL"
- if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/psql "PostgreSQL" $QT_LFLAGS_PSQL $L_FLAGS $QT_CFLAGS_PSQL $I_FLAGS $l_FLAGS; then
+ if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/psql "PostgreSQL" $QT_LFLAGS_PSQL $L_FLAGS $QT_CFLAGS_PSQL $I_FLAGS $l_FLAGS $MAC_ARCHS_COMMANDLINE; then
if [ "$CFG_SQL_psql" = "auto" ]; then
CFG_SQL_psql=plugin
fi
@@ -4403,7 +4422,7 @@ for _SQLDR in $CFG_SQL_AVAILABLE; do
;;
odbc)
if [ "$CFG_SQL_odbc" != "no" ]; then
- if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/odbc "ODBC" $L_FLAGS $I_FLAGS $l_FLAGS; then
+ if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/odbc "ODBC" $L_FLAGS $I_FLAGS $l_FLAGS $MAC_ARCHS_COMMANDLINE; then
if [ "$CFG_SQL_odbc" = "auto" ]; then
CFG_SQL_odbc=plugin
fi
@@ -4422,7 +4441,7 @@ for _SQLDR in $CFG_SQL_AVAILABLE; do
;;
oci)
if [ "$CFG_SQL_oci" != "no" ]; then
- if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/oci "OCI" $L_FLAGS $I_FLAGS $l_FLAGS; then
+ if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/oci "OCI" $L_FLAGS $I_FLAGS $l_FLAGS $MAC_ARCHS_COMMANDLINE; then
if [ "$CFG_SQL_oci" = "auto" ]; then
CFG_SQL_oci=plugin
fi
@@ -4441,7 +4460,7 @@ for _SQLDR in $CFG_SQL_AVAILABLE; do
;;
tds)
if [ "$CFG_SQL_tds" != "no" ]; then
- if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/tds "TDS" $L_FLAGS $I_FLAGS $l_FLAGS; then
+ if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/tds "TDS" $L_FLAGS $I_FLAGS $l_FLAGS $MAC_ARCHS_COMMANDLINE; then
if [ "$CFG_SQL_tds" = "auto" ]; then
CFG_SQL_tds=plugin
fi
@@ -4460,7 +4479,7 @@ for _SQLDR in $CFG_SQL_AVAILABLE; do
;;
db2)
if [ "$CFG_SQL_db2" != "no" ]; then
- if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/db2 "DB2" $L_FLAGS $I_FLAGS $l_FLAGS; then
+ if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/db2 "DB2" $L_FLAGS $I_FLAGS $l_FLAGS $MAC_ARCHS_COMMANDLINE; then
if [ "$CFG_SQL_db2" = "auto" ]; then
CFG_SQL_db2=plugin
fi
@@ -4479,7 +4498,7 @@ for _SQLDR in $CFG_SQL_AVAILABLE; do
;;
ibase)
if [ "$CFG_SQL_ibase" != "no" ]; then
- if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/ibase "InterBase" $L_FLAGS $I_FLAGS $l_FLAGS; then
+ if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/ibase "InterBase" $L_FLAGS $I_FLAGS $l_FLAGS $MAC_ARCHS_COMMANDLINE; then
if [ "$CFG_SQL_ibase" = "auto" ]; then
CFG_SQL_ibase=plugin
fi
@@ -4498,7 +4517,7 @@ for _SQLDR in $CFG_SQL_AVAILABLE; do
;;
sqlite2)
if [ "$CFG_SQL_sqlite2" != "no" ]; then
- if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/sqlite2 "SQLite2" $L_FLAGS $I_FLAGS $l_FLAGS; then
+ if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/sqlite2 "SQLite2" $L_FLAGS $I_FLAGS $l_FLAGS $MAC_ARCHS_COMMANDLINE; then
if [ "$CFG_SQL_sqlite2" = "auto" ]; then
CFG_SQL_sqlite2=plugin
fi
@@ -4523,7 +4542,7 @@ for _SQLDR in $CFG_SQL_AVAILABLE; do
QT_CFLAGS_SQLITE=`$PKG_CONFIG --cflags sqlite3 2>/dev/null`
QT_LFLAGS_SQLITE=`$PKG_CONFIG --libs sqlite3 2>/dev/null`
fi
- if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/sqlite "SQLite" $QT_LFLAGS_SQLITE $L_FLAGS $QT_CFLAGS_SQLITE $I_FLAGS $l_FLAGS; then
+ if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/sqlite "SQLite" $QT_LFLAGS_SQLITE $L_FLAGS $QT_CFLAGS_SQLITE $I_FLAGS $l_FLAGS $MAC_ARCHS_COMMANDLINE; then
if [ "$CFG_SQL_sqlite" = "auto" ]; then
CFG_SQL_sqlite=plugin
fi
@@ -4560,7 +4579,7 @@ done
# auto-detect NIS support
if [ "$CFG_NIS" != "no" ]; then
- if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/nis "NIS" $L_FLAGS $I_FLAGS $l_FLAGS; then
+ if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/nis "NIS" $L_FLAGS $I_FLAGS $l_FLAGS $MAC_ARCHS_COMMANDLINE; then
CFG_NIS=yes
else
if [ "$CFG_NIS" = "yes" ] && [ "$CFG_CONFIGURE_EXIT_ON_ERROR" = "yes" ]; then
@@ -4577,7 +4596,7 @@ fi
# auto-detect CUPS support
if [ "$CFG_CUPS" != "no" ]; then
- if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/cups "Cups" $L_FLAGS $I_FLAGS $l_FLAGS; then
+ if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/cups "Cups" $L_FLAGS $I_FLAGS $l_FLAGS $MAC_ARCHS_COMMANDLINE; then
CFG_CUPS=yes
else
if [ "$CFG_CUPS" = "yes" ] && [ "$CFG_CONFIGURE_EXIT_ON_ERROR" = "yes" ]; then
@@ -4596,9 +4615,9 @@ fi
if [ "$CFG_ICONV" != "no" ]; then
if [ "$PLATFORM_QWS" = "yes" ]; then
CFG_ICONV=no
- elif "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" "$OPT_VERBOSE" "$relpath" "$outpath" "config.tests/unix/iconv" "POSIX iconv" $L_FLAGS $I_FLAGS $l_FLAGS; then
+ elif "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" "$OPT_VERBOSE" "$relpath" "$outpath" "config.tests/unix/iconv" "POSIX iconv" $L_FLAGS $I_FLAGS $l_FLAGS $MAC_ARCHS_COMMANDLINE; then
CFG_ICONV=yes
- elif "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" "$OPT_VERBOSE" "$relpath" "$outpath" "config.tests/unix/gnu-libiconv" "GNU libiconv" $L_FLAGS $I_FLAGS $l_FLAGS; then
+ elif "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" "$OPT_VERBOSE" "$relpath" "$outpath" "config.tests/unix/gnu-libiconv" "GNU libiconv" $L_FLAGS $I_FLAGS $l_FLAGS $MAC_ARCHS_COMMANDLINE; then
CFG_ICONV=gnu
else
if [ "$CFG_ICONV" = "yes" ] && [ "$CFG_CONFIGURE_EXIT_ON_ERROR" = "yes" ]; then
@@ -4619,7 +4638,7 @@ if [ "$CFG_DBUS" != "no" ]; then
QT_CFLAGS_DBUS=`$PKG_CONFIG --cflags dbus-1 2>/dev/null`
QT_LIBS_DBUS=`$PKG_CONFIG --libs dbus-1 2>/dev/null`
fi
- if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/dbus "D-Bus" $L_FLAGS $I_FLAGS $l_FLAGS $QT_CFLAGS_DBUS $QT_LIBS_DBUS; then
+ if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/dbus "D-Bus" $L_FLAGS $I_FLAGS $l_FLAGS $QT_CFLAGS_DBUS $QT_LIBS_DBUS $MAC_ARCHS_COMMANDLINE; then
[ "$CFG_DBUS" = "auto" ] && CFG_DBUS=yes
QMakeVar set QT_CFLAGS_DBUS "$QT_CFLAGS_DBUS"
QMakeVar set QT_LIBS_DBUS "$QT_LIBS_DBUS"
@@ -4652,7 +4671,7 @@ if [ "$PLATFORM_X11" = "yes" -o "$PLATFORM_QWS" = "yes" ]; then
QT_CFLAGS_GLIB=`$PKG_CONFIG --cflags glib-2.0 gthread-2.0 2>/dev/null`
QT_LIBS_GLIB=`$PKG_CONFIG --libs glib-2.0 gthread-2.0 2>/dev/null`
fi
- if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/glib "Glib" $L_FLAGS $I_FLAGS $l_FLAGS $QT_CFLAGS_GLIB $QT_LIBS_GLIB $X11TESTS_FLAGS; then
+ if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/glib "Glib" $L_FLAGS $I_FLAGS $l_FLAGS $QT_CFLAGS_GLIB $QT_LIBS_GLIB $X11TESTS_FLAGS ; then
CFG_GLIB=yes
QMakeVar set QT_CFLAGS_GLIB "$QT_CFLAGS_GLIB"
QMakeVar set QT_LIBS_GLIB "$QT_LIBS_GLIB"
@@ -4727,6 +4746,14 @@ if [ "$PLATFORM_X11" = "yes" ]; then
X11TESTS_FLAGS="$X11TESTS_FLAGS -fpermissive"
fi
+ # Check we actually have X11 :-)
+ if ! "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/x11/xlib "XLib" $L_FLAGS $I_FLAGS $l_FLAGS $X11TESTS_FLAGS; then
+ echo "Basic XLib functionality test failed!"
+ echo " You might need to modify the include and library search paths by editing"
+ echo " QMAKE_INCDIR_X11 and QMAKE_LIBDIR_X11 in ${XQMAKESPEC}."
+ exit 1
+ fi
+
# auto-detect OpenGL support (es1 = OpenGL ES 1.x Common, es1cl = ES 1.x common lite, es2 = OpenGL ES 2.x)
if [ "$CFG_OPENGL" = "auto" ] || [ "$CFG_OPENGL" = "yes" ]; then
if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/x11/opengl "OpenGL" $L_FLAGS $I_FLAGS $l_FLAGS $X11TESTS_FLAGS; then
@@ -5133,6 +5160,9 @@ if [ "$PLATFORM_QWS" = "yes" ]; then
QMakeVar set QT_CFLAGS_DIRECTFB "$QT_CFLAGS_DIRECTFB"
QMakeVar set QT_LIBS_DIRECTFB "$QT_LIBS_DIRECTFB"
fi
+ if [ "$CFG_QT3SUPPORT" = "yes" ]; then
+ QMakeVar set QT_DEFINES_DIRECTFB "QT3_SUPPORT"
+ fi
if ! "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/qws/directfb "DirectFB" $L_FLAGS $I_FLAGS $l_FLAGS $QT_CFLAGS_DIRECTFB $QT_LIBS_DIRECTFB; then
echo "The DirectFB screen driver functionality test failed!"
@@ -5171,7 +5201,7 @@ fi # QWS
[ "x$CFG_EMBEDDED" != "xno" ] && CFG_LIBFREETYPE="$CFG_QWS_FREETYPE"
[ "x$PLATFORM_MAC" = "xyes" ] && CFG_LIBFREETYPE=no
if [ "$CFG_LIBFREETYPE" = "auto" ]; then
- if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/freetype "FreeType" $L_FLAGS $I_FLAGS $l_FLAGS ; then
+ if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/freetype "FreeType" $L_FLAGS $I_FLAGS $l_FLAGS $MAC_ARCHS_COMMANDLINE; then
CFG_LIBFREETYPE=system
else
CFG_LIBFREETYPE=yes
@@ -5288,7 +5318,7 @@ fi
# find if the platform supports IPv6
if [ "$CFG_IPV6" != "no" ]; then
- if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/ipv6 "IPv6" $L_FLAGS $I_FLAGS $l_FLAGS; then
+ if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/ipv6 "IPv6" $L_FLAGS $I_FLAGS $l_FLAGS $MAC_ARCHS_COMMANDLINE; then
CFG_IPV6=yes
else
if [ "$CFG_IPV6" = "yes" ] && [ "$CFG_CONFIGURE_EXIT_ON_ERROR" = "yes" ]; then
@@ -5419,7 +5449,7 @@ fi
# detect OpenSSL
if [ "$CFG_OPENSSL" != "no" ]; then
- if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/openssl "OpenSSL" $L_FLAGS $I_FLAGS $l_FLAGS; then
+ if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/openssl "OpenSSL" $L_FLAGS $I_FLAGS $l_FLAGS $MAC_ARCHS_COMMANDLINE; then
if [ "$CFG_OPENSSL" = "auto" ]; then
CFG_OPENSSL=yes
fi
@@ -5987,10 +6017,11 @@ if [ "$CFG_EXCEPTIONS" = "no" ]; then
QMAKE_CONFIG="$QMAKE_CONFIG exceptions_off"
fi
-# On Mac, set the minimum deployment target using Xarch when that is supported (10.5 and up).
-# On 10.4 the deployment version is set to 10.3 globally using the QMAKE_MACOSX_DEPLOYMENT_TARGET env. variable
-# "-cocoa" on the command line means Cocoa is used in 32-bit mode also, in this case fall back on
-# QMAKE_MACOSX_DEPLOYMENT_TARGET which will be set to 10.5.
+# On Mac, set the minimum deployment target for the different architechtures
+# using the Xarch compiler option when supported (10.5 and up). On 10.4 the
+# deployment version is set to 10.3 globally using the QMAKE_MACOSX_DEPLOYMENT_TARGET
+# env. variable. "-cocoa" on the command line means Cocoa is used in 32-bit mode also,
+# in this case fall back on QMAKE_MACOSX_DEPLOYMENT_TARGET which will be set to 10.5.
if [ "$PLATFORM_MAC" = "yes" ] && [ "$CFG_MAC_XARCH" != "no" ] && [ "$COMMANDLINE_MAC_COCOA" != "yes" ]; then
if echo "$CFG_MAC_ARCHS" | grep '\<x86\>' > /dev/null 2>&1; then
QMakeVar add QMAKE_CFLAGS "-Xarch_i386 -mmacosx-version-min=10.4"
@@ -6177,6 +6208,9 @@ TARGET_OPERATING_SYSTEM=`echo $XPLATFORM | cut -f 2- -d/ | cut -f -1 -d-`
# when cross-compiling, don't include build-host information (build key is target specific)
QT_BUILD_KEY="$CFG_USER_BUILD_KEY $CFG_ARCH $TARGET_OPERATING_SYSTEM $COMPILER $BUILD_OPTIONS"
+if [ -n "$QT_NAMESPACE" ]; then
+ QT_BUILD_KEY="$QT_BUILD_KEY $QT_NAMESPACE"
+fi
MAC_NEED_TWO_BUILD_KEYS="no"
if [ "$PLATFORM_MAC" = "yes" -a "$CFG_MAC_COCOA" = "yes" ]; then
QT_BUILD_KEY_CARBON=$QT_BUILD_KEY
@@ -6193,6 +6227,9 @@ QT_BUILD_KEY_COMPAT=
if [ "$QT_CROSS_COMPILE" = "no" ]; then
# previous versions of Qt used a build key built from the uname
QT_BUILD_KEY_COMPAT="$CFG_USER_BUILD_KEY $UNAME_MACHINE $UNAME_SYSTEM $COMPILER $BUILD_OPTIONS"
+ if [ -n "$QT_NAMESPACE" ]; then
+ QT_BUILD_KEY_COMPAT="$QT_BUILD_KEY_COMPAT $QT_NAMESPACE"
+ fi
fi
# strip out leading/trailing/extra whitespace
QT_BUILD_KEY=`echo $QT_BUILD_KEY | sed -e "s, *, ,g" -e "s,^ *,," -e "s, *$,,"`
diff --git a/configure.exe b/configure.exe
index 54e8a60..40843b4 100644
--- a/configure.exe
+++ b/configure.exe
Binary files differ
diff --git a/demos/demos.pro b/demos/demos.pro
index 9248ab8..6084550 100644
--- a/demos/demos.pro
+++ b/demos/demos.pro
@@ -30,7 +30,7 @@ contains(QT_BUILD_PARTS, tools):{
wince*: SUBDIRS += demos_sqlbrowser
}
}
-contains(QT_CONFIG, phonon)!static:SUBDIRS += demos_mediaplayer
+contains(QT_CONFIG, phonon):!static:SUBDIRS += demos_mediaplayer
contains(QT_CONFIG, webkit):contains(QT_CONFIG, svg):SUBDIRS += demos_browser
# install
diff --git a/demos/embeddeddialogs/customproxy.cpp b/demos/embeddeddialogs/customproxy.cpp
index 56a0548..dd8766f 100644
--- a/demos/embeddeddialogs/customproxy.cpp
+++ b/demos/embeddeddialogs/customproxy.cpp
@@ -44,7 +44,7 @@
#include <QtGui>
CustomProxy::CustomProxy(QGraphicsItem *parent, Qt::WindowFlags wFlags)
- : QGraphicsProxyWidget(parent, wFlags), popupShown(false)
+ : QGraphicsProxyWidget(parent, wFlags), popupShown(false), currentPopup(0)
{
timeLine = new QTimeLine(250, this);
connect(timeLine, SIGNAL(valueChanged(qreal)),
@@ -111,8 +111,19 @@ bool CustomProxy::sceneEventFilter(QGraphicsItem *watched, QEvent *event)
QVariant CustomProxy::itemChange(GraphicsItemChange change, const QVariant &value)
{
- if (change == ItemChildRemovedChange)
- removeSceneEventFilter(this);
+ if (change == ItemChildAddedChange || change == ItemChildRemovedChange) {
+ if (change == ItemChildAddedChange) {
+ currentPopup = qVariantValue<QGraphicsItem *>(value);
+ currentPopup->setCacheMode(ItemCoordinateCache);
+ if (scene())
+ currentPopup->installSceneEventFilter(this);
+ } else if (scene()) {
+ currentPopup->removeSceneEventFilter(this);
+ currentPopup = 0;
+ }
+ } else if (currentPopup && change == ItemSceneHasChanged) {
+ currentPopup->installSceneEventFilter(this);
+ }
return QGraphicsProxyWidget::itemChange(change, value);
}
diff --git a/demos/embeddeddialogs/customproxy.h b/demos/embeddeddialogs/customproxy.h
index 0a5fbaf..d324426 100644
--- a/demos/embeddeddialogs/customproxy.h
+++ b/demos/embeddeddialogs/customproxy.h
@@ -70,6 +70,7 @@ private slots:
private:
QTimeLine *timeLine;
bool popupShown;
+ QGraphicsItem *currentPopup;
};
#endif
diff --git a/demos/embeddeddialogs/main.cpp b/demos/embeddeddialogs/main.cpp
index 4cf7325..cfb31c4 100644
--- a/demos/embeddeddialogs/main.cpp
+++ b/demos/embeddeddialogs/main.cpp
@@ -68,7 +68,6 @@ int main(int argc, char *argv[])
proxy->setCacheMode(QGraphicsItem::DeviceCoordinateCache);
scene.addItem(proxy);
- proxy->installSceneEventFilter(proxy);
}
}
scene.setSceneRect(scene.itemsBoundingRect());
diff --git a/demos/qtdemo/colors.cpp b/demos/qtdemo/colors.cpp
index 18343cb..41bbfb3 100644
--- a/demos/qtdemo/colors.cpp
+++ b/demos/qtdemo/colors.cpp
@@ -278,6 +278,9 @@ void Colors::parseArgs(int argc, char *argv[])
+ "[-low] [-ticker-letters<int>] [-ticker-speed<float>] [-no-ticker-morph] "
+ "[-ticker-morph-speed<float>] [-ticker-text<string>]");
exit(0);
+ } else{
+ QMessageBox::warning(0, "QtDemo", QString("Unrecognized argument:\n") + s);
+ exit(0);
}
}
diff --git a/demos/qtdemo/menumanager.cpp b/demos/qtdemo/menumanager.cpp
index bfa2e3f..a9e9b4b 100644
--- a/demos/qtdemo/menumanager.cpp
+++ b/demos/qtdemo/menumanager.cpp
@@ -184,7 +184,6 @@ void MenuManager::itemSelected(int userCode, const QString &menuName)
this->tickerInAnim->startDelay = 2000;
this->ticker->useGuideQt();
this->score->queueMovie("ticker", Score::NEW_ANIMATION_ONLY);
- this->window->switchTimerOnOff(true);
}
break;
case MENU1:
@@ -220,7 +219,6 @@ void MenuManager::itemSelected(int userCode, const QString &menuName)
this->score->queueMovie(this->currentInfo + " -buttons", Score::NEW_ANIMATION_ONLY);
if (!Colors::noTicker){
this->score->queueMovie("ticker -out", Score::NEW_ANIMATION_ONLY);
- this->window->switchTimerOnOff(false);
}
break;
case UP:{
@@ -257,7 +255,6 @@ void MenuManager::itemSelected(int userCode, const QString &menuName)
this->ticker->doIntroTransitions = false;
this->tickerInAnim->startDelay = 500;
this->score->queueMovie("ticker", Score::NEW_ANIMATION_ONLY);
- this->window->switchTimerOnOff(true);
}
} else if (this->currentMenuCode != ROOT)
itemSelected(ROOT, Colors::rootMenuName);
diff --git a/demos/qtdemo/xml/examples.xml b/demos/qtdemo/xml/examples.xml
index 03b59f3..96a3e80 100644
--- a/demos/qtdemo/xml/examples.xml
+++ b/demos/qtdemo/xml/examples.xml
@@ -118,6 +118,7 @@
<example filename="threadedfortuneserver" name="Threaded Fort. Server" />
<example filename="torrent" name="Torrent Client" />
<example filename="securesocketclient" name="Secure Socket Client" />
+ <example filename="googlesuggest" name="Google Suggest" />
</category>
<category dirname="opengl" name="OpenGL">
<example filename="2dpainting" name="2D Painting" />
@@ -213,6 +214,12 @@
<example filename="wiggly" name="Wiggly" />
<example filename="windowflags" name="Window Flags" />
</category>
+ <category dirname="webkit" name="WebKit">
+ <example filename="formextractor" name="Form Extractor" />
+ <example filename="previewer" name="HTML Previewer" />
+ <example filename="fancybrowser" name="Fancy Browser" />
+ <example filename="googlechat" name="Google Chat" />
+ </category>
<category dirname="xml" name="XML">
<example filename="saxbookmarks" name="SAX Bookmarks" />
<example filename="dombookmarks" name="DOM Bookmarks" />
diff --git a/dist/README b/dist/README
index 110be1c..38b3a1c 100644
--- a/dist/README
+++ b/dist/README
@@ -114,7 +114,7 @@ HOW TO REPORT A BUG
If you think you have found a bug in Qt, we would like to hear about
it so that we can fix it. Before reporting a bug, please check
http://qtsoftware.com/developer/faqs/ and
-http://qtsoftware.com/products/appdev/platform/platforms/ to see if the to see if
+http://qtsoftware.com/products/appdev/platform/platforms/ to see if
the issue is already known.
Always include the following information in your bug report: the name
diff --git a/dist/changes-4.5.1 b/dist/changes-4.5.1
index 4e3fcc7..c9e689f 100644
--- a/dist/changes-4.5.1
+++ b/dist/changes-4.5.1
@@ -24,6 +24,27 @@ General Improvements
--------------------
- Documentation and Examples
+ * Added printing feature for the Spreadsheet demo.
+ * [245675] Clarified the differences between QItemDelegate and
+ QStyledItemDelegate.
+ * [248752] Marked QPrintDialog::printer(), setPrinter() and addButton()
+ as Unix only functions, part of Qt3Support.
+
+- Embedded Dialogs demo
+ * [246517] Fixed warnings and bugs in hover handling on Mac OS X
+
+
+Optimizations
+-------------
+
+- Graphics View Framework has been optimized in several areas
+ * Improved the performance of QGraphicsItem::clipPath().
+ * Improved the performance of QGraphicsItem::setPos().
+ * Improved the performance of QGraphicsItem::effectiveOpacity().
+ * Improved the performance of QGrahicsScene::items(*).
+ * Improved handling of updates.
+ * Reduced the number of floating point operations.
+ * Reduced QVariant overhead.
Third party components
----------------------
@@ -33,13 +54,240 @@ Third party components
* Library *
****************************************************************************
+- QAbstractItemModel
+ * Clarified some warning messages printed if the model is invalid.
+
+- QAbstractEventDispatcher
+ * [248805] Duplicate timerids could occur if a timer is running while the
+ QObject is moved to another thread, stopping timers from working.
+
+- QAbstractSocket
+ * [192037] Emit the disconnected signal only if we were connected before.
+
+- QAccessible
+ * [221731] Fixed a bug where the accessibility plugin could crash if
+ there was an "&" at the end or spin forever if a label had a sequence of
+ "&&".
+ * [241161] Fixed a bug in browsing menus with the keyboard.
+
+- QAtomicInt
+ * [216492] Fixed compilation on 64-bit PowerPC machines with gcc 4.3.
+
+- QAuthenticator
+ * [237979] Fixed implementation of md5-sess.
+
+- QByteArray
+ * [246233] QByteArray::fromHex() fails with input of size 1.
+
+- QColorDialog
+ * [247349] Fixed a bug causing the wrong alpha value to be returned.
+
+- QCombobox
+ * [248094] Fixed scrollbar from appearing when not required.
+
+- QCompleter
+ * [246056] Fixed an assertion failure in setCompletionPrefix().
+ * [250064] Fixed a regression in focus policy propagation.
+
+- QtConcurrent
+ * [244718] Reduced the number of calls to QThread::idealThreadCount().
+
+- QDirIterator
+ * [247645] Fixed a bug that may loose all cached data inside QFileInfo.
+
+- QFile
+ * [244485] Renaming a file does not change QFile::fileName().
+ * [244500] QFile::rename() does not always return false when the method
+ fails
+
+- QFileInfo
+ * [205244] Return valid file info also for relative UNC paths.
+
+- QFileDialog
+ * [221323] Fixed a bug in QFileDialog's programmatical file selection.
+ * [248332] QFileDialog is slow after visiting a large directory.
+ * [250194] Fixed an issue with QFileDialog and QSortFilterProxyModel
+ index mapping.
+
+- QGLFramebufferObject
+ * Framebuffer object extension resolution now works with OpenGL/ES 2.0.
+
+- QGraphicsItem
+ * Fixed a slow down regression in QGraphicsItem::ItemCoordinateCache.
+ * [247890] Cached QGraphicsItems are not updated if update() is called
+ when they are hidden.
+ * [250272] Fixed a crash that could occur when an item is deleted but
+ it does not get removed from the sceneeventfilters.
+
+- QGraphicsGridLayout
+ * [242472] Fixed a bug where the calculation of the maximum width of a
+ column was incorrect.
+
+- QGraphicsScene
+ * [243707] Fixed a crash when adding a child before a parent to the
+ scene.
+
+- QGraphicsView
+ * [245766] Rubber Band drag mode does not update correctly when
+ scrolling.
+
+- QGraphicsWidget
+ * [246215] Fixed a regression where we could cache the wrong size hint
+ because we called the virtual sizeHint() from the constructor.
+
+- QHttp
+ * Compile fixes for QT_BEGIN_NAMESPACE being in the wrong place in some
+ private headers.
+ * [208445] Cancel request upon receiving unknown authentication method.
+
+- QHostAddress
+ * [247330] Fixed compilation on MinGW by adding a missing QPair include.
+
+- QLocalSocket
+ * Fixed a bug that would cause QLocalSocket to disconnect 30 seconds
+ after a succesful delayed connection on UNIX.
+
+- QMacStyle
+ * Adjusted the opacity value for popups.
+ * [248769] Fixed a regression where QMacStyle would only draw tabs when
+ passed a QStyleOptionTabV3.
+
+- QMainWindow
+ * [248048] Fixed a regression that would cause tooltips to disappear when
+ using the unified toolbar.
+
+- QMetaType
+ * [248890] The detailed description of QMetaType no longer contradicts
+ the documentation of QMetaType::type()
+
+- QMutex
+ * Fixed a performance regression for contended mutexes as reported on the
+ qt4-preview-feedback list.
+
+- QPainter
+ * Compile fixes for OpenGL paint engine on OpenGL/ES 1.1 CommonLite and
+ OpenGL/ES 1.0.
+ * [246573] Fixed a very slow stroking of paths in the X11 paint engine.
+ * [247083] Fixed the scale applied to antialiased cosmetic pens in X11
+ paint engine.
+ * [247492] Fixed a rendering bug in the raster paint engine causing
+ * [247505] Fixed missing fills of rectangles with negative width/height
+ in raster paint engine.
+ one-pixel offset when drawing premultiplied ARGB32 images on RGB16
+ images.
+ * [249490] Fixed one-pixel offset between stroke and fills of ellipses in
+ the X11 paint engine.
+ * [249628] Fixed a crash in OpenGL paint engine when filling using
+ Qt::NoBrush.
+
+
+- QPixmap
+ * [249175] Fixed QPixmap::fromImage() of monochrome images to result in
+ black/white pixels and not transparent/white pixels.
+
+- QProcess
+ * [247865] Fixed a crash when calling QProcess::start() and
+ startDetached() with an empty program string.
+
+- QScrollBar
+ * [247985] Stylesheet: added the feature to style scrollbar menus.
+
- QSharedPointer
- * [246843] Fixed a crash caused by using QSharedPointer in global statics
+ * [246843] Fixed a crash caused by using QSharedPointer in global statics.
+
+- QSortFilterProxyModel
+ * [247867] Properly sort when calling appendRows().
+ * [248868] Re-sort when the model is reset if dynamicSort is enabled.
+ * [248868] Fixed QSortFilterProxyModel::sort() if dynamicSort was disabled.
+
+- QSSlSocket
+ * [245668] Set also protocol, verifyMode and verifyDepth in
+ setSslConfiguration().
+
+- QString
+ * [249517] Fixed a regression in replace(int, int, QChar) when the string
+ is empty.
+
+- QStyleSheetStyle
+ * Improved support for setting background and foreground roles in styles
+ such as the text color in a combo box popup on Mac and Cleanlooks, or
+ the background of QScrollBar.
+ * Fixed a crash that occured while styling the title bar of a QMdiArea.
+ * [188195] Fixed the background of QAbstractScrollArea losing its color
+ if styled with pseudo-class.
+ * [246542] Fixed a bug in QToolButton::hover{ color:.... }.
+
+- QThread
+ * [249997] Added documentation indicating that the priority set by the
+ programmer may be ignored, for example on Linux.
+
+- QTreeView
+ * Fixed a crash that may occur when events are processed immediately
+ after a QSortFilterProxyModel is invalidated.
+ * [246025] Fixed auto-expand that occured when quickly collapsing an item
+ after clicking on a child.
+ * [248163] Fixed a possible crash in the paintEvent() when spans are used.
+ * [248805] Calling QTreeView::sortByColumn() programmatically was not
+ working if manual sorting was disabled.
+
+- QWidget
+ * [250388] Fixed a potential crash in QWidget::scroll() when using the
+ raster graphics system.
+
+- QWidget
+ * [246852] Improved handling of WindowMaximizeButtonHint for widgets with
+ layouts.
+
+-QLocale
+ * String-to-number conversion functions will now ignore trailing and
+ leading whitespaces in all locales as documented.
+
+- QWizard
+ * [248107] Fixed a bug on Windows Vista causing the Back button to
+ connect to the back() signal twice.
+
+- Q3ListView
+ * [248689] Fixed a bug in Q3ListView that would not update under certain
+ conditions.
+
+- QtWebKit
+ * Fixed a bug in cookie handling (WebKit Bugzilla 24062, Benjamin Meyer).
+ * Fixed a bug in calling from JavaScript into NPAPI plugins on Windows.
+ * Fixed the updating state of WebActions (Erik Bunce)
+ * Fixed a bug in HTML 5 Canvas clearRect() (Dirk Schulze)
+ * Fixed the theming of text fields with KDE 4 Oxygen style (Zack Rusin)
+ * Fixed path fill styles (Zack Rusin)
+ * Fixed pre-edit text handling with input methods.
+ * [248643] Fixed compiling with the "-pedantic" compile option.
+
+- QSqlTableModel
+ * Made setTable() try and use the database's letter case (uppercase/
+ lowercase) of the given tablename.
+ * [189093] QSqlTableModel did not handle updates when one of the fields
+ had a NULL value.
****************************************************************************
* Database Drivers *
****************************************************************************
+ * Fixed the DB2 driver returning a double field as empty.
+ * Fixed a memory leak in the DB2 driver.
+ * Fixed the DB2 driver not quoting table/field names properly.
+ * Fixed an issue with ODBC & FreeTDS not accepting quotes in statements.
+ * Fixed a bug in the sqlite2 driver not returning false on failing to
+ execute a statement.
+ * PrecisionPolicy now works in the oracle driver.
+ * Fixed a bug in the ODBC driver returning a list of tables when
+ requested.
+ * Fixed Interbase retrieving scale/precision information on numeric/
+ decimal fields.
+ * Stopped drivers from quoting again when escapeIdentifier is called
+ twice.
+ * Fixed a bug in the sqlite2 driver not quoting fields correctly.
+ * [232769] Fixed a memory overflow issue on bound out strings in ODBC
+ Driver
+ * [249059] Fixed a bug that handled QPSQL datetime/time fields with
+ negative timezone offsets incorrectly.
****************************************************************************
* Platform Specific Changes *
@@ -48,22 +296,191 @@ Third party components
Qt for Linux/X11
----------------
+ * Ensured proper resetting for input contexts when switching between
+ multiple input context plugins.
+ * Input methods preedit strings are now reset properly when user switches
+ focus without commiting a string.
+ * Unicode conversion functions will handle Latin-1 character set only if
+ they are used before a QCoreApplication/QApplication is constructed.
+ * Improved handling of failed unicode conversion.
+ * Fixed clipboard handling when the user manually creates an instance of
+ the QDesktopWidget.
+ * [226048] Ensured that the QDesktopWidget::resized() signal is emitted
+ properly when a new screen appears or the screen geometry is changed
+ without affecting the whole desktop's geometry.
+ * [232632] Fixed a bug in reparenting widgets to a difference X11 screen.
+ * [241888] The background of the drag-n-drop cursor is now respected,
+ according to the stylesheet.
+ * [244337] Improved input method handling when a widget's native window
+ id is recreated.
+ * [244607] Current focus widget is properly set and input method is
+ properly initialized when showing a toplevel widget that accepts
+ keyboard input.
+
+- Phonon/GStreamer
+ * [233188] Fixed a problem where the seek slider reset to 0 while being
+ dragged.
+ * [244259] Fixed a problem where the backend failed to indicate an error
+ when the streaming failed.
+ * [246097] Added support for the MediaController interface to allow audio
+ CD playback.
+ * [246189] Fixed a problem where the backend failed to correctly escape
+ certain file names casuing playback to not start.
+
+
+- QGtkStyle
+ * The system palette is no longer strictly forced. Also improved behavior
+ related to system theme changes.
+ * Fixed palette and styling issues with the background color of combo box
+ popups.
+ * [238196] Allowed middle click to set scrollbar position, following GTK+
+ behavior.
+ * [239829] Disabled alt-key navigation for QGtkStyle following GTK+
+ behavior.
+ * [247653] Fixed a compilation issue on Solaris.
+ * [249363] QFrame is now styled as a GtkScrolledWindow.
+
+- Font rendering
+ * Improved performance of subpixel antialiased text rendering by using a
+ mask in the calls to XRender's text compositing function.
+ * [248387] Properly respect the font config LCD filter settings for
+ subpixel antialiased text rendering when Freetype's native subpixel
+ rendering is disabled.
+ * [248498] Fix garbled rendering of subpixel antialiased text when using
+ Freetype's native subpixel rendering for vertical subpixel layouts.
+ * [248644] Fall back to Qt's subpixel rendering if Freetype's subpixel
+ rendering was available at compile-time but not at run-time.
+
+- QEventDispatcherGlib
+ * Event posted to a thread before it is started are not processed until
+ others events are posted.
+
+- QWidget
+ * [213512] Fixed a bug that caused wrong clipping when using the
+ Qt::WA_PaintOutsidePaintEvent attribute.
+
Qt for Windows
--------------
+ * [240891] Corrected the focus behavior of native file dialogs, when an
+ application has multiple toplevel widgets.
+ * [243583] Improved drag-and-drop handling when switching mouse buttons
+ quickly.
+ * [244875] The system menu will now be shown for a fullscreen window.
+ * [245330] Fixed a bug that caused mouse inputs to be ignored on modal
+ dialogs, when shown from an ActiveQt control.
+ * [249576] Fixed a crash when using a combobox with Qt::NoFocus.
+
+
+- QCoreApplication
+ * [247401] Fixed a bug that caused a restarted timer to fire too early,
+ resulting in QtWebKit's Javascript consuming 100% CPU on Windows.
+- QWindowsXPStyle
+ * [248036] Fixed an issue where tool buttons were hovering incorrectly
+ when disabled.
+
+- QWidget
+ * [248391] Fixed a bug that made it impossible to dynamically switch from
+ QPainter-based graphics to native graphics API and back.
+
Qt for Mac OS X
---------------
+ * Fixed a crash when showing a widget that is a modal window but has no
+ parent.
+ * Added QSysInfo::MV_10_6 as an enum to test against.
+ * Various compile fixes for the preliminary supported Snow Leopard.
+ * The uninstall-qt.py script included in the binary package no longer
+ complains about removing itself multiple times.
+- * Improved the documentation for how qt_mac_set_dock_menu() works.
+ * Fixed an issue with the focus frame's transparency as it was difficult
+ to use the QWidget with stylesheets.
+ * [223525] Fixed a crash in the MacMainWindow Demo.
+ * [248803] Ensured that two dialogs shown at the same time will both not
+ have visible default buttons.
+
+- QDesktopWidget
+ * [244004] Properly support multiple screens with different sizes.
+
+- QDialog
+ * [195904] Parent dialog is displayed on top of its modal child.
+ * [218980] Modeless dialogs should be stacked above normal windows.
+ * [239155] QDialog(foo, Qt::Sheet) with QComboBox has non-native
+ behavior.
+
+- QFileDialog
+ * [219844] Fixed a crash caused by QFileDialog::getOpenFileName()'s
+ search buttons (native version).
+ * [225705] QFileDialog::getSaveFileName()'s filter does not display
+ correctly.
+
+- QMenu
+ * [228017] Ensured that QMenu closes when expanding a system menu.
+
+- QTestLib
+ * Activate the test application when launched from the command line.
+
+- Event system
+ * [210912] Fixed a bug where ShowEvent not sent when reshowing a window
+ after it was minimized.
+
+- macdeployqt
+ * The binary packages now include this tool.
+ * macdeployqt now runs 'strip' on the deployed binaries.
+ * Fixed an issue that prevented the QtSvg module from being deployed.
+
+- configure script
+ * Now supports "-arch i386" as an alias for "-arch x86".
+ * Detects invalid arch arguemnts and exits.
+
+- Cocoa port
+ * Fixed a bug where actions in the native menubar were not disabled
+ properly.
+ * Made shortcuts work properly when using the Dvorak-QWERTY+CMD keyboard
+ layout.
+ * Fixed a bug where dialogs were positioned in the wrong place on the
+ screen.
+ * The build-key for Cocoa was changed in the unlikely case that a plugin
+ may make assumptions on how Qt was built. All Cocoa plugins built
+ against Qt 4.5.0 will NOT work with Qt 4.5.1; we do not foresee
+ changing this again.
+ * Fixed a bug where some windows did not get activation when they
+ normally should.
+ * Fixed a bug where key events sent to popups were not propagated
+ onwards.
+ * QFileOpenEvents will no longer be sent for items passed via command
+ line.
+ * Various fixes for determining the metrics of text and the ability to
+ disable kerning.
+ * Modified the Colliding Mice Example to work better with coalesced
+ updates.
+ * Fixed a bug where the drag cursor was not updated when modifier keys
+ were used.
+ * [239043] Fixed a bug that caused QGraphicsProxyWidget to shrink when
+ moved.
+ * [244369] Window flags on Cocoa windows should look similar to the
+ Carbon ones.
+ * [247947] Fixed a crash in drag and drop.
+ * [248918] Fixed color matching for themed text items.
+ * The command + h shortcut is now enabled. (Hides the current window.)
+ * [249296] Fixed a bug where line edits on a second page of a stack
+ widget were not getting key events.
Qt for Embedded Linux
---------------------
+- * Various improvements to the Qt DirectFB plugin.
+ * Fixed recreation of temporary EGL surfaces in the PowerVR QScreen
+ driver.
+- * Document some necessary #define's for building the PowerVR QScreen
+ driver.
Qt for Windows CE
-----------------
+ * [246619] Fixed a tap and hold bug for QCheckbox.
****************************************************************************
* Compiler Specific Changes *
@@ -80,30 +497,62 @@ Qt for Windows CE
- Designer
-
+ * [245503] Fixed redundant backslashes in string property in the property
+ browser.
+ * [245961] Restricted objectname-validation to known object name
+ properties only.
+ * [247995] Fixed a crash occurring after layout operations that caused
+ an instance of QGridLayout or QFormLayout to shrink.
+ * [248000] Fixed a crash ocurring when re-layouting empty grid layouts.
+ * [249097] Fixed a crash related to undoing a QGridLayout re-layout
+ operation.
- Linguist
+
- Linguist GUI
- - lupdate
+ * [248076] Fixed a crash caused by opening files for which we have no
+ plural rules.
+ * [249519] Fixed a crash upon dropping text into a non-focused line
+ edit.
- - lrelease
+ - Entire Linguist toolchain
+ * [244035] Fixed an infinite loop in PO writer.
+ * [247738] Improved handling of duplicated messages.
+ * [248849] Fixed the encoding in XLIFF writer.
+ * [249022] Fixed TS' and QM's handling of messages which appear in
+ multiple encodings.
+
+ - lupdate
+
+ * [248724] Fixed the encoding of messages from .ui files if CODECFORTR
+ is not utf8.
+ * [249633] Fixed the processing of C++ backslash line continuations.
- rcc
- moc
-
+ * [240368] moc parsing issue with "unsigned" subphrase
- uic
-
+ * [244998] Fixed include file generation for phonon widgets.
+ * [248070] Fixed code generation for QStringList-type properties to use
+ encoding properly.
+ * [242447] Made uic generate class-specific code correctly in the case of
+ multiple levels of inheritance.
- uic3
- qmake
-
+ * On Mac OS, properly escape file names in QMAKE_BUNDLE_DATA.
+ * Fixed moc and uic features to make shadow builds work even if a
+ non-shadow build is present
+ * [201495] Comment processing in qmake prevented file from being moc'ed
+ * [248806] Ensured that the Xcode generator includes the right path to
+ frameworks.
- configure
diff --git a/dist/changes-4.5.2 b/dist/changes-4.5.2
new file mode 100644
index 0000000..a132028
--- /dev/null
+++ b/dist/changes-4.5.2
@@ -0,0 +1,144 @@
+Qt 4.5.2 is a bug-fix release. It maintains both forward and backward
+compatibility (source and binary) with Qt 4.5.0. For more details,
+refer to the online documentation included in this distribution. The
+documentation is also available online:
+
+ http://doc.trolltech.com/4.5
+
+The Qt version 4.5 series is binary compatible with the 4.4.x series.
+Applications compiled for 4.4 will continue to run with 4.5.
+
+Some of the changes listed in this file include issue tracking numbers
+corresponding to tasks in the Task Tracker:
+
+ http://www.qtsoftware.com/developer/task-tracker
+
+Each of these identifiers can be entered in the task tracker to obtain more
+information about a particular change.
+
+****************************************************************************
+* General *
+****************************************************************************
+
+General Improvements
+--------------------
+
+- Documentation and Examples
+
+Third party components
+----------------------
+
+
+****************************************************************************
+* Library *
+****************************************************************************
+
+- QtWebKit
+ * Backported fixes for critical bugs, memory leaks, and crashes from
+ WebKit trunk (with revision numbers) related to:
+ Canvas (r40546, r41221 r41355, r42996, r43645)
+ Memory (r41527, r43764, r43828, r43830)
+ JavaScript (r39882, r40086, r40131, r40133)
+ Rendering (r41285, r41296, r41659, r42887)
+ Network (r41664, r42516)
+ Plugins (r41346)
+ Clipboard (r41360)
+
+****************************************************************************
+* Database Drivers *
+****************************************************************************
+
+
+****************************************************************************
+* Platform Specific Changes *
+****************************************************************************
+
+Qt for Linux/X11
+----------------
+
+
+Qt for Windows
+--------------
+
+
+Qt for Mac OS X
+---------------
+
+
+Qt for Embedded Linux
+---------------------
+
+
+Qt for Windows CE
+-----------------
+
+
+****************************************************************************
+* Compiler Specific Changes *
+****************************************************************************
+
+
+****************************************************************************
+* Tools *
+****************************************************************************
+
+- Build System
+
+- Assistant
+
+
+- Designer
+ * [248769] Fixed a bug affecting the display of keyboard shortcuts in
+ the detailed view of the action editor.
+ * [251092] Fixed a bug preventing entering local file names for QUrl-type
+ properties on Windows.
+ * [251691] Fixed dynamic re-translation of table headers.
+ * [252251] Improved readability of the property editor when using the
+ KDE Obsidian Coast theme.
+ * [253236] Fixed a regression bug triggered by forms with a size policy
+ of 'Fixed' on the main cointainer.
+ * [253278] Made it possible to set QString-type properties using
+ QDesignerFormWindowCursor::setProperty().
+
+- Linguist
+ - Linguist GUI
+
+ - lupdate
+
+ - lrelease
+
+
+- rcc
+
+
+- moc
+
+
+- uic
+ * [252333] Fixed a regression crash triggered by using icons with
+ different pixmaps for QIcon states.
+
+- uic3
+
+
+- qmake
+
+
+- configure
+
+
+- qtconfig
+
+
+- qt3to4
+
+
+****************************************************************************
+* Plugins *
+****************************************************************************
+
+
+****************************************************************************
+* Important Behavior Changes *
+****************************************************************************
+
diff --git a/doc/doc.pri b/doc/doc.pri
index 6b77f88..a4c77fe 100644
--- a/doc/doc.pri
+++ b/doc/doc.pri
@@ -4,7 +4,7 @@
win32 {
QT_WINCONFIG = release/
- CONFIG(debug, debug|release) {
+ !CONFIG(release, debug|release) {
QT_WINCONFIG = debug/
}
}
@@ -24,7 +24,7 @@ $$unixstyle {
QDOC = cd $$QT_SOURCE_TREE/tools/qdoc3/test && QT_BUILD_TREE=$$QT_BUILD_TREE QT_SOURCE_TREE=$$QT_SOURCE_TREE $$QT_BUILD_TREE/tools/qdoc3/$${QT_WINCONFIG}qdoc3 $$DOCS_GENERATION_DEFINES
} else {
QDOC = cd $$QT_SOURCE_TREE/tools/qdoc3/test && set QT_BUILD_TREE=$$QT_BUILD_TREE&& set QT_SOURCE_TREE=$$QT_SOURCE_TREE&& $$QT_BUILD_TREE/tools/qdoc3/$${QT_WINCONFIG}qdoc3.exe $$DOCS_GENERATION_DEFINES
- QDOC = $$replace(QDOC, "/", "\\\\")
+ QDOC = $$replace(QDOC, "/", "\\")
}
macx {
ADP_DOCS_QDOCCONF_FILE = qt-build-docs-with-xcode.qdocconf
diff --git a/doc/src/accessible.qdoc b/doc/src/accessible.qdoc
index 090da86..ad9f4f1 100644
--- a/doc/src/accessible.qdoc
+++ b/doc/src/accessible.qdoc
@@ -527,7 +527,7 @@
on plugins, consult the plugins \l{How to Create Qt
Plugins}{overview document}.
- You can omit the the first macro unless you want the plugin
+ You can omit the first macro unless you want the plugin
to be statically linked with the application.
\section2 Implementing Interface Factories
diff --git a/doc/src/activeqt.qdoc b/doc/src/activeqt.qdoc
index ea13e59..473f815 100644
--- a/doc/src/activeqt.qdoc
+++ b/doc/src/activeqt.qdoc
@@ -73,7 +73,7 @@
To build the static libraries, change into the \c activeqt directory
(usually \c QTDIR/src/activeqt), and run \c qmake and your make
tool in both the \c container and the \c control subdirectory.
- The libraries \c qaxcontainer.lib and \c qaxserver.lib will be linked
+ The libraries \c qaxcontainer.lib and \c qaxserver.lib will be linked
into \c QTDIR/lib.
If you are using a shared configuration of Qt enter the \c plugin
@@ -81,8 +81,8 @@
plugin that integrates the QAxContainer module into \l{Qt
Designer}.
- The ActiveQt modules are part of the \l{Qt Full Framework Edition}. They
- are \e not part of the \l{Open Source Versions of Qt}.
+ The ActiveQt modules are part of the \l{Qt Full Framework Edition} and
+ the \l{Open Source Versions of Qt}.
\sa {QAxContainer Module}, {QAxServer Module}
*/
diff --git a/doc/src/credits.qdoc b/doc/src/credits.qdoc
index 114e28d..6b48514 100644
--- a/doc/src/credits.qdoc
+++ b/doc/src/credits.qdoc
@@ -188,7 +188,7 @@
Jesper K. Pedersen <blackie atklaralvdalens-datakonsult.se>\br
Jim Lauchlan <jim.lauchlan at gecm.com>\br
Joachim Backes <backes at rhrk.uni-kl.de>\br
- Jochen R&ouml;mmler <jochen at concept.de>\br
+ Jochen R\ouml\c{}mmler <jochen at concept.de>\br
Jochen Scharrlach <jscharrl at BA-Stuttgart.De>\br
Joe Croft <jcroft at swbell.net>\br
Joel Lindholm <wizball at kewl.campus.luth.se>\br
diff --git a/doc/src/datastreamformat.qdoc b/doc/src/datastreamformat.qdoc
index 3c651fb..15ac062 100644
--- a/doc/src/datastreamformat.qdoc
+++ b/doc/src/datastreamformat.qdoc
@@ -69,6 +69,10 @@
the application happens to be running on.
\table
+ \row \o bool
+ \o \list
+ \o boolean
+ \endlist
\row \o qint8
\o \list
\o signed byte
@@ -297,6 +301,10 @@
\o \list
\o Milliseconds since midnight (quint32)
\endlist
+ \row \o QUrl
+ \o \list
+ \o Holds an URL (QString)
+ \endlist
\row \o QVariant
\o \list
\o The type of the data (quint32)
diff --git a/doc/src/deployment.qdoc b/doc/src/deployment.qdoc
index d9f7c1a..446c91b 100644
--- a/doc/src/deployment.qdoc
+++ b/doc/src/deployment.qdoc
@@ -911,7 +911,7 @@
Then qApp->libraryPaths() would return something like this:
"C:/customPath/plugins "
- "C:/Qt/4.5.0/plugins"
+ "C:/Qt/%VERSION%/plugins"
"E:/myApplication/directory/"
The executable will look for the plugins in these directories and
@@ -1247,7 +1247,7 @@
\snippet doc/src/snippets/code/doc_src_deployment.qdoc 48
Then we update the source code in \c tools/plugandpaint/main.cpp
- to look for the the new plugins. After constructing the
+ to look for the new plugins. After constructing the
QApplication, we add the following code:
\snippet doc/src/snippets/code/doc_src_deployment.qdoc 49
diff --git a/doc/src/designer-manual.qdoc b/doc/src/designer-manual.qdoc
index e10a5be..03b74e6 100644
--- a/doc/src/designer-manual.qdoc
+++ b/doc/src/designer-manual.qdoc
@@ -344,10 +344,14 @@
of a QLineEdit or the width and height of item view widgets. This is where
the widget size constraints -- \l{QWidget::minimumSize()}{minimumSize} and
\l{QWidget::maximumSize()}{maximumSize} constraints come into play. These
- are properties you can set in the property editor. Alternatively, to use
- the current size as a size constraint value, choose one of the
- \gui{Size Constraint} options from the widget's context menu. The layout
- will then ensure that those constraints are met.
+ are properties you can set in the property editor. For example, to override
+ the default \l{QWidget::}{sizeHint()}, simply set
+ \l{QWidget::minimumSize()}{minimumSize} and \l{QWidget::maximumSize()}
+ {maximumSize} to the same value. Alternatively, to use the current size as
+ a size constraint value, choose one of the \gui{Size Constraint} options
+ from the widget's context menu. The layout will then ensure that those
+ constraints are met. To control the size of your widgets via code, you can
+ reimplement \l{QWidget::}{sizeHint()} in your code.
The screenshot below shows the breakdown of a basic user interface designed
using a grid. The coordinates on the screenshot show the position of each
diff --git a/doc/src/examples.qdoc b/doc/src/examples.qdoc
index e3c2291..29c6c0b 100644
--- a/doc/src/examples.qdoc
+++ b/doc/src/examples.qdoc
@@ -209,6 +209,7 @@
\o \l{network/loopback}{Loopback}
\o \l{network/threadedfortuneserver}{Threaded Fortune Server}\raisedaster
\o \l{network/torrent}{Torrent}
+ \o \l{network/googlesuggest}{Google Suggest}
\endlist
\section1 OpenGL
@@ -348,6 +349,8 @@
\list
\o \l{webkit/previewer}{Previewer}\raisedaster
\o \l{webkit/formextractor}{Form Extractor}
+ \o \l{webkit/googlechat}{Google Chat}
+ \o \l{webkit/fancybrowser}{Fancy Browser}
\endlist
\section1 Widgets
diff --git a/doc/src/examples/codeeditor.qdoc b/doc/src/examples/codeeditor.qdoc
index 669ab45..d218d0d 100644
--- a/doc/src/examples/codeeditor.qdoc
+++ b/doc/src/examples/codeeditor.qdoc
@@ -67,7 +67,7 @@
QTextEdit because it is optimized for handling plain text. See
the QPlainTextEdit class description for details.
- QPlainTextEdit lets us add selections in addition to the the
+ QPlainTextEdit lets us add selections in addition to the
selection the user can make with the mouse or keyboard. We use
this functionality to highlight the current line. More on this
later.
diff --git a/doc/src/examples/collidingmice-example.qdoc b/doc/src/examples/collidingmice-example.qdoc
index 7ea2ca2..657a204 100644
--- a/doc/src/examples/collidingmice-example.qdoc
+++ b/doc/src/examples/collidingmice-example.qdoc
@@ -66,7 +66,7 @@
\section1 Mouse Class Definition
- The \c mouse class inherits both QObject and QGraphicsItem. The
+ The \c mouse class inherits from QGraphicsItem. The
QGraphicsItem class is the base class for all graphical items in
the Graphics View framework, and provides a light-weight
foundation for writing your own custom items.
@@ -78,14 +78,11 @@
{QGraphicsItem::}{boundingRect()}, which returns an estimate of
the area painted by the item, and \l {QGraphicsItem::}{paint()},
which implements the actual painting. In addition, we reimplement
- the \l {QGraphicsItem::}{shape()} function to return an accurate
+ the \l {QGraphicsItem::}{shape()} and \l {QGraphicsItem::}{advance()}.
+ We reimplement \l {QGraphicsItem::}{shape()} to return an accurate
shape of our mouse item; the default implementation simply returns
- the item's bounding rectangle.
-
- The rationale for deriving from QObject in addition to
- QGraphicsItem is to be able to animate our items by reimplementing
- QObject's \l {QObject::}{timerEvent()} function and use
- QObject::startTimer() to generate timer events.
+ the item's bounding rectangle. We reimplement \l {QGraphicsItem::}{advance()}
+ to handle the animation so it all happens on one update.
\section1 Mouse Class Definition
@@ -105,19 +102,18 @@
calling the item's \l {QGraphicsItem::rotate()}{rotate()} function
we alter the direction in which the mouse will start moving.
- In the end we call QObject's \l {QObject::}{startTimer()}
- function, emitting a timer event every 1000/33 millisecond. This
- enables us to animate our mouse item using our reimplementation of
- the \l {QObject::}{timerEvent()} function; whenever a mouse
- receives a timer event it will trigger \l
- {QObject::}{timerEvent()}:
-
+ When the QGraphicsScene decides to advance the scene a frame it will call
+ QGraphicsItem::advance() on each of the items. This enables us to animate
+ our mouse using our reimplementation of the advance() function.
+
\snippet examples/graphicsview/collidingmice/mouse.cpp 4
\snippet examples/graphicsview/collidingmice/mouse.cpp 5
\snippet examples/graphicsview/collidingmice/mouse.cpp 6
- First we ensure that the mice stays within a circle with a radius
- of 150 pixels.
+ First, we don't bother doing any advance if the step is 0 since we want to our advance in
+ the actual advance (advance() is called twice, once with step == 0 indicating that items
+ are about to advance and with step == 1 for the actual advance). We also ensure that the
+ mice stays within a circle with a radius of 150 pixels.
Note the \l {QGraphicsItem::mapFromScene()}{mapFromScene()}
function provided by QGraphicsItem. This function maps a position
@@ -275,5 +271,12 @@
In the end, we set the application window's title and size before
we enter the main event loop using the QApplication::exec()
function.
-*/
+ Finally, we create a QTimer and connect its timeout() signal to the advance()
+ slot of the scene. Every time the timer fires, the scene will advance one frame.
+ We then tell the timer to fire every 1000/33 millisecond. This will
+ give us a frame rate of 30 frames a second, which is fast enough for most animations.
+ Doing the animation with a single timer connect to advance the scene ensures that all the
+ mice are moved at one point and, more importantly, only one update is sent to the screen
+ after all the mice have moved.
+*/ \ No newline at end of file
diff --git a/doc/src/examples/containerextension.qdoc b/doc/src/examples/containerextension.qdoc
index a4fbcea..6d29cf6 100644
--- a/doc/src/examples/containerextension.qdoc
+++ b/doc/src/examples/containerextension.qdoc
@@ -305,7 +305,7 @@
MultiPageWidget class \l
{designer/containerextension/multipagewidget.cpp}{implementation}).
Finally, we implicitly force an update of the page's property
- sheet by calling the the
+ sheet by calling the
QDesignerPropertySheetExtension::setChanged() function.
\snippet examples/designer/containerextension/multipagewidgetplugin.cpp 4
diff --git a/doc/src/examples/fancybrowser.qdoc b/doc/src/examples/fancybrowser.qdoc
new file mode 100644
index 0000000..631aff9
--- /dev/null
+++ b/doc/src/examples/fancybrowser.qdoc
@@ -0,0 +1,148 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the documentation 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 either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** 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.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*!
+ \example webkit/fancybrowser
+ \title Fancy Browser Example
+
+ The Fancy Browser example shows how to use jQuery with QtWebKit to
+ create a web browser with special effects and content
+ manipulation.
+
+ \image fancybrowser-example.png
+
+ The application makes use of QWebFrame::evaluateJavaScript to
+ evaluate the jQuery JavaScript code. A QMainWindow with a QWebView
+ as central widget builds up the browser itself.
+
+ \section1 MainWindow Class Definition
+
+ The \c MainWindow class inherits QMainWindow. It implements a number of
+ slots to perform actions on both the application and on the web content.
+
+ \snippet examples/webkit/fancybrowser/mainwindow.h 1
+
+ We also declare a QString that contains the jQuery, a QWebView
+ that displays the web content, and a QLineEdit that acts as the
+ address bar.
+
+ \section1 MainWindow Class Implementation
+
+ We start by implementing the constructor.
+
+ \snippet examples/webkit/fancybrowser/mainwindow.cpp 1
+
+ The first part of the constructor sets the value of \c progress to
+ 0. This value will be used later in the code to visualize the
+ loading of a webpage.
+
+ Next, the jQuery library is loaded using a QFile and reading the file
+ content. The jQuery library is a JavaScript library that provides different
+ functions for manipulating HTML.
+
+ \snippet examples/webkit/fancybrowser/mainwindow.cpp 2
+
+ The second part of the constructor creates a QWebView and connects
+ slots to the views signals. Furthermore, we create a QLineEdit as
+ the browsers address bar. We then set the horizontal QSizePolicy
+ to fill the available area in the browser at all times. We add the
+ QLineEdit to a QToolbar together with a set of navigation actions
+ from QWebView::pageAction.
+
+ \snippet examples/webkit/fancybrowser/mainwindow.cpp 3
+
+ The third and last part of the constructor implements two QMenus and assigns
+ a set of actions to them. The last line sets the QWebView as the central
+ widget in the QMainWindow.
+
+ \snippet examples/webkit/fancybrowser/mainwindow.cpp 4
+
+ When the page is loaded, \c adjustLocation() updates the address
+ bar; \c adjustLocation() is triggered by the \c loadFinished()
+ signal in QWebView. In \c changeLocation() we create a QUrl
+ object, and then use it to load the page into the QWebView. When
+ the new web page has finished loading, \c adjustLocation() will be
+ run once more to update the address bar.
+
+ \snippet examples/webkit/fancybrowser/mainwindow.cpp 5
+
+ \c adjustTitle() sets the window title and displays the loading
+ progress. This slot is triggered by the \c titleChanged() signal
+ in QWebView.
+
+ \snippet examples/webkit/fancybrowser/mainwindow.cpp 6
+
+ When a web page has loaded, \c finishLoading() is triggered by the
+ \c loadFinished() signal in QWebView. \c finishLoading() then updates the
+ progress in the title bar and calls \c evaluateJavaScript() to evaluate the
+ jQuery library. This evaluates the JavaScript against the current web page.
+ What that means is that the JavaScript can be viewed as part of the content
+ loaded into the QWebView, and therefore needs to be loaded every time a new
+ page is loaded. Once the jQuery library is loaded, we can start executing
+ the different jQuery functions in the browser.
+
+ \snippet examples/webkit/fancybrowser/mainwindow.cpp 7
+
+ The first jQuery-based function, \c highlightAllLinks(), is designed to
+ highlight all links in the current webpage. The JavaScript code looks
+ for web elements named \e {a}, which is the tag for a hyperlink.
+ For each such element, the background color is set to be yellow by
+ using CSS.
+
+ \snippet examples/webkit/fancybrowser/mainwindow.cpp 8
+
+ The \c rotateImages() function rotates the images on the current
+ web page. Webkit supports CSS transforms and this JavaScript code
+ looks up all \e {img} elements and rotates the images 180 degrees
+ and then back again.
+
+ \snippet examples/webkit/fancybrowser/mainwindow.cpp 9
+
+ The remaining four methods remove different elements from the current web
+ page. \c removeGifImages() removes all Gif images on the page by looking up
+ the \e {src} attribute of all the elements on the web page. Any element with
+ a \e {gif} file as its source is removed. \c removeInlineFrames() removes all
+ \e {iframe} or inline elements. \c removeObjectElements() removes all
+ \e {object} elements, and \c removeEmbeddedElements() removes any elements
+ such as plugins embedded on the page using the \e {embed} tag.
+
+*/
+
diff --git a/doc/src/examples/flowlayout.qdoc b/doc/src/examples/flowlayout.qdoc
index 557ba39..3e7ec22 100644
--- a/doc/src/examples/flowlayout.qdoc
+++ b/doc/src/examples/flowlayout.qdoc
@@ -43,8 +43,117 @@
\example layouts/flowlayout
\title Flow Layout Example
- The Flow Layout example demonstrates a custom layout that arranges child widgets from
- left to right and top to bottom in a top-level widget.
+ The Flow Layout example demonstrates a custom layout that arranges child
+ widgets from left to right and top to bottom in a top-level widget.
+
+ \image flowlayout-example.png Screenshot of the Flow Layout example
+
+ The items are first laid out horizontally and then vertically when each line
+ in the layout runs out of space.
+
+ The Flowlayout class mainly uses QLayout and QWidgetItem, while the
+ Window uses QWidget and QLabel. We will only document the definition
+ and implementation of \c FlowLayout below.
+
+ \section1 FlowLayout Class Definition
+
+ The \c FlowLayout class inherits QLayout. It is a custom layout class
+ that arranges its child widgets horizontally and vertically.
+
+ \snippet examples/layouts/flowlayout/flowlayout.h 0
+
+ We reimplement functions inherited from QLayout. These functions add items to
+ the layout and handle their orientation and geometry.
+
+ We also declare two private methods, \c doLayout() and \c smartSpacing().
+ \c doLayout() lays out the layout items, while the \c
+ smartSpacing() function calculates the spacing between them.
+
+ \section1 FlowLayout Class Implementation
+
+ We start off by looking at the constructor:
+
+ \snippet examples/layouts/flowlayout/flowlayout.cpp 1
+
+ In the constructor we call \c setContentsMargins() to set the left, top,
+ right and bottom margin. By default, QLayout uses values provided by
+ the current style (see QStyle::PixelMetric).
+
+ \snippet examples/layouts/flowlayout/flowlayout.cpp 2
+
+ In this example we reimplement \c addItem(), which is a pure virtual
+ function. When using \c addItem() the ownership of the layout items is
+ transferred to the layout, and it is therefore the layout's
+ responsibility to delete them.
+
+ \snippet examples/layouts/flowlayout/flowlayout.cpp 3
+
+ \c addItem() is implemented to add items to the layout.
+
+ \snippet examples/layouts/flowlayout/flowlayout.cpp 4
+
+ We implement \c horizontalSpacing() and \c verticalSpacing() to get
+ hold of the spacing between the widgets inside the layout. If the value
+ is less than or equal to 0, this value will be used. If not,
+ \c smartSpacing() will be called to calculate the spacing.
+
+ \snippet examples/layouts/flowlayout/flowlayout.cpp 5
+
+ We then implement \c count() to return the number of items in the
+ layout. To navigate the list of items we use \c itemAt() and
+ takeAt() to remove and return items from the list. If an item is
+ removed, the remaining items will be renumbered. All three
+ functions are pure virtual functions from QLayout.
+
+ \snippet examples/layouts/flowlayout/flowlayout.cpp 6
+
+ \c expandingDirections() returns the \l{Qt::Orientation}s in which the
+ layout can make use of more space than its \c sizeHint().
+
+ \snippet examples/layouts/flowlayout/flowlayout.cpp 7
+
+ To adjust to widgets of which height is dependent on width, we implement \c
+ heightForWidth(). The function \c hasHeightForWidth() is used to test for this
+ dependency, and \c heightForWidth() passes the width on to \c doLayout() which
+ in turn uses the width as an argument for the layout rect, i.e., the bounds in
+ which the items are laid out. This rect does not include the layout margin().
+
+ \snippet examples/layouts/flowlayout/flowlayout.cpp 8
+
+ \c setGeometry() is normally used to do the actual layout, i.e., calculate
+ the geometry of the layout's items. In this example, it calls \c doLayout()
+ and passes the layout rect.
+
+ \c sizeHint() returns the preferred size of the layout and \c minimumSize()
+ returns the minimum size of the layout.
+
+ \snippet examples/layouts/flowlayout/flowlayout.cpp 9
+
+ \c doLayout() handles the layout if \c horizontalSpacing() or \c
+ verticalSpacing() don't return the default value. It uses
+ \c getContentsMargins() to calculate the area available to the
+ layout items.
+
+ \snippet examples/layouts/flowlayout/flowlayout.cpp 10
+
+ It then sets the proper amount of spacing for each widget in the
+ layout, based on the current style.
+
+ \snippet examples/layouts/flowlayout/flowlayout.cpp 11
+
+ The position of each item in the layout is then calculated by
+ adding the items width and the line height to the initial x and y
+ coordinates. This in turn lets us find out whether the next item
+ will fit on the current line or if it must be moved down to the next.
+ We also find the height of the current line based on the widgets height.
+
+ \snippet examples/layouts/flowlayout/flowlayout.cpp 12
+
+ \c smartSpacing() is designed to get the default spacing for either
+ the top-level layouts or the sublayouts. The default spacing for
+ top-level layouts, when the parent is a QWidget, will be determined
+ by querying the style. The default spacing for sublayouts, when
+ the parent is a QLayout, will be determined by querying the spacing
+ of the parent layout.
- \image flowlayout-example.png
*/
diff --git a/doc/src/examples/fortuneserver.qdoc b/doc/src/examples/fortuneserver.qdoc
index e6a7f85..848a3a3 100644
--- a/doc/src/examples/fortuneserver.qdoc
+++ b/doc/src/examples/fortuneserver.qdoc
@@ -45,7 +45,7 @@
The Fortune Server example shows how to create a server for a simple
network service. It is intended to be run alongside the
- \l{network/fortuneclient}{Fortune Client} example or the the
+ \l{network/fortuneclient}{Fortune Client} example or the
\l{network/blockingfortuneclient}{Blocking Fortune Client} example.
\image fortuneserver-example.png Screenshot of the Fortune Server example
diff --git a/doc/src/examples/ftp.qdoc b/doc/src/examples/ftp.qdoc
index 9cc9cd1..7a74a37 100644
--- a/doc/src/examples/ftp.qdoc
+++ b/doc/src/examples/ftp.qdoc
@@ -172,7 +172,7 @@
no entries were found (in which case our \c addToList() function
would not have been called).
- Let's continue with the the \c addToList() slot:
+ Let's continue with the \c addToList() slot:
\snippet examples/network/ftp/ftpwindow.cpp 10
@@ -190,7 +190,7 @@
\snippet examples/network/ftp/ftpwindow.cpp 12
- \c cdToParent() is invoked when the the user requests to go to the
+ \c cdToParent() is invoked when the user requests to go to the
parent directory of the one displayed in the file list. After
changing the directory, we QFtp::List its contents.
diff --git a/doc/src/examples/googlechat.qdoc b/doc/src/examples/googlechat.qdoc
new file mode 100644
index 0000000..f2d61cf
--- /dev/null
+++ b/doc/src/examples/googlechat.qdoc
@@ -0,0 +1,51 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the documentation 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 either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** 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.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*!
+ \example webkit/googlechat
+ \title Google Chat Example
+
+ The Google Chat example shows how to use implement a simple Google Chat
+ client with QtWebKit.
+
+ \image googlechat-example.png
+
+*/
diff --git a/doc/src/examples/googlesuggest.qdoc b/doc/src/examples/googlesuggest.qdoc
new file mode 100644
index 0000000..a9b09f9
--- /dev/null
+++ b/doc/src/examples/googlesuggest.qdoc
@@ -0,0 +1,51 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the documentation 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 either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** 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.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*!
+ \example network/googlesuggest
+ \title Google Suggest Example
+
+ The Google Suggest example shows how to use the network access manager
+ to get the list of suggested search terms from Google.
+
+ \image googlesuggest-example.png
+
+*/
diff --git a/doc/src/examples/icons.qdoc b/doc/src/examples/icons.qdoc
index 750ef2e..a81ddb9 100644
--- a/doc/src/examples/icons.qdoc
+++ b/doc/src/examples/icons.qdoc
@@ -479,7 +479,7 @@
QTableWidget::openPersistentEditor() function to create
comboboxes for the mode and state columns of the items.
- Due to the the connection between the table widget's \l
+ Due to the connection between the table widget's \l
{QTableWidget::itemChanged()}{itemChanged()} signal and the \c
changeIcon() slot, the new image is automatically converted into a
pixmap and made part of the set of pixmaps available to the icon
diff --git a/doc/src/examples/musicplayerexample.qdoc b/doc/src/examples/musicplayerexample.qdoc
index d23c1f1..9f04bf6 100644
--- a/doc/src/examples/musicplayerexample.qdoc
+++ b/doc/src/examples/musicplayerexample.qdoc
@@ -154,7 +154,7 @@
\snippet examples/phonon/musicplayer/mainwindow.cpp 5
- We move on to the the slots of \c MainWindow, starting with \c
+ We move on to the slots of \c MainWindow, starting with \c
addFiles():
\snippet examples/phonon/musicplayer/mainwindow.cpp 6
diff --git a/doc/src/examples/qobjectxmlmodel.qdoc b/doc/src/examples/qobjectxmlmodel.qdoc
index ce1dab6..37c66bc 100644
--- a/doc/src/examples/qobjectxmlmodel.qdoc
+++ b/doc/src/examples/qobjectxmlmodel.qdoc
@@ -71,7 +71,7 @@
The query engine can only traverse two dimensional trees, because an
XML document is always a two dimensional tree. If we want to add the
QMetaObject tree to the node model, we have to somehow flatten it
- into the the same plane as the QObject tree. This requires that the
+ into the same plane as the QObject tree. This requires that the
node model class must build an auxiliary data structure and make it
part of the two dimensional QObject node model. How to do this is
explained in \l{Including The QMetaObject Tree}.
diff --git a/doc/src/examples/qxmlstreambookmarks.qdoc b/doc/src/examples/qxmlstreambookmarks.qdoc
index 7059043..fb3a1c1 100644
--- a/doc/src/examples/qxmlstreambookmarks.qdoc
+++ b/doc/src/examples/qxmlstreambookmarks.qdoc
@@ -103,8 +103,9 @@
The \c read() function accepts a QIODevice and sets it using
\l{QXmlStreamReader::setDevice()}{setDevice()}. The actual process
- of reading only takes place in event the file is a valid XBEL 1.0
- file. Otherwise, the \l{QXmlStreamReader::raiseError()}
+ of reading only takes place if the file is a valid XBEL 1.0 file.
+ Note that the XML input needs to be well-formed to be accepted by
+ QXmlStreamReader. Otherwise, the \l{QXmlStreamReader::raiseError()}
{raiseError()} function is used to display an error message.
\snippet examples/xml/streambookmarks/xbelreader.cpp 1
diff --git a/doc/src/examples/tabdialog.qdoc b/doc/src/examples/tabdialog.qdoc
index c9500af..5394b82 100644
--- a/doc/src/examples/tabdialog.qdoc
+++ b/doc/src/examples/tabdialog.qdoc
@@ -91,7 +91,7 @@
\snippet examples/dialogs/tabdialog/tabdialog.cpp 1
\snippet examples/dialogs/tabdialog/tabdialog.cpp 3
- We arrange the the tab widget above the buttons in the dialog:
+ We arrange the tab widget above the buttons in the dialog:
\snippet examples/dialogs/tabdialog/tabdialog.cpp 4
diff --git a/doc/src/examples/tooltips.qdoc b/doc/src/examples/tooltips.qdoc
index 5daa2b2..78b350b 100644
--- a/doc/src/examples/tooltips.qdoc
+++ b/doc/src/examples/tooltips.qdoc
@@ -353,7 +353,7 @@
Whenever the user creates a new shape item, we want the new item
to appear at a random position, and we use the \c
randomItemPosition() function to calculate such a position. We
- make sure that the item appears within the the visible area of the
+ make sure that the item appears within the visible area of the
\c SortingBox widget, using the widget's current width and heigth
when calculating the random coordinates.
diff --git a/doc/src/examples/transformations.qdoc b/doc/src/examples/transformations.qdoc
index eabb803..58c8b80 100644
--- a/doc/src/examples/transformations.qdoc
+++ b/doc/src/examples/transformations.qdoc
@@ -208,7 +208,7 @@
After transforming the coordinate system, we draw the \c
RenderArea's shape, and then we restore the painter state using
- the the QPainter::restore() function (i.e. popping the saved state off
+ the QPainter::restore() function (i.e. popping the saved state off
the stack).
\snippet examples/painting/transformations/renderarea.cpp 7
diff --git a/doc/src/examples/trollprint.qdoc b/doc/src/examples/trollprint.qdoc
index 38251ee..489012e 100644
--- a/doc/src/examples/trollprint.qdoc
+++ b/doc/src/examples/trollprint.qdoc
@@ -142,7 +142,7 @@
We can easily determine which file must be changed because the
translator's "context" is in fact the class name for the class where
the texts that must be changed appears. In this case the file is \c
- printpanel.cpp, where the there are four lines to change. Add the
+ printpanel.cpp, where there are four lines to change. Add the
second argument "two-sided" in the appropriate \c tr() calls to the
first pair of radio buttons:
diff --git a/doc/src/images/fancybrowser-example.png b/doc/src/images/fancybrowser-example.png
new file mode 100644
index 0000000..717ac9d
--- /dev/null
+++ b/doc/src/images/fancybrowser-example.png
Binary files differ
diff --git a/doc/src/images/flowlayout-example.png b/doc/src/images/flowlayout-example.png
index 27660d6..61abe1f 100644
--- a/doc/src/images/flowlayout-example.png
+++ b/doc/src/images/flowlayout-example.png
Binary files differ
diff --git a/doc/src/images/googlechat-example.png b/doc/src/images/googlechat-example.png
new file mode 100644
index 0000000..0338445
--- /dev/null
+++ b/doc/src/images/googlechat-example.png
Binary files differ
diff --git a/doc/src/images/googlesuggest-example.png b/doc/src/images/googlesuggest-example.png
new file mode 100644
index 0000000..4ef072a
--- /dev/null
+++ b/doc/src/images/googlesuggest-example.png
Binary files differ
diff --git a/doc/src/index.qdoc b/doc/src/index.qdoc
index 49dfafd..4ead9e4 100644
--- a/doc/src/index.qdoc
+++ b/doc/src/index.qdoc
@@ -85,12 +85,6 @@
\endif
\endif
- \if defined(opensourceedition)
- \bold{Note:} This edition is for the development of \l{Qt
- Open Source Edition}{Free and Open Source} software only; see
- \l{Qt Commercial Editions}.
- \endif
-
\raw HTML
<table cellpadding="2" cellspacing="1" border="0" width="100%" bgcolor="#e5e5e5">
<tr>
diff --git a/doc/src/known-issues.qdoc b/doc/src/known-issues.qdoc
index 60fd63d..91e122f 100644
--- a/doc/src/known-issues.qdoc
+++ b/doc/src/known-issues.qdoc
@@ -60,11 +60,10 @@
\section2 Intel Compiler Support
- Although it is possible to build applications against Qt 4.5.0 using Intel
- CC 10, these applications will crash when run. A fix for this issue is
- scheduled for Qt 4.5.1. We recommend that developers who rely on this
- compiler wait until the fix is applied before upgrading to the Qt 4.5.x
- series of releases.
+ Although it is possible to build applications against Qt 4.5.x using Intel
+ CC 10, these applications will crash when run. We recommend that developers
+ who rely on this compiler wait until a fix is available before upgrading to
+ the Qt 4.5.x series of releases.
\section2 X11 Hardware Support
diff --git a/doc/src/layout.qdoc b/doc/src/layout.qdoc
index 38163c8..d97fcfc 100644
--- a/doc/src/layout.qdoc
+++ b/doc/src/layout.qdoc
@@ -315,7 +315,11 @@
\snippet doc/src/snippets/code/doc_src_layout.qdoc 1
- First we define two functions that iterate over the layout: \c{itemAt()}
+ First we define \c{count()} to fetch the number of items in the list.
+
+ \snippet doc/src/snippets/code/doc_src_layout.qdoc 2
+
+ Then we define two functions that iterate over the layout: \c{itemAt()}
and \c{takeAt()}. These functions are used internally by the layout system
to handle deletion of widgets. They are also available for application
programmers.
@@ -326,7 +330,7 @@
structure, we may have to spend more effort defining a linear order for the
items.
- \snippet doc/src/snippets/code/doc_src_layout.qdoc 2
+ \snippet doc/src/snippets/code/doc_src_layout.qdoc 3
\c{addItem()} implements the default placement strategy for layout items.
This function must be implemented. It is used by QLayout::add(), by the
@@ -336,26 +340,26 @@
QGridLayout::addItem(), QGridLayout::addWidget(), and
QGridLayout::addLayout().
- \snippet doc/src/snippets/code/doc_src_layout.qdoc 3
+ \snippet doc/src/snippets/code/doc_src_layout.qdoc 4
The layout takes over responsibility of the items added. Since QLayoutItem
- does not inherit QObject, we must delete the items manually. The function
- QLayout::deleteAllItems() uses \c{takeAt()} defined above to delete all the
- items in the layout.
+ does not inherit QObject, we must delete the items manually. In the
+ destructor, we remove each item from the list using \c{takeAt()}, and
+ then delete it.
- \snippet doc/src/snippets/code/doc_src_layout.qdoc 4
+ \snippet doc/src/snippets/code/doc_src_layout.qdoc 5
The \c{setGeometry()} function actually performs the layout. The rectangle
supplied as an argument does not include \c{margin()}. If relevant, use
\c{spacing()} as the distance between items.
- \snippet doc/src/snippets/code/doc_src_layout.qdoc 5
+ \snippet doc/src/snippets/code/doc_src_layout.qdoc 6
\c{sizeHint()} and \c{minimumSize()} are normally very similar in
implementation. The sizes returned by both functions should include
\c{spacing()}, but not \c{margin()}.
- \snippet doc/src/snippets/code/doc_src_layout.qdoc 6
+ \snippet doc/src/snippets/code/doc_src_layout.qdoc 7
\section2 Further Notes
@@ -371,7 +375,7 @@
should store the value in a local variable if you need it again
later within in the same function.
\o You should not call QLayoutItem::setGeometry() twice on the same
- item in the smae function. This call can be very expensive if the
+ item in the same function. This call can be very expensive if the
item has several child widgets, because the layout manager must do
a complete layout every time. Instead, calculate the geometry and
then set it. (This does not only apply to layouts, you should do
diff --git a/doc/src/licenses.qdoc b/doc/src/licenses.qdoc
index b42b882..a11c071 100644
--- a/doc/src/licenses.qdoc
+++ b/doc/src/licenses.qdoc
@@ -45,7 +45,7 @@
\ingroup licensing
\brief Information about other licenses used for Qt components and third-party code.
- Qt contains some code that is not provided under the the
+ Qt contains some code that is not provided under the
\l{GNU General Public License (GPL)},
\l{GNU Lesser General Public License (LGPL)} or the
\l{Qt Commercial Editions}{Qt Commercial License Agreement}, but rather under
@@ -239,6 +239,24 @@
\o Parts of the internal QImageSmoothScaler::scale() function use code
based on pnmscale.c by Jef Poskanzer.
\endlist
+
+ \hr
+
+ jQuery JavaScript Library v1.3.2
+ http://jquery.com/
+
+ Copyright (c) 2009 John Resig
+ Dual licensed under the MIT and GPL licenses.
+ http://docs.jquery.com/License
+
+ Sizzle CSS Selector Engine - v0.9.3
+ Copyright 2009, The Dojo Foundation
+ Released under the MIT, BSD, and GPL Licenses.
+ More information: http://sizzlejs.com/
+
+ \list
+ \o examples/webkit/fancybrowser/jquery.min.js
+ \endlist
*/
/*!
diff --git a/doc/src/mac-differences.qdoc b/doc/src/mac-differences.qdoc
index 573e62d..5849850 100644
--- a/doc/src/mac-differences.qdoc
+++ b/doc/src/mac-differences.qdoc
@@ -128,7 +128,7 @@
If you want to build a new dynamic library combining the Qt 4
dynamic libraries, you need to introduce the \c{ld -r} flag. Then
- relocation information is stored in the the output file, so that
+ relocation information is stored in the output file, so that
this file could be the subject of another \c ld run. This is done
by setting the \c -r flag in the \c .pro file, and the \c LFLAGS
settings.
diff --git a/doc/src/model-view-programming.qdoc b/doc/src/model-view-programming.qdoc
index bf0c1c8..8874cfa 100644
--- a/doc/src/model-view-programming.qdoc
+++ b/doc/src/model-view-programming.qdoc
@@ -249,7 +249,7 @@
provide an API that allows you to sort your model data
programmatically. In addition, you can enable interactive sorting
(i.e. allowing the users to sort the data by clicking the view's
- headers), by connecting the QHeaderView::sectionClicked() signal
+ headers), by connecting the QHeaderView::sortIndicatorChanged() signal
to the QTableView::sortByColumn() slot or the
QTreeView::sortByColumn() slot, respectively.
diff --git a/doc/src/phonon-api.qdoc b/doc/src/phonon-api.qdoc
index 3d04c68..dd37fe2 100644
--- a/doc/src/phonon-api.qdoc
+++ b/doc/src/phonon-api.qdoc
@@ -2973,7 +2973,7 @@
\value ToggledHint
If this hint is set it means that
- the the control has only two states: zero and non-zero
+ the control has only two states: zero and non-zero
(see isToggleControl()).
\value LogarithmicHint
@@ -4457,12 +4457,12 @@
*/
/*!
- \fn QList<int> Phonon::GlobalConfig::audioOutputDeviceListFor(Phonon::Category category, HideAdvancedDevicesOverride override = FromSettings) const
+ \fn QList<int> Phonon::GlobalConfig::audioOutputDeviceListFor(Phonon::Category category, int override = AdvancedDevicesFromSettings) const
\internal
*/
/*!
- \fn int Phonon::GlobalConfig::audioOutputDeviceFor(Phonon::Category category) const
+ \fn int Phonon::GlobalConfig::audioOutputDeviceFor(Phonon::Category category, int override = AdvancedDevicesFromSettings) const
\internal
*/
diff --git a/doc/src/platform-notes.qdoc b/doc/src/platform-notes.qdoc
index 6532d1e..c8046c4 100644
--- a/doc/src/platform-notes.qdoc
+++ b/doc/src/platform-notes.qdoc
@@ -232,9 +232,7 @@
\section1 Windows Vista
- Known issues for Qt on Vista will be listed here.
-
- As of Qt 4.2.0 no Vista-specific issues are known.
+ At the time Qt %VERSION% was released, there were no known Vista-specific issues.
\target Windows NT
\section1 Windows XP, Windows 2000 and Windows NT
diff --git a/doc/src/porting4-overview.qdoc b/doc/src/porting4-overview.qdoc
index b0146a6..462f849 100644
--- a/doc/src/porting4-overview.qdoc
+++ b/doc/src/porting4-overview.qdoc
@@ -364,4 +364,10 @@
In Qt 4.2 and later, \l{Qt Style Sheets} can be used to
implement many common modifications to existing styles, and
this may be sufficient for Qt 3 applications.
+
+ \section2 Events
+ In Qt 3, QCloseEvents were not accepted by default. In Qt 4,
+ the event handler QWidget::closeEvent() receives QCloseEvents,
+ and accepts them by default closing the application. To avoid
+ this, please reimplement QWidget::closeEvent().
*/
diff --git a/doc/src/porting4.qdoc b/doc/src/porting4.qdoc
index c8a9e2b..b93e139 100644
--- a/doc/src/porting4.qdoc
+++ b/doc/src/porting4.qdoc
@@ -457,6 +457,7 @@
\row \o QToolButton::offIconSet \o Use the \l{QIcon::Off}{off component} of QAbstractButton::icon instead.
\row \o QToolButton::onIconSet \o Use the \l{QIcon::On}{on component} of QAbstractButton::icon instead.
\row \o QWidget::microFocusHint \o N/A
+ \row \o QMimeSource::serialNumber () \o N/A
\endtable
\omit
diff --git a/doc/src/properties.qdoc b/doc/src/properties.qdoc
index 0775b12..d934f13 100644
--- a/doc/src/properties.qdoc
+++ b/doc/src/properties.qdoc
@@ -89,7 +89,12 @@
and QWidget::setCursor(), and it also has a \c RESET function,
QWidget::unsetCursor(), since no call to QWidget::setCursor() can
mean \e {reset to the context specific cursor}. The \c RESET
- function musrt return void and take no parameters.
+ function must return void and take no parameters.
+
+ \o A \c NOTIFY signal is optional. If defined, the signal will be
+ emitted whenever the value of the property changes. The signal must
+ take one parameter, which must be of the same type as the property; the
+ parameter will take the new value of the property.
\o The \c DESIGNABLE attribute indicates whether the property
should be visible in the property editor of GUI design tool (e.g.,
diff --git a/doc/src/q3valuelist.qdoc b/doc/src/q3valuelist.qdoc
index be315c2..e3681af 100644
--- a/doc/src/q3valuelist.qdoc
+++ b/doc/src/q3valuelist.qdoc
@@ -108,7 +108,7 @@
pointing to the removed member become invalid. Inserting into the
list does not invalidate any iterator. For convenience, the
function last() returns a reference to the last item in the list,
- and first() returns a reference to the the first item. If the
+ and first() returns a reference to the first item. If the
list is empty(), both last() and first() have undefined behavior
(your application will crash or do unpredictable things). Use
last() and first() with caution, for example:
diff --git a/doc/src/qalgorithms.qdoc b/doc/src/qalgorithms.qdoc
index b33c250..90289f9 100644
--- a/doc/src/qalgorithms.qdoc
+++ b/doc/src/qalgorithms.qdoc
@@ -59,7 +59,7 @@
If STL is available on all your target platforms, you can use the
STL algorithms instead of their Qt counterparts. One reason why
- you might want to use the the STL algorithms is that STL provides
+ you might want to use the STL algorithms is that STL provides
dozens and dozens of algorithms, whereas Qt only provides the most
important ones, making no attempt to duplicate functionality that
is already provided by the C++ standard.
diff --git a/doc/src/qmake-manual.qdoc b/doc/src/qmake-manual.qdoc
index 27cfa0b..172bc60 100644
--- a/doc/src/qmake-manual.qdoc
+++ b/doc/src/qmake-manual.qdoc
@@ -932,6 +932,7 @@
\o \l{qmake Variable Reference#QT}{QT}
\o \l{qmake Variable Reference#RCC_DIR}{RCC_DIR}
\o \l{qmake Variable Reference#REQUIRES}{REQUIRES}
+ \o \l{qmake Variable Reference#RESOURCES}{RESOURCES}
\o \l{qmake Variable Reference#SOURCES}{SOURCES}
\o \l{qmake Variable Reference#SUBDIRS}{SUBDIRS}
\o \l{qmake Variable Reference#TARGET}{TARGET}
@@ -2420,6 +2421,12 @@
This is mainly used in Qt's build system for building the examples.
+ \section1 RESOURCES
+
+ This variable contains the name of the resource collection file (qrc)
+ for the application. Further information about the resource collection
+ file can be found at \l{The Qt Resource System}.
+
\section1 RES_FILE
This variable contains the name of the resource file for the application.
@@ -3080,6 +3087,9 @@
called \c{.qmake.cache} in parent directories of the current directory. If
it fails to find this file, it will silently ignore this step of processing.
+ If it finds a \c{.qmake.cache} file then it will process this file first before
+ it processes the project file.
+
\target LibDepend
\section1 Library Dependencies
diff --git a/doc/src/qnamespace.qdoc b/doc/src/qnamespace.qdoc
index e6a1a36..d9f001e 100644
--- a/doc/src/qnamespace.qdoc
+++ b/doc/src/qnamespace.qdoc
@@ -142,7 +142,7 @@
QAction::iconVisibleInMenu property.
Menus that are currently open or menus already created in the native
- Mac OS X menubar MAY NOT pick up a change in this attribute. Changes
+ Mac OS X menubar \e{may not} pick up a change in this attribute. Changes
in the QAction::iconVisibleInMenu property will always be picked up.
\value AA_NativeWindows Ensures that widgets have native windows.
diff --git a/doc/src/qset.qdoc b/doc/src/qset.qdoc
index 7fbf97a..afbedc3 100644
--- a/doc/src/qset.qdoc
+++ b/doc/src/qset.qdoc
@@ -437,7 +437,7 @@
\fn QSet::const_iterator QSet::insert(const T &value)
Inserts item \a value into the set, if \a value isn't already
- in the set, and returns an iterator positioned at the inserted
+ in the set, and returns an iterator pointing at the inserted
item.
\sa operator<<(), remove(), contains()
diff --git a/doc/src/qt4-intro.qdoc b/doc/src/qt4-intro.qdoc
index cd66c10..5d83ef2 100644
--- a/doc/src/qt4-intro.qdoc
+++ b/doc/src/qt4-intro.qdoc
@@ -161,9 +161,9 @@
\o Support for OLE verbs and MIME data handling in \l{ActiveQt}.
\endlist
- For more information about improvements in the current release, see
- the \l{http://www.qtsoftware.com/developer/changes/changes-4.1.4/}
- {detailed list of changes}.
+ For more information about improvements in each Qt release, see
+ the \l{http://www.qtsoftware.com/developer/changes/}
+ {detailed lists of changes}.
\section1 Significant Improvements
@@ -447,11 +447,10 @@
\l{http://www.qtsoftware.com/developer/changes/changes-4.5.0}{available online}.
A \l{Known Issues in %VERSION%}{list of known issues} for this release is also
available.
- \omit
+
Changes between this release and the previous release are provided
in the \c{changes-%VERSION%} file (also
\l{http://www.qtsoftware.com/developer/changes/changes-%VERSION%}{available online}).
- \endomit
A list of other Qt 4 features can be found on the
\bold{\l{What's New in Qt 4}} page.
diff --git a/doc/src/qtcocoa-known-issues.qdoc b/doc/src/qtcocoa-known-issues.qdoc
deleted file mode 100644
index eedbd68..0000000
--- a/doc/src/qtcocoa-known-issues.qdoc
+++ /dev/null
@@ -1,168 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Qt Software Information (qt-info@nokia.com)
-**
-** This file is part of the documentation 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** 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.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at qt-sales@nokia.com.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page qtcocoa-known-issues.html
- \title Known Issues with the Qt/Mac Cocoa Port
-
- This document explains the current list of features in the Qt/Mac Cocoa port
- that are currently not working. Most of the issues will be addressed in
- upcoming snapshots and beta releases. We hope that all the issues should be
- addressed by the time the of the final 4.5.0 release.
-
- \tableofcontents
-
- \section1 What Works
-
- Here are the things that we can say about the current state of the Qt/Mac Cocoa port.
-
- \list
- \i \e{64-bit Support}:
- The Qt libraries currently do build and link as 64-bit frameworks and it is
- possible to build and run many of the Qt examples as 64-bit.
-
- \i \e{HIViews are now NSViews}:
- Every QWidget is now backed by an NSView pointer instead of an HIViewRef.
- QWidget::winId() will return an NSView pointer that can be used in other
- Cocoa technologies (e.g., Core Animation).
-
- \i \e{Some Native Dialogs Work}:
- QFileDialog and QColorDialog have been ported to use NSOpen-/NSSavePanel and
- NSColorPanel respectively. QPrintDialog and QPageSetupDialog are not in
- this release, but are on their way. Currently, none of these dialogs show
- up as sheets pending the creation of an asynchronous API.
-
- \i \e{Painting, Printing, and Styles}:
- Since printing and painting used Quartz 2D and styling used HITheme, these
- sub-systems work without any changes.
-
- \i \e {OpenGL}:
- OpenGL is fully supported,including pixel buffers and framebuffer objects.
-
- \i \e{Clipboard}:
- Using QClipboard to copy and paste data works as expected.
-
- \i \e{Mouse, Keyboard, and Wheel events}:
- Mouse, keyboard, and wheel events are dispatched to the proper
- widget. The Qt/Mac Cocoa port respects Cocoa's idea of a "First
- Responder."
-
- \endlist
-
- \section1 Current Known Issues
-
- The following are items that don't currently work, but that we plan to have
- resolved before the final release of the Qt/Mac Cocoa port. Please do not
- file bugs on these.
-
- \list
- \i \e{Carbon Support}:
- The current source tree for the Qt/Mac Cocoa port contains source for
- building Qt/Mac with Cocoa. It contains some of the source code that is
- used for the Carbon port, but it is currently not set up to build the
- Carbon Qt/Mac libraries. Please use a normal release or snapshot if you
- want to use Carbon.
-
- \i \e{Drag and Drop Support}:
- Drag and Drop is currently not implemented and needs to be ported to Cocoa,
- but using the clipboard does work at this time.
-
- \i \e {Accessibility}:
- Accessibility support is not implemented and needs to be ported to Cocoa.
-
- \i \e {Text}:
- Most text rendering works fine for Latin-1 characters. However, rendering
- non-Latin-1 characters has not been tested.
-
- \i \e {Input Methods}:
- Input methods also need to be ported to Cocoa.
-
- \i \e {Shortcuts}:
- Shortcuts that exist outside of the menu bar may not be dispatched.
-
- \i \e {Tablet Support}:
- The tablet support has not been ported from Carbon yet. However, it should
- still be possible to use the tablet as a mouse.
-
- \i \e {Phonon}:
- Phonon uses the QuickTime backend that is only available on 32-bit. Using
- Phonon in 64-bit requires a QTKit-based backend and has not been done.
-
- \i \e {Unified Toolbar}:
- The QMainWindow::setUnifiedTitleAndToolBarOnMac() method currently does nothing.
-
- \i \e {Dialogs, Tool Windows, Sheets, and Drawers}:
- At the moment, all windows are subclasses of NSWindow. This means that
- window types like drawers and sheets do not work and tool windows do not
- get the right decorations. Modal dialogs do show up at the correct window
- level, but are not yet considered "panels." Many window flags are not
- recognized.
-
- \endlist
-
- \section1 Things We Don't Expect to Support
-
- The following items that we do not plan on spending any resources on unless
- there is monumental outcry for their inclusion.
-
- \list
- \i \e{Qt3Support}:
- At this time we have no plans for making the Qt3Support module work with
- the Qt/Mac Cocoa port in 64-bit mode. Following in footsteps of Apple, we
- would like to encourage you to consider the time of going Cocoa and 64-bit
- as a chance to jettison Qt 3 constructs and classes.
-
- \i \e{Support for versions of Mac OS X below 10.5}:
- We are using methods and classes that are only available in 10.5 and
- higher. Most of these functions don't have any equivalent on earlier
- versions. We recommend using the Carbon version for earlier versions of Mac
- OS X. We anticipate keeping the Carbon port supported at least for the
- lifetime of 4.5.
-
- \i \e{Support for -no-framework or -static}:
- Cocoa requires that we load a nib in order to properly access the global
- menu bar. This nib has to reside on disk somewhere. The most logical place
- for it to reside is inside the QtGui framework. For this reason, building
- Qt as standard "dylibs" or statically is no longer supported.
-
- \endlist
-
-*/
diff --git a/doc/src/qtdesigner.qdoc b/doc/src/qtdesigner.qdoc
index 7e3b619..9699c5b 100644
--- a/doc/src/qtdesigner.qdoc
+++ b/doc/src/qtdesigner.qdoc
@@ -632,7 +632,7 @@
/*!
\fn void QDesignerContainerExtension::setCurrentIndex(int index)
- Sets the the currently selected page in the container to be the
+ Sets the currently selected page in the container to be the
page at the given \a index in the extension's list of pages.
\sa currentIndex()
diff --git a/doc/src/qtscriptdebugger-manual.qdoc b/doc/src/qtscriptdebugger-manual.qdoc
index 3dfe879..75d87f8 100644
--- a/doc/src/qtscriptdebugger-manual.qdoc
+++ b/doc/src/qtscriptdebugger-manual.qdoc
@@ -367,7 +367,7 @@
\section3 continue
Continues execution normally, i.e, gives the execution control over
- the script back the the QScriptEngine.
+ the script back to the QScriptEngine.
\section3 eval <program>
diff --git a/doc/src/snippets/alphachannel.cpp b/doc/src/snippets/alphachannel.cpp
index 7783271..ad0885a 100644
--- a/doc/src/snippets/alphachannel.cpp
+++ b/doc/src/snippets/alphachannel.cpp
@@ -47,11 +47,8 @@
#include <qfile.h>
#include <qdir.h>
#include <qfileinfo.h>
-
-#if (QT_VERSION) >= 0x040000
#include <QtGui>
#include <QtCore>
-#endif
class MyClass : public QWidget
{
@@ -95,12 +92,10 @@ protected:
//! [0]
}
- QPixmap channelImage, pixmap;
+ QPixmap channelImage, pixmap;
QSize sizeHint() const { return QSize(500, 500); }
};
-
-
int main(int argc, char **argv)
{
QApplication app(argc, argv);
diff --git a/doc/src/snippets/code/doc_src_installation.qdoc b/doc/src/snippets/code/doc_src_installation.qdoc
index 66bb998..e35dad9 100644
--- a/doc/src/snippets/code/doc_src_installation.qdoc
+++ b/doc/src/snippets/code/doc_src_installation.qdoc
@@ -44,7 +44,7 @@ PATH - to locate qmake, moc and other Qt tools
//! [8]
C:
-cd /D C:\Qt\4.4.0-rc1
+cd /D C:\Qt\%VERSION%
configure
//! [8]
diff --git a/doc/src/snippets/code/doc_src_layout.qdoc b/doc/src/snippets/code/doc_src_layout.qdoc
index 48e10e9..60f36b0 100644
--- a/doc/src/snippets/code/doc_src_layout.qdoc
+++ b/doc/src/snippets/code/doc_src_layout.qdoc
@@ -2,23 +2,21 @@
#ifndef CARD_H
#define CARD_H
-#include <QLayout>
+#include <QtGui>
#include <QList>
class CardLayout : public QLayout
{
public:
- CardLayout(QWidget *parent, int dist)
- : QLayout(parent, 0, dist) {}
- CardLayout(QLayout *parent, int dist)
- : QLayout(parent, dist) {}
- CardLayout(int dist)
- : QLayout(dist) {}
+ CardLayout(QWidget *parent, int dist): QLayout(parent, 0, dist) {}
+ CardLayout(QLayout *parent, int dist): QLayout(parent, dist) {}
+ CardLayout(int dist): QLayout(dist) {}
~CardLayout();
void addItem(QLayoutItem *item);
QSize sizeHint() const;
QSize minimumSize() const;
+ QLayoutItem *count() const;
QLayoutItem *itemAt(int) const;
QLayoutItem *takeAt(int);
void setGeometry(const QRect &rect);
@@ -31,11 +29,18 @@ private:
//! [1]
-#include "card.h"
+//#include "card.h"
//! [1]
-
//! [2]
+QLayoutItem *CardLayout::count() const
+{
+ // QList::size() returns the number of QLayoutItems in the list
+ return list.size();
+}
+//! [2]
+
+//! [3]
QLayoutItem *CardLayout::itemAt(int idx) const
{
// QList::value() performs index checking, and returns 0 if we are
@@ -48,26 +53,28 @@ QLayoutItem *CardLayout::takeAt(int idx)
// QList::take does not do index checking
return idx >= 0 && idx < list.size() ? list.takeAt(idx) : 0;
}
-//! [2]
+//! [3]
-//! [3]
+//! [4]
void CardLayout::addItem(QLayoutItem *item)
{
list.append(item);
}
-//! [3]
+//! [4]
-//! [4]
+//! [5]
CardLayout::~CardLayout()
{
- deleteAllItems();
+ QLayoutItem *item;
+ while ((item = takeAt(0)))
+ delete item;
}
-//! [4]
+//! [5]
-//! [5]
+//! [6]
void CardLayout::setGeometry(const QRect &r)
{
QLayout::setGeometry(r);
@@ -85,10 +92,10 @@ void CardLayout::setGeometry(const QRect &r)
++i;
}
}
-//! [5]
+//! [6]
-//! [6]
+//! [7]
QSize CardLayout::sizeHint() const
{
QSize s(0,0);
@@ -116,4 +123,4 @@ QSize CardLayout::minimumSize() const
}
return s + n*QSize(spacing(), spacing());
}
-//! [6]
+//! [7]
diff --git a/doc/src/snippets/code/doc_src_properties.qdoc b/doc/src/snippets/code/doc_src_properties.qdoc
index ba7f79b..377cc9c 100644
--- a/doc/src/snippets/code/doc_src_properties.qdoc
+++ b/doc/src/snippets/code/doc_src_properties.qdoc
@@ -3,6 +3,7 @@ Q_PROPERTY(type name
READ getFunction
[WRITE setFunction]
[RESET resetFunction]
+ [NOTIFY notifySignal]
[DESIGNABLE bool]
[SCRIPTABLE bool]
[STORED bool]
diff --git a/doc/src/snippets/code/doc_src_qtestlib.qdoc b/doc/src/snippets/code/doc_src_qtestlib.qdoc
index a4ef52e..a0e4944 100644
--- a/doc/src/snippets/code/doc_src_qtestlib.qdoc
+++ b/doc/src/snippets/code/doc_src_qtestlib.qdoc
@@ -61,7 +61,7 @@ void TestQString::toUpper()
//! [9]
-/myTestDirectory$ qmake -project "QT += testlib"
+/myTestDirectory$ qmake -project "CONFIG += qtestlib"
/myTestDirectory$ qmake
/myTestDirectory$ make
//! [9]
@@ -69,7 +69,7 @@ void TestQString::toUpper()
//! [10]
********* Start testing of TestQString *********
-Config: Using QTest library 4.1.0, Qt 4.1.0
+Config: Using QTest library %VERSION%, Qt %VERSION%
PASS : TestQString::initTestCase()
PASS : TestQString::toUpper()
PASS : TestQString::cleanupTestCase()
@@ -99,4 +99,4 @@ private slots:
}
}
};
-//! [12] \ No newline at end of file
+//! [12]
diff --git a/doc/src/snippets/code/src_qdbus_qdbusargument.cpp b/doc/src/snippets/code/src_qdbus_qdbusargument.cpp
index b982510..efd54ac 100644
--- a/doc/src/snippets/code/src_qdbus_qdbusargument.cpp
+++ b/doc/src/snippets/code/src_qdbus_qdbusargument.cpp
@@ -4,7 +4,7 @@ struct MyStructure
int count;
QString name;
};
-QT_DECLARE_METATYPE(MyStructure)
+Q_DECLARE_METATYPE(MyStructure)
// Marshall the MyStructure data into a D-Bus argument
QDBusArgument &operator<<(QDBusArgument &argument, const MyStructure &mystruct)
diff --git a/doc/src/snippets/sqldatabase/sqldatabase.cpp b/doc/src/snippets/sqldatabase/sqldatabase.cpp
index ae176ac..06afa0c 100644
--- a/doc/src/snippets/sqldatabase/sqldatabase.cpp
+++ b/doc/src/snippets/sqldatabase/sqldatabase.cpp
@@ -524,7 +524,7 @@ protected:
bool fetchLast() { return false; }
int size() { return 0; }
int numRowsAffected() { return 0; }
- QSqlRecord record() { return QSqlRecord(); }
+ QSqlRecord record() const { return QSqlRecord(); }
};
//! [47]
diff --git a/doc/src/stylesheet.qdoc b/doc/src/stylesheet.qdoc
index c0d13da..4060f33 100644
--- a/doc/src/stylesheet.qdoc
+++ b/doc/src/stylesheet.qdoc
@@ -332,7 +332,7 @@
respect to the reference element.
Once positioned, they are treated the same as widgets and can be styled
- using the the \l{box model}.
+ using the \l{box model}.
See the \l{List of Sub-Controls} below for a list of supported
sub-controls, and \l{Customizing the QPushButton's Menu Indicator
@@ -398,7 +398,7 @@
(usually) refers to a single object, not to all instances of a
class.
- Similarly, selectors with pseudo-states are more specific that
+ Similarly, selectors with pseudo-states are more specific than
ones that do not specify pseudo-states. Thus, the following style
sheet specifies that a \l{QPushButton} should have white text
when the mouse is hovering over it, otherwise red text:
@@ -653,7 +653,7 @@
\target sub controls
\section1 Sub-controls
- A widget is considered as a heirarchy (tree) of subcontrols drawn on top
+ A widget is considered as a hierarchy (tree) of subcontrols drawn on top
of each other. For example, the QComboBox draws the drop-down sub-control
followed by the down-arrow sub-control. A QComboBox is thus rendered as
follows:
@@ -671,7 +671,7 @@
\l{Qt Style Sheets Reference#subcontrol-origin-prop}{subcontrol-origin}
properties.
- Once positioned, sub-controls can be styled using the the \l{box model}.
+ Once positioned, sub-controls can be styled using the \l{box model}.
\note With complex widgets such as QComboBox and QScrollBar, if one
property or sub-control is customized, \bold{all} the other properties or
@@ -1154,7 +1154,7 @@
\l{#pane-sub}{::pane} subcontrol. The left and right
corners are styled using the \l{#left-corner-sub}{::left-corner}
and \l{#right-corner-sub}{::right-corner} respectively.
- The position of the the tab bar is controlled using the
+ The position of the tab bar is controlled using the
\l{#tab-bar-sub}{::tab-bar} subcontrol.
By default, the subcontrols have positions of a QTabWidget in
@@ -1254,7 +1254,7 @@
the \l{#menu-button-sub}{::menu-button} subcontrol is used to draw the
menu button. \l{#menu-arrow-sub}{::menu-arrow} subcontrol is used to
draw the menu arrow inside the menu-button. By default, it is
- positioned in the center of the Contents rectangle of the the
+ positioned in the center of the Contents rectangle of the
menu-button subcontrol.
When the QToolButton displays arrows, the \l{#up-arrow-sub}{::up-arrow},
@@ -1872,10 +1872,6 @@
\snippet doc/src/snippets/code/doc_src_stylesheet.qdoc 54
- \note If you specify more than one parameter in \c font-family,
- e.g., \c{font-family: Verdana, Arial}, Qt will only use the first
- font. If it cannot be found, Qt uses the system fallbacks instead.
-
\row
\o \c font-size
\o \l{#Font Size}{Font Size}
diff --git a/doc/src/tech-preview/known-issues.html b/doc/src/tech-preview/known-issues.html
index 05df69e..885104e 100644
--- a/doc/src/tech-preview/known-issues.html
+++ b/doc/src/tech-preview/known-issues.html
@@ -16,7 +16,7 @@
<td align="right" valign="middle"></td></tr></table>
<h1>Known Issues: Qt 4.0.0 Technology Preview 1</h1>
<p>
- This is the list of known and reported issues for the the Qt 4.0.0
+ This is the list of known and reported issues for the Qt 4.0.0
Technology Preview 1. This list is updated daily.
</p>
<br><br>
diff --git a/doc/src/timers.qdoc b/doc/src/timers.qdoc
index 4f54343..1b48d7d 100644
--- a/doc/src/timers.qdoc
+++ b/doc/src/timers.qdoc
@@ -62,7 +62,7 @@
In multithreaded applications, you can use the timer mechanism in
any thread that has an event loop. To start an event loop from a
- non-GUI thread, use QThread::exec(). Qt uses the the object's
+ non-GUI thread, use QThread::exec(). Qt uses the object's
\l{QObject::thread()}{thread affinity} to determine which thread
will deliver the QTimerEvent. Because of this, you must start and
stop all timers in the object's thread; it is not possible to
@@ -105,7 +105,7 @@
In multithreaded applications, you can use QTimer in any thread
that has an event loop. To start an event loop from a non-GUI
- thread, use QThread::exec(). Qt uses the the timer's
+ thread, use QThread::exec(). Qt uses the timer's
\l{QObject::thread()}{thread affinity} to determine which thread
will emit the \l{QTimer::}{timeout()} signal. Because of this, you
must start and stop the timer in its thread; it is not possible to
diff --git a/doc/src/tutorials/addressbook-sdk.qdoc b/doc/src/tutorials/addressbook-sdk.qdoc
deleted file mode 100644
index b6b257d..0000000
--- a/doc/src/tutorials/addressbook-sdk.qdoc
+++ /dev/null
@@ -1,179 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Qt Software Information (qt-info@nokia.com)
-**
-** This file is part of the documentation 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** 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.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at qt-sales@nokia.com.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page tutorials-addressbook-sdk.html
-
- \startpage {index.html}{Qt Reference Documentation}
- \nextpage \l{Designing the User Interface}{Chapter 1}
-
- \title Address Book Tutorial
- \ingroup howto
- \ingroup tutorials
- \brief An introduction to GUI programming with Qt and Qt Creator,
- describing in detail how to put together a simple yet fully-
- functioning application.
-
- This tutorial gives an introduction to GUI programming using the Qt SDK.
-
- ### Screenshot
-
- In the process, we will learn about some basic technologies provided by
- Qt, such as:
-
- \list
- \o Widgets and layout managers
- \o Container classes
- \o Signals and slots
- \o Input and output devices
- \endlist
-
- If you are completely new to Qt, please read \l{How to Learn Qt} if you
- have not already done so.
-
- The tutorial's source code is located in Qt's
- \c{examples/tutorials/addressbook} directory.
-
- Tutorial chapters:
-
- \list 1
- \o \l{Designing the User Interface}
- \o \l{Adding Addresses}
- \o \l{Navigating between Entries}
- \o \l{Editing and Removing Addresses}
- \o \l{Adding a Find Function}
- \o \l{Loading and Saving}
- \o \l{Additional Features}
- \endlist
-
- Although this little application does not look much like a fully-fledged
- modern GUI application, it uses many of the basic techniques that are used
- in more complex applications. After you have worked through it, we
- recommend checking out the \l{mainwindows/application}{Application}
- example, which presents a small GUI application, with menus, toolbars, a
- status bar, and so on.
-*/
-
-
-/*!
- \page tutorials-addressbook-sdk-part1.html
- \contentspage {Address Book Tutorial}{Contents}
- \nextpage \l{Adding Addresses}{Chapter 2}
- \title Address Book 1 - Designing the User Interface
-
- The first part of this tutorial covers the design of the basic graphical
- user interface (GUI) we use for the Address Book application.
-
- The first step to creating a GUI program is to design the user interface.
- In this chapter, our goal is to set up the labels and input fields needed
- to implement a basic address book application. The figure below is a
- screenshot of our expected output.
-
- \image addressbook-tutorial-part1-screenshot.png
-
- We begin by launching Qt Creator and use it to generate a new project. To
- do this, select \gui New from the \gui File menu. In the
- \gui{New File or Project} dialog. Follow the step by step guide on how to
- create a \gui Project with Qt Creator, refer to the document
- \l{Creating a Project in Qt Creator}{here}. Ensure that you select QWidget
- as your subclass and name it \c AddressBook.
-
- There are five files generated in this \gui{Project}:
-
- \list
- \o \c{addressbook.pro} - the project file,
- \o \c{addressbook.h} - the definition file for the \c AddressBook
- class,
- \o \c{addressbook.cpp} - the implementation file for the
- \c AddressBook class,
- \o \c{main.cpp} - the file containing a \c main() function, with an
- instance of \c AddressBook, and
- \o \c{addressbook.ui} - the user interface file created with \QD.
- \endlist
-
- Now we have all the files we need, let's move on to designing the user
- interface.
-
- \section1 Placing the Widgets on the Form
-
- In the \gui{Project Sidebar}, double-click on the \c{addressbook.ui} file.
- The \QD plugin will be launched, allowing you to design your program's user
- interface.
-
- We require two \l{QLabel}s to label the input fields as well as a
- QLineEdit and a QTextEdit as the input fields. So, drag those widgets from
- the \gui{Widget Box} to your form. In the \gui{Property Editor}, set their
- \gui{objectName} property to \c nameLabel and \c addressLabel for the
- \l{QLabel}s, \c nameLine for the QLineEdit and finally, \c addressText for
- the QTextEdit.
-
- Next, we have to position the widgets properly, according to the screenshot
- earlier. We use a QGridLayout to position our labels and input fields in a
- structured manner. QGridLayout divides the available space into a grid and
- places widgets in the cells we specify with row and column numbers. The
- diagram below shows the layout cells and the position of our widgets.
-
- \image addressbook-tutorial-part1-labeled-screenshot.png
-
-
- \section1 Qt Programming - Subclassing
-
- When writing Qt programs, we usually subclass Qt objects to add
- functionality. This is one of the essential concepts behind creating custom
- widgets or collections of standard widgets. Subclassing to extend or change
- the behavior of a widget has the following advantages:
-
- \list
- \o We can write implementations of virtual or pure virtual functions
- to obtain exactly what we need, falling back on the base class's
- implementation when necessary.
- \o It allows us to encapsulate parts of the user interface within a
- class, so that the other parts of the application do not need to
- know about the individual widgets in the user interface.
- \o The subclass can be used to create multiple custom widgets in the
- same application or library, and the code for the subclass can be
- reused in other projects.
- \endlist
-
-
-
-
-*/
diff --git a/doc/src/xquery-introduction.qdoc b/doc/src/xquery-introduction.qdoc
index 37a45ac..fe541e2 100644
--- a/doc/src/xquery-introduction.qdoc
+++ b/doc/src/xquery-introduction.qdoc
@@ -347,7 +347,7 @@ has a more detailed section on the shorthand form, which it calls the
\l{http://www.w3.org/TR/xquery/#abbrev} {abbreviated syntax}. More
examples of path expressions written in the shorthand form are found
there. There is also a section listing examples of path expressions
-written in the the \l{http://www.w3.org/TR/xquery/#unabbrev} {longhand
+written in the \l{http://www.w3.org/TR/xquery/#unabbrev} {longhand
form}.
\target Name Tests
diff --git a/examples/dialogs/standarddialogs/dialog.cpp b/examples/dialogs/standarddialogs/dialog.cpp
index 0fe1f7e..1f7c5ef 100644
--- a/examples/dialogs/standarddialogs/dialog.cpp
+++ b/examples/dialogs/standarddialogs/dialog.cpp
@@ -59,7 +59,7 @@ Dialog::Dialog(QWidget *parent)
integerLabel = new QLabel;
integerLabel->setFrameStyle(frameStyle);
QPushButton *integerButton =
- new QPushButton(tr("QInputDialog::get&Integer()"));
+ new QPushButton(tr("QInputDialog::get&Int()"));
doubleLabel = new QLabel;
doubleLabel->setFrameStyle(frameStyle);
@@ -198,8 +198,8 @@ void Dialog::setInteger()
{
//! [0]
bool ok;
- int i = QInputDialog::getInteger(this, tr("QInputDialog::getInteger()"),
- tr("Percentage:"), 25, 0, 100, 1, &ok);
+ int i = QInputDialog::getInt(this, tr("QInputDialog::getInteger()"),
+ tr("Percentage:"), 25, 0, 100, 1, &ok);
if (ok)
integerLabel->setText(tr("%1%").arg(i));
//! [0]
diff --git a/examples/examples.pro b/examples/examples.pro
index 2c4fc81..41501a0 100644
--- a/examples/examples.pro
+++ b/examples/examples.pro
@@ -33,7 +33,7 @@ embedded:SUBDIRS += qws
}
contains(QT_CONFIG, opengl): SUBDIRS += opengl
contains(QT_CONFIG, dbus): SUBDIRS += dbus
-win32:!contains(QT_EDITION, OpenSource|Console):SUBDIRS += activeqt
+win32: SUBDIRS += activeqt
contains(QT_CONFIG, xmlpatterns): SUBDIRS += xmlpatterns
contains(DEFINES, QT_NO_CURSOR): SUBDIRS -= mainwindows
diff --git a/examples/graphicsview/collidingmice/main.cpp b/examples/graphicsview/collidingmice/main.cpp
index 4a44481..23c91b0 100644
--- a/examples/graphicsview/collidingmice/main.cpp
+++ b/examples/graphicsview/collidingmice/main.cpp
@@ -83,6 +83,10 @@ int main(int argc, char **argv)
view.resize(400, 300);
view.show();
+ QTimer timer;
+ QObject::connect(&timer, SIGNAL(timeout()), &scene, SLOT(advance()));
+ timer.start(1000 / 33);
+
return app.exec();
}
//! [6]
diff --git a/examples/graphicsview/collidingmice/mouse.cpp b/examples/graphicsview/collidingmice/mouse.cpp
index 1d10574..bbdb4e3 100644
--- a/examples/graphicsview/collidingmice/mouse.cpp
+++ b/examples/graphicsview/collidingmice/mouse.cpp
@@ -65,7 +65,6 @@ Mouse::Mouse()
color(qrand() % 256, qrand() % 256, qrand() % 256)
{
rotate(qrand() % (360 * 16));
- startTimer(1000 / 33);
}
//! [0]
@@ -123,8 +122,10 @@ void Mouse::paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWidget *
//! [3]
//! [4]
-void Mouse::timerEvent(QTimerEvent *)
+void Mouse::advance(int step)
{
+ if (!step)
+ return;
//! [4]
// Don't move too far away
//! [5]
diff --git a/examples/graphicsview/collidingmice/mouse.h b/examples/graphicsview/collidingmice/mouse.h
index 832ea53..c08ce4a 100644
--- a/examples/graphicsview/collidingmice/mouse.h
+++ b/examples/graphicsview/collidingmice/mouse.h
@@ -43,13 +43,10 @@
#define MOUSE_H
#include <QGraphicsItem>
-#include <QObject>
//! [0]
-class Mouse : public QObject, public QGraphicsItem
+class Mouse : public QGraphicsItem
{
- Q_OBJECT
-
public:
Mouse();
@@ -59,7 +56,7 @@ public:
QWidget *widget);
protected:
- void timerEvent(QTimerEvent *event);
+ void advance(int step);
private:
qreal angle;
diff --git a/examples/graphicsview/elasticnodes/edge.cpp b/examples/graphicsview/elasticnodes/edge.cpp
index 4018c25..eb02143 100644
--- a/examples/graphicsview/elasticnodes/edge.cpp
+++ b/examples/graphicsview/elasticnodes/edge.cpp
@@ -93,11 +93,16 @@ void Edge::adjust()
QLineF line(mapFromItem(source, 0, 0), mapFromItem(dest, 0, 0));
qreal length = line.length();
- QPointF edgeOffset((line.dx() * 10) / length, (line.dy() * 10) / length);
prepareGeometryChange();
- sourcePoint = line.p1() + edgeOffset;
- destPoint = line.p2() - edgeOffset;
+
+ if (length > qreal(20.)) {
+ QPointF edgeOffset((line.dx() * 10) / length, (line.dy() * 10) / length);
+ sourcePoint = line.p1() + edgeOffset;
+ destPoint = line.p2() - edgeOffset;
+ } else {
+ sourcePoint = destPoint = line.p1();
+ }
}
QRectF Edge::boundingRect() const
@@ -119,12 +124,15 @@ void Edge::paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWidget *)
if (!source || !dest)
return;
- // Draw the line itself
QLineF line(sourcePoint, destPoint);
+ if (qFuzzyCompare(line.length(), qreal(0.)))
+ return;
+
+ // Draw the line itself
painter->setPen(QPen(Qt::black, 1, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin));
painter->drawLine(line);
- // Draw the arrows if there's enough room
+ // Draw the arrows
double angle = ::acos(line.dx() / line.length());
if (line.dy() >= 0)
angle = TwoPi - angle;
diff --git a/examples/itemviews/chart/pieview.cpp b/examples/itemviews/chart/pieview.cpp
index 6b62f25..48f4073 100644
--- a/examples/itemviews/chart/pieview.cpp
+++ b/examples/itemviews/chart/pieview.cpp
@@ -254,7 +254,7 @@ void PieView::mousePressEvent(QMouseEvent *event)
QAbstractItemView::mousePressEvent(event);
origin = event->pos();
if (!rubberBand)
- rubberBand = new QRubberBand(QRubberBand::Rectangle, this);
+ rubberBand = new QRubberBand(QRubberBand::Rectangle, viewport());
rubberBand->setGeometry(QRect(origin, QSize()));
rubberBand->show();
}
diff --git a/examples/layouts/flowlayout/flowlayout.cpp b/examples/layouts/flowlayout/flowlayout.cpp
index d1e857d..263911d 100644
--- a/examples/layouts/flowlayout/flowlayout.cpp
+++ b/examples/layouts/flowlayout/flowlayout.cpp
@@ -42,31 +42,57 @@
#include <QtGui>
#include "flowlayout.h"
-
-FlowLayout::FlowLayout(QWidget *parent, int margin, int spacing)
- : QLayout(parent)
+//! [1]
+FlowLayout::FlowLayout(QWidget *parent, int margin, int hSpacing, int vSpacing)
+ : QLayout(parent), m_hSpace(hSpacing), m_vSpace(vSpacing)
{
- setMargin(margin);
- setSpacing(spacing);
+ setContentsMargins(margin, margin, margin, margin);
}
-FlowLayout::FlowLayout(int spacing)
+FlowLayout::FlowLayout(int margin, int hSpacing, int vSpacing)
+ : m_hSpace(hSpacing), m_vSpace(vSpacing)
{
- setSpacing(spacing);
+ setContentsMargins(margin, margin, margin, margin);
}
+//! [1]
+//! [2]
FlowLayout::~FlowLayout()
{
QLayoutItem *item;
while ((item = takeAt(0)))
delete item;
}
+//! [2]
+//! [3]
void FlowLayout::addItem(QLayoutItem *item)
{
itemList.append(item);
}
+//! [3]
+
+//! [4]
+int FlowLayout::horizontalSpacing() const
+{
+ if (m_hSpace >= 0) {
+ return m_hSpace;
+ } else {
+ return smartSpacing(QStyle::PM_LayoutHorizontalSpacing);
+ }
+}
+
+int FlowLayout::verticalSpacing() const
+{
+ if (m_vSpace >= 0) {
+ return m_vSpace;
+ } else {
+ return smartSpacing(QStyle::PM_LayoutVerticalSpacing);
+ }
+}
+//! [4]
+//! [5]
int FlowLayout::count() const
{
return itemList.size();
@@ -84,12 +110,16 @@ QLayoutItem *FlowLayout::takeAt(int index)
else
return 0;
}
+//! [5]
+//! [6]
Qt::Orientations FlowLayout::expandingDirections() const
{
return 0;
}
+//! [6]
+//! [7]
bool FlowLayout::hasHeightForWidth() const
{
return true;
@@ -100,7 +130,9 @@ int FlowLayout::heightForWidth(int width) const
int height = doLayout(QRect(0, 0, width, 0), true);
return height;
}
+//! [7]
+//! [8]
void FlowLayout::setGeometry(const QRect &rect)
{
QLayout::setGeometry(rect);
@@ -122,23 +154,36 @@ QSize FlowLayout::minimumSize() const
size += QSize(2*margin(), 2*margin());
return size;
}
+//! [8]
+//! [9]
int FlowLayout::doLayout(const QRect &rect, bool testOnly) const
{
- int x = rect.x();
- int y = rect.y();
+ int left, top, right, bottom;
+ getContentsMargins(&left, &top, &right, &bottom);
+ QRect effectiveRect = rect.adjusted(+left, +top, -right, -bottom);
+ int x = effectiveRect.x();
+ int y = effectiveRect.y();
int lineHeight = 0;
+//! [9]
+//! [10]
QLayoutItem *item;
foreach (item, itemList) {
QWidget *wid = item->widget();
- int spaceX = spacing() + wid->style()->layoutSpacing(
+ int spaceX = horizontalSpacing();
+ if (spaceX == -1)
+ spaceX = wid->style()->layoutSpacing(
QSizePolicy::PushButton, QSizePolicy::PushButton, Qt::Horizontal);
- int spaceY = spacing() + wid->style()->layoutSpacing(
+ int spaceY = verticalSpacing();
+ if (spaceY == -1)
+ spaceY = wid->style()->layoutSpacing(
QSizePolicy::PushButton, QSizePolicy::PushButton, Qt::Vertical);
+//! [10]
+//! [11]
int nextX = x + item->sizeHint().width() + spaceX;
- if (nextX - spaceX > rect.right() && lineHeight > 0) {
- x = rect.x();
+ if (nextX - spaceX > effectiveRect.right() && lineHeight > 0) {
+ x = effectiveRect.x();
y = y + lineHeight + spaceY;
nextX = x + item->sizeHint().width() + spaceX;
lineHeight = 0;
@@ -150,5 +195,20 @@ int FlowLayout::doLayout(const QRect &rect, bool testOnly) const
x = nextX;
lineHeight = qMax(lineHeight, item->sizeHint().height());
}
- return y + lineHeight - rect.y();
+ return y + lineHeight - rect.y() + bottom;
+}
+//! [11]
+//! [12]
+int FlowLayout::smartSpacing(QStyle::PixelMetric pm) const
+{
+ QObject *parent = this->parent();
+ if (!parent) {
+ return -1;
+ } else if (parent->isWidgetType()) {
+ QWidget *pw = static_cast<QWidget *>(parent);
+ return pw->style()->pixelMetric(pm, 0, pw);
+ } else {
+ return static_cast<QLayout *>(parent)->spacing();
+ }
}
+//! [12]
diff --git a/examples/layouts/flowlayout/flowlayout.h b/examples/layouts/flowlayout/flowlayout.h
index f864d8e..bab7f36 100644
--- a/examples/layouts/flowlayout/flowlayout.h
+++ b/examples/layouts/flowlayout/flowlayout.h
@@ -45,15 +45,17 @@
#include <QLayout>
#include <QRect>
#include <QWidgetItem>
-
+//! [0]
class FlowLayout : public QLayout
{
public:
- FlowLayout(QWidget *parent, int margin = -1, int spacing = 0);
- FlowLayout(int spacing = 0);
+ FlowLayout(QWidget *parent, int margin = -1, int hSpacing = -1, int vSpacing = -1);
+ FlowLayout(int margin = -1, int hSpacing = -1, int vSpacing = -1);
~FlowLayout();
void addItem(QLayoutItem *item);
+ int horizontalSpacing() const;
+ int verticalSpacing() const;
Qt::Orientations expandingDirections() const;
bool hasHeightForWidth() const;
int heightForWidth(int) const;
@@ -66,8 +68,12 @@ public:
private:
int doLayout(const QRect &rect, bool testOnly) const;
+ int smartSpacing(QStyle::PixelMetric pm) const;
QList<QLayoutItem *> itemList;
+ int m_hSpace;
+ int m_vSpace;
};
+//! [0]
#endif
diff --git a/examples/layouts/flowlayout/window.cpp b/examples/layouts/flowlayout/window.cpp
index 51d9886..b7d9eae 100644
--- a/examples/layouts/flowlayout/window.cpp
+++ b/examples/layouts/flowlayout/window.cpp
@@ -43,7 +43,7 @@
#include "flowlayout.h"
#include "window.h"
-
+//! [1]
Window::Window()
{
FlowLayout *flowLayout = new FlowLayout;
@@ -57,3 +57,4 @@ Window::Window()
setWindowTitle(tr("Flow Layout"));
}
+//! [1] \ No newline at end of file
diff --git a/examples/layouts/flowlayout/window.h b/examples/layouts/flowlayout/window.h
index ffd60af..77f8b6f 100644
--- a/examples/layouts/flowlayout/window.h
+++ b/examples/layouts/flowlayout/window.h
@@ -47,7 +47,7 @@
QT_BEGIN_NAMESPACE
class QLabel;
QT_END_NAMESPACE
-
+//! [0]
class Window : public QWidget
{
Q_OBJECT
@@ -55,5 +55,6 @@ class Window : public QWidget
public:
Window();
};
+//! [0]
#endif
diff --git a/examples/network/googlesuggest/googlesuggest.cpp b/examples/network/googlesuggest/googlesuggest.cpp
new file mode 100644
index 0000000..285a018
--- /dev/null
+++ b/examples/network/googlesuggest/googlesuggest.cpp
@@ -0,0 +1,223 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** 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.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtCore>
+#include <QtGui>
+#include <QtNetwork>
+
+#include "googlesuggest.h"
+
+#define GSUGGEST_URL "http://google.com/complete/search?output=toolbar&q=%1"
+
+GSuggestCompletion::GSuggestCompletion(QLineEdit *parent): QObject(parent), editor(parent)
+{
+ popup = new QTreeWidget;
+ popup->setColumnCount(2);
+ popup->setUniformRowHeights(true);
+ popup->setRootIsDecorated(false);
+ popup->setEditTriggers(QTreeWidget::NoEditTriggers);
+ popup->setSelectionBehavior(QTreeWidget::SelectRows);
+ popup->setFrameStyle(QFrame::Box | QFrame::Plain);
+ popup->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
+
+ popup->header()->hide();
+ popup->installEventFilter(this);
+ popup->setMouseTracking(true);
+
+ connect(popup, SIGNAL(itemClicked(QTreeWidgetItem*, int)),
+ SLOT(doneCompletion()));
+
+ popup->setWindowFlags(Qt::Popup);
+ popup->setFocusPolicy(Qt::NoFocus);
+ popup->setFocusProxy(parent);
+
+ timer = new QTimer(this);
+ timer->setSingleShot(true);
+ timer->setInterval(500);
+ connect(timer, SIGNAL(timeout()), SLOT(autoSuggest()));
+ connect(editor, SIGNAL(textEdited(QString)), timer, SLOT(start()));
+
+ connect(&networkManager, SIGNAL(finished(QNetworkReply*)),
+ this, SLOT(handleNetworkData(QNetworkReply*)));
+
+}
+
+GSuggestCompletion::~GSuggestCompletion()
+{
+ delete popup;
+}
+
+bool GSuggestCompletion::eventFilter(QObject *obj, QEvent *ev)
+{
+ if (obj != popup)
+ return false;
+
+ if (ev->type() == QEvent::MouseButtonPress) {
+ popup->hide();
+ editor->setFocus();
+ return true;
+ }
+
+ if (ev->type() == QEvent::KeyPress) {
+
+ bool consumed = false;
+ int key = static_cast<QKeyEvent*>(ev)->key();
+ switch (key) {
+ case Qt::Key_Enter:
+ case Qt::Key_Return:
+ doneCompletion();
+ consumed = true;
+
+ case Qt::Key_Escape:
+ editor->setFocus();
+ popup->hide();
+ consumed = true;
+
+ case Qt::Key_Up:
+ case Qt::Key_Down:
+ case Qt::Key_Home:
+ case Qt::Key_End:
+ case Qt::Key_PageUp:
+ case Qt::Key_PageDown:
+ break;
+
+ default:
+ editor->setFocus();
+ editor->event(ev);
+ popup->hide();
+ break;
+ }
+
+ return consumed;
+ }
+
+ return false;
+}
+
+void GSuggestCompletion::showCompletion(const QStringList &choices, const QStringList &hits)
+{
+
+ if (choices.isEmpty() || choices.count() != hits.count())
+ return;
+
+ const QPalette &pal = editor->palette();
+ QColor color = pal.color(QPalette::Disabled, QPalette::WindowText);
+
+ popup->setUpdatesEnabled(false);
+ popup->clear();
+ for (int i = 0; i < choices.count(); ++i) {
+ QTreeWidgetItem * item;
+ item = new QTreeWidgetItem(popup);
+ item->setText(0, choices[i]);
+ item->setText(1, hits[i]);
+ item->setTextAlignment(1, Qt::AlignRight);
+ item->setTextColor(1, color);
+ }
+ popup->setCurrentItem(popup->topLevelItem(0));
+ popup->resizeColumnToContents(0);
+ popup->resizeColumnToContents(1);
+ popup->adjustSize();
+ popup->setUpdatesEnabled(true);
+
+ int h = popup->sizeHintForRow(0) * qMin(7, choices.count()) + 3;
+ popup->resize(popup->width(), h);
+
+ popup->move(editor->mapToGlobal(QPoint(0, editor->height())));
+ popup->setFocus();
+ popup->show();
+}
+
+void GSuggestCompletion::doneCompletion()
+{
+ timer->stop();
+ popup->hide();
+ editor->setFocus();
+ QTreeWidgetItem *item = popup->currentItem();
+ if (item) {
+ editor->setText(item->text(0));
+ QKeyEvent *e;
+ e = new QKeyEvent(QEvent::KeyPress, Qt::Key_Enter, Qt::NoModifier);
+ QApplication::postEvent(editor, e);
+ e = new QKeyEvent(QEvent::KeyRelease, Qt::Key_Enter, Qt::NoModifier);
+ QApplication::postEvent(editor, e);
+ }
+}
+
+void GSuggestCompletion::preventSuggest()
+{
+ timer->stop();
+}
+
+void GSuggestCompletion::autoSuggest()
+{
+ QString str = editor->text();
+ QString url = QString(GSUGGEST_URL).arg(str);
+ networkManager.get(QNetworkRequest(QString(url)));
+}
+
+void GSuggestCompletion::handleNetworkData(QNetworkReply *networkReply)
+{
+ QUrl url = networkReply->url();
+ if (!networkReply->error()) {
+ QStringList choices;
+ QStringList hits;
+
+ QString response(networkReply->readAll());
+ QXmlStreamReader xml(response);
+ while (!xml.atEnd()) {
+ xml.readNext();
+ if (xml.tokenType() == QXmlStreamReader::StartElement)
+ if (xml.name() == "suggestion") {
+ QStringRef str = xml.attributes().value("data");
+ choices << str.toString();
+ }
+ if (xml.tokenType() == QXmlStreamReader::StartElement)
+ if (xml.name() == "num_queries") {
+ QStringRef str = xml.attributes().value("int");
+ hits << str.toString();
+ }
+ }
+
+ showCompletion(choices, hits);
+ }
+
+ networkReply->deleteLater();
+}
diff --git a/util/install/mac/unpackdlgimpl.h b/examples/network/googlesuggest/googlesuggest.h
index 11585d7..0267709 100644
--- a/util/install/mac/unpackdlgimpl.h
+++ b/examples/network/googlesuggest/googlesuggest.h
@@ -3,7 +3,7 @@
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
** Contact: Qt Software Information (qt-info@nokia.com)
**
-** This file is part of the utils of the Qt Toolkit.
+** This file is part of the examples of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL$
** No Commercial Usage
@@ -38,26 +38,43 @@
** $QT_END_LICENSE$
**
****************************************************************************/
-#ifndef UNPACKDLGIMPL_H
-#define UNPACKDLGIMPL_H
-#include "unpackdlg.h"
+#ifndef GOOGLESUGGEST_H
+#define GOOGLESUGGEST_H
-class UnpackDlgImpl : public UnpackDlg
+#include <QObject>
+#include <QNetworkAccessManager>
+
+QT_BEGIN_NAMESPACE
+class QLineEdit;
+class QNetworkReply;
+class QTimer;
+class QTreeWidget;
+QT_END_NAMESPACE
+
+class GSuggestCompletion : public QObject
{
- Q_OBJECT;
+ Q_OBJECT
+
public:
- UnpackDlgImpl( QString key = QString(),
- QWidget* pParent = NULL, const char* pName = NULL, WindowFlags f = 0 );
+ GSuggestCompletion(QLineEdit *parent = 0);
+ ~GSuggestCompletion();
+ bool eventFilter(QObject *obj, QEvent *ev);
+ void showCompletion(const QStringList &choices, const QStringList &hits);
- virtual void clickedDestButton();
- virtual void clickedUnpack();
- virtual bool copyFile( const QString& src, const QString& dest );
public slots:
- virtual void updateProgress( const QString& );
- virtual void updateProgress( int );
- virtual void licenseKeyChanged();
- virtual void reject();
+
+ void doneCompletion();
+ void preventSuggest();
+ void autoSuggest();
+ void handleNetworkData(QNetworkReply *networkReply);
+
+private:
+ QLineEdit *editor;
+ QTreeWidget *popup;
+ QTimer *timer;
+ QNetworkAccessManager networkManager;
};
-#endif
+#endif // GOOGLESUGGEST_H
+
diff --git a/examples/network/googlesuggest/googlesuggest.pro b/examples/network/googlesuggest/googlesuggest.pro
new file mode 100644
index 0000000..afd600f
--- /dev/null
+++ b/examples/network/googlesuggest/googlesuggest.pro
@@ -0,0 +1,9 @@
+QT += network
+SOURCES = main.cpp searchbox.cpp googlesuggest.cpp
+HEADERS = searchbox.h googlesuggest.h
+
+# install
+target.path = $$[QT_INSTALL_EXAMPLES]/webkit/googlesuggest
+sources.files = $$SOURCES $$HEADERS *.pro
+sources.path = $$[QT_INSTALL_EXAMPLES]/webkit/googlesuggest
+INSTALLS += target sources
diff --git a/doc/src/snippets/webkit/simple/main.cpp b/examples/network/googlesuggest/main.cpp
index a6a4fc2..f8d9bc5 100644
--- a/doc/src/snippets/webkit/simple/main.cpp
+++ b/examples/network/googlesuggest/main.cpp
@@ -3,7 +3,7 @@
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
** Contact: Qt Software Information (qt-info@nokia.com)
**
-** This file is part of the documentation of the Qt Toolkit.
+** This file is part of the examples of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL$
** No Commercial Usage
@@ -40,17 +40,13 @@
****************************************************************************/
#include <QApplication>
-#include <QUrl>
-#include <QWebView>
-int main(int argc, char *argv[])
+#include "searchbox.h"
+
+int main(int argc, char * argv[])
{
QApplication app(argc, argv);
- QWidget *parent = 0;
-//! [Using QWebView]
- QWebView *view = new QWebView(parent);
- view->load(QUrl("http://qtsoftware.com/"));
- view->show();
-//! [Using QWebView]
+ SearchBox *searchEdit = new SearchBox;
+ searchEdit->show();
return app.exec();
}
diff --git a/util/install/win/dialogs/folderdlgimpl.h b/examples/network/googlesuggest/searchbox.cpp
index 25e13b5..cd7b122 100644
--- a/util/install/win/dialogs/folderdlgimpl.h
+++ b/examples/network/googlesuggest/searchbox.cpp
@@ -3,7 +3,7 @@
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
** Contact: Qt Software Information (qt-info@nokia.com)
**
-** This file is part of the utils of the Qt Toolkit.
+** This file is part of the examples of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL$
** No Commercial Usage
@@ -38,28 +38,32 @@
** $QT_END_LICENSE$
**
****************************************************************************/
-#ifndef FOLDERDLGIMPL_H
-#define FOLDERDLGIMPL_H
-#include "folderdlg.h"
+#include <QDesktopServices>
+#include <QUrl>
-class WinShell;
+#include "searchbox.h"
+#include "googlesuggest.h"
-class FolderDlgImpl : public FolderDlg
+#define GSEARCH_URL "http://www.google.com/search?q=%1"
+
+
+SearchBox::SearchBox(QWidget *parent): QLineEdit(parent)
{
- Q_OBJECT
-public:
- FolderDlgImpl( QWidget* parent = NULL, const char* name = NULL, bool modal = false, WindowFlags f = 0 );
+ completer = new GSuggestCompletion(this);
- void setup( QString, QString );
+ connect(this, SIGNAL(returnPressed()), SLOT(doSearch()));
- virtual void expandedDir( QListViewItem* );
- virtual void collapsedDir( QListViewItem* );
- virtual void selectedDir( QListViewItem* );
+ setWindowTitle("Search with Google");
- QString getFolderName();
-private:
- void ScanFolder( QString folderPath, QListViewItem* parent );
-};
+ adjustSize();
+ resize(400, height());
+ setFocus();
+}
-#endif // FOLDERDLGIMPL_H
+void SearchBox::doSearch()
+{
+ completer->preventSuggest();
+ QString url = QString(GSEARCH_URL).arg(text());
+ QDesktopServices::openUrl(QUrl(url));
+}
diff --git a/util/install/mac/licensedlgimpl.h b/examples/network/googlesuggest/searchbox.h
index 90f8809..75ceffd 100644
--- a/util/install/mac/licensedlgimpl.h
+++ b/examples/network/googlesuggest/searchbox.h
@@ -3,7 +3,7 @@
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
** Contact: Qt Software Information (qt-info@nokia.com)
**
-** This file is part of the utils of the Qt Toolkit.
+** This file is part of the examples of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL$
** No Commercial Usage
@@ -38,18 +38,27 @@
** $QT_END_LICENSE$
**
****************************************************************************/
-#ifndef __LICENSEDLGIMPL_H__
-#define __LICENSEDLGIMPL_H__
-#include "licensedlg.h"
+#ifndef SEARCHBOX_H
+#define SEARCHBOX_H
-class LicenseDialogImpl : public LicenseDialog
+#include <QLineEdit>
+
+class GSuggestCompletion;
+
+class SearchBox: public QLineEdit
{
Q_OBJECT
public:
- LicenseDialogImpl( QWidget* parent = 0 );
- bool showLicense( bool licenseUs );
+ SearchBox(QWidget *parent = 0);
+
+protected slots:
+ void doSearch();
+
+private:
+ GSuggestCompletion *completer;
};
-#endif /* __LICENSEDLGIMPL_H__ */
+
+#endif // SEARCHBOX_H
diff --git a/examples/network/network.pro b/examples/network/network.pro
index 13b3116..8c45745 100644
--- a/examples/network/network.pro
+++ b/examples/network/network.pro
@@ -11,6 +11,7 @@ SUBDIRS = blockingfortuneclient \
http \
loopback \
threadedfortuneserver \
+ googlesuggest \
torrent
contains(QT_CONFIG, openssl):SUBDIRS += securesocketclient
diff --git a/examples/opengl/hellogl_es/hellogl_es.pro b/examples/opengl/hellogl_es/hellogl_es.pro
index 7459456..3168743 100644
--- a/examples/opengl/hellogl_es/hellogl_es.pro
+++ b/examples/opengl/hellogl_es/hellogl_es.pro
@@ -20,11 +20,13 @@ HEADERS += bubble.h
RESOURCES += texture.qrc
QT += opengl
-contains(QT_CONFIG,opengles1) {
- QMAKE_LIBS += "libGLES_CM.lib"
-}
-contains(QT_CONFIG,opengles1cl) {
- QMAKE_LIBS += "libGLES_CL.lib"
+wince*:{
+ contains(QT_CONFIG,opengles1) {
+ QMAKE_LIBS += "libGLES_CM.lib"
+ }
+ contains(QT_CONFIG,opengles1cl) {
+ QMAKE_LIBS += "libGLES_CL.lib"
+ }
}
# install
diff --git a/examples/opengl/hellogl_es2/hellogl_es2.pro b/examples/opengl/hellogl_es2/hellogl_es2.pro
index 92b4224..d5ad4b8 100644
--- a/examples/opengl/hellogl_es2/hellogl_es2.pro
+++ b/examples/opengl/hellogl_es2/hellogl_es2.pro
@@ -25,3 +25,9 @@ target.path = $$[QT_INSTALL_EXAMPLES]/opengl/hellogl_es2
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS hellogl_es2.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/opengl/hellogl_es2
INSTALLS += target sources
+
+
+wince*: {
+ QMAKE_LIBS += "libGLESv2.lib"
+
+} \ No newline at end of file
diff --git a/examples/phonon/README b/examples/phonon/README
index d0f4462..51213cb 100644
--- a/examples/phonon/README
+++ b/examples/phonon/README
@@ -1,4 +1,4 @@
-Qt usese the Phonon cross-platform multimedia framework to play common
+Qt uses the Phonon cross-platform multimedia framework to play common
multimedia formats.
Applications can be written to take advantage of the native multimedia
diff --git a/examples/tutorials/addressbook/README b/examples/tutorials/addressbook/README
index 2d528b5..9b7f908 100644
--- a/examples/tutorials/addressbook/README
+++ b/examples/tutorials/addressbook/README
@@ -4,7 +4,7 @@ Qt documentation, which can be viewed using Qt Assistant or a Web browser.
The tutorial is also available online at
-http://doc.trolltech.com/4.4/tutorial.html
+http://doc.trolltech.com/tutorial.html
All programs corresponding to the chapters in the tutorial should
automatically be built when Qt is compiled, or will be provided as
diff --git a/examples/webkit/fancybrowser/fancybrowser.pro b/examples/webkit/fancybrowser/fancybrowser.pro
new file mode 100644
index 0000000..3de3036
--- /dev/null
+++ b/examples/webkit/fancybrowser/fancybrowser.pro
@@ -0,0 +1,11 @@
+QT += webkit
+HEADERS = mainwindow.h
+SOURCES = main.cpp \
+ mainwindow.cpp
+RESOURCES = jquery.qrc
+
+# install
+target.path = $$[QT_INSTALL_EXAMPLES]/webkit/fancybrowser
+sources.files = $$SOURCES $$HEADERS $$RESOURCES *.pro
+sources.path = $$[QT_INSTALL_EXAMPLES]/webkit/fancybrowser
+INSTALLS += target sources
diff --git a/examples/webkit/fancybrowser/jquery.min.js b/examples/webkit/fancybrowser/jquery.min.js
new file mode 100644
index 0000000..b1ae21d
--- /dev/null
+++ b/examples/webkit/fancybrowser/jquery.min.js
@@ -0,0 +1,19 @@
+/*
+ * jQuery JavaScript Library v1.3.2
+ * http://jquery.com/
+ *
+ * Copyright (c) 2009 John Resig
+ * Dual licensed under the MIT and GPL licenses.
+ * http://docs.jquery.com/License
+ *
+ * Date: 2009-02-19 17:34:21 -0500 (Thu, 19 Feb 2009)
+ * Revision: 6246
+ */
+(function(){var l=this,g,y=l.jQuery,p=l.$,o=l.jQuery=l.$=function(E,F){return new o.fn.init(E,F)},D=/^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/,f=/^.[^:#\[\.,]*$/;o.fn=o.prototype={init:function(E,H){E=E||document;if(E.nodeType){this[0]=E;this.length=1;this.context=E;return this}if(typeof E==="string"){var G=D.exec(E);if(G&&(G[1]||!H)){if(G[1]){E=o.clean([G[1]],H)}else{var I=document.getElementById(G[3]);if(I&&I.id!=G[3]){return o().find(E)}var F=o(I||[]);F.context=document;F.selector=E;return F}}else{return o(H).find(E)}}else{if(o.isFunction(E)){return o(document).ready(E)}}if(E.selector&&E.context){this.selector=E.selector;this.context=E.context}return this.setArray(o.isArray(E)?E:o.makeArray(E))},selector:"",jquery:"1.3.2",size:function(){return this.length},get:function(E){return E===g?Array.prototype.slice.call(this):this[E]},pushStack:function(F,H,E){var G=o(F);G.prevObject=this;G.context=this.context;if(H==="find"){G.selector=this.selector+(this.selector?" ":"")+E}else{if(H){G.selector=this.selector+"."+H+"("+E+")"}}return G},setArray:function(E){this.length=0;Array.prototype.push.apply(this,E);return this},each:function(F,E){return o.each(this,F,E)},index:function(E){return o.inArray(E&&E.jquery?E[0]:E,this)},attr:function(F,H,G){var E=F;if(typeof F==="string"){if(H===g){return this[0]&&o[G||"attr"](this[0],F)}else{E={};E[F]=H}}return this.each(function(I){for(F in E){o.attr(G?this.style:this,F,o.prop(this,E[F],G,I,F))}})},css:function(E,F){if((E=="width"||E=="height")&&parseFloat(F)<0){F=g}return this.attr(E,F,"curCSS")},text:function(F){if(typeof F!=="object"&&F!=null){return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(F))}var E="";o.each(F||this,function(){o.each(this.childNodes,function(){if(this.nodeType!=8){E+=this.nodeType!=1?this.nodeValue:o.fn.text([this])}})});return E},wrapAll:function(E){if(this[0]){var F=o(E,this[0].ownerDocument).clone();if(this[0].parentNode){F.insertBefore(this[0])}F.map(function(){var G=this;while(G.firstChild){G=G.firstChild}return G}).append(this)}return this},wrapInner:function(E){return this.each(function(){o(this).contents().wrapAll(E)})},wrap:function(E){return this.each(function(){o(this).wrapAll(E)})},append:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.appendChild(E)}})},prepend:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.insertBefore(E,this.firstChild)}})},before:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this)})},after:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this.nextSibling)})},end:function(){return this.prevObject||o([])},push:[].push,sort:[].sort,splice:[].splice,find:function(E){if(this.length===1){var F=this.pushStack([],"find",E);F.length=0;o.find(E,this[0],F);return F}else{return this.pushStack(o.unique(o.map(this,function(G){return o.find(E,G)})),"find",E)}},clone:function(G){var E=this.map(function(){if(!o.support.noCloneEvent&&!o.isXMLDoc(this)){var I=this.outerHTML;if(!I){var J=this.ownerDocument.createElement("div");J.appendChild(this.cloneNode(true));I=J.innerHTML}return o.clean([I.replace(/ jQuery\d+="(?:\d+|null)"/g,"").replace(/^\s*/,"")])[0]}else{return this.cloneNode(true)}});if(G===true){var H=this.find("*").andSelf(),F=0;E.find("*").andSelf().each(function(){if(this.nodeName!==H[F].nodeName){return}var I=o.data(H[F],"events");for(var K in I){for(var J in I[K]){o.event.add(this,K,I[K][J],I[K][J].data)}}F++})}return E},filter:function(E){return this.pushStack(o.isFunction(E)&&o.grep(this,function(G,F){return E.call(G,F)})||o.multiFilter(E,o.grep(this,function(F){return F.nodeType===1})),"filter",E)},closest:function(E){var G=o.expr.match.POS.test(E)?o(E):null,F=0;return this.map(function(){var H=this;while(H&&H.ownerDocument){if(G?G.index(H)>-1:o(H).is(E)){o.data(H,"closest",F);return H}H=H.parentNode;F++}})},not:function(E){if(typeof E==="string"){if(f.test(E)){return this.pushStack(o.multiFilter(E,this,true),"not",E)}else{E=o.multiFilter(E,this)}}var F=E.length&&E[E.length-1]!==g&&!E.nodeType;return this.filter(function(){return F?o.inArray(this,E)<0:this!=E})},add:function(E){return this.pushStack(o.unique(o.merge(this.get(),typeof E==="string"?o(E):o.makeArray(E))))},is:function(E){return !!E&&o.multiFilter(E,this).length>0},hasClass:function(E){return !!E&&this.is("."+E)},val:function(K){if(K===g){var E=this[0];if(E){if(o.nodeName(E,"option")){return(E.attributes.value||{}).specified?E.value:E.text}if(o.nodeName(E,"select")){var I=E.selectedIndex,L=[],M=E.options,H=E.type=="select-one";if(I<0){return null}for(var F=H?I:0,J=H?I+1:M.length;F<J;F++){var G=M[F];if(G.selected){K=o(G).val();if(H){return K}L.push(K)}}return L}return(E.value||"").replace(/\r/g,"")}return g}if(typeof K==="number"){K+=""}return this.each(function(){if(this.nodeType!=1){return}if(o.isArray(K)&&/radio|checkbox/.test(this.type)){this.checked=(o.inArray(this.value,K)>=0||o.inArray(this.name,K)>=0)}else{if(o.nodeName(this,"select")){var N=o.makeArray(K);o("option",this).each(function(){this.selected=(o.inArray(this.value,N)>=0||o.inArray(this.text,N)>=0)});if(!N.length){this.selectedIndex=-1}}else{this.value=K}}})},html:function(E){return E===g?(this[0]?this[0].innerHTML.replace(/ jQuery\d+="(?:\d+|null)"/g,""):null):this.empty().append(E)},replaceWith:function(E){return this.after(E).remove()},eq:function(E){return this.slice(E,+E+1)},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments),"slice",Array.prototype.slice.call(arguments).join(","))},map:function(E){return this.pushStack(o.map(this,function(G,F){return E.call(G,F,G)}))},andSelf:function(){return this.add(this.prevObject)},domManip:function(J,M,L){if(this[0]){var I=(this[0].ownerDocument||this[0]).createDocumentFragment(),F=o.clean(J,(this[0].ownerDocument||this[0]),I),H=I.firstChild;if(H){for(var G=0,E=this.length;G<E;G++){L.call(K(this[G],H),this.length>1||G>0?I.cloneNode(true):I)}}if(F){o.each(F,z)}}return this;function K(N,O){return M&&o.nodeName(N,"table")&&o.nodeName(O,"tr")?(N.getElementsByTagName("tbody")[0]||N.appendChild(N.ownerDocument.createElement("tbody"))):N}}};o.fn.init.prototype=o.fn;function z(E,F){if(F.src){o.ajax({url:F.src,async:false,dataType:"script"})}else{o.globalEval(F.text||F.textContent||F.innerHTML||"")}if(F.parentNode){F.parentNode.removeChild(F)}}function e(){return +new Date}o.extend=o.fn.extend=function(){var J=arguments[0]||{},H=1,I=arguments.length,E=false,G;if(typeof J==="boolean"){E=J;J=arguments[1]||{};H=2}if(typeof J!=="object"&&!o.isFunction(J)){J={}}if(I==H){J=this;--H}for(;H<I;H++){if((G=arguments[H])!=null){for(var F in G){var K=J[F],L=G[F];if(J===L){continue}if(E&&L&&typeof L==="object"&&!L.nodeType){J[F]=o.extend(E,K||(L.length!=null?[]:{}),L)}else{if(L!==g){J[F]=L}}}}}return J};var b=/z-?index|font-?weight|opacity|zoom|line-?height/i,q=document.defaultView||{},s=Object.prototype.toString;o.extend({noConflict:function(E){l.$=p;if(E){l.jQuery=y}return o},isFunction:function(E){return s.call(E)==="[object Function]"},isArray:function(E){return s.call(E)==="[object Array]"},isXMLDoc:function(E){return E.nodeType===9&&E.documentElement.nodeName!=="HTML"||!!E.ownerDocument&&o.isXMLDoc(E.ownerDocument)},globalEval:function(G){if(G&&/\S/.test(G)){var F=document.getElementsByTagName("head")[0]||document.documentElement,E=document.createElement("script");E.type="text/javascript";if(o.support.scriptEval){E.appendChild(document.createTextNode(G))}else{E.text=G}F.insertBefore(E,F.firstChild);F.removeChild(E)}},nodeName:function(F,E){return F.nodeName&&F.nodeName.toUpperCase()==E.toUpperCase()},each:function(G,K,F){var E,H=0,I=G.length;if(F){if(I===g){for(E in G){if(K.apply(G[E],F)===false){break}}}else{for(;H<I;){if(K.apply(G[H++],F)===false){break}}}}else{if(I===g){for(E in G){if(K.call(G[E],E,G[E])===false){break}}}else{for(var J=G[0];H<I&&K.call(J,H,J)!==false;J=G[++H]){}}}return G},prop:function(H,I,G,F,E){if(o.isFunction(I)){I=I.call(H,F)}return typeof I==="number"&&G=="curCSS"&&!b.test(E)?I+"px":I},className:{add:function(E,F){o.each((F||"").split(/\s+/),function(G,H){if(E.nodeType==1&&!o.className.has(E.className,H)){E.className+=(E.className?" ":"")+H}})},remove:function(E,F){if(E.nodeType==1){E.className=F!==g?o.grep(E.className.split(/\s+/),function(G){return !o.className.has(F,G)}).join(" "):""}},has:function(F,E){return F&&o.inArray(E,(F.className||F).toString().split(/\s+/))>-1}},swap:function(H,G,I){var E={};for(var F in G){E[F]=H.style[F];H.style[F]=G[F]}I.call(H);for(var F in G){H.style[F]=E[F]}},css:function(H,F,J,E){if(F=="width"||F=="height"){var L,G={position:"absolute",visibility:"hidden",display:"block"},K=F=="width"?["Left","Right"]:["Top","Bottom"];function I(){L=F=="width"?H.offsetWidth:H.offsetHeight;if(E==="border"){return}o.each(K,function(){if(!E){L-=parseFloat(o.curCSS(H,"padding"+this,true))||0}if(E==="margin"){L+=parseFloat(o.curCSS(H,"margin"+this,true))||0}else{L-=parseFloat(o.curCSS(H,"border"+this+"Width",true))||0}})}if(H.offsetWidth!==0){I()}else{o.swap(H,G,I)}return Math.max(0,Math.round(L))}return o.curCSS(H,F,J)},curCSS:function(I,F,G){var L,E=I.style;if(F=="opacity"&&!o.support.opacity){L=o.attr(E,"opacity");return L==""?"1":L}if(F.match(/float/i)){F=w}if(!G&&E&&E[F]){L=E[F]}else{if(q.getComputedStyle){if(F.match(/float/i)){F="float"}F=F.replace(/([A-Z])/g,"-$1").toLowerCase();var M=q.getComputedStyle(I,null);if(M){L=M.getPropertyValue(F)}if(F=="opacity"&&L==""){L="1"}}else{if(I.currentStyle){var J=F.replace(/\-(\w)/g,function(N,O){return O.toUpperCase()});L=I.currentStyle[F]||I.currentStyle[J];if(!/^\d+(px)?$/i.test(L)&&/^\d/.test(L)){var H=E.left,K=I.runtimeStyle.left;I.runtimeStyle.left=I.currentStyle.left;E.left=L||0;L=E.pixelLeft+"px";E.left=H;I.runtimeStyle.left=K}}}}return L},clean:function(F,K,I){K=K||document;if(typeof K.createElement==="undefined"){K=K.ownerDocument||K[0]&&K[0].ownerDocument||document}if(!I&&F.length===1&&typeof F[0]==="string"){var H=/^<(\w+)\s*\/?>$/.exec(F[0]);if(H){return[K.createElement(H[1])]}}var G=[],E=[],L=K.createElement("div");o.each(F,function(P,S){if(typeof S==="number"){S+=""}if(!S){return}if(typeof S==="string"){S=S.replace(/(<(\w+)[^>]*?)\/>/g,function(U,V,T){return T.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?U:V+"></"+T+">"});var O=S.replace(/^\s+/,"").substring(0,10).toLowerCase();var Q=!O.indexOf("<opt")&&[1,"<select multiple='multiple'>","</select>"]||!O.indexOf("<leg")&&[1,"<fieldset>","</fieldset>"]||O.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"<table>","</table>"]||!O.indexOf("<tr")&&[2,"<table><tbody>","</tbody></table>"]||(!O.indexOf("<td")||!O.indexOf("<th"))&&[3,"<table><tbody><tr>","</tr></tbody></table>"]||!O.indexOf("<col")&&[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"]||!o.support.htmlSerialize&&[1,"div<div>","</div>"]||[0,"",""];L.innerHTML=Q[1]+S+Q[2];while(Q[0]--){L=L.lastChild}if(!o.support.tbody){var R=/<tbody/i.test(S),N=!O.indexOf("<table")&&!R?L.firstChild&&L.firstChild.childNodes:Q[1]=="<table>"&&!R?L.childNodes:[];for(var M=N.length-1;M>=0;--M){if(o.nodeName(N[M],"tbody")&&!N[M].childNodes.length){N[M].parentNode.removeChild(N[M])}}}if(!o.support.leadingWhitespace&&/^\s/.test(S)){L.insertBefore(K.createTextNode(S.match(/^\s*/)[0]),L.firstChild)}S=o.makeArray(L.childNodes)}if(S.nodeType){G.push(S)}else{G=o.merge(G,S)}});if(I){for(var J=0;G[J];J++){if(o.nodeName(G[J],"script")&&(!G[J].type||G[J].type.toLowerCase()==="text/javascript")){E.push(G[J].parentNode?G[J].parentNode.removeChild(G[J]):G[J])}else{if(G[J].nodeType===1){G.splice.apply(G,[J+1,0].concat(o.makeArray(G[J].getElementsByTagName("script"))))}I.appendChild(G[J])}}return E}return G},attr:function(J,G,K){if(!J||J.nodeType==3||J.nodeType==8){return g}var H=!o.isXMLDoc(J),L=K!==g;G=H&&o.props[G]||G;if(J.tagName){var F=/href|src|style/.test(G);if(G=="selected"&&J.parentNode){J.parentNode.selectedIndex}if(G in J&&H&&!F){if(L){if(G=="type"&&o.nodeName(J,"input")&&J.parentNode){throw"type property can't be changed"}J[G]=K}if(o.nodeName(J,"form")&&J.getAttributeNode(G)){return J.getAttributeNode(G).nodeValue}if(G=="tabIndex"){var I=J.getAttributeNode("tabIndex");return I&&I.specified?I.value:J.nodeName.match(/(button|input|object|select|textarea)/i)?0:J.nodeName.match(/^(a|area)$/i)&&J.href?0:g}return J[G]}if(!o.support.style&&H&&G=="style"){return o.attr(J.style,"cssText",K)}if(L){J.setAttribute(G,""+K)}var E=!o.support.hrefNormalized&&H&&F?J.getAttribute(G,2):J.getAttribute(G);return E===null?g:E}if(!o.support.opacity&&G=="opacity"){if(L){J.zoom=1;J.filter=(J.filter||"").replace(/alpha\([^)]*\)/,"")+(parseInt(K)+""=="NaN"?"":"alpha(opacity="+K*100+")")}return J.filter&&J.filter.indexOf("opacity=")>=0?(parseFloat(J.filter.match(/opacity=([^)]*)/)[1])/100)+"":""}G=G.replace(/-([a-z])/ig,function(M,N){return N.toUpperCase()});if(L){J[G]=K}return J[G]},trim:function(E){return(E||"").replace(/^\s+|\s+$/g,"")},makeArray:function(G){var E=[];if(G!=null){var F=G.length;if(F==null||typeof G==="string"||o.isFunction(G)||G.setInterval){E[0]=G}else{while(F){E[--F]=G[F]}}}return E},inArray:function(G,H){for(var E=0,F=H.length;E<F;E++){if(H[E]===G){return E}}return -1},merge:function(H,E){var F=0,G,I=H.length;if(!o.support.getAll){while((G=E[F++])!=null){if(G.nodeType!=8){H[I++]=G}}}else{while((G=E[F++])!=null){H[I++]=G}}return H},unique:function(K){var F=[],E={};try{for(var G=0,H=K.length;G<H;G++){var J=o.data(K[G]);if(!E[J]){E[J]=true;F.push(K[G])}}}catch(I){F=K}return F},grep:function(F,J,E){var G=[];for(var H=0,I=F.length;H<I;H++){if(!E!=!J(F[H],H)){G.push(F[H])}}return G},map:function(E,J){var F=[];for(var G=0,H=E.length;G<H;G++){var I=J(E[G],G);if(I!=null){F[F.length]=I}}return F.concat.apply([],F)}});var C=navigator.userAgent.toLowerCase();o.browser={version:(C.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/)||[0,"0"])[1],safari:/webkit/.test(C),opera:/opera/.test(C),msie:/msie/.test(C)&&!/opera/.test(C),mozilla:/mozilla/.test(C)&&!/(compatible|webkit)/.test(C)};o.each({parent:function(E){return E.parentNode},parents:function(E){return o.dir(E,"parentNode")},next:function(E){return o.nth(E,2,"nextSibling")},prev:function(E){return o.nth(E,2,"previousSibling")},nextAll:function(E){return o.dir(E,"nextSibling")},prevAll:function(E){return o.dir(E,"previousSibling")},siblings:function(E){return o.sibling(E.parentNode.firstChild,E)},children:function(E){return o.sibling(E.firstChild)},contents:function(E){return o.nodeName(E,"iframe")?E.contentDocument||E.contentWindow.document:o.makeArray(E.childNodes)}},function(E,F){o.fn[E]=function(G){var H=o.map(this,F);if(G&&typeof G=="string"){H=o.multiFilter(G,H)}return this.pushStack(o.unique(H),E,G)}});o.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(E,F){o.fn[E]=function(G){var J=[],L=o(G);for(var K=0,H=L.length;K<H;K++){var I=(K>0?this.clone(true):this).get();o.fn[F].apply(o(L[K]),I);J=J.concat(I)}return this.pushStack(J,E,G)}});o.each({removeAttr:function(E){o.attr(this,E,"");if(this.nodeType==1){this.removeAttribute(E)}},addClass:function(E){o.className.add(this,E)},removeClass:function(E){o.className.remove(this,E)},toggleClass:function(F,E){if(typeof E!=="boolean"){E=!o.className.has(this,F)}o.className[E?"add":"remove"](this,F)},remove:function(E){if(!E||o.filter(E,[this]).length){o("*",this).add([this]).each(function(){o.event.remove(this);o.removeData(this)});if(this.parentNode){this.parentNode.removeChild(this)}}},empty:function(){o(this).children().remove();while(this.firstChild){this.removeChild(this.firstChild)}}},function(E,F){o.fn[E]=function(){return this.each(F,arguments)}});function j(E,F){return E[0]&&parseInt(o.curCSS(E[0],F,true),10)||0}var h="jQuery"+e(),v=0,A={};o.extend({cache:{},data:function(F,E,G){F=F==l?A:F;var H=F[h];if(!H){H=F[h]=++v}if(E&&!o.cache[H]){o.cache[H]={}}if(G!==g){o.cache[H][E]=G}return E?o.cache[H][E]:H},removeData:function(F,E){F=F==l?A:F;var H=F[h];if(E){if(o.cache[H]){delete o.cache[H][E];E="";for(E in o.cache[H]){break}if(!E){o.removeData(F)}}}else{try{delete F[h]}catch(G){if(F.removeAttribute){F.removeAttribute(h)}}delete o.cache[H]}},queue:function(F,E,H){if(F){E=(E||"fx")+"queue";var G=o.data(F,E);if(!G||o.isArray(H)){G=o.data(F,E,o.makeArray(H))}else{if(H){G.push(H)}}}return G},dequeue:function(H,G){var E=o.queue(H,G),F=E.shift();if(!G||G==="fx"){F=E[0]}if(F!==g){F.call(H)}}});o.fn.extend({data:function(E,G){var H=E.split(".");H[1]=H[1]?"."+H[1]:"";if(G===g){var F=this.triggerHandler("getData"+H[1]+"!",[H[0]]);if(F===g&&this.length){F=o.data(this[0],E)}return F===g&&H[1]?this.data(H[0]):F}else{return this.trigger("setData"+H[1]+"!",[H[0],G]).each(function(){o.data(this,E,G)})}},removeData:function(E){return this.each(function(){o.removeData(this,E)})},queue:function(E,F){if(typeof E!=="string"){F=E;E="fx"}if(F===g){return o.queue(this[0],E)}return this.each(function(){var G=o.queue(this,E,F);if(E=="fx"&&G.length==1){G[0].call(this)}})},dequeue:function(E){return this.each(function(){o.dequeue(this,E)})}});
+/*
+ * Sizzle CSS Selector Engine - v0.9.3
+ * Copyright 2009, The Dojo Foundation
+ * Released under the MIT, BSD, and GPL Licenses.
+ * More information: http://sizzlejs.com/
+ */
+(function(){var R=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,L=0,H=Object.prototype.toString;var F=function(Y,U,ab,ac){ab=ab||[];U=U||document;if(U.nodeType!==1&&U.nodeType!==9){return[]}if(!Y||typeof Y!=="string"){return ab}var Z=[],W,af,ai,T,ad,V,X=true;R.lastIndex=0;while((W=R.exec(Y))!==null){Z.push(W[1]);if(W[2]){V=RegExp.rightContext;break}}if(Z.length>1&&M.exec(Y)){if(Z.length===2&&I.relative[Z[0]]){af=J(Z[0]+Z[1],U)}else{af=I.relative[Z[0]]?[U]:F(Z.shift(),U);while(Z.length){Y=Z.shift();if(I.relative[Y]){Y+=Z.shift()}af=J(Y,af)}}}else{var ae=ac?{expr:Z.pop(),set:E(ac)}:F.find(Z.pop(),Z.length===1&&U.parentNode?U.parentNode:U,Q(U));af=F.filter(ae.expr,ae.set);if(Z.length>0){ai=E(af)}else{X=false}while(Z.length){var ah=Z.pop(),ag=ah;if(!I.relative[ah]){ah=""}else{ag=Z.pop()}if(ag==null){ag=U}I.relative[ah](ai,ag,Q(U))}}if(!ai){ai=af}if(!ai){throw"Syntax error, unrecognized expression: "+(ah||Y)}if(H.call(ai)==="[object Array]"){if(!X){ab.push.apply(ab,ai)}else{if(U.nodeType===1){for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&(ai[aa]===true||ai[aa].nodeType===1&&K(U,ai[aa]))){ab.push(af[aa])}}}else{for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&ai[aa].nodeType===1){ab.push(af[aa])}}}}}else{E(ai,ab)}if(V){F(V,U,ab,ac);if(G){hasDuplicate=false;ab.sort(G);if(hasDuplicate){for(var aa=1;aa<ab.length;aa++){if(ab[aa]===ab[aa-1]){ab.splice(aa--,1)}}}}}return ab};F.matches=function(T,U){return F(T,null,null,U)};F.find=function(aa,T,ab){var Z,X;if(!aa){return[]}for(var W=0,V=I.order.length;W<V;W++){var Y=I.order[W],X;if((X=I.match[Y].exec(aa))){var U=RegExp.leftContext;if(U.substr(U.length-1)!=="\\"){X[1]=(X[1]||"").replace(/\\/g,"");Z=I.find[Y](X,T,ab);if(Z!=null){aa=aa.replace(I.match[Y],"");break}}}}if(!Z){Z=T.getElementsByTagName("*")}return{set:Z,expr:aa}};F.filter=function(ad,ac,ag,W){var V=ad,ai=[],aa=ac,Y,T,Z=ac&&ac[0]&&Q(ac[0]);while(ad&&ac.length){for(var ab in I.filter){if((Y=I.match[ab].exec(ad))!=null){var U=I.filter[ab],ah,af;T=false;if(aa==ai){ai=[]}if(I.preFilter[ab]){Y=I.preFilter[ab](Y,aa,ag,ai,W,Z);if(!Y){T=ah=true}else{if(Y===true){continue}}}if(Y){for(var X=0;(af=aa[X])!=null;X++){if(af){ah=U(af,Y,X,aa);var ae=W^!!ah;if(ag&&ah!=null){if(ae){T=true}else{aa[X]=false}}else{if(ae){ai.push(af);T=true}}}}}if(ah!==g){if(!ag){aa=ai}ad=ad.replace(I.match[ab],"");if(!T){return[]}break}}}if(ad==V){if(T==null){throw"Syntax error, unrecognized expression: "+ad}else{break}}V=ad}return aa};var I=F.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF_-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF_-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*_-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF_-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(T){return T.getAttribute("href")}},relative:{"+":function(aa,T,Z){var X=typeof T==="string",ab=X&&!/\W/.test(T),Y=X&&!ab;if(ab&&!Z){T=T.toUpperCase()}for(var W=0,V=aa.length,U;W<V;W++){if((U=aa[W])){while((U=U.previousSibling)&&U.nodeType!==1){}aa[W]=Y||U&&U.nodeName===T?U||false:U===T}}if(Y){F.filter(T,aa,true)}},">":function(Z,U,aa){var X=typeof U==="string";if(X&&!/\W/.test(U)){U=aa?U:U.toUpperCase();for(var V=0,T=Z.length;V<T;V++){var Y=Z[V];if(Y){var W=Y.parentNode;Z[V]=W.nodeName===U?W:false}}}else{for(var V=0,T=Z.length;V<T;V++){var Y=Z[V];if(Y){Z[V]=X?Y.parentNode:Y.parentNode===U}}if(X){F.filter(U,Z,true)}}},"":function(W,U,Y){var V=L++,T=S;if(!U.match(/\W/)){var X=U=Y?U:U.toUpperCase();T=P}T("parentNode",U,V,W,X,Y)},"~":function(W,U,Y){var V=L++,T=S;if(typeof U==="string"&&!U.match(/\W/)){var X=U=Y?U:U.toUpperCase();T=P}T("previousSibling",U,V,W,X,Y)}},find:{ID:function(U,V,W){if(typeof V.getElementById!=="undefined"&&!W){var T=V.getElementById(U[1]);return T?[T]:[]}},NAME:function(V,Y,Z){if(typeof Y.getElementsByName!=="undefined"){var U=[],X=Y.getElementsByName(V[1]);for(var W=0,T=X.length;W<T;W++){if(X[W].getAttribute("name")===V[1]){U.push(X[W])}}return U.length===0?null:U}},TAG:function(T,U){return U.getElementsByTagName(T[1])}},preFilter:{CLASS:function(W,U,V,T,Z,aa){W=" "+W[1].replace(/\\/g,"")+" ";if(aa){return W}for(var X=0,Y;(Y=U[X])!=null;X++){if(Y){if(Z^(Y.className&&(" "+Y.className+" ").indexOf(W)>=0)){if(!V){T.push(Y)}}else{if(V){U[X]=false}}}}return false},ID:function(T){return T[1].replace(/\\/g,"")},TAG:function(U,T){for(var V=0;T[V]===false;V++){}return T[V]&&Q(T[V])?U[1]:U[1].toUpperCase()},CHILD:function(T){if(T[1]=="nth"){var U=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(T[2]=="even"&&"2n"||T[2]=="odd"&&"2n+1"||!/\D/.test(T[2])&&"0n+"+T[2]||T[2]);T[2]=(U[1]+(U[2]||1))-0;T[3]=U[3]-0}T[0]=L++;return T},ATTR:function(X,U,V,T,Y,Z){var W=X[1].replace(/\\/g,"");if(!Z&&I.attrMap[W]){X[1]=I.attrMap[W]}if(X[2]==="~="){X[4]=" "+X[4]+" "}return X},PSEUDO:function(X,U,V,T,Y){if(X[1]==="not"){if(X[3].match(R).length>1||/^\w/.test(X[3])){X[3]=F(X[3],null,null,U)}else{var W=F.filter(X[3],U,V,true^Y);if(!V){T.push.apply(T,W)}return false}}else{if(I.match.POS.test(X[0])||I.match.CHILD.test(X[0])){return true}}return X},POS:function(T){T.unshift(true);return T}},filters:{enabled:function(T){return T.disabled===false&&T.type!=="hidden"},disabled:function(T){return T.disabled===true},checked:function(T){return T.checked===true},selected:function(T){T.parentNode.selectedIndex;return T.selected===true},parent:function(T){return !!T.firstChild},empty:function(T){return !T.firstChild},has:function(V,U,T){return !!F(T[3],V).length},header:function(T){return/h\d/i.test(T.nodeName)},text:function(T){return"text"===T.type},radio:function(T){return"radio"===T.type},checkbox:function(T){return"checkbox"===T.type},file:function(T){return"file"===T.type},password:function(T){return"password"===T.type},submit:function(T){return"submit"===T.type},image:function(T){return"image"===T.type},reset:function(T){return"reset"===T.type},button:function(T){return"button"===T.type||T.nodeName.toUpperCase()==="BUTTON"},input:function(T){return/input|select|textarea|button/i.test(T.nodeName)}},setFilters:{first:function(U,T){return T===0},last:function(V,U,T,W){return U===W.length-1},even:function(U,T){return T%2===0},odd:function(U,T){return T%2===1},lt:function(V,U,T){return U<T[3]-0},gt:function(V,U,T){return U>T[3]-0},nth:function(V,U,T){return T[3]-0==U},eq:function(V,U,T){return T[3]-0==U}},filter:{PSEUDO:function(Z,V,W,aa){var U=V[1],X=I.filters[U];if(X){return X(Z,W,V,aa)}else{if(U==="contains"){return(Z.textContent||Z.innerText||"").indexOf(V[3])>=0}else{if(U==="not"){var Y=V[3];for(var W=0,T=Y.length;W<T;W++){if(Y[W]===Z){return false}}return true}}}},CHILD:function(T,W){var Z=W[1],U=T;switch(Z){case"only":case"first":while(U=U.previousSibling){if(U.nodeType===1){return false}}if(Z=="first"){return true}U=T;case"last":while(U=U.nextSibling){if(U.nodeType===1){return false}}return true;case"nth":var V=W[2],ac=W[3];if(V==1&&ac==0){return true}var Y=W[0],ab=T.parentNode;if(ab&&(ab.sizcache!==Y||!T.nodeIndex)){var X=0;for(U=ab.firstChild;U;U=U.nextSibling){if(U.nodeType===1){U.nodeIndex=++X}}ab.sizcache=Y}var aa=T.nodeIndex-ac;if(V==0){return aa==0}else{return(aa%V==0&&aa/V>=0)}}},ID:function(U,T){return U.nodeType===1&&U.getAttribute("id")===T},TAG:function(U,T){return(T==="*"&&U.nodeType===1)||U.nodeName===T},CLASS:function(U,T){return(" "+(U.className||U.getAttribute("class"))+" ").indexOf(T)>-1},ATTR:function(Y,W){var V=W[1],T=I.attrHandle[V]?I.attrHandle[V](Y):Y[V]!=null?Y[V]:Y.getAttribute(V),Z=T+"",X=W[2],U=W[4];return T==null?X==="!=":X==="="?Z===U:X==="*="?Z.indexOf(U)>=0:X==="~="?(" "+Z+" ").indexOf(U)>=0:!U?Z&&T!==false:X==="!="?Z!=U:X==="^="?Z.indexOf(U)===0:X==="$="?Z.substr(Z.length-U.length)===U:X==="|="?Z===U||Z.substr(0,U.length+1)===U+"-":false},POS:function(X,U,V,Y){var T=U[2],W=I.setFilters[T];if(W){return W(X,V,U,Y)}}}};var M=I.match.POS;for(var O in I.match){I.match[O]=RegExp(I.match[O].source+/(?![^\[]*\])(?![^\(]*\))/.source)}var E=function(U,T){U=Array.prototype.slice.call(U);if(T){T.push.apply(T,U);return T}return U};try{Array.prototype.slice.call(document.documentElement.childNodes)}catch(N){E=function(X,W){var U=W||[];if(H.call(X)==="[object Array]"){Array.prototype.push.apply(U,X)}else{if(typeof X.length==="number"){for(var V=0,T=X.length;V<T;V++){U.push(X[V])}}else{for(var V=0;X[V];V++){U.push(X[V])}}}return U}}var G;if(document.documentElement.compareDocumentPosition){G=function(U,T){var V=U.compareDocumentPosition(T)&4?-1:U===T?0:1;if(V===0){hasDuplicate=true}return V}}else{if("sourceIndex" in document.documentElement){G=function(U,T){var V=U.sourceIndex-T.sourceIndex;if(V===0){hasDuplicate=true}return V}}else{if(document.createRange){G=function(W,U){var V=W.ownerDocument.createRange(),T=U.ownerDocument.createRange();V.selectNode(W);V.collapse(true);T.selectNode(U);T.collapse(true);var X=V.compareBoundaryPoints(Range.START_TO_END,T);if(X===0){hasDuplicate=true}return X}}}}(function(){var U=document.createElement("form"),V="script"+(new Date).getTime();U.innerHTML="<input name='"+V+"'/>";var T=document.documentElement;T.insertBefore(U,T.firstChild);if(!!document.getElementById(V)){I.find.ID=function(X,Y,Z){if(typeof Y.getElementById!=="undefined"&&!Z){var W=Y.getElementById(X[1]);return W?W.id===X[1]||typeof W.getAttributeNode!=="undefined"&&W.getAttributeNode("id").nodeValue===X[1]?[W]:g:[]}};I.filter.ID=function(Y,W){var X=typeof Y.getAttributeNode!=="undefined"&&Y.getAttributeNode("id");return Y.nodeType===1&&X&&X.nodeValue===W}}T.removeChild(U)})();(function(){var T=document.createElement("div");T.appendChild(document.createComment(""));if(T.getElementsByTagName("*").length>0){I.find.TAG=function(U,Y){var X=Y.getElementsByTagName(U[1]);if(U[1]==="*"){var W=[];for(var V=0;X[V];V++){if(X[V].nodeType===1){W.push(X[V])}}X=W}return X}}T.innerHTML="<a href='#'></a>";if(T.firstChild&&typeof T.firstChild.getAttribute!=="undefined"&&T.firstChild.getAttribute("href")!=="#"){I.attrHandle.href=function(U){return U.getAttribute("href",2)}}})();if(document.querySelectorAll){(function(){var T=F,U=document.createElement("div");U.innerHTML="<p class='TEST'></p>";if(U.querySelectorAll&&U.querySelectorAll(".TEST").length===0){return}F=function(Y,X,V,W){X=X||document;if(!W&&X.nodeType===9&&!Q(X)){try{return E(X.querySelectorAll(Y),V)}catch(Z){}}return T(Y,X,V,W)};F.find=T.find;F.filter=T.filter;F.selectors=T.selectors;F.matches=T.matches})()}if(document.getElementsByClassName&&document.documentElement.getElementsByClassName){(function(){var T=document.createElement("div");T.innerHTML="<div class='test e'></div><div class='test'></div>";if(T.getElementsByClassName("e").length===0){return}T.lastChild.className="e";if(T.getElementsByClassName("e").length===1){return}I.order.splice(1,0,"CLASS");I.find.CLASS=function(U,V,W){if(typeof V.getElementsByClassName!=="undefined"&&!W){return V.getElementsByClassName(U[1])}}})()}function P(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W<V;W++){var T=ad[W];if(T){if(ab&&T.nodeType===1){T.sizcache=Y;T.sizset=W}T=T[U];var X=false;while(T){if(T.sizcache===Y){X=ad[T.sizset];break}if(T.nodeType===1&&!ac){T.sizcache=Y;T.sizset=W}if(T.nodeName===Z){X=T;break}T=T[U]}ad[W]=X}}}function S(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W<V;W++){var T=ad[W];if(T){if(ab&&T.nodeType===1){T.sizcache=Y;T.sizset=W}T=T[U];var X=false;while(T){if(T.sizcache===Y){X=ad[T.sizset];break}if(T.nodeType===1){if(!ac){T.sizcache=Y;T.sizset=W}if(typeof Z!=="string"){if(T===Z){X=true;break}}else{if(F.filter(Z,[T]).length>0){X=T;break}}}T=T[U]}ad[W]=X}}}var K=document.compareDocumentPosition?function(U,T){return U.compareDocumentPosition(T)&16}:function(U,T){return U!==T&&(U.contains?U.contains(T):true)};var Q=function(T){return T.nodeType===9&&T.documentElement.nodeName!=="HTML"||!!T.ownerDocument&&Q(T.ownerDocument)};var J=function(T,aa){var W=[],X="",Y,V=aa.nodeType?[aa]:aa;while((Y=I.match.PSEUDO.exec(T))){X+=Y[0];T=T.replace(I.match.PSEUDO,"")}T=I.relative[T]?T+"*":T;for(var Z=0,U=V.length;Z<U;Z++){F(T,V[Z],W)}return F.filter(X,W)};o.find=F;o.filter=F.filter;o.expr=F.selectors;o.expr[":"]=o.expr.filters;F.selectors.filters.hidden=function(T){return T.offsetWidth===0||T.offsetHeight===0};F.selectors.filters.visible=function(T){return T.offsetWidth>0||T.offsetHeight>0};F.selectors.filters.animated=function(T){return o.grep(o.timers,function(U){return T===U.elem}).length};o.multiFilter=function(V,T,U){if(U){V=":not("+V+")"}return F.matches(V,T)};o.dir=function(V,U){var T=[],W=V[U];while(W&&W!=document){if(W.nodeType==1){T.push(W)}W=W[U]}return T};o.nth=function(X,T,V,W){T=T||1;var U=0;for(;X;X=X[V]){if(X.nodeType==1&&++U==T){break}}return X};o.sibling=function(V,U){var T=[];for(;V;V=V.nextSibling){if(V.nodeType==1&&V!=U){T.push(V)}}return T};return;l.Sizzle=F})();o.event={add:function(I,F,H,K){if(I.nodeType==3||I.nodeType==8){return}if(I.setInterval&&I!=l){I=l}if(!H.guid){H.guid=this.guid++}if(K!==g){var G=H;H=this.proxy(G);H.data=K}var E=o.data(I,"events")||o.data(I,"events",{}),J=o.data(I,"handle")||o.data(I,"handle",function(){return typeof o!=="undefined"&&!o.event.triggered?o.event.handle.apply(arguments.callee.elem,arguments):g});J.elem=I;o.each(F.split(/\s+/),function(M,N){var O=N.split(".");N=O.shift();H.type=O.slice().sort().join(".");var L=E[N];if(o.event.specialAll[N]){o.event.specialAll[N].setup.call(I,K,O)}if(!L){L=E[N]={};if(!o.event.special[N]||o.event.special[N].setup.call(I,K,O)===false){if(I.addEventListener){I.addEventListener(N,J,false)}else{if(I.attachEvent){I.attachEvent("on"+N,J)}}}}L[H.guid]=H;o.event.global[N]=true});I=null},guid:1,global:{},remove:function(K,H,J){if(K.nodeType==3||K.nodeType==8){return}var G=o.data(K,"events"),F,E;if(G){if(H===g||(typeof H==="string"&&H.charAt(0)==".")){for(var I in G){this.remove(K,I+(H||""))}}else{if(H.type){J=H.handler;H=H.type}o.each(H.split(/\s+/),function(M,O){var Q=O.split(".");O=Q.shift();var N=RegExp("(^|\\.)"+Q.slice().sort().join(".*\\.")+"(\\.|$)");if(G[O]){if(J){delete G[O][J.guid]}else{for(var P in G[O]){if(N.test(G[O][P].type)){delete G[O][P]}}}if(o.event.specialAll[O]){o.event.specialAll[O].teardown.call(K,Q)}for(F in G[O]){break}if(!F){if(!o.event.special[O]||o.event.special[O].teardown.call(K,Q)===false){if(K.removeEventListener){K.removeEventListener(O,o.data(K,"handle"),false)}else{if(K.detachEvent){K.detachEvent("on"+O,o.data(K,"handle"))}}}F=null;delete G[O]}}})}for(F in G){break}if(!F){var L=o.data(K,"handle");if(L){L.elem=null}o.removeData(K,"events");o.removeData(K,"handle")}}},trigger:function(I,K,H,E){var G=I.type||I;if(!E){I=typeof I==="object"?I[h]?I:o.extend(o.Event(G),I):o.Event(G);if(G.indexOf("!")>=0){I.type=G=G.slice(0,-1);I.exclusive=true}if(!H){I.stopPropagation();if(this.global[G]){o.each(o.cache,function(){if(this.events&&this.events[G]){o.event.trigger(I,K,this.handle.elem)}})}}if(!H||H.nodeType==3||H.nodeType==8){return g}I.result=g;I.target=H;K=o.makeArray(K);K.unshift(I)}I.currentTarget=H;var J=o.data(H,"handle");if(J){J.apply(H,K)}if((!H[G]||(o.nodeName(H,"a")&&G=="click"))&&H["on"+G]&&H["on"+G].apply(H,K)===false){I.result=false}if(!E&&H[G]&&!I.isDefaultPrevented()&&!(o.nodeName(H,"a")&&G=="click")){this.triggered=true;try{H[G]()}catch(L){}}this.triggered=false;if(!I.isPropagationStopped()){var F=H.parentNode||H.ownerDocument;if(F){o.event.trigger(I,K,F,true)}}},handle:function(K){var J,E;K=arguments[0]=o.event.fix(K||l.event);K.currentTarget=this;var L=K.type.split(".");K.type=L.shift();J=!L.length&&!K.exclusive;var I=RegExp("(^|\\.)"+L.slice().sort().join(".*\\.")+"(\\.|$)");E=(o.data(this,"events")||{})[K.type];for(var G in E){var H=E[G];if(J||I.test(H.type)){K.handler=H;K.data=H.data;var F=H.apply(this,arguments);if(F!==g){K.result=F;if(F===false){K.preventDefault();K.stopPropagation()}}if(K.isImmediatePropagationStopped()){break}}}},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(H){if(H[h]){return H}var F=H;H=o.Event(F);for(var G=this.props.length,J;G;){J=this.props[--G];H[J]=F[J]}if(!H.target){H.target=H.srcElement||document}if(H.target.nodeType==3){H.target=H.target.parentNode}if(!H.relatedTarget&&H.fromElement){H.relatedTarget=H.fromElement==H.target?H.toElement:H.fromElement}if(H.pageX==null&&H.clientX!=null){var I=document.documentElement,E=document.body;H.pageX=H.clientX+(I&&I.scrollLeft||E&&E.scrollLeft||0)-(I.clientLeft||0);H.pageY=H.clientY+(I&&I.scrollTop||E&&E.scrollTop||0)-(I.clientTop||0)}if(!H.which&&((H.charCode||H.charCode===0)?H.charCode:H.keyCode)){H.which=H.charCode||H.keyCode}if(!H.metaKey&&H.ctrlKey){H.metaKey=H.ctrlKey}if(!H.which&&H.button){H.which=(H.button&1?1:(H.button&2?3:(H.button&4?2:0)))}return H},proxy:function(F,E){E=E||function(){return F.apply(this,arguments)};E.guid=F.guid=F.guid||E.guid||this.guid++;return E},special:{ready:{setup:B,teardown:function(){}}},specialAll:{live:{setup:function(E,F){o.event.add(this,F[0],c)},teardown:function(G){if(G.length){var E=0,F=RegExp("(^|\\.)"+G[0]+"(\\.|$)");o.each((o.data(this,"events").live||{}),function(){if(F.test(this.type)){E++}});if(E<1){o.event.remove(this,G[0],c)}}}}}};o.Event=function(E){if(!this.preventDefault){return new o.Event(E)}if(E&&E.type){this.originalEvent=E;this.type=E.type}else{this.type=E}this.timeStamp=e();this[h]=true};function k(){return false}function u(){return true}o.Event.prototype={preventDefault:function(){this.isDefaultPrevented=u;var E=this.originalEvent;if(!E){return}if(E.preventDefault){E.preventDefault()}E.returnValue=false},stopPropagation:function(){this.isPropagationStopped=u;var E=this.originalEvent;if(!E){return}if(E.stopPropagation){E.stopPropagation()}E.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=u;this.stopPropagation()},isDefaultPrevented:k,isPropagationStopped:k,isImmediatePropagationStopped:k};var a=function(F){var E=F.relatedTarget;while(E&&E!=this){try{E=E.parentNode}catch(G){E=this}}if(E!=this){F.type=F.data;o.event.handle.apply(this,arguments)}};o.each({mouseover:"mouseenter",mouseout:"mouseleave"},function(F,E){o.event.special[E]={setup:function(){o.event.add(this,F,a,E)},teardown:function(){o.event.remove(this,F,a)}}});o.fn.extend({bind:function(F,G,E){return F=="unload"?this.one(F,G,E):this.each(function(){o.event.add(this,F,E||G,E&&G)})},one:function(G,H,F){var E=o.event.proxy(F||H,function(I){o(this).unbind(I,E);return(F||H).apply(this,arguments)});return this.each(function(){o.event.add(this,G,E,F&&H)})},unbind:function(F,E){return this.each(function(){o.event.remove(this,F,E)})},trigger:function(E,F){return this.each(function(){o.event.trigger(E,F,this)})},triggerHandler:function(E,G){if(this[0]){var F=o.Event(E);F.preventDefault();F.stopPropagation();o.event.trigger(F,G,this[0]);return F.result}},toggle:function(G){var E=arguments,F=1;while(F<E.length){o.event.proxy(G,E[F++])}return this.click(o.event.proxy(G,function(H){this.lastToggle=(this.lastToggle||0)%F;H.preventDefault();return E[this.lastToggle++].apply(this,arguments)||false}))},hover:function(E,F){return this.mouseenter(E).mouseleave(F)},ready:function(E){B();if(o.isReady){E.call(document,o)}else{o.readyList.push(E)}return this},live:function(G,F){var E=o.event.proxy(F);E.guid+=this.selector+G;o(document).bind(i(G,this.selector),this.selector,E);return this},die:function(F,E){o(document).unbind(i(F,this.selector),E?{guid:E.guid+this.selector+F}:null);return this}});function c(H){var E=RegExp("(^|\\.)"+H.type+"(\\.|$)"),G=true,F=[];o.each(o.data(this,"events").live||[],function(I,J){if(E.test(J.type)){var K=o(H.target).closest(J.data)[0];if(K){F.push({elem:K,fn:J})}}});F.sort(function(J,I){return o.data(J.elem,"closest")-o.data(I.elem,"closest")});o.each(F,function(){if(this.fn.call(this.elem,H,this.fn.data)===false){return(G=false)}});return G}function i(F,E){return["live",F,E.replace(/\./g,"`").replace(/ /g,"|")].join(".")}o.extend({isReady:false,readyList:[],ready:function(){if(!o.isReady){o.isReady=true;if(o.readyList){o.each(o.readyList,function(){this.call(document,o)});o.readyList=null}o(document).triggerHandler("ready")}}});var x=false;function B(){if(x){return}x=true;if(document.addEventListener){document.addEventListener("DOMContentLoaded",function(){document.removeEventListener("DOMContentLoaded",arguments.callee,false);o.ready()},false)}else{if(document.attachEvent){document.attachEvent("onreadystatechange",function(){if(document.readyState==="complete"){document.detachEvent("onreadystatechange",arguments.callee);o.ready()}});if(document.documentElement.doScroll&&l==l.top){(function(){if(o.isReady){return}try{document.documentElement.doScroll("left")}catch(E){setTimeout(arguments.callee,0);return}o.ready()})()}}}o.event.add(l,"load",o.ready)}o.each(("blur,focus,load,resize,scroll,unload,click,dblclick,mousedown,mouseup,mousemove,mouseover,mouseout,mouseenter,mouseleave,change,select,submit,keydown,keypress,keyup,error").split(","),function(F,E){o.fn[E]=function(G){return G?this.bind(E,G):this.trigger(E)}});o(l).bind("unload",function(){for(var E in o.cache){if(E!=1&&o.cache[E].handle){o.event.remove(o.cache[E].handle.elem)}}});(function(){o.support={};var F=document.documentElement,G=document.createElement("script"),K=document.createElement("div"),J="script"+(new Date).getTime();K.style.display="none";K.innerHTML=' <link/><table></table><a href="/a" style="color:red;float:left;opacity:.5;">a</a><select><option>text</option></select><object><param/></object>';var H=K.getElementsByTagName("*"),E=K.getElementsByTagName("a")[0];if(!H||!H.length||!E){return}o.support={leadingWhitespace:K.firstChild.nodeType==3,tbody:!K.getElementsByTagName("tbody").length,objectAll:!!K.getElementsByTagName("object")[0].getElementsByTagName("*").length,htmlSerialize:!!K.getElementsByTagName("link").length,style:/red/.test(E.getAttribute("style")),hrefNormalized:E.getAttribute("href")==="/a",opacity:E.style.opacity==="0.5",cssFloat:!!E.style.cssFloat,scriptEval:false,noCloneEvent:true,boxModel:null};G.type="text/javascript";try{G.appendChild(document.createTextNode("window."+J+"=1;"))}catch(I){}F.insertBefore(G,F.firstChild);if(l[J]){o.support.scriptEval=true;delete l[J]}F.removeChild(G);if(K.attachEvent&&K.fireEvent){K.attachEvent("onclick",function(){o.support.noCloneEvent=false;K.detachEvent("onclick",arguments.callee)});K.cloneNode(true).fireEvent("onclick")}o(function(){var L=document.createElement("div");L.style.width=L.style.paddingLeft="1px";document.body.appendChild(L);o.boxModel=o.support.boxModel=L.offsetWidth===2;document.body.removeChild(L).style.display="none"})})();var w=o.support.cssFloat?"cssFloat":"styleFloat";o.props={"for":"htmlFor","class":"className","float":w,cssFloat:w,styleFloat:w,readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",tabindex:"tabIndex"};o.fn.extend({_load:o.fn.load,load:function(G,J,K){if(typeof G!=="string"){return this._load(G)}var I=G.indexOf(" ");if(I>=0){var E=G.slice(I,G.length);G=G.slice(0,I)}var H="GET";if(J){if(o.isFunction(J)){K=J;J=null}else{if(typeof J==="object"){J=o.param(J);H="POST"}}}var F=this;o.ajax({url:G,type:H,dataType:"html",data:J,complete:function(M,L){if(L=="success"||L=="notmodified"){F.html(E?o("<div/>").append(M.responseText.replace(/<script(.|\s)*?\/script>/g,"")).find(E):M.responseText)}if(K){F.each(K,[M.responseText,L,M])}}});return this},serialize:function(){return o.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?o.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password|search/i.test(this.type))}).map(function(E,F){var G=o(this).val();return G==null?null:o.isArray(G)?o.map(G,function(I,H){return{name:F.name,value:I}}):{name:F.name,value:G}}).get()}});o.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(E,F){o.fn[F]=function(G){return this.bind(F,G)}});var r=e();o.extend({get:function(E,G,H,F){if(o.isFunction(G)){H=G;G=null}return o.ajax({type:"GET",url:E,data:G,success:H,dataType:F})},getScript:function(E,F){return o.get(E,null,F,"script")},getJSON:function(E,F,G){return o.get(E,F,G,"json")},post:function(E,G,H,F){if(o.isFunction(G)){H=G;G={}}return o.ajax({type:"POST",url:E,data:G,success:H,dataType:F})},ajaxSetup:function(E){o.extend(o.ajaxSettings,E)},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:function(){return l.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest()},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(M){M=o.extend(true,M,o.extend(true,{},o.ajaxSettings,M));var W,F=/=\?(&|$)/g,R,V,G=M.type.toUpperCase();if(M.data&&M.processData&&typeof M.data!=="string"){M.data=o.param(M.data)}if(M.dataType=="jsonp"){if(G=="GET"){if(!M.url.match(F)){M.url+=(M.url.match(/\?/)?"&":"?")+(M.jsonp||"callback")+"=?"}}else{if(!M.data||!M.data.match(F)){M.data=(M.data?M.data+"&":"")+(M.jsonp||"callback")+"=?"}}M.dataType="json"}if(M.dataType=="json"&&(M.data&&M.data.match(F)||M.url.match(F))){W="jsonp"+r++;if(M.data){M.data=(M.data+"").replace(F,"="+W+"$1")}M.url=M.url.replace(F,"="+W+"$1");M.dataType="script";l[W]=function(X){V=X;I();L();l[W]=g;try{delete l[W]}catch(Y){}if(H){H.removeChild(T)}}}if(M.dataType=="script"&&M.cache==null){M.cache=false}if(M.cache===false&&G=="GET"){var E=e();var U=M.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+E+"$2");M.url=U+((U==M.url)?(M.url.match(/\?/)?"&":"?")+"_="+E:"")}if(M.data&&G=="GET"){M.url+=(M.url.match(/\?/)?"&":"?")+M.data;M.data=null}if(M.global&&!o.active++){o.event.trigger("ajaxStart")}var Q=/^(\w+:)?\/\/([^\/?#]+)/.exec(M.url);if(M.dataType=="script"&&G=="GET"&&Q&&(Q[1]&&Q[1]!=location.protocol||Q[2]!=location.host)){var H=document.getElementsByTagName("head")[0];var T=document.createElement("script");T.src=M.url;if(M.scriptCharset){T.charset=M.scriptCharset}if(!W){var O=false;T.onload=T.onreadystatechange=function(){if(!O&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){O=true;I();L();T.onload=T.onreadystatechange=null;H.removeChild(T)}}}H.appendChild(T);return g}var K=false;var J=M.xhr();if(M.username){J.open(G,M.url,M.async,M.username,M.password)}else{J.open(G,M.url,M.async)}try{if(M.data){J.setRequestHeader("Content-Type",M.contentType)}if(M.ifModified){J.setRequestHeader("If-Modified-Since",o.lastModified[M.url]||"Thu, 01 Jan 1970 00:00:00 GMT")}J.setRequestHeader("X-Requested-With","XMLHttpRequest");J.setRequestHeader("Accept",M.dataType&&M.accepts[M.dataType]?M.accepts[M.dataType]+", */*":M.accepts._default)}catch(S){}if(M.beforeSend&&M.beforeSend(J,M)===false){if(M.global&&!--o.active){o.event.trigger("ajaxStop")}J.abort();return false}if(M.global){o.event.trigger("ajaxSend",[J,M])}var N=function(X){if(J.readyState==0){if(P){clearInterval(P);P=null;if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}}else{if(!K&&J&&(J.readyState==4||X=="timeout")){K=true;if(P){clearInterval(P);P=null}R=X=="timeout"?"timeout":!o.httpSuccess(J)?"error":M.ifModified&&o.httpNotModified(J,M.url)?"notmodified":"success";if(R=="success"){try{V=o.httpData(J,M.dataType,M)}catch(Z){R="parsererror"}}if(R=="success"){var Y;try{Y=J.getResponseHeader("Last-Modified")}catch(Z){}if(M.ifModified&&Y){o.lastModified[M.url]=Y}if(!W){I()}}else{o.handleError(M,J,R)}L();if(X){J.abort()}if(M.async){J=null}}}};if(M.async){var P=setInterval(N,13);if(M.timeout>0){setTimeout(function(){if(J&&!K){N("timeout")}},M.timeout)}}try{J.send(M.data)}catch(S){o.handleError(M,J,null,S)}if(!M.async){N()}function I(){if(M.success){M.success(V,R)}if(M.global){o.event.trigger("ajaxSuccess",[J,M])}}function L(){if(M.complete){M.complete(J,R)}if(M.global){o.event.trigger("ajaxComplete",[J,M])}if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}return J},handleError:function(F,H,E,G){if(F.error){F.error(H,E,G)}if(F.global){o.event.trigger("ajaxError",[H,F,G])}},active:0,httpSuccess:function(F){try{return !F.status&&location.protocol=="file:"||(F.status>=200&&F.status<300)||F.status==304||F.status==1223}catch(E){}return false},httpNotModified:function(G,E){try{var H=G.getResponseHeader("Last-Modified");return G.status==304||H==o.lastModified[E]}catch(F){}return false},httpData:function(J,H,G){var F=J.getResponseHeader("content-type"),E=H=="xml"||!H&&F&&F.indexOf("xml")>=0,I=E?J.responseXML:J.responseText;if(E&&I.documentElement.tagName=="parsererror"){throw"parsererror"}if(G&&G.dataFilter){I=G.dataFilter(I,H)}if(typeof I==="string"){if(H=="script"){o.globalEval(I)}if(H=="json"){I=l["eval"]("("+I+")")}}return I},param:function(E){var G=[];function H(I,J){G[G.length]=encodeURIComponent(I)+"="+encodeURIComponent(J)}if(o.isArray(E)||E.jquery){o.each(E,function(){H(this.name,this.value)})}else{for(var F in E){if(o.isArray(E[F])){o.each(E[F],function(){H(F,this)})}else{H(F,o.isFunction(E[F])?E[F]():E[F])}}}return G.join("&").replace(/%20/g,"+")}});var m={},n,d=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];function t(F,E){var G={};o.each(d.concat.apply([],d.slice(0,E)),function(){G[this]=F});return G}o.fn.extend({show:function(J,L){if(J){return this.animate(t("show",3),J,L)}else{for(var H=0,F=this.length;H<F;H++){var E=o.data(this[H],"olddisplay");this[H].style.display=E||"";if(o.css(this[H],"display")==="none"){var G=this[H].tagName,K;if(m[G]){K=m[G]}else{var I=o("<"+G+" />").appendTo("body");K=I.css("display");if(K==="none"){K="block"}I.remove();m[G]=K}o.data(this[H],"olddisplay",K)}}for(var H=0,F=this.length;H<F;H++){this[H].style.display=o.data(this[H],"olddisplay")||""}return this}},hide:function(H,I){if(H){return this.animate(t("hide",3),H,I)}else{for(var G=0,F=this.length;G<F;G++){var E=o.data(this[G],"olddisplay");if(!E&&E!=="none"){o.data(this[G],"olddisplay",o.css(this[G],"display"))}}for(var G=0,F=this.length;G<F;G++){this[G].style.display="none"}return this}},_toggle:o.fn.toggle,toggle:function(G,F){var E=typeof G==="boolean";return o.isFunction(G)&&o.isFunction(F)?this._toggle.apply(this,arguments):G==null||E?this.each(function(){var H=E?G:o(this).is(":hidden");o(this)[H?"show":"hide"]()}):this.animate(t("toggle",3),G,F)},fadeTo:function(E,G,F){return this.animate({opacity:G},E,F)},animate:function(I,F,H,G){var E=o.speed(F,H,G);return this[E.queue===false?"each":"queue"](function(){var K=o.extend({},E),M,L=this.nodeType==1&&o(this).is(":hidden"),J=this;for(M in I){if(I[M]=="hide"&&L||I[M]=="show"&&!L){return K.complete.call(this)}if((M=="height"||M=="width")&&this.style){K.display=o.css(this,"display");K.overflow=this.style.overflow}}if(K.overflow!=null){this.style.overflow="hidden"}K.curAnim=o.extend({},I);o.each(I,function(O,S){var R=new o.fx(J,K,O);if(/toggle|show|hide/.test(S)){R[S=="toggle"?L?"show":"hide":S](I)}else{var Q=S.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),T=R.cur(true)||0;if(Q){var N=parseFloat(Q[2]),P=Q[3]||"px";if(P!="px"){J.style[O]=(N||1)+P;T=((N||1)/R.cur(true))*T;J.style[O]=T+P}if(Q[1]){N=((Q[1]=="-="?-1:1)*N)+T}R.custom(T,N,P)}else{R.custom(T,S,"")}}});return true})},stop:function(F,E){var G=o.timers;if(F){this.queue([])}this.each(function(){for(var H=G.length-1;H>=0;H--){if(G[H].elem==this){if(E){G[H](true)}G.splice(H,1)}}});if(!E){this.dequeue()}return this}});o.each({slideDown:t("show",1),slideUp:t("hide",1),slideToggle:t("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(E,F){o.fn[E]=function(G,H){return this.animate(F,G,H)}});o.extend({speed:function(G,H,F){var E=typeof G==="object"?G:{complete:F||!F&&H||o.isFunction(G)&&G,duration:G,easing:F&&H||H&&!o.isFunction(H)&&H};E.duration=o.fx.off?0:typeof E.duration==="number"?E.duration:o.fx.speeds[E.duration]||o.fx.speeds._default;E.old=E.complete;E.complete=function(){if(E.queue!==false){o(this).dequeue()}if(o.isFunction(E.old)){E.old.call(this)}};return E},easing:{linear:function(G,H,E,F){return E+F*G},swing:function(G,H,E,F){return((-Math.cos(G*Math.PI)/2)+0.5)*F+E}},timers:[],fx:function(F,E,G){this.options=E;this.elem=F;this.prop=G;if(!E.orig){E.orig={}}}});o.fx.prototype={update:function(){if(this.options.step){this.options.step.call(this.elem,this.now,this)}(o.fx.step[this.prop]||o.fx.step._default)(this);if((this.prop=="height"||this.prop=="width")&&this.elem.style){this.elem.style.display="block"}},cur:function(F){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null)){return this.elem[this.prop]}var E=parseFloat(o.css(this.elem,this.prop,F));return E&&E>-10000?E:parseFloat(o.curCSS(this.elem,this.prop))||0},custom:function(I,H,G){this.startTime=e();this.start=I;this.end=H;this.unit=G||this.unit||"px";this.now=this.start;this.pos=this.state=0;var E=this;function F(J){return E.step(J)}F.elem=this.elem;if(F()&&o.timers.push(F)&&!n){n=setInterval(function(){var K=o.timers;for(var J=0;J<K.length;J++){if(!K[J]()){K.splice(J--,1)}}if(!K.length){clearInterval(n);n=g}},13)}},show:function(){this.options.orig[this.prop]=o.attr(this.elem.style,this.prop);this.options.show=true;this.custom(this.prop=="width"||this.prop=="height"?1:0,this.cur());o(this.elem).show()},hide:function(){this.options.orig[this.prop]=o.attr(this.elem.style,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(H){var G=e();if(H||G>=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var E=true;for(var F in this.options.curAnim){if(this.options.curAnim[F]!==true){E=false}}if(E){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(o.css(this.elem,"display")=="none"){this.elem.style.display="block"}}if(this.options.hide){o(this.elem).hide()}if(this.options.hide||this.options.show){for(var I in this.options.curAnim){o.attr(this.elem.style,I,this.options.orig[I])}}this.options.complete.call(this.elem)}return false}else{var J=G-this.startTime;this.state=J/this.options.duration;this.pos=o.easing[this.options.easing||(o.easing.swing?"swing":"linear")](this.state,J,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update()}return true}};o.extend(o.fx,{speeds:{slow:600,fast:200,_default:400},step:{opacity:function(E){o.attr(E.elem.style,"opacity",E.now)},_default:function(E){if(E.elem.style&&E.elem.style[E.prop]!=null){E.elem.style[E.prop]=E.now+E.unit}else{E.elem[E.prop]=E.now}}}});if(document.documentElement.getBoundingClientRect){o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}var G=this[0].getBoundingClientRect(),J=this[0].ownerDocument,F=J.body,E=J.documentElement,L=E.clientTop||F.clientTop||0,K=E.clientLeft||F.clientLeft||0,I=G.top+(self.pageYOffset||o.boxModel&&E.scrollTop||F.scrollTop)-L,H=G.left+(self.pageXOffset||o.boxModel&&E.scrollLeft||F.scrollLeft)-K;return{top:I,left:H}}}else{o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}o.offset.initialized||o.offset.initialize();var J=this[0],G=J.offsetParent,F=J,O=J.ownerDocument,M,H=O.documentElement,K=O.body,L=O.defaultView,E=L.getComputedStyle(J,null),N=J.offsetTop,I=J.offsetLeft;while((J=J.parentNode)&&J!==K&&J!==H){M=L.getComputedStyle(J,null);N-=J.scrollTop,I-=J.scrollLeft;if(J===G){N+=J.offsetTop,I+=J.offsetLeft;if(o.offset.doesNotAddBorder&&!(o.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(J.tagName))){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}F=G,G=J.offsetParent}if(o.offset.subtractsBorderForOverflowNotVisible&&M.overflow!=="visible"){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}E=M}if(E.position==="relative"||E.position==="static"){N+=K.offsetTop,I+=K.offsetLeft}if(E.position==="fixed"){N+=Math.max(H.scrollTop,K.scrollTop),I+=Math.max(H.scrollLeft,K.scrollLeft)}return{top:N,left:I}}}o.offset={initialize:function(){if(this.initialized){return}var L=document.body,F=document.createElement("div"),H,G,N,I,M,E,J=L.style.marginTop,K='<div style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;"><div></div></div><table style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;" cellpadding="0" cellspacing="0"><tr><td></td></tr></table>';M={position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"};for(E in M){F.style[E]=M[E]}F.innerHTML=K;L.insertBefore(F,L.firstChild);H=F.firstChild,G=H.firstChild,I=H.nextSibling.firstChild.firstChild;this.doesNotAddBorder=(G.offsetTop!==5);this.doesAddBorderForTableAndCells=(I.offsetTop===5);H.style.overflow="hidden",H.style.position="relative";this.subtractsBorderForOverflowNotVisible=(G.offsetTop===-5);L.style.marginTop="1px";this.doesNotIncludeMarginInBodyOffset=(L.offsetTop===0);L.style.marginTop=J;L.removeChild(F);this.initialized=true},bodyOffset:function(E){o.offset.initialized||o.offset.initialize();var G=E.offsetTop,F=E.offsetLeft;if(o.offset.doesNotIncludeMarginInBodyOffset){G+=parseInt(o.curCSS(E,"marginTop",true),10)||0,F+=parseInt(o.curCSS(E,"marginLeft",true),10)||0}return{top:G,left:F}}};o.fn.extend({position:function(){var I=0,H=0,F;if(this[0]){var G=this.offsetParent(),J=this.offset(),E=/^body|html$/i.test(G[0].tagName)?{top:0,left:0}:G.offset();J.top-=j(this,"marginTop");J.left-=j(this,"marginLeft");E.top+=j(G,"borderTopWidth");E.left+=j(G,"borderLeftWidth");F={top:J.top-E.top,left:J.left-E.left}}return F},offsetParent:function(){var E=this[0].offsetParent||document.body;while(E&&(!/^body|html$/i.test(E.tagName)&&o.css(E,"position")=="static")){E=E.offsetParent}return o(E)}});o.each(["Left","Top"],function(F,E){var G="scroll"+E;o.fn[G]=function(H){if(!this[0]){return null}return H!==g?this.each(function(){this==l||this==document?l.scrollTo(!F?H:o(l).scrollLeft(),F?H:o(l).scrollTop()):this[G]=H}):this[0]==l||this[0]==document?self[F?"pageYOffset":"pageXOffset"]||o.boxModel&&document.documentElement[G]||document.body[G]:this[0][G]}});o.each(["Height","Width"],function(I,G){var E=I?"Left":"Top",H=I?"Right":"Bottom",F=G.toLowerCase();o.fn["inner"+G]=function(){return this[0]?o.css(this[0],F,false,"padding"):null};o.fn["outer"+G]=function(K){return this[0]?o.css(this[0],F,false,K?"margin":"border"):null};var J=G.toLowerCase();o.fn[J]=function(K){return this[0]==l?document.compatMode=="CSS1Compat"&&document.documentElement["client"+G]||document.body["client"+G]:this[0]==document?Math.max(document.documentElement["client"+G],document.body["scroll"+G],document.documentElement["scroll"+G],document.body["offset"+G],document.documentElement["offset"+G]):K===g?(this.length?o.css(this[0],J):null):this.css(J,typeof K==="string"?K:K+"px")}})})(); \ No newline at end of file
diff --git a/examples/webkit/fancybrowser/jquery.qrc b/examples/webkit/fancybrowser/jquery.qrc
new file mode 100644
index 0000000..1022d68
--- /dev/null
+++ b/examples/webkit/fancybrowser/jquery.qrc
@@ -0,0 +1,5 @@
+<RCC>
+ <qresource prefix="/" >
+ <file>jquery.min.js</file>
+ </qresource>
+</RCC>
diff --git a/util/install/win/uninstaller/uninstallimpl.h b/examples/webkit/fancybrowser/main.cpp
index b3bff36..5936469 100644
--- a/util/install/win/uninstaller/uninstallimpl.h
+++ b/examples/webkit/fancybrowser/main.cpp
@@ -3,7 +3,7 @@
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
** Contact: Qt Software Information (qt-info@nokia.com)
**
-** This file is part of the utils of the Qt Toolkit.
+** This file is part of the examples of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL$
** No Commercial Usage
@@ -38,17 +38,14 @@
** $QT_END_LICENSE$
**
****************************************************************************/
-#include "uninstall.h"
-class UninstallDlgImpl : public UninstallDlg
+#include <QtGui>
+#include "mainwindow.h"
+
+int main(int argc, char * argv[])
{
- Q_OBJECT
-public:
- UninstallDlgImpl( QWidget* parent = 0, const char* name = 0, bool modal = false, WindowFlags fl = 0 );
- ~UninstallDlgImpl();
-public slots:
- void cleanRegistry();
-private:
- void cleanRegistryHelper( const QString& key );
-
-};
+ QApplication app(argc, argv);
+ MainWindow *browser = new MainWindow;
+ browser->show();
+ return app.exec();
+}
diff --git a/examples/webkit/fancybrowser/mainwindow.cpp b/examples/webkit/fancybrowser/mainwindow.cpp
new file mode 100644
index 0000000..e24f6cf
--- /dev/null
+++ b/examples/webkit/fancybrowser/mainwindow.cpp
@@ -0,0 +1,185 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** 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.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtGui>
+#include <QtWebKit>
+#include "mainwindow.h"
+
+//! [1]
+
+MainWindow::MainWindow()
+{
+ progress = 0;
+
+ QFile file;
+ file.setFileName(":/jquery.min.js");
+ file.open(QIODevice::ReadOnly);
+ jQuery = file.readAll();
+ file.close();
+//! [1]
+
+//! [2]
+ view = new QWebView(this);
+ view->load(QUrl("http://www.google.com/ncr"));
+ connect(view, SIGNAL(loadFinished(bool)), SLOT(adjustLocation()));
+ connect(view, SIGNAL(titleChanged(const QString&)), SLOT(adjustTitle()));
+ connect(view, SIGNAL(loadProgress(int)), SLOT(setProgress(int)));
+ connect(view, SIGNAL(loadFinished(bool)), SLOT(finishLoading(bool)));
+
+ locationEdit = new QLineEdit(this);
+ locationEdit->setSizePolicy(QSizePolicy::Expanding, locationEdit->sizePolicy().verticalPolicy());
+ connect(locationEdit, SIGNAL(returnPressed()), SLOT(changeLocation()));
+
+ QToolBar *toolBar = addToolBar(tr("Navigation"));
+ toolBar->addAction(view->pageAction(QWebPage::Back));
+ toolBar->addAction(view->pageAction(QWebPage::Forward));
+ toolBar->addAction(view->pageAction(QWebPage::Reload));
+ toolBar->addAction(view->pageAction(QWebPage::Stop));
+ toolBar->addWidget(locationEdit);
+//! [2]
+
+//! [3]
+ QMenu *effectMenu = menuBar()->addMenu(tr("&Effect"));
+ effectMenu->addAction("Highlight all links", this, SLOT(highlightAllLinks()));
+
+ QAction *rotateAction = new QAction(this);
+ rotateAction->setIcon(style()->standardIcon(QStyle::SP_FileDialogDetailedView));
+ rotateAction->setCheckable(true);
+ rotateAction->setText(tr("Turn images upside down"));
+ connect(rotateAction, SIGNAL(toggled(bool)), this, SLOT(rotateImages(bool)));
+ effectMenu->addAction(rotateAction);
+
+ QMenu *toolsMenu = menuBar()->addMenu(tr("&Tools"));
+ toolsMenu->addAction(tr("Remove GIF images"), this, SLOT(removeGifImages()));
+ toolsMenu->addAction(tr("Remove all inline frames"), this, SLOT(removeInlineFrames()));
+ toolsMenu->addAction(tr("Remove all object elements"), this, SLOT(removeObjectElements()));
+ toolsMenu->addAction(tr("Remove all embedded elements"), this, SLOT(removeEmbeddedElements()));
+
+ setCentralWidget(view);
+}
+//! [3]
+
+//! [4]
+void MainWindow::adjustLocation()
+{
+ locationEdit->setText(view->url().toString());
+}
+
+void MainWindow::changeLocation()
+{
+ QUrl url = QUrl(locationEdit->text());
+ view->load(url);
+ view->setFocus();
+}
+//! [4]
+
+//! [5]
+void MainWindow::adjustTitle()
+{
+ if (progress <= 0 || progress >= 100)
+ setWindowTitle(view->title());
+ else
+ setWindowTitle(QString("%1 (%2%)").arg(view->title()).arg(progress));
+}
+
+void MainWindow::setProgress(int p)
+{
+ progress = p;
+ adjustTitle();
+}
+//! [5]
+
+//! [6]
+void MainWindow::finishLoading(bool)
+{
+ progress = 100;
+ adjustTitle();
+ view->page()->mainFrame()->evaluateJavaScript(jQuery);
+}
+//! [6]
+
+//! [7]
+void MainWindow::highlightAllLinks()
+{
+ QString code = "$('a').each( function () { $(this).css('background-color', 'yellow') } )";
+ view->page()->mainFrame()->evaluateJavaScript(code);
+}
+//! [7]
+
+//! [8]
+void MainWindow::rotateImages(bool toggle)
+{
+ QString code = "$('img').each( function () { $(this).css('-webkit-transition', '-webkit-transform 2s') } )";
+ view->page()->mainFrame()->evaluateJavaScript(code);
+ if (toggle)
+ code = "$('img').each( function () { $(this).css('-webkit-transform', 'rotate(180deg)') } )";
+ else
+ code = "$('img').each( function () { $(this).css('-webkit-transform', 'rotate(0deg)') } )";
+ view->page()->mainFrame()->evaluateJavaScript(code);
+}
+//! [8]
+
+//! [9]
+void MainWindow::removeGifImages()
+{
+ QString code = "$('[src*=gif]').remove()";
+ view->page()->mainFrame()->evaluateJavaScript(code);
+}
+
+void MainWindow::removeInlineFrames()
+{
+ QString code = "$('iframe').remove()";
+ view->page()->mainFrame()->evaluateJavaScript(code);
+}
+
+void MainWindow::removeObjectElements()
+{
+ QString code = "$('object').remove()";
+ view->page()->mainFrame()->evaluateJavaScript(code);
+}
+
+void MainWindow::removeEmbeddedElements()
+{
+ QString code = "$('embed').remove()";
+ view->page()->mainFrame()->evaluateJavaScript(code);
+}
+//! [9]
+
diff --git a/util/install/win/pages/sidedecorationimpl.h b/examples/webkit/fancybrowser/mainwindow.h
index f39e204..2e1068c 100644
--- a/util/install/win/pages/sidedecorationimpl.h
+++ b/examples/webkit/fancybrowser/mainwindow.h
@@ -3,7 +3,7 @@
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
** Contact: Qt Software Information (qt-info@nokia.com)
**
-** This file is part of the utils of the Qt Toolkit.
+** This file is part of the examples of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL$
** No Commercial Usage
@@ -38,33 +38,41 @@
** $QT_END_LICENSE$
**
****************************************************************************/
-#ifndef SIDEDECORATIONIMPL_H
-#define SIDEDECORATIONIMPL_H
-#include "sidedecoration.h"
-#include "pages.h"
-#include <qpixmap.h>
-#include <qlabel.h>
+#include <QtGui>
-class SideDecorationImpl : public SideDecoration
-{
+QT_BEGIN_NAMESPACE
+class QWebView;
+class QLineEdit;
+QT_END_NAMESPACE
+
+//! [1]
+class MainWindow : public QMainWindow
+{
Q_OBJECT
public:
- SideDecorationImpl( QWidget* parent = 0, const char* name = 0, WindowFlags fl = 0 );
- ~SideDecorationImpl();
+ MainWindow();
+
+protected slots:
-public slots:
- void wizardPages( const QPtrList<Page>& );
- void wizardPageShowed( int );
- void wizardPageFailed( int );
+ void adjustLocation();
+ void changeLocation();
+ void adjustTitle();
+ void setProgress(int p);
+ void finishLoading(bool);
+
+ void highlightAllLinks();
+ void rotateImages(bool toggle);
+ void removeGifImages();
+ void removeInlineFrames();
+ void removeObjectElements();
+ void removeEmbeddedElements();
private:
- QPixmap checkPix;
- QPixmap arrowPix;
- QPixmap crossPix;
- QPtrList<QLabel> bullets;
- int activeBullet;
+ QString jQuery;
+ QWebView *view;
+ QLineEdit *locationEdit;
+ int progress;
+//! [1]
};
-
-#endif // SIDEDECORATIONIMPL_H
diff --git a/examples/webkit/googlechat/form.ui b/examples/webkit/googlechat/form.ui
new file mode 100644
index 0000000..3b9fb82
--- /dev/null
+++ b/examples/webkit/googlechat/form.ui
@@ -0,0 +1,214 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>Form</class>
+ <widget class="QWidget" name="Form">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>286</width>
+ <height>413</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Google Talk Client</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <property name="spacing">
+ <number>0</number>
+ </property>
+ <property name="margin">
+ <number>0</number>
+ </property>
+ <item>
+ <widget class="QStackedWidget" name="stackedWidget">
+ <property name="currentIndex">
+ <number>1</number>
+ </property>
+ <widget class="QWidget" name="page_3">
+ <layout class="QVBoxLayout" name="verticalLayout_4">
+ <item>
+ <spacer name="verticalSpacer_4">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>170</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="QLabel" name="statusLabel">
+ <property name="text">
+ <string>TextLabel</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QProgressBar" name="progressBar">
+ <property name="value">
+ <number>24</number>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="verticalSpacer_5">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>169</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </widget>
+ <widget class="QWidget" name="page">
+ <layout class="QVBoxLayout" name="verticalLayout_2">
+ <item>
+ <spacer name="verticalSpacer_3">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>119</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="QLabel" name="userNameLabel">
+ <property name="text">
+ <string>Google username:</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLineEdit" name="userNameEdit"/>
+ </item>
+ <item>
+ <spacer name="verticalSpacer_2">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeType">
+ <enum>QSizePolicy::Fixed</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>17</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="QLabel" name="passwordLabel">
+ <property name="text">
+ <string>Password:</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLineEdit" name="passwordEdit">
+ <property name="echoMode">
+ <enum>QLineEdit::Password</enum>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="verticalSpacer">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>118</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <item>
+ <spacer name="horizontalSpacer">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="QPushButton" name="loginButton">
+ <property name="text">
+ <string>Login</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="horizontalSpacer_2">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </widget>
+ <widget class="QWidget" name="page_2">
+ <layout class="QVBoxLayout" name="verticalLayout_3">
+ <property name="spacing">
+ <number>0</number>
+ </property>
+ <property name="margin">
+ <number>0</number>
+ </property>
+ <item>
+ <widget class="QWebView" name="webView">
+ <property name="url">
+ <url>
+ <string>about:blank</string>
+ </url>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <customwidgets>
+ <customwidget>
+ <class>QWebView</class>
+ <extends>QWidget</extends>
+ <header>QtWebKit/QWebView</header>
+ </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/examples/webkit/googlechat/googlechat.cpp b/examples/webkit/googlechat/googlechat.cpp
new file mode 100644
index 0000000..9ac2cd2
--- /dev/null
+++ b/examples/webkit/googlechat/googlechat.cpp
@@ -0,0 +1,163 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** 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.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtGui>
+#include <QtWebKit>
+
+#include "googlechat.h"
+
+#define GOOGLECHAT_URL "http://talkgadget.google.com/talkgadget/m"
+
+GoogleChat::GoogleChat(): QWidget() {
+ form.setupUi(this);
+ setFixedSize(320, 480);
+
+ form.userNameEdit->setFocus();
+ connect(form.userNameEdit, SIGNAL(textChanged(QString)), SLOT(adjustLoginButton()));
+ connect(form.userNameEdit, SIGNAL(returnPressed()), SLOT(inputPassword()));
+
+ connect(form.passwordEdit, SIGNAL(textChanged(QString)), SLOT(adjustLoginButton()));
+ connect(form.passwordEdit, SIGNAL(returnPressed()), SLOT(doLogin()));
+
+ form.loginButton->setEnabled(false);
+ connect(form.loginButton, SIGNAL(clicked()), SLOT(doLogin()));
+
+ connect(form.webView, SIGNAL(loadFinished(bool)), SLOT(initialPage(bool)));
+ connect(form.webView, SIGNAL(loadProgress(int)),
+ form.progressBar, SLOT(setValue(int)));
+ form.webView->setUrl((QUrl(GOOGLECHAT_URL)));
+ form.webView->setContextMenuPolicy(Qt::PreventContextMenu);
+
+ showStatus("Wait...");
+}
+
+void GoogleChat::showStatus(const QString &msg) {
+ form.statusLabel->setText(msg);
+ form.stackedWidget->setCurrentIndex(0);
+}
+
+void GoogleChat::showError(const QString &msg) {
+ form.progressBar->hide();
+ showStatus(QString("Error: %1").arg(msg));
+}
+
+QString GoogleChat::evalJS(const QString &js) {
+ QWebFrame *frame = form.webView->page()->mainFrame();
+ return frame->evaluateJavaScript(js).toString();
+}
+
+void GoogleChat::adjustLoginButton() {
+ userName = form.userNameEdit->text();
+ password = form.passwordEdit->text();
+ bool ok = !userName.isEmpty() && !password.isEmpty();
+ form.loginButton->setEnabled(ok);
+}
+
+void GoogleChat::inputPassword() {
+ if (!form.userNameEdit->text().isEmpty())
+ form.passwordEdit->setFocus();
+}
+
+void GoogleChat::doLogin() {
+ userName = form.userNameEdit->text();
+ password = form.passwordEdit->text();
+ bool ok = !userName.isEmpty() && !password.isEmpty();
+ if (!ok)
+ return;
+
+ form.progressBar->setValue(0);
+ form.progressBar->show();
+ connect(form.webView, SIGNAL(loadFinished(bool)), SLOT(loginPage(bool)));
+ connect(form.webView, SIGNAL(loadProgress(int)),
+ form.progressBar, SLOT(setValue(int)));
+ showStatus("Logging in...");
+
+ QString userEmail = userName + "@gmail.com";
+ evalJS(QString("document.getElementById('Email').value = \"%1\";").arg(userEmail));
+ evalJS(QString("document.getElementById('Passwd').value = \"%1\";").arg(password));
+ evalJS("document.getElementById('gaia_loginform').submit();");
+}
+
+void GoogleChat::initialPage(bool ok) {
+ if (ok) {
+ QString s1 = evalJS("document.getElementById('Email').name");
+ QString s2 = evalJS("document.getElementById('Passwd').name");
+ QString s3 = evalJS("document.getElementById('gaia_loginform').id");
+ if (s1 == "Email" && s2 == "Passwd" && s3 == "gaia_loginform") {
+ form.stackedWidget->setCurrentIndex(1);
+ form.webView->disconnect();
+ return;
+ }
+ }
+
+ showError("SERVICE unavailable.");
+}
+
+void GoogleChat::hideElements()
+{
+ evalJS("var e = document.getElementsByClassName('footer-footer')[0]; e.parentElement.removeChild(e)");
+ evalJS("var e = document.getElementsByClassName('title-bar-bg title-bar')[0]; e.parentElement.removeChild(e)");
+ QTimer::singleShot(2000, this, SLOT(hideElements()));
+}
+
+void GoogleChat::loginPage(bool ok) {
+ QString location = form.webView->url().toString();
+ if (!ok) {
+ if (location.indexOf("CheckCookie"))
+ return;
+ showError("Service unavailable");
+ } else {
+ // check for any error message
+ QString c = evalJS("document.getElementsByClassName('errormsg').length");
+ if (c == "0") {
+ form.stackedWidget->setCurrentIndex(2);
+ QTimer::singleShot(500, this, SLOT(hideElements()));
+ return;
+ }
+
+ QString err = "Unknown login failure.";
+ if (c == "1") {
+ err = evalJS("document.getElementsByClassName('errormsg')[0].textContent");
+ err = err.simplified();
+ }
+ showError(err);
+ }
+}
diff --git a/util/install/mac/licensedlgimpl.cpp b/examples/webkit/googlechat/googlechat.h
index ed2998a..c92632c 100644
--- a/util/install/mac/licensedlgimpl.cpp
+++ b/examples/webkit/googlechat/googlechat.h
@@ -3,7 +3,7 @@
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
** Contact: Qt Software Information (qt-info@nokia.com)
**
-** This file is part of the utils of the Qt Toolkit.
+** This file is part of the examples of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL$
** No Commercial Usage
@@ -38,28 +38,34 @@
** $QT_END_LICENSE$
**
****************************************************************************/
-#include "licensedlgimpl.h"
-#include <qfile.h>
-#include <qtextview.h>
-LicenseDialogImpl::LicenseDialogImpl( QWidget *parent )
- : LicenseDialog( parent )
-{
-}
+#include <QWidget>
+
+#include "ui_form.h"
-bool LicenseDialogImpl::showLicense( bool licenseUs )
+class GoogleChat: public QWidget
{
- QFile f;
- QString path = "qt-mac-commercial-3.0.0.app/Contents/Qt/LICENSE";
- if (licenseUs)
- path.append( "-US" );
- f.setName( path );
- if ( !f.open( IO_ReadOnly ) )
- return false;
-
- QTextStream ts( &f );
- licenseText->setText( ts.read() );
- return true;
-}
+ Q_OBJECT
+
+public:
+ GoogleChat();
+
+protected:
+ void showStatus(const QString &msg);
+ void showError(const QString &msg);
+ QString evalJS(const QString &js);
+
+private slots:
+ void adjustLoginButton();
+ void inputPassword();
+ void doLogin();
+ void initialPage(bool ok);
+ void loginPage(bool ok);
+ void hideElements();
+private:
+ Ui::Form form;
+ QString userName;
+ QString password;
+};
diff --git a/examples/webkit/googlechat/googlechat.pro b/examples/webkit/googlechat/googlechat.pro
new file mode 100644
index 0000000..14b7085
--- /dev/null
+++ b/examples/webkit/googlechat/googlechat.pro
@@ -0,0 +1,11 @@
+QT += webkit
+HEADERS = googlechat.h
+SOURCES = main.cpp \
+ googlechat.cpp
+FORMS = form.ui
+
+# install
+target.path = $$[QT_INSTALL_EXAMPLES]/webkit/googlechat
+sources.files = $$SOURCES $$HEADERS $$FORMS *.pro
+sources.path = $$[QT_INSTALL_EXAMPLES]/webkit/googlechat
+INSTALLS += target sources
diff --git a/util/install/win/archive.h b/examples/webkit/googlechat/main.cpp
index d470a27..26feeea 100644
--- a/util/install/win/archive.h
+++ b/examples/webkit/googlechat/main.cpp
@@ -3,7 +3,7 @@
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
** Contact: Qt Software Information (qt-info@nokia.com)
**
-** This file is part of the utils of the Qt Toolkit.
+** This file is part of the examples of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL$
** No Commercial Usage
@@ -38,12 +38,14 @@
** $QT_END_LICENSE$
**
****************************************************************************/
-#ifndef ARCHIVE_H
-#define ARCHIVE_H
-#include <qstring.h>
-#include "resource.h"
+#include <QtGui>
+#include "googlechat.h"
-bool addArchive( const QString &name );
-
-#endif
+int main(int argc, char * argv[])
+{
+ QApplication app(argc, argv);
+ GoogleChat *chat = new GoogleChat;
+ chat->show();
+ return app.exec();
+}
diff --git a/examples/webkit/webkit.pro b/examples/webkit/webkit.pro
index 3777eec..225816a 100644
--- a/examples/webkit/webkit.pro
+++ b/examples/webkit/webkit.pro
@@ -1,6 +1,8 @@
TEMPLATE = subdirs
SUBDIRS += formextractor \
- previewer
+ previewer \
+ fancybrowser \
+ googlechat
# install
target.path = $$[QT_INSTALL_EXAMPLES]/webkit
diff --git a/examples/widgets/movie/movie.pro b/examples/widgets/movie/movie.pro
index b5f0a7a..1c7cbae 100644
--- a/examples/widgets/movie/movie.pro
+++ b/examples/widgets/movie/movie.pro
@@ -4,6 +4,6 @@ SOURCES = main.cpp \
# install
target.path = $$[QT_INSTALL_EXAMPLES]/widgets/movie
-sources.files = $$SOURCES $$HEADERS $$RESOURCES movie.pro movies
+sources.files = $$SOURCES $$HEADERS $$RESOURCES movie.pro animation.mng
sources.path = $$[QT_INSTALL_EXAMPLES]/widgets/movie
INSTALLS += target sources
diff --git a/mkspecs/common/mac-g++.conf b/mkspecs/common/mac-g++.conf
index b764b26..eaae1aa 100644
--- a/mkspecs/common/mac-g++.conf
+++ b/mkspecs/common/mac-g++.conf
@@ -46,10 +46,10 @@ QMAKE_CXXFLAGS_DWARF2 += $$QMAKE_CFLAGS_DWARF2
QMAKE_CXXFLAGS_PRECOMPILE += -x c++-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT}
QMAKE_CXXFLAGS_USE_PRECOMPILE = $$QMAKE_CFLAGS_USE_PRECOMPILE
-QMAKE_LINK = g++
-QMAKE_LINK_SHLIB = g++
-QMAKE_LINK_C = gcc
-QMAKE_LINK_C_SHLIB = gcc
+QMAKE_LINK = $$QMAKE_CXX
+QMAKE_LINK_SHLIB = $$QMAKE_CXX
+QMAKE_LINK_C = $$QMAKE_CC
+QMAKE_LINK_C_SHLIB = $$QMAKE_CC
QMAKE_LFLAGS += -headerpad_max_install_names
QMAKE_LFLAGS_RELEASE +=
QMAKE_LFLAGS_DEBUG +=
diff --git a/mkspecs/features/include_source_dir.prf b/mkspecs/features/include_source_dir.prf
new file mode 100644
index 0000000..8794998
--- /dev/null
+++ b/mkspecs/features/include_source_dir.prf
@@ -0,0 +1 @@
+!equals(_PRO_FILE_PWD_, $$OUT_PWD):INCLUDEPATH *= .
diff --git a/mkspecs/features/moc.prf b/mkspecs/features/moc.prf
index faa9871..60508c8 100644
--- a/mkspecs/features/moc.prf
+++ b/mkspecs/features/moc.prf
@@ -8,30 +8,50 @@ isEmpty(MOC_DIR):MOC_DIR = .
isEmpty(QMAKE_H_MOD_MOC):QMAKE_H_MOD_MOC = moc_
isEmpty(QMAKE_EXT_CPP_MOC):QMAKE_EXT_CPP_MOC = .moc
-# This function on Windows puts the includes into a .inc file which moc will read, if the project
-# has more than 30 includes. We do this to overcome a command-line limit on Win < XP
-# Otherwise the function simply returns the normal command-line for moc
-defineReplace(mocCmd) {
- win32:count($$list($$INCPATH), 40, >) {
- EOC = $$escape_expand(\n\t)
+# On Windows, put the includes into a .inc file which moc will read, if the project
+# has too many includes. We do this to overcome a command-line limit on Win < XP
+INCLUDETEMP=
+WIN_INCLUDETEMP=
+win32:count($$list($$INCPATH), 40, >) {
+ INCLUDETEMP = $$MOC_DIR/mocinclude.tmp
- if(contains(TEMPLATE, "vc.*")|contains(TEMPLATE_PREFIX, "vc")) {
- # the VCPROJ generator will replace the \r\h with the coded \r\n: &#x0d;&#x0a;
- # No other generator understands the \h
- if(win32-msvc.net|win32-msvc2*|wince*msvc*): EOC = $$escape_expand(\r\h)
- else: EOC = $$escape_expand(\\)$$escape_expand(\n\t)
- }
+ # Remove any existing mocinclude.tmp when qmake runs
+ WIN_INCLUDETEMP=$$INCLUDETEMP
+ WIN_INCLUDETEMP~=s,/,\,g
+ system($$QMAKE_DEL_FILE $$WIN_INCLUDETEMP > NUL 2>&1)
+
+ EOC = $$escape_expand(\n\t)
+
+ if(contains(TEMPLATE, "vc.*")|contains(TEMPLATE_PREFIX, "vc")) {
+ # the VCPROJ generator will replace the \r\h with the coded \r\n: &#x0d;&#x0a;
+ # No other generator understands the \h
+ if(win32-msvc.net|win32-msvc2*|wince*msvc*): EOC = $$escape_expand(\r\h)
+ else: EOC = $$escape_expand(\\)$$escape_expand(\n\t)
+ }
+
+ unset(INCFILELIST)
+ RET =
+ for(incfile, $$list($$INCPATH)) {
+ INCFILELIST = -I$$incfile
+ isEmpty(RET): RET += @echo $$INCFILELIST> $$WIN_INCLUDETEMP $$EOC
+ else: RET += @echo $$INCFILELIST>> $$WIN_INCLUDETEMP $$EOC
+ }
+ !isEmpty(INCFILELIST):RET += @echo $$INCFILELIST>> $$WIN_INCLUDETEMP $$EOC
- INCLUDETEMP = mocinclude.tmp
- unset(INCFILELIST)
+ build_pass|isEmpty(BUILDS) {
+ mocinclude.target = $$INCLUDETEMP
+ mocinclude.commands = $$RET
+ QMAKE_EXTRA_TARGETS += mocinclude
+ }
+}
+
+defineReplace(mocCmd) {
+ !isEmpty(WIN_INCLUDETEMP) {
RET =
- for(incfile, $$list($$INCPATH)) {
- INCFILELIST = -I$$incfile
- isEmpty(RET): RET += @echo $$INCFILELIST> $$INCLUDETEMP $$EOC
- else: RET += @echo $$INCFILELIST>> $$INCLUDETEMP $$EOC
+ if(contains(TEMPLATE, "vc.*")|contains(TEMPLATE_PREFIX, "vc")) {
+ RET += $$mocinclude.commands
}
- !isEmpty(INCFILELIST):RET += @echo $$INCFILELIST>> $$INCLUDETEMP $$EOC
- RET += $$QMAKE_MOC $(DEFINES) @$$INCLUDETEMP $$join(QMAKE_COMPILER_DEFINES, " -D", -D) $$1 -o $$2
+ RET += $$QMAKE_MOC $(DEFINES) @$$WIN_INCLUDETEMP $$join(QMAKE_COMPILER_DEFINES, " -D", -D) $$1 -o $$2
return($$RET)
}
return($$QMAKE_MOC $(DEFINES) $(INCPATH) $$join(QMAKE_COMPILER_DEFINES, " -D", -D) $$1 -o $$2)
@@ -45,6 +65,7 @@ moc_header.output = $$MOC_DIR/$${QMAKE_H_MOD_MOC}${QMAKE_FILE_BASE}$${first(QMAK
moc_header.input = HEADERS
moc_header.variable_out = SOURCES
moc_header.name = MOC ${QMAKE_FILE_IN}
+!isEmpty(INCLUDETEMP):moc_header.depends += $$INCLUDETEMP
silent:moc_header.commands = @echo moc ${QMAKE_FILE_IN} && $$moc_header.commands
QMAKE_EXTRA_COMPILERS += moc_header
INCREDIBUILD_XGE += moc_header
@@ -56,12 +77,23 @@ moc_source.commands = ${QMAKE_FUNC_mocCmd}
moc_source.output = $$MOC_DIR/$${QMAKE_CPP_MOD_MOC}${QMAKE_FILE_BASE}$${QMAKE_EXT_CPP_MOC}
moc_source.input = SOURCES OBJECTIVE_SOURCES
moc_source.name = MOC ${QMAKE_FILE_IN}
+!isEmpty(INCLUDETEMP):moc_source.depends += $$INCLUDETEMP
silent:moc_source.commands = @echo moc ${QMAKE_FILE_IN} && $$moc_source.commands
QMAKE_EXTRA_COMPILERS += moc_source
INCREDIBUILD_XGE += moc_source
#make sure we can include these files
-INCLUDEPATH += $$MOC_DIR
+moc_dir_short = $$MOC_DIR
+win32:moc_dir_short ~= s,^.:,/,
+contains(moc_dir_short, ^[/\\\\].*):INCLUDEPATH += $$MOC_DIR
+else:INCLUDEPATH += $$OUT_PWD/$$MOC_DIR
+
+# Backwards compatibility: Make shadow builds with default MOC_DIR work
+# if the user did not add the source dir explicitly.
+equals(MOC_DIR, .) {
+ CONFIG -= include_source_dir
+ CONFIG = include_source_dir $$CONFIG
+}
#auto depend on moc
unix:!no_mocdepend {
diff --git a/mkspecs/features/uic.prf b/mkspecs/features/uic.prf
index 885fad7..d2985f9 100644
--- a/mkspecs/features/uic.prf
+++ b/mkspecs/features/uic.prf
@@ -34,7 +34,19 @@ isEmpty(QMAKE_MOD_UIC):QMAKE_MOD_UIC = ui_
INCREDIBUILD_XGE += uic
}
-INCLUDEPATH += $$UI_HEADERS_DIR
+!isEmpty(FORMS)|!isEmpty(FORMS3) {
+ ui_dir_short = $$UI_HEADERS_DIR
+ win32:ui_dir_short ~= s,^.:,/,
+ contains(ui_dir_short, ^[/\\\\].*):INCLUDEPATH += $$UI_HEADERS_DIR
+ else:INCLUDEPATH += $$OUT_PWD/$$UI_HEADERS_DIR
+}
+
+# Backwards compatibility: Make shadow builds with default UI_DIR work
+# if the user did not add the source dir explicitly.
+equals(UI_DIR, .) {
+ CONFIG -= include_source_dir
+ CONFIG = include_source_dir $$CONFIG
+}
uic3 {
isEmpty(FORMS3) {
diff --git a/mkspecs/features/win32/ltcg.prf b/mkspecs/features/win32/ltcg.prf
new file mode 100644
index 0000000..f6f1299
--- /dev/null
+++ b/mkspecs/features/win32/ltcg.prf
@@ -0,0 +1,5 @@
+CONFIG(release, debug|release) {
+ QMAKE_CFLAGS *= $$QMAKE_CFLAGS_LTCG
+ QMAKE_CXXFLAGS *= $$QMAKE_CXXFLAGS_LTCG
+ QMAKE_LFLAGS *= $$QMAKE_LFLAGS_LTCG
+}
diff --git a/mkspecs/macx-g++/qmake.conf b/mkspecs/macx-g++/qmake.conf
index 64ef801..4355073 100644
--- a/mkspecs/macx-g++/qmake.conf
+++ b/mkspecs/macx-g++/qmake.conf
@@ -12,9 +12,9 @@ CONFIG += qt warn_on release app_bundle incremental global_init_link_order lib
QT += core gui
QMAKE_INCREMENTAL_STYLE = sublib
-include(../common/mac-g++.conf)
-
QMAKE_CC = gcc
QMAKE_CXX = g++
+include(../common/mac-g++.conf)
+
load(qt_config)
diff --git a/mkspecs/macx-g++42/qmake.conf b/mkspecs/macx-g++42/qmake.conf
index e6a3120..06bbdcb 100644
--- a/mkspecs/macx-g++42/qmake.conf
+++ b/mkspecs/macx-g++42/qmake.conf
@@ -12,10 +12,9 @@ CONFIG += qt warn_on release app_bundle incremental global_init_link_order lib
QT += core gui
QMAKE_INCREMENTAL_STYLE = sublib
-include(../common/mac-g++.conf)
-
-
QMAKE_CC = gcc-4.2
QMAKE_CXX = g++-4.2
+include(../common/mac-g++.conf)
+
load(qt_config)
diff --git a/mkspecs/win32-msvc2005/qmake.conf b/mkspecs/win32-msvc2005/qmake.conf
index 00287cb..5ed8e01 100644
--- a/mkspecs/win32-msvc2005/qmake.conf
+++ b/mkspecs/win32-msvc2005/qmake.conf
@@ -19,9 +19,10 @@ QMAKE_YACCFLAGS = -d
QMAKE_CFLAGS = -nologo -Zm200 -Zc:wchar_t-
QMAKE_CFLAGS_WARN_ON = -W3
QMAKE_CFLAGS_WARN_OFF = -W0
-QMAKE_CFLAGS_RELEASE = -O2 -MD -GL
+QMAKE_CFLAGS_RELEASE = -O2 -MD
QMAKE_CFLAGS_DEBUG = -Zi -MDd
QMAKE_CFLAGS_YACC =
+QMAKE_CFLAGS_LTCG = -GL
QMAKE_CXX = $$QMAKE_CC
QMAKE_CXXFLAGS = $$QMAKE_CFLAGS
@@ -30,6 +31,7 @@ QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE
QMAKE_CXXFLAGS_DEBUG = $$QMAKE_CFLAGS_DEBUG
QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC
+QMAKE_CXXFLAGS_LTCG = $$QMAKE_CFLAGS_LTCG
QMAKE_CXXFLAGS_STL_ON = -EHsc
QMAKE_CXXFLAGS_STL_OFF =
QMAKE_CXXFLAGS_RTTI_ON = -GR
@@ -50,11 +52,12 @@ QMAKE_RUN_CXX_IMP_BATCH = $(CXX) -c $(CXXFLAGS) $(INCPATH) -Fo$@ @<<
QMAKE_LINK = link
QMAKE_LFLAGS = /NOLOGO
-QMAKE_LFLAGS_RELEASE = /INCREMENTAL:NO /LTCG
+QMAKE_LFLAGS_RELEASE = /INCREMENTAL:NO
QMAKE_LFLAGS_DEBUG = /DEBUG
QMAKE_LFLAGS_CONSOLE = /SUBSYSTEM:CONSOLE
QMAKE_LFLAGS_WINDOWS = /SUBSYSTEM:WINDOWS \"/MANIFESTDEPENDENCY:type=\'win32\' name=\'Microsoft.Windows.Common-Controls\' version=\'6.0.0.0\' publicKeyToken=\'6595b64144ccf1df\' language=\'*\' processorArchitecture=\'*\'\"
QMAKE_LFLAGS_DLL = /DLL
+QMAKE_LFLAGS_LTCG = /LTCG
QMAKE_LIBS_CORE = kernel32.lib user32.lib shell32.lib uuid.lib ole32.lib advapi32.lib ws2_32.lib
QMAKE_LIBS_GUI = gdi32.lib comdlg32.lib oleaut32.lib imm32.lib winmm.lib winspool.lib ws2_32.lib ole32.lib user32.lib advapi32.lib
diff --git a/mkspecs/win32-msvc2008/qmake.conf b/mkspecs/win32-msvc2008/qmake.conf
index b56b41c..373a36d 100644
--- a/mkspecs/win32-msvc2008/qmake.conf
+++ b/mkspecs/win32-msvc2008/qmake.conf
@@ -19,9 +19,10 @@ QMAKE_YACCFLAGS = -d
QMAKE_CFLAGS = -nologo -Zm200 -Zc:wchar_t-
QMAKE_CFLAGS_WARN_ON = -W3
QMAKE_CFLAGS_WARN_OFF = -W0
-QMAKE_CFLAGS_RELEASE = -O2 -MD -GL
+QMAKE_CFLAGS_RELEASE = -O2 -MD
QMAKE_CFLAGS_DEBUG = -Zi -MDd
QMAKE_CFLAGS_YACC =
+QMAKE_CFLAGS_LTCG = -GL
QMAKE_CXX = $$QMAKE_CC
QMAKE_CXXFLAGS = $$QMAKE_CFLAGS
@@ -30,6 +31,7 @@ QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE
QMAKE_CXXFLAGS_DEBUG = $$QMAKE_CFLAGS_DEBUG
QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC
+QMAKE_CXXFLAGS_LTCG = $$QMAKE_CFLAGS_LTCG
QMAKE_CXXFLAGS_STL_ON = -EHsc
QMAKE_CXXFLAGS_STL_OFF =
QMAKE_CXXFLAGS_RTTI_ON = -GR
@@ -50,11 +52,12 @@ QMAKE_RUN_CXX_IMP_BATCH = $(CXX) -c $(CXXFLAGS) $(INCPATH) -Fo$@ @<<
QMAKE_LINK = link
QMAKE_LFLAGS = /NOLOGO
-QMAKE_LFLAGS_RELEASE = /INCREMENTAL:NO /LTCG
+QMAKE_LFLAGS_RELEASE = /INCREMENTAL:NO
QMAKE_LFLAGS_DEBUG = /DEBUG
QMAKE_LFLAGS_CONSOLE = /SUBSYSTEM:CONSOLE
QMAKE_LFLAGS_WINDOWS = /SUBSYSTEM:WINDOWS \"/MANIFESTDEPENDENCY:type=\'win32\' name=\'Microsoft.Windows.Common-Controls\' version=\'6.0.0.0\' publicKeyToken=\'6595b64144ccf1df\' language=\'*\' processorArchitecture=\'*\'\"
QMAKE_LFLAGS_DLL = /DLL
+QMAKE_LFLAGS_LTCG = /LTCG
QMAKE_LIBS_CORE = kernel32.lib user32.lib shell32.lib uuid.lib ole32.lib advapi32.lib ws2_32.lib
QMAKE_LIBS_GUI = gdi32.lib comdlg32.lib oleaut32.lib imm32.lib winmm.lib winspool.lib ws2_32.lib ole32.lib user32.lib advapi32.lib
diff --git a/mkspecs/wince50standard-mipsii-msvc2008/default_post.prf b/mkspecs/wince50standard-mipsii-msvc2008/default_post.prf
index a232ba3..d423784 100644
--- a/mkspecs/wince50standard-mipsii-msvc2008/default_post.prf
+++ b/mkspecs/wince50standard-mipsii-msvc2008/default_post.prf
@@ -1 +1 @@
-include(../wince50standard-mipsii-msvc2005/qmake.conf)
+include(../wince50standard-mipsii-msvc2005/default_post.prf)
diff --git a/qmake/generators/makefile.cpp b/qmake/generators/makefile.cpp
index d0fbcbe..67e5bfb 100644
--- a/qmake/generators/makefile.cpp
+++ b/qmake/generators/makefile.cpp
@@ -1492,7 +1492,7 @@ MakefileGenerator::replaceExtraCompilerVariables(const QString &orig_var, const
val += project->values(varname);
}
if(val.isEmpty() && var.startsWith(QLatin1String("QMAKE_VAR_FIRST_"))) {
- const QString varname = var.mid(12);
+ const QString varname = var.mid(16);
val += project->first(varname);
}
@@ -2735,16 +2735,9 @@ MakefileGenerator::fileFixify(const QString& file, const QString &out_d, const Q
ret.prepend(pwd);
ret = Option::fixPathToTargetOS(ret, false, canon);
} else { //fix it..
- QString qfile(Option::fixPathToLocalOS(ret, true, canon)), in_dir(in_d), out_dir(out_d);
+ QString out_dir = QDir(Option::output_dir).absoluteFilePath(out_d);
+ QString in_dir = QDir(pwd).absoluteFilePath(in_d);
{
- if(out_dir.isNull() || QDir::isRelativePath(out_dir))
- out_dir.prepend(Option::output_dir + "/");
- else if(out_dir == ".")
- out_dir = pwd;
- if(in_dir.isEmpty() || QDir::isRelativePath(in_dir))
- in_dir.prepend(pwd);
- else if(in_dir == ".")
- in_dir = pwd;
QFileInfo in_fi(fileInfo(in_dir));
if(in_fi.exists())
in_dir = in_fi.canonicalFilePath();
@@ -2753,6 +2746,7 @@ MakefileGenerator::fileFixify(const QString& file, const QString &out_d, const Q
out_dir = out_fi.canonicalFilePath();
}
+ QString qfile(Option::fixPathToLocalOS(ret, true, canon));
QFileInfo qfileinfo(fileInfo(qfile));
if(out_dir != in_dir || !qfileinfo.isRelative()) {
if(qfileinfo.isRelative()) {
diff --git a/qmake/generators/makefile.h b/qmake/generators/makefile.h
index a26a247..cf09a6a 100644
--- a/qmake/generators/makefile.h
+++ b/qmake/generators/makefile.h
@@ -109,7 +109,7 @@ protected:
struct SubTarget
{
QString name;
- QString in_directory, out_directory;
+ QString in_directory, out_directory;
QString profile, target, makefile;
QStringList depends;
};
@@ -183,8 +183,8 @@ protected:
void filterIncludedFiles(const QString &);
virtual void processSources() {
- filterIncludedFiles("SOURCES");
- filterIncludedFiles("GENERATED_SOURCES");
+ filterIncludedFiles("SOURCES");
+ filterIncludedFiles("GENERATED_SOURCES");
}
//for cross-platform dependent directories
diff --git a/qmake/generators/metamakefile.cpp b/qmake/generators/metamakefile.cpp
index f0683a7..3f60791 100644
--- a/qmake/generators/metamakefile.cpp
+++ b/qmake/generators/metamakefile.cpp
@@ -360,7 +360,7 @@ SubdirsMetaMakefileGenerator::init()
}
--recurseDepth;
- Option::output.setFileName(old_output);
+ Option::output.setFileName(old_output);
Option::output_dir = old_output_dir;
qmake_setpwd(oldpwd);
}
diff --git a/qmake/generators/win32/msvc_nmake.cpp b/qmake/generators/win32/msvc_nmake.cpp
index 4b1b66d..b5904cc 100644
--- a/qmake/generators/win32/msvc_nmake.cpp
+++ b/qmake/generators/win32/msvc_nmake.cpp
@@ -244,14 +244,14 @@ void NmakeMakefileGenerator::writeImplicitRulesPart(QTextStream &t)
project->variables().remove("QMAKE_RUN_CC");
QHash<QString, void*> source_directories;
- source_directories.insertMulti(".", (void*)1);
+ source_directories.insert(".", (void*)1);
QString directories[] = { QString("UI_SOURCES_DIR"), QString("UI_DIR"), QString() };
for(int y = 0; !directories[y].isNull(); y++) {
QString dirTemp = project->first(directories[y]);
if (dirTemp.endsWith("\\"))
dirTemp.truncate(dirTemp.length()-1);
if(!dirTemp.isEmpty())
- source_directories.insertMulti(dirTemp, (void*)1);
+ source_directories.insert(dirTemp, (void*)1);
}
QString srcs[] = { QString("SOURCES"), QString("GENERATED_SOURCES"), QString() };
for(int x = 0; !srcs[x].isNull(); x++) {
@@ -262,7 +262,7 @@ void NmakeMakefileGenerator::writeImplicitRulesPart(QTextStream &t)
sep = "/";
QString dir = (*sit).section(sep, 0, -2);
if(!dir.isEmpty() && !source_directories[dir])
- source_directories.insertMulti(dir, (void*)1);
+ source_directories.insert(dir, (void*)1);
}
}
diff --git a/qmake/generators/win32/msvc_vcproj.cpp b/qmake/generators/win32/msvc_vcproj.cpp
index 08159b0..8901289 100644
--- a/qmake/generators/win32/msvc_vcproj.cpp
+++ b/qmake/generators/win32/msvc_vcproj.cpp
@@ -1030,7 +1030,6 @@ void VcprojGenerator::initCompilerTool()
conf.compiler.parseOptions(project->values("QMAKE_CXXFLAGS"));
if(project->isActiveConfig("debug")){
// Debug version
- conf.compiler.parseOptions(project->values("QMAKE_CXXFLAGS"));
conf.compiler.parseOptions(project->values("QMAKE_CXXFLAGS_DEBUG"));
if((projectTarget == Application) || (projectTarget == StaticLib))
conf.compiler.parseOptions(project->values("QMAKE_CXXFLAGS_MT_DBG"));
@@ -1038,7 +1037,6 @@ void VcprojGenerator::initCompilerTool()
conf.compiler.parseOptions(project->values("QMAKE_CXXFLAGS_MT_DLLDBG"));
} else {
// Release version
- conf.compiler.parseOptions(project->values("QMAKE_CXXFLAGS"));
conf.compiler.parseOptions(project->values("QMAKE_CXXFLAGS_RELEASE"));
conf.compiler.PreprocessorDefinitions += "QT_NO_DEBUG";
conf.compiler.PreprocessorDefinitions += "NDEBUG";
diff --git a/qmake/generators/win32/winmakefile.cpp b/qmake/generators/win32/winmakefile.cpp
index 60a27be..87f55cf 100644
--- a/qmake/generators/win32/winmakefile.cpp
+++ b/qmake/generators/win32/winmakefile.cpp
@@ -432,9 +432,21 @@ void Win32MakefileGenerator::processRcFileVar()
writeRcFile = rcFile.readAll() != rcString;
rcFile.close();
}
- if (writeRcFile && rcFile.open(QFile::WriteOnly)) {
- rcFile.write(rcString);
- rcFile.close();
+ if (writeRcFile) {
+ bool ok;
+ ok = rcFile.open(QFile::WriteOnly);
+ if (!ok) {
+ // The file can't be opened... try creating the containing
+ // directory first (needed for clean shadow builds)
+ QDir().mkpath(QFileInfo(rcFile).path());
+ ok = rcFile.open(QFile::WriteOnly);
+ }
+ if (!ok) {
+ ::fprintf(stderr, "Cannot open for writing: %s", rcFile.fileName().toLatin1().constData());
+ ::exit(1);
+ }
+ rcFile.write(rcString);
+ rcFile.close();
}
if (project->values("QMAKE_WRITE_DEFAULT_RC").isEmpty())
project->values("RC_FILE").insert(0, rcFile.fileName());
diff --git a/qmake/generators/xmloutput.cpp b/qmake/generators/xmloutput.cpp
index 68d22e1..d77dd4b 100644
--- a/qmake/generators/xmloutput.cpp
+++ b/qmake/generators/xmloutput.cpp
@@ -277,7 +277,7 @@ void XmlOutput::closeTag()
void XmlOutput::closeTo(const QString &tag)
{
bool cont = true;
- if (!tagStack.contains(tag) && tag != QString()) {
+ if (!tagStack.contains(tag) && !tag.isNull()) {
//warn_msg(WarnLogic, "<%s>: Cannot close to tag <%s>, not on stack", tagStack.last().latin1(), tag.latin1());
qDebug("<%s>: Cannot close to tag <%s>, not on stack", tagStack.last().toLatin1().constData(), tag.toLatin1().constData());
return;
diff --git a/qmake/project.cpp b/qmake/project.cpp
index 8d49788..00bb2f0 100644
--- a/qmake/project.cpp
+++ b/qmake/project.cpp
@@ -57,7 +57,7 @@
#include <unistd.h>
#include <sys/utsname.h>
#elif defined(Q_OS_WIN32)
-#include <Windows.h>
+#include <windows.h>
#endif
#include <stdio.h>
#include <stdlib.h>
@@ -1105,7 +1105,7 @@ QMakeProject::parse(const QString &t, QMap<QString, QStringList> &place, int num
}
}
}
- } else if(!parens && *(d+d_off) == QLatin1Char('}')) {
+ } else if(!parens && *(d+d_off) == QLatin1Char('}')) {
if(start_block) {
--start_block;
} else if(!scope_blocks.count()) {
diff --git a/src/3rdparty/README b/src/3rdparty/README
index 2be1036..ef05674 100644
--- a/src/3rdparty/README
+++ b/src/3rdparty/README
@@ -20,3 +20,8 @@ have been removed:
Some patches are applied from time to time. Recent patches can be
found in the patches subdirectory.
+
+
+The pvr2d.h & wsegl.h in the powervr directory are required for building
+the PowerVR plugin on Qt for Embedded Linux. These headers are for SGX
+based SoCs, but may also work on MBX SoCs.
diff --git a/src/3rdparty/phonon/ds9/mediaobject.cpp b/src/3rdparty/phonon/ds9/mediaobject.cpp
index 93a19b0..1d0b69d 100644
--- a/src/3rdparty/phonon/ds9/mediaobject.cpp
+++ b/src/3rdparty/phonon/ds9/mediaobject.cpp
@@ -519,6 +519,15 @@ namespace Phonon
qSwap(m_graphs[0], m_graphs[1]); //swap the graphs
+ if (currentGraph()->mediaSource().type() != Phonon::MediaSource::Invalid &&
+ catchComError(currentGraph()->renderResult())) {
+ setState(Phonon::ErrorState);
+ return;
+ }
+
+ //we need to play the next media
+ play();
+
//we tell the video widgets to switch now to the new source
#ifndef QT_NO_PHONON_VIDEO
for (int i = 0; i < m_videoWidgets.count(); ++i) {
@@ -527,15 +536,6 @@ namespace Phonon
#endif //QT_NO_PHONON_VIDEO
emit currentSourceChanged(currentGraph()->mediaSource());
-
- if (currentGraph()->isLoading()) {
- //will simply tell that when loading is finished
- //it should start the playback
- play();
- }
-
-
-
emit metaDataChanged(currentGraph()->metadata());
if (nextGraph()->hasVideo() != currentGraph()->hasVideo()) {
@@ -548,15 +548,6 @@ namespace Phonon
#ifndef QT_NO_PHONON_MEDIACONTROLLER
setTitles(currentGraph()->titles());
#endif //QT_NO_PHONON_MEDIACONTROLLER
-
- //this manages only gapless transitions
- if (currentGraph()->mediaSource().type() != Phonon::MediaSource::Invalid) {
- if (catchComError(currentGraph()->renderResult())) {
- setState(Phonon::ErrorState);
- } else {
- play();
- }
- }
}
Phonon::State MediaObject::state() const
diff --git a/src/3rdparty/phonon/phonon/phononnamespace.h b/src/3rdparty/phonon/phonon/phononnamespace.h
index 0bbf4f4..2492ee6 100644
--- a/src/3rdparty/phonon/phonon/phononnamespace.h
+++ b/src/3rdparty/phonon/phonon/phononnamespace.h
@@ -25,6 +25,11 @@
#include "phonon_export.h"
+#ifdef __QT_SYNCQT__
+// Tell syncqt to create a "Global" header here
+#pragma qt_class(Phonon::Global)
+#endif
+
/**
* Helper macro that can be used like
* \code
diff --git a/src/3rdparty/powervr/pvr2d.h b/src/3rdparty/powervr/pvr2d.h
new file mode 100644
index 0000000..07f28c7
--- /dev/null
+++ b/src/3rdparty/powervr/pvr2d.h
@@ -0,0 +1,502 @@
+/*!****************************************************************************
+@File pvr2d.h
+@Title PVR2D external header file
+@Author Imagination Technologies
+@Copyright Copyright (c) by Imagination Technologies Limited.
+ This specification is protected by copyright laws and contains
+ material proprietary to Imagination Technologies Limited.
+ You may use and distribute this specification free of charge for implementing
+ the functionality therein, without altering or removing any trademark, copyright,
+ or other notice from the specification.
+@Platform Generic
+@Description PVR2D definitions for PVR2D clients
+******************************************************************************/
+
+
+/******************************************************************************
+Modifications :-
+$Log: pvr2d.h $
+******************************************************************************/
+
+#ifndef _PVR2D_H_
+#define _PVR2D_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* PVR2D Platform-specific definitions */
+#define PVR2D_EXPORT
+#define PVR2D_IMPORT
+
+
+#define PVR2D_REV_MAJOR 2
+#define PVR2D_REV_MINOR 1
+
+typedef enum
+{
+ PVR2D_FALSE = 0,
+ PVR2D_TRUE
+} PVR2D_BOOL;
+
+
+/* error codes */
+typedef enum
+{
+ PVR2D_OK = 0,
+ PVR2DERROR_INVALID_PARAMETER = -1,
+ PVR2DERROR_DEVICE_UNAVAILABLE = -2,
+ PVR2DERROR_INVALID_CONTEXT = -3,
+ PVR2DERROR_MEMORY_UNAVAILABLE = -4,
+ PVR2DERROR_DEVICE_NOT_PRESENT = -5,
+ PVR2DERROR_IOCTL_ERROR = -6,
+ PVR2DERROR_GENERIC_ERROR = -7,
+ PVR2DERROR_BLT_NOTCOMPLETE = -8,
+ PVR2DERROR_HW_FEATURE_NOT_SUPPORTED = -9,
+ PVR2DERROR_NOT_YET_IMPLEMENTED = -10,
+ PVR2DERROR_MAPPING_FAILED = -11
+}PVR2DERROR;
+
+
+/* pixel formats */
+typedef enum
+{
+ PVR2D_1BPP = 0,
+ PVR2D_RGB565,
+ PVR2D_ARGB4444,
+ PVR2D_RGB888,
+ PVR2D_ARGB8888,
+ PVR2D_ARGB1555,
+ PVR2D_ALPHA8,
+ PVR2D_ALPHA4,
+ PVR2D_PAL2,
+ PVR2D_PAL4,
+ PVR2D_PAL8,
+ PVR2D_VGAEMU
+
+}PVR2DFORMAT;
+
+
+/* wrap surface type */
+typedef enum
+{
+ PVR2D_WRAPFLAG_NONCONTIGUOUS = 0,
+ PVR2D_WRAPFLAG_CONTIGUOUS = 1,
+
+}PVR2DWRAPFLAGS;
+
+/* flags for control information of additional blits */
+typedef enum
+{
+ PVR2D_BLIT_DISABLE_ALL = 0x0000, /* disable all additional controls */
+ PVR2D_BLIT_CK_ENABLE = 0x0001, /* enable colour key */
+ PVR2D_BLIT_GLOBAL_ALPHA_ENABLE = 0x0002, /* enable standard global alpha */
+ PVR2D_BLIT_PERPIXEL_ALPHABLEND_ENABLE = 0x0004, /* enable per-pixel alpha bleding */
+ PVR2D_BLIT_PAT_SURFACE_ENABLE = 0x0008, /* enable pattern surf (disable fill) */
+ PVR2D_BLIT_FULLY_SPECIFIED_ALPHA_ENABLE = 0x0010, /* enable fully specified alpha */
+ PVR2D_BLIT_ROT_90 = 0x0020, /* apply 90 degree rotation to the blt */
+ PVR2D_BLIT_ROT_180 = 0x0040, /* apply 180 degree rotation to the blt */
+ PVR2D_BLIT_ROT_270 = 0x0080, /* apply 270 degree rotation to the blt */
+ PVR2D_BLIT_COPYORDER_TL2BR = 0x0100, /* copy order overrides */
+ PVR2D_BLIT_COPYORDER_BR2TL = 0x0200,
+ PVR2D_BLIT_COPYORDER_TR2BL = 0x0400,
+ PVR2D_BLIT_COPYORDER_BL2TR = 0x0800,
+ PVR2D_BLIT_COLKEY_SOURCE = 0x1000, /* Key colour is on the source surface */
+ PVR2D_BLIT_COLKEY_DEST = 0x2000 /* Key colour is on the destination surface */
+
+} PVR2DBLITFLAGS;
+
+/* standard alpha-blending functions, AlphaBlendingFunc field of PVR2DBLTINFO */
+typedef enum
+{
+ PVR2D_ALPHA_OP_SRC_DSTINV = 1, /* source alpha : Cdst = Csrc*Asrc + Cdst*(1-Asrc) */
+ PVR2D_ALPHA_OP_SRCP_DSTINV = 2 /* premultiplied source alpha : Cdst = Csrc + Cdst*(1-Asrc) */
+} PVR2D_ALPHABLENDFUNC;
+
+/* blend ops for fully specified alpha */
+typedef enum
+{
+ PVR2D_BLEND_OP_ZERO = 0,
+ PVR2D_BLEND_OP_ONE = 1,
+ PVR2D_BLEND_OP_SRC = 2,
+ PVR2D_BLEND_OP_DST = 3,
+ PVR2D_BLEND_OP_GLOBAL = 4,
+ PVR2D_BLEND_OP_SRC_PLUS_GLOBAL = 5,
+ PVR2D_BLEND_OP_DST_PLUS_GLOBAL = 6
+}PVR2D_BLEND_OP;
+
+
+typedef void* PVR2D_HANDLE;
+
+
+/* Fully specified alpha blend : pAlpha field of PVR2DBLTINFO structure */
+/* a fully specified Alpha Blend operation is defined as */
+/* DST (ALPHA) = (ALPHA_1 * SRC (ALPHA)) + (ALPHA_3 * DST (ALPHA)) */
+/* DST (RGB) = (ALPHA_2 * SRC (RGB)) + (ALPHA_4 * DST (RGB)) */
+/* if the pre-multiplication stage is enabled then the equations become the following: */
+/* PRE_MUL = ((SRC(A)) * (Global Alpha Value)) */
+/* DST (ALPHA) = (ALPHA_1 * SRC (ALPHA)) + (PRE_MUL * DST (ALPHA)) */
+/* DST (RGB) = (ALPHA_2 * SRC (RGB)) + (PRE_MUL * DST (RGB)) */
+/* if the transparent source alpha stage is enabled then a source alpha of zero forces the */
+/* source to be transparent for that pixel regardless of the blend equation being used. */
+typedef struct _PVR2D_ALPHABLT
+{
+ PVR2D_BLEND_OP eAlpha1;
+ PVR2D_BOOL bAlpha1Invert;
+ PVR2D_BLEND_OP eAlpha2;
+ PVR2D_BOOL bAlpha2Invert;
+ PVR2D_BLEND_OP eAlpha3;
+ PVR2D_BOOL bAlpha3Invert;
+ PVR2D_BLEND_OP eAlpha4;
+ PVR2D_BOOL bAlpha4Invert;
+ PVR2D_BOOL bPremulAlpha; /* enable pre-multiplication stage */
+ PVR2D_BOOL bTransAlpha; /* enable transparent source alpha stage */
+ PVR2D_BOOL bUpdateAlphaLookup; /* enable and update the 1555-Lookup alpha table */
+ unsigned char uAlphaLookup0; /* 8 bit alpha when A=0 in a 1555-Lookup surface */
+ unsigned char uAlphaLookup1; /* 8 bit alpha when A=1 in a 1555-Lookup surface */
+ unsigned char uGlobalRGB; /* Global Alpha Value for RGB, 0=transparent 255=opaque */
+ unsigned char uGlobalA; /* Global Alpha Value for Alpha */
+
+} PVR2D_ALPHABLT, *PPVR2D_ALPHABLT;
+
+
+/* surface memory info structure */
+typedef struct _PVR2DMEMINFO
+{
+ void *pBase;
+ unsigned long ui32MemSize;
+ unsigned long ui32DevAddr;
+ unsigned long ulFlags;
+ void *hPrivateData;
+ void *hPrivateMapData;
+
+}PVR2DMEMINFO, *PPVR2DMEMINFO;
+
+
+#define PVR2D_MAX_DEVICE_NAME 20
+
+typedef struct _PVR2DDEVICEINFO
+{
+ unsigned long ulDevID;
+ char szDeviceName[PVR2D_MAX_DEVICE_NAME];
+}PVR2DDEVICEINFO;
+
+
+typedef struct _PVR2DISPLAYINFO
+{
+ unsigned long ulMaxFlipChains;
+ unsigned long ulMaxBuffersInChain;
+ PVR2DFORMAT eFormat;
+ unsigned long ulWidth;
+ unsigned long ulHeight;
+ long lStride;
+ unsigned long ulMinFlipInterval;
+ unsigned long ulMaxFlipInterval;
+
+}PVR2DDISPLAYINFO;
+
+
+typedef struct _PVR2DBLTINFO
+{
+ unsigned long CopyCode; /* rop code */
+ unsigned long Colour; /* fill colour */
+ unsigned long ColourKey; /* colour key */
+ unsigned char GlobalAlphaValue; /* global alpha blending */
+ unsigned char AlphaBlendingFunc; /* per-pixel alpha-blending function */
+
+ PVR2DBLITFLAGS BlitFlags; /* additional blit control information */
+
+ PVR2DMEMINFO *pDstMemInfo; /* destination memory */
+ unsigned long DstOffset; /* byte offset from start of allocation to destination surface pixel 0,0 */
+ long DstStride; /* signed stride, the number of bytes from pixel 0,0 to 0,1 */
+ long DstX, DstY; /* pixel offset from start of dest surface to start of blt rectangle */
+ long DSizeX,DSizeY; /* blt size */
+ PVR2DFORMAT DstFormat; /* dest format */
+ unsigned long DstSurfWidth; /* size of dest surface in pixels */
+ unsigned long DstSurfHeight; /* size of dest surface in pixels */
+
+ PVR2DMEMINFO *pSrcMemInfo; /* source mem, (source fields are also used for patterns) */
+ unsigned long SrcOffset; /* byte offset from start of allocation to src/pat surface pixel 0,0 */
+ long SrcStride; /* signed stride, the number of bytes from pixel 0,0 to 0,1 */
+ long SrcX, SrcY; /* pixel offset from start of surface to start of source rectangle */
+ /* for patterns this is the start offset within the pattern */
+ long SizeX,SizeY; /* source rectangle size or pattern size in pixels */
+ PVR2DFORMAT SrcFormat; /* source/pattern format */
+ PVR2DMEMINFO *pPalMemInfo; /* source/pattern palette memory containing argb8888 colour table */
+ unsigned long PalOffset; /* byte offset from start of allocation to start of palette */
+ unsigned long SrcSurfWidth; /* size of source surface in pixels */
+ unsigned long SrcSurfHeight; /* size of source surface in pixels */
+
+ PVR2DMEMINFO *pMaskMemInfo; /* mask memory, 1bpp format implied */
+ unsigned long MaskOffset; /* byte offset from start of allocation to mask surface pixel 0,0 */
+ long MaskStride; /* signed stride, the number of bytes from pixel 0,0 to 0,1 */
+ long MaskX, MaskY; /* mask rect top left (mask size = blt size) */
+ unsigned long MaskSurfWidth; /* size of mask surface in pixels */
+ unsigned long MaskSurfHeight; /* size of mask surface in pixels */
+
+ PPVR2D_ALPHABLT pAlpha; /* fully specified alpha blend */
+
+}PVR2DBLTINFO, *PPVR2DBLTINFO;
+
+typedef struct _PVR2DRECT
+{
+ long left, top;
+ long right, bottom;
+} PVR2DRECT;
+
+typedef struct
+{
+ PVR2DMEMINFO *pSurfMemInfo; /* surface memory */
+ unsigned long SurfOffset; /* byte offset from start of allocation to destination surface pixel 0,0 */
+ long Stride; /* signed stride */
+ PVR2DFORMAT Format;
+ unsigned long SurfWidth; /* surface size in pixels */
+ unsigned long SurfHeight;
+
+} PVR2D_SURFACE, *PPVR2D_SURFACE;
+
+typedef struct
+{
+ unsigned long *pUseCode; /* USSE code */
+ unsigned long UseCodeSize; /* usse code size in bytes */
+
+} PVR2D_USECODE, *PPVR2D_USECODE;
+
+typedef struct
+{
+ PVR2D_SURFACE sDst; /* destination surface */
+ PVR2D_SURFACE sSrc; /* source surface */
+ PVR2DRECT rcDest; /* destination rectangle */
+ PVR2DRECT rcSource; /* source rectangle */
+ PVR2D_HANDLE hUseCode; /* custom USE code (NULL implies source copy) */
+ unsigned long UseParams[2]; /* per-blt params for use code */
+
+} PVR2D_3DBLT, *PPVR2D_3DBLT;
+
+
+#define MAKE_COPY_BLIT(src,soff,dest,doff,sx,sy,dx,dy,sz)
+
+typedef void* PVR2DCONTEXTHANDLE;
+typedef void* PVR2DFLIPCHAINHANDLE;
+
+
+// CopyCode field of PVR2DBLTINFO structure:
+// the CopyCode field of the PVR2DBLTINFO structure should contain a rop3 or rop4 code.
+// a rop3 is an 8 bit code that describes a blt with three inputs : source dest and pattern
+// rop4 is a 16 bit code that describes a blt with four inputs : source dest pattern and mask
+// common rop3 codes are defined below
+// a colour fill blt is processed in the pattern channel as a constant colour with a rop code of 0xF0
+// PVR2D_BLIT_PAT_SURFACE_ENABLE defines whether the pattern channel is a surface or a fill colour.
+// a rop4 is defined by two rop3 codes, and the 1 bit-per-pixel mask surface defines which is used.
+// a common rop4 is 0xAAF0 which is the mask copy blt used for text glyphs.
+// CopyCode is taken to be a rop4 when pMaskMemInfo is non zero, otherwise it is assumed to be a rop3
+// use the PVR2DMASKROP4 macro below to construct a rop4 from two rop3's
+// rop3a is the rop used when mask pixel = 1, and rop3b when mask = 0
+#define PVR2DROP4(rop3b, rop3a) ((rop3b<<8)|rop3a)
+
+/* common rop codes */
+#define PVR2DROPclear 0x00 /* 0 (whiteness) */
+#define PVR2DROPset 0xFF /* 1 (blackness) */
+#define PVR2DROPnoop 0xAA /* dst (used for masked blts) */
+
+/* source and dest rop codes */
+#define PVR2DROPand 0x88 /* src AND dst */
+#define PVR2DROPandReverse 0x44 /* src AND NOT dst */
+#define PVR2DROPcopy 0xCC /* src (used for source copy and alpha blts) */
+#define PVR2DROPandInverted 0x22 /* NOT src AND dst */
+#define PVR2DROPxor 0x66 /* src XOR dst */
+#define PVR2DROPor 0xEE /* src OR dst */
+#define PVR2DROPnor 0x11 /* NOT src AND NOT dst */
+#define PVR2DROPequiv 0x99 /* NOT src XOR dst */
+#define PVR2DROPinvert 0x55 /* NOT dst */
+#define PVR2DROPorReverse 0xDD /* src OR NOT dst */
+#define PVR2DROPcopyInverted 0x33 /* NOT src */
+#define PVR2DROPorInverted 0xBB /* NOT src OR dst */
+#define PVR2DROPnand 0x77 /* NOT src OR NOT dst */
+
+/* pattern rop codes */
+#define PVR2DPATROPand 0xA0 /* pat AND dst */
+#define PVR2DPATROPandReverse 0x50 /* pat AND NOT dst */
+#define PVR2DPATROPcopy 0xF0 /* pat (used for solid color fills and pattern blts) */
+#define PVR2DPATROPandInverted 0x0A /* NOT pat AND dst */
+#define PVR2DPATROPxor 0x5A /* pat XOR dst */
+#define PVR2DPATROPor 0xFA /* pat OR dst */
+#define PVR2DPATROPnor 0x05 /* NOT pat AND NOT dst */
+#define PVR2DPATROPequiv 0xA5 /* NOT pat XOR dst */
+#define PVR2DPATROPinvert 0x55 /* NOT dst */
+#define PVR2DPATROPorReverse 0xF5 /* pat OR NOT dst */
+#define PVR2DPATROPcopyInverted 0x0F /* NOT pat */
+#define PVR2DPATROPorInverted 0xAF /* NOT pat OR dst */
+#define PVR2DPATROPnand 0x5F /* NOT pat OR NOT dst */
+
+/* common rop4 codes */
+#define PVR2DROP4MaskedCopy PVR2DROP4(PVR2DROPnoop,PVR2DROPcopy) /* masked source copy blt (used for rounded window corners etc) */
+#define PVR2DROP4MaskedFill PVR2DROP4(PVR2DROPnoop,PVR2DPATROPcopy) /* masked colour fill blt (used for text) */
+
+/* Legacy support */
+#define PVR2DROP3_PATMASK PVR2DPATROPcopy
+#define PVR2DROP3_SRCMASK PVR2DROPcopy
+
+/* pixmap memory alignment */
+#define PVR2D_ALIGNMENT_4 4 /* DWORD alignment */
+#define PVR2D_ALIGNMENT_ANY 0 /* no alignment */
+#define PVR2D_ALIGNMENT_PALETTE 16 /* 16 byte alignment is required for palettes */
+
+/* Heap number for PVR2DGetFrameBuffer */
+#define PVR2D_FB_PRIMARY_SURFACE 0
+
+#define PVR2D_PRESENT_PROPERTY_SRCSTRIDE (1 << 0)
+#define PVR2D_PRESENT_PROPERTY_DSTSIZE (1 << 1)
+#define PVR2D_PRESENT_PROPERTY_DSTPOS (1 << 2)
+#define PVR2D_PRESENT_PROPERTY_CLIPRECTS (1 << 3)
+#define PVR2D_PRESENT_PROPERTY_INTERVAL (1 << 4)
+
+
+#define PVR2D_CREATE_FLIPCHAIN_SHARED (1 << 0)
+#define PVR2D_CREATE_FLIPCHAIN_QUERY (1 << 1)
+
+/* Functions that the library exports */
+
+PVR2D_IMPORT
+int PVR2DEnumerateDevices(PVR2DDEVICEINFO *pDevInfo);
+
+PVR2D_IMPORT
+PVR2DERROR PVR2DCreateDeviceContext(unsigned long ulDevID,
+ PVR2DCONTEXTHANDLE* phContext,
+ unsigned long ulFlags);
+
+PVR2D_IMPORT
+PVR2DERROR PVR2DDestroyDeviceContext(PVR2DCONTEXTHANDLE hContext);
+
+PVR2D_IMPORT
+PVR2DERROR PVR2DGetDeviceInfo(PVR2DCONTEXTHANDLE hContext,
+ PVR2DDISPLAYINFO *pDisplayInfo);
+
+PVR2D_IMPORT
+PVR2DERROR PVR2DGetScreenMode(PVR2DCONTEXTHANDLE hContext,
+ PVR2DFORMAT *pFormat,
+ long *plWidth,
+ long *plHeight,
+ long *plStride,
+ int *piRefreshRate);
+
+PVR2D_IMPORT
+PVR2DERROR PVR2DGetFrameBuffer(PVR2DCONTEXTHANDLE hContext,
+ int nHeap,
+ PVR2DMEMINFO **ppsMemInfo);
+
+PVR2D_IMPORT
+PVR2DERROR PVR2DMemAlloc(PVR2DCONTEXTHANDLE hContext,
+ unsigned long ulBytes,
+ unsigned long ulAlign,
+ unsigned long ulFlags,
+ PVR2DMEMINFO **ppsMemInfo);
+
+PVR2D_IMPORT
+PVR2DERROR PVR2DMemWrap(PVR2DCONTEXTHANDLE hContext,
+ void *pMem,
+ unsigned long ulFlags,
+ unsigned long ulBytes,
+ unsigned long alPageAddress[],
+ PVR2DMEMINFO **ppsMemInfo);
+
+PVR2D_IMPORT
+PVR2DERROR PVR2DMemMap(PVR2DCONTEXTHANDLE hContext,
+ unsigned long ulFlags,
+ void *hPrivateMapData,
+ PVR2DMEMINFO **ppsDstMem);
+
+PVR2D_IMPORT
+PVR2DERROR PVR2DMemFree(PVR2DCONTEXTHANDLE hContext,
+ PVR2DMEMINFO *psMemInfo);
+
+PVR2D_IMPORT
+PVR2DERROR PVR2DBlt(PVR2DCONTEXTHANDLE hContext,
+ PVR2DBLTINFO *pBltInfo);
+
+PVR2D_IMPORT
+PVR2DERROR PVR2DBltClipped(PVR2DCONTEXTHANDLE hContext,
+ PVR2DBLTINFO *pBltInfo,
+ unsigned long ulNumClipRects,
+ PVR2DRECT *pClipRects);
+
+PVR2D_IMPORT
+PVR2DERROR PVR2DQueryBlitsComplete(PVR2DCONTEXTHANDLE hContext,
+ PVR2DMEMINFO *pMemInfo,
+ unsigned int uiWaitForComplete);
+
+PVR2D_IMPORT
+PVR2DERROR PVR2DSetPresentBltProperties(PVR2DCONTEXTHANDLE hContext,
+ unsigned long ulPropertyMask,
+ long lSrcStride,
+ unsigned long ulDstWidth,
+ unsigned long ulDstHeight,
+ long lDstXPos,
+ long lDstYPos,
+ unsigned long ulNumClipRects,
+ PVR2DRECT *pClipRects,
+ unsigned long ulSwapInterval);
+
+PVR2D_IMPORT
+PVR2DERROR PVR2DPresentBlt(PVR2DCONTEXTHANDLE hContext,
+ PVR2DMEMINFO *pMemInfo,
+ long lRenderID);
+
+PVR2D_IMPORT
+PVR2DERROR PVR2DCreateFlipChain(PVR2DCONTEXTHANDLE hContext,
+ unsigned long ulFlags,
+ unsigned long ulNumBuffers,
+ unsigned long ulWidth,
+ unsigned long ulHeight,
+ PVR2DFORMAT eFormat,
+ long *plStride,
+ unsigned long *pulFlipChainID,
+ PVR2DFLIPCHAINHANDLE *phFlipChain);
+
+PVR2D_IMPORT
+PVR2DERROR PVR2DDestroyFlipChain(PVR2DCONTEXTHANDLE hContext,
+ PVR2DFLIPCHAINHANDLE hFlipChain);
+
+PVR2D_IMPORT
+PVR2DERROR PVR2DGetFlipChainBuffers(PVR2DCONTEXTHANDLE hContext,
+ PVR2DFLIPCHAINHANDLE hFlipChain,
+ unsigned long *pulNumBuffers,
+ PVR2DMEMINFO *psMemInfo[]);
+
+PVR2D_IMPORT
+PVR2DERROR PVR2DSetPresentFlipProperties(PVR2DCONTEXTHANDLE hContext,
+ PVR2DFLIPCHAINHANDLE hFlipChain,
+ unsigned long ulPropertyMask,
+ long lDstXPos,
+ long lDstYPos,
+ unsigned long ulNumClipRects,
+ PVR2DRECT *pClipRects,
+ unsigned long ulSwapInterval);
+
+PVR2D_IMPORT
+PVR2DERROR PVR2DPresentFlip(PVR2DCONTEXTHANDLE hContext,
+ PVR2DFLIPCHAINHANDLE hFlipChain,
+ PVR2DMEMINFO *psMemInfo,
+ long lRenderID);
+
+PVR2D_IMPORT
+PVR2DERROR PVR2DGetAPIRev(long *lRevMajor, long *lRevMinor);
+
+PVR2D_IMPORT
+PVR2DERROR PVR2DLoadUseCode (const PVR2DCONTEXTHANDLE hContext, const unsigned char *pUseCode,
+ const unsigned long UseCodeSize, PVR2D_HANDLE *pUseCodeHandle);
+PVR2D_IMPORT
+PVR2DERROR PVR2DFreeUseCode (const PVR2DCONTEXTHANDLE hContext, const PVR2D_HANDLE hUseCodeHandle);
+
+PVR2D_IMPORT
+PVR2DERROR PVR2DBlt3D (const PVR2DCONTEXTHANDLE hContext, const PPVR2D_3DBLT pBlt3D);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PVR2D_H_ */
+
+/******************************************************************************
+ End of file (pvr2d.h)
+******************************************************************************/
diff --git a/src/3rdparty/powervr/wsegl.h b/src/3rdparty/powervr/wsegl.h
new file mode 100644
index 0000000..0490607
--- /dev/null
+++ b/src/3rdparty/powervr/wsegl.h
@@ -0,0 +1,240 @@
+/******************************************************************************
+ Name : wsegl.h
+ Copyright : Copyright (c) Imagination Technologies Limited.
+ This specification is protected by copyright laws and contains
+ material proprietary to Imagination Technologies Limited.
+ You may use and distribute this specification free of charge for implementing
+ the functionality therein, without altering or removing any trademark, copyright,
+ or other notice from the specification.
+ Platform : ANSI
+*****************************************************************************/
+
+
+#if !defined(__WSEGL_H__)
+#define __WSEGL_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+// WSEGL Platform-specific definitions
+*/
+#define WSEGL_EXPORT
+#define WSEGL_IMPORT
+
+/*
+// WSEGL API Version Number
+*/
+
+#define WSEGL_VERSION 1
+#define WSEGL_DEFAULT_DISPLAY 0
+#define WSEGL_DEFAULT_NATIVE_ENGINE 0
+
+#define WSEGL_FALSE 0
+#define WSEGL_TRUE 1
+#define WSEGL_NULL 0
+
+#define WSEGL_UNREFERENCED_PARAMETER(param) (param) = (param)
+
+/*
+// WSEGL handles
+*/
+typedef void *WSEGLDisplayHandle;
+typedef void *WSEGLDrawableHandle;
+
+/*
+// Display capability type
+*/
+typedef enum WSEGLCapsType_TAG
+{
+ WSEGL_NO_CAPS = 0,
+ WSEGL_CAP_MIN_SWAP_INTERVAL = 1, /* System default value = 1 */
+ WSEGL_CAP_MAX_SWAP_INTERVAL = 2, /* System default value = 1 */
+ WSEGL_CAP_WINDOWS_USE_HW_SYNC = 3, /* System default value = 0 (FALSE) */
+ WSEGL_CAP_PIXMAPS_USE_HW_SYNC = 4, /* System default value = 0 (FALSE) */
+
+} WSEGLCapsType;
+
+/*
+// Display capability
+*/
+typedef struct WSEGLCaps_TAG
+{
+ WSEGLCapsType eCapsType;
+ unsigned long ui32CapsValue;
+
+} WSEGLCaps;
+
+/*
+// Drawable type
+*/
+#define WSEGL_NO_DRAWABLE 0x0
+#define WSEGL_DRAWABLE_WINDOW 0x1
+#define WSEGL_DRAWABLE_PIXMAP 0x2
+
+
+/*
+// Pixel format of display/drawable
+*/
+typedef enum WSEGLPixelFormat_TAG
+{
+ WSEGL_PIXELFORMAT_565 = 0,
+ WSEGL_PIXELFORMAT_4444 = 1,
+ WSEGL_PIXELFORMAT_8888 = 2,
+ WSEGL_PIXELFORMAT_1555 = 3
+
+} WSEGLPixelFormat;
+
+/*
+// Transparent of display/drawable
+*/
+typedef enum WSEGLTransparentType_TAG
+{
+ WSEGL_OPAQUE = 0,
+ WSEGL_COLOR_KEY = 1,
+
+} WSEGLTransparentType;
+
+/*
+// Display/drawable configuration
+*/
+typedef struct WSEGLConfig_TAG
+{
+ /*
+ // Type of drawables this configuration applies to -
+ // OR'd values of drawable types.
+ */
+ unsigned long ui32DrawableType;
+
+ /* Pixel format */
+ WSEGLPixelFormat ePixelFormat;
+
+ /* Native Renderable - set to WSEGL_TRUE if native renderable */
+ unsigned long ulNativeRenderable;
+
+ /* FrameBuffer Level Parameter */
+ unsigned long ulFrameBufferLevel;
+
+ /* Native Visual ID */
+ unsigned long ulNativeVisualID;
+
+ /* Native Visual */
+ void *hNativeVisual;
+
+ /* Transparent Type */
+ WSEGLTransparentType eTransparentType;
+
+ /* Transparent Color - only used if transparent type is COLOR_KEY */
+ unsigned long ulTransparentColor; /* packed as 0x00RRGGBB */
+
+
+} WSEGLConfig;
+
+/*
+// WSEGL errors
+*/
+typedef enum WSEGLError_TAG
+{
+ WSEGL_SUCCESS = 0,
+ WSEGL_CANNOT_INITIALISE = 1,
+ WSEGL_BAD_NATIVE_DISPLAY = 2,
+ WSEGL_BAD_NATIVE_WINDOW = 3,
+ WSEGL_BAD_NATIVE_PIXMAP = 4,
+ WSEGL_BAD_NATIVE_ENGINE = 5,
+ WSEGL_BAD_DRAWABLE = 6,
+ WSEGL_BAD_CONFIG = 7,
+ WSEGL_OUT_OF_MEMORY = 8
+
+} WSEGLError;
+
+/*
+// Drawable orientation (in degrees anti-clockwise)
+*/
+typedef enum WSEGLRotationAngle_TAG
+{
+ WSEGL_ROTATE_0 = 0,
+ WSEGL_ROTATE_90 = 1,
+ WSEGL_ROTATE_180 = 2,
+ WSEGL_ROTATE_270 = 3
+
+} WSEGLRotationAngle;
+
+/*
+// Drawable information required by OpenGL-ES driver
+*/
+typedef struct WSEGLDrawableParams_TAG
+{
+ /* Width in pixels of the drawable */
+ unsigned long ui32Width;
+
+ /* Height in pixels of the drawable */
+ unsigned long ui32Height;
+
+ /* Stride in pixels of the drawable */
+ unsigned long ui32Stride;
+
+ /* Pixel format of the drawable */
+ WSEGLPixelFormat ePixelFormat;
+
+ /* User space cpu virtual address of the drawable */
+ void *pvLinearAddress;
+
+ /* HW address of the drawable */
+ unsigned long ui32HWAddress;
+
+ /* Private data for the drawable */
+ void *hPrivateData;
+
+} WSEGLDrawableParams;
+
+
+/*
+// Table of function pointers that is returned by WSEGL_GetFunctionTablePointer()
+//
+// The first entry in the table is the version number of the wsegl.h header file that
+// the module has been written against, and should therefore be set to WSEGL_VERSION
+*/
+typedef struct WSEGL_FunctionTable_TAG
+{
+ unsigned long ui32WSEGLVersion;
+
+ WSEGLError (*pfnWSEGL_IsDisplayValid)(NativeDisplayType);
+
+ WSEGLError (*pfnWSEGL_InitialiseDisplay)(NativeDisplayType, WSEGLDisplayHandle *, const WSEGLCaps **, WSEGLConfig **);
+
+ WSEGLError (*pfnWSEGL_CloseDisplay)(WSEGLDisplayHandle);
+
+ WSEGLError (*pfnWSEGL_CreateWindowDrawable)(WSEGLDisplayHandle, WSEGLConfig *, WSEGLDrawableHandle *, NativeWindowType, WSEGLRotationAngle *);
+
+ WSEGLError (*pfnWSEGL_CreatePixmapDrawable)(WSEGLDisplayHandle, WSEGLConfig *, WSEGLDrawableHandle *, NativePixmapType, WSEGLRotationAngle *);
+
+ WSEGLError (*pfnWSEGL_DeleteDrawable)(WSEGLDrawableHandle);
+
+ WSEGLError (*pfnWSEGL_SwapDrawable)(WSEGLDrawableHandle, unsigned long);
+
+ WSEGLError (*pfnWSEGL_SwapControlInterval)(WSEGLDrawableHandle, unsigned long);
+
+ WSEGLError (*pfnWSEGL_WaitNative)(WSEGLDrawableHandle, unsigned long);
+
+ WSEGLError (*pfnWSEGL_CopyFromDrawable)(WSEGLDrawableHandle, NativePixmapType);
+
+ WSEGLError (*pfnWSEGL_CopyFromPBuffer)(void *, unsigned long, unsigned long, unsigned long, WSEGLPixelFormat, NativePixmapType);
+
+ WSEGLError (*pfnWSEGL_GetDrawableParameters)(WSEGLDrawableHandle, WSEGLDrawableParams *, WSEGLDrawableParams *);
+
+
+} WSEGL_FunctionTable;
+
+
+WSEGL_IMPORT const WSEGL_FunctionTable *WSEGL_GetFunctionTablePointer(void);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __WSEGL_H__ */
+
+/******************************************************************************
+ End of file (wsegl.h)
+******************************************************************************/
diff --git a/src/3rdparty/webkit/ChangeLog b/src/3rdparty/webkit/ChangeLog
index ec8242d..76cfc80 100644
--- a/src/3rdparty/webkit/ChangeLog
+++ b/src/3rdparty/webkit/ChangeLog
@@ -1,3 +1,11 @@
+2009-04-24 Simon Hausmann <simon.hausmann@nokia.com>
+
+ Reviewed by Ariya Hidayat.
+
+ Added support for generating API docs in the Qt build using "make docs"
+
+ * WebKit.pro: Include docs.pri for "make docs" target.
+
2008-12-19 Marco Barisione <marco.barisione@collabora.co.uk>
Reviewed by Holger Freyther.
diff --git a/src/3rdparty/webkit/JavaScriptCore/ChangeLog b/src/3rdparty/webkit/JavaScriptCore/ChangeLog
index fe85bb9..3321570 100644
--- a/src/3rdparty/webkit/JavaScriptCore/ChangeLog
+++ b/src/3rdparty/webkit/JavaScriptCore/ChangeLog
@@ -1,3 +1,60 @@
+2009-01-22 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by Geoff Garen.
+
+ <rdar://problem/6516853> (r39682-r39736) JSFunFuzz: crash on "(function(){({ x2: x }), })()"
+ <https://bugs.webkit.org/show_bug.cgi?id=23479>
+
+ Automatic semicolon insertion was resulting in this being accepted in the initial
+ nodeless parsing, but subsequent reparsing for code generation would fail, leading
+ to a crash. The solution is to ensure that reparsing a function performs parsing
+ in the same state as the initial parse. We do this by modifying the saved source
+ ranges to include rather than exclude the opening and closing braces.
+
+ * bytecode/CodeBlock.cpp:
+ (JSC::CodeBlock::reparseForExceptionInfoIfNecessary): add an assertion for successful recompile
+ * parser/Lexer.h:
+ (JSC::Lexer::sourceCode): include rather than exclude braces.
+ * parser/Nodes.h:
+ (JSC::FunctionBodyNode::toSourceString): No need to append braces anymore.
+
+2009-01-21 Alexey Proskuryakov <ap@webkit.org>
+
+ Suggested by Oliver Hunt. Reviewed by Oliver Hunt.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23456
+ Function argument names leak
+
+ * parser/Nodes.cpp: (JSC::FunctionBodyNode::~FunctionBodyNode): Destruct parameter names.
+
+2009-01-22 Beth Dakin <bdakin@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ Fix for https://bugs.webkit.org/show_bug.cgi?id=23461 LayoutTests/
+ fast/js/numeric-conversion.html is broken, and corresponding
+ <rdar://problem/6514842>
+
+ The basic problem here is that parseInt(Infinity) should be NaN,
+ but we were returning 0. NaN matches Safari 3.2.1 and Firefox.
+
+ * runtime/JSGlobalObjectFunctions.cpp:
+ (JSC::globalFuncParseInt):
+
+2009-01-13 Beth Dakin <bdakin@apple.com>
+
+ Reviewed by Darin Adler and Oliver Hunt.
+
+ <rdar://problem/6489314> REGRESSION: Business widget's front side
+ fails to render correctly when flipping widget
+
+ The problem here is that parseInt was parsing NaN as 0. This patch
+ corrects that by parsing NaN as NaN. This matches our old behavior
+ and Firefox.
+
+ * runtime/JSGlobalObjectFunctions.cpp:
+ (JSC::globalFuncParseInt):
+
2009-02-13 Adam Treat <adam.treat@torchmobile.com>
Reviewed by George Staikos.
diff --git a/src/3rdparty/webkit/JavaScriptCore/bytecode/CodeBlock.cpp b/src/3rdparty/webkit/JavaScriptCore/bytecode/CodeBlock.cpp
index 91fb1c0..9207c8a 100644
--- a/src/3rdparty/webkit/JavaScriptCore/bytecode/CodeBlock.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/bytecode/CodeBlock.cpp
@@ -1397,6 +1397,7 @@ void CodeBlock::reparseForExceptionInfoIfNecessary(CallFrame* callFrame)
case FunctionCode: {
FunctionBodyNode* ownerFunctionBodyNode = static_cast<FunctionBodyNode*>(m_ownerNode);
RefPtr<FunctionBodyNode> newFunctionBody = m_globalData->parser->reparse<FunctionBodyNode>(m_globalData, ownerFunctionBodyNode);
+ ASSERT(newFunctionBody);
newFunctionBody->finishParsing(ownerFunctionBodyNode->copyParameters(), ownerFunctionBodyNode->parameterCount());
CodeBlock& newCodeBlock = newFunctionBody->bytecodeForExceptionInfoReparse(scopeChain);
ASSERT(newCodeBlock.m_exceptionInfo);
diff --git a/src/3rdparty/webkit/JavaScriptCore/parser/Lexer.h b/src/3rdparty/webkit/JavaScriptCore/parser/Lexer.h
index cb553af..afcf09f 100644
--- a/src/3rdparty/webkit/JavaScriptCore/parser/Lexer.h
+++ b/src/3rdparty/webkit/JavaScriptCore/parser/Lexer.h
@@ -88,7 +88,7 @@ namespace JSC {
bool sawError() const { return m_error; }
void clear();
- SourceCode sourceCode(int openBrace, int closeBrace, int firstLine) { return SourceCode(m_source->provider(), openBrace + 1, closeBrace, firstLine); }
+ SourceCode sourceCode(int openBrace, int closeBrace, int firstLine) { return SourceCode(m_source->provider(), openBrace, closeBrace + 1, firstLine); }
private:
friend class JSGlobalData;
diff --git a/src/3rdparty/webkit/JavaScriptCore/parser/Nodes.cpp b/src/3rdparty/webkit/JavaScriptCore/parser/Nodes.cpp
index bdc5d2f..201af28 100644
--- a/src/3rdparty/webkit/JavaScriptCore/parser/Nodes.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/parser/Nodes.cpp
@@ -2552,6 +2552,8 @@ FunctionBodyNode::FunctionBodyNode(JSGlobalData* globalData, SourceElements* chi
FunctionBodyNode::~FunctionBodyNode()
{
ASSERT(!m_refCount);
+ for (size_t i = 0; i < m_parameterCount; ++i)
+ m_parameters[i].~Identifier();
fastFree(m_parameters);
}
diff --git a/src/3rdparty/webkit/JavaScriptCore/parser/Nodes.h b/src/3rdparty/webkit/JavaScriptCore/parser/Nodes.h
index f8512f7..20885c3 100644
--- a/src/3rdparty/webkit/JavaScriptCore/parser/Nodes.h
+++ b/src/3rdparty/webkit/JavaScriptCore/parser/Nodes.h
@@ -2205,7 +2205,7 @@ namespace JSC {
void finishParsing(const SourceCode&, ParameterNode*);
void finishParsing(Identifier* parameters, size_t parameterCount);
- UString toSourceString() const JSC_FAST_CALL { return UString("{") + source().toString() + UString("}"); }
+ UString toSourceString() const JSC_FAST_CALL { return source().toString(); }
// These objects are ref/deref'd a lot in the scope chain, so this is a faster ref/deref.
// If the virtual machine changes so this doesn't happen as much we can change back.
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/JSGlobalObjectFunctions.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/JSGlobalObjectFunctions.cpp
index f12d2f3..ecdddcf 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/JSGlobalObjectFunctions.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/JSGlobalObjectFunctions.cpp
@@ -302,9 +302,11 @@ JSValuePtr globalFuncParseInt(ExecState* exec, JSObject*, JSValuePtr, const ArgL
if (JSImmediate::isImmediate(value))
return value;
double d = value->uncheckedGetNumber();
- if (!isfinite(d))
- return JSImmediate::zeroImmediate();
- return jsNumber(exec, floor(d));
+ if (isfinite(d))
+ return jsNumber(exec, floor(d));
+ if (isnan(d) || isinf(d))
+ return jsNaN(&exec->globalData());
+ return JSImmediate::zeroImmediate();
}
return jsNumber(exec, parseInt(value->toString(exec), radix));
diff --git a/src/3rdparty/webkit/VERSION b/src/3rdparty/webkit/VERSION
index 96840d0..9f85d76 100644
--- a/src/3rdparty/webkit/VERSION
+++ b/src/3rdparty/webkit/VERSION
@@ -8,4 +8,4 @@ The commit imported was from the
and has the sha1 checksum
- 1beae2b64b5b1e9b97e82dc94de18ebac1c19efc
+ 7b8d6ab6f2b73862d11c2a41ab0223e55585d88f
diff --git a/src/3rdparty/webkit/WebCore/ChangeLog b/src/3rdparty/webkit/WebCore/ChangeLog
index e8850f3..23f3ca6 100644
--- a/src/3rdparty/webkit/WebCore/ChangeLog
+++ b/src/3rdparty/webkit/WebCore/ChangeLog
@@ -1,3 +1,296 @@
+2009-05-18 Ariya Hidayat <ariya.hidayat@nokia.com>
+
+ Reviewed by Simon Hausmann.
+
+ Done together with Balazs Kelemen <kelemen.balazs@stud.u-szeged.hu>.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24551
+
+ [Qt] Reuse FontPlatformData for the same FontDescription.
+ This effectively prevents growing heap usage for loading every web page.
+
+ * platform/graphics/qt/FontCacheQt.cpp:
+ (WebCore::qHash): Necessary for FontPlatformDataCache.
+ (WebCore::FontCache::getCachedFontPlatformData): Reuse the instance if
+ it exists, otherwise create a new one and insert it in the cache.
+
+2009-05-18 Balazs Kelemen <kelemen.balazs@stud.u-szeged.hu>
+
+ Reviewed by Ariya Hidayat.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24551
+
+ [Qt] Fix the leak in FontFallbackList::fontDataAt() function.
+ When creating a new instance of SimpleFontData, put it in the font list
+ so that it can deleted later on.
+
+ * platform/graphics/qt/FontFallbackListQt.cpp:
+ (WebCore::FontFallbackList::invalidate):
+ (WebCore::FontFallbackList::releaseFontData):
+ (WebCore::FontFallbackList::fontDataAt):
+
+2009-05-15 Ariya Hidayat <ariya.hidayat@nokia.com>
+
+ Reviewed by Holger Freyther.
+
+ [Qt] In the image decoder, remove the raw image data represented as QImage
+ once the image is converted to QPixmap and inserted in the pixmap cache.
+ This effectively reduces the heap usage when running on graphics system
+ other than raster (i.e the case where QImage != QPixmap).
+
+ * platform/graphics/qt/ImageDecoderQt.cpp:
+ (WebCore::ImageDecoderQt::imageAtIndex): Nullified the image on purpose.
+ * platform/graphics/qt/ImageDecoderQt.h: Made m_imageList mutable.
+
+2009-05-15 Ariya Hidayat <ariya.hidayat@nokia.com>
+
+ Reviewed by Holger Freyther.
+
+ [Qt] Refactor alpha channel detection the image decoder.
+ Sets the boolean flag as soon as the image is being read.
+
+ * platform/graphics/qt/ImageDecoderQt.cpp:
+ (WebCore::ImageDecoderQt::ImageDecoderQt): Initialized m_hasAlphaChannel.
+ (WebCore::ImageDecoderQt::setData): Set the flag when appropriate.
+ (WebCore::ImageDecoderQt::supportsAlpha): Simplified.
+ (WebCore::ImageDecoderQt::reset): Resetted the flag.
+ * platform/graphics/qt/ImageDecoderQt.h: Added m_hasAlphaChannel.
+
+2009-05-13 Ariya Hidayat <ariya.hidayat@nokia.com>
+
+ Reviewed by Sam Weinig.
+
+ [Qt] Fix "lighther" composition mode.
+ QPainter::CompositionMode_Plus is the right match.
+
+ * platform/graphics/qt/GraphicsContextQt.cpp:
+ (WebCore::toQtCompositionMode):
+
+2009-04-29 Ariya Hidayat <ariya.hidayat@nokia.com>
+
+ Reviewed by Simon Fraser.
+
+ [Qt] Initialize GraphicsContext's and ImageBuffer's QPainter to match
+ the default values of canvas attributes.
+
+ * platform/graphics/qt/ImageBufferQt.cpp:
+ (WebCore::ImageBufferData::ImageBufferData):
+
+2009-04-27 Ariya Hidayat <ariya.hidayat@nokia.com>
+
+ Reviewed by Tor Arne Vestbø.
+
+ https://bugs.webkit.org/show_bug.cgi?id=18475
+
+ [Qt] Widget painting should follow the layout direction (LTR, RTL)
+ of the element style, not the application layout direction.
+
+ * platform/qt/RenderThemeQt.cpp:
+ (WebCore::RenderThemeQt::applyTheme):
+
+2009-03-13 Adam Bergkvist <adam.bergkvist@ericsson.com>
+
+ Reviewed by Alexey Proskuryakov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24349
+ [QT] HTTP status text is never set
+
+ Set HTTP status text to the reason phrase attribute of QNetworkReply.
+
+ * platform/network/qt/QNetworkReplyHandler.cpp:
+ (WebCore::QNetworkReplyHandler::sendResponseIfNeeded):
+
+2009-03-02 Dirk Schulze <krit@webkit.org>
+
+ Reviewed by Holger Freyther.
+
+ Added putImageData to Qt. Discussed with Ariya Hidayat.
+
+ [Qt] lacks putImageData support in Canvas
+ https://bugs.webkit.org/show_bug.cgi?id=22186
+
+ * platform/graphics/qt/ImageBufferQt.cpp:
+ (WebCore::ImageBuffer::putImageData):
+
+2009-03-01 Larry Ewing <lewing@novell.com>
+
+ Reviewed by Alexey Proskuryakov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24080
+ NPN_GetValue casting to the wrong type and writing outside bounds
+
+ Make sure to cast the value to the correct type so that only
+ memory owned by the value is written to.
+
+ * plugins/gtk/PluginViewGtk.cpp (PluginView::getValueStatic):
+ * plugins/qt/PluginViewQt.cpp (PluginView::getValueStatic):
+ * plugins/mac/PluginViewMac.cpp (PluginView::getValueStatic):
+ (PluginView::getValue):
+
+2009-02-27 Adam Treat <adam.treat@torchmobile.com>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24229
+ If an image has no alpha channel there is no reason to use SourceOver.
+
+ * platform/graphics/qt/ImageQt.cpp:
+ (WebCore::Image::drawPattern):
+ (WebCore::BitmapImage::draw):
+
+2009-02-27 Zack Rusin <zack@kde.org>
+
+ Reviewed by Nikolas Zimmermann.
+
+ Qt: be more reasonable about scrolled lines
+
+ cMouseWheelPixelsPerLineStep is currently a constant set to 13.3. it doesn't
+ match our metrics meaning that Qt scrolls by ~2 lines by default which is quite
+ irritating. so lets scroll vertically by the Qt set number of lines * Qt default
+ single step scroll
+
+ * platform/qt/WheelEventQt.cpp:
+
+2009-02-25 Dirk Schulze <krit@webkit.org>
+
+ Reviewed by Oliver Hunt.
+
+ Ported arcTo to Qt. Qt has no native support for arcTo. This changes
+ calculate the behavior of arcTo and draws it with lineTo and arc.
+
+ [QT] implement Canvas arcTo
+ https://bugs.webkit.org/show_bug.cgi?id=23873
+
+ * platform/graphics/qt/PathQt.cpp:
+ (WebCore::Path::addArcTo):
+
+2009-03-12 Adam Treat <adam.treat@torchmobile.com>
+
+ Reviewed by Oliver Hunt.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24498
+ Fix the Qt port to use the same algorithm for drawing dashed and dotted
+ borders as the other ports. This makes the Qt port pixel-for-pixel perfect
+ compared to border drawing with Apple's canonical mac port and much closer
+ to konqueror and firefox behavior.
+
+ * platform/graphics/qt/GraphicsContextQt.cpp:
+ (WebCore::GraphicsContext::drawLine):
+
+2009-03-09 Adam Treat <adam.treat@torchmobile.com>
+
+ Reviewed by George Staikos.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24463
+ WebCore::qstring is detaching and copying twice for every single
+ WebCore::TextRun that is processed and drawn. This elevates this method
+ to one of the top-ten most expensive methods in all of QtWebKit according
+ to profiling. This changes the method so that QString only detaches
+ when absolutely necessary.
+
+ * platform/graphics/qt/FontQt.cpp:
+ (WebCore::qstring):
+ (WebCore::fixSpacing):
+ (WebCore::Font::drawComplexText):
+ (WebCore::Font::floatWidthForComplexText):
+ (WebCore::Font::offsetForPositionForComplexText):
+ (WebCore::Font::selectionRectForComplexText):
+
+2009-02-04 Simon Hausmann <simon.hausmann@nokia.com>
+
+ Unreviewed Qt build fix.
+
+ Changed ASSERT(image) to ASSERT(!image.isNull()).
+
+ * platform/graphics/qt/ImageBufferQt.cpp:
+ (WebCore::ImageBuffer::getImageData):
+
+2009-02-03 Dirk Schulze <krit@webkit.org>
+
+ Reviewed by Sam Weinig.
+
+ This is a follow up of r40546. Call toImage() once speeds up ImageBuffer::getImageData()
+
+ * platform/graphics/qt/ImageBufferQt.cpp:
+ (WebCore::ImageBuffer::getImageData):
+
+2009-02-03 Dirk Schulze <krit@webkit.org>
+
+ Reviewed by Sam Weinig and Oliver Hunt.
+
+ Added getImageData() support for QtWebKit.
+
+ [QT] lacks getImageData / putImageData support in Canvas
+ https://bugs.webkit.org/show_bug.cgi?id=22186
+
+ * platform/graphics/qt/ImageBufferQt.cpp:
+ (WebCore::ImageBuffer::getImageData):
+
+2009-04-14 Benjamin C Meyer <benjamin.meyer@torchmobile.com>
+
+ Reviewed by George Staikos.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25099
+
+ When creating a QNetworkRequest make sure to populate the
+ CacheLoadControlAttribute with the value set by the ResourceRequest::cachePolicy() so that the cache will be used as WebKit expects.
+
+ * WebKit/qt/tests/qwebpage/tst_qwebpage.cpp:
+ (tst_QWebPage::requestCache):
+
+ * platform/network/qt/ResourceRequestQt.cpp:
+ (WebCore::ResourceRequest::toNetworkRequest):
+
+2009-04-07 Brady Eidson <beidson@apple.com>
+
+ Reviewed by Darin Adler
+
+ While working on <rdar://problem/5968249>, noticed some glaring problems with LocalStorage.
+
+ * page/DOMWindow.cpp:
+ (WebCore::DOMWindow::localStorage): Return the cached m_localStorage object if it exists to
+ avoid creating multiple representations for the same underlying StorageArea.
+ * page/DOMWindow.h:
+ (WebCore::DOMWindow::optionalLocalStorage): Return m_localStorage, not m_sessionStorage.
+
+2009-04-06 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
+
+ Reviewed by Simon Hausmann.
+
+ [Qt] Don't show and hide the platformPluginWidget, as it's our QWebView
+
+ * plugins/mac/PluginViewMac.cpp:
+ (WebCore::PluginView::show):
+ (WebCore::PluginView::hide):
+ (WebCore::PluginView::setParentVisible):
+
+2009-04-06 Mike Belshe <mike@belshe.com>
+
+ Reviewed by Eric Seidel.
+
+ HTMLCanvasElement crash when ImageBuffer creation fails.
+ https://bugs.webkit.org/show_bug.cgi?id=23212
+
+ Check for NULL before using the ImageBuffer as we might
+ be low on memory and creation may have failed.
+
+ Test case creation blocked by:
+ https://bugs.webkit.org/show_bug.cgi?id=25055
+
+ * html/HTMLCanvasElement.cpp:
+ (WebCore::HTMLCanvasElement::createImageBuffer):
+
+2009-04-05 Erik L. Bunce <elbunce@xendom.com>
+
+ Reviewed by Simon Hausmann.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25050
+
+ Fix an assert failure when dropping an 'empty' text/uri-list on a QWebView.
+
+ * platform/qt/DragDataQt.cpp:
+ (WebCore::DragData::asURL):
+
2009-03-27 Zack Rusin <zack@kde.org>
Reviewed by Simon Hausmann.
diff --git a/src/3rdparty/webkit/WebCore/html/HTMLCanvasElement.cpp b/src/3rdparty/webkit/WebCore/html/HTMLCanvasElement.cpp
index fb6d9fe..76c3202 100644
--- a/src/3rdparty/webkit/WebCore/html/HTMLCanvasElement.cpp
+++ b/src/3rdparty/webkit/WebCore/html/HTMLCanvasElement.cpp
@@ -257,6 +257,10 @@ void HTMLCanvasElement::createImageBuffer() const
return;
m_imageBuffer.set(ImageBuffer::create(size, false).release());
+ // The convertLogicalToDevice MaxCanvasArea check should prevent common cases
+ // where ImageBuffer::create() returns NULL, however we could still be low on memory.
+ if (!m_imageBuffer)
+ return;
m_imageBuffer->context()->scale(FloatSize(size.width() / unscaledSize.width(), size.height() / unscaledSize.height()));
m_imageBuffer->context()->setShadowsIgnoreTransforms(true);
}
diff --git a/src/3rdparty/webkit/WebCore/page/DOMWindow.cpp b/src/3rdparty/webkit/WebCore/page/DOMWindow.cpp
index 42d2e90..dd14fb9 100644
--- a/src/3rdparty/webkit/WebCore/page/DOMWindow.cpp
+++ b/src/3rdparty/webkit/WebCore/page/DOMWindow.cpp
@@ -333,6 +333,9 @@ Storage* DOMWindow::sessionStorage() const
Storage* DOMWindow::localStorage() const
{
+ if (m_localStorage)
+ return m_localStorage.get();
+
Document* document = this->document();
if (!document)
return 0;
diff --git a/src/3rdparty/webkit/WebCore/page/DOMWindow.h b/src/3rdparty/webkit/WebCore/page/DOMWindow.h
index 0277441..e7fab18 100644
--- a/src/3rdparty/webkit/WebCore/page/DOMWindow.h
+++ b/src/3rdparty/webkit/WebCore/page/DOMWindow.h
@@ -265,7 +265,7 @@ namespace WebCore {
Location* optionalLocation() const { return m_location.get(); }
#if ENABLE(DOM_STORAGE)
Storage* optionalSessionStorage() const { return m_sessionStorage.get(); }
- Storage* optionalLocalStorage() const { return m_sessionStorage.get(); }
+ Storage* optionalLocalStorage() const { return m_localStorage.get(); }
#endif
#if ENABLE(OFFLINE_WEB_APPLICATIONS)
DOMApplicationCache* optionalApplicationCache() const { return m_applicationCache.get(); }
diff --git a/src/3rdparty/webkit/WebCore/platform/graphics/qt/FontCacheQt.cpp b/src/3rdparty/webkit/WebCore/platform/graphics/qt/FontCacheQt.cpp
index 8a31861..5d1f147 100644
--- a/src/3rdparty/webkit/WebCore/platform/graphics/qt/FontCacheQt.cpp
+++ b/src/3rdparty/webkit/WebCore/platform/graphics/qt/FontCacheQt.cpp
@@ -26,6 +26,9 @@
#include "FontDescription.h"
#include "FontPlatformData.h"
#include "Font.h"
+#include "StringHash.h"
+
+#include <QHash>
namespace WebCore {
@@ -33,9 +36,31 @@ void FontCache::getTraitsInFamily(const AtomicString& familyName, Vector<unsigne
{
}
+typedef QHash<FontDescription, FontPlatformData*> FontPlatformDataCache;
+
+// using Q_GLOBAL_STATIC leads to crash. TODO investigate the way to fix this.
+static FontPlatformDataCache* gFontPlatformDataCache;
+
+uint qHash(const FontDescription& key)
+{
+ uint value = CaseFoldingHash::hash(key.family().family());
+ value ^= key.computedPixelSize();
+ value ^= static_cast<int>(key.weight());
+ return value;
+}
+
FontPlatformData* FontCache::getCachedFontPlatformData(const FontDescription& description, const AtomicString& family, bool checkingAlternateName)
{
- return new FontPlatformData(description);
+ if (!gFontPlatformDataCache)
+ gFontPlatformDataCache = new FontPlatformDataCache;
+
+ FontPlatformData* fontData = gFontPlatformDataCache->value(description, 0);
+ if (!fontData) {
+ fontData = new FontPlatformData(description);
+ gFontPlatformDataCache->insert(description, fontData);
+ }
+
+ return fontData;
}
SimpleFontData* FontCache::getCachedFontData(const FontPlatformData*)
diff --git a/src/3rdparty/webkit/WebCore/platform/graphics/qt/FontFallbackListQt.cpp b/src/3rdparty/webkit/WebCore/platform/graphics/qt/FontFallbackListQt.cpp
index 22ae205..50627b7 100644
--- a/src/3rdparty/webkit/WebCore/platform/graphics/qt/FontFallbackListQt.cpp
+++ b/src/3rdparty/webkit/WebCore/platform/graphics/qt/FontFallbackListQt.cpp
@@ -42,8 +42,6 @@ FontFallbackList::FontFallbackList()
void FontFallbackList::invalidate(WTF::PassRefPtr<WebCore::FontSelector> fontSelector)
{
- releaseFontData();
- m_fontList.clear();
m_familyIndex = 0;
m_pitch = UnknownPitch;
m_loadingCustomFonts = false;
@@ -53,6 +51,9 @@ void FontFallbackList::invalidate(WTF::PassRefPtr<WebCore::FontSelector> fontSel
void FontFallbackList::releaseFontData()
{
+ if (m_fontList.size())
+ delete m_fontList[0].first;
+ m_fontList.clear();
}
void FontFallbackList::determinePitch(const WebCore::Font* font) const
@@ -90,7 +91,12 @@ const FontData* FontFallbackList::fontDataAt(const WebCore::Font* _font, unsigne
family = family->next();
}
- return new SimpleFontData(FontPlatformData(description), _font->wordSpacing(), _font->letterSpacing());
+ if (m_fontList.size())
+ return m_fontList[0].first;
+
+ const FontData* result = new SimpleFontData(FontPlatformData(description), _font->wordSpacing(), _font->letterSpacing());
+ m_fontList.append(pair<const FontData*, bool>(result, result->isCustomFont()));
+ return result;
}
const FontData* FontFallbackList::fontDataForCharacters(const WebCore::Font* font, const UChar*, int) const
diff --git a/src/3rdparty/webkit/WebCore/platform/graphics/qt/FontQt.cpp b/src/3rdparty/webkit/WebCore/platform/graphics/qt/FontQt.cpp
index deeea99..4e78083 100644
--- a/src/3rdparty/webkit/WebCore/platform/graphics/qt/FontQt.cpp
+++ b/src/3rdparty/webkit/WebCore/platform/graphics/qt/FontQt.cpp
@@ -37,20 +37,27 @@
#if QT_VERSION >= 0x040400
namespace WebCore {
-static QString qstring(const TextRun& run)
+static const QString qstring(const TextRun& run)
{
- QString string((QChar *)run.characters(), run.length());
- QChar *uc = string.data();
+ //We don't detach
+ return QString::fromRawData((const QChar *)run.characters(), run.length());
+}
+
+static const QString fixSpacing(const QString &string)
+{
+ //Only detach if we're actually changing something
+ QString possiblyDetached = string;
for (int i = 0; i < string.length(); ++i) {
- if (Font::treatAsSpace(uc[i].unicode()))
- uc[i] = 0x20;
- else if (Font::treatAsZeroWidthSpace(uc[i].unicode()))
- uc[i] = 0x200c;
+ const QChar c = string.at(i);
+ if (c.unicode() != 0x20 && Font::treatAsSpace(c.unicode())) {
+ possiblyDetached[i] = 0x20; //detach
+ } else if (c.unicode() != 0x200c && Font::treatAsZeroWidthSpace(c.unicode())) {
+ possiblyDetached[i] = 0x200c; //detach
+ }
}
- return string;
+ return possiblyDetached;
}
-
static QTextLine setupLayout(QTextLayout* layout, const TextRun& style)
{
int flags = style.rtl() ? Qt::TextForceRightToLeft : Qt::TextForceLeftToRight;
@@ -75,7 +82,7 @@ void Font::drawComplexText(GraphicsContext* ctx, const TextRun& run, const Float
Color color = ctx->fillColor();
p->setPen(QColor(color));
- QString string = qstring(run);
+ const QString string = fixSpacing(qstring(run));
// text shadow
IntSize shadowSize;
@@ -144,7 +151,7 @@ float Font::floatWidthForComplexText(const TextRun& run) const
{
if (!run.length())
return 0;
- QString string = qstring(run);
+ const QString string = fixSpacing(qstring(run));
QTextLayout layout(string, font());
QTextLine line = setupLayout(&layout, run);
int w = int(line.naturalTextWidth());
@@ -157,7 +164,7 @@ float Font::floatWidthForComplexText(const TextRun& run) const
int Font::offsetForPositionForComplexText(const TextRun& run, int position, bool includePartialGlyphs) const
{
- QString string = qstring(run);
+ const QString string = fixSpacing(qstring(run));
QTextLayout layout(string, font());
QTextLine line = setupLayout(&layout, run);
return line.xToCursor(position);
@@ -165,7 +172,7 @@ int Font::offsetForPositionForComplexText(const TextRun& run, int position, bool
FloatRect Font::selectionRectForComplexText(const TextRun& run, const IntPoint& pt, int h, int from, int to) const
{
- QString string = qstring(run);
+ const QString string = fixSpacing(qstring(run));
QTextLayout layout(string, font());
QTextLine line = setupLayout(&layout, run);
diff --git a/src/3rdparty/webkit/WebCore/platform/graphics/qt/GraphicsContextQt.cpp b/src/3rdparty/webkit/WebCore/platform/graphics/qt/GraphicsContextQt.cpp
index 936c1ea..490b54b 100644
--- a/src/3rdparty/webkit/WebCore/platform/graphics/qt/GraphicsContextQt.cpp
+++ b/src/3rdparty/webkit/WebCore/platform/graphics/qt/GraphicsContextQt.cpp
@@ -98,7 +98,7 @@ static inline QPainter::CompositionMode toQtCompositionMode(CompositeOperator op
case CompositeHighlight:
return QPainter::CompositionMode_SourceOver;
case CompositePlusLighter:
- return QPainter::CompositionMode_SourceOver;
+ return QPainter::CompositionMode_Plus;
}
return QPainter::CompositionMode_SourceOver;
@@ -470,13 +470,21 @@ void GraphicsContext::drawLine(const IntPoint& point1, const IntPoint& point2)
if (paintingDisabled())
return;
+ StrokeStyle style = strokeStyle();
+ Color color = strokeColor();
+ if (style == NoStroke || !color.alpha())
+ return;
+
+ float width = strokeThickness();
+
FloatPoint p1 = point1;
FloatPoint p2 = point2;
+ bool isVerticalLine = (p1.x() == p2.x());
QPainter *p = m_data->p();
const bool antiAlias = p->testRenderHint(QPainter::Antialiasing);
p->setRenderHint(QPainter::Antialiasing, m_data->antiAliasingForRectsAndLines);
- adjustLineToPixelBoundaries(p1, p2, strokeThickness(), strokeStyle());
+ adjustLineToPixelBoundaries(p1, p2, width, style);
IntSize shadowSize;
int shadowBlur;
@@ -489,8 +497,76 @@ void GraphicsContext::drawLine(const IntPoint& point1, const IntPoint& point2)
p->restore();
}
+ int patWidth = 0;
+ switch (style) {
+ case NoStroke:
+ case SolidStroke:
+ break;
+ case DottedStroke:
+ patWidth = (int)width;
+ break;
+ case DashedStroke:
+ patWidth = 3 * (int)width;
+ break;
+ }
+
+ if (patWidth) {
+ p->save();
+
+ // Do a rect fill of our endpoints. This ensures we always have the
+ // appearance of being a border. We then draw the actual dotted/dashed line.
+ if (isVerticalLine) {
+ p->fillRect(FloatRect(p1.x() - width / 2, p1.y() - width, width, width), color);
+ p->fillRect(FloatRect(p2.x() - width / 2, p2.y(), width, width), color);
+ } else {
+ p->fillRect(FloatRect(p1.x() - width, p1.y() - width / 2, width, width), color);
+ p->fillRect(FloatRect(p2.x(), p2.y() - width / 2, width, width), color);
+ }
+
+ // Example: 80 pixels with a width of 30 pixels.
+ // Remainder is 20. The maximum pixels of line we could paint
+ // will be 50 pixels.
+ int distance = (isVerticalLine ? (point2.y() - point1.y()) : (point2.x() - point1.x())) - 2*(int)width;
+ int remainder = distance % patWidth;
+ int coverage = distance - remainder;
+ int numSegments = coverage / patWidth;
+
+ float patternOffset = 0.0f;
+ // Special case 1px dotted borders for speed.
+ if (patWidth == 1)
+ patternOffset = 1.0f;
+ else {
+ bool evenNumberOfSegments = numSegments % 2 == 0;
+ if (remainder)
+ evenNumberOfSegments = !evenNumberOfSegments;
+ if (evenNumberOfSegments) {
+ if (remainder) {
+ patternOffset += patWidth - remainder;
+ patternOffset += remainder / 2;
+ } else
+ patternOffset = patWidth / 2;
+ } else {
+ if (remainder)
+ patternOffset = (patWidth - remainder)/2;
+ }
+ }
+
+ QVector<qreal> dashes;
+ dashes << qreal(patWidth) / width << qreal(patWidth) / width;
+
+ QPen pen = p->pen();
+ pen.setWidthF(width);
+ pen.setCapStyle(Qt::FlatCap);
+ pen.setDashPattern(dashes);
+ pen.setDashOffset(patternOffset / width);
+ p->setPen(pen);
+ }
+
p->drawLine(p1, p2);
+ if (patWidth)
+ p->restore();
+
p->setRenderHint(QPainter::Antialiasing, antiAlias);
}
diff --git a/src/3rdparty/webkit/WebCore/platform/graphics/qt/ImageBufferQt.cpp b/src/3rdparty/webkit/WebCore/platform/graphics/qt/ImageBufferQt.cpp
index d4ab59f..333269e 100644
--- a/src/3rdparty/webkit/WebCore/platform/graphics/qt/ImageBufferQt.cpp
+++ b/src/3rdparty/webkit/WebCore/platform/graphics/qt/ImageBufferQt.cpp
@@ -1,6 +1,7 @@
/*
* Copyright (C) 2006 Nikolas Zimmermann <zimmermann@kde.org>
* Copyright (C) 2008 Holger Hans Peter Freyther
+ * Copyright (C) 2009 Dirk Schulze <krit@webkit.org>
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -31,10 +32,11 @@
#include "GraphicsContext.h"
#include "ImageData.h"
#include "MIMETypeRegistry.h"
-#include "NotImplemented.h"
#include "StillImageQt.h"
#include <QBuffer>
+#include <QColor>
+#include <QImage>
#include <QImageWriter>
#include <QPainter>
#include <QPixmap>
@@ -45,7 +47,24 @@ ImageBufferData::ImageBufferData(const IntSize& size)
: m_pixmap(size)
{
m_pixmap.fill(QColor(Qt::transparent));
- m_painter.set(new QPainter(&m_pixmap));
+
+ QPainter* painter = new QPainter(&m_pixmap);
+ m_painter.set(painter);
+
+ // Since ImageBuffer is used mainly for Canvas, explicitly initialize
+ // its painter's pen and brush with the corresponding canvas defaults
+ // NOTE: keep in sync with CanvasRenderingContext2D::State
+ QPen pen = painter->pen();
+ pen.setColor(Qt::black);
+ pen.setWidth(1);
+ pen.setCapStyle(Qt::FlatCap);
+ pen.setJoinStyle(Qt::MiterJoin);
+ pen.setMiterLimit(10);
+ painter->setPen(pen);
+ QBrush brush = painter->brush();
+ brush.setColor(Qt::black);
+ painter->setBrush(brush);
+ painter->setCompositionMode(QPainter::CompositionMode_SourceOver);
}
ImageBuffer::ImageBuffer(const IntSize& size, bool grayScale, bool& success)
@@ -79,15 +98,109 @@ Image* ImageBuffer::image() const
return m_image.get();
}
-PassRefPtr<ImageData> ImageBuffer::getImageData(const IntRect&) const
+PassRefPtr<ImageData> ImageBuffer::getImageData(const IntRect& rect) const
{
- notImplemented();
- return 0;
+ PassRefPtr<ImageData> result = ImageData::create(rect.width(), rect.height());
+ unsigned char* data = result->data()->data();
+
+ if (rect.x() < 0 || rect.y() < 0 || (rect.x() + rect.width()) > m_size.width() || (rect.y() + rect.height()) > m_size.height())
+ memset(data, 0, result->data()->length());
+
+ int originx = rect.x();
+ int destx = 0;
+ if (originx < 0) {
+ destx = -originx;
+ originx = 0;
+ }
+ int endx = rect.x() + rect.width();
+ if (endx > m_size.width())
+ endx = m_size.width();
+ int numColumns = endx - originx;
+
+ int originy = rect.y();
+ int desty = 0;
+ if (originy < 0) {
+ desty = -originy;
+ originy = 0;
+ }
+ int endy = rect.y() + rect.height();
+ if (endy > m_size.height())
+ endy = m_size.height();
+ int numRows = endy - originy;
+
+ QImage image = m_data.m_pixmap.toImage().convertToFormat(QImage::Format_ARGB32);
+ ASSERT(!image.isNull());
+
+ unsigned destBytesPerRow = 4 * rect.width();
+ unsigned char* destRows = data + desty * destBytesPerRow + destx * 4;
+ for (int y = 0; y < numRows; ++y) {
+ for (int x = 0; x < numColumns; x++) {
+ QRgb value = image.pixel(x + originx, y + originy);
+ int basex = x * 4;
+
+ destRows[basex] = qRed(value);
+ destRows[basex + 1] = qGreen(value);
+ destRows[basex + 2] = qBlue(value);
+ destRows[basex + 3] = qAlpha(value);
+ }
+ destRows += destBytesPerRow;
+ }
+
+ return result;
}
-void ImageBuffer::putImageData(ImageData*, const IntRect&, const IntPoint&)
+void ImageBuffer::putImageData(ImageData* source, const IntRect& sourceRect, const IntPoint& destPoint)
{
- notImplemented();
+ ASSERT(sourceRect.width() > 0);
+ ASSERT(sourceRect.height() > 0);
+
+ int originx = sourceRect.x();
+ int destx = destPoint.x() + sourceRect.x();
+ ASSERT(destx >= 0);
+ ASSERT(destx < m_size.width());
+ ASSERT(originx >= 0);
+ ASSERT(originx <= sourceRect.right());
+
+ int endx = destPoint.x() + sourceRect.right();
+ ASSERT(endx <= m_size.width());
+
+ int numColumns = endx - destx;
+
+ int originy = sourceRect.y();
+ int desty = destPoint.y() + sourceRect.y();
+ ASSERT(desty >= 0);
+ ASSERT(desty < m_size.height());
+ ASSERT(originy >= 0);
+ ASSERT(originy <= sourceRect.bottom());
+
+ int endy = destPoint.y() + sourceRect.bottom();
+ ASSERT(endy <= m_size.height());
+ int numRows = endy - desty;
+
+ unsigned srcBytesPerRow = 4 * source->width();
+
+ bool isPainting = m_data.m_painter->isActive();
+ if (isPainting)
+ m_data.m_painter->end();
+
+ QImage image = m_data.m_pixmap.toImage().convertToFormat(QImage::Format_ARGB32);
+ ASSERT(!image.isNull());
+
+ unsigned char* srcRows = source->data()->data() + originy * srcBytesPerRow + originx * 4;
+ for (int y = 0; y < numRows; ++y) {
+ quint32* scanLine = reinterpret_cast<quint32*>(image.scanLine(y + desty));
+ for (int x = 0; x < numColumns; x++) {
+ int basex = x * 4;
+ scanLine[x + destx] = reinterpret_cast<quint32*>(srcRows + basex)[0];
+ }
+
+ srcRows += srcBytesPerRow;
+ }
+
+ m_data.m_pixmap = QPixmap::fromImage(image);
+
+ if (isPainting)
+ m_data.m_painter->begin(&m_data.m_pixmap);
}
// We get a mimeType here but QImageWriter does not support mimetypes but
diff --git a/src/3rdparty/webkit/WebCore/platform/graphics/qt/ImageDecoderQt.cpp b/src/3rdparty/webkit/WebCore/platform/graphics/qt/ImageDecoderQt.cpp
index 394c7a7..cd32428 100644
--- a/src/3rdparty/webkit/WebCore/platform/graphics/qt/ImageDecoderQt.cpp
+++ b/src/3rdparty/webkit/WebCore/platform/graphics/qt/ImageDecoderQt.cpp
@@ -197,7 +197,8 @@ ImageDecoderQt* ImageDecoderQt::create(const SharedBuffer& data)
}
ImageDecoderQt::ImageDecoderQt(const QString &imageFormat)
- : m_imageFormat(imageFormat)
+ : m_hasAlphaChannel(false)
+ , m_imageFormat(imageFormat)
{
}
@@ -212,6 +213,7 @@ bool ImageDecoderQt::hasFirstImageHeader() const
void ImageDecoderQt::reset()
{
+ m_hasAlphaChannel = false;
m_failed = false;
m_imageList.clear();
m_pixmapCache.clear();
@@ -230,6 +232,9 @@ void ImageDecoderQt::setData(const IncomingData &data, bool allDataReceived)
const ReadContext::ReadResult readResult = readContext.read(allDataReceived);
+ if (hasFirstImageHeader())
+ m_hasAlphaChannel = m_imageList[0].m_image.hasAlphaChannel();
+
if (debugImageDecoderQt)
qDebug() << " read returns " << readResult;
@@ -280,7 +285,7 @@ int ImageDecoderQt::repetitionCount() const
bool ImageDecoderQt::supportsAlpha() const
{
- return hasFirstImageHeader() && m_imageList[0].m_image.hasAlphaChannel();
+ return m_hasAlphaChannel;
}
int ImageDecoderQt::duration(size_t index) const
@@ -314,6 +319,10 @@ QPixmap* ImageDecoderQt::imageAtIndex(size_t index) const
if (!m_pixmapCache.contains(index)) {
m_pixmapCache.insert(index,
QPixmap::fromImage(m_imageList[index].m_image));
+
+ // store null image since the converted pixmap is already in pixmap cache
+ Q_ASSERT(m_imageList[index].m_imageState == ImageComplete);
+ m_imageList[index].m_image = QImage();
}
return &m_pixmapCache[index];
}
diff --git a/src/3rdparty/webkit/WebCore/platform/graphics/qt/ImageDecoderQt.h b/src/3rdparty/webkit/WebCore/platform/graphics/qt/ImageDecoderQt.h
index a2eb6aa..b8c3edd 100644
--- a/src/3rdparty/webkit/WebCore/platform/graphics/qt/ImageDecoderQt.h
+++ b/src/3rdparty/webkit/WebCore/platform/graphics/qt/ImageDecoderQt.h
@@ -81,8 +81,9 @@ private:
int m_duration;
};
+ bool m_hasAlphaChannel;
typedef QList<ImageData> ImageList;
- ImageList m_imageList;
+ mutable ImageList m_imageList;
mutable QHash<int, QPixmap> m_pixmapCache;
int m_loopCount;
QString m_imageFormat;
diff --git a/src/3rdparty/webkit/WebCore/platform/graphics/qt/ImageQt.cpp b/src/3rdparty/webkit/WebCore/platform/graphics/qt/ImageQt.cpp
index be7d1e0..e266c07 100644
--- a/src/3rdparty/webkit/WebCore/platform/graphics/qt/ImageQt.cpp
+++ b/src/3rdparty/webkit/WebCore/platform/graphics/qt/ImageQt.cpp
@@ -109,6 +109,8 @@ void Image::drawPattern(GraphicsContext* ctxt, const FloatRect& tileRect, const
ctxt->save();
ctxt->setCompositeOperation(op);
QPainter* p = ctxt->platformContext();
+ if (!pixmap.hasAlpha() && p->compositionMode() == QPainter::CompositionMode_SourceOver)
+ p->setCompositionMode(QPainter::CompositionMode_Source);
p->setBrushOrigin(phase);
p->fillRect(destRect, b);
ctxt->restore();
@@ -146,6 +148,9 @@ void BitmapImage::draw(GraphicsContext* ctxt, const FloatRect& dst,
QPainter* painter(ctxt->platformContext());
+ if (!image->hasAlpha() && painter->compositionMode() == QPainter::CompositionMode_SourceOver)
+ painter->setCompositionMode(QPainter::CompositionMode_Source);
+
// Test using example site at
// http://www.meyerweb.com/eric/css/edge/complexspiral/demo.html
painter->drawPixmap(dst, *image, src);
diff --git a/src/3rdparty/webkit/WebCore/platform/graphics/qt/PathQt.cpp b/src/3rdparty/webkit/WebCore/platform/graphics/qt/PathQt.cpp
index 90b342e..e68be2b 100644
--- a/src/3rdparty/webkit/WebCore/platform/graphics/qt/PathQt.cpp
+++ b/src/3rdparty/webkit/WebCore/platform/graphics/qt/PathQt.cpp
@@ -1,6 +1,7 @@
/*
- * Copyright (C) 2006 Zack Rusin <zack@kde.org>
- * 2006 Rob Buis <buis@kde.org>
+ * Copyright (C) 2006 Zack Rusin <zack@kde.org>
+ * 2006 Rob Buis <buis@kde.org>
+ * 2009 Dirk Schulze <krit@webkit.org>
*
* All rights reserved.
*
@@ -139,9 +140,72 @@ void Path::addBezierCurveTo(const FloatPoint& cp1, const FloatPoint& cp2, const
void Path::addArcTo(const FloatPoint& p1, const FloatPoint& p2, float radius)
{
- //FIXME: busted
- qWarning("arcTo is busted");
- m_path->arcTo(p1.x(), p1.y(), p2.x(), p2.y(), radius, 90);
+ FloatPoint p0(m_path->currentPosition());
+
+ if ((p1.x() == p0.x() && p1.y() == p0.y()) || (p1.x() == p2.x() && p1.y() == p2.y()) || radius == 0.f) {
+ m_path->lineTo(p1);
+ return;
+ }
+
+ FloatPoint p1p0((p0.x() - p1.x()),(p0.y() - p1.y()));
+ FloatPoint p1p2((p2.x() - p1.x()),(p2.y() - p1.y()));
+ float p1p0_length = sqrtf(p1p0.x() * p1p0.x() + p1p0.y() * p1p0.y());
+ float p1p2_length = sqrtf(p1p2.x() * p1p2.x() + p1p2.y() * p1p2.y());
+
+ double cos_phi = (p1p0.x() * p1p2.x() + p1p0.y() * p1p2.y()) / (p1p0_length * p1p2_length);
+ // all points on a line logic
+ if (cos_phi == -1) {
+ m_path->lineTo(p1);
+ return;
+ }
+ if (cos_phi == 1) {
+ // add infinite far away point
+ unsigned int max_length = 65535;
+ double factor_max = max_length / p1p0_length;
+ FloatPoint ep((p0.x() + factor_max * p1p0.x()), (p0.y() + factor_max * p1p0.y()));
+ m_path->lineTo(ep);
+ return;
+ }
+
+ float tangent = radius / tan(acos(cos_phi) / 2);
+ float factor_p1p0 = tangent / p1p0_length;
+ FloatPoint t_p1p0((p1.x() + factor_p1p0 * p1p0.x()), (p1.y() + factor_p1p0 * p1p0.y()));
+
+ FloatPoint orth_p1p0(p1p0.y(), -p1p0.x());
+ float orth_p1p0_length = sqrt(orth_p1p0.x() * orth_p1p0.x() + orth_p1p0.y() * orth_p1p0.y());
+ float factor_ra = radius / orth_p1p0_length;
+
+ // angle between orth_p1p0 and p1p2 to get the right vector orthographic to p1p0
+ double cos_alpha = (orth_p1p0.x() * p1p2.x() + orth_p1p0.y() * p1p2.y()) / (orth_p1p0_length * p1p2_length);
+ if (cos_alpha < 0.f)
+ orth_p1p0 = FloatPoint(-orth_p1p0.x(), -orth_p1p0.y());
+
+ FloatPoint p((t_p1p0.x() + factor_ra * orth_p1p0.x()), (t_p1p0.y() + factor_ra * orth_p1p0.y()));
+
+ // calculate angles for addArc
+ orth_p1p0 = FloatPoint(-orth_p1p0.x(), -orth_p1p0.y());
+ float sa = acos(orth_p1p0.x() / orth_p1p0_length);
+ if (orth_p1p0.y() < 0.f)
+ sa = 2 * piDouble - sa;
+
+ // anticlockwise logic
+ bool anticlockwise = false;
+
+ float factor_p1p2 = tangent / p1p2_length;
+ FloatPoint t_p1p2((p1.x() + factor_p1p2 * p1p2.x()), (p1.y() + factor_p1p2 * p1p2.y()));
+ FloatPoint orth_p1p2((t_p1p2.x() - p.x()),(t_p1p2.y() - p.y()));
+ float orth_p1p2_length = sqrtf(orth_p1p2.x() * orth_p1p2.x() + orth_p1p2.y() * orth_p1p2.y());
+ float ea = acos(orth_p1p2.x() / orth_p1p2_length);
+ if (orth_p1p2.y() < 0)
+ ea = 2 * piDouble - ea;
+ if ((sa > ea) && ((sa - ea) < piDouble))
+ anticlockwise = true;
+ if ((sa < ea) && ((ea - sa) > piDouble))
+ anticlockwise = true;
+
+ m_path->lineTo(t_p1p0);
+
+ addArc(p, radius, sa, ea, anticlockwise);
}
void Path::closeSubpath()
diff --git a/src/3rdparty/webkit/WebCore/platform/network/qt/QNetworkReplyHandler.cpp b/src/3rdparty/webkit/WebCore/platform/network/qt/QNetworkReplyHandler.cpp
index 2de2125..2c730a6 100644
--- a/src/3rdparty/webkit/WebCore/platform/network/qt/QNetworkReplyHandler.cpp
+++ b/src/3rdparty/webkit/WebCore/platform/network/qt/QNetworkReplyHandler.cpp
@@ -269,8 +269,10 @@ void QNetworkReplyHandler::sendResponseIfNeeded()
const bool isLocalFileReply = (m_reply->url().scheme() == QLatin1String("file"));
int statusCode = m_reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
- if (!isLocalFileReply)
+ if (!isLocalFileReply) {
response.setHTTPStatusCode(statusCode);
+ response.setHTTPStatusText(m_reply->attribute(QNetworkRequest::HttpReasonPhraseAttribute).toByteArray().constData());
+ }
else if (m_reply->error() == QNetworkReply::ContentNotFoundError)
response.setHTTPStatusCode(404);
diff --git a/src/3rdparty/webkit/WebCore/platform/network/qt/ResourceRequestQt.cpp b/src/3rdparty/webkit/WebCore/platform/network/qt/ResourceRequestQt.cpp
index 9308878..c8f6ad5 100644
--- a/src/3rdparty/webkit/WebCore/platform/network/qt/ResourceRequestQt.cpp
+++ b/src/3rdparty/webkit/WebCore/platform/network/qt/ResourceRequestQt.cpp
@@ -41,6 +41,22 @@ QNetworkRequest ResourceRequest::toNetworkRequest() const
request.setRawHeader(name, value);
}
+ switch (cachePolicy()) {
+ case ReloadIgnoringCacheData:
+ request.setAttribute(QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::AlwaysNetwork);
+ break;
+ case ReturnCacheDataElseLoad:
+ request.setAttribute(QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::PreferCache);
+ break;
+ case ReturnCacheDataDontLoad:
+ request.setAttribute(QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::AlwaysCache);
+ break;
+ case UseProtocolCachePolicy:
+ // QNetworkRequest::PreferNetwork
+ default:
+ break;
+ }
+
return request;
}
diff --git a/src/3rdparty/webkit/WebCore/platform/qt/DragDataQt.cpp b/src/3rdparty/webkit/WebCore/platform/qt/DragDataQt.cpp
index 9d95373..218f7be 100644
--- a/src/3rdparty/webkit/WebCore/platform/qt/DragDataQt.cpp
+++ b/src/3rdparty/webkit/WebCore/platform/qt/DragDataQt.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2007, 2008 Apple Inc. All rights reserved.
+ * Copyright (C) 2007, 2008, 2009 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -126,6 +126,10 @@ String DragData::asURL(String* title) const
if (!m_platformDragData)
return String();
QList<QUrl> urls = m_platformDragData->urls();
+
+ if (urls.isEmpty())
+ return String();
+
return urls.first().toString();
}
diff --git a/src/3rdparty/webkit/WebCore/platform/qt/RenderThemeQt.cpp b/src/3rdparty/webkit/WebCore/platform/qt/RenderThemeQt.cpp
index a9da76b..02d17ed 100644
--- a/src/3rdparty/webkit/WebCore/platform/qt/RenderThemeQt.cpp
+++ b/src/3rdparty/webkit/WebCore/platform/qt/RenderThemeQt.cpp
@@ -737,6 +737,10 @@ ControlPart RenderThemeQt::applyTheme(QStyleOption& option, RenderObject* o) con
if (isHovered(o))
option.state |= QStyle::State_MouseOver;
+ option.direction = Qt::LeftToRight;
+ if (o->style() && o->style()->direction() == WebCore::RTL)
+ option.direction = Qt::RightToLeft;
+
ControlPart result = o->style()->appearance();
switch (result) {
diff --git a/src/3rdparty/webkit/WebCore/platform/qt/WheelEventQt.cpp b/src/3rdparty/webkit/WebCore/platform/qt/WheelEventQt.cpp
index cc8acd2..b25ae7a 100644
--- a/src/3rdparty/webkit/WebCore/platform/qt/WheelEventQt.cpp
+++ b/src/3rdparty/webkit/WebCore/platform/qt/WheelEventQt.cpp
@@ -21,7 +21,9 @@
#include "PlatformWheelEvent.h"
#include "PlatformMouseEvent.h"
+#include "Scrollbar.h"
+#include <qapplication.h>
#include <QWheelEvent>
namespace WebCore {
@@ -54,9 +56,14 @@ PlatformWheelEvent::PlatformWheelEvent(QWheelEvent* e)
m_deltaY = (e->delta() / 120);
}
- // FIXME: retrieve the user setting for the number of lines to scroll on each wheel event
- m_deltaX *= horizontalLineMultiplier();
- m_deltaY *= verticalLineMultiplier();
+ m_deltaX *= QApplication::wheelScrollLines();
+ // use the same single scroll step as QTextEdit (in
+ // QTextEditPrivate::init [h,v]bar->setSingleStep )
+ // and divide by the default WebKit scroll step to
+ // get the Qt mouse wheel scroll behavior
+ static const float cDefaultQtScrollStep = 20.f;
+ m_deltaY *= QApplication::wheelScrollLines() *
+ (cDefaultQtScrollStep / cMouseWheelPixelsPerLineStep);
}
#endif // QT_NO_WHEELEVENT
diff --git a/src/3rdparty/webkit/WebCore/plugins/mac/PluginViewMac.cpp b/src/3rdparty/webkit/WebCore/plugins/mac/PluginViewMac.cpp
index e0e178b..3229922 100644
--- a/src/3rdparty/webkit/WebCore/plugins/mac/PluginViewMac.cpp
+++ b/src/3rdparty/webkit/WebCore/plugins/mac/PluginViewMac.cpp
@@ -220,11 +220,11 @@ NPError PluginView::getValueStatic(NPNVariable variable, void* value)
switch (variable) {
case NPNVToolkit:
- *((uint32 *)value) = 0;
+ *static_cast<uint32*>(value) = 0;
return NPERR_NO_ERROR;
case NPNVjavascriptEnabledBool:
- *((uint32 *)value) = true;
+ *static_cast<NPBool*>(value) = true;
return NPERR_NO_ERROR;
default:
@@ -275,7 +275,7 @@ NPError PluginView::getValue(NPNVariable variable, void* value)
}
case NPNVsupportsCoreGraphicsBool:
- *((uint32 *)value) = true;
+ *static_cast<NPBool*>(value) = true;
return NPERR_NO_ERROR;
default:
@@ -299,9 +299,6 @@ void PluginView::show()
setSelfVisible(true);
- if (isParentVisible() && platformPluginWidget())
- platformPluginWidget()->setVisible(true);
-
Widget::show();
}
@@ -311,9 +308,6 @@ void PluginView::hide()
setSelfVisible(false);
- if (isParentVisible() && platformPluginWidget())
- platformPluginWidget()->setVisible(false);
-
Widget::hide();
}
@@ -345,9 +339,6 @@ void PluginView::setParentVisible(bool visible)
return;
Widget::setParentVisible(visible);
-
- if (isSelfVisible() && platformPluginWidget())
- platformPluginWidget()->setVisible(visible);
}
void PluginView::setNPWindowRect(const IntRect&)
diff --git a/src/3rdparty/webkit/WebCore/plugins/qt/PluginViewQt.cpp b/src/3rdparty/webkit/WebCore/plugins/qt/PluginViewQt.cpp
index 5aa8933..c8dd0e5 100644
--- a/src/3rdparty/webkit/WebCore/plugins/qt/PluginViewQt.cpp
+++ b/src/3rdparty/webkit/WebCore/plugins/qt/PluginViewQt.cpp
@@ -301,15 +301,15 @@ NPError PluginView::getValueStatic(NPNVariable variable, void* value)
{
switch (variable) {
case NPNVToolkit:
- *((uint32 *)value) = 0;
+ *static_cast<uint32*>(value) = 0;
return NPERR_NO_ERROR;
case NPNVSupportsXEmbedBool:
- *((uint32 *)value) = true;
+ *static_cast<NPBool*>(value) = true;
return NPERR_NO_ERROR;
case NPNVjavascriptEnabledBool:
- *((uint32 *)value) = true;
+ *static_cast<NPBool*>(value) = true;
return NPERR_NO_ERROR;
default:
diff --git a/src/3rdparty/webkit/WebKit/qt/Api/qwebframe.cpp b/src/3rdparty/webkit/WebKit/qt/Api/qwebframe.cpp
index ae71356..5dc6363 100644
--- a/src/3rdparty/webkit/WebKit/qt/Api/qwebframe.cpp
+++ b/src/3rdparty/webkit/WebKit/qt/Api/qwebframe.cpp
@@ -534,6 +534,8 @@ void QWebFrame::load(const QNetworkRequest &req,
Sets the content of this frame to \a html. \a baseUrl is optional and used to resolve relative
URLs in the document, such as referenced images or stylesheets.
+ The \a html is loaded immediately; external objects are loaded asynchronously.
+
When using this method WebKit assumes that external resources such as JavaScript programs or style
sheets are encoded in UTF-8 unless otherwise specified. For example, the encoding of an external
script can be specified through the charset attribute of the HTML script tag. It is also possible
@@ -558,6 +560,8 @@ void QWebFrame::setHtml(const QString &html, const QUrl &baseUrl)
External objects referenced in the content are located relative to \a baseUrl.
+ The \a data is loaded immediately; external objects are loaded asynchronously.
+
\sa toHtml()
*/
void QWebFrame::setContent(const QByteArray &data, const QString &mimeType, const QUrl &baseUrl)
diff --git a/src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp b/src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp
index 636b6e8..01b68eb 100644
--- a/src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp
+++ b/src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp
@@ -896,14 +896,14 @@ void QWebPagePrivate::inputMethodEvent(QInputMethodEvent *ev)
return;
}
- if (!ev->preeditString().isEmpty()) {
+ if (!ev->commitString().isEmpty())
+ editor->confirmComposition(ev->commitString());
+ else {
QString preedit = ev->preeditString();
// ### FIXME: use the provided QTextCharFormat (use color at least)
Vector<CompositionUnderline> underlines;
underlines.append(CompositionUnderline(0, preedit.length(), Color(0,0,0), false));
editor->setComposition(preedit, underlines, preedit.length(), 0);
- } else if (!ev->commitString().isEmpty()) {
- editor->confirmComposition(ev->commitString());
}
ev->accept();
}
@@ -1095,7 +1095,7 @@ QVariant QWebPage::inputMethodQuery(Qt::InputMethodQuery property) const
This enum describes the types of action which can be performed on the web page.
Actions only have an effect when they are applicable. The availability of
- actions can be be determined by checking \l{QAction::}{enabled()} on the
+ actions can be be determined by checking \l{QAction::}{isEnabled()} on the
action returned by \l{QWebPage::}{action()}.
One method of enabling the text editing, cursor movement, and text selection actions
@@ -1198,18 +1198,18 @@ QVariant QWebPage::inputMethodQuery(Qt::InputMethodQuery property) const
Suppose we have a \c Thumbnail class as follows:
- \snippet doc/src/snippets/webkit/webpage/main.cpp 0
+ \snippet webkitsnippets/webpage/main.cpp 0
The \c Thumbnail's constructor takes in a \a url. We connect our QWebPage
object's \l{QWebPage::}{loadFinished()} signal to our private slot,
\c render().
- \snippet doc/src/snippets/webkit/webpage/main.cpp 1
+ \snippet webkitsnippets/webpage/main.cpp 1
The \c render() function shows how we can paint a thumbnail using a
QWebPage object.
- \snippet doc/src/snippets/webkit/webpage/main.cpp 2
+ \snippet webkitsnippets/webpage/main.cpp 2
We begin by setting the \l{QWebPage::viewportSize()}{viewportSize} and
then we instantiate a QImage object, \c image, with the same size as our
@@ -1450,9 +1450,16 @@ void QWebPage::triggerAction(WebAction action, bool checked)
openNewWindow(url, frame);
break;
}
- case CopyLinkToClipboard:
+ case CopyLinkToClipboard: {
+#if defined(Q_WS_X11)
+ bool oldSelectionMode = Pasteboard::generalPasteboard()->isSelectionMode();
+ Pasteboard::generalPasteboard()->setSelectionMode(true);
+ editor->copyURL(d->hitTestResult.linkUrl(), d->hitTestResult.linkText());
+ Pasteboard::generalPasteboard()->setSelectionMode(oldSelectionMode);
+#endif
editor->copyURL(d->hitTestResult.linkUrl(), d->hitTestResult.linkText());
break;
+ }
case OpenImageInNewWindow:
openNewWindow(d->hitTestResult.imageUrl(), frame);
break;
@@ -2517,7 +2524,7 @@ void QWebPagePrivate::_q_onLoadProgressChanged(int) {
\sa bytesReceived()
*/
quint64 QWebPage::totalBytes() const {
- return d->m_bytesReceived;
+ return d->m_totalBytes;
}
@@ -2527,7 +2534,7 @@ quint64 QWebPage::totalBytes() const {
\sa totalBytes()
*/
quint64 QWebPage::bytesReceived() const {
- return d->m_totalBytes;
+ return d->m_bytesReceived;
}
/*!
diff --git a/src/3rdparty/webkit/WebKit/qt/Api/qwebview.cpp b/src/3rdparty/webkit/WebKit/qt/Api/qwebview.cpp
index ea503a1..9753f4f 100644
--- a/src/3rdparty/webkit/WebKit/qt/Api/qwebview.cpp
+++ b/src/3rdparty/webkit/WebKit/qt/Api/qwebview.cpp
@@ -86,7 +86,7 @@ public:
Qt Widgets, the show() function must be invoked in order to display
QWebView. The snippet below illustrates this:
- \snippet doc/src/snippets/webkit/simple/main.cpp Using QWebView
+ \snippet webkitsnippets/simple/main.cpp Using QWebView
Alternatively, setUrl() can also be used to load a web site. If you have
the HTML content readily available, you can use setHtml() instead.
@@ -289,6 +289,8 @@ void QWebView::load(const QNetworkRequest &request,
External objects such as stylesheets or images referenced in the HTML
document are located relative to \a baseUrl.
+ The \a html is loaded immediately; external objects are loaded asynchronously.
+
When using this method, WebKit assumes that external resources such as
JavaScript programs or style sheets are encoded in UTF-8 unless otherwise
specified. For example, the encoding of an external script can be specified
@@ -309,6 +311,8 @@ void QWebView::setHtml(const QString &html, const QUrl &baseUrl)
External objects referenced in the content are located relative to \a baseUrl.
+ The \a data is loaded immediately; external objects are loaded asynchronously.
+
\sa load(), setHtml(), QWebFrame::toHtml()
*/
void QWebView::setContent(const QByteArray &data, const QString &mimeType, const QUrl &baseUrl)
@@ -321,7 +325,7 @@ void QWebView::setContent(const QByteArray &data, const QString &mimeType, const
It is equivalent to
- \snippet doc/src/snippets/code/src_3rdparty_webkit_WebKit_qt_Api_qwebview.cpp 0
+ \snippet webkitsnippets/qtwebkit_qwebview_snippet.cpp 0
*/
QWebHistory *QWebView::history() const
{
@@ -333,7 +337,7 @@ QWebHistory *QWebView::history() const
It is equivalent to
- \snippet doc/src/snippets/code/src_3rdparty_webkit_WebKit_qt_Api_qwebview.cpp 1
+ \snippet webkitsnippets/qtwebkit_qwebview_snippet.cpp 1
\sa QWebSettings::globalSettings()
*/
@@ -425,7 +429,7 @@ QAction *QWebView::pageAction(QWebPage::WebAction action) const
The following example triggers the copy action and therefore copies any
selected text to the clipboard.
- \snippet doc/src/snippets/code/src_3rdparty_webkit_WebKit_qt_Api_qwebview.cpp 2
+ \snippet webkitsnippets/qtwebkit_qwebview_snippet.cpp 2
\sa pageAction()
*/
@@ -602,7 +606,7 @@ void QWebView::print(QPrinter *printer) const
It is equivalent to
- \snippet doc/src/snippets/code/src_3rdparty_webkit_WebKit_qt_Api_qwebview.cpp 3
+ \snippet webkitsnippets/qtwebkit_qwebview_snippet.cpp 3
\sa reload(), pageAction(), loadFinished()
*/
@@ -618,7 +622,7 @@ void QWebView::stop()
It is equivalent to
- \snippet doc/src/snippets/code/src_3rdparty_webkit_WebKit_qt_Api_qwebview.cpp 4
+ \snippet webkitsnippets/qtwebkit_qwebview_snippet.cpp 4
\sa forward(), pageAction()
*/
@@ -634,7 +638,7 @@ void QWebView::back()
It is equivalent to
- \snippet doc/src/snippets/code/src_3rdparty_webkit_WebKit_qt_Api_qwebview.cpp 5
+ \snippet webkitsnippets/qtwebkit_qwebview_snippet.cpp 5
\sa back(), pageAction()
*/
diff --git a/src/3rdparty/webkit/WebKit/qt/ChangeLog b/src/3rdparty/webkit/WebKit/qt/ChangeLog
index 32d27cd..2aeb8da 100644
--- a/src/3rdparty/webkit/WebKit/qt/ChangeLog
+++ b/src/3rdparty/webkit/WebKit/qt/ChangeLog
@@ -1,3 +1,86 @@
+2009-03-27 Erik L. Bunce <elbunce@xendom.com>
+
+ Reviewed by Simon Hausmann.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24746
+
+ Improved selection tests.
+
+ * tests/qwebpage/tst_qwebpage.cpp:
+ (tst_QWebPage::textSelection):
+
+2009-04-24 Simon Hausmann <simon.hausmann@nokia.com>
+
+ Rubber-stamped by Ariya Hidayat.
+
+ Fix qdoc warning about link to QAction::isEnabled.
+
+ * Api/qwebpage.cpp:
+
+2009-04-24 Simon Hausmann <simon.hausmann@nokia.com>
+
+ Reviewed by Ariya Hidayat.
+
+ Added support for generating API docs in the Qt build using "make docs"
+
+ Added code snippets and overview from the Qt sources references in the API docs.
+
+ * Api/qwebpage.cpp: Adjust paths to snippets.
+ * Api/qwebview.cpp: Ditto.
+ * docs/docs.pri: Added.
+ * docs/qtwebkit.qdoc: Added.
+ * docs/qtwebkit.qdocconf: Added.
+ * docs/webkitsnippets/qtwebkit_build_snippet.qdoc: Added.
+ * docs/webkitsnippets/qtwebkit_qwebview_snippet.cpp: Added.
+ * docs/webkitsnippets/simple/main.cpp: Added.
+ * docs/webkitsnippets/simple/simple.pro: Added.
+ * docs/webkitsnippets/webpage/main.cpp: Added.
+ * docs/webkitsnippets/webpage/webpage.pro: Added.
+
+2009-03-02 Benjamin C Meyer <benjamin.meyer@torchmobile.com>
+
+ Reviewed by George Staikos.
+
+ https://bugs.webkit.org/show_bug.cgi?id=21230
+ On X11 match the behavior of Firefox and also copy the url to the
+ clipboard selection when the action Copy Link Location is executed.
+
+ * Api/qwebpage.cpp:
+ (QWebPage::triggerAction):
+
+2009-03-07 Adam Treat <adam.treat@torchmobile.com>
+
+ Reviewed by Cameron Zwarich.
+
+ These methods are clearly returning the wrong values as the two were
+ returning swapped information.
+
+ * Api/qwebpage.cpp:
+ (QWebPage::totalBytes):
+ (QWebPage::bytesReceived):
+
+2009-04-02 Takumi Asaki <takumi.asaki@nokia.com>
+
+ Reviewed by Simon Hausmann.
+
+ Fix pre-edit handling of text fields with input methods.
+
+ The input method sends an empty preeditString() if all characters of
+ the preedit should be deleted. So inputMethodEvent() has to use
+ preeditString() if it's empty.
+
+ * Api/qwebpage.cpp:
+ (QWebPagePrivate::inputMethodEvent):
+
+2009-03-30 Simon Hausmann <simon.hausmann@nokia.com>
+
+ Rubber-stamped by Tor Arne Vestbø.
+
+ Document that setHtml/setContent loads only the html/data immediately, not external objects.
+
+ * Api/qwebframe.cpp:
+ * Api/qwebview.cpp:
+
2009-03-26 Simon Hausmann <simon.hausmann@nokia.com>
Rubber-stamped by Tor Arne Vestbø.
diff --git a/src/3rdparty/webkit/WebKit/qt/docs/docs.pri b/src/3rdparty/webkit/WebKit/qt/docs/docs.pri
new file mode 100644
index 0000000..4a8c165
--- /dev/null
+++ b/src/3rdparty/webkit/WebKit/qt/docs/docs.pri
@@ -0,0 +1,15 @@
+include(../../../WebKit.pri)
+
+unix {
+ QDOC = SRCDIR=$$PWD/../../.. OUTPUT_DIR=$$OUTPUT_DIR $$(QTDIR)/tools/qdoc3/qdoc3
+} else {
+ QDOC = $$(QTDIR)\tools\qdoc3\release\qdoc3.exe
+}
+
+unix {
+docs.commands = $$QDOC $$PWD/qtwebkit.qdocconf
+} else {
+docs.commands = \"$$QDOC $$PWD/qtwebkit.qdocconf\"
+}
+
+QMAKE_EXTRA_TARGETS += docs
diff --git a/doc/src/qtwebkit.qdoc b/src/3rdparty/webkit/WebKit/qt/docs/qtwebkit.qdoc
index 0092950..06305e0 100644
--- a/doc/src/qtwebkit.qdoc
+++ b/src/3rdparty/webkit/WebKit/qt/docs/qtwebkit.qdoc
@@ -59,7 +59,7 @@
project file ensures that an application is compiled and linked
appropriately:
- \snippet doc/src/snippets/code/doc_src_qtwebkit.qdoc 0
+ \snippet webkitsnippets/qtwebkit_build_snippet.qdoc 0
This line is necessary because only the QtCore and QtGui modules are used
in the default build process.
@@ -67,7 +67,7 @@
To include the definitions of the module's classes, use the following
directive:
- \snippet doc/src/snippets/code/doc_src_qtwebkit.qdoc 1
+ \snippet webkitsnippets/qtwebkit_build_snippet.qdoc 1
\section1 Architecture
@@ -75,7 +75,7 @@
widget it can be embedded into your forms or a graphics view, and it
provides convenience functions for downloading and rendering web sites.
- \snippet snippets/webkit/simple/main.cpp Using QWebView
+ \snippet webkitsnippets/simple/main.cpp Using QWebView
QWebView acts as a view onto Web pages, each of which is represented by an
instance of the QWebPage class. QWebPage provides access to the document
diff --git a/src/3rdparty/webkit/WebKit/qt/docs/qtwebkit.qdocconf b/src/3rdparty/webkit/WebKit/qt/docs/qtwebkit.qdocconf
new file mode 100644
index 0000000..e60e586
--- /dev/null
+++ b/src/3rdparty/webkit/WebKit/qt/docs/qtwebkit.qdocconf
@@ -0,0 +1,195 @@
+# Run qdoc from the directory that contains this file.
+
+project = qtwebkit
+description = "Qt WebKit API Documentation"
+
+headerdirs = $SRCDIR/WebKit/qt/Api
+sourcedirs = $SRCDIR/WebKit/qt/Api $SRCDIR/WebKit/qt/docs
+outputdir = $OUTPUT_DIR/doc/html
+outputformats = HTML
+sources.fileextensions = "*.cpp *.doc *.qdoc *.h"
+exampledirs = $SRCDIR/WebKit/qt/docs
+
+indexes = $QTDIR/doc/html/qt.index
+
+# macros.qdocconf
+
+macro.aring.HTML = "&aring;"
+macro.Auml.HTML = "&Auml;"
+macro.author = "\\bold{Author:}"
+macro.br.HTML = "<br />"
+macro.BR.HTML = "<br />"
+macro.aacute.HTML = "&aacute;"
+macro.eacute.HTML = "&eacute;"
+macro.iacute.HTML = "&iacute;"
+macro.gui = "\\bold"
+macro.hr.HTML = "<hr />"
+macro.key = "\\bold"
+macro.menu = "\\bold"
+macro.note = "\\bold{Note:}"
+macro.oslash.HTML = "&oslash;"
+macro.ouml.HTML = "&ouml;"
+macro.QA = "\\e{Qt Assistant}"
+macro.QD = "\\e{Qt Designer}"
+macro.QL = "\\e{Qt Linguist}"
+macro.param = "\\e"
+macro.raisedaster.HTML = "<sup>*</sup>"
+macro.reg.HTML = "<sup>&reg;</sup>"
+macro.return = "Returns"
+macro.starslash = "\\c{*/}"
+macro.uuml.HTML = "&uuml;"
+macro.mdash.HTML = "&mdash;"
+
+# compat.qdocconf
+
+alias.i = e
+alias.include = input
+
+macro.0 = "\\\\0"
+macro.b = "\\\\b"
+macro.n = "\\\\n"
+macro.r = "\\\\r"
+macro.i = "\\o"
+macro.i11 = "\\o{1,1}"
+macro.i12 = "\\o{1,2}"
+macro.i13 = "\\o{1,3}"
+macro.i14 = "\\o{1,4}"
+macro.i15 = "\\o{1,5}"
+macro.i16 = "\\o{1,6}"
+macro.i17 = "\\o{1,7}"
+macro.i18 = "\\o{1,8}"
+macro.i19 = "\\o{1,9}"
+macro.i21 = "\\o{2,1}"
+macro.i31 = "\\o{3,1}"
+macro.i41 = "\\o{4,1}"
+macro.i51 = "\\o{5,1}"
+macro.i61 = "\\o{6,1}"
+macro.i71 = "\\o{7,1}"
+macro.i81 = "\\o{8,1}"
+macro.i91 = "\\o{9,1}"
+macro.img = "\\image"
+macro.endquote = "\\endquotation"
+
+spurious = "Missing comma in .*" \
+ "Missing pattern .*"
+
+# Doxygen compatibility commands
+
+macro.see = "\\sa"
+macro.function = "\\fn"
+
+# qt-cpp-ignore.qdocconf
+
+Cpp.ignoretokens = QAXFACTORY_EXPORT \
+ QDESIGNER_COMPONENTS_LIBRARY \
+ QDESIGNER_EXTENSION_LIBRARY \
+ QDESIGNER_SDK_LIBRARY \
+ QDESIGNER_SHARED_LIBRARY \
+ QDESIGNER_UILIB_LIBRARY \
+ QM_EXPORT_CANVAS \
+ QM_EXPORT_DNS \
+ QM_EXPORT_DOM \
+ QM_EXPORT_FTP \
+ QM_EXPORT_HTTP \
+ QM_EXPORT_ICONVIEW \
+ QM_EXPORT_NETWORK \
+ QM_EXPORT_OPENGL \
+ QM_EXPORT_SQL \
+ QM_EXPORT_TABLE \
+ QM_EXPORT_WORKSPACE \
+ QM_EXPORT_XML \
+ QT_ASCII_CAST_WARN \
+ QT_ASCII_CAST_WARN_CONSTRUCTOR \
+ QT_BEGIN_HEADER \
+ QT_DESIGNER_STATIC \
+ QT_END_HEADER \
+ QT_FASTCALL \
+ QT_WIDGET_PLUGIN_EXPORT \
+ Q_COMPAT_EXPORT \
+ Q_CORE_EXPORT \
+ Q_EXPLICIT \
+ Q_EXPORT \
+ Q_EXPORT_CODECS_CN \
+ Q_EXPORT_CODECS_JP \
+ Q_EXPORT_CODECS_KR \
+ Q_EXPORT_PLUGIN \
+ Q_GFX_INLINE \
+ Q_GUI_EXPORT \
+ Q_GUI_EXPORT_INLINE \
+ Q_GUI_EXPORT_STYLE_CDE \
+ Q_GUI_EXPORT_STYLE_COMPACT \
+ Q_GUI_EXPORT_STYLE_MAC \
+ Q_GUI_EXPORT_STYLE_MOTIF \
+ Q_GUI_EXPORT_STYLE_MOTIFPLUS \
+ Q_GUI_EXPORT_STYLE_PLATINUM \
+ Q_GUI_EXPORT_STYLE_POCKETPC \
+ Q_GUI_EXPORT_STYLE_SGI \
+ Q_GUI_EXPORT_STYLE_WINDOWS \
+ Q_GUI_EXPORT_STYLE_WINDOWSXP \
+ QHELP_EXPORT \
+ Q_INLINE_TEMPLATE \
+ Q_INTERNAL_WIN_NO_THROW \
+ Q_NETWORK_EXPORT \
+ Q_OPENGL_EXPORT \
+ Q_OUTOFLINE_TEMPLATE \
+ Q_SQL_EXPORT \
+ Q_SVG_EXPORT \
+ Q_SCRIPT_EXPORT \
+ Q_TESTLIB_EXPORT \
+ Q_TYPENAME \
+ Q_XML_EXPORT \
+ Q_XMLSTREAM_EXPORT \
+ Q_XMLPATTERNS_EXPORT \
+ QDBUS_EXPORT \
+ QT_BEGIN_NAMESPACE \
+ QT_BEGIN_INCLUDE_NAMESPACE \
+ QT_END_NAMESPACE \
+ QT_END_INCLUDE_NAMESPACE \
+ PHONON_EXPORT \
+ EXTENSIONSYSTEM_EXPORT
+Cpp.ignoredirectives = Q_DECLARE_HANDLE \
+ Q_DECLARE_INTERFACE \
+ Q_DECLARE_METATYPE \
+ Q_DECLARE_OPERATORS_FOR_FLAGS \
+ Q_DECLARE_PRIVATE \
+ Q_DECLARE_PUBLIC \
+ Q_DECLARE_SHARED \
+ Q_DECLARE_TR_FUNCTIONS \
+ Q_DECLARE_TYPEINFO \
+ Q_DISABLE_COPY \
+ QT_FORWARD_DECLARE_CLASS \
+ Q_DUMMY_COMPARISON_OPERATOR \
+ Q_ENUMS \
+ Q_FLAGS \
+ Q_INTERFACES \
+ __attribute__ \
+ K_DECLARE_PRIVATE \
+ PHONON_OBJECT \
+ PHONON_HEIR
+
+
+
+HTML.style = "" \
+ "h3.fn,span.fn { margin-left: 1cm; text-indent: -1cm; }"\
+ "a:link { color: #004faf; text-decoration: none }"\
+ "a:visited { color: #672967; text-decoration: none }"\
+ "td.postheader { font-family: sans-serif }"\
+ "tr.address { font-family: sans-serif }"\
+ "body { background: #ffffff; color: black }"\
+ "table tr.odd { background: #f0f0f0; color: black; }"\
+ "table tr.even { background: #e4e4e4; color: black; }"\
+ "table.annotated th { padding: 3px; text-align: left }"\
+ "table.annotated td { padding: 3px; } "\
+ "table tr pre { padding-top: none; padding-bottom: none; padding-left: none; padding-right: none; border: none; background: none }"\
+ "tr.qt-style { background: #a2c511; color: black }"\
+ "body pre { padding: 0.2em; border: #e7e7e7 1px solid; background: #f1f1f1; color: black }"\
+ "span.preprocessor, span.preprocessor a { color: darkblue; }"\
+ "span.comment { color: darkred; font-style: italic }"\
+ "span.string,span.char { color: darkgreen; }"\
+ ".title { text-align: center }"\
+ ".subtitle { font-size: 0.8em }"\
+ ".small-subtitle { font-size: 0.65em }"
+
+HTML.postheader = ""
+
+HTML.footer = ""
diff --git a/doc/src/snippets/code/doc_src_qtwebkit.qdoc b/src/3rdparty/webkit/WebKit/qt/docs/webkitsnippets/qtwebkit_build_snippet.qdoc
index d4fc2bd..d4fc2bd 100644
--- a/doc/src/snippets/code/doc_src_qtwebkit.qdoc
+++ b/src/3rdparty/webkit/WebKit/qt/docs/webkitsnippets/qtwebkit_build_snippet.qdoc
diff --git a/doc/src/snippets/code/src_3rdparty_webkit_WebKit_qt_Api_qwebview.cpp b/src/3rdparty/webkit/WebKit/qt/docs/webkitsnippets/qtwebkit_qwebview_snippet.cpp
index f04cd29..f04cd29 100644
--- a/doc/src/snippets/code/src_3rdparty_webkit_WebKit_qt_Api_qwebview.cpp
+++ b/src/3rdparty/webkit/WebKit/qt/docs/webkitsnippets/qtwebkit_qwebview_snippet.cpp
diff --git a/src/3rdparty/webkit/WebKit/qt/docs/webkitsnippets/simple/main.cpp b/src/3rdparty/webkit/WebKit/qt/docs/webkitsnippets/simple/main.cpp
new file mode 100644
index 0000000..82f5b6c
--- /dev/null
+++ b/src/3rdparty/webkit/WebKit/qt/docs/webkitsnippets/simple/main.cpp
@@ -0,0 +1,34 @@
+/*
+ Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies)
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+*/
+
+#include <QApplication>
+#include <QUrl>
+#include <QWebView>
+
+int main(int argc, char *argv[])
+{
+ QApplication app(argc, argv);
+ QWidget *parent = 0;
+//! [Using QWebView]
+ QWebView *view = new QWebView(parent);
+ view->load(QUrl("http://qtsoftware.com/"));
+ view->show();
+//! [Using QWebView]
+ return app.exec();
+}
diff --git a/doc/src/snippets/webkit/simple/simple.pro b/src/3rdparty/webkit/WebKit/qt/docs/webkitsnippets/simple/simple.pro
index 61cd3bf..61cd3bf 100644
--- a/doc/src/snippets/webkit/simple/simple.pro
+++ b/src/3rdparty/webkit/WebKit/qt/docs/webkitsnippets/simple/simple.pro
diff --git a/doc/src/snippets/webkit/webpage/main.cpp b/src/3rdparty/webkit/WebKit/qt/docs/webkitsnippets/webpage/main.cpp
index b433ac2..b91bc30 100644
--- a/doc/src/snippets/webkit/webpage/main.cpp
+++ b/src/3rdparty/webkit/WebKit/qt/docs/webkitsnippets/webpage/main.cpp
@@ -1,3 +1,22 @@
+/*
+ Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies)
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+*/
+
#include <QtGui>
#include <QWebPage>
#include <QWebFrame>
diff --git a/doc/src/snippets/webkit/webpage/webpage.pro b/src/3rdparty/webkit/WebKit/qt/docs/webkitsnippets/webpage/webpage.pro
index fcad03b..fcad03b 100644
--- a/doc/src/snippets/webkit/webpage/webpage.pro
+++ b/src/3rdparty/webkit/WebKit/qt/docs/webkitsnippets/webpage/webpage.pro
diff --git a/src/3rdparty/webkit/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp b/src/3rdparty/webkit/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp
index d85e880..620aa31 100644
--- a/src/3rdparty/webkit/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp
+++ b/src/3rdparty/webkit/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp
@@ -106,6 +106,8 @@ private slots:
void textSelection();
void textEditing();
+ void requestCache();
+
private:
@@ -870,14 +872,6 @@ void tst_QWebPage::textSelection()
"<p>May the source<br/>be with you!</p></body></html>");
page->mainFrame()->setHtml(content);
- // this will select the first paragraph
- QString script = "var range = document.createRange(); " \
- "var node = document.getElementById(\"one\"); " \
- "range.selectNode(node); " \
- "getSelection().addRange(range);";
- page->mainFrame()->evaluateJavaScript(script);
- QCOMPARE(page->selectedText().trimmed(), QString::fromLatin1("The quick brown fox"));
-
// these actions must exist
QVERIFY(page->action(QWebPage::SelectAll) != 0);
QVERIFY(page->action(QWebPage::SelectNextChar) != 0);
@@ -893,7 +887,8 @@ void tst_QWebPage::textSelection()
QVERIFY(page->action(QWebPage::SelectStartOfDocument) != 0);
QVERIFY(page->action(QWebPage::SelectEndOfDocument) != 0);
- // right now they are disabled because contentEditable is false
+ // right now they are disabled because contentEditable is false and
+ // there isn't an existing selection to modify
QCOMPARE(page->action(QWebPage::SelectNextChar)->isEnabled(), false);
QCOMPARE(page->action(QWebPage::SelectPreviousChar)->isEnabled(), false);
QCOMPARE(page->action(QWebPage::SelectNextWord)->isEnabled(), false);
@@ -910,11 +905,37 @@ void tst_QWebPage::textSelection()
// ..but SelectAll is awalys enabled
QCOMPARE(page->action(QWebPage::SelectAll)->isEnabled(), true);
+ // this will select the first paragraph
+ QString selectScript = "var range = document.createRange(); " \
+ "var node = document.getElementById(\"one\"); " \
+ "range.selectNode(node); " \
+ "getSelection().addRange(range);";
+ page->mainFrame()->evaluateJavaScript(selectScript);
+ QCOMPARE(page->selectedText().trimmed(), QString::fromLatin1("The quick brown fox"));
+
+ // here the actions are enabled after a selection has been created
+ QCOMPARE(page->action(QWebPage::SelectNextChar)->isEnabled(), true);
+ QCOMPARE(page->action(QWebPage::SelectPreviousChar)->isEnabled(), true);
+ QCOMPARE(page->action(QWebPage::SelectNextWord)->isEnabled(), true);
+ QCOMPARE(page->action(QWebPage::SelectPreviousWord)->isEnabled(), true);
+ QCOMPARE(page->action(QWebPage::SelectNextLine)->isEnabled(), true);
+ QCOMPARE(page->action(QWebPage::SelectPreviousLine)->isEnabled(), true);
+ QCOMPARE(page->action(QWebPage::SelectStartOfLine)->isEnabled(), true);
+ QCOMPARE(page->action(QWebPage::SelectEndOfLine)->isEnabled(), true);
+ QCOMPARE(page->action(QWebPage::SelectStartOfBlock)->isEnabled(), true);
+ QCOMPARE(page->action(QWebPage::SelectEndOfBlock)->isEnabled(), true);
+ QCOMPARE(page->action(QWebPage::SelectStartOfDocument)->isEnabled(), true);
+ QCOMPARE(page->action(QWebPage::SelectEndOfDocument)->isEnabled(), true);
+
// make it editable before navigating the cursor
page->setContentEditable(true);
+ // cursor will be before the word "The", this makes sure there is a charet
+ page->triggerAction(QWebPage::MoveToStartOfDocument);
+ QVERIFY(page->isSelectionCollapsed());
+ QCOMPARE(page->selectionStartOffset(), 0);
+
// here the actions are enabled after contentEditable is true
- QCOMPARE(page->action(QWebPage::SelectAll)->isEnabled(), true);
QCOMPARE(page->action(QWebPage::SelectNextChar)->isEnabled(), true);
QCOMPARE(page->action(QWebPage::SelectPreviousChar)->isEnabled(), true);
QCOMPARE(page->action(QWebPage::SelectNextWord)->isEnabled(), true);
@@ -989,6 +1010,32 @@ void tst_QWebPage::textEditing()
delete page;
}
+void tst_QWebPage::requestCache()
+{
+ TestPage page;
+ QSignalSpy loadSpy(&page, SIGNAL(loadFinished(bool)));
+
+ page.mainFrame()->setUrl(QString("data:text/html,<a href=\"data:text/html,Reached\" target=\"_blank\">Click me</a>"));
+ QTRY_COMPARE(loadSpy.count(), 1);
+ QTRY_COMPARE(page.navigations.count(), 1);
+
+ page.mainFrame()->setUrl(QString("data:text/html,<a href=\"data:text/html,Reached\" target=\"_blank\">Click me2</a>"));
+ QTRY_COMPARE(loadSpy.count(), 2);
+ QTRY_COMPARE(page.navigations.count(), 2);
+
+ page.triggerAction(QWebPage::Stop);
+ QVERIFY(page.history()->canGoBack());
+ page.triggerAction(QWebPage::Back);
+
+ QTRY_COMPARE(loadSpy.count(), 3);
+ QTRY_COMPARE(page.navigations.count(), 3);
+ QCOMPARE(page.navigations.at(0).request.attribute(QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::PreferNetwork).toInt(),
+ (int)QNetworkRequest::PreferNetwork);
+ QCOMPARE(page.navigations.at(1).request.attribute(QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::PreferNetwork).toInt(),
+ (int)QNetworkRequest::PreferNetwork);
+ QCOMPARE(page.navigations.at(2).request.attribute(QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::PreferNetwork).toInt(),
+ (int)QNetworkRequest::PreferCache);
+}
QTEST_MAIN(tst_QWebPage)
#include "tst_qwebpage.moc"
diff --git a/src/activeqt/container/container.pro b/src/activeqt/container/container.pro
index ceedacf..d654f92 100644
--- a/src/activeqt/container/container.pro
+++ b/src/activeqt/container/container.pro
@@ -21,25 +21,21 @@ LIBS += -lole32 -loleaut32
!wince*:LIBS += -luser32 -lgdi32 -ladvapi32
win32-g++:LIBS += -luuid
-contains(QT_EDITION, OpenSource|Console) {
- message( "You are not licensed to use ActiveQt." )
-} else {
- HEADERS = ../control/qaxaggregated.h \
- qaxbase.h \
- qaxwidget.h \
- qaxobject.h \
- qaxscript.h \
- qaxselect.h \
- ../shared/qaxtypes.h
-
- SOURCES = qaxbase.cpp \
- qaxdump.cpp \
- qaxwidget.cpp \
- qaxobject.cpp \
- qaxscript.cpp \
- qaxscriptwrapper.cpp \
- qaxselect.cpp \
- ../shared/qaxtypes.cpp
-
- FORMS = qaxselect.ui
-}
+HEADERS = ../control/qaxaggregated.h \
+ qaxbase.h \
+ qaxwidget.h \
+ qaxobject.h \
+ qaxscript.h \
+ qaxselect.h \
+ ../shared/qaxtypes.h
+
+SOURCES = qaxbase.cpp \
+ qaxdump.cpp \
+ qaxwidget.cpp \
+ qaxobject.cpp \
+ qaxscript.cpp \
+ qaxscriptwrapper.cpp \
+ qaxselect.cpp \
+ ../shared/qaxtypes.cpp
+
+FORMS = qaxselect.ui
diff --git a/src/activeqt/control/control.pro b/src/activeqt/control/control.pro
index 65b0251..bf3647e 100644
--- a/src/activeqt/control/control.pro
+++ b/src/activeqt/control/control.pro
@@ -24,20 +24,16 @@ win32-borland:DEFINES += QT_NEEDS_QMAIN
LIBS += -luser32 -lole32 -loleaut32 -lgdi32
win32-g++:LIBS += -luuid
-contains(QT_EDITION, OpenSource|Console) {
- message( "You are not licensed to use ActiveQt." )
-} else {
- HEADERS = qaxaggregated.h \
- qaxbindable.h \
- qaxfactory.h \
- ../shared/qaxtypes.h
-
- SOURCES = qaxserver.cpp \
- qaxserverbase.cpp \
- qaxbindable.cpp \
- qaxfactory.cpp \
- qaxservermain.cpp \
- qaxserverdll.cpp \
- qaxmain.cpp \
- ../shared/qaxtypes.cpp
-}
+HEADERS = qaxaggregated.h \
+ qaxbindable.h \
+ qaxfactory.h \
+ ../shared/qaxtypes.h
+
+SOURCES = qaxserver.cpp \
+ qaxserverbase.cpp \
+ qaxbindable.cpp \
+ qaxfactory.cpp \
+ qaxservermain.cpp \
+ qaxserverdll.cpp \
+ qaxmain.cpp \
+ ../shared/qaxtypes.cpp
diff --git a/src/corelib/arch/qatomic_mips.h b/src/corelib/arch/qatomic_mips.h
index b263aab..ea9954b 100644
--- a/src/corelib/arch/qatomic_mips.h
+++ b/src/corelib/arch/qatomic_mips.h
@@ -103,16 +103,25 @@ Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::isFetchAndAddWaitFree()
#if defined(Q_CC_GNU) && !defined(Q_OS_IRIX)
+#if _MIPS_SIM == _ABIO32
+#define SET_MIPS2 ".set mips2\n\t"
+#else
+#define SET_MIPS2
+#endif
+
inline bool QBasicAtomicInt::ref()
{
register int originalValue;
register int newValue;
- asm volatile("0:\n"
+ asm volatile(".set push\n"
+ SET_MIPS2
+ "0:\n"
"ll %[originalValue], %[_q_value]\n"
"addiu %[newValue], %[originalValue], %[one]\n"
"sc %[newValue], %[_q_value]\n"
"beqz %[newValue], 0b\n"
"nop\n"
+ ".set pop\n"
: [originalValue] "=&r" (originalValue),
[_q_value] "+m" (_q_value),
[newValue] "=&r" (newValue)
@@ -125,12 +134,15 @@ inline bool QBasicAtomicInt::deref()
{
register int originalValue;
register int newValue;
- asm volatile("0:\n"
+ asm volatile(".set push\n"
+ SET_MIPS2
+ "0:\n"
"ll %[originalValue], %[_q_value]\n"
"addiu %[newValue], %[originalValue], %[minusOne]\n"
"sc %[newValue], %[_q_value]\n"
"beqz %[newValue], 0b\n"
"nop\n"
+ ".set pop\n"
: [originalValue] "=&r" (originalValue),
[_q_value] "+m" (_q_value),
[newValue] "=&r" (newValue)
@@ -143,7 +155,9 @@ inline bool QBasicAtomicInt::testAndSetRelaxed(int expectedValue, int newValue)
{
register int result;
register int tempValue;
- asm volatile("0:\n"
+ asm volatile(".set push\n"
+ SET_MIPS2
+ "0:\n"
"ll %[result], %[_q_value]\n"
"xor %[result], %[result], %[expectedValue]\n"
"bnez %[result], 0f\n"
@@ -153,6 +167,7 @@ inline bool QBasicAtomicInt::testAndSetRelaxed(int expectedValue, int newValue)
"beqz %[tempValue], 0b\n"
"nop\n"
"0:\n"
+ ".set pop\n"
: [result] "=&r" (result),
[tempValue] "=&r" (tempValue),
[_q_value] "+m" (_q_value)
@@ -166,7 +181,9 @@ inline bool QBasicAtomicInt::testAndSetAcquire(int expectedValue, int newValue)
{
register int result;
register int tempValue;
- asm volatile("0:\n"
+ asm volatile(".set push\n"
+ SET_MIPS2
+ "0:\n"
"ll %[result], %[_q_value]\n"
"xor %[result], %[result], %[expectedValue]\n"
"bnez %[result], 0f\n"
@@ -177,6 +194,7 @@ inline bool QBasicAtomicInt::testAndSetAcquire(int expectedValue, int newValue)
"nop\n"
"sync\n"
"0:\n"
+ ".set pop\n"
: [result] "=&r" (result),
[tempValue] "=&r" (tempValue),
[_q_value] "+m" (_q_value)
@@ -190,7 +208,9 @@ inline bool QBasicAtomicInt::testAndSetRelease(int expectedValue, int newValue)
{
register int result;
register int tempValue;
- asm volatile("sync\n"
+ asm volatile(".set push\n"
+ SET_MIPS2
+ "sync\n"
"0:\n"
"ll %[result], %[_q_value]\n"
"xor %[result], %[result], %[expectedValue]\n"
@@ -201,6 +221,7 @@ inline bool QBasicAtomicInt::testAndSetRelease(int expectedValue, int newValue)
"beqz %[tempValue], 0b\n"
"nop\n"
"0:\n"
+ ".set pop\n"
: [result] "=&r" (result),
[tempValue] "=&r" (tempValue),
[_q_value] "+m" (_q_value)
@@ -219,12 +240,15 @@ inline int QBasicAtomicInt::fetchAndStoreRelaxed(int newValue)
{
register int originalValue;
register int tempValue;
- asm volatile("0:\n"
+ asm volatile(".set push\n"
+ SET_MIPS2
+ "0:\n"
"ll %[originalValue], %[_q_value]\n"
"move %[tempValue], %[newValue]\n"
"sc %[tempValue], %[_q_value]\n"
"beqz %[tempValue], 0b\n"
"nop\n"
+ ".set pop\n"
: [originalValue] "=&r" (originalValue),
[tempValue] "=&r" (tempValue),
[_q_value] "+m" (_q_value)
@@ -237,13 +261,16 @@ inline int QBasicAtomicInt::fetchAndStoreAcquire(int newValue)
{
register int originalValue;
register int tempValue;
- asm volatile("0:\n"
+ asm volatile(".set push\n"
+ SET_MIPS2
+ "0:\n"
"ll %[originalValue], %[_q_value]\n"
"move %[tempValue], %[newValue]\n"
"sc %[tempValue], %[_q_value]\n"
"beqz %[tempValue], 0b\n"
"nop\n"
"sync\n"
+ ".set pop\n"
: [originalValue] "=&r" (originalValue),
[tempValue] "=&r" (tempValue),
[_q_value] "+m" (_q_value)
@@ -256,13 +283,16 @@ inline int QBasicAtomicInt::fetchAndStoreRelease(int newValue)
{
register int originalValue;
register int tempValue;
- asm volatile("sync\n"
+ asm volatile(".set push\n"
+ SET_MIPS2
+ "sync\n"
"0:\n"
"ll %[originalValue], %[_q_value]\n"
"move %[tempValue], %[newValue]\n"
"sc %[tempValue], %[_q_value]\n"
"beqz %[tempValue], 0b\n"
"nop\n"
+ ".set pop\n"
: [originalValue] "=&r" (originalValue),
[tempValue] "=&r" (tempValue),
[_q_value] "+m" (_q_value)
@@ -280,12 +310,15 @@ inline int QBasicAtomicInt::fetchAndAddRelaxed(int valueToAdd)
{
register int originalValue;
register int newValue;
- asm volatile("0:\n"
+ asm volatile(".set push\n"
+ SET_MIPS2
+ "0:\n"
"ll %[originalValue], %[_q_value]\n"
"addu %[newValue], %[originalValue], %[valueToAdd]\n"
"sc %[newValue], %[_q_value]\n"
"beqz %[newValue], 0b\n"
"nop\n"
+ ".set pop\n"
: [originalValue] "=&r" (originalValue),
[_q_value] "+m" (_q_value),
[newValue] "=&r" (newValue)
@@ -298,13 +331,16 @@ inline int QBasicAtomicInt::fetchAndAddAcquire(int valueToAdd)
{
register int originalValue;
register int newValue;
- asm volatile("0:\n"
+ asm volatile(".set push\n"
+ SET_MIPS2
+ "0:\n"
"ll %[originalValue], %[_q_value]\n"
"addu %[newValue], %[originalValue], %[valueToAdd]\n"
"sc %[newValue], %[_q_value]\n"
"beqz %[newValue], 0b\n"
"nop\n"
"sync\n"
+ ".set pop\n"
: [originalValue] "=&r" (originalValue),
[_q_value] "+m" (_q_value),
[newValue] "=&r" (newValue)
@@ -317,13 +353,16 @@ inline int QBasicAtomicInt::fetchAndAddRelease(int valueToAdd)
{
register int originalValue;
register int newValue;
- asm volatile("sync\n"
+ asm volatile(".set push\n"
+ SET_MIPS2
+ "sync\n"
"0:\n"
"ll %[originalValue], %[_q_value]\n"
"addu %[newValue], %[originalValue], %[valueToAdd]\n"
"sc %[newValue], %[_q_value]\n"
"beqz %[newValue], 0b\n"
"nop\n"
+ ".set pop\n"
: [originalValue] "=&r" (originalValue),
[_q_value] "+m" (_q_value),
[newValue] "=&r" (newValue)
@@ -350,7 +389,9 @@ Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::testAndSetRelaxed(T *expectedValu
{
register T *result;
register T *tempValue;
- asm volatile("0:\n"
+ asm volatile(".set push\n"
+ SET_MIPS2
+ "0:\n"
LLP" %[result], %[_q_value]\n"
"xor %[result], %[result], %[expectedValue]\n"
"bnez %[result], 0f\n"
@@ -360,6 +401,7 @@ Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::testAndSetRelaxed(T *expectedValu
"beqz %[tempValue], 0b\n"
"nop\n"
"0:\n"
+ ".set pop\n"
: [result] "=&r" (result),
[tempValue] "=&r" (tempValue),
[_q_value] "+m" (_q_value)
@@ -374,7 +416,9 @@ Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::testAndSetAcquire(T *expectedValu
{
register T *result;
register T *tempValue;
- asm volatile("0:\n"
+ asm volatile(".set push\n"
+ SET_MIPS2
+ "0:\n"
LLP" %[result], %[_q_value]\n"
"xor %[result], %[result], %[expectedValue]\n"
"bnez %[result], 0f\n"
@@ -385,6 +429,7 @@ Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::testAndSetAcquire(T *expectedValu
"nop\n"
"sync\n"
"0:\n"
+ ".set pop\n"
: [result] "=&r" (result),
[tempValue] "=&r" (tempValue),
[_q_value] "+m" (_q_value)
@@ -399,7 +444,9 @@ Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::testAndSetRelease(T *expectedValu
{
register T *result;
register T *tempValue;
- asm volatile("sync\n"
+ asm volatile(".set push\n"
+ SET_MIPS2
+ "sync\n"
"0:\n"
LLP" %[result], %[_q_value]\n"
"xor %[result], %[result], %[expectedValue]\n"
@@ -410,6 +457,7 @@ Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::testAndSetRelease(T *expectedValu
"beqz %[tempValue], 0b\n"
"nop\n"
"0:\n"
+ ".set pop\n"
: [result] "=&r" (result),
[tempValue] "=&r" (tempValue),
[_q_value] "+m" (_q_value)
@@ -430,12 +478,15 @@ Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndStoreRelaxed(T *newValue)
{
register T *originalValue;
register T *tempValue;
- asm volatile("0:\n"
+ asm volatile(".set push\n"
+ SET_MIPS2
+ "0:\n"
LLP" %[originalValue], %[_q_value]\n"
"move %[tempValue], %[newValue]\n"
SCP" %[tempValue], %[_q_value]\n"
"beqz %[tempValue], 0b\n"
"nop\n"
+ ".set pop\n"
: [originalValue] "=&r" (originalValue),
[tempValue] "=&r" (tempValue),
[_q_value] "+m" (_q_value)
@@ -449,13 +500,16 @@ Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndStoreAcquire(T *newValue)
{
register T *originalValue;
register T *tempValue;
- asm volatile("0:\n"
+ asm volatile(".set push\n"
+ SET_MIPS2
+ "0:\n"
LLP" %[originalValue], %[_q_value]\n"
"move %[tempValue], %[newValue]\n"
SCP" %[tempValue], %[_q_value]\n"
"beqz %[tempValue], 0b\n"
"nop\n"
"sync\n"
+ ".set pop\n"
: [originalValue] "=&r" (originalValue),
[tempValue] "=&r" (tempValue),
[_q_value] "+m" (_q_value)
@@ -469,13 +523,16 @@ Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndStoreRelease(T *newValue)
{
register T *originalValue;
register T *tempValue;
- asm volatile("sync\n"
+ asm volatile(".set push\n"
+ SET_MIPS2
+ "sync\n"
"0:\n"
LLP" %[originalValue], %[_q_value]\n"
"move %[tempValue], %[newValue]\n"
SCP" %[tempValue], %[_q_value]\n"
"beqz %[tempValue], 0b\n"
"nop\n"
+ ".set pop\n"
: [originalValue] "=&r" (originalValue),
[tempValue] "=&r" (tempValue),
[_q_value] "+m" (_q_value)
@@ -495,12 +552,15 @@ Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddRelaxed(qptrdiff valueTo
{
register T *originalValue;
register T *newValue;
- asm volatile("0:\n"
+ asm volatile(".set push\n"
+ SET_MIPS2
+ "0:\n"
LLP" %[originalValue], %[_q_value]\n"
"addu %[newValue], %[originalValue], %[valueToAdd]\n"
SCP" %[newValue], %[_q_value]\n"
"beqz %[newValue], 0b\n"
"nop\n"
+ ".set pop\n"
: [originalValue] "=&r" (originalValue),
[_q_value] "+m" (_q_value),
[newValue] "=&r" (newValue)
@@ -514,13 +574,16 @@ Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddAcquire(qptrdiff valueTo
{
register T *originalValue;
register T *newValue;
- asm volatile("0:\n"
+ asm volatile(".set push\n"
+ SET_MIPS2
+ "0:\n"
LLP" %[originalValue], %[_q_value]\n"
"addu %[newValue], %[originalValue], %[valueToAdd]\n"
SCP" %[newValue], %[_q_value]\n"
"beqz %[newValue], 0b\n"
"nop\n"
"sync\n"
+ ".set pop\n"
: [originalValue] "=&r" (originalValue),
[_q_value] "+m" (_q_value),
[newValue] "=&r" (newValue)
@@ -534,13 +597,16 @@ Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddRelease(qptrdiff valueTo
{
register T *originalValue;
register T *newValue;
- asm volatile("sync\n"
+ asm volatile(".set push\n"
+ SET_MIPS2
+ "sync\n"
"0:\n"
LLP" %[originalValue], %[_q_value]\n"
"addu %[newValue], %[originalValue], %[valueToAdd]\n"
SCP" %[newValue], %[_q_value]\n"
"beqz %[newValue], 0b\n"
"nop\n"
+ ".set pop\n"
: [originalValue] "=&r" (originalValue),
[_q_value] "+m" (_q_value),
[newValue] "=&r" (newValue)
diff --git a/src/corelib/codecs/qtsciicodec.cpp b/src/corelib/codecs/qtsciicodec.cpp
index 14d2c9c..0ec0567 100644
--- a/src/corelib/codecs/qtsciicodec.cpp
+++ b/src/corelib/codecs/qtsciicodec.cpp
@@ -180,8 +180,7 @@ QByteArray QTsciiCodec::name() const
*/
int QTsciiCodec::mibEnum() const
{
- /* There is no MIBEnum for TSCII now */
- return -3197;
+ return 2107;
}
static const int UnToTsLast = 124; // 125 items -- so the last will be 124
diff --git a/src/corelib/codecs/qutfcodec.cpp b/src/corelib/codecs/qutfcodec.cpp
index 281bf75..1ac592e 100644
--- a/src/corelib/codecs/qutfcodec.cpp
+++ b/src/corelib/codecs/qutfcodec.cpp
@@ -413,9 +413,7 @@ QByteArray QUtf16Codec::name() const
QList<QByteArray> QUtf16Codec::aliases() const
{
- QList<QByteArray> list;
- list << "ISO-10646-UCS-2";
- return list;
+ return QList<QByteArray>();
}
int QUtf16BECodec::mibEnum() const
diff --git a/src/corelib/concurrent/qfutureinterface.h b/src/corelib/concurrent/qfutureinterface.h
index 85d03c9..345bebe 100644
--- a/src/corelib/concurrent/qfutureinterface.h
+++ b/src/corelib/concurrent/qfutureinterface.h
@@ -165,6 +165,8 @@ public:
QFutureInterface &operator=(const QFutureInterface &other)
{
+ if (referenceCountIsOne())
+ resultStore().clear();
QFutureInterfaceBase::operator=(other);
return *this;
}
diff --git a/src/corelib/concurrent/qfuturewatcher.cpp b/src/corelib/concurrent/qfuturewatcher.cpp
index ea35e9e..39d7698 100644
--- a/src/corelib/concurrent/qfuturewatcher.cpp
+++ b/src/corelib/concurrent/qfuturewatcher.cpp
@@ -465,7 +465,7 @@ void QFutureWatcherBasePrivate::sendCallOutEvent(QFutureCallOutEvent *event)
break;
emit q->progressValueChanged(event->index1);
- if (event->text != QString()) // ###
+ if (!event->text.isNull()) // ###
q->progressTextChanged(event->text);
break;
case QFutureCallOutEvent::ProgressRange:
diff --git a/src/corelib/global/qfeatures.h b/src/corelib/global/qfeatures.h
index 6d55f7c..2189723 100644
--- a/src/corelib/global/qfeatures.h
+++ b/src/corelib/global/qfeatures.h
@@ -120,6 +120,9 @@
// QMovie
//#define QT_NO_MOVIE
+// QNetworkInterface
+//#define QT_NO_NETWORKINTERFACE
+
// QNetworkProxy
//#define QT_NO_NETWORKPROXY
@@ -198,12 +201,12 @@
// Qt Prerendered Font Format
//#define QT_NO_QWS_QPF
-// Raster Paint Engine callback functions
-//#define QT_NO_RASTERCALLBACKS
-
// Qt Prerendered Font Format 2
//#define QT_NO_QWS_QPF2
+// Raster Paint Engine callback functions
+//#define QT_NO_RASTERCALLBACKS
+
// Resize Handler
//#define QT_NO_RESIZEHANDLER
@@ -273,9 +276,6 @@
// HtmlParser
//#define QT_NO_TEXTHTMLPARSER
-// OdfWriter
-//#define QT_NO_TEXTODFWRITER
-
// QTextStream
//#define QT_NO_TEXTSTREAM
@@ -316,6 +316,11 @@
#define QT_NO_BUTTONGROUP
#endif
+// QClipboard
+#if !defined(QT_NO_CLIPBOARD) && (defined(QT_NO_QWS_PROPERTIES))
+#define QT_NO_CLIPBOARD
+#endif
+
// Codecs
#if !defined(QT_NO_CODECS) && (defined(QT_NO_TEXTCODEC))
#define QT_NO_CODECS
@@ -376,11 +381,6 @@
#define QT_NO_PHONON_VOLUMESLIDER
#endif
-// QPrinter
-#if !defined(QT_NO_PRINTER) && (defined(QT_NO_TEXTSTREAM))
-#define QT_NO_PRINTER
-#endif
-
// QProcess
#if !defined(QT_NO_PROCESS) && (defined(QT_NO_THREAD))
#define QT_NO_PROCESS
@@ -481,11 +481,6 @@
#define QT_NO_XMLSTREAMWRITER
#endif
-// Odf Writer
-#if !defined(QT_NO_TEXTODFWRITER) && (defined(QT_NO_XMLSTREAMWRITER))
-#define QT_NO_TEXTODFWRITER
-#endif
-
// Context menu
#if !defined(QT_NO_CONTEXTMENU) && (defined(QT_NO_MENU))
#define QT_NO_CONTEXTMENU
@@ -511,11 +506,21 @@
#define QT_NO_LIBRARY
#endif
+// QPrinter
+#if !defined(QT_NO_PRINTER) && (defined(QT_NO_TEXTSTREAM) || defined(QT_NO_PICTURE))
+#define QT_NO_PRINTER
+#endif
+
// QScrollArea
#if !defined(QT_NO_SCROLLAREA) && (defined(QT_NO_SCROLLBAR))
#define QT_NO_SCROLLAREA
#endif
+// OdfWriter
+#if !defined(QT_NO_TEXTODFWRITER) && (defined(QT_NO_XMLSTREAMWRITER))
+#define QT_NO_TEXTODFWRITER
+#endif
+
// QToolButton
#if !defined(QT_NO_TOOLBUTTON) && (defined(QT_NO_ICON) || defined(QT_NO_ACTION))
#define QT_NO_TOOLBUTTON
@@ -636,16 +641,6 @@
#define QT_NO_WHATSTHIS
#endif
-// QClipboard
-#if !defined(QT_NO_CLIPBOARD) && (defined(QT_NO_QWS_PROPERTIES))
-#define QT_NO_CLIPBOARD
-#endif
-
-// Common UNIX Printing System
-#if !defined(QT_NO_CUPS) && (defined(QT_NO_PRINTER) || defined(QT_NO_LIBRARY))
-#define QT_NO_CUPS
-#endif
-
// QDirModel
#if !defined(QT_NO_DIRMODEL) && (defined(QT_NO_ITEMVIEWS))
#define QT_NO_DIRMODEL
@@ -726,6 +721,11 @@
#define QT_NO_COMPLETER
#endif
+// Common UNIX Printing System
+#if !defined(QT_NO_CUPS) && (defined(QT_NO_PRINTER) || defined(QT_NO_LIBRARY))
+#define QT_NO_CUPS
+#endif
+
// QDataWidgetMapper
#if !defined(QT_NO_DATAWIDGETMAPPER) && (defined(QT_NO_ITEMVIEWS) || defined(QT_NO_PROPERTIES))
#define QT_NO_DATAWIDGETMAPPER
@@ -757,7 +757,7 @@
#endif
// QPrintPreviewWidget
-#if !defined(QT_NO_PRINTPREVIEWWIDGET) && (defined(QT_NO_GRAPHICSVIEW) || defined(QT_NO_PRINTER) || defined(QT_NO_PICTURE))
+#if !defined(QT_NO_PRINTPREVIEWWIDGET) && (defined(QT_NO_GRAPHICSVIEW) || defined(QT_NO_PRINTER))
#define QT_NO_PRINTPREVIEWWIDGET
#endif
diff --git a/src/corelib/global/qglobal.h b/src/corelib/global/qglobal.h
index 81af295..36d87e2 100644
--- a/src/corelib/global/qglobal.h
+++ b/src/corelib/global/qglobal.h
@@ -44,11 +44,11 @@
#include <stddef.h>
-#define QT_VERSION_STR "4.5.1"
+#define QT_VERSION_STR "4.5.2"
/*
QT_VERSION is (major << 16) + (minor << 8) + patch.
*/
-#define QT_VERSION 0x040501
+#define QT_VERSION 0x040502
/*
can be used like #if (QT_VERSION >= QT_VERSION_CHECK(4, 4, 0))
*/
@@ -2265,9 +2265,9 @@ QT3_SUPPORT Q_CORE_EXPORT const char *qInstallPathSysconf();
| QT_MODULE_GRAPHICSVIEW \
| QT_MODULE_HELP \
| QT_MODULE_TEST \
- | QT_MODULE_DBUS)
-#define QT_EDITION_DESKTOP (QT_EDITION_OPENSOURCE \
+ | QT_MODULE_DBUS \
| QT_MODULE_ACTIVEQT)
+#define QT_EDITION_DESKTOP (QT_EDITION_OPENSOURCE)
#define QT_EDITION_UNIVERSAL QT_EDITION_DESKTOP
#define QT_EDITION_ACADEMIC QT_EDITION_DESKTOP
#define QT_EDITION_EDUCATIONAL QT_EDITION_DESKTOP
diff --git a/src/corelib/global/qlibraryinfo.cpp b/src/corelib/global/qlibraryinfo.cpp
index ada08c7..29e356e 100644
--- a/src/corelib/global/qlibraryinfo.cpp
+++ b/src/corelib/global/qlibraryinfo.cpp
@@ -485,100 +485,27 @@ QT_END_NAMESPACE
#if defined(Q_CC_GNU) && defined(Q_OS_LINUX) && !defined(QT_LINUXBASE) && !defined(QT_BOOTSTRAPPED)
-# include <sys/syscall.h>
-# include <unistd.h>
-
-static const char boilerplate[] =
- "This is the QtCore library version " QT_VERSION_STR "\n"
- "Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).\n"
- "Contact: Qt Software Information (qt-info@nokia.com)\n"
- "\n"
- "Build key: " QT_BUILD_KEY;
-
-extern "C" {
-void qt_core_init_boilerplate() __attribute__((noreturn));
-}
+# include <stdio.h>
+# include <stdlib.h>
-# if defined(QT_ARCH_I386)
-#define sysinit() (void)0
-#define syswrite(msg, len) \
- ({ int res; \
- asm volatile ("movl %%ebx, %%edi\n" \
- "movl $1, %%ebx\n" \
- "int $0x80\n" \
- "movl %%edi, %%ebx\n" \
- : "=a" (res) : "0" (SYS_write), "c" (msg), "d" (len) : "edi"); res; })
-#define sysexit(c) \
- asm ("xor %%ebx, %%ebx\n" \
- "int $0x80\n" \
- : : "a" (SYS_exit)); _exit(c)
-
-# elif defined(QT_ARCH_X86_64)
-#define sysinit() (void)0
-#define syswrite(msg, len) \
- ({ int res; \
- asm volatile ("syscall\n" \
- : "=a" (res) : "0" (SYS_write), "D" (1), "S" (msg), "d" (len) : "rcx"); res; })
-#define sysexit(c) \
- asm ("syscall\n" \
- : : "a" (SYS_exit), "D" (0)); _exit(c)
-
-# elif defined(QT_ARCH_IA64)
-#define sysinit() \
- asm volatile ("{.mlx\n" \
- " nop.m 0\n" \
- " movl r2 = @pcrel(boilerplate);;" \
- "}\n" \
- "{.mii\n" \
- " mov r10 = @ltoffx(boilerplate)\n" \
- " mov r1 = ip\n" \
- " adds r2 = -16, r2\n;;\n" \
- "}\n" \
- " add r1 = r2, r1;;\n" \
- " sub r1 = r1, r10;;\n" \
- : : : "r2", "r10")
-#define syswrite(msg, len) \
- ({ const char *_msg = msg; \
- asm ("mov out0=%1\n" \
- "mov out1=%2\n" \
- "mov out2=%3\n" \
- ";;\n" \
- "mov r15=%0\n" \
- "break 0x100000;;\n" \
- : : "I" (SYS_write), "I" (1), "r" (_msg), "r" (len)); })
-#define sysexit(c) \
- asm ("mov out0=%1\n" \
- ";;\n" \
- "mov r15=%0\n" \
- "break 0x100000;;\n" \
- : : "I" (SYS_exit), "O" (0)); write(1, 0, 0); _exit(c)
-# else
-#define sysinit() (void)0
-#define syswrite(msg, len) (msg); (len)
-#define sysexit(c) __builtin_exit(c)
-# endif
-
-#define sysputs(msg) syswrite(msg, -1 + sizeof(msg))
-#define sysendl() syswrite("\n", 1)
-#define print_qt_configure(_which) \
- ({const char *which = _which; \
- which += 12; \
- int len = 0; \
- while (which[len]) ++len; \
- syswrite(which, len); })
+extern const char qt_core_interpreter[] __attribute__((section(".interp")))
+ = "/lib/ld-linux.so.2";
+extern "C"
void qt_core_init_boilerplate()
{
- sysinit();
- sysputs(boilerplate);
- sysputs("\nInstallation prefix: ");
- print_qt_configure(qt_configure_prefix_path_str);
- sysputs("\nLibrary path: ");
- print_qt_configure(qt_configure_libraries_path_str);
- sysputs("\nInclude path: ");
- print_qt_configure(qt_configure_headers_path_str);
- sysendl();
- sysexit(0);
+ printf("This is the QtCore library version " QT_VERSION_STR "\n"
+ "Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).\n"
+ "Contact: Qt Software Information (qt-info@nokia.com)\n"
+ "\n"
+ "Build key: " QT_BUILD_KEY "\n"
+ "Installation prefix: %s\n"
+ "Library path: %s\n"
+ "Include path: %s\n",
+ qt_configure_prefix_path_str + 12,
+ qt_configure_libraries_path_str + 12,
+ qt_configure_headers_path_str + 12);
+ exit(0);
}
#endif
diff --git a/src/corelib/global/qnamespace.h b/src/corelib/global/qnamespace.h
index fb7fa0c..a519f4a 100644
--- a/src/corelib/global/qnamespace.h
+++ b/src/corelib/global/qnamespace.h
@@ -280,9 +280,7 @@ public:
WindowStaysOnTopHint = 0x00040000,
// reserved for Qt3Support:
// WMouseNoMask = 0x00080000,
- WindowOkButtonHint = 0x00080000,
// WDestructiveClose = 0x00100000,
- WindowCancelButtonHint = 0x00100000,
// WStaticContents = 0x00200000,
// WGroupLeader = 0x00400000,
// WShowModal = 0x00800000,
@@ -291,7 +289,9 @@ public:
WindowStaysOnBottomHint = 0x04000000,
WindowCloseButtonHint = 0x08000000,
MacWindowToolBarButtonHint = 0x10000000,
- BypassGraphicsProxyWidget = 0x20000000
+ BypassGraphicsProxyWidget = 0x20000000,
+ WindowOkButtonHint = 0x00080000,
+ WindowCancelButtonHint = 0x00100000
#ifdef QT3_SUPPORT
,
diff --git a/src/corelib/io/qdatastream.cpp b/src/corelib/io/qdatastream.cpp
index 9990696..b203899 100644
--- a/src/corelib/io/qdatastream.cpp
+++ b/src/corelib/io/qdatastream.cpp
@@ -514,7 +514,7 @@ void QDataStream::setByteOrder(ByteOrder bo)
\value Qt_4_2 Version 8 (Qt 4.2)
\value Qt_4_3 Version 9 (Qt 4.3)
\value Qt_4_4 Version 10 (Qt 4.4)
- \value Qt_4_5 Version 10 (Qt 4.5)
+ \value Qt_4_5 Version 11 (Qt 4.5)
\omitvalue Qt_4_6
\sa setVersion(), version()
diff --git a/src/corelib/io/qdir.cpp b/src/corelib/io/qdir.cpp
index 6d75c59..b7861ba 100644
--- a/src/corelib/io/qdir.cpp
+++ b/src/corelib/io/qdir.cpp
@@ -50,6 +50,7 @@
#include "qstring.h"
#include "qregexp.h"
#include "qvector.h"
+#include "qalgorithms.h"
#ifdef QT_BUILD_CORE_LIB
# include "qresource.h"
#endif
@@ -190,32 +191,28 @@ QDirPrivate::~QDirPrivate()
/* For sorting */
struct QDirSortItem {
- QString filename_cache;
- QString suffix_cache;
+ mutable QString filename_cache;
+ mutable QString suffix_cache;
QFileInfo item;
};
-static int qt_cmp_si_sort_flags;
-#if defined(Q_C_CALLBACKS)
-extern "C" {
-#endif
-#ifdef Q_OS_WINCE
-static int __cdecl qt_cmp_si(const void *n1, const void *n2)
-#else
-static int qt_cmp_si(const void *n1, const void *n2)
-#endif
-{
- if (!n1 || !n2)
- return 0;
+class QDirSortItemComparator {
+ int qt_cmp_si_sort_flags;
+public:
+ QDirSortItemComparator(int flags) : qt_cmp_si_sort_flags(flags) {}
+ bool operator()(const QDirSortItem &, const QDirSortItem &);
+};
- QDirSortItem* f1 = (QDirSortItem*)n1;
- QDirSortItem* f2 = (QDirSortItem*)n2;
+bool QDirSortItemComparator::operator()(const QDirSortItem &n1, const QDirSortItem &n2)
+{
+ const QDirSortItem* f1 = &n1;
+ const QDirSortItem* f2 = &n2;
if ((qt_cmp_si_sort_flags & QDir::DirsFirst) && (f1->item.isDir() != f2->item.isDir()))
- return f1->item.isDir() ? -1 : 1;
+ return f1->item.isDir();
if ((qt_cmp_si_sort_flags & QDir::DirsLast) && (f1->item.isDir() != f2->item.isDir()))
- return f1->item.isDir() ? 1 : -1;
+ return !f1->item.isDir();
int r = 0;
int sortBy = (qt_cmp_si_sort_flags & QDir::SortByMask)
@@ -264,18 +261,11 @@ static int qt_cmp_si(const void *n1, const void *n2)
: f1->filename_cache.compare(f2->filename_cache);
}
- if (r == 0) // Enforce an order - the order the items appear in the array
- r = (char*)n1 - (char*)n2;
-
if (qt_cmp_si_sort_flags & QDir::Reversed)
- return -r;
- return r;
+ return r > 0;
+ return r < 0;
}
-#if defined(Q_C_CALLBACKS)
-}
-#endif
-
inline void QDirPrivate::sortFileList(QDir::SortFlags sort, QStringList &l,
QStringList *names, QFileInfoList *infos) const
{
@@ -292,9 +282,8 @@ inline void QDirPrivate::sortFileList(QDir::SortFlags sort, QStringList &l,
path += QLatin1Char('/');
si[i].item = QFileInfo(path + l.at(i));
}
- qt_cmp_si_sort_flags = sort;
if ((sort & QDir::SortByMask) != QDir::Unsorted)
- qsort(si, i, sizeof(si[0]), qt_cmp_si);
+ qStableSort(si, si+i, QDirSortItemComparator(sort));
// put them back in the list(s)
for (int j = 0; j<i; j++) {
if(infos)
diff --git a/src/corelib/io/qdiriterator.cpp b/src/corelib/io/qdiriterator.cpp
index b14f436..81bfb27 100644
--- a/src/corelib/io/qdiriterator.cpp
+++ b/src/corelib/io/qdiriterator.cpp
@@ -201,8 +201,8 @@ void QDirIteratorPrivate::advance()
QString subDir = it->currentFilePath();
#ifdef Q_OS_WIN
- if (currentFileInfo.isSymLink())
- subDir = currentFileInfo.canonicalFilePath();
+ if (nextFileInfo.isSymLink())
+ subDir = nextFileInfo.canonicalFilePath();
#endif
pushSubDirectory(subDir, it->nameFilters(), it->filters());
}
diff --git a/src/corelib/io/qfile.cpp b/src/corelib/io/qfile.cpp
index d8f08c9..d7da800 100644
--- a/src/corelib/io/qfile.cpp
+++ b/src/corelib/io/qfile.cpp
@@ -712,6 +712,9 @@ QFile::rename(const QString &newName)
if(error() == QFile::NoError) {
if (fileEngine()->rename(newName)) {
unsetError();
+ // engine was able to handle the new name so we just reset it
+ fileEngine()->setFileName(newName);
+ d->fileName = newName;
return true;
}
@@ -731,10 +734,18 @@ QFile::rename(const QString &newName)
}
if (read == -1) {
d->setError(QFile::RenameError, in.errorString());
- return true;
+ error = true;
+ }
+ if(!error) {
+ if (!in.remove()) {
+ d->setError(QFile::RenameError, tr("Cannot remove source file"));
+ error = true;
+ }
}
- if(!error)
- in.remove();
+ if (error)
+ out.remove();
+ else
+ setFileName(newName);
return !error;
}
}
@@ -889,7 +900,10 @@ QFile::copy(const QString &newName)
error = true;
d->setError(QFile::CopyError, tr("Cannot create %1 for output").arg(newName));
}
-#ifndef QT_NO_TEMPORARYFILE
+#ifdef QT_NO_TEMPORARYFILE
+ if (error)
+ out.remove();
+#else
if (!error)
out.setAutoRemove(false);
#endif
diff --git a/src/corelib/io/qfilesystemwatcher_inotify.cpp b/src/corelib/io/qfilesystemwatcher_inotify.cpp
index 4445e3c..fa44531 100644
--- a/src/corelib/io/qfilesystemwatcher_inotify.cpp
+++ b/src/corelib/io/qfilesystemwatcher_inotify.cpp
@@ -316,7 +316,7 @@ void QInotifyFileSystemWatcherEngine::readFromInotify()
// qDebug() << "QInotifyFileSystemWatcherEngine::readFromInotify";
int buffSize = 0;
- ioctl(inotifyFd, FIONREAD, &buffSize);
+ ioctl(inotifyFd, FIONREAD, (char *) &buffSize);
QVarLengthArray<char, 4096> buffer(buffSize);
buffSize = read(inotifyFd, buffer.data(), buffSize);
const char *at = buffer.data();
diff --git a/src/corelib/io/qfsfileengine_unix.cpp b/src/corelib/io/qfsfileengine_unix.cpp
index 0d88b06..18b92e2 100644
--- a/src/corelib/io/qfsfileengine_unix.cpp
+++ b/src/corelib/io/qfsfileengine_unix.cpp
@@ -780,7 +780,7 @@ QString QFSFileEngine::fileName(FileName file) const
#endif
if (len > 0) {
QString ret;
- if (S_ISDIR(d->st.st_mode) && s[0] != '/') {
+ if (d->doStat() && S_ISDIR(d->st.st_mode) && s[0] != '/') {
QDir parent(d->filePath);
parent.cdUp();
ret = parent.path();
diff --git a/src/corelib/io/qfsfileengine_win.cpp b/src/corelib/io/qfsfileengine_win.cpp
index 522be20..63506c2 100644
--- a/src/corelib/io/qfsfileengine_win.cpp
+++ b/src/corelib/io/qfsfileengine_win.cpp
@@ -346,8 +346,15 @@ bool QFSFileEnginePrivate::uncListSharesOnServer(const QString &server, QStringL
static bool isUncRoot(const QString &server)
{
QString localPath = QDir::toNativeSeparators(server);
- QStringList parts = localPath.split(QLatin1Char('\\'), QString::SkipEmptyParts);
- return localPath.startsWith(QLatin1String("\\\\")) && parts.count() <= 1;
+ if (!localPath.startsWith(QLatin1String("\\\\")))
+ return false;
+
+ int idx = localPath.indexOf(QLatin1Char('\\'), 2);
+ if (idx == -1 || idx + 1 == localPath.length())
+ return true;
+
+ localPath = localPath.right(localPath.length() - idx - 1).trimmed();
+ return localPath.isEmpty();
}
static bool isUncPath(const QString &path)
diff --git a/src/corelib/io/qprocess_unix.cpp b/src/corelib/io/qprocess_unix.cpp
index 37173c8..33d4a47 100644
--- a/src/corelib/io/qprocess_unix.cpp
+++ b/src/corelib/io/qprocess_unix.cpp
@@ -850,10 +850,10 @@ bool QProcessPrivate::processStarted()
qint64 QProcessPrivate::bytesAvailableFromStdout() const
{
- size_t nbytes = 0;
+ int nbytes = 0;
qint64 available = 0;
if (::ioctl(stdoutChannel.pipe[0], FIONREAD, (char *) &nbytes) >= 0)
- available = (qint64) *((int *) &nbytes);
+ available = (qint64) nbytes;
#if defined (QPROCESS_DEBUG)
qDebug("QProcessPrivate::bytesAvailableFromStdout() == %lld", available);
#endif
@@ -862,10 +862,10 @@ qint64 QProcessPrivate::bytesAvailableFromStdout() const
qint64 QProcessPrivate::bytesAvailableFromStderr() const
{
- size_t nbytes = 0;
+ int nbytes = 0;
qint64 available = 0;
if (::ioctl(stderrChannel.pipe[0], FIONREAD, (char *) &nbytes) >= 0)
- available = (qint64) *((int *) &nbytes);
+ available = (qint64) nbytes;
#if defined (QPROCESS_DEBUG)
qDebug("QProcessPrivate::bytesAvailableFromStderr() == %lld", available);
#endif
diff --git a/src/corelib/io/qresource.cpp b/src/corelib/io/qresource.cpp
index a1f921e..1f77caa 100644
--- a/src/corelib/io/qresource.cpp
+++ b/src/corelib/io/qresource.cpp
@@ -406,7 +406,7 @@ QString QResource::absoluteFilePath() const
}
/*!
- Returns true if the resource really exists in the resource heirarchy,
+ Returns true if the resource really exists in the resource hierarchy,
false otherwise.
*/
diff --git a/src/corelib/io/qsettings.cpp b/src/corelib/io/qsettings.cpp
index 62b4ed5..14fc2d4 100644
--- a/src/corelib/io/qsettings.cpp
+++ b/src/corelib/io/qsettings.cpp
@@ -2295,7 +2295,7 @@ void QConfFileSettingsPrivate::ensureSectionParsed(QConfFile *confFile,
As mentioned in the \l{Fallback Mechanism} section, QSettings
stores settings for an application in up to four locations,
depending on whether the settings are user-specific or
- system-wide and whether the the settings are application-specific
+ system-wide and whether the settings are application-specific
or organization-wide. For simplicity, we're assuming the
organization is called MySoft and the application is called Star
Runner.
@@ -2330,6 +2330,10 @@ void QConfFileSettingsPrivate::ensureSectionParsed(QConfFile *confFile,
\o \c{HKEY_LOCAL_MACHINE\Software\MySoft}
\endlist
+ \note On Windows, for 32-bit programs running in WOW64 mode, settings are
+ stored in the following registry path:
+ \c{HKEY_LOCAL_MACHINE\Software\WOW6432node}.
+
If the file format is IniFormat, the following files are
used on Unix and Mac OS X:
diff --git a/src/corelib/io/qtemporaryfile.cpp b/src/corelib/io/qtemporaryfile.cpp
index 3cfce83..6a9125c 100644
--- a/src/corelib/io/qtemporaryfile.cpp
+++ b/src/corelib/io/qtemporaryfile.cpp
@@ -105,100 +105,100 @@ QT_BEGIN_NAMESPACE
*/
static int _gettemp(char *path, int *doopen, int domkdir, int slen)
{
- char *start, *trv, *suffp;
- QT_STATBUF sbuf;
- int rval;
+ char *start, *trv, *suffp;
+ QT_STATBUF sbuf;
+ int rval;
#if defined(Q_OS_WIN)
int pid;
#else
- pid_t pid;
+ pid_t pid;
#endif
- if (doopen && domkdir) {
- errno = EINVAL;
- return(0);
- }
-
- for (trv = path; *trv; ++trv)
- ;
- trv -= slen;
- suffp = trv;
- --trv;
- if (trv < path) {
- errno = EINVAL;
- return (0);
- }
+ if (doopen && domkdir) {
+ errno = EINVAL;
+ return 0;
+ }
+
+ for (trv = path; *trv; ++trv)
+ ;
+ trv -= slen;
+ suffp = trv;
+ --trv;
+ if (trv < path) {
+ errno = EINVAL;
+ return 0;
+ }
#if defined(Q_OS_WIN) && defined(_MSC_VER) && _MSC_VER >= 1400
- pid = _getpid();
+ pid = _getpid();
#else
- pid = getpid();
+ pid = getpid();
#endif
- while (trv >= path && *trv == 'X' && pid != 0) {
- *trv-- = (pid % 10) + '0';
- pid /= 10;
- }
+ while (trv >= path && *trv == 'X' && pid != 0) {
+ *trv-- = (pid % 10) + '0';
+ pid /= 10;
+ }
#ifndef S_ISDIR
-#define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
+# define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
#endif
- while (trv >= path && *trv == 'X') {
- char c;
-
- // CHANGE arc4random() -> random()
- pid = (qrand() & 0xffff) % (26+26);
- if (pid < 26)
- c = pid + 'A';
- else
- c = (pid - 26) + 'a';
- *trv-- = c;
- }
- start = trv + 1;
-
- /*
- * check the target directory; if you have six X's and it
- * doesn't exist this runs for a *very* long time.
- */
- if (doopen || domkdir) {
- for (;; --trv) {
- if (trv <= path)
- break;
- if (*trv == '/') {
- *trv = '\0';
+ while (trv >= path && *trv == 'X') {
+ char c;
+
+ // CHANGE arc4random() -> random()
+ pid = (qrand() & 0xffff) % (26+26);
+ if (pid < 26)
+ c = pid + 'A';
+ else
+ c = (pid - 26) + 'a';
+ *trv-- = c;
+ }
+ start = trv + 1;
+
+ /*
+ * check the target directory; if you have six X's and it
+ * doesn't exist this runs for a *very* long time.
+ */
+ if (doopen || domkdir) {
+ for (;; --trv) {
+ if (trv <= path)
+ break;
+ if (*trv == '/') {
+ *trv = '\0';
#if defined (Q_OS_WIN) && !defined(Q_OS_WINCE)
- if (trv - path == 2 && path[1] == ':') {
- // Special case for Windows drives
- // (e.g., "C:" => "C:\").
- // ### Better to use a Windows
- // call for this.
- char drive[] = "c:\\";
- drive[0] = path[0];
- rval = QT_STAT(drive, &sbuf);
- } else
+ if (trv - path == 2 && path[1] == ':') {
+ // Special case for Windows drives
+ // (e.g., "C:" => "C:\").
+ // ### Better to use a Windows
+ // call for this.
+ char drive[] = "c:\\";
+ drive[0] = path[0];
+ rval = QT_STAT(drive, &sbuf);
+ } else
#endif
- rval = QT_STAT(path, &sbuf);
- *trv = '/';
- if (rval != 0)
- return(0);
- if (!S_ISDIR(sbuf.st_mode)) {
- errno = ENOTDIR;
- return(0);
- }
- break;
- }
- }
- }
-
- for (;;) {
- if (doopen) {
+ rval = QT_STAT(path, &sbuf);
+ *trv = '/';
+ if (rval != 0)
+ return 0;
+ if (!S_ISDIR(sbuf.st_mode)) {
+ errno = ENOTDIR;
+ return 0;
+ }
+ break;
+ }
+ }
+ }
+
+ for (;;) {
+ if (doopen) {
#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE) && defined(_MSC_VER) && _MSC_VER >= 1400
- if (_sopen_s(doopen, path, QT_OPEN_CREAT|O_EXCL|QT_OPEN_RDWR|QT_OPEN_BINARY
-#ifdef QT_LARGEFILE_SUPPORT
- |QT_OPEN_LARGEFILE
-#endif
- , _SH_DENYNO, _S_IREAD | _S_IWRITE)== 0)
-#else
-#if defined(Q_OS_WINCE)
+ if (_sopen_s(doopen, path, QT_OPEN_CREAT|O_EXCL|QT_OPEN_RDWR|QT_OPEN_BINARY
+# ifdef QT_LARGEFILE_SUPPORT
+ |QT_OPEN_LARGEFILE
+# endif
+ , _SH_DENYNO, _S_IREAD | _S_IWRITE)== 0)
+#else // WIN && !CE
+# if defined(Q_OS_WINCE)
QString targetPath;
if (QDir::isAbsolutePath(QString::fromLatin1(path)))
targetPath = QLatin1String(path);
@@ -207,72 +207,84 @@ static int _gettemp(char *path, int *doopen, int domkdir, int slen)
if ((*doopen =
QT_OPEN(targetPath.toLocal8Bit(), O_CREAT|O_EXCL|O_RDWR
-#else
- if ((*doopen =
- open(path, QT_OPEN_CREAT|O_EXCL|QT_OPEN_RDWR
-#endif
-#ifdef QT_LARGEFILE_SUPPORT
- |QT_OPEN_LARGEFILE
-#endif
+# else // CE
+ if ((*doopen =
+ open(path, QT_OPEN_CREAT|O_EXCL|QT_OPEN_RDWR
+# endif
+# ifdef QT_LARGEFILE_SUPPORT
+ |QT_OPEN_LARGEFILE
+# endif
# if defined(Q_OS_WINCE)
- |_O_BINARY
+ |_O_BINARY
# elif defined(Q_OS_WIN)
- |O_BINARY
+ |O_BINARY
+# endif
+# ifdef O_CLOEXEC
+ // supported on Linux >= 2.6.23; avoids one extra system call
+ // and avoids a race condition: if another thread forks, we could
+ // end up leaking a file descriptor...
+ |O_CLOEXEC
# endif
- , 0600)) >= 0)
+ , 0600)) >= 0)
+#endif // WIN && !CE
+ {
+#if defined(Q_OS_UNIX) && !defined(O_CLOEXEC)
+ fcntl(*doopen, F_SETFD, FD_CLOEXEC);
#endif
-
- return(1);
- if (errno != EEXIST)
- return(0);
- } else if (domkdir) {
+ return 1;
+ }
+ if (errno != EEXIST)
+ return 0;
+ } else if (domkdir) {
#ifdef Q_OS_WIN
- if (QT_MKDIR(path) == 0)
+ if (QT_MKDIR(path) == 0)
#else
- if (mkdir(path, 0700) == 0)
+ if (mkdir(path, 0700) == 0)
#endif
- return(1);
- if (errno != EEXIST)
- return(0);
- }
+ return 1;
+ if (errno != EEXIST)
+ return 0;
+ }
#ifndef Q_OS_WIN
- else if (QT_LSTAT(path, &sbuf))
- return(errno == ENOENT ? 1 : 0);
+ else if (QT_LSTAT(path, &sbuf))
+ return (errno == ENOENT) ? 1 : 0;
#else
- if (!QFileInfo(QLatin1String(path)).exists())
- return 1;
+ if (!QFileInfo(QLatin1String(path)).exists())
+ return 1;
#endif
- /* tricky little algorwwithm for backward compatibility */
- for (trv = start;;) {
- if (!*trv)
- return (0);
- if (*trv == 'Z') {
- if (trv == suffp)
- return (0);
- *trv++ = 'a';
- } else {
- if (isdigit(*trv))
- *trv = 'a';
- else if (*trv == 'z') /* inc from z to A */
- *trv = 'A';
- else {
- if (trv == suffp)
- return (0);
- ++*trv;
- }
- break;
- }
+ /* tricky little algorwwithm for backward compatibility */
+ for (trv = start;;) {
+ if (!*trv)
+ return 0;
+ if (*trv == 'Z') {
+ if (trv == suffp)
+ return 0;
+ *trv++ = 'a';
+ } else {
+ if (isdigit(*trv))
+ *trv = 'a';
+ else if (*trv == 'z') /* inc from z to A */
+ *trv = 'A';
+ else {
+ if (trv == suffp)
+ return 0;
+ ++*trv;
}
+ break;
+ }
}
- /*NOTREACHED*/
+ }
+ /*NOTREACHED*/
}
+#ifndef Q_WS_WIN
static int qt_mkstemps(char *path, int slen)
{
- int fd = 0;
- return (_gettemp(path, &fd, 0, slen) ? fd : -1);
+ int fd = 0;
+ return (_gettemp(path, &fd, 0, slen) ? fd : -1);
}
+#endif
//************* QTemporaryFileEngine
class QTemporaryFileEngine : public QFSFileEngine
@@ -282,6 +294,8 @@ public:
QTemporaryFileEngine(const QString &file) : QFSFileEngine(file) { }
~QTemporaryFileEngine();
+ void setFileName(const QString &file);
+
bool open(QIODevice::OpenMode flags);
bool remove();
bool close();
@@ -292,6 +306,13 @@ QTemporaryFileEngine::~QTemporaryFileEngine()
QFSFileEngine::close();
}
+void QTemporaryFileEngine::setFileName(const QString &file)
+{
+ // Really close the file, so we don't leak
+ QFSFileEngine::close();
+ QFSFileEngine::setFileName(file);
+}
+
bool QTemporaryFileEngine::open(QIODevice::OpenMode openMode)
{
Q_D(QFSFileEngine);
diff --git a/src/corelib/io/qtextstream.cpp b/src/corelib/io/qtextstream.cpp
index ed9d0aa..1167671 100644
--- a/src/corelib/io/qtextstream.cpp
+++ b/src/corelib/io/qtextstream.cpp
@@ -67,8 +67,10 @@ static const int QTEXTSTREAM_BUFFERSIZE = 16384;
\snippet doc/src/snippets/code/src_corelib_io_qtextstream.cpp 1
Note that you cannot use QTextStream::atEnd(), which returns true when you
- have reached the end of the data stream, with stdin.
-
+ have reached the end of the data stream, with stdin. The reason for this is
+ that as long as stdin doesn't give any input to the QTextStream, \c atEnd()
+ will return true even if the stdin is open and waiting for more characters.
+
Besides using QTextStream's constructors, you can also set the
device or string QTextStream operates on by calling setDevice() or
setString(). You can seek to a position by calling seek(), and
diff --git a/src/corelib/io/qurl.cpp b/src/corelib/io/qurl.cpp
index 9ce9a2e..d1a5cdd 100644
--- a/src/corelib/io/qurl.cpp
+++ b/src/corelib/io/qurl.cpp
@@ -4759,6 +4759,12 @@ void QUrl::setEncodedQueryItems(const QList<QPair<QByteArray, QByteArray> > &que
Inserts the pair \a key = \a value into the query string of the
URL.
+ The key/value pair is encoded before it is added to the query. The
+ pair is converted into separate strings internally. The \a key and
+ \a value is first encoded into UTF-8 and then delimited by the
+ character returned by valueDelimiter(). Each key/value pair is
+ delimited by the character returned by pairDelimiter().
+
\sa addEncodedQueryItem()
*/
void QUrl::addQueryItem(const QString &key, const QString &value)
diff --git a/src/corelib/kernel/qcoreapplication.cpp b/src/corelib/kernel/qcoreapplication.cpp
index a23b2dd..f6ce4b3 100644
--- a/src/corelib/kernel/qcoreapplication.cpp
+++ b/src/corelib/kernel/qcoreapplication.cpp
@@ -1696,7 +1696,7 @@ QString QCoreApplication::applicationDirPath()
}
QCoreApplicationPrivate *d = self->d_func();
- if (d->cachedApplicationDirPath == QString())
+ if (d->cachedApplicationDirPath.isNull())
d->cachedApplicationDirPath = QFileInfo(applicationFilePath()).path();
return d->cachedApplicationDirPath;
}
@@ -1724,7 +1724,7 @@ QString QCoreApplication::applicationFilePath()
}
QCoreApplicationPrivate *d = self->d_func();
- if (d->cachedApplicationFilePath != QString())
+ if (!d->cachedApplicationFilePath.isNull())
return d->cachedApplicationFilePath;
#if defined( Q_WS_WIN )
diff --git a/src/corelib/kernel/qcoreevent.cpp b/src/corelib/kernel/qcoreevent.cpp
index 3fcfc98..11a2d3c 100644
--- a/src/corelib/kernel/qcoreevent.cpp
+++ b/src/corelib/kernel/qcoreevent.cpp
@@ -260,6 +260,7 @@ QT_BEGIN_NAMESPACE
\omitvalue ApplicationActivated
\omitvalue ApplicationDeactivated
\omitvalue MacGLWindowChange
+ \omitvalue MacGLClearDrawable
\omitvalue NetworkReplyUpdated
\omitvalue FutureCallOut
\omitvalue CocoaRequestModal
diff --git a/src/corelib/kernel/qcoreevent.h b/src/corelib/kernel/qcoreevent.h
index 5487703..fa472e6 100644
--- a/src/corelib/kernel/qcoreevent.h
+++ b/src/corelib/kernel/qcoreevent.h
@@ -264,6 +264,7 @@ public:
GrabKeyboard = 188,
UngrabKeyboard = 189,
CocoaRequestModal = 190, // Internal for requesting an application modal Cocoa Window
+ MacGLClearDrawable = 191, // Internal Cocoa, the window has changed, so we must clear
// 512 reserved for Qt Jambi's MetaCall event
// 513 reserved for Qt Jambi's DeleteOnMainThread event
diff --git a/src/corelib/kernel/qeventdispatcher_glib.cpp b/src/corelib/kernel/qeventdispatcher_glib.cpp
index 3fd768a..3c5b277 100644
--- a/src/corelib/kernel/qeventdispatcher_glib.cpp
+++ b/src/corelib/kernel/qeventdispatcher_glib.cpp
@@ -42,6 +42,7 @@
#include "qeventdispatcher_glib_p.h"
#include "qeventdispatcher_unix_p.h"
+#include <private/qmutexpool_p.h>
#include <private/qthread_p.h>
#include "qcoreapplication.h"
@@ -224,6 +225,8 @@ QEventDispatcherGlibPrivate::QEventDispatcherGlibPrivate(GMainContext *context)
: mainContext(context)
{
if (qgetenv("QT_NO_THREADED_GLIB").isEmpty()) {
+ static int dummyValue = 0; // only used for its address
+ QMutexLocker locker(QMutexPool::instance()->get(&dummyValue));
if (!g_thread_supported())
g_thread_init(NULL);
}
diff --git a/src/corelib/kernel/qeventdispatcher_win.cpp b/src/corelib/kernel/qeventdispatcher_win.cpp
index 880e95c..c4061f4 100644
--- a/src/corelib/kernel/qeventdispatcher_win.cpp
+++ b/src/corelib/kernel/qeventdispatcher_win.cpp
@@ -1059,11 +1059,20 @@ bool QEventDispatcherWin32::event(QEvent *e)
QZeroTimerEvent *zte = static_cast<QZeroTimerEvent*>(e);
WinTimerInfo *t = d->timerDict.value(zte->timerId());
if (t) {
+ t->inTimerEvent = true;
+
QTimerEvent te(zte->timerId());
QCoreApplication::sendEvent(t->obj, &te);
- WinTimerInfo *tn = d->timerDict.value(zte->timerId());
- if (tn && t == tn)
- QCoreApplication::postEvent(this, new QZeroTimerEvent(zte->timerId()));
+
+ t = d->timerDict.value(zte->timerId());
+ if (t) {
+ if (t->interval == 0 && t->inTimerEvent) {
+ // post the next zero timer event as long as the timer was not restarted
+ QCoreApplication::postEvent(this, new QZeroTimerEvent(zte->timerId()));
+ }
+
+ t->inTimerEvent = false;
+ }
}
return true;
} else if (e->type() == QEvent::Timer) {
diff --git a/src/corelib/kernel/qeventloop.cpp b/src/corelib/kernel/qeventloop.cpp
index 92bdf73..600f787 100644
--- a/src/corelib/kernel/qeventloop.cpp
+++ b/src/corelib/kernel/qeventloop.cpp
@@ -188,8 +188,9 @@ int QEventLoop::exec(ProcessEventsFlags flags)
d->threadData->eventLoops.push(this);
// remove posted quit events when entering a new event loop
- if (qApp->thread() == thread())
- QCoreApplication::removePostedEvents(qApp, QEvent::Quit);
+ QCoreApplication *app = QCoreApplication::instance();
+ if (app && app->thread() == thread())
+ QCoreApplication::removePostedEvents(app, QEvent::Quit);
#if defined(QT_NO_EXCEPTIONS)
while (!d->exit)
diff --git a/src/corelib/kernel/qobject.cpp b/src/corelib/kernel/qobject.cpp
index 05015c0..f1a1eb5 100644
--- a/src/corelib/kernel/qobject.cpp
+++ b/src/corelib/kernel/qobject.cpp
@@ -345,18 +345,6 @@ void QObjectPrivate::derefSender(QObject *sender, int signal)
// Q_ASSERT_X(false, "QObjectPrivate::derefSender", "sender not found");
}
-void QObjectPrivate::removeSender(QObject *sender, int signal)
-{
- for (int i = 0; i < senders.count(); ++i) {
- Sender &s = senders[i];
- if (s.sender == sender && s.signal == signal) {
- senders.removeAt(i);
- return;
- }
- }
- // Q_ASSERT_X(false, "QObjectPrivate::removeSender", "sender not found");
-}
-
QObjectPrivate::Sender *QObjectPrivate::setCurrentSender(QObject *receiver,
Sender *sender)
{
@@ -790,7 +778,7 @@ QObject::~QObject()
bool needToUnlock = QOrderedMutexLocker::relock(locker.mutex(), m);
c = &connectionList[i];
if (c->receiver)
- c->receiver->d_func()->removeSender(this, signal);
+ c->receiver->d_func()->derefSender(this, signal);
if (needToUnlock)
m->unlock();
@@ -811,18 +799,22 @@ QObject::~QObject()
}
// disconnect all senders
- for (int i = 0; i < d->senders.count(); ++i) {
+ for (int i = 0; i < d->senders.count(); ) {
QObjectPrivate::Sender *s = &d->senders[i];
- if (!s->sender)
- continue;
QMutex *m = &s->sender->d_func()->threadData->mutex;
bool needToUnlock = QOrderedMutexLocker::relock(locker.mutex(), m);
- s = &d->senders[i];
- if (s->sender)
- s->sender->d_func()->removeReceiver(s->signal, this);
+ if (m < locker.mutex()) {
+ if (i >= d->senders.count() || s != &d->senders[i]) {
+ if (needToUnlock)
+ m->unlock();
+ continue;
+ }
+ }
+ s->sender->d_func()->removeReceiver(s->signal, this);
if (needToUnlock)
m->unlock();
+ ++i;
}
d->senders.clear();
diff --git a/src/corelib/kernel/qobject_p.h b/src/corelib/kernel/qobject_p.h
index b324334..0eed938 100644
--- a/src/corelib/kernel/qobject_p.h
+++ b/src/corelib/kernel/qobject_p.h
@@ -163,7 +163,6 @@ public:
QList<Sender> senders;
void refSender(QObject *sender, int signal);
void derefSender(QObject *sender, int signal);
- void removeSender(QObject *sender, int signal);
static Sender *setCurrentSender(QObject *receiver,
Sender *sender);
diff --git a/src/corelib/kernel/qsharedmemory.cpp b/src/corelib/kernel/qsharedmemory.cpp
index 9853079..87e154f 100644
--- a/src/corelib/kernel/qsharedmemory.cpp
+++ b/src/corelib/kernel/qsharedmemory.cpp
@@ -129,6 +129,10 @@ QSharedMemoryPrivate::makePlatformSafeKey(const QString &key,
detached from the segment, and no references to the segment
remain. Do not mix using QtSharedMemory and QSharedMemory. Port
everything to QSharedMemory.
+
+ \warning QSharedMemory changes the key in a Qt-specific way.
+ It is therefore currently not possible to use the shared memory of
+ non-Qt applications with QSharedMemory.
*/
/*!
diff --git a/src/corelib/kernel/qtimer.cpp b/src/corelib/kernel/qtimer.cpp
index 01e81ab..4b3feb0 100644
--- a/src/corelib/kernel/qtimer.cpp
+++ b/src/corelib/kernel/qtimer.cpp
@@ -77,7 +77,7 @@ QT_BEGIN_NAMESPACE
In multithreaded applications, you can use QTimer in any thread
that has an event loop. To start an event loop from a non-GUI
- thread, use QThread::exec(). Qt uses the the timer's
+ thread, use QThread::exec(). Qt uses the timer's
\l{QObject::thread()}{thread affinity} to determine which thread
will emit the \l{QTimer::}{timeout()} signal. Because of this, you
must start and stop the timer in its thread; it is not possible to
diff --git a/src/corelib/kernel/qvariant.cpp b/src/corelib/kernel/qvariant.cpp
index b4427c0..0a0500d 100644
--- a/src/corelib/kernel/qvariant.cpp
+++ b/src/corelib/kernel/qvariant.cpp
@@ -1187,8 +1187,9 @@ const QVariant::Handler *QVariant::handler = &qt_kernel_variant_handler;
and versatile, but may prove less memory and speed efficient than
storing specific types in standard data structures.
- QVariant also supports the notion of null values, where you have
- a defined type with no value set.
+ QVariant also supports the notion of null values, where you can
+ have a defined type with no value set. However, note that QVariant
+ types can only be cast when they have had a value set.
\snippet doc/src/snippets/code/src_corelib_kernel_qvariant.cpp 1
diff --git a/src/corelib/thread/qthread.cpp b/src/corelib/thread/qthread.cpp
index 7f87897..2fb6335 100644
--- a/src/corelib/thread/qthread.cpp
+++ b/src/corelib/thread/qthread.cpp
@@ -297,6 +297,12 @@ void QAdoptedThread::run()
priority parameter. If the thread is already running, this
function does nothing.
+ The effect of the \a priority parameter is dependent on the
+ operating system's scheduling policy. In particular, the \a priority
+ will be ignored on systems that do not support thread priorities
+ (such as on Linux, see http://linux.die.net/man/2/sched_setscheduler
+ for more details).
+
\sa run(), terminate()
*/
@@ -590,6 +596,12 @@ void QThread::cleanup()
The \a priority argument can be any value in the \c
QThread::Priority enum except for \c InheritPriorty.
+ The effect of the \a priority parameter is dependent on the
+ operating system's scheduling policy. In particular, the \a priority
+ will be ignored on systems that do not support thread priorities
+ (such as on Linux, see http://linux.die.net/man/2/sched_setscheduler
+ for more details).
+
\sa Priority priority() start()
*/
diff --git a/src/corelib/thread/qthread_unix.cpp b/src/corelib/thread/qthread_unix.cpp
index f602821..8f1c698 100644
--- a/src/corelib/thread/qthread_unix.cpp
+++ b/src/corelib/thread/qthread_unix.cpp
@@ -180,8 +180,7 @@ void *QThreadPrivate::start(void *arg)
data->quitNow = false;
// ### TODO: allow the user to create a custom event dispatcher
- if (QCoreApplication::instance())
- createEventDispatcher(data);
+ createEventDispatcher(data);
emit thr->started();
pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, NULL);
diff --git a/src/corelib/thread/qthread_win.cpp b/src/corelib/thread/qthread_win.cpp
index 27193c6..7094e3d 100644
--- a/src/corelib/thread/qthread_win.cpp
+++ b/src/corelib/thread/qthread_win.cpp
@@ -292,8 +292,7 @@ unsigned int __stdcall QThreadPrivate::start(void *arg)
data->quitNow = false;
// ### TODO: allow the user to create a custom event dispatcher
- if (QCoreApplication::instance())
- createEventDispatcher(data);
+ createEventDispatcher(data);
#if !defined(QT_NO_DEBUG) && defined(Q_CC_MSVC) && !defined(Q_OS_WINCE)
// sets the name of the current thread.
diff --git a/src/corelib/tools/qbytearraymatcher.cpp b/src/corelib/tools/qbytearraymatcher.cpp
index cd4cf90..211d190 100644
--- a/src/corelib/tools/qbytearraymatcher.cpp
+++ b/src/corelib/tools/qbytearraymatcher.cpp
@@ -120,6 +120,7 @@ QByteArrayMatcher::QByteArrayMatcher()
: d(0)
{
p.p = 0;
+ p.l = 0;
qMemSet(p.q_skiptable, 0, sizeof(p.q_skiptable));
}
@@ -170,7 +171,7 @@ QByteArrayMatcher::~QByteArrayMatcher()
QByteArrayMatcher &QByteArrayMatcher::operator=(const QByteArrayMatcher &other)
{
q_pattern = other.q_pattern;
- qMemCopy(p.q_skiptable, other.p.q_skiptable, sizeof(p.q_skiptable));
+ qMemCopy(&p, &other.p, sizeof(p));
return *this;
}
diff --git a/src/corelib/tools/qbytearraymatcher.h b/src/corelib/tools/qbytearraymatcher.h
index d7f2366..970cbcc 100644
--- a/src/corelib/tools/qbytearraymatcher.h
+++ b/src/corelib/tools/qbytearraymatcher.h
@@ -67,7 +67,12 @@ public:
int indexIn(const QByteArray &ba, int from = 0) const;
int indexIn(const char *str, int len, int from = 0) const;
- inline QByteArray pattern() const { return q_pattern; }
+ inline QByteArray pattern() const
+ {
+ if (q_pattern.isNull())
+ return QByteArray(reinterpret_cast<const char*>(p.p), p.l);
+ return q_pattern;
+ }
private:
QByteArrayMatcherPrivate *d;
diff --git a/src/corelib/tools/qhash.cpp b/src/corelib/tools/qhash.cpp
index 540f43d..2313e0e 100644
--- a/src/corelib/tools/qhash.cpp
+++ b/src/corelib/tools/qhash.cpp
@@ -91,7 +91,7 @@ static uint hash(const QChar *p, int n)
uint qHash(const QByteArray &key)
{
- return hash(reinterpret_cast<const uchar *>(key.data()), key.size());
+ return hash(reinterpret_cast<const uchar *>(key.constData()), key.size());
}
uint qHash(const QString &key)
@@ -107,7 +107,7 @@ uint qHash(const QStringRef &key)
uint qHash(const QBitArray &bitArray)
{
int m = bitArray.d.size() - 1;
- uint result = hash(reinterpret_cast<const uchar *>(bitArray.d.data()), qMax(0, m));
+ uint result = hash(reinterpret_cast<const uchar *>(bitArray.d.constData()), qMax(0, m));
// deal with the last 0 to 7 bits manually, because we can't trust that
// the padding is initialized to 0 in bitArray.d
@@ -379,6 +379,107 @@ void QHashData::checkSanity()
#endif
/*!
+ \fn uint qHash(const QPair<T1, T2> &key)
+ \since 4.3
+ \relates QHash
+
+ Returns the hash value for the \a key.
+
+ Types \c T1 and \c T2 must be supported by qHash().
+*/
+
+/*! \fn uint qHash(char key)
+ \relates QHash
+
+ Returns the hash value for the \a key.
+*/
+
+/*! \fn uint qHash(uchar key)
+ \relates QHash
+
+ Returns the hash value for the \a key.
+*/
+
+/*! \fn uint qHash(signed char key)
+ \relates QHash
+
+ Returns the hash value for the \a key.
+*/
+
+/*! \fn uint qHash(ushort key)
+ \relates QHash
+
+ Returns the hash value for the \a key.
+*/
+
+/*! \fn uint qHash(short key)
+ \relates QHash
+
+ Returns the hash value for the \a key.
+*/
+
+/*! \fn uint qHash(uint key)
+ \relates QHash
+
+ Returns the hash value for the \a key.
+*/
+
+/*! \fn uint qHash(int key)
+ \relates QHash
+
+ Returns the hash value for the \a key.
+*/
+
+/*! \fn uint qHash(ulong key)
+ \relates QHash
+
+ Returns the hash value for the \a key.
+*/
+
+/*! \fn uint qHash(long key)
+ \relates QHash
+
+ Returns the hash value for the \a key.
+*/
+
+/*! \fn uint qHash(quint64 key)
+ \relates QHash
+
+ Returns the hash value for the \a key.
+*/
+
+/*! \fn uint qHash(qint64 key)
+ \relates QHash
+
+ Returns the hash value for the \a key.
+*/
+
+/*! \fn uint qHash(QChar key)
+ \relates QHash
+
+ Returns the hash value for the \a key.
+*/
+
+/*! \fn uint qHash(const QByteArray &key)
+ \fn uint qHash(const QBitArray &key)
+ \relates QHash
+
+ Returns the hash value for the \a key.
+*/
+
+/*! \fn uint qHash(const QString &key)
+ \relates QHash
+
+ Returns the hash value for the \a key.
+*/
+
+/*! \fn uint qHash(const T *key)
+ \relates QHash
+
+ Returns the hash value for the \a key.
+*/
+
+/*!
\class QHash
\brief The QHash class is a template class that provides a hash-table-based dictionary.
@@ -401,7 +502,8 @@ void QHashData::checkSanity()
key. With QHash, the items are arbitrarily ordered.
\i The key type of a QMap must provide operator<(). The key
type of a QHash must provide operator==() and a global
- \l{qHash()}{qHash}(Key) function.
+ hash function called qHash() (see the related non-member
+ functions).
\endlist
Here's an example QHash with QString keys and \c int values:
@@ -732,7 +834,6 @@ void QHashData::checkSanity()
*/
/*! \fn const T QHash::value(const Key &key, const T &defaultValue) const
-
\overload
If the hash contains no item with the given \a key, the function returns
@@ -1490,121 +1591,6 @@ void QHashData::checkSanity()
\sa operator+=(), operator-()
*/
-/*! \fn uint qHash(char key)
- \relates QHash
-
- Returns the hash value for the \a key.
-*/
-
-/*! \fn uint qHash(uchar key)
- \relates QHash
- \overload
-
- Returns the hash value for the \a key.
-*/
-
-/*! \fn uint qHash(signed char key)
- \relates QHash
- \overload
-
- Returns the hash value for the \a key.
-*/
-
-/*! \fn uint qHash(ushort key)
- \relates QHash
- \overload
-
- Returns the hash value for the \a key.
-*/
-
-/*! \fn uint qHash(short key)
- \relates QHash
- \overload
-
- Returns the hash value for the \a key.
-*/
-
-/*! \fn uint qHash(uint key)
- \relates QHash
- \overload
-
- Returns the hash value for the \a key.
-*/
-
-/*! \fn uint qHash(int key)
- \relates QHash
- \overload
-
- Returns the hash value for the \a key.
-*/
-
-/*! \fn uint qHash(ulong key)
- \relates QHash
- \overload
-
- Returns the hash value for the \a key.
-*/
-
-/*! \fn uint qHash(long key)
- \relates QHash
- \overload
-
- Returns the hash value for the \a key.
-*/
-
-/*! \fn uint qHash(quint64 key)
- \relates QHash
- \overload
-
- Returns the hash value for the \a key.
-*/
-
-/*! \fn uint qHash(qint64 key)
- \relates QHash
- \overload
-
- Returns the hash value for the \a key.
-*/
-
-/*! \fn uint qHash(QChar key)
- \relates QHash
- \overload
-
- Returns the hash value for the \a key.
-*/
-
-/*! \fn uint qHash(const QByteArray &key)
- \fn uint qHash(const QBitArray &key)
- \relates QHash
- \overload
-
- Returns the hash value for the \a key.
-*/
-
-/*! \fn uint qHash(const QString &key)
- \relates QHash
- \overload
-
- Returns the hash value for the \a key.
-*/
-
-/*! \fn uint qHash(const T *key)
- \relates QHash
- \overload
-
- Returns the hash value for the \a key.
-*/
-
-/*!
- \fn uint qHash(const QPair<T1, T2> &key)
- \relates QHash
- \since 4.3
-
- Returns the hash value for the \a key.
-
- Types \c T1 and \c T2 must be supported by qHash().
-*/
-
/*! \fn QDataStream &operator<<(QDataStream &out, const QHash<Key, T>& hash)
\relates QHash
diff --git a/src/corelib/tools/qlinkedlist.cpp b/src/corelib/tools/qlinkedlist.cpp
index a3cbecc..c454224 100644
--- a/src/corelib/tools/qlinkedlist.cpp
+++ b/src/corelib/tools/qlinkedlist.cpp
@@ -652,7 +652,7 @@ QLinkedListData QLinkedListData::shared_null = {
Constructs an uninitialized iterator.
Functions like operator*() and operator++() should not be called
- on an uninitialized iterartor. Use operator=() to assign a value
+ on an uninitialized iterator. Use operator=() to assign a value
to it before using it.
\sa QLinkedList::begin() QLinkedList::end()
@@ -858,7 +858,7 @@ QLinkedListData QLinkedListData::shared_null = {
Constructs an uninitialized iterator.
Functions like operator*() and operator++() should not be called
- on an uninitialized iterartor. Use operator=() to assign a value
+ on an uninitialized iterator. Use operator=() to assign a value
to it before using it.
\sa QLinkedList::constBegin() QLinkedList::constEnd()
diff --git a/src/corelib/tools/qlistdata.cpp b/src/corelib/tools/qlistdata.cpp
index 2b1c086..d40b6b6 100644
--- a/src/corelib/tools/qlistdata.cpp
+++ b/src/corelib/tools/qlistdata.cpp
@@ -764,6 +764,10 @@ void **QListData::erase(void **xi)
This function requires the value type to have an implementation of
\c operator==().
+ Note that QList uses 0-based indexes, just like C++ arrays. Negative
+ indexes are not supported with the exception of the value mentioned
+ above.
+
\sa lastIndexOf(), contains()
*/
@@ -780,6 +784,10 @@ void **QListData::erase(void **xi)
This function requires the value type to have an implementation of
\c operator==().
+ Note that QList uses 0-based indexes, just like C++ arrays. Negative
+ indexes are not supported with the exception of the value mentioned
+ above.
+
\sa indexOf()
*/
@@ -1193,7 +1201,7 @@ void **QListData::erase(void **xi)
Constructs an uninitialized iterator.
Functions like operator*() and operator++() should not be called
- on an uninitialized iterartor. Use operator=() to assign a value
+ on an uninitialized iterator. Use operator=() to assign a value
to it before using it.
\sa QList::begin() QList::end()
@@ -1416,7 +1424,7 @@ void **QListData::erase(void **xi)
Constructs an uninitialized iterator.
Functions like operator*() and operator++() should not be called
- on an uninitialized iterartor. Use operator=() to assign a value
+ on an uninitialized iterator. Use operator=() to assign a value
to it before using it.
\sa QList::constBegin() QList::constEnd()
diff --git a/src/corelib/tools/qlocale.cpp b/src/corelib/tools/qlocale.cpp
index 559ba81..ab26945 100644
--- a/src/corelib/tools/qlocale.cpp
+++ b/src/corelib/tools/qlocale.cpp
@@ -1589,7 +1589,7 @@ QDataStream &operator>>(QDataStream &ds, QLocale &l)
defaults to the default locale (see setDefault()).
\endlist
- The "C" locale is identical to \l{English}/\l{UnitedStates}.
+ The "C" locale is identical in behavior to \l{English}/\l{UnitedStates}.
Use language() and country() to determine the actual language and
country values used.
@@ -1632,7 +1632,7 @@ QDataStream &operator>>(QDataStream &ds, QLocale &l)
This enumerated type is used to specify a language.
- \value C The "C" locale is English/UnitedStates.
+ \value C The "C" locale is identical in behavior to English/UnitedStates.
\value Abkhazian
\value Afan
\value Afar
diff --git a/src/corelib/tools/qrect.cpp b/src/corelib/tools/qrect.cpp
index 3930a0d..5602170 100644
--- a/src/corelib/tools/qrect.cpp
+++ b/src/corelib/tools/qrect.cpp
@@ -901,7 +901,7 @@ void QRect::moveCenter(const QPoint &p)
/*!
\fn bool QRect::contains(const QPoint &point, bool proper) const
- Returns true if the the given \a point is inside or on the edge of
+ Returns true if the given \a point is inside or on the edge of
the rectangle, otherwise returns false. If \a proper is true, this
function only returns true if the given \a point is \e inside the
rectangle (i.e., not on the edge).
diff --git a/src/corelib/tools/qsharedpointer_impl.h b/src/corelib/tools/qsharedpointer_impl.h
index f1b35ee..ad2d9f2 100644
--- a/src/corelib/tools/qsharedpointer_impl.h
+++ b/src/corelib/tools/qsharedpointer_impl.h
@@ -238,6 +238,7 @@ namespace QtSharedPointer {
template <class X> friend class ExternalRefCount;
template <class X> friend class QWeakPointer;
template <class X, class Y> friend QSharedPointer<X> qSharedPointerCastHelper(const QSharedPointer<Y> &src, X *);
+ template <class X, class Y> friend QSharedPointer<X> qSharedPointerDynamicCastHelper(const QSharedPointer<Y> &src, X *);
template <class X, class Y> friend QSharedPointer<X> qSharedPointerConstCastHelper(const QSharedPointer<Y> &src, X *);
template <class X, class Y> friend QSharedPointer<X> QtSharedPointer::qStrongRefFromWeakHelper(const QWeakPointer<Y> &src, X *);
#endif
@@ -509,6 +510,14 @@ namespace QtSharedPointer {
return result;
}
template <class X, class T>
+ Q_INLINE_TEMPLATE QSharedPointer<X> qSharedPointerDynamicCastHelper(const QSharedPointer<T> &src, X *)
+ {
+ QSharedPointer<X> result;
+ register T *ptr = src.data();
+ result.internalSet(src.d, dynamic_cast<X *>(ptr));
+ return result;
+ }
+ template <class X, class T>
Q_INLINE_TEMPLATE QSharedPointer<X> qSharedPointerConstCastHelper(const QSharedPointer<T> &src, X *)
{
QSharedPointer<X> result;
@@ -544,9 +553,7 @@ template <class X, class T>
Q_INLINE_TEMPLATE QSharedPointer<X> qSharedPointerDynamicCast(const QSharedPointer<T> &src)
{
X *x = 0;
- if (QtSharedPointer::qVerifyDynamicCast(src.data(), x))
- return QtSharedPointer::qSharedPointerCastHelper(src, x);
- return QSharedPointer<X>();
+ return QtSharedPointer::qSharedPointerDynamicCastHelper(src, x);
}
template <class X, class T>
Q_INLINE_TEMPLATE QSharedPointer<X> qSharedPointerDynamicCast(const QWeakPointer<T> &src)
@@ -558,17 +565,13 @@ template <class X, class T>
Q_INLINE_TEMPLATE QSharedPointer<X> qSharedPointerConstCast(const QSharedPointer<T> &src)
{
X *x = 0;
- if (QtSharedPointer::qVerifyConstCast(src.data(), x))
- return QtSharedPointer::qSharedPointerConstCastHelper(src, x);
- return QSharedPointer<X>();
+ return QtSharedPointer::qSharedPointerConstCastHelper(src, x);
}
template <class X, class T>
Q_INLINE_TEMPLATE QSharedPointer<X> qSharedPointerConstCast(const QWeakPointer<T> &src)
{
X *x = 0;
- if (QtSharedPointer::qVerifyConstCast(src.data(), x))
- return QtSharedPointer::qSharedPointerCastHelper(src, x);
- return QSharedPointer<X>();
+ return QtSharedPointer::qSharedPointerConstCastHelper(src, x);
}
template <class X, class T>
diff --git a/src/corelib/tools/qsize.cpp b/src/corelib/tools/qsize.cpp
index 76a5484..bbf6c2a 100644
--- a/src/corelib/tools/qsize.cpp
+++ b/src/corelib/tools/qsize.cpp
@@ -781,7 +781,7 @@ void QSizeF::scale(const QSizeF &s, Qt::AspectRatioMode mode)
\fn QDataStream &operator<<(QDataStream &stream, const QSizeF &size)
\relates QSizeF
- Writes the the given \a size to the given \a stream and returns a
+ Writes the given \a size to the given \a stream and returns a
reference to the stream.
\sa {Format of the QDataStream Operators}
diff --git a/src/corelib/tools/qstring.cpp b/src/corelib/tools/qstring.cpp
index 9c637ac..c3649e3 100644
--- a/src/corelib/tools/qstring.cpp
+++ b/src/corelib/tools/qstring.cpp
@@ -579,7 +579,7 @@ const QString::Null QString::null = { };
'\\0' character for a null string (\e not a null pointer), and
QString() compares equal to QString(""). We recommend that you
always use the isEmpty() function and avoid isNull().
-
+
\section1 Argument Formats
In member functions where an argument \e format can be specified
@@ -743,7 +743,9 @@ int QString::grow(int size)
/*!
\since 4.2
- Returns a copy of the \a string string encoded in ucs4.
+ Returns a copy of the \a string, where the encoding of \a string depends on
+ the size of wchar. If wchar is 4 bytes, the \a string is interpreted as ucs-4,
+ if wchar is 2 bytes it is interpreted as ucs-2.
If \a size is -1 (default), the \a string has to be 0 terminated.
@@ -1433,7 +1435,7 @@ QString &QString::append(QChar ch)
truncated at the specified \a position.
\snippet doc/src/snippets/qstring/main.cpp 37
-
+
\sa insert(), replace()
*/
QString &QString::remove(int pos, int len)
@@ -1552,7 +1554,7 @@ QString &QString::replace(int pos, int len, const QChar *unicode, int size)
return *this;
if (pos + len > d->size)
len = d->size - pos;
-
+
uint index = pos;
replace_helper(&index, 1, len, unicode, size);
return *this;
@@ -1561,15 +1563,13 @@ QString &QString::replace(int pos, int len, const QChar *unicode, int size)
/*!
\fn QString &QString::replace(int position, int n, QChar after)
\overload replace()
-
+
Replaces \a n characters beginning at index \a position with the
character \a after and returns a reference to this string.
*/
QString &QString::replace(int pos, int len, QChar after)
{
- uint index = pos;
- replace_helper(&index, 1, len, &after, 1);
- return *this;
+ return replace(pos, len, &after, 1);
}
/*!
@@ -1602,7 +1602,7 @@ void QString::replace_helper(uint *indices, int nIndices, int blen, const QChar
{
if (blen == alen) {
detach();
- for (int i = 0; i < nIndices; ++i)
+ for (int i = 0; i < nIndices; ++i)
memcpy(d->data + indices[i], after, alen * sizeof(QChar));
} else if (alen < blen) {
detach();
@@ -1633,7 +1633,7 @@ void QString::replace_helper(uint *indices, int nIndices, int blen, const QChar
int newLen = d->size + adjust;
int moveend = d->size;
resize(newLen);
-
+
while (nIndices) {
--nIndices;
int movestart = indices[nIndices] + blen;
@@ -1685,7 +1685,7 @@ QString &QString::replace(const QChar *before, int blen,
memcpy(copy, before, blen*sizeof(QChar));
b = copy;
}
-
+
QStringMatcher matcher(b, blen, cs);
int index = 0;
@@ -1712,7 +1712,7 @@ QString &QString::replace(const QChar *before, int blen,
// index has to be adjusted in case we get back into the loop above.
index += pos*(alen-blen);
}
-
+
if (a != after)
::free((QChar *)a);
if (b != before)
@@ -2250,7 +2250,7 @@ int QString::indexOf(const QLatin1String &str, int from, Qt::CaseSensitivity cs)
QVarLengthArray<ushort> s(len);
for (int i = 0; i < len; ++i)
s[i] = str.latin1()[i];
-
+
return qFindString(unicode(), length(), from, (const QChar *)s.data(), len, cs);
}
@@ -2346,7 +2346,7 @@ static int lastIndexOfHelper(const ushort *haystack, int from, const ushort *nee
/*
See indexOf() for explanations.
*/
-
+
const ushort *end = haystack;
haystack += from;
const int sl_minus_1 = sl-1;
@@ -2408,7 +2408,7 @@ int QString::lastIndexOf(const QString &str, int from, Qt::CaseSensitivity cs) c
const int sl = str.d->size;
if (sl == 1)
return lastIndexOf(QChar(str.d->data[0]), from, cs);
-
+
const int l = d->size;
if (from < 0)
from += l;
@@ -2446,7 +2446,7 @@ int QString::lastIndexOf(const QLatin1String &str, int from, Qt::CaseSensitivity
const int sl = qstrlen(str.latin1());
if (sl == 1)
return lastIndexOf(QLatin1Char(str.latin1()[0]), from, cs);
-
+
const int l = d->size;
if (from < 0)
from += l;
@@ -5995,7 +5995,7 @@ QString QString::normalized(QString::NormalizationForm mode, QChar::UnicodeVersi
}
if (simple)
return *this;
-
+
QString s = *this;
if (version != CURRENT_VERSION) {
for (int i = 0; i < NumNormalizationCorrections; ++i) {
@@ -6207,7 +6207,7 @@ static QString replaceArgEscapes(const QString &s, const ArgEscapeData &d, int f
/*!
Returns a copy of this string with the lowest numbered place marker
replaced by string \a a, i.e., \c %1, \c %2, ..., \c %99.
-
+
\a fieldWidth specifies the minimum amount of space that argument \a
a shall occupy. If \a a requires less space than \a fieldWidth, it
is padded to \a fieldWidth with character \a fillChar. A positive
@@ -6819,7 +6819,7 @@ void QString::updateProperties() const
Appends the given \a ch character onto the end of this string.
*/
-/*!
+/*!
\fn std::string QString::toStdString() const
Returns a std::string object with the data contained in this
diff --git a/src/corelib/tools/qstring.h b/src/corelib/tools/qstring.h
index 1493dce..69c4f2f 100644
--- a/src/corelib/tools/qstring.h
+++ b/src/corelib/tools/qstring.h
@@ -113,7 +113,7 @@ public:
int capacity() const;
inline void reserve(int size);
- inline void squeeze() { if (d->size < d->alloc) realloc(); d->capacity = 0;}
+ inline void squeeze() { if (d->size < d->alloc || d->ref != 1) realloc(); d->capacity = 0;}
inline const QChar *unicode() const;
inline QChar *data();
diff --git a/src/corelib/tools/qstringlist.cpp b/src/corelib/tools/qstringlist.cpp
index 386321f1..e22f122 100644
--- a/src/corelib/tools/qstringlist.cpp
+++ b/src/corelib/tools/qstringlist.cpp
@@ -397,7 +397,7 @@ void QtPrivate::QStringList_replaceInStrings(QStringList *that, const QRegExp &r
\fn QString QStringList::join(const QString &separator) const
Joins all the string list's strings into a single string with each
- element separated by the the given \a separator (which can be an
+ element separated by the given \a separator (which can be an
empty string).
\sa QString::split()
diff --git a/src/corelib/tools/qtimeline.cpp b/src/corelib/tools/qtimeline.cpp
index 2979a09..3a03558 100644
--- a/src/corelib/tools/qtimeline.cpp
+++ b/src/corelib/tools/qtimeline.cpp
@@ -225,7 +225,9 @@ void QTimeLinePrivate::setCurrentTime(int msecs)
valueForTime() and emitting valueChanged(). By default, valueForTime()
applies an interpolation algorithm to generate these value. You can choose
from a set of predefined timeline algorithms by calling
- setCurveShape(). By default, QTimeLine uses the EaseInOut curve shape,
+ setCurveShape().
+
+ Note that by default, QTimeLine uses the EaseInOut curve shape,
which provides a value that grows slowly, then grows steadily, and
finally grows slowly. For a custom timeline, you can reimplement
valueForTime(), in which case QTimeLine's curveShape property is ignored.
diff --git a/src/corelib/tools/qvector.h b/src/corelib/tools/qvector.h
index 6bea03b..1f047b8 100644
--- a/src/corelib/tools/qvector.h
+++ b/src/corelib/tools/qvector.h
@@ -98,6 +98,8 @@ struct QVectorTypedData
T array[1];
};
+class QRegion;
+
template <typename T>
class QVector
{
@@ -313,7 +315,7 @@ void QVector<T>::detach_helper()
{ realloc(d->size, d->alloc); }
template <typename T>
void QVector<T>::reserve(int asize)
-{ if (asize > d->alloc) realloc(d->size, asize); d->capacity = 1; }
+{ if (asize > d->alloc || d->ref != 1) realloc(d->size, asize); d->capacity = 1; }
template <typename T>
void QVector<T>::resize(int asize)
{ realloc(asize, (asize > d->alloc || (!d->capacity && asize < d->size && asize < (d->alloc >> 1))) ?
diff --git a/src/dbus/qdbusintegrator.cpp b/src/dbus/qdbusintegrator.cpp
index 8c701f5..f40a45f 100644
--- a/src/dbus/qdbusintegrator.cpp
+++ b/src/dbus/qdbusintegrator.cpp
@@ -1102,7 +1102,7 @@ void QDBusConnectionPrivate::socketWrite(int fd)
}
for (int i = 0; i < pendingWatches.size(); ++i)
- if (!q_dbus_watch_handle(pendingWatches[i], DBUS_WATCH_READABLE))
+ if (!q_dbus_watch_handle(pendingWatches[i], DBUS_WATCH_WRITABLE))
qDebug("OUT OF MEM");
}
@@ -1125,12 +1125,7 @@ void QDBusConnectionPrivate::objectDestroyed(QObject *obj)
void QDBusConnectionPrivate::relaySignal(QObject *obj, const QMetaObject *mo, int signalId,
const QVariantList &args)
{
- int mciid = mo->indexOfClassInfo(QCLASSINFO_DBUS_INTERFACE);
- Q_ASSERT(mciid != -1);
-
- QMetaClassInfo mci = mo->classInfo(mciid);
- Q_ASSERT(mci.value());
- const char *interface = mci.value();
+ QString interface = qDBusInterfaceFromMetaObject(mo);
QMetaMethod mm = mo->method(signalId);
QByteArray memberName = mm.signature();
@@ -1146,12 +1141,12 @@ void QDBusConnectionPrivate::relaySignal(QObject *obj, const QMetaObject *mo, in
}
QDBusReadLocker locker(RelaySignalAction, this);
- QDBusMessage message = QDBusMessage::createSignal(QLatin1String("/"), QLatin1String(interface),
+ QDBusMessage message = QDBusMessage::createSignal(QLatin1String("/"), interface,
QLatin1String(memberName));
message.setArguments(args);
DBusMessage *msg = QDBusMessagePrivate::toDBusMessage(message);
if (!msg) {
- qWarning("QDBusConnection: Could not emit signal %s.%s", interface, memberName.constData());
+ qWarning("QDBusConnection: Could not emit signal %s.%s", qPrintable(interface), memberName.constData());
return;
}
diff --git a/src/dbus/qdbuspendingcall.cpp b/src/dbus/qdbuspendingcall.cpp
index 9753bbe..955f4a0 100644
--- a/src/dbus/qdbuspendingcall.cpp
+++ b/src/dbus/qdbuspendingcall.cpp
@@ -432,9 +432,14 @@ inline void QDBusPendingCallWatcherPrivate::_q_finished()
QDBusPendingCallWatcher::QDBusPendingCallWatcher(const QDBusPendingCall &call, QObject *parent)
: QObject(*new QDBusPendingCallWatcherPrivate, parent), QDBusPendingCall(call)
{
- if (d) {
- if (!d->watcherHelper)
+ if (d) { // QDBusPendingCall::d
+ if (!d->watcherHelper) {
d->watcherHelper = new QDBusPendingCallWatcherHelper;
+ if (isFinished()) {
+ // cause a signal emission anyways
+ QMetaObject::invokeMethod(d->watcherHelper, "finished", Qt::QueuedConnection);
+ }
+ }
d->watcherHelper->add(this);
}
}
@@ -464,6 +469,7 @@ void QDBusPendingCallWatcher::waitForFinished()
d->waitForFinished();
// our signals were queued, so deliver them
+ QCoreApplication::sendPostedEvents(d->watcherHelper, QEvent::MetaCall);
QCoreApplication::sendPostedEvents(this, QEvent::MetaCall);
}
}
diff --git a/src/gui/accessible/qaccessible_mac.mm b/src/gui/accessible/qaccessible_mac.mm
index b6412c2..68efb8f 100644
--- a/src/gui/accessible/qaccessible_mac.mm
+++ b/src/gui/accessible/qaccessible_mac.mm
@@ -72,55 +72,36 @@ typedef NSString * const QAXRoleType;
#define QAXApplicationRole NSAccessibilityApplicationRole
#define QAXButtonRole NSAccessibilityButtonRole
#define QAXCancelAction NSAccessibilityCancelAction
-#define QAXCancelAction NSAccessibilityCancelAction
#define QAXCheckBoxRole NSAccessibilityCheckBoxRole
#define QAXChildrenAttribute NSAccessibilityChildrenAttribute
-#define QAXChildrenAttribute NSAccessibilityChildrenAttribute
-#define QAXChildrenAttribute NSAccessibilityChildrenAttribute
#define QAXCloseButtonAttribute NSAccessibilityCloseButtonAttribute
#define QAXCloseButtonAttribute NSAccessibilityCloseButtonAttribute
#define QAXColumnRole NSAccessibilityColumnRole
#define QAXConfirmAction NSAccessibilityConfirmAction
-#define QAXConfirmAction NSAccessibilityConfirmAction
#define QAXContentsAttribute NSAccessibilityContentsAttribute
-#define QAXContentsAttribute NSAccessibilityContentsAttribute
-#define QAXDecrementAction NSAccessibilityDecrementAction
#define QAXDecrementAction NSAccessibilityDecrementAction
#define QAXDecrementArrowSubrole NSAccessibilityDecrementArrowSubrole
#define QAXDecrementPageSubrole NSAccessibilityDecrementPageSubrole
#define QAXDescriptionAttribute NSAccessibilityDescriptionAttribute
-#define QAXDescriptionAttribute NSAccessibilityDescriptionAttribute
-#define QAXDescriptionAttribute NSAccessibilityDescriptionAttribute
-#define QAXDescriptionAttribute NSAccessibilityDescriptionAttribute
-#define QAXEnabledAttribute NSAccessibilityEnabledAttribute
#define QAXEnabledAttribute NSAccessibilityEnabledAttribute
#define QAXExpandedAttribute NSAccessibilityExpandedAttribute
#define QAXFocusedAttribute NSAccessibilityFocusedAttribute
-#define QAXFocusedAttribute NSAccessibilityFocusedAttribute
-#define QAXFocusedAttribute NSAccessibilityFocusedAttribute
#define QAXFocusedUIElementChangedNotification NSAccessibilityFocusedUIElementChangedNotification
#define QAXFocusedWindowChangedNotification NSAccessibilityFocusedWindowChangedNotification
#define QAXGroupRole NSAccessibilityGroupRole
#define QAXGrowAreaAttribute NSAccessibilityGrowAreaAttribute
-#define QAXGrowAreaAttribute NSAccessibilityGrowAreaAttribute
#define QAXGrowAreaRole NSAccessibilityGrowAreaRole
#define QAXHelpAttribute NSAccessibilityHelpAttribute
-#define QAXHelpAttribute NSAccessibilityHelpAttribute
-#define QAXHelpAttribute NSAccessibilityHelpAttribute
#define QAXHorizontalOrientationValue NSAccessibilityHorizontalOrientationValue
#define QAXHorizontalScrollBarAttribute NSAccessibilityHorizontalScrollBarAttribute
-#define QAXHorizontalScrollBarAttribute NSAccessibilityHorizontalScrollBarAttribute
-#define QAXIncrementAction NSAccessibilityIncrementAction
#define QAXIncrementAction NSAccessibilityIncrementAction
#define QAXIncrementArrowSubrole NSAccessibilityIncrementArrowSubrole
#define QAXIncrementPageSubrole NSAccessibilityIncrementPageSubrole
#define QAXIncrementorRole NSAccessibilityIncrementorRole
#define QAXLinkedUIElementsAttribute NSAccessibilityLinkedUIElementsAttribute
-#define QAXLinkedUIElementsAttribute NSAccessibilityLinkedUIElementsAttribute
#define QAXListRole NSAccessibilityListRole
#define QAXMainAttribute NSAccessibilityMainAttribute
#define QAXMaxValueAttribute NSAccessibilityMaxValueAttribute
-#define QAXMaxValueAttribute NSAccessibilityMaxValueAttribute
#define QAXMenuBarRole NSAccessibilityMenuBarRole
#define QAXMenuButtonRole NSAccessibilityMenuButtonRole
#define QAXMenuClosedNotification NSAccessibilityMenuClosedNotification
@@ -128,151 +109,90 @@ typedef NSString * const QAXRoleType;
#define QAXMenuOpenedNotification NSAccessibilityMenuOpenedNotification
#define QAXMenuRole NSAccessibilityMenuRole
#define QAXMinValueAttribute NSAccessibilityMinValueAttribute
-#define QAXMinValueAttribute NSAccessibilityMinValueAttribute
#define QAXMinimizeButtonAttribute NSAccessibilityMinimizeButtonAttribute
-#define QAXMinimizeButtonAttribute NSAccessibilityMinimizeButtonAttribute
-#define QAXMinimizedAttribute NSAccessibilityMinimizedAttribute
#define QAXMinimizedAttribute NSAccessibilityMinimizedAttribute
#define QAXNextContentsAttribute NSAccessibilityNextContentsAttribute
-#define QAXNextContentsAttribute NSAccessibilityNextContentsAttribute
-#define QAXOrientationAttribute NSAccessibilityOrientationAttribute
-#define QAXOrientationAttribute NSAccessibilityOrientationAttribute
#define QAXOrientationAttribute NSAccessibilityOrientationAttribute
#define QAXParentAttribute NSAccessibilityParentAttribute
#define QAXPickAction NSAccessibilityPickAction
-#define QAXPickAction NSAccessibilityPickAction
#define QAXPopUpButtonRole NSAccessibilityPopUpButtonRole
#define QAXPositionAttribute NSAccessibilityPositionAttribute
-#define QAXPositionAttribute NSAccessibilityPositionAttribute
-#define QAXPressAction NSAccessibilityPressAction
#define QAXPressAction NSAccessibilityPressAction
#define QAXPreviousContentsAttribute NSAccessibilityPreviousContentsAttribute
-#define QAXPreviousContentsAttribute NSAccessibilityPreviousContentsAttribute
-#define QAXPreviousContentsAttribute NSAccessibilityPreviousContentsAttribute
#define QAXProgressIndicatorRole NSAccessibilityProgressIndicatorRole
#define QAXRadioButtonRole NSAccessibilityRadioButtonRole
#define QAXRoleAttribute NSAccessibilityRoleAttribute
-#define QAXRoleAttribute NSAccessibilityRoleAttribute
#define QAXRoleDescriptionAttribute NSAccessibilityRoleDescriptionAttribute
#define QAXRowRole NSAccessibilityRowRole
#define QAXRowsAttribute NSAccessibilityRowsAttribute
-#define QAXRowsAttribute NSAccessibilityRowsAttribute
-#define QAXScrollAreaRole NSAccessibilityScrollAreaRole
-#define QAXScrollAreaRole NSAccessibilityScrollAreaRole
#define QAXScrollAreaRole NSAccessibilityScrollAreaRole
#define QAXScrollBarRole NSAccessibilityScrollBarRole
#define QAXSelectedAttribute NSAccessibilitySelectedAttribute
#define QAXSelectedChildrenAttribute NSAccessibilitySelectedChildrenAttribute
#define QAXSelectedRowsAttribute NSAccessibilitySelectedRowsAttribute
-#define QAXSelectedRowsAttribute NSAccessibilitySelectedRowsAttribute
-#define QAXSizeAttribute NSAccessibilitySizeAttribute
#define QAXSizeAttribute NSAccessibilitySizeAttribute
#define QAXSliderRole NSAccessibilitySliderRole
#define QAXSplitGroupRole NSAccessibilitySplitGroupRole
#define QAXSplitterRole NSAccessibilitySplitterRole
-#define QAXSplitterRole NSAccessibilitySplitterRole
-#define QAXSplitterRole NSAccessibilitySplitterRole
-#define QAXSplittersAttribute NSAccessibilitySplittersAttribute
#define QAXSplittersAttribute NSAccessibilitySplittersAttribute
#define QAXStaticTextRole NSAccessibilityStaticTextRole
-#define QAXStaticTextRole NSAccessibilityStaticTextRole
-#define QAXSubroleAttribute NSAccessibilitySubroleAttribute
#define QAXSubroleAttribute NSAccessibilitySubroleAttribute
#define QAXSubroleAttribute NSAccessibilitySubroleAttribute
#define QAXTabGroupRole NSAccessibilityTabGroupRole
-#define QAXTabGroupRole NSAccessibilityTabGroupRole
#define QAXTableRole NSAccessibilityTableRole
#define QAXTabsAttribute NSAccessibilityTabsAttribute
-#define QAXTabsAttribute NSAccessibilityTabsAttribute
#define QAXTextFieldRole NSAccessibilityTextFieldRole
-#define QAXTextFieldRole NSAccessibilityTextFieldRole
-#define QAXTitleAttribute NSAccessibilityTitleAttribute
-#define QAXTitleAttribute NSAccessibilityTitleAttribute
#define QAXTitleAttribute NSAccessibilityTitleAttribute
-#define QAXTitleAttribute NSAccessibilityTitleAttribute
-#define QAXTitleUIElementAttribute NSAccessibilityTitleUIElementAttribute
#define QAXTitleUIElementAttribute NSAccessibilityTitleUIElementAttribute
#define QAXToolbarButtonAttribute NSAccessibilityToolbarButtonAttribute
-#define QAXToolbarButtonAttribute NSAccessibilityToolbarButtonAttribute
#define QAXToolbarRole NSAccessibilityToolbarRole
#define QAXTopLevelUIElementAttribute NSAccessibilityTopLevelUIElementAttribute
-#define QAXTopLevelUIElementAttribute NSAccessibilityTopLevelUIElementAttribute
-#define QAXTopLevelUIElementAttribute NSAccessibilityTopLevelUIElementAttribute
-#define QAXUnknownRole NSAccessibilityUnknownRole
#define QAXUnknownRole NSAccessibilityUnknownRole
#define QAXValueAttribute NSAccessibilityValueAttribute
-#define QAXValueAttribute NSAccessibilityValueAttribute
-#define QAXValueAttribute NSAccessibilityValueAttribute
-#define QAXValueAttribute NSAccessibilityValueAttribute
#define QAXValueChangedNotification NSAccessibilityValueChangedNotification
#define QAXValueIndicatorRole NSAccessibilityValueIndicatorRole
#define QAXVerticalOrientationValue NSAccessibilityVerticalOrientationValue
#define QAXVerticalScrollBarAttribute NSAccessibilityVerticalScrollBarAttribute
-#define QAXVerticalScrollBarAttribute NSAccessibilityVerticalScrollBarAttribute
#define QAXVisibleRowsAttribute NSAccessibilityVisibleRowsAttribute
-#define QAXVisibleRowsAttribute NSAccessibilityVisibleRowsAttribute
-#define QAXWindowAttribute NSAccessibilityWindowAttribute
-#define QAXWindowAttribute NSAccessibilityWindowAttribute
#define QAXWindowAttribute NSAccessibilityWindowAttribute
#define QAXWindowCreatedNotification NSAccessibilityWindowCreatedNotification
#define QAXWindowMovedNotification NSAccessibilityWindowMovedNotification
#define QAXWindowRole NSAccessibilityWindowRole
#define QAXZoomButtonAttribute NSAccessibilityZoomButtonAttribute
-#define QAXZoomButtonAttribute NSAccessibilityZoomButtonAttribute
#else
typedef CFStringRef const QAXRoleType;
#define QAXApplicationRole kAXApplicationRole
#define QAXButtonRole kAXButtonRole
#define QAXCancelAction kAXCancelAction
-#define QAXCancelAction kAXCancelAction
#define QAXCheckBoxRole kAXCheckBoxRole
#define QAXChildrenAttribute kAXChildrenAttribute
-#define QAXChildrenAttribute kAXChildrenAttribute
-#define QAXChildrenAttribute kAXChildrenAttribute
-#define QAXCloseButtonAttribute kAXCloseButtonAttribute
#define QAXCloseButtonAttribute kAXCloseButtonAttribute
#define QAXColumnRole kAXColumnRole
#define QAXConfirmAction kAXConfirmAction
-#define QAXConfirmAction kAXConfirmAction
#define QAXContentsAttribute kAXContentsAttribute
-#define QAXContentsAttribute kAXContentsAttribute
-#define QAXDecrementAction kAXDecrementAction
#define QAXDecrementAction kAXDecrementAction
#define QAXDecrementArrowSubrole kAXDecrementArrowSubrole
#define QAXDecrementPageSubrole kAXDecrementPageSubrole
#define QAXDescriptionAttribute kAXDescriptionAttribute
-#define QAXDescriptionAttribute kAXDescriptionAttribute
-#define QAXDescriptionAttribute kAXDescriptionAttribute
-#define QAXDescriptionAttribute kAXDescriptionAttribute
-#define QAXEnabledAttribute kAXEnabledAttribute
#define QAXEnabledAttribute kAXEnabledAttribute
#define QAXExpandedAttribute kAXExpandedAttribute
#define QAXFocusedAttribute kAXFocusedAttribute
-#define QAXFocusedAttribute kAXFocusedAttribute
-#define QAXFocusedAttribute kAXFocusedAttribute
#define QAXFocusedUIElementChangedNotification kAXFocusedUIElementChangedNotification
#define QAXFocusedWindowChangedNotification kAXFocusedWindowChangedNotification
#define QAXGroupRole kAXGroupRole
#define QAXGrowAreaAttribute kAXGrowAreaAttribute
-#define QAXGrowAreaAttribute kAXGrowAreaAttribute
#define QAXGrowAreaRole kAXGrowAreaRole
#define QAXHelpAttribute kAXHelpAttribute
-#define QAXHelpAttribute kAXHelpAttribute
-#define QAXHelpAttribute kAXHelpAttribute
#define QAXHorizontalOrientationValue kAXHorizontalOrientationValue
#define QAXHorizontalScrollBarAttribute kAXHorizontalScrollBarAttribute
-#define QAXHorizontalScrollBarAttribute kAXHorizontalScrollBarAttribute
-#define QAXIncrementAction kAXIncrementAction
#define QAXIncrementAction kAXIncrementAction
#define QAXIncrementArrowSubrole kAXIncrementArrowSubrole
#define QAXIncrementPageSubrole kAXIncrementPageSubrole
#define QAXIncrementorRole kAXIncrementorRole
#define QAXLinkedUIElementsAttribute kAXLinkedUIElementsAttribute
-#define QAXLinkedUIElementsAttribute kAXLinkedUIElementsAttribute
#define QAXListRole kAXListRole
#define QAXMainAttribute kAXMainAttribute
#define QAXMaxValueAttribute kAXMaxValueAttribute
-#define QAXMaxValueAttribute kAXMaxValueAttribute
#define QAXMenuBarRole kAXMenuBarRole
#define QAXMenuButtonRole kAXMenuButtonRole
#define QAXMenuClosedNotification kAXMenuClosedNotification
@@ -280,97 +200,55 @@ typedef CFStringRef const QAXRoleType;
#define QAXMenuOpenedNotification kAXMenuOpenedNotification
#define QAXMenuRole kAXMenuRole
#define QAXMinValueAttribute kAXMinValueAttribute
-#define QAXMinValueAttribute kAXMinValueAttribute
#define QAXMinimizeButtonAttribute kAXMinimizeButtonAttribute
-#define QAXMinimizeButtonAttribute kAXMinimizeButtonAttribute
-#define QAXMinimizedAttribute kAXMinimizedAttribute
#define QAXMinimizedAttribute kAXMinimizedAttribute
#define QAXNextContentsAttribute kAXNextContentsAttribute
-#define QAXNextContentsAttribute kAXNextContentsAttribute
-#define QAXOrientationAttribute kAXOrientationAttribute
-#define QAXOrientationAttribute kAXOrientationAttribute
#define QAXOrientationAttribute kAXOrientationAttribute
#define QAXParentAttribute kAXParentAttribute
#define QAXPickAction kAXPickAction
-#define QAXPickAction kAXPickAction
#define QAXPopUpButtonRole kAXPopUpButtonRole
#define QAXPositionAttribute kAXPositionAttribute
-#define QAXPositionAttribute kAXPositionAttribute
-#define QAXPressAction kAXPressAction
#define QAXPressAction kAXPressAction
#define QAXPreviousContentsAttribute kAXPreviousContentsAttribute
-#define QAXPreviousContentsAttribute kAXPreviousContentsAttribute
-#define QAXPreviousContentsAttribute kAXPreviousContentsAttribute
#define QAXProgressIndicatorRole kAXProgressIndicatorRole
#define QAXRadioButtonRole kAXRadioButtonRole
#define QAXRoleAttribute kAXRoleAttribute
-#define QAXRoleAttribute kAXRoleAttribute
#define QAXRoleDescriptionAttribute kAXRoleDescriptionAttribute
#define QAXRowRole kAXRowRole
#define QAXRowsAttribute kAXRowsAttribute
-#define QAXRowsAttribute kAXRowsAttribute
-#define QAXScrollAreaRole kAXScrollAreaRole
-#define QAXScrollAreaRole kAXScrollAreaRole
#define QAXScrollAreaRole kAXScrollAreaRole
#define QAXScrollBarRole kAXScrollBarRole
#define QAXSelectedAttribute kAXSelectedAttribute
#define QAXSelectedChildrenAttribute kAXSelectedChildrenAttribute
#define QAXSelectedRowsAttribute kAXSelectedRowsAttribute
-#define QAXSelectedRowsAttribute kAXSelectedRowsAttribute
-#define QAXSizeAttribute kAXSizeAttribute
#define QAXSizeAttribute kAXSizeAttribute
#define QAXSliderRole kAXSliderRole
#define QAXSplitGroupRole kAXSplitGroupRole
#define QAXSplitterRole kAXSplitterRole
-#define QAXSplitterRole kAXSplitterRole
-#define QAXSplitterRole kAXSplitterRole
-#define QAXSplittersAttribute kAXSplittersAttribute
#define QAXSplittersAttribute kAXSplittersAttribute
#define QAXStaticTextRole kAXStaticTextRole
-#define QAXStaticTextRole kAXStaticTextRole
-#define QAXSubroleAttribute kAXSubroleAttribute
#define QAXSubroleAttribute kAXSubroleAttribute
-#define QAXSubroleAttribute kAXSubroleAttribute
-#define QAXTabGroupRole kAXTabGroupRole
#define QAXTabGroupRole kAXTabGroupRole
#define QAXTableRole kAXTableRole
#define QAXTabsAttribute kAXTabsAttribute
-#define QAXTabsAttribute kAXTabsAttribute
-#define QAXTextFieldRole kAXTextFieldRole
#define QAXTextFieldRole kAXTextFieldRole
#define QAXTitleAttribute kAXTitleAttribute
-#define QAXTitleAttribute kAXTitleAttribute
-#define QAXTitleAttribute kAXTitleAttribute
-#define QAXTitleAttribute kAXTitleAttribute
#define QAXTitleUIElementAttribute kAXTitleUIElementAttribute
-#define QAXTitleUIElementAttribute kAXTitleUIElementAttribute
-#define QAXToolbarButtonAttribute kAXToolbarButtonAttribute
#define QAXToolbarButtonAttribute kAXToolbarButtonAttribute
#define QAXToolbarRole kAXToolbarRole
#define QAXTopLevelUIElementAttribute kAXTopLevelUIElementAttribute
-#define QAXTopLevelUIElementAttribute kAXTopLevelUIElementAttribute
-#define QAXTopLevelUIElementAttribute kAXTopLevelUIElementAttribute
#define QAXUnknownRole kAXUnknownRole
-#define QAXUnknownRole kAXUnknownRole
-#define QAXValueAttribute kAXValueAttribute
-#define QAXValueAttribute kAXValueAttribute
-#define QAXValueAttribute kAXValueAttribute
#define QAXValueAttribute kAXValueAttribute
#define QAXValueChangedNotification kAXValueChangedNotification
#define QAXValueIndicatorRole kAXValueIndicatorRole
#define QAXVerticalOrientationValue kAXVerticalOrientationValue
#define QAXVerticalScrollBarAttribute kAXVerticalScrollBarAttribute
-#define QAXVerticalScrollBarAttribute kAXVerticalScrollBarAttribute
-#define QAXVisibleRowsAttribute kAXVisibleRowsAttribute
#define QAXVisibleRowsAttribute kAXVisibleRowsAttribute
#define QAXWindowAttribute kAXWindowAttribute
-#define QAXWindowAttribute kAXWindowAttribute
-#define QAXWindowAttribute kAXWindowAttribute
#define QAXWindowCreatedNotification kAXWindowCreatedNotification
#define QAXWindowMovedNotification kAXWindowMovedNotification
#define QAXWindowRole kAXWindowRole
#define QAXZoomButtonAttribute kAXZoomButtonAttribute
-#define QAXZoomButtonAttribute kAXZoomButtonAttribute
#endif
diff --git a/src/gui/accessible/qaccessiblewidget.cpp b/src/gui/accessible/qaccessiblewidget.cpp
index 4b2b2ab..753ac57 100644
--- a/src/gui/accessible/qaccessiblewidget.cpp
+++ b/src/gui/accessible/qaccessiblewidget.cpp
@@ -131,9 +131,16 @@ QString Q_GUI_EXPORT qt_accHotKey(const QString &text)
int fa = 0;
QChar ac;
while ((fa = text.indexOf(QLatin1Char('&'), fa)) != -1) {
- if (fa == text.length() - 1 || text.at(fa+1) != QLatin1Char('&')) {
- ac = text.at(fa+1);
- break;
+ ++fa;
+ if (fa < text.length()) {
+ // ignore "&&"
+ if (text.at(fa) == QLatin1Char('&')) {
+ ++fa;
+ continue;
+ } else {
+ ac = text.at(fa);
+ break;
+ }
}
}
if (ac.isNull())
diff --git a/src/gui/dialogs/qabstractprintdialog.cpp b/src/gui/dialogs/qabstractprintdialog.cpp
index 0dc16c9..5ed8852 100644
--- a/src/gui/dialogs/qabstractprintdialog.cpp
+++ b/src/gui/dialogs/qabstractprintdialog.cpp
@@ -400,7 +400,7 @@ void QAbstractPrintDialogPrivate::setPrinter(QPrinter *newPrinter)
QAbstractPrintDialog::setEnabledOptions() and
QAbstractPrintDialog::addEnabledOption() have no effect.
- In Qt 4.4, it was possible to use the satic functions to show a sheet on
+ In Qt 4.4, it was possible to use the static functions to show a sheet on
Mac OS X. This is no longer supported in Qt 4.5. If you want this
functionality, use QPrintDialog::open().
diff --git a/src/gui/dialogs/qfiledialog.cpp b/src/gui/dialogs/qfiledialog.cpp
index 2ce5563..eeb2743 100644
--- a/src/gui/dialogs/qfiledialog.cpp
+++ b/src/gui/dialogs/qfiledialog.cpp
@@ -96,9 +96,8 @@ Q_GUI_EXPORT _qt_filedialog_save_filename_hook qt_filedialog_save_filename_hook
order to select one or many files or a directory.
The easiest way to create a QFileDialog is to use the static
- functions. On Windows, these static functions will call the native
- Windows file dialog, and on Mac OS X these static function will call
- the native Mac OS X file dialog.
+ functions. On Windows, Mac OS X, KDE and GNOME, these static functions will
+ call the native file dialog when possible.
\snippet doc/src/snippets/code/src_gui_dialogs_qfiledialog.cpp 0
@@ -216,7 +215,7 @@ Q_GUI_EXPORT _qt_filedialog_save_filename_hook qt_filedialog_save_filename_hook
are resolved.
\value DontConfirmOverwrite Don't ask for confirmation if an existing file is selected.
By default confirmation is requested.
- \value DontUseNativeDialog Don't use the native file dialog. By default on Mac OS X and Windows,
+ \value DontUseNativeDialog Don't use the native file dialog. By default on Mac OS X,
the native file dialog is used unless you use a subclass of QFileDialog that contains the
Q_OBJECT macro.
\value ReadOnly Indicates that the model is readonly.
@@ -693,7 +692,10 @@ void QFileDialog::setVisible(bool visible)
*/
void QFileDialogPrivate::_q_goToUrl(const QUrl &url)
{
- QModelIndex idx = model->index(url.toLocalFile());
+ //The shortcut in the side bar may have a parent that is not fetched yet (e.g. an hidden file)
+ //so we force the fetching
+ QFileSystemModelPrivate::QFileSystemNode *node = model->d_func()->node(url.toLocalFile(), true);
+ QModelIndex idx = model->d_func()->index(node);
_q_enterDirectory(idx);
}
@@ -957,25 +959,29 @@ void QFileDialog::setNameFilters(const QStringList &filters)
{
Q_D(QFileDialog);
d->defaultFileTypes = (filters == QStringList(QFileDialog::tr("All Files (*)")));
- d->nameFilters = filters;
+ QStringList cleanedFilters;
+ for (int i = 0; i < filters.count(); ++i) {
+ cleanedFilters << filters[i].simplified();
+ }
+ d->nameFilters = cleanedFilters;
if (d->nativeDialogInUse){
- d->setNameFilters_sys(filters);
+ d->setNameFilters_sys(cleanedFilters);
return;
}
d->qFileDialogUi->fileTypeCombo->clear();
- if (filters.isEmpty())
+ if (cleanedFilters.isEmpty())
return;
if (testOption(HideNameFilterDetails)) {
QStringList strippedFilters;
- for (int i = 0; i < filters.count(); ++i) {
- strippedFilters.append(filters[i].mid(0, filters[i].indexOf(QLatin1String(" ("))));
+ for (int i = 0; i < cleanedFilters.count(); ++i) {
+ strippedFilters.append(cleanedFilters[i].mid(0, cleanedFilters[i].indexOf(QLatin1String(" ("))));
}
d->qFileDialogUi->fileTypeCombo->addItems(strippedFilters);
} else {
- d->qFileDialogUi->fileTypeCombo->addItems(filters);
+ d->qFileDialogUi->fileTypeCombo->addItems(cleanedFilters);
}
d->_q_useNameFilter(0);
}
@@ -1433,6 +1439,8 @@ void QFileDialog::setIconProvider(QFileIconProvider *provider)
{
Q_D(QFileDialog);
d->model->setIconProvider(provider);
+ //It forces the refresh of all entries in the side bar, then we can get new icons
+ d->qFileDialogUi->sidebar->setUrls(d->qFileDialogUi->sidebar->urls());
}
/*!
@@ -1529,52 +1537,51 @@ extern QString qt_win_get_existing_directory(const QFileDialogArgs &args);
#endif
/*!
- This is a convenience static function that returns an existing file
- selected by the user. If the user presses Cancel, it returns a null
- string.
+ This is a convenience static function that returns an existing file
+ selected by the user. If the user presses Cancel, it returns a null string.
- \snippet doc/src/snippets/code/src_gui_dialogs_qfiledialog.cpp 8
+ \snippet doc/src/snippets/code/src_gui_dialogs_qfiledialog.cpp 8
- The function creates a modal file dialog with the given \a parent widget.
- If the parent is not 0, the dialog will be shown centered over the
- parent widget.
+ The function creates a modal file dialog with the given \a parent widget.
+ If \a parent is not 0, the dialog will be shown centered over the parent
+ widget.
- The file dialog's working directory will be set to \a dir. If \a
- dir includes a file name, the file will be selected. Only files
- that match the given \a filter are shown. The filter selected is
- set to \a selectedFilter. The parameters \a dir, \a
- selectedFilter, and \a filter may be empty strings. If you want
- multiple filters, separate them with ';;', for example:
+ The file dialog's working directory will be set to \a dir. If \a dir
+ includes a file name, the file will be selected. Only files that match the
+ given \a filter are shown. The filter selected is set to \a selectedFilter.
+ The parameters \a dir, \a selectedFilter, and \a filter may be empty
+ strings. If you want multiple filters, separate them with ';;', for
+ example:
- \code
+ \code
"Images (*.png *.xpm *.jpg);;Text files (*.txt);;XML files (*.xml)"
- \endcode
+ \endcode
- The \a options argument holds various
- options about how to run the dialog, see the QFileDialog::Option enum for
- more information on the flags you can pass.
+ The \a options argument holds various options about how to run the dialog,
+ see the QFileDialog::Option enum for more information on the flags you can
+ pass.
- The dialog's caption is set to \a caption. If \a caption is not
- specified then a default caption will be used.
+ The dialog's caption is set to \a caption. If \a caption is not specified
+ then a default caption will be used.
- Under Windows and Mac OS X, this static function will use the native
- file dialog and not a QFileDialog.
+ On Windows and Mac OS X, this static function will use the native file
+ dialog and not a QFileDialog.
- Note that on Windows the dialog will spin a blocking modal event loop
- that will not dispatch any QTimers, and if parent is not 0 then it will
- position the dialog just under the parent's title bar.
+ On Windows the dialog will spin a blocking modal event loop that will not
+ dispatch any QTimers, and if \a parent is not 0 then it will position the
+ dialog just below the parent's title bar.
- Under Unix/X11, the normal behavior of the file dialog is to resolve
- and follow symlinks. For example, if \c{/usr/tmp} is a symlink to
- \c{/var/tmp}, the file dialog will change to \c{/var/tmp} after
- entering \c{/usr/tmp}. If \a options includes DontResolveSymlinks,
- the file dialog will treat symlinks as regular directories.
+ On Unix/X11, the normal behavior of the file dialog is to resolve and
+ follow symlinks. For example, if \c{/usr/tmp} is a symlink to \c{/var/tmp},
+ the file dialog will change to \c{/var/tmp} after entering \c{/usr/tmp}. If
+ \a options includes DontResolveSymlinks, the file dialog will treat
+ symlinks as regular directories.
- \warning Do not delete \a parent during the execution of the dialog.
- If you want to do this, you should create the dialog
- yourself using one of the QFileDialog constructors.
+ \warning Do not delete \a parent during the execution of the dialog. If you
+ want to do this, you should create the dialog yourself using one of the
+ QFileDialog constructors.
- \sa getOpenFileNames(), getSaveFileName(), getExistingDirectory()
+ \sa getOpenFileNames(), getSaveFileName(), getExistingDirectory()
*/
QString QFileDialog::getOpenFileName(QWidget *parent,
const QString &caption,
@@ -1589,7 +1596,12 @@ QString QFileDialog::getOpenFileName(QWidget *parent,
args.parent = parent;
args.caption = caption;
args.directory = QFileDialogPrivate::workingDirectory(dir);
- args.selection = QFileDialogPrivate::initialSelection(dir);
+ //If workingDirectory returned a different path than the initial one,
+ //it means that the initial path was invalid. There is no point to try select a file
+ if (args.directory != QFileInfo(dir).path())
+ args.selection = QString();
+ else
+ args.selection = QFileDialogPrivate::initialSelection(dir);
args.filter = filter;
args.mode = ExistingFile;
args.options = options;
@@ -1612,54 +1624,53 @@ QString QFileDialog::getOpenFileName(QWidget *parent,
}
/*!
- This is a convenience static function that will return one or more
- existing files selected by the user.
+ This is a convenience static function that will return one or more existing
+ files selected by the user.
- \snippet doc/src/snippets/code/src_gui_dialogs_qfiledialog.cpp 9
+ \snippet doc/src/snippets/code/src_gui_dialogs_qfiledialog.cpp 9
- This function creates a modal file dialog with the given \a parent
- widget. If the parent is not 0, the dialog will be shown centered
- over the parent widget.
+ This function creates a modal file dialog with the given \a parent widget.
+ If \a parent is not 0, the dialog will be shown centered over the parent
+ widget.
- The file dialog's working directory will be set to \a dir. If \a
- dir includes a file name, the file will be selected. The filter
- is set to \a filter so that only those files which match the filter
- are shown. The filter selected is set to \a selectedFilter. The parameters
- \a dir, \a selectedFilter and \a filter may be empty strings. If you
- need multiple filters, separate them with ';;', for instance:
+ The file dialog's working directory will be set to \a dir. If \a dir
+ includes a file name, the file will be selected. The filter is set to
+ \a filter so that only those files which match the filter are shown. The
+ filter selected is set to \a selectedFilter. The parameters \a dir,
+ \a selectedFilter and \a filter may be empty strings. If you need multiple
+ filters, separate them with ';;', for instance:
- \code
+ \code
"Images (*.png *.xpm *.jpg);;Text files (*.txt);;XML files (*.xml)"
- \endcode
+ \endcode
- The dialog's caption is set to \a caption. If \a caption is not
- specified then a default caption will be used.
+ The dialog's caption is set to \a caption. If \a caption is not specified
+ then a default caption will be used.
- Under Windows and Mac OS X, this static function will use the native
- file dialog and not a QFileDialog. On Mac OS X, the \a dir argument
- is ignored, the native dialog always displays the last visited directory.
+ On Windows and Mac OS X, this static function will use the native file
+ dialog and not a QFileDialog.
- Note that on Windows the dialog will spin a blocking modal event loop
- that will not dispatch any QTimers, and if parent is not 0 then it will
- position the dialog just under the parent's title bar.
+ On Windows the dialog will spin a blocking modal event loop that will not
+ dispatch any QTimers, and if \a parent is not 0 then it will position the
+ dialog just below the parent's title bar.
- Under Unix/X11, the normal behavior of the file dialog is to resolve
- and follow symlinks. For example, if \c{/usr/tmp} is a symlink to
- \c{/var/tmp}, the file dialog will change to \c{/var/tmp} after
- entering \c{/usr/tmp}. The \a options argument holds various
- options about how to run the dialog, see the QFileDialog::Option enum for
- more information on the flags you can pass.
+ On Unix/X11, the normal behavior of the file dialog is to resolve and
+ follow symlinks. For example, if \c{/usr/tmp} is a symlink to \c{/var/tmp},
+ the file dialog will change to \c{/var/tmp} after entering \c{/usr/tmp}.
+ The \a options argument holds various options about how to run the dialog,
+ see the QFileDialog::Option enum for more information on the flags you can
+ pass.
- Note that if you want to iterate over the list of files, you should
- iterate over a copy. For example:
+ \note If you want to iterate over the list of files, you should iterate
+ over a copy. For example:
\snippet doc/src/snippets/code/src_gui_dialogs_qfiledialog.cpp 10
- \warning Do not delete \a parent during the execution of the dialog.
- If you want to do this, you should create the dialog
- yourself using one of the QFileDialog constructors.
+ \warning Do not delete \a parent during the execution of the dialog. If you
+ want to do this, you should create the dialog yourself using one of the
+ QFileDialog constructors.
- \sa getOpenFileName(), getSaveFileName(), getExistingDirectory()
+ \sa getOpenFileName(), getSaveFileName(), getExistingDirectory()
*/
QStringList QFileDialog::getOpenFileNames(QWidget *parent,
const QString &caption,
@@ -1674,7 +1685,12 @@ QStringList QFileDialog::getOpenFileNames(QWidget *parent,
args.parent = parent;
args.caption = caption;
args.directory = QFileDialogPrivate::workingDirectory(dir);
- args.selection = QFileDialogPrivate::initialSelection(dir);
+ //If workingDirectory returned a different path than the initial one,
+ //it means that the initial path was invalid. There is no point to try select a file
+ if (args.directory != QFileInfo(dir).path())
+ args.selection = QString();
+ else
+ args.selection = QFileDialogPrivate::initialSelection(dir);
args.filter = filter;
args.mode = ExistingFiles;
args.options = options;
@@ -1698,54 +1714,54 @@ QStringList QFileDialog::getOpenFileNames(QWidget *parent,
}
/*!
- This is a convenience static function that will return a file name
- selected by the user. The file does not have to exist.
+ This is a convenience static function that will return a file name selected
+ by the user. The file does not have to exist.
- It creates a modal file dialog with the given \a parent widget. If the
- parent is not 0, the dialog will be shown centered over the parent
- widget.
+ It creates a modal file dialog with the given \a parent widget. If
+ \a parent is not 0, the dialog will be shown centered over the parent
+ widget.
- \snippet doc/src/snippets/code/src_gui_dialogs_qfiledialog.cpp 11
+ \snippet doc/src/snippets/code/src_gui_dialogs_qfiledialog.cpp 11
- The file dialog's working directory will be set to \a dir. If \a
- dir includes a file name, the file will be selected. Only files that
- match the \a filter are shown. The filter selected is set to
- \a selectedFilter. The parameters \a dir, \a selectedFilter, and
- \a filter may be empty strings. Multiple filters are separated with ';;'.
- For instance:
+ The file dialog's working directory will be set to \a dir. If \a dir
+ includes a file name, the file will be selected. Only files that match the
+ \a filter are shown. The filter selected is set to \a selectedFilter. The
+ parameters \a dir, \a selectedFilter, and \a filter may be empty strings.
+ Multiple filters are separated with ';;'. For instance:
- \code
+ \code
"Images (*.png *.xpm *.jpg);;Text files (*.txt);;XML files (*.xml)"
- \endcode
+ \endcode
- The \a options argument holds various
- options about how to run the dialog, see the QFileDialog::Option enum for
- more information on the flags you can pass.
+ The \a options argument holds various options about how to run the dialog,
+ see the QFileDialog::Option enum for more information on the flags you can
+ pass.
- The default filter can be chosen by setting \a selectedFilter to the desired value.
+ The default filter can be chosen by setting \a selectedFilter to the
+ desired value.
- The dialog's caption is set to \a caption. If \a caption is not
- specified then a default caption will be used.
+ The dialog's caption is set to \a caption. If \a caption is not specified,
+ a default caption will be used.
- Under Windows and Mac OS X, this static function will use the native
- file dialog and not a QFileDialog.
+ On Windows and Mac OS X, this static function will use the native file
+ dialog and not a QFileDialog.
- Note that on Windows the dialog will spin a blocking modal event loop
- that will not dispatch any QTimers, and if parent is not 0 then it will
- position the dialog just under the parent's title bar.
- On Mac OS X, the filter argument is ignored.
+ On Windows the dialog will spin a blocking modal event loop that will not
+ dispatch any QTimers, and if \a parent is not 0 then it will position the
+ dialog just below the parent's title bar. On Mac OS X, with its native file
+ dialog, the filter argument is ignored.
- Under Unix/X11, the normal behavior of the file dialog is to resolve
- and follow symlinks. For example, if \c{/usr/tmp} is a symlink to
- \c{/var/tmp}, the file dialog will change to \c{/var/tmp} after
- entering \c{/usr/tmp}. If \a options includes DontResolveSymlinks,
- the file dialog will treat symlinks as regular directories.
+ On Unix/X11, the normal behavior of the file dialog is to resolve and
+ follow symlinks. For example, if \c{/usr/tmp} is a symlink to \c{/var/tmp},
+ the file dialog will change to \c{/var/tmp} after entering \c{/usr/tmp}. If
+ \a options includes DontResolveSymlinks the file dialog will treat symlinks
+ as regular directories.
- \warning Do not delete \a parent during the execution of the dialog.
- If you want to do this, you should create the dialog
- yourself using one of the QFileDialog constructors.
+ \warning Do not delete \a parent during the execution of the dialog. If you
+ want to do this, you should create the dialog yourself using one of the
+ QFileDialog constructors.
- \sa getOpenFileName(), getOpenFileNames(), getExistingDirectory()
+ \sa getOpenFileName(), getOpenFileNames(), getExistingDirectory()
*/
QString QFileDialog::getSaveFileName(QWidget *parent,
const QString &caption,
@@ -1760,7 +1776,12 @@ QString QFileDialog::getSaveFileName(QWidget *parent,
args.parent = parent;
args.caption = caption;
args.directory = QFileDialogPrivate::workingDirectory(dir);
- args.selection = QFileDialogPrivate::initialSelection(dir);
+ //If workingDirectory returned a different path than the initial one,
+ //it means that the initial path was invalid. There is no point to try select a file
+ if (args.directory != QFileInfo(dir).path())
+ args.selection = QString();
+ else
+ args.selection = QFileDialogPrivate::initialSelection(dir);
args.filter = filter;
args.mode = AnyFile;
args.options = options;
@@ -1786,46 +1807,43 @@ QString QFileDialog::getSaveFileName(QWidget *parent,
}
/*!
- This is a convenience static function that will return an existing
- directory selected by the user.
+ This is a convenience static function that will return an existing
+ directory selected by the user.
- \snippet doc/src/snippets/code/src_gui_dialogs_qfiledialog.cpp 12
+ \snippet doc/src/snippets/code/src_gui_dialogs_qfiledialog.cpp 12
- This function creates a modal file dialog with the given \a parent
- widget. If the parent is not 0, the dialog will be shown centered over
- the parent widget.
+ This function creates a modal file dialog with the given \a parent widget.
+ If \a parent is not 0, the dialog will be shown centered over the parent
+ widget.
- The dialog's working directory is set to \a dir, and the caption is
- set to \a caption. Either of these may be an empty string in which case
- the current directory and a default caption will be used
- respectively.
+ The dialog's working directory is set to \a dir, and the caption is set to
+ \a caption. Either of these may be an empty string in which case the
+ current directory and a default caption will be used respectively.
- The \a options argument holds various
- options about how to run the dialog, see the QFileDialog::Option enum for
- more information on the flags you can pass. Note that \l{QFileDialog::}{ShowDirsOnly}
- must be set to ensure a native file dialog.
+ The \a options argument holds various options about how to run the dialog,
+ see the QFileDialog::Option enum for more information on the flags you can
+ pass. To ensure a native file dialog, \l{QFileDialog::}{ShowDirsOnly} must
+ be set.
- Under Windows and Mac OS X, this static function will use the native
- file dialog and not a QFileDialog. On Mac OS X, the \a dir argument
- is ignored, the native dialog always displays the last visited directory.
- On Windows CE, if the device has no native file dialog, a QFileDialog
- will be used.
+ On Windows and Mac OS X, this static function will use the native file
+ dialog and not a QFileDialog. On Windows CE, if the device has no native
+ file dialog, a QFileDialog will be used.
- Under Unix/X11, the normal behavior of the file dialog is to resolve
- and follow symlinks. For example, if \c{/usr/tmp} is a symlink to
- \c{/var/tmp}, the file dialog will change to \c{/var/tmp} after
- entering \c{/usr/tmp}. If \a options includes DontResolveSymlinks,
- the file dialog will treat symlinks as regular directories.
+ On Unix/X11, the normal behavior of the file dialog is to resolve and
+ follow symlinks. For example, if \c{/usr/tmp} is a symlink to \c{/var/tmp},
+ the file dialog will change to \c{/var/tmp} after entering \c{/usr/tmp}. If
+ \a options includes DontResolveSymlinks, the file dialog will treat
+ symlinks as regular directories.
- Note that on Windows the dialog will spin a blocking modal event loop
- that will not dispatch any QTimers, and if parent is not 0 then it will
- position the dialog just under the parent's title bar.
+ On Windows the dialog will spin a blocking modal event loop that will not
+ dispatch any QTimers, and if \a parent is not 0 then it will position the
+ dialog just below the parent's title bar.
- \warning Do not delete \a parent during the execution of the dialog.
- If you want to do this, you should create the dialog
- yourself using one of the QFileDialog constructors.
+ \warning Do not delete \a parent during the execution of the dialog. If you
+ want to do this, you should create the dialog yourself using one of the
+ QFileDialog constructors.
- \sa getOpenFileName(), getOpenFileNames(), getSaveFileName()
+ \sa getOpenFileName(), getOpenFileNames(), getSaveFileName()
*/
QString QFileDialog::getExistingDirectory(QWidget *parent,
const QString &caption,
@@ -2246,12 +2264,21 @@ void QFileDialog::setProxyModel(QAbstractProxyModel *proxyModel)
proxyModel->setSourceModel(d->model);
d->qFileDialogUi->listView->setModel(d->proxyModel);
d->qFileDialogUi->treeView->setModel(d->proxyModel);
+#ifndef QT_NO_COMPLETER
+ d->completer->setModel(d->proxyModel);
+ d->completer->proxyModel = d->proxyModel;
+#endif
connect(d->proxyModel, SIGNAL(rowsInserted(const QModelIndex &, int, int)),
this, SLOT(_q_rowsInserted(const QModelIndex &)));
} else {
d->proxyModel = 0;
d->qFileDialogUi->listView->setModel(d->model);
d->qFileDialogUi->treeView->setModel(d->model);
+#ifndef QT_NO_COMPLETER
+ d->completer->setModel(d->model);
+ d->completer->sourceModel = d->model;
+ d->completer->proxyModel = 0;
+#endif
connect(d->model, SIGNAL(rowsInserted(const QModelIndex &, int, int)),
this, SLOT(_q_rowsInserted(const QModelIndex &)));
}
@@ -2764,8 +2791,9 @@ void QFileDialogPrivate::_q_enterDirectory(const QModelIndex &index)
{
Q_Q(QFileDialog);
// My Computer or a directory
- QString path = index.data(QFileSystemModel::FilePathRole).toString();
- if (path.isEmpty() || model->isDir(index)) {
+ QModelIndex sourceIndex = index.model() == proxyModel ? mapToSource(index) : index;
+ QString path = sourceIndex.data(QFileSystemModel::FilePathRole).toString();
+ if (path.isEmpty() || model->isDir(sourceIndex)) {
q->setDirectory(path);
emit q->directoryEntered(path);
if (fileMode == QFileDialog::Directory
@@ -3139,7 +3167,11 @@ void QFileDialogLineEdit::keyPressEvent(QKeyEvent *e)
QString QFSCompletor::pathFromIndex(const QModelIndex &index) const
{
- const QFileSystemModel *dirModel = static_cast<const QFileSystemModel *>(model());
+ const QFileSystemModel *dirModel;
+ if (proxyModel)
+ dirModel = qobject_cast<const QFileSystemModel *>(proxyModel->sourceModel());
+ else
+ dirModel = sourceModel;
QString currentLocation = dirModel->rootPath();
QString path = index.data(QFileSystemModel::FilePathRole).toString();
if (!currentLocation.isEmpty() && path.startsWith(currentLocation)) {
@@ -3185,7 +3217,11 @@ QStringList QFSCompletor::splitPath(const QString &path) const
bool startsFromRoot = path[0] == sep[0];
#endif
if (parts.count() == 1 || (parts.count() > 1 && !startsFromRoot)) {
- const QFileSystemModel *dirModel = static_cast<const QFileSystemModel *>(model());
+ const QFileSystemModel *dirModel;
+ if (proxyModel)
+ dirModel = qobject_cast<const QFileSystemModel *>(proxyModel->sourceModel());
+ else
+ dirModel = sourceModel;
QString currentLocation = QDir::toNativeSeparators(dirModel->rootPath());
if (currentLocation.contains(sep) && path != currentLocation) {
QStringList currentLocationList = splitPath(currentLocation);
diff --git a/src/gui/dialogs/qfiledialog_mac.mm b/src/gui/dialogs/qfiledialog_mac.mm
index 4c13d01..90af9fc 100644
--- a/src/gui/dialogs/qfiledialog_mac.mm
+++ b/src/gui/dialogs/qfiledialog_mac.mm
@@ -278,7 +278,7 @@ QT_USE_NAMESPACE
{
Q_UNUSED(sender);
QString qtFileName = QT_PREPEND_NAMESPACE(qt_mac_NSStringToQString)(filename);
- QFileInfo info(qtFileName);
+ QFileInfo info(qtFileName.normalized(QT_PREPEND_NAMESPACE(QString::NormalizationForm_C)));
QString path = info.absolutePath();
if (path != *mLastFilterCheckPath){
*mLastFilterCheckPath = path;
diff --git a/src/gui/dialogs/qfiledialog_p.h b/src/gui/dialogs/qfiledialog_p.h
index 8cb2cb0..ab4199e 100644
--- a/src/gui/dialogs/qfiledialog_p.h
+++ b/src/gui/dialogs/qfiledialog_p.h
@@ -91,6 +91,26 @@ class QCompleter;
class QHBoxLayout;
class Ui_QFileDialog;
+#ifndef QT_NO_COMPLETER
+/*!
+ QCompleter that can deal with QFileSystemModel
+ */
+class QFSCompletor : public QCompleter {
+public:
+ QFSCompletor(QFileSystemModel *model, QObject *parent = 0) : QCompleter(model, parent), proxyModel(0), sourceModel(model)
+ {
+#ifdef Q_OS_WIN
+ setCaseSensitivity(Qt::CaseInsensitive);
+#endif
+ }
+ QString pathFromIndex(const QModelIndex &index) const;
+ QStringList splitPath(const QString& path) const;
+
+ QAbstractProxyModel *proxyModel;
+ QFileSystemModel *sourceModel;
+};
+#endif // QT_NO_COMPLETER
+
struct QFileDialogArgs
{
QFileDialogArgs() : parent(0), mode(QFileDialog::AnyFile) {}
@@ -255,7 +275,7 @@ public:
// data
QStringList watching;
QFileSystemModel *model;
- QCompleter *completer;
+ QFSCompletor *completer;
QFileDialog::FileMode fileMode;
QFileDialog::AcceptMode acceptMode;
@@ -434,23 +454,6 @@ inline QString QFileDialogPrivate::rootPath() const {
inline QString QFileDialogPrivate::selectedNameFilter_sys() const { return QString(); }
#endif
-#ifndef QT_NO_COMPLETER
-/*!
- QCompleter that can deal with QFileSystemModel
- */
-class QFSCompletor : public QCompleter {
-public:
- QFSCompletor(QAbstractItemModel *model, QObject *parent = 0) : QCompleter(model, parent)
- {
-#ifdef Q_OS_WIN
- setCaseSensitivity(Qt::CaseInsensitive);
-#endif
- }
- QString pathFromIndex(const QModelIndex &index) const;
- QStringList splitPath(const QString& path) const;
-};
-#endif // QT_NO_COMPLETER
-
QT_END_NAMESPACE
#endif // QT_NO_FILEDIALOG
diff --git a/src/gui/dialogs/qfilesystemmodel.cpp b/src/gui/dialogs/qfilesystemmodel.cpp
index c7b3137..012d3a1 100644
--- a/src/gui/dialogs/qfilesystemmodel.cpp
+++ b/src/gui/dialogs/qfilesystemmodel.cpp
@@ -1430,7 +1430,10 @@ void QFileSystemModel::setFilter(QDir::Filters filters)
}
/*!
- Returns the filter specification for the directory model.
+ Returns the filter specified for the directory model.
+
+ If a filter has not been set, the default filter is QDir::AllEntries |
+ QDir::NoDotAndDotDot | QDir::AllDirs.
\sa QDir::Filters
*/
diff --git a/src/gui/dialogs/qfilesystemmodel.h b/src/gui/dialogs/qfilesystemmodel.h
index 52ecaf9..995268b 100644
--- a/src/gui/dialogs/qfilesystemmodel.h
+++ b/src/gui/dialogs/qfilesystemmodel.h
@@ -158,6 +158,8 @@ private:
Q_PRIVATE_SLOT(d_func(), void _q_performDelayedSort())
Q_PRIVATE_SLOT(d_func(), void _q_fileSystemChanged(const QString &path, const QList<QPair<QString, QFileInfo> > &))
Q_PRIVATE_SLOT(d_func(), void _q_resolvedName(const QString &fileName, const QString &resolvedName))
+
+ friend class QFileDialogPrivate;
};
inline bool QFileSystemModel::rmdir(const QModelIndex &aindex) const
diff --git a/src/gui/dialogs/qfilesystemmodel_p.h b/src/gui/dialogs/qfilesystemmodel_p.h
index 77c35a2..0a1265a 100644
--- a/src/gui/dialogs/qfilesystemmodel_p.h
+++ b/src/gui/dialogs/qfilesystemmodel_p.h
@@ -163,7 +163,11 @@ public:
info->icon = iconProvider->icon(QFileInfo(path));
QHash<QString, QFileSystemNode *>::const_iterator iterator;
for(iterator = children.constBegin() ; iterator != children.constEnd() ; ++iterator) {
- iterator.value()->updateIcon(iconProvider, path + QLatin1Char('/') + iterator.value()->fileName);
+ //On windows the root (My computer) has no path so we don't want to add a / for nothing (e.g. /C:/)
+ if (!path.isEmpty())
+ iterator.value()->updateIcon(iconProvider, path + QLatin1Char('/') + iterator.value()->fileName);
+ else
+ iterator.value()->updateIcon(iconProvider, iterator.value()->fileName);
}
}
@@ -172,7 +176,11 @@ public:
info->displayType = iconProvider->type(QFileInfo(path));
QHash<QString, QFileSystemNode *>::const_iterator iterator;
for(iterator = children.constBegin() ; iterator != children.constEnd() ; ++iterator) {
- iterator.value()->retranslateStrings(iconProvider, path + QLatin1Char('/') + iterator.value()->fileName);
+ //On windows the root (My computer) has no path so we don't want to add a / for nothing (e.g. /C:/)
+ if (!path.isEmpty())
+ iterator.value()->retranslateStrings(iconProvider, path + QLatin1Char('/') + iterator.value()->fileName);
+ else
+ iterator.value()->retranslateStrings(iconProvider, iterator.value()->fileName);
}
}
diff --git a/src/gui/dialogs/qfontdialog_mac.mm b/src/gui/dialogs/qfontdialog_mac.mm
index d6ddfa3..50917a1 100644
--- a/src/gui/dialogs/qfontdialog_mac.mm
+++ b/src/gui/dialogs/qfontdialog_mac.mm
@@ -87,7 +87,6 @@ const int StyleMask = NSTitledWindowMask | NSClosableWindowMask | NSResizableWin
NSButton *mOkButton;
NSButton *mCancelButton;
QFontDialogPrivate *mPriv;
- NSFont *mCocoaFont;
QFont *mQtFont;
BOOL mPanelHackedWithButtons;
CGFloat mDialogExtraWidth;
@@ -119,6 +118,29 @@ const int StyleMask = NSTitledWindowMask | NSClosableWindowMask | NSResizableWin
- (void)cleanUpAfterMyself;
@end
+static QFont qfontForCocoaFont(NSFont *cocoaFont, const QFont &resolveFont)
+{
+ QFont newFont;
+ if (cocoaFont) {
+ int pSize = qRound([cocoaFont pointSize]);
+ QString family(QCFString::toQString(reinterpret_cast<CFStringRef>([cocoaFont familyName])));
+ QString typeface(QCFString::toQString(reinterpret_cast<CFStringRef>([cocoaFont fontName])));
+// qDebug() << "original family" << family << "typeface" << typeface << "psize" << pSize;
+ int hyphenPos = typeface.indexOf(QLatin1Char('-'));
+ if (hyphenPos != -1) {
+ typeface.remove(0, hyphenPos + 1);
+ } else {
+ typeface = QLatin1String("Normal");
+ }
+// qDebug() << " massaged family" << family << "typeface" << typeface << "psize" << pSize;
+ newFont = QFontDatabase().font(family, typeface, pSize);
+ newFont.setUnderline(resolveFont.underline());
+ newFont.setStrikeOut(resolveFont.strikeOut());
+
+ }
+ return newFont;
+}
+
@implementation QCocoaFontPanelDelegate
- (id)initWithFontPanel:(NSFontPanel *)panel
stolenContentView:(NSView *)stolenContentView
@@ -134,7 +156,6 @@ const int StyleMask = NSTitledWindowMask | NSClosableWindowMask | NSResizableWin
mOkButton = okButton;
mCancelButton = cancelButton;
mPriv = priv;
- mCocoaFont = 0;
mPanelHackedWithButtons = (okButton != 0);
mDialogExtraWidth = extraWidth;
mDialogExtraHeight = extraHeight;
@@ -155,42 +176,14 @@ const int StyleMask = NSTitledWindowMask | NSClosableWindowMask | NSResizableWin
- (void)dealloc
{
- if (mCocoaFont)
- [mCocoaFont release];
delete mQtFont;
[super dealloc];
}
- (void)changeFont:(id)sender
{
- Q_UNUSED(sender);
-
- QFont newFont;
-
- if (mCocoaFont)
- [mCocoaFont autorelease];
NSFont *dummyFont = [NSFont userFontOfSize:12.0];
- mCocoaFont = [sender convertFont:dummyFont];
- if (mCocoaFont) {
- [mCocoaFont retain];
-
- int pSize = qRound([mCocoaFont pointSize]);
- QString family(QCFString::toQString(reinterpret_cast<CFStringRef>([mCocoaFont familyName])));
- QString typeface(QCFString::toQString(reinterpret_cast<CFStringRef>([mCocoaFont fontName])));
-// qDebug() << "original family" << family << "typeface" << typeface << "psize" << pSize;
- int hyphenPos = typeface.indexOf(QLatin1Char('-'));
- if (hyphenPos != -1) {
- typeface.remove(0, hyphenPos + 1);
- } else {
- typeface = QLatin1String("Normal");
- }
-// qDebug() << " massaged family" << family << "typeface" << typeface << "psize" << pSize;
- newFont = QFontDatabase().font(family, typeface, pSize);
- newFont.setUnderline(mQtFont->underline());
- newFont.setStrikeOut(mQtFont->strikeOut());
- }
-
- [self setQtFont:newFont];
+ [self setQtFont:qfontForCocoaFont([sender convertFont:dummyFont], *mQtFont)];
if (mPriv)
mPriv->updateSampleFont(*mQtFont);
}
@@ -317,6 +310,9 @@ const int StyleMask = NSTitledWindowMask | NSClosableWindowMask | NSResizableWin
- (void)onOkClicked
{
Q_ASSERT(mPanelHackedWithButtons);
+ NSFontManager *fontManager = [NSFontManager sharedFontManager];
+ [self setQtFont:qfontForCocoaFont([fontManager convertFont:[fontManager selectedFont]],
+ *mQtFont)];
[[mStolenContentView window] close];
[self finishOffWithCode:NSOKButton];
}
@@ -357,8 +353,8 @@ const int StyleMask = NSTitledWindowMask | NSClosableWindowMask | NSResizableWin
- (void)setQtFont:(const QFont &)newFont
{
- delete mQtFont;
- mQtFont = new QFont(newFont);
+ delete mQtFont;
+ mQtFont = new QFont(newFont);
}
- (QFont)qtFont
@@ -374,16 +370,7 @@ const int StyleMask = NSTitledWindowMask | NSClosableWindowMask | NSResizableWin
mModalSession = 0;
}
- // temporary hack to work around bug in deleteLater() in Qt/Mac Cocoa
-#if 1
- bool deleteDialog = mPriv->fontDialog()->testAttribute(Qt::WA_DeleteOnClose);
- mPriv->fontDialog()->setAttribute(Qt::WA_DeleteOnClose, false);
-#endif
mPriv->done((code == NSOKButton) ? QDialog::Accepted : QDialog::Rejected);
-#if 1
- if (deleteDialog)
- delete mPriv->fontDialog();
-#endif
} else {
[NSApp stopModalWithCode:code];
}
@@ -404,6 +391,7 @@ const int StyleMask = NSTitledWindowMask | NSClosableWindowMask | NSResizableWin
}
[mFontPanel setDelegate:nil];
[[NSFontManager sharedFontManager] setDelegate:nil];
+ [[NSFontManager sharedFontManager] setTarget:nil];
}
@end
@@ -527,6 +515,7 @@ void *QFontDialogPrivate::openCocoaFontPanel(const QFont &initial,
extraHeight:dialogExtraHeight];
[ourPanel setDelegate:delegate];
[[NSFontManager sharedFontManager] setDelegate:delegate];
+ [[NSFontManager sharedFontManager] setTarget:delegate];
setFont(delegate, initial);
// hack to get correct initial layout
diff --git a/src/gui/dialogs/qinputdialog.cpp b/src/gui/dialogs/qinputdialog.cpp
index b63c8ee..78d99e3 100644
--- a/src/gui/dialogs/qinputdialog.cpp
+++ b/src/gui/dialogs/qinputdialog.cpp
@@ -424,26 +424,27 @@ void QInputDialogPrivate::_q_currentRowChanged(const QModelIndex &newIndex,
/*!
\class QInputDialog
- \brief The QInputDialog class provides a simple convenience dialog to get a single value from the user.
+ \brief The QInputDialog class provides a simple convenience dialog to get a
+ single value from the user.
\ingroup dialogs
\mainclass
- The input value can be a string, a number or an item from a list. A
- label must be set to tell the user what they should enter.
+ The input value can be a string, a number or an item from a list. A label
+ must be set to tell the user what they should enter.
- Four static convenience functions are provided:
- getText(), getInt(), getDouble(), and getItem(). All the
- functions can be used in a similar way, for example:
+ Four static convenience functions are provided: getText(), getInt(),
+ getDouble(), and getItem(). All the functions can be used in a similar way,
+ for example:
\snippet examples/dialogs/standarddialogs/dialog.cpp 3
- The \c ok variable is set to true if the user clicks \gui OK;
- otherwise it is set to false.
+ The \c ok variable is set to true if the user clicks \gui OK; otherwise it
+ is set to false.
\img inputdialogs.png Input Dialogs
- The \l{dialogs/standarddialogs}{Standard Dialogs} example shows
- how to use QInputDialog as well as other built-in Qt dialogs.
+ The \l{dialogs/standarddialogs}{Standard Dialogs} example shows how to use
+ QInputDialog as well as other built-in Qt dialogs.
\sa QMessageBox, {Standard Dialogs Example}
*/
@@ -452,11 +453,13 @@ void QInputDialogPrivate::_q_currentRowChanged(const QModelIndex &newIndex,
\enum QInputDialog::InputMode
\since 4.5
- This enum describes the different modes of input that can be selected for the dialog.
+ This enum describes the different modes of input that can be selected for
+ the dialog.
\value TextInput Used to input text strings.
\value IntInput Used to input integers.
- \value DoubleInput Used to input floating point numbers with double precision accuracy.
+ \value DoubleInput Used to input floating point numbers with double
+ precision accuracy.
\sa inputMode
*/
@@ -487,7 +490,8 @@ QInputDialog::~QInputDialog()
\brief the mode used for input
- This property help determines which widget is used for entering input into the dialog.
+ This property help determines which widget is used for entering input into
+ the dialog.
*/
void QInputDialog::setInputMode(InputMode mode)
{
@@ -1104,15 +1108,18 @@ void QInputDialog::done(int result)
}
/*!
- Static convenience function to get a string from the user. \a
- title is the text which is displayed in the title bar of the
- dialog. \a label is the text which is shown to the user (it should
- say what should be entered). \a text is the default text which is
- placed in the line edit. The \a mode is the echo mode the line
- edit will use. If \a ok is nonnull \e *\a ok will be set to true
- if the user pressed \gui OK and to false if the user pressed
- \gui Cancel. The dialog's parent is \a parent. The dialog will be
- modal and uses the specified widget \a flags.
+ Static convenience function to get a string from the user.
+
+ \a title is the text which is displayed in the title bar of the dialog.
+ \a label is the text which is shown to the user (it should say what should
+ be entered).
+ \a text is the default text which is placed in the line edit.
+ \a mode is the echo mode the line edit will use.
+
+ If \a ok is nonnull \e *\a ok will be set to true if the user pressed
+ \gui OK and to false if the user pressed \gui Cancel. The dialog's parent
+ is \a parent. The dialog will be modal and uses the specified widget
+ \a flags.
This function returns the text which has been entered in the line
edit. It will not return an empty string.
@@ -1121,11 +1128,11 @@ void QInputDialog::done(int result)
\snippet examples/dialogs/standarddialogs/dialog.cpp 3
- \warning Do not delete \a parent during the execution of the dialog.
- If you want to do this, you should create the dialog
- yourself using one of the QInputDialog constructors.
+ \warning Do not delete \a parent during the execution of the dialog. If you
+ want to do this, you should create the dialog yourself using one of the
+ QInputDialog constructors.
- \sa getInteger(), getDouble(), getItem()
+ \sa getInt(), getDouble(), getItem()
*/
QString QInputDialog::getText(QWidget *parent, const QString &title, const QString &label,
@@ -1149,30 +1156,32 @@ QString QInputDialog::getText(QWidget *parent, const QString &title, const QStri
}
/*!
- Static convenience function to get an integer input from the
- user. \a title is the text which is displayed in the title bar
- of the dialog. \a label is the text which is shown to the user
- (it should say what should be entered). \a value is the default
- integer which the spinbox will be set to. \a min and \a
- max are the minimum and maximum values the user may choose,
- and \a step is the amount by which the values change as the user
- presses the arrow buttons to increment or decrement the value.
-
- If \a ok is nonnull *\a ok will be set to true if the user
- pressed \gui OK and to false if the user pressed \gui Cancel. The
- dialog's parent is \a parent. The dialog will be modal and uses
- the widget \a flags.
-
- On success, this function returns the integer which has been
- entered by the user; on failure, it returns the initial \a value.
+ \since 4.5
+
+ Static convenience function to get an integer input from the user.
+
+ \a title is the text which is displayed in the title bar of the dialog.
+ \a label is the text which is shown to the user (it should say what should
+ be entered).
+ \a value is the default integer which the spinbox will be set to.
+ \a min and \a max are the minimum and maximum values the user may choose.
+ \a step is the amount by which the values change as the user presses the
+ arrow buttons to increment or decrement the value.
+
+ If \a ok is nonnull *\a ok will be set to true if the user pressed \gui OK
+ and to false if the user pressed \gui Cancel. The dialog's parent is
+ \a parent. The dialog will be modal and uses the widget \a flags.
+
+ On success, this function returns the integer which has been entered by the
+ user; on failure, it returns the initial \a value.
Use this static function like this:
\snippet examples/dialogs/standarddialogs/dialog.cpp 0
- \warning Do not delete \a parent during the execution of the dialog.
- If you want to do this, you should create the dialog
- yourself using one of the QInputDialog constructors.
+ \warning Do not delete \a parent during the execution of the dialog. If you
+ want to do this, you should create the dialog yourself using one of the
+ QInputDialog constructors.
\sa getText(), getDouble(), getItem()
*/
@@ -1198,32 +1207,32 @@ int QInputDialog::getInt(QWidget *parent, const QString &title, const QString &l
}
/*!
- Static convenience function to get a floating point number from
- the user. \a title is the text which is displayed in the title
- bar of the dialog. \a label is the text which is shown to the user
- (it should say what should be entered). \a value is the default
- floating point number that the line edit will be set to. \a
- min and \a max are the minimum and maximum values the
- user may choose, and \a decimals is the maximum number of decimal
- places the number may have.
-
- If \a ok is nonnull, *\a ok will be set to true if the user
- pressed \gui OK and to false if the user pressed \gui Cancel. The
- dialog's parent is \a parent. The dialog will be modal and uses
- the widget \a flags.
-
- This function returns the floating point number which has been
- entered by the user.
+ Static convenience function to get a floating point number from the user.
+
+ \a title is the text which is displayed in the title bar of the dialog.
+ \a label is the text which is shown to the user (it should say what should
+ be entered).
+ \a value is the default floating point number that the line edit will be
+ set to.
+ \a min and \a max are the minimum and maximum values the user may choose.
+ \a decimals is the maximum number of decimal places the number may have.
+
+ If \a ok is nonnull, *\a ok will be set to true if the user pressed \gui OK
+ and to false if the user pressed \gui Cancel. The dialog's parent is
+ \a parent. The dialog will be modal and uses the widget \a flags.
+
+ This function returns the floating point number which has been entered by
+ the user.
Use this static function like this:
\snippet examples/dialogs/standarddialogs/dialog.cpp 1
- \warning Do not delete \a parent during the execution of the dialog.
- If you want to do this, you should create the dialog
- yourself using one of the QInputDialog constructors.
+ \warning Do not delete \a parent during the execution of the dialog. If you
+ want to do this, you should create the dialog yourself using one of the
+ QInputDialog constructors.
- \sa getText(), getInteger(), getItem()
+ \sa getText(), getInt(), getItem()
*/
double QInputDialog::getDouble(QWidget *parent, const QString &title, const QString &label,
@@ -1248,32 +1257,34 @@ double QInputDialog::getDouble(QWidget *parent, const QString &title, const QStr
}
/*!
- Static convenience function to let the user select an item from a
- string list. \a title is the text which is displayed in the title
- bar of the dialog. \a label is the text which is shown to the user (it
- should say what should be entered). \a items is the
- string list which is inserted into the combobox, and \a current is the number
- of the item which should be the current item. If \a editable is true
- the user can enter their own text; if \a editable is false the user
- may only select one of the existing items.
-
- If \a ok is nonnull \e *\a ok will be set to true if the user
- pressed \gui OK and to false if the user pressed \gui Cancel. The
- dialog's parent is \a parent. The dialog will be modal and uses
- the widget \a flags.
-
- This function returns the text of the current item, or if \a
- editable is true, the current text of the combobox.
+ Static convenience function to let the user select an item from a string
+ list.
+
+ \a title is the text which is displayed in the title bar of the dialog.
+ \a label is the text which is shown to the user (it should say what should
+ be entered).
+ \a items is the string list which is inserted into the combobox.
+ \a current is the number of the item which should be the current item.
+
+ If \a editable is true the user can enter their own text; otherwise the
+ user may only select one of the existing items.
+
+ If \a ok is nonnull \e *\a ok will be set to true if the user pressed
+ \gui OK and to false if the user pressed \gui Cancel. The dialog's parent
+ is \a parent. The dialog will be modal and uses the widget \a flags.
+
+ This function returns the text of the current item, or if \a editable is
+ true, the current text of the combobox.
Use this static function like this:
\snippet examples/dialogs/standarddialogs/dialog.cpp 2
- \warning Do not delete \a parent during the execution of the dialog.
- If you want to do this, you should create the dialog
- yourself using one of the QInputDialog constructors.
+ \warning Do not delete \a parent during the execution of the dialog. If you
+ want to do this, you should create the dialog yourself using one of the
+ QInputDialog constructors.
- \sa getText(), getInteger(), getDouble()
+ \sa getText(), getInt(), getDouble()
*/
QString QInputDialog::getItem(QWidget *parent, const QString &title, const QString &label,
diff --git a/src/gui/dialogs/qmessagebox.cpp b/src/gui/dialogs/qmessagebox.cpp
index f343405..5e59501 100644
--- a/src/gui/dialogs/qmessagebox.cpp
+++ b/src/gui/dialogs/qmessagebox.cpp
@@ -280,6 +280,9 @@ void QMessageBoxPrivate::updateSize()
int hardLimit = screenSize.width() - (q->frameGeometry().width() - q->geometry().width());
#else
int hardLimit = qMin(screenSize.width() - 480, 1000); // can never get bigger than this
+ // on small screens allows the messagebox be the same size as the screen
+ if (screenSize.width() <= 1024)
+ hardLimit = screenSize.width();
#endif
#ifdef Q_WS_MAC
int softLimit = qMin(screenSize.width()/2, 420);
@@ -532,11 +535,11 @@ void QMessageBoxPrivate::_q_buttonClicked(QAbstractButton *button)
\section2 Severity Levels and the Icon and Pixmap Properties
- QMessageBox supports four predefined message severity levels, or
- message types, which really only differ in the predefined icon
- they each show. Specify one of the four predefined message types
- by setting the \l{QMessageBox::icon} {icon} property to one of the
- \l{QMessageBox::Icon} {predefined Icons}. The following rules are
+ QMessageBox supports four predefined message severity levels, or message
+ types, which really only differ in the predefined icon they each show.
+ Specify one of the four predefined message types by setting the
+ \l{QMessageBox::icon}{icon} property to one of the
+ \l{QMessageBox::Icon}{predefined icons}. The following rules are
guidelines:
\table
@@ -558,17 +561,17 @@ void QMessageBoxPrivate::_q_buttonClicked(QAbstractButton *button)
\o For reporting critical errors.
\endtable
- The default value is \l{QMessageBox::NoIcon} {No Icon}. The
- message boxes are otherwise the same for all cases. When using a
- standard icon, use the one recommended in the table, or use the
- one recommended by the style guidelines for your platform. If none
- of the standard icons is right for your message box, you can use a
- custom icon by setting the \l{QMessageBox::iconPixmap} {icon
- pixmap} property instead of setting the \l{QMessageBox::icon}
- {icon} property.
+ \l{QMessageBox::Icon}{Predefined icons} are not defined by QMessageBox, but
+ provided by the style. The default value is \l{QMessageBox::NoIcon}
+ {No Icon}. The message boxes are otherwise the same for all cases. When
+ using a standard icon, use the one recommended in the table, or use the
+ one recommended by the style guidelines for your platform. If none of the
+ standard icons is right for your message box, you can use a custom icon by
+ setting the \l{QMessageBox::iconPixmap}{icon pixmap} property instead of
+ setting the \l{QMessageBox::icon}{icon} property.
- In summary, to set an icon, use \e{either} setIcon() for one of
- the standard icons, \e{or} setIconPixmap() for a custom icon.
+ In summary, to set an icon, use \e{either} setIcon() for one of the
+ standard icons, \e{or} setIconPixmap() for a custom icon.
\section1 The Static Functions API
@@ -1680,7 +1683,7 @@ void QMessageBox::aboutQt(QWidget *parent, const QString &title)
{
#ifdef Q_WS_MAC
static QPointer<QMessageBox> oldMsgBox;
-
+
if (oldMsgBox) {
oldMsgBox->show();
oldMsgBox->raise();
@@ -1692,29 +1695,35 @@ void QMessageBox::aboutQt(QWidget *parent, const QString &title)
QString translatedTextAboutQt;
translatedTextAboutQt = QMessageBox::tr(
"<h3>About Qt</h3>"
- "%1<p>Qt is a C++ toolkit for cross-platform "
- "application development.</p>"
- "<p>Qt provides single-source "
- "portability across MS&nbsp;Windows, Mac&nbsp;OS&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.</p>"
- "<p>Qt is a Nokia product. See "
- "<a href=\"http://qtsoftware.com/qt/\">qtsoftware.com/qt/</a> for more information.</p>"
- )
-#if QT_EDITION != QT_EDITION_OPENSOURCE
- .arg(QMessageBox::tr("<p>This program uses Qt version %1.</p>"))
-#else
- .arg(QMessageBox::tr("<p>This program uses Qt Open Source Edition version %1.</p>"
- "<p>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.</p>"
- "<p>Please see <a href=\"http://qtsoftware.com/company/model/\">qtsoftware.com/company/model/</a> "
- "for an overview of Qt licensing.</p>"))
-#endif
-
- .arg(QLatin1String(QT_VERSION_STR));
+ "<p>This program uses Qt version %1.</p>"
+ "<p>Qt is a C++ toolkit for cross-platform application "
+ "development.</p>"
+ "<p>Qt provides single-source portability across MS&nbsp;Windows, "
+ "Mac&nbsp;OS&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.</p>"
+ "<p>Qt is available under three different licensing options designed "
+ "to accommodate the needs of our various users.</p>"
+ "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.</p>"
+ "<p>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.</p>"
+ "<p>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.</p>"
+ "<p>Please see <a href=\"http://www.qtsoftware.com/products/licensing\">www.qtsoftware.com/products/licensing</a> "
+ "for an overview of Qt licensing.</p>"
+ "<p>Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).</p>"
+ "<p>Qt is a Nokia product. See <a href=\"http://www.qtsoftware.com/qt/\">www.qtsoftware.com/qt</a> "
+ "for more information.</p>"
+ ).arg(QLatin1String(QT_VERSION_STR));
QMessageBox *msgBox = new QMessageBox(parent);
msgBox->setAttribute(Qt::WA_DeleteOnClose);
diff --git a/src/gui/dialogs/qprintdialog_unix.cpp b/src/gui/dialogs/qprintdialog_unix.cpp
index 76c22d0..87a4e65 100644
--- a/src/gui/dialogs/qprintdialog_unix.cpp
+++ b/src/gui/dialogs/qprintdialog_unix.cpp
@@ -727,7 +727,9 @@ void QUnixPrintWidgetPrivate::updateWidget()
widget.printers->removeItem(widget.printers->count()-1); // remove separator
filePrintersAdded = false;
}
- if (printer && filePrintersAdded && printer->printerName().isEmpty()) {
+ if (printer && filePrintersAdded && (printer->outputFormat() != QPrinter::NativeFormat
+ || printer->printerName().isEmpty()))
+ {
if (printer->outputFormat() == QPrinter::PdfFormat)
widget.printers->setCurrentIndex(widget.printers->count() - 2);
else if (printer->outputFormat() == QPrinter::PostScriptFormat)
diff --git a/src/gui/dialogs/qsidebar.cpp b/src/gui/dialogs/qsidebar.cpp
index 1bd2b7d..000a06b 100644
--- a/src/gui/dialogs/qsidebar.cpp
+++ b/src/gui/dialogs/qsidebar.cpp
@@ -55,6 +55,18 @@
QT_BEGIN_NAMESPACE
+void QSideBarDelegate::initStyleOption(QStyleOptionViewItem *option,
+ const QModelIndex &index) const
+{
+ QStyledItemDelegate::initStyleOption(option,index);
+ QVariant value = index.data(QUrlModel::EnabledRole);
+ if (value.isValid()) {
+ //If the bookmark/entry is not enabled then we paint it in gray
+ if (!qvariant_cast<bool>(value))
+ option->state &= ~QStyle::State_Enabled;
+ }
+}
+
/*!
QUrlModel lets you have indexes from a QFileSystemModel to a list. When QFileSystemModel
changes them QUrlModel will automatically update.
@@ -88,9 +100,6 @@ Qt::ItemFlags QUrlModel::flags(const QModelIndex &index) const
if (index.data(Qt::DecorationRole).isNull())
flags &= ~Qt::ItemIsEnabled;
- if (invalidUrls.contains(index.data(UrlRole).toUrl()))
- flags &= ~Qt::ItemIsEnabled;
-
return flags;
}
@@ -193,6 +202,11 @@ void QUrlModel::setUrl(const QModelIndex &index, const QUrl &url, const QModelIn
newName = QFileInfo(url.toLocalFile()).fileName();
if (!invalidUrls.contains(url))
invalidUrls.append(url);
+ //The bookmark is invalid then we set to false the EnabledRole
+ setData(index, false, EnabledRole);
+ } else {
+ //The bookmark is valid then we set to true the EnabledRole
+ setData(index, true, EnabledRole);
}
// Make sure that we have at least 32x32 images
@@ -234,7 +248,11 @@ void QUrlModel::addUrls(const QList<QUrl> &list, int row, bool move)
if (!url.isValid() || url.scheme() != QLatin1String("file"))
continue;
for (int j = 0; move && j < rowCount(); ++j) {
- if (index(j, 0).data(UrlRole) == url) {
+#if defined(Q_OS_WIN)
+ if (QDir::cleanPath(index(j, 0).data(UrlRole).toUrl().toLocalFile()).toLower() == QDir::cleanPath(url.toLocalFile()).toLower()) {
+#else
+ if (QDir::cleanPath(index(j, 0).data(UrlRole).toUrl().toLocalFile()) == QDir::cleanPath(url.toLocalFile())) {
+#endif
removeRow(j);
if (j <= row)
row--;
@@ -356,6 +374,7 @@ void QSidebar::init(QFileSystemModel *model, const QList<QUrl> &newUrls)
urlModel = new QUrlModel(this);
urlModel->setFileSystemModel(model);
setModel(urlModel);
+ setItemDelegate(new QSideBarDelegate(this));
connect(selectionModel(), SIGNAL(currentChanged(const QModelIndex &, const QModelIndex &)),
this, SLOT(clicked(const QModelIndex &)));
diff --git a/src/gui/dialogs/qsidebar_p.h b/src/gui/dialogs/qsidebar_p.h
index ecbbb37..56fd6d4 100644
--- a/src/gui/dialogs/qsidebar_p.h
+++ b/src/gui/dialogs/qsidebar_p.h
@@ -55,6 +55,7 @@
#include <qlistwidget.h>
#include <qstandarditemmodel.h>
+#include <qstyleditemdelegate.h>
#include <qurl.h>
#ifndef QT_NO_FILEDIALOG
@@ -62,13 +63,23 @@
QT_BEGIN_NAMESPACE
class QFileSystemModel;
+
+class QSideBarDelegate : public QStyledItemDelegate
+{
+ public:
+ QSideBarDelegate(QWidget *parent = 0) : QStyledItemDelegate(parent) {}
+ void initStyleOption(QStyleOptionViewItem *option,
+ const QModelIndex &index) const;
+};
+
class Q_AUTOTEST_EXPORT QUrlModel : public QStandardItemModel
{
Q_OBJECT
public:
enum Roles {
- UrlRole = Qt::UserRole + 1
+ UrlRole = Qt::UserRole + 1,
+ EnabledRole = Qt::UserRole + 2
};
QUrlModel(QObject *parent = 0);
diff --git a/src/gui/dialogs/qwizard.cpp b/src/gui/dialogs/qwizard.cpp
index 32395c4..298f23f 100644
--- a/src/gui/dialogs/qwizard.cpp
+++ b/src/gui/dialogs/qwizard.cpp
@@ -1465,7 +1465,7 @@ void QWizardPrivate::handleAeroStyleChange()
return; // prevent recursion
inHandleAeroStyleChange = true;
- vistaHelper->backButton()->disconnect();
+ vistaHelper->disconnectBackButton();
q->removeEventFilter(vistaHelper);
if (isVistaThemeEnabled()) {
@@ -1491,7 +1491,7 @@ void QWizardPrivate::handleAeroStyleChange()
q->setMouseTracking(true); // ### original value possibly different
q->unsetCursor(); // ### ditto
antiFlickerWidget->move(0, 0);
- vistaHelper->backButton()->hide();
+ vistaHelper->hideBackButton();
vistaHelper->setTitleBarIconAndCaptionVisible(true);
}
diff --git a/src/gui/dialogs/qwizard_win.cpp b/src/gui/dialogs/qwizard_win.cpp
index 64696de..8aad4af 100644
--- a/src/gui/dialogs/qwizard_win.cpp
+++ b/src/gui/dialogs/qwizard_win.cpp
@@ -239,9 +239,11 @@ void QVistaBackButton::paintEvent(QPaintEvent *)
QVistaHelper::QVistaHelper(QWizard *wizard)
: pressed(false)
, wizard(wizard)
+ , backButton_(0)
{
is_vista = resolveSymbols();
- backButton_ = new QVistaBackButton(wizard);
+ if (is_vista)
+ backButton_ = new QVistaBackButton(wizard);
}
QVistaHelper::~QVistaHelper()
@@ -310,6 +312,7 @@ void QVistaHelper::drawTitleBar(QPainter *painter)
QRect(0, 0, wizard->width(), titleBarSize() + topOffset()),
painter->paintEngine()->getDC());
+ Q_ASSERT(backButton_);
const int btnTop = backButton_->mapToParent(QPoint()).y();
const int btnHeight = backButton_->size().height();
const int verticalCenter = (btnTop + btnHeight / 2);
diff --git a/src/gui/dialogs/qwizard_win_p.h b/src/gui/dialogs/qwizard_win_p.h
index cbb3b17..148be26 100644
--- a/src/gui/dialogs/qwizard_win_p.h
+++ b/src/gui/dialogs/qwizard_win_p.h
@@ -94,6 +94,8 @@ public:
void resizeEvent(QResizeEvent *event);
void paintEvent(QPaintEvent *event);
QVistaBackButton *backButton() const { return backButton_; }
+ void disconnectBackButton() { if (backButton_) backButton_->disconnect(); }
+ void hideBackButton() { if (backButton_) backButton_->hide(); }
void setWindowPosHack();
QColor basicWindowFrameColor();
enum VistaState { VistaAero, VistaBasic, Classic, Dirty };
diff --git a/src/gui/embedded/qscreen_qws.cpp b/src/gui/embedded/qscreen_qws.cpp
index 6741f2c..39a74d5 100644
--- a/src/gui/embedded/qscreen_qws.cpp
+++ b/src/gui/embedded/qscreen_qws.cpp
@@ -1394,7 +1394,7 @@ QImage::Format QScreenPrivate::preferredImageFormat() const
altered. Note that the default implementations of these functions
do nothing.
- Reimplement the the mapFromDevice() and mapToDevice() functions to
+ Reimplement the mapFromDevice() and mapToDevice() functions to
map objects from the framebuffer coordinate system to the
coordinate space used by the application, and vice versa. Be aware
that the default implementations simply return the given objects
diff --git a/src/gui/embedded/qscreentransformed_qws.cpp b/src/gui/embedded/qscreentransformed_qws.cpp
index f988789..e22ea1f 100644
--- a/src/gui/embedded/qscreentransformed_qws.cpp
+++ b/src/gui/embedded/qscreentransformed_qws.cpp
@@ -400,7 +400,19 @@ void QTransformedScreen::blit(const QImage &image, const QPoint &topLeft,
#endif
#if defined(QT_QWS_DEPTH_16) || defined(QT_QWS_DEPTH_15) || defined(QT_QWS_DEPTH_12)
case 16:
+#if defined QT_QWS_ROTATE_BGR
+ if (pixelType() == BGRPixel && image.depth() == 16) {
+ SET_BLIT_FUNC(qbgr565, quint16, trans, func);
+ break;
+ } //fall-through here!!!
+#endif
case 15:
+#if defined QT_QWS_ROTATE_BGR
+ if (pixelType() == BGRPixel && image.format() == QImage::Format_RGB555) {
+ SET_BLIT_FUNC(qbgr555, qrgb555, trans, func);
+ break;
+ } //fall-through here!!!
+#endif
case 12:
if (image.depth() == 16)
SET_BLIT_FUNC(quint16, quint16, trans, func);
@@ -410,7 +422,9 @@ void QTransformedScreen::blit(const QImage &image, const QPoint &topLeft,
#endif
#ifdef QT_QWS_DEPTH_8
case 8:
- if (image.depth() == 16)
+ if (image.format() == QImage::Format_RGB444)
+ SET_BLIT_FUNC(quint8, qrgb444, trans, func);
+ else if (image.depth() == 16)
SET_BLIT_FUNC(quint8, quint16, trans, func);
else
SET_BLIT_FUNC(quint8, quint32, trans, func);
diff --git a/src/gui/embedded/qscreenvfb_qws.cpp b/src/gui/embedded/qscreenvfb_qws.cpp
index abbe73b..accfe1f 100644
--- a/src/gui/embedded/qscreenvfb_qws.cpp
+++ b/src/gui/embedded/qscreenvfb_qws.cpp
@@ -310,6 +310,9 @@ bool QVFbScreen::connect(const QString &displaySpec)
connected = this;
+ if (qgetenv("QT_QVFB_BGR").toInt())
+ pixeltype = BGRPixel;
+
return true;
}
diff --git a/src/gui/embedded/qsoundqss_qws.cpp b/src/gui/embedded/qsoundqss_qws.cpp
index c72ea91..283bbd3 100644
--- a/src/gui/embedded/qsoundqss_qws.cpp
+++ b/src/gui/embedded/qsoundqss_qws.cpp
@@ -52,6 +52,7 @@
#include <qalgorithms.h>
#include <qtimer.h>
#include <qpointer.h>
+#include <qendian.h>
#include <unistd.h>
#include <stdlib.h>
@@ -335,7 +336,13 @@ public:
virtual int readySamples(int) = 0;
int getSample(int off, int bps) {
- return (bps == 1) ? (data[out+off] - 128) * 128 : ((short*)data)[(out/2)+off];
+
+ //
+ // 16-bit audio data is converted to native endian so that it can be scaled
+ // Yes, this is ugly on a BigEndian machine
+ // Perhaps it shouldn't be scaled at all
+ //
+ return (bps == 1) ? (data[out+off] - 128) * 128 : qToLittleEndian(((short*)data)[(out/2)+off]);
}
int add(int* mixl, int* mixr, int count)
@@ -547,7 +554,7 @@ public:
wavedata_remaining = 0;
mFinishedRead = true;
} else if ( qstrncmp(chunk.id,"data",4) == 0 ) {
- wavedata_remaining = chunk.size;
+ wavedata_remaining = qToLittleEndian( chunk.size );
//out = max = sound_buffer_size;
@@ -572,10 +579,23 @@ public:
//qDebug("couldn't ready chunkdata");
mFinishedRead = true;
}
+
#define WAVE_FORMAT_PCM 1
- else if ( chunkdata.formatTag != WAVE_FORMAT_PCM ) {
- //qDebug("WAV file: UNSUPPORTED FORMAT %d",chunkdata.formatTag);
- mFinishedRead = true;
+ else
+ {
+ /*
+ ** Endian Fix the chuck data
+ */
+ chunkdata.formatTag = qToLittleEndian( chunkdata.formatTag );
+ chunkdata.channels = qToLittleEndian( chunkdata.channels );
+ chunkdata.samplesPerSec = qToLittleEndian( chunkdata.samplesPerSec );
+ chunkdata.avgBytesPerSec = qToLittleEndian( chunkdata.avgBytesPerSec );
+ chunkdata.blockAlign = qToLittleEndian( chunkdata.blockAlign );
+ chunkdata.wBitsPerSample = qToLittleEndian( chunkdata.wBitsPerSample );
+ if ( chunkdata.formatTag != WAVE_FORMAT_PCM ) {
+ qWarning("WAV file: UNSUPPORTED FORMAT %d",chunkdata.formatTag);
+ mFinishedRead = true;
+ }
}
} else {
// ignored chunk
@@ -1166,9 +1186,15 @@ bool QWSSoundServerPrivate::openDevice()
if (ioctl(fd, SNDCTL_DSP_SETFRAGMENT, &v))
qWarning("Could not set fragments to %08x",v);
#ifdef QT_QWS_SOUND_16BIT
- v=AFMT_S16_LE; if (ioctl(fd, SNDCTL_DSP_SETFMT, &v))
+ //
+ // Use native endian
+ // Since we have manipulated the data volume the data
+ // is now in native format, even though its stored
+ // as little endian in the WAV file
+ //
+ v=AFMT_S16_NE; if (ioctl(fd, SNDCTL_DSP_SETFMT, &v))
qWarning("Could not set format %d",v);
- if (AFMT_S16_LE != v)
+ if (AFMT_S16_NE != v)
qDebug("Want format %d got %d", AFMT_S16_LE, v);
#else
v=AFMT_U8; if (ioctl(fd, SNDCTL_DSP_SETFMT, &v))
diff --git a/src/gui/embedded/qwindowsystem_qws.cpp b/src/gui/embedded/qwindowsystem_qws.cpp
index dffebf2..fdcd193 100644
--- a/src/gui/embedded/qwindowsystem_qws.cpp
+++ b/src/gui/embedded/qwindowsystem_qws.cpp
@@ -4044,7 +4044,7 @@ void QWSServer::setDesktopBackground(const QImage &img)
*/
void QWSServer::setDesktopBackground(const QColor &c)
{
- setDesktopBackground(QBrush(c));
+ setBackground(QBrush(c));
}
#endif //QT3_SUPPORT
diff --git a/src/gui/graphicsview/qgraphicsitem.cpp b/src/gui/graphicsview/qgraphicsitem.cpp
index 83a7e67..4908296 100644
--- a/src/gui/graphicsview/qgraphicsitem.cpp
+++ b/src/gui/graphicsview/qgraphicsitem.cpp
@@ -528,25 +528,22 @@ QT_BEGIN_NAMESPACE
// QRectF::intersects() returns false always if either the source or target
// rectangle's width or height are 0. This works around that problem.
-static QRectF _q_adjustedRect(const QRectF &rect)
-{
- static const qreal p = (qreal)0.00001;
- QRectF r = rect;
- if (!r.width())
- r.adjust(-p, 0, p, 0);
- if (!r.height())
- r.adjust(0, -p, 0, p);
- return r;
+static inline void _q_adjustRect(QRectF *rect)
+{
+ Q_ASSERT(rect);
+ if (!rect->width())
+ rect->adjust(-0.00001, 0, 0.00001, 0);
+ if (!rect->height())
+ rect->adjust(0, -0.00001, 0, 0.00001);
}
-static QRect _q_adjustedRect(const QRect &rect)
+static inline void _q_adjustRect(QRect *rect)
{
- QRect r = rect;
- if (!r.width())
- r.adjust(0, 0, 1, 0);
- if (!r.height())
- r.adjust(0, 0, 0, 1);
- return r;
+ Q_ASSERT(rect);
+ if (!rect->width())
+ rect->adjust(0, 0, 1, 0);
+ if (!rect->height())
+ rect->adjust(0, 0, 0, 1);
}
/*
@@ -631,6 +628,7 @@ void QGraphicsItemPrivate::updateAncestorFlag(QGraphicsItem::GraphicsItemFlag ch
case QGraphicsItem::ItemClipsChildrenToShape:
flag = AncestorClipsChildren;
enabled = flags & QGraphicsItem::ItemClipsChildrenToShape;
+ invalidateCachedClipPathRecursively(/*childrenOnly=*/true);
break;
case QGraphicsItem::ItemIgnoresTransformations:
flag = AncestorIgnoresTransformations;
@@ -1023,9 +1021,8 @@ void QGraphicsItem::setParentItem(QGraphicsItem *parent)
}
if (parent == d_ptr->parent)
return;
- QVariant variant;
- qVariantSetValue<QGraphicsItem *>(variant, parent);
- parent = qVariantValue<QGraphicsItem *>(itemChange(ItemParentChange, variant));
+ const QVariant newParentVariant(itemChange(ItemParentChange, qVariantFromValue<QGraphicsItem *>(parent)));
+ parent = qVariantValue<QGraphicsItem *>(newParentVariant);
if (parent == d_ptr->parent)
return;
@@ -1040,11 +1037,11 @@ void QGraphicsItem::setParentItem(QGraphicsItem *parent)
// We anticipate geometry changes
prepareGeometryChange();
+ const QVariant thisPointerVariant(qVariantFromValue<QGraphicsItem *>(this));
if (d_ptr->parent) {
// Remove from current parent
qt_graphicsitem_removeChild(this, &d_ptr->parent->d_func()->children);
- qVariantSetValue<QGraphicsItem *>(variant, this);
- d_ptr->parent->itemChange(ItemChildRemovedChange, variant);
+ d_ptr->parent->itemChange(ItemChildRemovedChange, thisPointerVariant);
}
if ((d_ptr->parent = parent)) {
@@ -1059,10 +1056,9 @@ void QGraphicsItem::setParentItem(QGraphicsItem *parent)
}
d_ptr->parent->d_func()->children << this;
- qVariantSetValue<QGraphicsItem *>(variant, this);
- d_ptr->parent->itemChange(ItemChildAddedChange, variant);
+ d_ptr->parent->itemChange(ItemChildAddedChange, thisPointerVariant);
if (!implicitUpdate)
- d_ptr->updateHelper();
+ d_ptr->updateHelper(QRectF(), false, true);
// Inherit ancestor flags from the new parent.
d_ptr->updateAncestorFlag(QGraphicsItem::GraphicsItemFlag(-1));
@@ -1091,7 +1087,7 @@ void QGraphicsItem::setParentItem(QGraphicsItem *parent)
if (!d_ptr->enabled && !d_ptr->explicitlyDisabled)
d_ptr->setEnabledHelper(true, /* explicit = */ false);
- d_ptr->updateHelper();
+ d_ptr->updateHelper(QRectF(), false, true);
}
if (d_ptr->scene) {
@@ -1101,10 +1097,7 @@ void QGraphicsItem::setParentItem(QGraphicsItem *parent)
}
// Resolve opacity.
- if (QGraphicsItem *p = d_ptr->parent)
- d_ptr->resolveEffectiveOpacity(p->effectiveOpacity());
- else
- d_ptr->resolveEffectiveOpacity(1.0);
+ d_ptr->updateEffectiveOpacity();
// Resolve depth.
d_ptr->resolveDepth(parent ? parent->d_ptr->depth : -1);
@@ -1113,7 +1106,7 @@ void QGraphicsItem::setParentItem(QGraphicsItem *parent)
d_ptr->invalidateSceneTransformCache();
// Deliver post-change notification
- itemChange(QGraphicsItem::ItemParentHasChanged, qVariantFromValue<QGraphicsItem *>(parent));
+ itemChange(QGraphicsItem::ItemParentHasChanged, newParentVariant);
}
/*!
@@ -1232,10 +1225,10 @@ void QGraphicsItem::setFlags(GraphicsItemFlags flags)
return;
// Flags that alter the geometry of the item (or its children).
- int geomChangeFlagsMask = (ItemClipsChildrenToShape | ItemClipsToShape | ItemIgnoresTransformations);
- bool fullUpdate = (flags & geomChangeFlagsMask) != (d_ptr->flags & geomChangeFlagsMask);
+ const quint32 geomChangeFlagsMask = (ItemClipsChildrenToShape | ItemClipsToShape | ItemIgnoresTransformations);
+ bool fullUpdate = (quint32(flags) & geomChangeFlagsMask) != (d_ptr->flags & geomChangeFlagsMask);
if (fullUpdate)
- d_ptr->fullUpdateHelper();
+ d_ptr->fullUpdateHelper(false, true);
// Keep the old flags to compare the diff.
GraphicsItemFlags oldFlags = this->flags();
@@ -1245,12 +1238,8 @@ void QGraphicsItem::setFlags(GraphicsItemFlags flags)
// Reresolve effective opacity if the opacity flags change.
static const quint32 opacityFlagsMask = ItemIgnoresParentOpacity | ItemDoesntPropagateOpacityToChildren;
- if ((flags & opacityFlagsMask) != (oldFlags & opacityFlagsMask)) {
- if (QGraphicsItem *p = d_ptr->parent)
- d_ptr->resolveEffectiveOpacity(p->effectiveOpacity());
- else
- d_ptr->resolveEffectiveOpacity(1.0);
- }
+ if ((flags & opacityFlagsMask) != (oldFlags & opacityFlagsMask))
+ d_ptr->updateEffectiveOpacity();
if (!(d_ptr->flags & ItemIsFocusable) && hasFocus()) {
// Clear focus on the item if it has focus when the focusable flag
@@ -1270,6 +1259,9 @@ void QGraphicsItem::setFlags(GraphicsItemFlags flags)
d_ptr->updateAncestorFlag(ItemClipsChildrenToShape);
}
+ if ((flags & ItemClipsToShape) != (oldFlags & ItemClipsToShape))
+ d_ptr->invalidateCachedClipPath();
+
if ((flags & ItemIgnoresTransformations) != (oldFlags & ItemIgnoresTransformations)) {
// Item children clipping changes. Propagate the ancestor flag to
// all children.
@@ -1277,7 +1269,7 @@ void QGraphicsItem::setFlags(GraphicsItemFlags flags)
}
// ### Why updateHelper?
- d_ptr->updateHelper();
+ d_ptr->updateHelper(QRectF(), false, true);
// Notify change.
itemChange(ItemFlagsHaveChanged, quint32(flags));
@@ -1375,9 +1367,9 @@ QString QGraphicsItem::toolTip() const
*/
void QGraphicsItem::setToolTip(const QString &toolTip)
{
- QString newCursor = itemChange(ItemToolTipChange, toolTip).toString();
- d_ptr->setExtra(QGraphicsItemPrivate::ExtraToolTip, toolTip);
- itemChange(ItemToolTipHasChanged, toolTip);
+ const QVariant toolTipVariant(itemChange(ItemToolTipChange, toolTip));
+ d_ptr->setExtra(QGraphicsItemPrivate::ExtraToolTip, toolTipVariant.toString());
+ itemChange(ItemToolTipHasChanged, toolTipVariant);
}
#endif // QT_NO_TOOLTIP
@@ -1419,9 +1411,8 @@ QCursor QGraphicsItem::cursor() const
*/
void QGraphicsItem::setCursor(const QCursor &cursor)
{
- QCursor newCursor = qVariantValue<QCursor>(itemChange(ItemCursorChange,
- qVariantFromValue<QCursor>(cursor)));
- d_ptr->setExtra(QGraphicsItemPrivate::ExtraCursor, newCursor);
+ const QVariant cursorVariant(itemChange(ItemCursorChange, qVariantFromValue<QCursor>(cursor)));
+ d_ptr->setExtra(QGraphicsItemPrivate::ExtraCursor, qVariantValue<QCursor>(cursorVariant));
d_ptr->hasCursor = 1;
if (d_ptr->scene) {
foreach (QGraphicsView *view, d_ptr->scene->views()) {
@@ -1438,7 +1429,7 @@ void QGraphicsItem::setCursor(const QCursor &cursor)
}
}
}
- itemChange(ItemCursorHasChanged, qVariantFromValue<QCursor>(newCursor));
+ itemChange(ItemCursorHasChanged, cursorVariant);
}
/*!
@@ -1532,7 +1523,9 @@ void QGraphicsItemPrivate::setVisibleHelper(bool newVisible, bool explicitly, bo
return;
// Modify the property.
- newVisible = q_ptr->itemChange(QGraphicsItem::ItemVisibleChange, quint32(newVisible)).toBool();
+ const QVariant newVisibleVariant(q_ptr->itemChange(QGraphicsItem::ItemVisibleChange,
+ quint32(newVisible)));
+ newVisible = newVisibleVariant.toBool();
if (visible == quint32(newVisible))
return;
visible = newVisible;
@@ -1579,9 +1572,10 @@ void QGraphicsItemPrivate::setVisibleHelper(bool newVisible, bool explicitly, bo
}
// Update children with explicitly = false.
+ const bool updateChildren = update && !(flags & QGraphicsItem::ItemClipsChildrenToShape);
foreach (QGraphicsItem *child, children) {
if (!newVisible || !child->d_ptr->explicitlyHidden)
- child->d_ptr->setVisibleHelper(newVisible, false);
+ child->d_ptr->setVisibleHelper(newVisible, false, updateChildren);
}
// Enable subfocus
@@ -1593,7 +1587,7 @@ void QGraphicsItemPrivate::setVisibleHelper(bool newVisible, bool explicitly, bo
}
// Deliver post-change notification.
- q_ptr->itemChange(QGraphicsItem::ItemVisibleHasChanged, quint32(visible));
+ q_ptr->itemChange(QGraphicsItem::ItemVisibleHasChanged, newVisibleVariant);
}
/*!
@@ -1699,7 +1693,9 @@ void QGraphicsItemPrivate::setEnabledHelper(bool newEnabled, bool explicitly, bo
}
// Modify the property.
- enabled = q_ptr->itemChange(QGraphicsItem::ItemEnabledChange, quint32(newEnabled)).toBool();
+ const QVariant newEnabledVariant(q_ptr->itemChange(QGraphicsItem::ItemEnabledChange,
+ quint32(newEnabled)));
+ enabled = newEnabledVariant.toBool();
// Schedule redraw.
if (update)
@@ -1711,7 +1707,7 @@ void QGraphicsItemPrivate::setEnabledHelper(bool newEnabled, bool explicitly, bo
}
// Deliver post-change notification.
- q_ptr->itemChange(QGraphicsItem::ItemEnabledHasChanged, quint32(enabled));
+ q_ptr->itemChange(QGraphicsItem::ItemEnabledHasChanged, newEnabledVariant);
}
/*!
@@ -1798,7 +1794,8 @@ void QGraphicsItem::setSelected(bool selected)
selected = false;
if (d_ptr->selected == selected)
return;
- bool newSelected = itemChange(ItemSelectedChange, quint32(selected)).toBool();
+ const QVariant newSelectedVariant(itemChange(ItemSelectedChange, quint32(selected)));
+ bool newSelected = newSelectedVariant.toBool();
if (d_ptr->selected == newSelected)
return;
d_ptr->selected = newSelected;
@@ -1818,7 +1815,7 @@ void QGraphicsItem::setSelected(bool selected)
}
// Deliver post-change notification.
- itemChange(QGraphicsItem::ItemSelectedHasChanged, quint32(d_ptr->selected));
+ itemChange(QGraphicsItem::ItemSelectedHasChanged, newSelectedVariant);
}
/*!
@@ -1862,6 +1859,9 @@ qreal QGraphicsItem::opacity() const
*/
qreal QGraphicsItem::effectiveOpacity() const
{
+ if (!d_ptr->hasEffectiveOpacity)
+ return qreal(1.0);
+
QVariant effectiveOpacity = d_ptr->extra(QGraphicsItemPrivate::ExtraEffectiveOpacity);
return effectiveOpacity.isNull() ? qreal(1.0) : qreal(effectiveOpacity.toDouble());
}
@@ -1891,7 +1891,8 @@ qreal QGraphicsItem::effectiveOpacity() const
void QGraphicsItem::setOpacity(qreal opacity)
{
// Notify change.
- qreal newOpacity = itemChange(ItemOpacityChange, double(opacity)).toDouble();
+ const QVariant newOpacityVariant(itemChange(ItemOpacityChange, double(opacity)));
+ qreal newOpacity = newOpacityVariant.toDouble();
// Normalize.
newOpacity = qBound<qreal>(0.0, newOpacity, 1.0);
@@ -1920,7 +1921,7 @@ void QGraphicsItem::setOpacity(qreal opacity)
itemChange(ItemOpacityHasChanged, newOpacity);
// Update.
- d_ptr->fullUpdateHelper();
+ d_ptr->fullUpdateHelper(/*childrenOnly=*/false, /*maybeDirtyClipPath=*/false, /*ignoreOpacity=*/true);
}
/*!
@@ -2349,19 +2350,22 @@ QPointF QGraphicsItem::scenePos() const
the item is also updated; otherwise it is not updated before and after the
change.
*/
-void QGraphicsItemPrivate::setPosHelper(const QPointF &pos, bool update)
+void QGraphicsItemPrivate::setPosHelper(const QPointF &pos)
{
Q_Q(QGraphicsItem);
if (this->pos == pos)
return;
// Notify the item that the position is changing.
- QPointF newPos = q->itemChange(QGraphicsItem::ItemPositionChange, pos).toPointF();
+ const QVariant newPosVariant(q->itemChange(QGraphicsItem::ItemPositionChange, pos));
+ QPointF newPos = newPosVariant.toPointF();
if (newPos == this->pos)
return;
// Update and repositition.
- if (scene && update) {
+ inSetPosHelper = 1;
+ updateCachedClipPathFromSetPosHelper(newPos);
+ if (scene) {
fullUpdateHelper(true);
q->prepareGeometryChange();
}
@@ -2369,7 +2373,8 @@ void QGraphicsItemPrivate::setPosHelper(const QPointF &pos, bool update)
invalidateSceneTransformCache();
// Send post-notification.
- q->itemChange(QGraphicsItem::ItemPositionHasChanged, newPos);
+ q->itemChange(QGraphicsItem::ItemPositionHasChanged, newPosVariant);
+ inSetPosHelper = 0;
}
/*!
@@ -2384,7 +2389,7 @@ void QGraphicsItemPrivate::setPosHelper(const QPointF &pos, bool update)
*/
void QGraphicsItem::setPos(const QPointF &pos)
{
- d_ptr->setPosHelper(pos, /* update = */ true);
+ d_ptr->setPosHelper(pos);
}
/*!
@@ -2511,10 +2516,10 @@ QTransform QGraphicsItem::sceneTransform() const
QTransform m;
if (d_ptr->hasTransform) {
m = transform();
- m *= QTransform::fromTranslate(d_ptr->pos.x(), d_ptr->pos.y());
- } else {
- // ### ? QTransform::fromTranslate(d_ptr->pos.x(), d_ptr->pos.y())
- m.translate(d_ptr->pos.x(), d_ptr->pos.y());
+ if (!d_ptr->pos.isNull())
+ m *= QTransform::fromTranslate(d_ptr->pos.x(), d_ptr->pos.y());
+ } else if (!d_ptr->pos.isNull()) {
+ m = QTransform::fromTranslate(d_ptr->pos.x(), d_ptr->pos.y());
}
// Combine with parent and add to cache.
@@ -2567,6 +2572,10 @@ QTransform QGraphicsItem::sceneTransform() const
*/
QTransform QGraphicsItem::deviceTransform(const QTransform &viewportTransform) const
{
+ // Ensure we return the standard transform if we're not untransformable.
+ if (!d_ptr->itemIsUntransformable())
+ return sceneTransform() * viewportTransform;
+
// Find the topmost item that ignores view transformations.
const QGraphicsItem *untransformedAncestor = this;
QList<const QGraphicsItem *> parents;
@@ -2639,6 +2648,8 @@ QTransform QGraphicsItem::itemTransform(const QGraphicsItem *other, bool *ok) co
if (ok)
*ok = true;
const QPointF &itemPos = d_ptr->pos;
+ if (itemPos.isNull())
+ return d_ptr->hasTransform ? transform() : QTransform();
if (d_ptr->hasTransform)
return transform() * QTransform::fromTranslate(itemPos.x(), itemPos.y());
return QTransform::fromTranslate(itemPos.x(), itemPos.y());
@@ -2649,7 +2660,8 @@ QTransform QGraphicsItem::itemTransform(const QGraphicsItem *other, bool *ok) co
const QPointF &otherPos = other->d_ptr->pos;
if (other->d_ptr->hasTransform) {
QTransform otherToParent = other->transform();
- otherToParent *= QTransform::fromTranslate(otherPos.x(), otherPos.y());
+ if (!otherPos.isNull())
+ otherToParent *= QTransform::fromTranslate(otherPos.x(), otherPos.y());
return otherToParent.inverted(ok);
} else {
if (ok)
@@ -2674,11 +2686,11 @@ QTransform QGraphicsItem::itemTransform(const QGraphicsItem *other, bool *ok) co
QTransform itemToParent = QTransform::fromTranslate(itemPos.x(), itemPos.y());
if (hasTr)
- itemToParent = transform() * itemToParent;
+ itemToParent = itemPos.isNull() ? transform() : transform() * itemToParent;
QTransform otherToParent = QTransform::fromTranslate(otherPos.x(), otherPos.y());
if (otherHasTr)
- otherToParent = other->transform() * otherToParent;
+ otherToParent = otherPos.isNull() ? other->transform() : other->transform() * otherToParent;
return itemToParent * otherToParent.inverted(ok);
}
@@ -2718,7 +2730,8 @@ QTransform QGraphicsItem::itemTransform(const QGraphicsItem *other, bool *ok) co
const QGraphicsItemPrivate *pd = p->d_ptr;
if (pd->hasTransform)
x *= p->transform();
- x *= QTransform::fromTranslate(pd->pos.x(), pd->pos.y());
+ if (!pd->pos.isNull())
+ x *= QTransform::fromTranslate(pd->pos.x(), pd->pos.y());
} while ((p = p->d_ptr->parent) && p != root);
if (parentOfOther)
return x.inverted(ok);
@@ -2750,21 +2763,23 @@ void QGraphicsItem::setMatrix(const QMatrix &matrix, bool combine)
return;
// Notify the item that the matrix is changing.
- QVariant variant;
- qVariantSetValue<QMatrix>(variant, newTransform.toAffine());
- newTransform = QTransform(qVariantValue<QMatrix>(itemChange(ItemMatrixChange, variant)));
+ QVariant newTransformVariant(itemChange(ItemMatrixChange,
+ qVariantFromValue<QMatrix>(newTransform.toAffine())));
+ newTransform = QTransform(qVariantValue<QMatrix>(newTransformVariant));
if (oldTransform == newTransform)
return;
// Update and set the new transformation.
- d_ptr->fullUpdateHelper(true);
+ d_ptr->fullUpdateHelper(true, true);
prepareGeometryChange();
d_ptr->hasTransform = !newTransform.isIdentity();
d_ptr->setExtra(QGraphicsItemPrivate::ExtraTransform, newTransform);
d_ptr->invalidateSceneTransformCache();
// Send post-notification.
- itemChange(ItemTransformHasChanged, newTransform);
+ // NB! We have to change the value from QMatrix to QTransform.
+ qVariantSetValue<QTransform>(newTransformVariant, newTransform);
+ itemChange(ItemTransformHasChanged, newTransformVariant);
}
/*!
@@ -2796,21 +2811,21 @@ void QGraphicsItem::setTransform(const QTransform &matrix, bool combine)
return;
// Notify the item that the transformation matrix is changing.
- QVariant variant;
- qVariantSetValue<QTransform>(variant, newTransform);
- newTransform = qVariantValue<QTransform>(itemChange(ItemTransformChange, variant));
+ const QVariant newTransformVariant(itemChange(ItemTransformChange,
+ qVariantFromValue<QTransform>(newTransform)));
+ newTransform = qVariantValue<QTransform>(newTransformVariant);
if (oldTransform == newTransform)
return;
// Update and set the new transformation.
- d_ptr->fullUpdateHelper(true);
+ d_ptr->fullUpdateHelper(true, true);
prepareGeometryChange();
d_ptr->hasTransform = !newTransform.isIdentity();
d_ptr->setExtra(QGraphicsItemPrivate::ExtraTransform, newTransform);
d_ptr->invalidateSceneTransformCache();
// Send post-notification.
- itemChange(ItemTransformHasChanged, newTransform);
+ itemChange(ItemTransformHasChanged, newTransformVariant);
}
/*!
@@ -2958,7 +2973,8 @@ qreal QGraphicsItem::zValue() const
*/
void QGraphicsItem::setZValue(qreal z)
{
- qreal newZ = qreal(itemChange(ItemZValueChange, double(z)).toDouble());
+ const QVariant newZVariant(itemChange(ItemZValueChange, double(z)));
+ qreal newZ = qreal(newZVariant.toDouble());
if (newZ == d_ptr->z)
return;
d_ptr->z = z;
@@ -2970,7 +2986,7 @@ void QGraphicsItem::setZValue(qreal z)
d_ptr->scene->d_func()->invalidateSortCache();
}
- itemChange(ItemZValueHasChanged, double(newZ));
+ itemChange(ItemZValueHasChanged, newZVariant);
}
/*!
@@ -2995,7 +3011,9 @@ QRectF QGraphicsItem::childrenBoundingRect() const
QRectF childRect;
foreach (QGraphicsItem *child, children()) {
QPointF childPos = child->pos();
- QTransform matrix = child->transform() * QTransform::fromTranslate(childPos.x(), childPos.y());
+ QTransform matrix = child->transform();
+ if (!childPos.isNull())
+ matrix *= QTransform::fromTranslate(childPos.x(), childPos.y());
childRect |= matrix.mapRect(child->boundingRect() | child->childrenBoundingRect());
}
return childRect;
@@ -3127,57 +3145,79 @@ bool QGraphicsItem::isClipped() const
QPainterPath QGraphicsItem::clipPath() const
{
Q_D(const QGraphicsItem);
- QPainterPath clip;
- if (!isClipped())
- return clip;
+ if (!d->dirtyClipPath)
+ return d->emptyClipPath ? QPainterPath() : d->cachedClipPath;
+
+ if (!isClipped()) {
+ d_ptr->setCachedClipPath(QPainterPath());
+ return d->cachedClipPath;
+ }
+
+ const QRectF thisBoundingRect(boundingRect());
+ if (thisBoundingRect.isEmpty()) {
+ if (d_ptr->flags & ItemClipsChildrenToShape)
+ d_ptr->setEmptyCachedClipPathRecursively();
+ else
+ d_ptr->setEmptyCachedClipPath();
+ return QPainterPath();
+ }
+ QPainterPath clip;
// Start with the item's bounding rect.
- clip.addRect(boundingRect());
+ clip.addRect(thisBoundingRect);
- bool clipAway = false;
if (d->ancestorFlags & QGraphicsItemPrivate::AncestorClipsChildren) {
- // Make list of parents up to the farthest ancestor that clips its
- // children to its shape.
- QVarLengthArray<const QGraphicsItem *, 32> clippingAncestors;
- const QGraphicsItem *parent = parentItem();
- const QGraphicsItem *clipOwner = 0;
- do {
+ const QGraphicsItem *parent = this;
+ const QGraphicsItem *lastParent = this;
+
+ // Intersect any in-between clips starting at the top and moving downwards.
+ bool foundValidClipPath = false;
+ while ((parent = parent->d_ptr->parent)) {
if (parent->d_ptr->flags & ItemClipsChildrenToShape) {
- clippingAncestors.append(parent);
- clipOwner = parent;
- }
- } while ((parent->d_ptr->ancestorFlags & QGraphicsItemPrivate::AncestorClipsChildren) && (parent = parent->parentItem()));
+ // Map clip to the current parent and intersect with its shape/clipPath
+ clip = lastParent->itemTransform(parent).map(clip);
+ if ((foundValidClipPath = !parent->d_ptr->dirtyClipPath && parent->isClipped())) {
+ if (parent->d_ptr->emptyClipPath) {
+ if (d_ptr->flags & ItemClipsChildrenToShape)
+ d_ptr->setEmptyCachedClipPathRecursively();
+ else
+ d_ptr->setEmptyCachedClipPath();
+ return QPainterPath();
+ }
+ clip = clip.intersected(parent->d_ptr->cachedClipPath);
+ if (!(parent->d_ptr->flags & ItemClipsToShape))
+ clip = clip.intersected(parent->shape());
+ } else {
+ clip = clip.intersected(parent->shape());
+ }
- // Start with the topmost clip.
- QPainterPath parentClip = clipOwner->shape();
+ if (clip.isEmpty()) {
+ if (d_ptr->flags & ItemClipsChildrenToShape)
+ d_ptr->setEmptyCachedClipPathRecursively();
+ else
+ d_ptr->setEmptyCachedClipPath();
+ return clip;
+ }
+ lastParent = parent;
+ }
- // Intersect any in-between clips starting at the bottom and moving
- // upwards.
- for (int i = clippingAncestors.size() - 2; i >= 0; --i) {
- const QGraphicsItem *item = clippingAncestors[i];
- // ### what if itemtransform fails
- if (clipOwner)
- parentClip = clipOwner->itemTransform(item).map(parentClip);
- parentClip = parentClip.intersected(item->shape());
- if (parentClip.isEmpty()) {
- clip = parentClip;
- clipAway = true;
+ if (!(parent->d_ptr->ancestorFlags & QGraphicsItemPrivate::AncestorClipsChildren)
+ || foundValidClipPath) {
break;
}
- clipOwner = item;
}
- if (!clipAway) {
+ if (lastParent != this) {
+ // Map clip back to the item's transform.
// ### what if itemtransform fails
- clip = clip.intersected(clipOwner->itemTransform(this).map(parentClip));
- if (clip.isEmpty())
- clipAway = true;
+ clip = lastParent->itemTransform(this).map(clip);
}
}
- if (!clipAway && d->flags & ItemClipsToShape)
+ if (d->flags & ItemClipsToShape)
clip = clip.intersected(shape());
+ d_ptr->setCachedClipPath(clip);
return clip;
}
@@ -3199,10 +3239,16 @@ bool QGraphicsItem::contains(const QPointF &point) const
}
/*!
- Returns true if this item collides with \a other; otherwise returns false.
- The ways items collide is determined by \a mode. The default value for \a
- mode is Qt::IntersectsItemShape; \a other collides with this item if it
- either intersects, contains, or is contained by this item's shape.
+
+ Returns true if this item collides with \a other; otherwise
+ returns false.
+
+ The \a mode is applied to \a other, and the resulting shape or
+ bounding rectangle is then compared to this item's shape. The
+ default value for \a mode is Qt::IntersectsItemShape; \a other
+ collides with this item if it either intersects, contains, or is
+ contained by this item's shape (see Qt::ItemSelectionMode for
+ details).
The default implementation is based on shape intersection, and it calls
shape() on both items. Because the complexity of arbitrary shape-shape
@@ -3257,6 +3303,11 @@ bool QGraphicsItem::collidesWithItem(const QGraphicsItem *other, Qt::ItemSelecti
Qt::IntersectsItemShape; \a path collides with this item if it either
intersects, contains, or is contained by this item's shape.
+ Note that this function checks whether the item's shape or
+ bounding rectangle (depending on \a mode) is contained within \a
+ path, and not whether \a path is contained within the items shape
+ or bounding rectangle.
+
\sa collidesWithItem(), contains(), shape()
*/
bool QGraphicsItem::collidesWithPath(const QPainterPath &path, Qt::ItemSelectionMode mode) const
@@ -3266,8 +3317,10 @@ bool QGraphicsItem::collidesWithPath(const QPainterPath &path, Qt::ItemSelection
return false;
}
- QRectF rectA = _q_adjustedRect(boundingRect());
- QRectF rectB = _q_adjustedRect(path.controlPointRect());
+ QRectF rectA(boundingRect());
+ _q_adjustRect(&rectA);
+ QRectF rectB(path.controlPointRect());
+ _q_adjustRect(&rectB);
if (!rectA.intersects(rectB)) {
// This we can determine efficiently. If the two rects neither
// intersect nor contain eachother, then the two items do not collide.
@@ -3276,12 +3329,11 @@ bool QGraphicsItem::collidesWithPath(const QPainterPath &path, Qt::ItemSelection
// For further testing, we need this item's shape or bounding rect.
QPainterPath thisShape;
- if (mode == Qt::IntersectsItemShape || mode == Qt::ContainsItemShape) {
+ if (mode == Qt::IntersectsItemShape || mode == Qt::ContainsItemShape)
thisShape = (isClipped() && !d_ptr->localCollisionHack) ? clipPath() : shape();
- } else {
- thisShape.addPolygon(_q_adjustedRect(boundingRect()));
- thisShape.closeSubpath();
- }
+ else
+ thisShape.addRect(rectA);
+
if (thisShape == QPainterPath()) {
// Empty shape? No collision.
return false;
@@ -3296,11 +3348,12 @@ bool QGraphicsItem::collidesWithPath(const QPainterPath &path, Qt::ItemSelection
/*!
Returns a list of all items that collide with this item.
- The way collisions are detected is determined by \a mode. The default
- value for \a mode is Qt::IntersectsItemShape; All items whose shape
- intersects or is contained by this item's shape are returned.
+ The way collisions are detected is determined by applying \a mode
+ to items that are compared to this item, i.e., each item's shape
+ or bounding rectangle is checked against this item's shape. The
+ default value for \a mode is Qt::IntersectsItemShape.
- \sa QGraphicsScene::collidingItems(), collidesWithItem()
+ \sa collidesWithItem()
*/
QList<QGraphicsItem *> QGraphicsItem::collidingItems(Qt::ItemSelectionMode mode) const
{
@@ -3451,7 +3504,8 @@ QRegion QGraphicsItem::boundingRegion(const QTransform &itemToDeviceTransform) c
// into the bitmap, converts the result to a QRegion and scales the region
// back to device space with inverse granularity.
qreal granularity = boundingRegionGranularity();
- QRect deviceRect = _q_adjustedRect(itemToDeviceTransform.mapRect(boundingRect()).toRect());
+ QRect deviceRect = itemToDeviceTransform.mapRect(boundingRect()).toRect();
+ _q_adjustRect(&deviceRect);
if (granularity == 0.0)
return QRegion(deviceRect);
@@ -3581,6 +3635,23 @@ void QGraphicsItem::setBoundingRegionGranularity(qreal granularity)
/*!
\internal
+ Returns true if we can discard an update request; otherwise false.
+*/
+bool QGraphicsItemPrivate::discardUpdateRequest(bool ignoreClipping, bool ignoreVisibleBit,
+ bool ignoreDirtyBit, bool ignoreOpacity) const
+{
+ // No scene, or if the scene is updating everything, means we have nothing
+ // to do. The only exception is if the scene tracks the growing scene rect.
+ return (!visible && !ignoreVisibleBit)
+ || (dirty && !ignoreDirtyBit)
+ || !scene
+ || (scene->d_func()->updateAll && scene->d_func()->hasSceneRect)
+ || (!ignoreClipping && (childrenClippedToShape() && isClippedAway()))
+ || (!ignoreOpacity && childrenCombineOpacity() && isFullyTransparent());
+}
+
+/*!
+ \internal
Asks the scene to mark this item's scene rect as dirty, requesting a
redraw. This does not invalidate any cache.
@@ -3589,19 +3660,16 @@ void QGraphicsItem::setBoundingRegionGranularity(qreal granularity)
only case where the item's background should be marked as dirty even when
the item isn't visible.
*/
-void QGraphicsItemPrivate::updateHelper(const QRectF &rect, bool force)
+void QGraphicsItemPrivate::updateHelper(const QRectF &rect, bool force, bool maybeDirtyClipPath)
{
// No scene, or if the scene is updating everything, means we have nothing
// to do. The only exception is if the scene tracks the growing scene rect.
- if (dirty)
+ if (discardUpdateRequest(/*ignoreClipping=*/maybeDirtyClipPath, /*ignoreVisibleBit=*/force))
return;
- if (!scene || (scene && scene->d_func()->updateAll && scene->d_func()->hasSceneRect))
- return;
- if (scene && (visible || force)) {
- if (rect.isNull())
- dirty = 1;
- scene->itemUpdated(q_ptr, rect);
- }
+
+ if (rect.isNull())
+ dirty = 1;
+ scene->itemUpdated(q_ptr, rect);
}
/*!
@@ -3609,21 +3677,24 @@ void QGraphicsItemPrivate::updateHelper(const QRectF &rect, bool force)
Propagates updates to \a item and all its children.
*/
-void QGraphicsItemPrivate::fullUpdateHelper(bool childrenOnly)
+void QGraphicsItemPrivate::fullUpdateHelper(bool childrenOnly, bool maybeDirtyClipPath, bool ignoreOpacity)
{
- // No scene, or if the scene is updating everything, means we have nothing
- // to do. The only exception is if the scene tracks the growing scene rect.
- if (!scene || (scene && scene->d_func()->updateAll && scene->d_func()->hasSceneRect))
+ if (discardUpdateRequest(/*ignoreClipping=*/maybeDirtyClipPath, /*ignoreVisibleBit=*/false,
+ /*ignoreDirtyBit=*/true, ignoreOpacity)) {
return;
- if (!childrenOnly && !dirty)
- updateHelper();
- if (children.isEmpty() || dirtyChildren)
- return;
- if (flags & QGraphicsItem::ItemClipsChildrenToShape) {
- // ### mark all children dirty?
+ }
+
+ if (!childrenOnly && !dirty) {
+ // Effectively the same as updateHelper(QRectF(), false, maybeDirtyClipPath).
+ dirty = 1;
+ scene->itemUpdated(q_ptr, QRectF());
+ }
+
+ if (dirtyChildren || childrenClippedToShape()) {
// Unnecessary to update children as well.
return;
}
+
if (ancestorFlags & AncestorClipsChildren) {
Q_Q(QGraphicsItem);
// Check if we can avoid updating all children.
@@ -3646,10 +3717,36 @@ void QGraphicsItemPrivate::fullUpdateHelper(bool childrenOnly)
}
}
foreach (QGraphicsItem *child, children)
- child->d_ptr->fullUpdateHelper();
+ child->d_ptr->fullUpdateHelper(false, maybeDirtyClipPath);
dirtyChildren = 1;
}
+static inline bool qt_allChildrenCombineOpacity(QGraphicsItem *parent)
+{
+ Q_ASSERT(parent);
+ if (parent->flags() & QGraphicsItem::ItemDoesntPropagateOpacityToChildren)
+ return false;
+
+ const QList<QGraphicsItem *> children(parent->childItems());
+ for (int i = 0; i < children.size(); ++i) {
+ if (children.at(i)->flags() & QGraphicsItem::ItemIgnoresParentOpacity)
+ return false;
+ }
+ return true;
+}
+
+void QGraphicsItemPrivate::updateEffectiveOpacity()
+{
+ Q_Q(QGraphicsItem);
+ if (parent) {
+ resolveEffectiveOpacity(parent->effectiveOpacity());
+ parent->d_ptr->allChildrenCombineOpacity = qt_allChildrenCombineOpacity(parent);
+ } else {
+ resolveEffectiveOpacity(1.0);
+ }
+ allChildrenCombineOpacity = qt_allChildrenCombineOpacity(q);
+}
+
/*!
\internal
@@ -3674,7 +3771,14 @@ void QGraphicsItemPrivate::resolveEffectiveOpacity(qreal parentEffectiveOpacity)
}
// Set this item's resolved opacity.
- setExtra(ExtraEffectiveOpacity, myEffectiveOpacity);
+ if (qFuzzyCompare(myEffectiveOpacity, qreal(1.0))) {
+ // Opaque, unset effective opacity.
+ hasEffectiveOpacity = 0;
+ unsetExtra(ExtraEffectiveOpacity);
+ } else {
+ hasEffectiveOpacity = 1;
+ setExtra(ExtraEffectiveOpacity, myEffectiveOpacity);
+ }
// Resolve children always.
for (int i = 0; i < children.size(); ++i)
@@ -3727,6 +3831,109 @@ void QGraphicsItemPrivate::removeExtraItemCache()
unsetExtra(ExtraCacheData);
}
+void QGraphicsItemPrivate::setEmptyCachedClipPathRecursively(const QRectF &emptyIfOutsideThisRect)
+{
+ setEmptyCachedClipPath();
+
+ const bool checkRect = !emptyIfOutsideThisRect.isNull()
+ && !(flags & QGraphicsItem::ItemClipsChildrenToShape);
+ for (int i = 0; i < children.size(); ++i) {
+ if (!checkRect) {
+ children.at(i)->d_ptr->setEmptyCachedClipPathRecursively();
+ continue;
+ }
+
+ QGraphicsItem *child = children.at(i);
+ const QRectF rect = child->mapRectFromParent(emptyIfOutsideThisRect);
+ if (rect.intersects(child->boundingRect()))
+ child->d_ptr->invalidateCachedClipPathRecursively(false, rect);
+ else
+ child->d_ptr->setEmptyCachedClipPathRecursively(rect);
+ }
+}
+
+void QGraphicsItemPrivate::invalidateCachedClipPathRecursively(bool childrenOnly, const QRectF &emptyIfOutsideThisRect)
+{
+ if (!childrenOnly)
+ invalidateCachedClipPath();
+
+ const bool checkRect = !emptyIfOutsideThisRect.isNull();
+ for (int i = 0; i < children.size(); ++i) {
+ if (!checkRect) {
+ children.at(i)->d_ptr->invalidateCachedClipPathRecursively(false);
+ continue;
+ }
+
+ QGraphicsItem *child = children.at(i);
+ const QRectF rect = child->mapRectFromParent(emptyIfOutsideThisRect);
+ if (rect.intersects(child->boundingRect()))
+ child->d_ptr->invalidateCachedClipPathRecursively(false, rect);
+ else
+ child->d_ptr->setEmptyCachedClipPathRecursively(rect);
+ }
+}
+
+void QGraphicsItemPrivate::updateCachedClipPathFromSetPosHelper(const QPointF &newPos)
+{
+ Q_ASSERT(inSetPosHelper);
+
+ if (!(ancestorFlags & QGraphicsItemPrivate::AncestorClipsChildren))
+ return; // Not clipped by any ancestor.
+
+ // Find closest clip ancestor and transform.
+ Q_Q(QGraphicsItem);
+ QTransform thisToParentTransform = hasTransform
+ ? q->transform() * QTransform::fromTranslate(newPos.x(), newPos.y())
+ : QTransform::fromTranslate(newPos.x(), newPos.y());
+ QGraphicsItem *clipParent = parent;
+ while (clipParent && !(clipParent->d_ptr->flags & QGraphicsItem::ItemClipsChildrenToShape)) {
+ if (clipParent->d_ptr->hasTransform)
+ thisToParentTransform *= clipParent->transform();
+ if (!clipParent->d_ptr->pos.isNull()) {
+ thisToParentTransform *= QTransform::fromTranslate(clipParent->d_ptr->pos.x(),
+ clipParent->d_ptr->pos.y());
+ }
+ clipParent = clipParent->d_ptr->parent;
+ }
+
+ // thisToParentTransform is now the same as q->itemTransform(clipParent), except
+ // that the new position (which is not yet set on the item) is taken into account.
+ Q_ASSERT(clipParent);
+ Q_ASSERT(clipParent->d_ptr->flags & QGraphicsItem::ItemClipsChildrenToShape);
+
+ // From here everything is calculated in clip parent's coordinates.
+ const QRectF parentBoundingRect(clipParent->boundingRect());
+ const QRectF thisBoundingRect(thisToParentTransform.mapRect(q->boundingRect()));
+
+ if (!parentBoundingRect.intersects(thisBoundingRect)) {
+ // Item is moved outside the clip parent's bounding rect,
+ // i.e. it is fully clipped and the clip path is empty.
+ if (flags & QGraphicsItem::ItemClipsChildrenToShape)
+ setEmptyCachedClipPathRecursively();
+ else
+ setEmptyCachedClipPathRecursively(thisToParentTransform.inverted().mapRect(parentBoundingRect));
+ return;
+ }
+
+ const QPainterPath parentClip(clipParent->isClipped() ? clipParent->clipPath() : clipParent->shape());
+ if (parentClip.contains(thisBoundingRect))
+ return; // Item is inside the clip parent's shape. No update required.
+
+ const QRectF parentClipRect(parentClip.controlPointRect());
+ if (!parentClipRect.intersects(thisBoundingRect)) {
+ // Item is moved outside the clip parent's shape,
+ // i.e. it is fully clipped and the clip path is empty.
+ if (flags & QGraphicsItem::ItemClipsChildrenToShape)
+ setEmptyCachedClipPathRecursively();
+ else
+ setEmptyCachedClipPathRecursively(thisToParentTransform.inverted().mapRect(parentClipRect));
+ } else {
+ // Item is partially inside the clip parent's shape,
+ // i.e. the cached clip path must be invalidated.
+ invalidateCachedClipPathRecursively(false, thisToParentTransform.inverted().mapRect(parentClipRect));
+ }
+}
+
/*!
\internal
@@ -3757,20 +3964,35 @@ bool QGraphicsItemPrivate::isProxyWidget() const
*/
void QGraphicsItem::update(const QRectF &rect)
{
- if (d_ptr->dirty)
+ if (rect.isEmpty() && !rect.isNull())
return;
- if (d_ptr->scene && isVisible()) {
- if (CacheMode(d_ptr->cacheMode) != NoCache) {
- QGraphicsItemCache *cache = d_ptr->extraItemCache();
- if (rect.isNull()) {
- cache->allExposed = true;
- cache->exposed.clear();
- } else {
- cache->exposed.append(rect);
- }
+
+ if (CacheMode(d_ptr->cacheMode) != NoCache) {
+ QGraphicsItemCache *cache = d_ptr->extraItemCache();
+ if (d_ptr->discardUpdateRequest(/* ignoreVisibleBit = */ false,
+ /* ignoreClipping = */ false,
+ /* ignoreDirtyBit = */ true)) {
+ return;
}
- d_ptr->updateHelper(rect);
+
+ // Invalidate cache.
+ if (rect.isNull()) {
+ cache->allExposed = true;
+ cache->exposed.clear();
+ } else {
+ cache->exposed.append(rect);
+ }
+ // Only invalidate cache; item is already dirty.
+ if (d_ptr->dirty)
+ return;
+ } else if (d_ptr->discardUpdateRequest()) {
+ return;
}
+
+ // Effectively the same as updateHelper(rect);
+ if (rect.isNull())
+ d_ptr->dirty = 1;
+ d_ptr->scene->itemUpdated(this, rect);
}
@@ -4027,9 +4249,9 @@ QPolygonF QGraphicsItem::mapToItem(const QGraphicsItem *item, const QRectF &rect
*/
QPolygonF QGraphicsItem::mapToParent(const QRectF &rect) const
{
- if (!d_ptr->hasTransform)
- return QPolygonF(rect.translated(d_ptr->pos));
- return transform().map(rect.translated(d_ptr->pos));
+ QPolygonF p = !d_ptr->hasTransform ? rect : transform().map(rect);
+ p.translate(d_ptr->pos);
+ return p;
}
/*!
@@ -4096,8 +4318,8 @@ QRectF QGraphicsItem::mapRectToItem(const QGraphicsItem *item, const QRectF &rec
*/
QRectF QGraphicsItem::mapRectToParent(const QRectF &rect) const
{
- QRectF r = rect.translated(d_ptr->pos.x(), d_ptr->pos.y());
- return !d_ptr->hasTransform ? r : transform().mapRect(r);
+ QRectF r = !d_ptr->hasTransform ? rect : transform().mapRect(rect);
+ return r.translated(d_ptr->pos);
}
/*!
@@ -4228,9 +4450,9 @@ QPolygonF QGraphicsItem::mapToItem(const QGraphicsItem *item, const QPolygonF &p
*/
QPolygonF QGraphicsItem::mapToParent(const QPolygonF &polygon) const
{
- QPolygonF p = polygon;
+ QPolygonF p = !d_ptr->hasTransform ? polygon : transform().map(polygon);
p.translate(d_ptr->pos);
- return d_ptr->hasTransform ? transform().map(p) : p;
+ return p;
}
/*!
@@ -4272,7 +4494,10 @@ QPainterPath QGraphicsItem::mapToItem(const QGraphicsItem *item, const QPainterP
*/
QPainterPath QGraphicsItem::mapToParent(const QPainterPath &path) const
{
- return d_ptr->parent ? itemTransform(d_ptr->parent).map(path) : mapToScene(path);
+ QTransform x = QTransform::fromTranslate(d_ptr->pos.x(), d_ptr->pos.y());
+ if (d_ptr->hasTransform)
+ x = transform() * x;
+ return x.map(path);
}
/*!
@@ -5502,11 +5727,18 @@ void QGraphicsItem::removeFromIndex()
void QGraphicsItem::prepareGeometryChange()
{
if (d_ptr->scene) {
- d_ptr->updateHelper();
-
+ d_ptr->updateHelper(QRectF(), false, /*maybeDirtyClipPath=*/!d_ptr->inSetPosHelper);
QGraphicsScenePrivate *scenePrivate = d_ptr->scene->d_func();
scenePrivate->removeFromIndex(this);
}
+
+ if (d_ptr->inSetPosHelper)
+ return;
+
+ if (d_ptr->flags & ItemClipsChildrenToShape)
+ d_ptr->invalidateCachedClipPathRecursively();
+ else
+ d_ptr->invalidateCachedClipPath();
}
/*!
@@ -8283,6 +8515,7 @@ void QGraphicsSimpleTextItem::setText(const QString &text)
return;
d->text = text;
d->updateBoundingRect();
+ update();
}
/*!
@@ -8544,13 +8777,17 @@ void QGraphicsItemGroup::addToGroup(QGraphicsItem *item)
QTransform oldSceneMatrix = item->sceneTransform();
item->setPos(mapFromItem(item, 0, 0));
item->setParentItem(this);
- item->setTransform(oldSceneMatrix
- * sceneTransform().inverted()
- * QTransform::fromTranslate(-item->x(), -item->y()));
+ QTransform newItemTransform(oldSceneMatrix);
+ newItemTransform *= sceneTransform().inverted();
+ if (!item->pos().isNull())
+ newItemTransform *= QTransform::fromTranslate(-item->x(), -item->y());
+ item->setTransform(newItemTransform);
item->d_func()->setIsMemberOfGroup(true);
prepareGeometryChange();
- d->itemsBoundingRect |= (item->transform() * QTransform::fromTranslate(item->x(), item->y()))
- .mapRect(item->boundingRect() | item->childrenBoundingRect());
+ QTransform itemTransform(item->transform());
+ if (!item->pos().isNull())
+ itemTransform *= QTransform::fromTranslate(item->x(), item->y());
+ d->itemsBoundingRect |= itemTransform.mapRect(item->boundingRect() | item->childrenBoundingRect());
update();
}
diff --git a/src/gui/graphicsview/qgraphicsitem_p.h b/src/gui/graphicsview/qgraphicsitem_p.h
index 07f6958..9ce1bbf 100644
--- a/src/gui/graphicsview/qgraphicsitem_p.h
+++ b/src/gui/graphicsview/qgraphicsitem_p.h
@@ -133,10 +133,15 @@ public:
hasBoundingRegionGranularity(0),
flags(0),
hasOpacity(0),
+ hasEffectiveOpacity(0),
isWidget(0),
dirty(0),
dirtyChildren(0),
localCollisionHack(0),
+ dirtyClipPath(1),
+ emptyClipPath(0),
+ inSetPosHelper(0),
+ allChildrenCombineOpacity(1),
globalStackingOrder(-1),
sceneTransformIndex(-1),
q_ptr(0)
@@ -157,11 +162,14 @@ public:
virtual QVariant inputMethodQueryHelper(Qt::InputMethodQuery query) const;
static bool movableAncestorIsSelected(const QGraphicsItem *item);
- void setPosHelper(const QPointF &pos, bool update);
+ void setPosHelper(const QPointF &pos);
void setVisibleHelper(bool newVisible, bool explicitly, bool update = true);
void setEnabledHelper(bool newEnabled, bool explicitly, bool update = true);
- void updateHelper(const QRectF &rect = QRectF(), bool force = false);
- void fullUpdateHelper(bool childrenOnly = false);
+ bool discardUpdateRequest(bool ignoreClipping = false, bool ignoreVisibleBit = false,
+ bool ignoreDirtyBit = false, bool ignoreOpacity = false) const;
+ void updateHelper(const QRectF &rect = QRectF(), bool force = false, bool maybeDirtyClipPath = false);
+ void fullUpdateHelper(bool childrenOnly = false, bool maybeDirtyClipPath = false, bool ignoreOpacity = false);
+ void updateEffectiveOpacity();
void resolveEffectiveOpacity(qreal effectiveParentOpacity);
void resolveDepth(int parentDepth);
void invalidateSceneTransformCache();
@@ -233,6 +241,47 @@ public:
QGraphicsItemCache *extraItemCache() const;
void removeExtraItemCache();
+ inline void setCachedClipPath(const QPainterPath &path)
+ {
+ cachedClipPath = path;
+ dirtyClipPath = 0;
+ emptyClipPath = 0;
+ }
+
+ inline void setEmptyCachedClipPath()
+ {
+ emptyClipPath = 1;
+ dirtyClipPath = 0;
+ }
+
+ void setEmptyCachedClipPathRecursively(const QRectF &emptyIfOutsideThisRect = QRectF());
+
+ inline void invalidateCachedClipPath()
+ { /*static int count = 0 ;qWarning("%i", ++count);*/ dirtyClipPath = 1; emptyClipPath = 0; }
+
+ void invalidateCachedClipPathRecursively(bool childrenOnly = false, const QRectF &emptyIfOutsideThisRect = QRectF());
+ void updateCachedClipPathFromSetPosHelper(const QPointF &newPos);
+
+ inline bool isFullyTransparent() const
+ { return hasEffectiveOpacity && qFuzzyCompare(q_func()->effectiveOpacity() + 1, qreal(1.0)); }
+
+ inline bool childrenCombineOpacity() const
+ { return allChildrenCombineOpacity || children.isEmpty(); }
+
+ inline bool isClippedAway() const
+ { return !dirtyClipPath && q_func()->isClipped() && (emptyClipPath || cachedClipPath.isEmpty()); }
+
+ inline bool childrenClippedToShape() const
+ { return (flags & QGraphicsItem::ItemClipsChildrenToShape) || children.isEmpty(); }
+
+ inline bool isInvisible() const
+ {
+ return !visible
+ || (childrenClippedToShape() && isClippedAway())
+ || (childrenCombineOpacity() && isFullyTransparent());
+ }
+
+ QPainterPath cachedClipPath;
QPointF pos;
qreal z;
QGraphicsScene *scene;
@@ -262,10 +311,15 @@ public:
// New 32 bytes
quint32 hasOpacity : 1;
+ quint32 hasEffectiveOpacity : 1;
quint32 isWidget : 1;
quint32 dirty : 1;
quint32 dirtyChildren : 1;
quint32 localCollisionHack : 1;
+ quint32 dirtyClipPath : 1;
+ quint32 emptyClipPath : 1;
+ quint32 inSetPosHelper : 1;
+ quint32 allChildrenCombineOpacity : 1;
// Optional stacking order
int globalStackingOrder;
diff --git a/src/gui/graphicsview/qgraphicslayoutitem.cpp b/src/gui/graphicsview/qgraphicslayoutitem.cpp
index eaa97ff..b46e05e 100644
--- a/src/gui/graphicsview/qgraphicslayoutitem.cpp
+++ b/src/gui/graphicsview/qgraphicslayoutitem.cpp
@@ -255,7 +255,7 @@ QGraphicsItem *QGraphicsLayoutItemPrivate::parentItem() const
passing a QGraphicsLayoutItem pointer to QGraphicsLayoutItem's
protected constructor, or by calling setParentLayoutItem(). The
parentLayoutItem() function returns a pointer to the item's layoutItem
- parent. If the item's parent is 0 or if the the parent does not inherit
+ parent. If the item's parent is 0 or if the parent does not inherit
from QGraphicsItem, the parentLayoutItem() function then returns 0.
isLayout() returns true if the QGraphicsLayoutItem subclass is itself a
layout, or false otherwise.
diff --git a/src/gui/graphicsview/qgraphicsproxywidget.cpp b/src/gui/graphicsview/qgraphicsproxywidget.cpp
index 1d2721b..e660879 100644
--- a/src/gui/graphicsview/qgraphicsproxywidget.cpp
+++ b/src/gui/graphicsview/qgraphicsproxywidget.cpp
@@ -177,6 +177,10 @@ QT_BEGIN_NAMESPACE
while the widget is embedded. In this state, the widget may differ slightly
in behavior from when it is not embedded.
+ \warning This class is provided for convenience when bridging
+ QWidgets and QGraphicsItems, it should not be used for
+ high-performance scenarios.
+
\sa QGraphicsScene::addWidget(), QGraphicsWidget
*/
@@ -1033,7 +1037,7 @@ void QGraphicsProxyWidget::dragMoveEvent(QGraphicsSceneDragDropEvent *event)
if (receiver != d->dragDropWidget) {
// Try to enter before we leave
QDragEnterEvent dragEnter(receiverPos, event->possibleActions(), event->mimeData(), event->buttons(), event->modifiers());
- dragEnter.setDropAction(event->proposedAction());
+ dragEnter.setDropAction(event->proposedAction());
QApplication::sendEvent(receiver, &dragEnter);
event->setAccepted(dragEnter.isAccepted());
event->setDropAction(dragEnter.dropAction());
@@ -1431,7 +1435,7 @@ int QGraphicsProxyWidget::type() const
Creates a proxy widget for the given \a child of the widget
contained in this proxy.
-
+
This function makes it possible to aquire proxies for
non top-level widgets. For instance, you can embed a dialog,
and then transform only one of its widgets.
diff --git a/src/gui/graphicsview/qgraphicsscene.cpp b/src/gui/graphicsview/qgraphicsscene.cpp
index 1f78a18..b89e352 100644
--- a/src/gui/graphicsview/qgraphicsscene.cpp
+++ b/src/gui/graphicsview/qgraphicsscene.cpp
@@ -292,15 +292,21 @@ static inline bool QRectF_intersects(const QRectF &s, const QRectF &r)
// QRectF::intersects() returns false always if either the source or target
// rectangle's width or height are 0. This works around that problem.
-static QRectF _q_adjustedRect(const QRectF &rect)
+static inline void _q_adjustRect(QRectF *rect)
{
- static const qreal p = (qreal)0.00001;
- QRectF r = rect;
- if (!r.width())
- r.adjust(-p, 0, p, 0);
- if (!r.height())
- r.adjust(0, -p, 0, p);
- return r;
+ Q_ASSERT(rect);
+ if (!rect->width())
+ rect->adjust(-0.00001, 0, 0.00001, 0);
+ if (!rect->height())
+ rect->adjust(0, -0.00001, 0, 0.00001);
+}
+
+static inline QRectF adjustedItemBoundingRect(const QGraphicsItem *item)
+{
+ Q_ASSERT(item);
+ QRectF boundingRect(item->boundingRect());
+ _q_adjustRect(&boundingRect);
+ return boundingRect;
}
static void _q_hoverFromMouseEvent(QGraphicsSceneHoverEvent *hover, const QGraphicsSceneMouseEvent *mouseEvent)
@@ -632,10 +638,11 @@ void QGraphicsScenePrivate::_q_updateLater()
*/
void QGraphicsScenePrivate::_q_polishItems()
{
+ const QVariant booleanTrueVariant(true);
foreach (QGraphicsItem *item, unpolishedItems) {
if (!item->d_ptr->explicitlyHidden) {
- item->itemChange(QGraphicsItem::ItemVisibleChange, true);
- item->itemChange(QGraphicsItem::ItemVisibleHasChanged, true);
+ item->itemChange(QGraphicsItem::ItemVisibleChange, booleanTrueVariant);
+ item->itemChange(QGraphicsItem::ItemVisibleHasChanged, booleanTrueVariant);
}
if (item->isWidget()) {
QEvent event(QEvent::Polish);
@@ -690,13 +697,6 @@ void QGraphicsScenePrivate::_q_removeItemLater(QGraphicsItem *item)
{
Q_Q(QGraphicsScene);
- if (QGraphicsItem *parent = item->d_func()->parent) {
- QVariant variant;
- qVariantSetValue<QGraphicsItem *>(variant, item);
- parent->itemChange(QGraphicsItem::ItemChildRemovedChange, variant);
- parent->d_func()->children.removeAll(item);
- }
-
// Clear focus on the item to remove any reference in the focusWidget
// chain.
item->clearFocus();
@@ -740,6 +740,15 @@ void QGraphicsScenePrivate::_q_removeItemLater(QGraphicsItem *item)
unpolishedItems.removeAll(item);
dirtyItems.removeAll(item);
+ //We remove all references of item from the sceneEventFilter arrays
+ QMultiMap<QGraphicsItem*, QGraphicsItem*>::iterator iterator = sceneEventFilters.begin();
+ while (iterator != sceneEventFilters.end()) {
+ if (iterator.value() == item || iterator.key() == item)
+ iterator = sceneEventFilters.erase(iterator);
+ else
+ ++iterator;
+ }
+
// Remove from scene transform cache
int transformIndex = item->d_func()->sceneTransformIndex;
if (transformIndex != -1) {
@@ -1358,6 +1367,48 @@ QGraphicsWidget *QGraphicsScenePrivate::windowForItem(const QGraphicsItem *item)
return 0;
}
+
+QList<QGraphicsItem *> QGraphicsScenePrivate::items_helper(const QPointF &pos) const
+{
+ QList<QGraphicsItem *> items;
+
+ // The index returns a rough estimate of what items are inside the rect.
+ // Refine it by iterating through all returned items.
+ QRectF adjustedRect = QRectF(pos, QSize(1,1));
+ foreach (QGraphicsItem *item, estimateItemsInRect(adjustedRect)) {
+ // Find the item's scene transform in a clever way.
+ QTransform x = item->sceneTransform();
+ bool keep = false;
+
+ // ### _q_adjustedRect is only needed because QRectF::intersects,
+ // QRectF::contains and QTransform::map() and friends don't work with
+ // flat rectangles.
+ const QRectF br(adjustedItemBoundingRect(item));
+ // Rect intersects/contains item's shape
+ if (QRectF_intersects(adjustedRect, x.mapRect(br))) {
+ bool ok;
+ QTransform xinv = x.inverted(&ok);
+ if (ok) {
+ if (item->contains(xinv.map(pos))) {
+ items << item;
+ keep = true;
+ }
+ }
+ }
+
+ if (keep && (item->flags() & QGraphicsItem::ItemClipsChildrenToShape)) {
+ // Recurse into children that clip children.
+ bool ok;
+ QTransform xinv = x.inverted(&ok);
+ if (ok)
+ childItems_helper(&items, item, xinv.map(pos));
+ }
+ }
+
+ sortItems(&items, Qt::AscendingOrder, sortCacheEnabled);
+ return items;
+}
+
QList<QGraphicsItem *> QGraphicsScenePrivate::items_helper(const QRectF &rect,
Qt::ItemSelectionMode mode,
Qt::SortOrder order) const
@@ -1368,7 +1419,8 @@ QList<QGraphicsItem *> QGraphicsScenePrivate::items_helper(const QRectF &rect,
// The index returns a rough estimate of what items are inside the rect.
// Refine it by iterating through all returned items.
- QRectF adjustedRect = _q_adjustedRect(rect);
+ QRectF adjustedRect(rect);
+ _q_adjustRect(&adjustedRect);
foreach (QGraphicsItem *item, estimateItemsInRect(adjustedRect)) {
// Find the item's scene transform in a clever way.
QTransform x = item->sceneTransform();
@@ -1377,7 +1429,7 @@ QList<QGraphicsItem *> QGraphicsScenePrivate::items_helper(const QRectF &rect,
// ### _q_adjustedRect is only needed because QRectF::intersects,
// QRectF::contains and QTransform::map() and friends don't work with
// flat rectangles.
- QRectF br = _q_adjustedRect(item->boundingRect());
+ const QRectF br(adjustedItemBoundingRect(item));
if (mode >= Qt::ContainsItemBoundingRect) {
// Rect intersects/contains item's bounding rect
QRectF mbr = x.mapRect(br);
@@ -1392,7 +1444,7 @@ QList<QGraphicsItem *> QGraphicsScenePrivate::items_helper(const QRectF &rect,
bool ok;
QTransform xinv = x.inverted(&ok);
if (ok) {
- if (path == QPainterPath())
+ if (path.isEmpty())
path.addRect(rect);
if (itemCollidesWithPath(item, xinv.map(path), mode)) {
items << item;
@@ -1429,7 +1481,8 @@ QList<QGraphicsItem *> QGraphicsScenePrivate::items_helper(const QPolygonF &poly
{
QList<QGraphicsItem *> items;
- QRectF polyRect = _q_adjustedRect(polygon.boundingRect());
+ QRectF polyRect(polygon.boundingRect());
+ _q_adjustRect(&polyRect);
QPainterPath path;
// The index returns a rough estimate of what items are inside the rect.
@@ -1442,7 +1495,7 @@ QList<QGraphicsItem *> QGraphicsScenePrivate::items_helper(const QPolygonF &poly
// ### _q_adjustedRect is only needed because QRectF::intersects,
// QRectF::contains and QTransform::map() and friends don't work with
// flat rectangles.
- QRectF br = _q_adjustedRect(item->boundingRect());
+ const QRectF br(adjustedItemBoundingRect(item));
if (mode >= Qt::ContainsItemBoundingRect) {
// Polygon contains/intersects item's bounding rect
if (path == QPainterPath())
@@ -1487,21 +1540,47 @@ QList<QGraphicsItem *> QGraphicsScenePrivate::items_helper(const QPainterPath &p
Qt::SortOrder order) const
{
QList<QGraphicsItem *> items;
+ QRectF pathRect(path.controlPointRect());
+ _q_adjustRect(&pathRect);
+
// The index returns a rough estimate of what items are inside the rect.
// Refine it by iterating through all returned items.
- foreach (QGraphicsItem *item, estimateItemsInRect(_q_adjustedRect(path.controlPointRect()))) {
+ foreach (QGraphicsItem *item, estimateItemsInRect(pathRect)) {
// Find the item's scene transform in a clever way.
QTransform x = item->sceneTransform();
- bool ok;
- QTransform xinv = x.inverted(&ok);
- if (ok) {
- QPainterPath mappedPath = xinv.map(path);
- if (itemCollidesWithPath(item, mappedPath, mode)) {
+ bool keep = false;
+
+ // ### _q_adjustedRect is only needed because QRectF::intersects,
+ // QRectF::contains and QTransform::map() and friends don't work with
+ // flat rectangles.
+ const QRectF br(adjustedItemBoundingRect(item));
+ if (mode >= Qt::ContainsItemBoundingRect) {
+ // Path contains/intersects item's bounding rect
+ if ((mode == Qt::IntersectsItemBoundingRect && path.intersects(x.mapRect(br)))
+ || (mode == Qt::ContainsItemBoundingRect && path.contains(x.mapRect(br)))) {
items << item;
- if (item->flags() & QGraphicsItem::ItemClipsChildrenToShape)
- childItems_helper(&items, item, mappedPath, mode);
+ keep = true;
+ }
+ } else {
+ // Path contains/intersects item's shape
+ if (QRectF_intersects(pathRect, x.mapRect(br))) {
+ bool ok;
+ QTransform xinv = x.inverted(&ok);
+ if (ok) {
+ if (itemCollidesWithPath(item, xinv.map(path), mode)) {
+ items << item;
+ keep = true;
+ }
+ }
}
}
+
+ if (keep && (item->flags() & QGraphicsItem::ItemClipsChildrenToShape)) {
+ bool ok;
+ QTransform xinv = x.inverted(&ok);
+ if (ok)
+ childItems_helper(&items, item, xinv.map(path), mode);
+ }
}
if (order != Qt::SortOrder(-1))
@@ -1511,13 +1590,13 @@ QList<QGraphicsItem *> QGraphicsScenePrivate::items_helper(const QPainterPath &p
void QGraphicsScenePrivate::childItems_helper(QList<QGraphicsItem *> *items,
const QGraphicsItem *parent,
- const QRectF &rect,
- Qt::ItemSelectionMode mode) const
+ const QPointF &pos) const
{
- QPainterPath path;
bool parentClip = (parent->flags() & QGraphicsItem::ItemClipsChildrenToShape);
- QRectF r = !parentClip ? _q_adjustedRect(rect) : _q_adjustedRect(rect).intersected(_q_adjustedRect(parent->boundingRect()));
- if (r.isEmpty())
+ if (parentClip && parent->d_ptr->isClippedAway())
+ return;
+ // ### is this needed?
+ if (parentClip && !parent->boundingRect().contains(pos))
return;
QList<QGraphicsItem *> &children = parent->d_ptr->children;
@@ -1527,31 +1606,73 @@ void QGraphicsScenePrivate::childItems_helper(QList<QGraphicsItem *> *items,
continue;
// Skip invisible items and all their children.
- if (!item->d_ptr->visible || qFuzzyCompare(item->effectiveOpacity(), qreal(0.0)))
+ if (item->d_ptr->isInvisible())
continue;
- // ### _q_adjustedRect is only needed because QRectF::intersects,
- // QRectF::contains and QTransform::map() and friends don't work with
- // flat rectangles.
- QRectF br = _q_adjustedRect(item->boundingRect());
- QRectF mbr = item->mapRectToParent(br);
bool keep = false;
- if (mode >= Qt::ContainsItemBoundingRect) {
- // Rect intersects/contains item's bounding rect
- if ((mode == Qt::IntersectsItemBoundingRect && QRectF_intersects(rect, mbr))
- || (mode == Qt::ContainsItemBoundingRect && rect != mbr && rect.contains(br))) {
+ if (!item->d_ptr->isClippedAway()) {
+ if (item->contains(item->mapFromParent(pos))) {
items->append(item);
keep = true;
}
- } else {
- // Rect intersects/contains item's shape
- if (QRectF_intersects(rect, mbr)) {
- if (path == QPainterPath())
- path.addRect(rect);
- if (itemCollidesWithPath(item, item->mapFromParent(path), mode)) {
+ }
+
+ if ((keep || !(item->flags() & QGraphicsItem::ItemClipsChildrenToShape)) && !item->d_ptr->children.isEmpty())
+ // Recurse into children.
+ childItems_helper(items, item, item->mapFromParent(pos));
+ }
+}
+
+
+void QGraphicsScenePrivate::childItems_helper(QList<QGraphicsItem *> *items,
+ const QGraphicsItem *parent,
+ const QRectF &rect,
+ Qt::ItemSelectionMode mode) const
+{
+ bool parentClip = (parent->flags() & QGraphicsItem::ItemClipsChildrenToShape);
+ if (parentClip && parent->d_ptr->isClippedAway())
+ return;
+ QRectF adjustedRect(rect);
+ _q_adjustRect(&adjustedRect);
+ QRectF r = !parentClip ? adjustedRect : adjustedRect.intersected(adjustedItemBoundingRect(parent));
+ if (r.isEmpty())
+ return;
+
+ QPainterPath path;
+ QList<QGraphicsItem *> &children = parent->d_ptr->children;
+ for (int i = 0; i < children.size(); ++i) {
+ QGraphicsItem *item = children.at(i);
+ if (item->d_ptr->hasTransform && !item->transform().isInvertible())
+ continue;
+
+ // Skip invisible items and all their children.
+ if (item->d_ptr->isInvisible())
+ continue;
+
+ bool keep = false;
+ if (!item->d_ptr->isClippedAway()) {
+ // ### _q_adjustedRect is only needed because QRectF::intersects,
+ // QRectF::contains and QTransform::map() and friends don't work with
+ // flat rectangles.
+ const QRectF br(adjustedItemBoundingRect(item));
+ QRectF mbr = item->mapRectToParent(br);
+ if (mode >= Qt::ContainsItemBoundingRect) {
+ // Rect intersects/contains item's bounding rect
+ if ((mode == Qt::IntersectsItemBoundingRect && QRectF_intersects(rect, mbr))
+ || (mode == Qt::ContainsItemBoundingRect && rect != mbr && rect.contains(br))) {
items->append(item);
keep = true;
}
+ } else {
+ // Rect intersects/contains item's shape
+ if (QRectF_intersects(rect, mbr)) {
+ if (path == QPainterPath())
+ path.addRect(rect);
+ if (itemCollidesWithPath(item, item->mapFromParent(path), mode)) {
+ items->append(item);
+ keep = true;
+ }
+ }
}
}
@@ -1568,18 +1689,22 @@ void QGraphicsScenePrivate::childItems_helper(QList<QGraphicsItem *> *items,
}
}
+
void QGraphicsScenePrivate::childItems_helper(QList<QGraphicsItem *> *items,
const QGraphicsItem *parent,
const QPolygonF &polygon,
Qt::ItemSelectionMode mode) const
{
- QPainterPath path;
bool parentClip = (parent->flags() & QGraphicsItem::ItemClipsChildrenToShape);
- QRectF polyRect = _q_adjustedRect(polygon.boundingRect());
- QRectF r = !parentClip ? polyRect : polyRect.intersected(_q_adjustedRect(parent->boundingRect()));
+ if (parentClip && parent->d_ptr->isClippedAway())
+ return;
+ QRectF polyRect(polygon.boundingRect());
+ _q_adjustRect(&polyRect);
+ QRectF r = !parentClip ? polyRect : polyRect.intersected(adjustedItemBoundingRect(parent));
if (r.isEmpty())
return;
+ QPainterPath path;
QList<QGraphicsItem *> &children = parent->d_ptr->children;
for (int i = 0; i < children.size(); ++i) {
QGraphicsItem *item = children.at(i);
@@ -1587,32 +1712,34 @@ void QGraphicsScenePrivate::childItems_helper(QList<QGraphicsItem *> *items,
continue;
// Skip invisible items.
- if (!item->d_ptr->visible || qFuzzyCompare(item->effectiveOpacity() + 1, qreal(1.0)))
+ if (item->d_ptr->isInvisible())
continue;
- // ### _q_adjustedRect is only needed because QRectF::intersects,
- // QRectF::contains and QTransform::map() and friends don't work with
- // flat rectangles.
- QRectF br = _q_adjustedRect(item->boundingRect());
bool keep = false;
- if (mode >= Qt::ContainsItemBoundingRect) {
- // Polygon contains/intersects item's bounding rect
- if (path == QPainterPath())
- path.addPolygon(polygon);
- if ((mode == Qt::IntersectsItemBoundingRect && path.intersects(item->mapRectToParent(br)))
- || (mode == Qt::ContainsItemBoundingRect && path.contains(item->mapRectToParent(br)))) {
- items->append(item);
- keep = true;
- }
- } else {
- // Polygon contains/intersects item's shape
- if (QRectF_intersects(polyRect, item->mapRectToParent(br))) {
+ if (!item->d_ptr->isClippedAway()) {
+ // ### _q_adjustedRect is only needed because QRectF::intersects,
+ // QRectF::contains and QTransform::map() and friends don't work with
+ // flat rectangles.
+ const QRectF br(adjustedItemBoundingRect(item));
+ if (mode >= Qt::ContainsItemBoundingRect) {
+ // Polygon contains/intersects item's bounding rect
if (path == QPainterPath())
path.addPolygon(polygon);
- if (itemCollidesWithPath(item, item->mapFromParent(path), mode)) {
+ if ((mode == Qt::IntersectsItemBoundingRect && path.intersects(item->mapRectToParent(br)))
+ || (mode == Qt::ContainsItemBoundingRect && path.contains(item->mapRectToParent(br)))) {
items->append(item);
keep = true;
}
+ } else {
+ // Polygon contains/intersects item's shape
+ if (QRectF_intersects(polyRect, item->mapRectToParent(br))) {
+ if (path == QPainterPath())
+ path.addPolygon(polygon);
+ if (itemCollidesWithPath(item, item->mapFromParent(path), mode)) {
+ items->append(item);
+ keep = true;
+ }
+ }
}
}
@@ -1629,30 +1756,52 @@ void QGraphicsScenePrivate::childItems_helper(QList<QGraphicsItem *> *items,
Qt::ItemSelectionMode mode) const
{
bool parentClip = (parent->flags() & QGraphicsItem::ItemClipsChildrenToShape);
- QPainterPath intersectedPath = !parentClip ? path : path.intersected(parent->shape());
- if (intersectedPath.isEmpty())
+ if (parentClip && parent->d_ptr->isClippedAway())
+ return;
+ QRectF pathRect(path.boundingRect());
+ _q_adjustRect(&pathRect);
+ QRectF r = !parentClip ? pathRect : pathRect.intersected(adjustedItemBoundingRect(parent));
+ if (r.isEmpty())
return;
QList<QGraphicsItem *> &children = parent->d_ptr->children;
for (int i = 0; i < children.size(); ++i) {
QGraphicsItem *item = children.at(i);
+ if (item->d_ptr->hasTransform && !item->transform().isInvertible())
+ continue;
// Skip invisible items.
- if (!item->d_ptr->visible || qFuzzyCompare(item->effectiveOpacity(), qreal(0.0)))
+ if (item->d_ptr->isInvisible())
continue;
- QTransform x = item->sceneTransform();
-
- bool ok;
- QTransform xinv = x.inverted(&ok);
- if (ok) {
- QPainterPath mappedPath = xinv.map(path);
- if (itemCollidesWithPath(item, mappedPath, mode)) {
- items->append(item);
- if (!item->d_ptr->children.isEmpty())
- childItems_helper(items, item, mappedPath, mode);
+ bool keep = false;
+ if (!item->d_ptr->isClippedAway()) {
+ // ### _q_adjustedRect is only needed because QRectF::intersects,
+ // QRectF::contains and QTransform::map() and friends don't work with
+ // flat rectangles.
+ const QRectF br(adjustedItemBoundingRect(item));
+ if (mode >= Qt::ContainsItemBoundingRect) {
+ // Polygon contains/intersects item's bounding rect
+ if ((mode == Qt::IntersectsItemBoundingRect && path.intersects(item->mapRectToParent(br)))
+ || (mode == Qt::ContainsItemBoundingRect && path.contains(item->mapRectToParent(br)))) {
+ items->append(item);
+ keep = true;
+ }
+ } else {
+ // Path contains/intersects item's shape
+ if (QRectF_intersects(pathRect, item->mapRectToParent(br))) {
+ if (itemCollidesWithPath(item, item->mapFromParent(path), mode)) {
+ items->append(item);
+ keep = true;
+ }
+ }
}
}
+
+ if ((keep || !(item->flags() & QGraphicsItem::ItemClipsChildrenToShape)) && !item->d_ptr->children.isEmpty()) {
+ // Recurse into children that clip children.
+ childItems_helper(items, item, item->mapFromParent(path), mode);
+ }
}
}
@@ -2140,12 +2289,7 @@ void QGraphicsScene::render(QPainter *painter, const QRectF &target, const QRect
// Calculate a simple level-of-detail metric.
// ### almost identical code in QGraphicsView::paintEvent()
// and QGraphicsView::render() - consider refactoring
- QTransform itemToDeviceTransform;
- if (item->d_ptr->itemIsUntransformable()) {
- itemToDeviceTransform = item->deviceTransform(painterTransform);
- } else {
- itemToDeviceTransform = item->sceneTransform() * painterTransform;
- }
+ QTransform itemToDeviceTransform = item->deviceTransform(painterTransform);
option.levelOfDetail = qSqrt(itemToDeviceTransform.map(v1).length() * itemToDeviceTransform.map(v2).length());
option.matrix = itemToDeviceTransform.toAffine(); //### discards perspective
@@ -2326,17 +2470,8 @@ QList<QGraphicsItem *> QGraphicsScene::items() const
*/
QList<QGraphicsItem *> QGraphicsScene::items(const QPointF &pos) const
{
- QList<QGraphicsItem *> itemsAtPoint;
-
- // Find all items within a 1x1 rect area starting at pos. This can be
- // inefficient for scenes that use small coordinates (like unity
- // coordinates), or for detailed graphs. ### The index should support
- // fetching items at a pos to avoid this limitation.
- foreach (QGraphicsItem *item, items(QRectF(pos, QSizeF(1, 1)), Qt::IntersectsItemBoundingRect)) {
- if (item->contains(item->mapFromScene(pos)))
- itemsAtPoint << item;
- }
- return itemsAtPoint;
+ Q_D(const QGraphicsScene);
+ return d->items_helper(pos);
}
@@ -2723,8 +2858,9 @@ void QGraphicsScene::addItem(QGraphicsItem *item)
// Notify the item that its scene is changing, and allow the item to
// react.
- QGraphicsScene *targetScene = qVariantValue<QGraphicsScene *>(item->itemChange(QGraphicsItem::ItemSceneChange,
- qVariantFromValue<QGraphicsScene *>(this)));
+ const QVariant newSceneVariant(item->itemChange(QGraphicsItem::ItemSceneChange,
+ qVariantFromValue<QGraphicsScene *>(this)));
+ QGraphicsScene *targetScene = qVariantValue<QGraphicsScene *>(newSceneVariant);
if (targetScene != this) {
if (targetScene && item->scene() != targetScene)
targetScene->addItem(item);
@@ -2818,7 +2954,7 @@ void QGraphicsScene::addItem(QGraphicsItem *item)
emit selectionChanged();
// Deliver post-change notification
- item->itemChange(QGraphicsItem::ItemSceneHasChanged, qVariantFromValue<QGraphicsScene *>(this));
+ item->itemChange(QGraphicsItem::ItemSceneHasChanged, newSceneVariant);
}
/*!
@@ -3082,8 +3218,9 @@ void QGraphicsScene::removeItem(QGraphicsItem *item)
// Notify the item that it's scene is changing to 0, allowing the item to
// react.
- QGraphicsScene *targetScene = qVariantValue<QGraphicsScene *>(item->itemChange(QGraphicsItem::ItemSceneChange,
- qVariantFromValue<QGraphicsScene *>(0)));
+ const QVariant newSceneVariant(item->itemChange(QGraphicsItem::ItemSceneChange,
+ qVariantFromValue<QGraphicsScene *>(0)));
+ QGraphicsScene *targetScene = qVariantValue<QGraphicsScene *>(newSceneVariant);
if (targetScene != 0 && targetScene != this) {
targetScene->addItem(item);
return;
@@ -3154,6 +3291,16 @@ void QGraphicsScene::removeItem(QGraphicsItem *item)
d->unpolishedItems.removeAll(item);
d->dirtyItems.removeAll(item);
+ //We remove all references of item from the sceneEventFilter arrays
+ QMultiMap<QGraphicsItem*, QGraphicsItem*>::iterator iterator = d->sceneEventFilters.begin();
+ while (iterator != d->sceneEventFilters.end()) {
+ if (iterator.value() == item || iterator.key() == item)
+ iterator = d->sceneEventFilters.erase(iterator);
+ else
+ ++iterator;
+ }
+
+
//Ensure dirty flag have the correct default value so the next time it will be added it will receive updates
item->d_func()->dirty = 0;
item->d_func()->dirtyChildren = 0;
@@ -3181,7 +3328,7 @@ void QGraphicsScene::removeItem(QGraphicsItem *item)
emit selectionChanged();
// Deliver post-change notification
- item->itemChange(QGraphicsItem::ItemSceneHasChanged, qVariantFromValue<QGraphicsScene *>(0));
+ item->itemChange(QGraphicsItem::ItemSceneHasChanged, newSceneVariant);
}
/*!
@@ -3455,7 +3602,7 @@ QVariant QGraphicsScene::inputMethodQuery(Qt::InputMethodQuery query) const
void QGraphicsScene::update(const QRectF &rect)
{
Q_D(QGraphicsScene);
- if (d->updateAll)
+ if (d->updateAll || (rect.isEmpty() && !rect.isNull()))
return;
// Check if anyone's connected; if not, we can send updates directly to
@@ -4564,7 +4711,9 @@ void QGraphicsScenePrivate::drawItemHelper(QGraphicsItem *item, QPainter *painte
// Item's (local) bounding rect
QRectF brect = item->boundingRect();
- if (_q_adjustedRect(brect).isEmpty())
+ QRectF adjustedBrect(brect);
+ _q_adjustRect(&adjustedBrect);
+ if (adjustedBrect.isEmpty())
return;
// Fetch the off-screen transparent buffer and exposed area info.
@@ -4595,16 +4744,17 @@ void QGraphicsScenePrivate::drawItemHelper(QGraphicsItem *item, QPainter *painte
if (cacheMode == QGraphicsItem::ItemCoordinateCache) {
QSize pixmapSize;
bool fixedCacheSize = false;
+ QRectF brectAligned = brect.toAlignedRect();
if ((fixedCacheSize = itemCache->fixedSize.isValid())) {
pixmapSize = itemCache->fixedSize;
} else {
- pixmapSize = brect.toAlignedRect().size();
+ pixmapSize = brectAligned.size().toSize();
}
// Create or recreate the pixmap.
int adjust = itemCache->fixedSize.isValid() ? 0 : 2;
QSize adjustSize(adjust*2, adjust*2);
- QRectF br = brect.adjusted(-adjust, -adjust, adjust, adjust);
+ QRectF br = brectAligned.adjusted(-adjust, -adjust, adjust, adjust);
if (pix.isNull() || (!fixedCacheSize && (pixmapSize + adjustSize) != pix.size())) {
pix = QPixmap(pixmapSize + adjustSize);
itemCache->exposed.clear();
@@ -4614,9 +4764,11 @@ void QGraphicsScenePrivate::drawItemHelper(QGraphicsItem *item, QPainter *painte
// Redraw any newly exposed areas.
if (itemCache->allExposed || !itemCache->exposed.isEmpty()) {
// Fit the item's bounding rect into the pixmap's coordinates.
- const QPointF scale(pixmapSize.width() / brect.width(), pixmapSize.height() / brect.height());
QTransform itemToPixmap;
- itemToPixmap.scale(scale.x(), scale.y());
+ if (fixedCacheSize) {
+ const QPointF scale(pixmapSize.width() / brect.width(), pixmapSize.height() / brect.height());
+ itemToPixmap.scale(scale.x(), scale.y());
+ }
itemToPixmap.translate(-br.x(), -br.y());
// Generate the item's exposedRect and map its list of expose
@@ -4769,8 +4921,9 @@ void QGraphicsScenePrivate::drawItemHelper(QGraphicsItem *item, QPainter *painte
if (itemCache->allExposed || !itemCache->exposed.isEmpty() || !scrollExposure.isEmpty()) {
// Construct an item-to-pixmap transform.
QPointF p = deviceRect.topLeft();
- QTransform itemToPixmap = QTransform::fromTranslate(-p.x(), -p.y());
- itemToPixmap = painter->worldTransform() * itemToPixmap;
+ QTransform itemToPixmap = painter->worldTransform();
+ if (!p.isNull())
+ itemToPixmap *= QTransform::fromTranslate(-p.x(), -p.y());
// Map the item's logical expose to pixmap coordinates.
QRegion pixmapExposed = scrollExposure;
@@ -4920,11 +5073,7 @@ void QGraphicsScene::drawItems(QPainter *painter,
// optimization, but it's hit very rarely.
for (int i = clippers.size() - 1; i >= 0; --i) {
QGraphicsItem *clipper = clippers[i];
- if (clipper->d_ptr->itemIsUntransformable()) {
- painter->setWorldTransform(clipper->deviceTransform(viewTransform), false);
- } else {
- painter->setWorldTransform(clipper->sceneTransform() * viewTransform, false);
- }
+ painter->setWorldTransform(clipper->deviceTransform(viewTransform), false);
childClippers.append(clipper);
painter->save();
@@ -4935,12 +5084,8 @@ void QGraphicsScene::drawItems(QPainter *painter,
}
// Set up the painter transform
- if (item->d_ptr->itemIsUntransformable()) {
- painter->setWorldTransform(item->deviceTransform(viewTransform), false);
- } else {
- painter->setWorldTransform(item->sceneTransform() * viewTransform, false);
- }
-
+ painter->setWorldTransform(item->deviceTransform(viewTransform), false);
+
// Save painter
bool saveState = (d->painterStateProtection || (item->flags() & QGraphicsItem::ItemClipsToShape));
if (saveState)
@@ -5104,9 +5249,12 @@ void QGraphicsScene::itemUpdated(QGraphicsItem *item, const QRectF &rect)
update(item->sceneBoundingRect());
} else {
// ### Remove _q_adjustedRects().
- QRectF boundingRect = _q_adjustedRect(item->boundingRect());
- if (!rect.isNull())
- boundingRect &= _q_adjustedRect(rect);
+ QRectF boundingRect(adjustedItemBoundingRect(item));
+ if (!rect.isNull()) {
+ QRectF adjustedRect(rect);
+ _q_adjustRect(&adjustedRect);
+ boundingRect &= adjustedRect;
+ }
// Update each view directly.
for (int i = 0; i < d->views.size(); ++i)
@@ -5118,6 +5266,9 @@ void QGraphicsScene::itemUpdated(QGraphicsItem *item, const QRectF &rect)
d->resetDirtyItemsLater();
}
+ if (!item->isVisible())
+ return; // Hiding an item won't effect the largestUntransformableItem/sceneRect.
+
// Update d->largestUntransformableItem by mapping this item's bounding
// rect back to the topmost untransformable item's untransformed
// coordinate system (which sort of equals the 1:1 coordinate system of an
@@ -5133,7 +5284,9 @@ void QGraphicsScene::itemUpdated(QGraphicsItem *item, const QRectF &rect)
// defined scene rect.
if (!d->hasSceneRect) {
QRectF oldGrowingItemsBoundingRect = d->growingItemsBoundingRect;
- d->growingItemsBoundingRect |= _q_adjustedRect(item->sceneBoundingRect());
+ QRectF adjustedItemSceneBoundingRect(item->sceneBoundingRect());
+ _q_adjustRect(&adjustedItemSceneBoundingRect);
+ d->growingItemsBoundingRect |= adjustedItemSceneBoundingRect;
if (d->growingItemsBoundingRect != oldGrowingItemsBoundingRect)
emit sceneRectChanged(d->growingItemsBoundingRect);
}
diff --git a/src/gui/graphicsview/qgraphicsscene_p.h b/src/gui/graphicsview/qgraphicsscene_p.h
index 9c165d1..befbbd8 100644
--- a/src/gui/graphicsview/qgraphicsscene_p.h
+++ b/src/gui/graphicsview/qgraphicsscene_p.h
@@ -197,6 +197,7 @@ public:
void mousePressEventHandler(QGraphicsSceneMouseEvent *mouseEvent);
QGraphicsWidget *windowForItem(const QGraphicsItem *item) const;
+ QList<QGraphicsItem *> items_helper(const QPointF &pos) const;
QList<QGraphicsItem *> items_helper(const QRectF &rect,
Qt::ItemSelectionMode mode,
Qt::SortOrder order) const;
@@ -208,6 +209,9 @@ public:
Qt::SortOrder order) const;
void childItems_helper(QList<QGraphicsItem *> *items,
const QGraphicsItem *parent,
+ const QPointF &pos) const;
+ void childItems_helper(QList<QGraphicsItem *> *items,
+ const QGraphicsItem *parent,
const QRectF &rect,
Qt::ItemSelectionMode mode) const;
void childItems_helper(QList<QGraphicsItem *> *items,
diff --git a/src/gui/graphicsview/qgraphicssceneevent.cpp b/src/gui/graphicsview/qgraphicssceneevent.cpp
index b819c2c..0ffd2b1 100644
--- a/src/gui/graphicsview/qgraphicssceneevent.cpp
+++ b/src/gui/graphicsview/qgraphicssceneevent.cpp
@@ -844,7 +844,7 @@ QGraphicsSceneContextMenuEvent::~QGraphicsSceneContextMenuEvent()
/*!
Returns the position of the mouse cursor in item coordinates at the moment
- the the context menu was requested.
+ the context menu was requested.
\sa scenePos(), screenPos()
*/
@@ -992,7 +992,7 @@ QGraphicsSceneHoverEvent::~QGraphicsSceneHoverEvent()
/*!
Returns the position of the mouse cursor in item coordinates at the moment
- the the hover event was sent.
+ the hover event was sent.
\sa scenePos(), screenPos()
*/
@@ -1017,7 +1017,7 @@ void QGraphicsSceneHoverEvent::setPos(const QPointF &pos)
/*!
Returns the position of the mouse cursor in scene coordinates at the
- moment the the hover event was sent.
+ moment the hover event was sent.
\sa pos(), screenPos()
*/
@@ -1042,7 +1042,7 @@ void QGraphicsSceneHoverEvent::setScenePos(const QPointF &pos)
/*!
Returns the position of the mouse cursor in screen coordinates at the
- moment the the hover event was sent.
+ moment the hover event was sent.
\sa pos(), scenePos()
*/
@@ -1138,7 +1138,7 @@ void QGraphicsSceneHoverEvent::setLastScreenPos(const QPoint &pos)
/*!
\since 4.4
- Returns the keyboard modifiers at the moment the the hover event was sent.
+ Returns the keyboard modifiers at the moment the hover event was sent.
*/
Qt::KeyboardModifiers QGraphicsSceneHoverEvent::modifiers() const
{
@@ -1184,7 +1184,7 @@ QGraphicsSceneHelpEvent::~QGraphicsSceneHelpEvent()
/*!
Returns the position of the mouse cursor in scene coordinates at the
- moment the the help event was sent.
+ moment the help event was sent.
\sa screenPos()
*/
@@ -1209,7 +1209,7 @@ void QGraphicsSceneHelpEvent::setScenePos(const QPointF &pos)
/*!
Returns the position of the mouse cursor in screen coordinates at the
- moment the the help event was sent.
+ moment the help event was sent.
\sa scenePos()
*/
diff --git a/src/gui/graphicsview/qgraphicsview.cpp b/src/gui/graphicsview/qgraphicsview.cpp
index 2f7f57a..a795fb4 100644
--- a/src/gui/graphicsview/qgraphicsview.cpp
+++ b/src/gui/graphicsview/qgraphicsview.cpp
@@ -790,6 +790,19 @@ QRegion QGraphicsViewPrivate::mapToViewRegion(const QGraphicsItem *item, const Q
return item->boundingRegion(itv) & itv.mapRect(rect).toAlignedRect();
}
+// QRectF::intersects() returns false always if either the source or target
+// rectangle's width or height are 0. This works around that problem.
+static inline QRectF adjustedItemBoundingRect(const QGraphicsItem *item)
+{
+ Q_ASSERT(item);
+ QRectF boundingRect(item->boundingRect());
+ if (!boundingRect.width())
+ boundingRect.adjust(-0.00001, 0, 0.00001, 0);
+ if (!boundingRect.height())
+ boundingRect.adjust(0, -0.00001, 0, 0.00001);
+ return boundingRect;
+}
+
/*!
\internal
*/
@@ -801,38 +814,37 @@ void QGraphicsViewPrivate::itemUpdated(QGraphicsItem *item, const QRectF &rect)
updateLater();
QRectF updateRect = rect;
- if (item->isClipped()) {
+ if ((item->d_ptr->flags & QGraphicsItem::ItemClipsChildrenToShape) || item->d_ptr->children.isEmpty()) {
+ updateRect &= adjustedItemBoundingRect(item);
+ if (updateRect.isEmpty())
+ return;
+ }
+
+ QGraphicsItem *clipItem = item;
+ if (item->d_ptr->ancestorFlags & QGraphicsItemPrivate::AncestorClipsChildren) {
// Minimize unnecessary redraw.
- QGraphicsItem *p = item;
- while ((p = p->d_ptr->parent)) {
- if (p->flags() & QGraphicsItem::ItemClipsChildrenToShape) {
- updateRect &= p->itemTransform(item).mapRect(p->boundingRect());
- if (updateRect.isNull())
+ QGraphicsItem *parent = item;
+ while ((parent = parent->d_ptr->parent)) {
+ if (parent->d_ptr->flags & QGraphicsItem::ItemClipsChildrenToShape) {
+ // Map update rect to the current parent and itersect with its bounding rect.
+ updateRect = clipItem->itemTransform(parent).mapRect(updateRect)
+ & adjustedItemBoundingRect(parent);
+ if (updateRect.isEmpty())
return;
+ clipItem = parent;
}
- if (!(p->d_ptr->ancestorFlags & QGraphicsItemPrivate::AncestorClipsChildren))
+ if (!(parent->d_ptr->ancestorFlags & QGraphicsItemPrivate::AncestorClipsChildren))
break;
}
-
- if (updateRect.isNull())
- return;
}
- // Map the rect to view coordinates.
- QRect vr = viewport->rect();
-
- if (!item->d_ptr->hasBoundingRegionGranularity) {
- QRect r = mapToViewRect(item, updateRect) & vr;
- if (r.isNull())
- return;
- this->updateRect(r);
- } else {
- QRegion r = mapToViewRegion(item, updateRect) & vr;
- if (r.isEmpty())
- return;
- updateRegion(r);
- }
+ // Map update rect from clipItem coordinates to view coordinates.
+ Q_ASSERT(clipItem);
+ if (!item->d_ptr->hasBoundingRegionGranularity)
+ this->updateRect(mapToViewRect(clipItem, updateRect) & viewport->rect());
+ else
+ updateRegion(mapToViewRegion(clipItem, updateRect) & viewport->rect());
}
void QGraphicsViewPrivate::updateLater()
@@ -855,16 +867,19 @@ void QGraphicsViewPrivate::_q_updateLaterSlot()
const QList<QGraphicsItem *> &dirtyItems = scene->d_func()->dirtyItems;
for (int i = 0; i < dirtyItems.size(); ++i) {
const QGraphicsItem *item = dirtyItems.at(i);
+ if (item->d_ptr->discardUpdateRequest(/*ignoreClipping=*/false,
+ /*ignoreVisibleBit=*/false,
+ /*ignoreDirtyBit=*/true)) {
+ continue;
+ }
QTransform x = item->sceneTransform() * viewTransform;
- QRect viewRect = x.mapRect(item->boundingRect()).toAlignedRect() & vr;
- if (!viewRect.isNull())
- updateRect(viewRect);
+ updateRect(x.mapRect(item->boundingRect()).toAlignedRect() & vr);
}
dirtyRectCount += dirtyRects.size();
bool noUpdate = !fullUpdatePending && viewportUpdateMode == QGraphicsView::FullViewportUpdate;
- if ((dirtyRectCount > 0 || !dirtyBoundingRect.isNull()) && !fullUpdatePending && !noUpdate) {
+ if ((dirtyRectCount > 0 || !dirtyBoundingRect.isEmpty()) && !fullUpdatePending && !noUpdate) {
if (viewportUpdateMode == QGraphicsView::BoundingRectViewportUpdate
|| (viewportUpdateMode == QGraphicsView::SmartViewportUpdate
&& dirtyRectCount >= QGRAPHICSVIEW_REGION_RECT_THRESHOLD)) {
@@ -921,6 +936,9 @@ void QGraphicsViewPrivate::updateAll()
void QGraphicsViewPrivate::updateRegion(const QRegion &r)
{
+ if (r.isEmpty())
+ return;
+
Q_Q(QGraphicsView);
// Rect intersects viewport - update everything?
@@ -969,6 +987,9 @@ void QGraphicsViewPrivate::updateRegion(const QRegion &r)
void QGraphicsViewPrivate::updateRect(const QRect &r)
{
+ if (r.isEmpty())
+ return;
+
Q_Q(QGraphicsView);
// Rect intersects viewport - update everything?
@@ -1025,103 +1046,75 @@ void QGraphicsViewPrivate::freeStyleOptionsArray(QStyleOptionGraphicsItem *array
extern QPainterPath qt_regionToPath(const QRegion &region);
-QList<QGraphicsItem *> QGraphicsViewPrivate::findItems(const QRegion &exposedRegion,
- const QTransform &worldTransform,
- bool *allItems) const
+/*!
+ ### Adjustments in findItems: mapToScene(QRect) forces us to adjust the
+ input rectangle by (0, 0, 1, 1), because it uses QRect::bottomRight()
+ (etc) when mapping the rectangle to a polygon (which is _wrong_). In
+ addition, as QGraphicsItem::boundingRect() is defined in logical space,
+ but the default pen for QPainter is cosmetic with a width of 0, QPainter
+ is at risk of painting 1 pixel outside the bounding rect. Therefore we
+ must search for items with an adjustment of (-1, -1, 1, 1).
+*/
+QList<QGraphicsItem *> QGraphicsViewPrivate::findItems(const QRegion &exposedRegion, bool *allItems) const
{
Q_Q(const QGraphicsView);
- QList<QGraphicsItem *> itemList;
- QSet<QGraphicsItem *> tmp;
- bool simpleTransform = worldTransform.type() <= QTransform::TxScale;
-
- QPainterPath path = qt_regionToPath(exposedRegion);
- *allItems = path.contains(q->mapFromScene(scene->d_func()->growingItemsBoundingRect).boundingRect());
- QList<QRectF> exposedRects;
- QList<QPolygonF> exposedPolys;
-
- // Transform the exposed viewport rects to scene rects or polygons
- foreach (const QRect &rect, exposedRegion.rects()) {
- QPolygonF exposedPoly = q->mapToScene(rect.adjusted(-1, -1, 1, 1));
- QRectF exposedRect = exposedPoly.boundingRect();
- if (!simpleTransform)
- exposedPolys << exposedPoly;
- exposedRects << exposedRect;
- }
-
- // Find which items need to be drawn.
- if (*allItems) {
+
+ // Step 1) If all items are contained within the expose region, then
+ // return a list of all visible items.
+ const QRectF exposedRegionSceneBounds = q->mapToScene(exposedRegion.boundingRect().adjusted(-1, -1, 2, 2))
+ .boundingRect();
+ if (exposedRegionSceneBounds.contains(scene->d_func()->growingItemsBoundingRect)) {
+ Q_ASSERT(allItems);
+ *allItems = true;
+
// All items are guaranteed within the exposed region, don't bother using the index.
- foreach (QGraphicsItem *item, scene->items()) {
+ QList<QGraphicsItem *> itemList(scene->items());
+ int i = 0;
+ while (i < itemList.size()) {
+ const QGraphicsItem *item = itemList.at(i);
// But we only want to include items that are visible
- if (item->isVisible())
- itemList << item;
- }
- } else if (simpleTransform) {
- // Simple rect lookups will do.
- if (exposedRects.size() > 1) {
- foreach (const QRectF &rect, exposedRects) {
- foreach (QGraphicsItem *item, scene->d_func()->items_helper(rect, Qt::IntersectsItemBoundingRect, Qt::SortOrder(-1) /* don't sort */)) {
- if (!tmp.contains(item)) {
- tmp << item;
- itemList << item;
- }
- }
- }
- } else {
- itemList += scene->d_func()->items_helper(exposedRects[0], Qt::IntersectsItemBoundingRect, Qt::SortOrder(-1) /* don't sort */);
- }
- } else {
- // Polygon lookup is necessary.
- if (exposedRects.size() > 1) {
- foreach (const QPolygonF &poly, exposedPolys) {
- foreach (QGraphicsItem *item, scene->d_func()->items_helper(poly, Qt::IntersectsItemBoundingRect, Qt::SortOrder(-1) /* don't sort */)) {
- if (!tmp.contains(item)) {
- tmp << item;
- itemList << item;
- }
- }
- }
- } else {
- itemList += scene->d_func()->items_helper(exposedPolys[0], Qt::IntersectsItemBoundingRect, Qt::SortOrder(-1) /* don't sort */);
+ // The following check is basically the same as item->d_ptr->isInvisible(), except
+ // that we don't check whether the item clips children to shape or propagates its
+ // opacity (we loop through all items, so those checks are wrong in this context).
+ if (!item->isVisible() || item->d_ptr->isClippedAway() || item->d_ptr->isFullyTransparent())
+ itemList.removeAt(i);
+ else
+ ++i;
}
+
+ // Sort the items.
+ QGraphicsScenePrivate::sortItems(&itemList, Qt::DescendingOrder, scene->d_func()->sortCacheEnabled);
+ return itemList;
}
- // Check for items that ignore inherited transformations, and add them if
- // necessary.
- QRectF untr = scene->d_func()->largestUntransformableItem;
- if (!*allItems && !untr.isNull()) {
- // Map the largest untransformable item subtree boundingrect from view
- // to scene coordinates, and use this to expand all exposed rects in
- // search for untransformable items.
- QRectF ltri = matrix.inverted().mapRect(untr);
- ltri.adjust(-untr.width(), -untr.height(), untr.width(), untr.height());
-
- foreach (const QRect &rect, exposedRegion.rects()) {
- QRectF exposed = q->mapToScene(rect.adjusted(-1, -1, 1, 1)).boundingRect();
- exposed.adjust(-ltri.width(), -ltri.height(), ltri.width(), ltri.height());
-
- foreach (QGraphicsItem *item, scene->d_func()->estimateItemsInRect(exposed)) {
- if (item->d_ptr->itemIsUntransformable()) {
- if (!tmp.contains(item)) {
- QPainterPath rectPath;
- rectPath.addRect(rect);
- QPainterPath path = item->deviceTransform(q->viewportTransform()).inverted().map(rectPath);
- if (item->collidesWithPath(path, Qt::IntersectsItemBoundingRect)) {
- itemList << item;
- tmp << item;
- }
- }
- }
- }
- }
+ // Step 2) If the expose region is a simple rect and the view is only
+ // translated or scaled, search for items using
+ // QGraphicsScene::items(QRectF).
+ bool simpleRectLookup = (scene->d_func()->largestUntransformableItem.isNull()
+ && exposedRegion.numRects() == 1 && matrix.type() <= QTransform::TxScale);
+ if (simpleRectLookup) {
+ return scene->d_func()->items_helper(exposedRegionSceneBounds,
+ Qt::IntersectsItemBoundingRect,
+ Qt::DescendingOrder);
}
- tmp.clear();
- // Sort the items.
- QGraphicsScenePrivate::sortItems(&itemList, Qt::DescendingOrder,
- scene->d_func()->sortCacheEnabled);
+ // If the region is complex or the view has a complex transform, adjust
+ // the expose region, convert it to a path, and then search for items
+ // using QGraphicsScene::items(QPainterPath);
+ QRegion adjustedRegion;
+ foreach (const QRect &r, exposedRegion.rects())
+ adjustedRegion += r.adjusted(-1, -1, 1, 1);
+
+ const QPainterPath exposedPath(qt_regionToPath(adjustedRegion));
+ if (scene->d_func()->largestUntransformableItem.isNull()) {
+ const QPainterPath exposedScenePath(q->mapToScene(exposedPath));
+ return scene->d_func()->items_helper(exposedScenePath,
+ Qt::IntersectsItemBoundingRect,
+ Qt::DescendingOrder);
+ }
- return itemList;
+ // NB! Path must be in viewport coordinates.
+ return itemsInArea(exposedPath, Qt::IntersectsItemBoundingRect, Qt::DescendingOrder);
}
void QGraphicsViewPrivate::generateStyleOptions(const QList<QGraphicsItem *> &itemList,
@@ -1160,11 +1153,7 @@ void QGraphicsViewPrivate::generateStyleOptions(const QList<QGraphicsItem *> &it
// Calculate a simple level-of-detail metric.
// ### almost identical code in QGraphicsScene::render()
// and QGraphicsView::render() - consider refactoring
- if (item->d_ptr->itemIsUntransformable()) {
- itemToViewportTransform = item->deviceTransform(worldTransform);
- } else {
- itemToViewportTransform = item->sceneTransform() * worldTransform;
- }
+ itemToViewportTransform = item->deviceTransform(worldTransform);
if (itemToViewportTransform.type() <= QTransform::TxTranslate) {
// Translation and rotation only? The LOD is 1.
@@ -1688,6 +1677,7 @@ void QGraphicsView::setScene(QGraphicsScene *scene)
disconnect(d->scene, SIGNAL(sceneRectChanged(QRectF)),
this, SLOT(updateSceneRect(QRectF)));
d->scene->d_func()->views.removeAll(this);
+ d->connectedToScene = false;
}
// Assign the new scene and update the contents (scrollbars, etc.)).
@@ -2166,12 +2156,7 @@ void QGraphicsView::render(QPainter *painter, const QRectF &target, const QRect
// Calculate a simple level-of-detail metric.
// ### almost identical code in QGraphicsScene::render()
// and QGraphicsView::paintEvent() - consider refactoring
- QTransform itemToViewportTransform;
- if (item->d_ptr->itemIsUntransformable()) {
- itemToViewportTransform = item->deviceTransform(painterMatrix);
- } else {
- itemToViewportTransform = item->sceneTransform() * painterMatrix;
- }
+ QTransform itemToViewportTransform = item->deviceTransform(painterMatrix);
option->levelOfDetail = qSqrt(itemToViewportTransform.map(v1).length() * itemToViewportTransform.map(v2).length());
option->matrix = itemToViewportTransform.toAffine();
@@ -2224,7 +2209,8 @@ QList<QGraphicsItem *> QGraphicsView::items() const
certainly room for improvement.
*/
QList<QGraphicsItem *> QGraphicsViewPrivate::itemsInArea(const QPainterPath &path,
- Qt::ItemSelectionMode mode) const
+ Qt::ItemSelectionMode mode,
+ Qt::SortOrder order) const
{
Q_Q(const QGraphicsView);
@@ -2274,8 +2260,8 @@ QList<QGraphicsItem *> QGraphicsViewPrivate::itemsInArea(const QPainterPath &pat
}
// ### Insertion sort would be faster.
- QGraphicsScenePrivate::sortItems(&result, Qt::AscendingOrder,
- scene->d_func()->sortCacheEnabled);
+ if (order != Qt::SortOrder(-1))
+ QGraphicsScenePrivate::sortItems(&result, order, scene->d_func()->sortCacheEnabled);
return result;
}
@@ -3280,7 +3266,7 @@ void QGraphicsView::mouseMoveEvent(QMouseEvent *event)
}
// Update old rubberband
- if (d->viewportUpdateMode != QGraphicsView::NoViewportUpdate && !d->rubberBandRect.isNull()) {
+ if (d->viewportUpdateMode != QGraphicsView::NoViewportUpdate && !d->rubberBandRect.isEmpty()) {
if (d->viewportUpdateMode != FullViewportUpdate)
viewport()->update(d->rubberBandRegion(viewport(), d->rubberBandRect));
else
@@ -3462,7 +3448,7 @@ void QGraphicsView::paintEvent(QPaintEvent *event)
QPainter painter(viewport());
QTransform original = painter.worldTransform();
#ifndef QT_NO_RUBBERBAND
- if (d->rubberBanding && !d->rubberBandRect.isNull())
+ if (d->rubberBanding && !d->rubberBandRect.isEmpty())
painter.save();
#endif
// Set up render hints
@@ -3481,7 +3467,7 @@ void QGraphicsView::paintEvent(QPaintEvent *event)
// Find all exposed items
bool allItems = false;
- QList<QGraphicsItem *> itemList = d->findItems(exposedRegion, viewTransform, &allItems);
+ QList<QGraphicsItem *> itemList = d->findItems(exposedRegion, &allItems);
#ifdef QGRAPHICSVIEW_DEBUG
int exposedTime = stopWatch.elapsed();
@@ -3557,7 +3543,7 @@ void QGraphicsView::paintEvent(QPaintEvent *event)
#ifndef QT_NO_RUBBERBAND
// Rubberband
- if (d->rubberBanding && !d->rubberBandRect.isNull()) {
+ if (d->rubberBanding && !d->rubberBandRect.isEmpty()) {
painter.restore();
QStyleOptionRubberBand option;
option.initFrom(viewport());
@@ -3631,30 +3617,30 @@ void QGraphicsView::scrollContentsBy(int dx, int dy)
if (isRightToLeft())
dx = -dx;
- if (d->viewportUpdateMode != QGraphicsView::NoViewportUpdate
- && d->viewportUpdateMode != QGraphicsView::FullViewportUpdate) {
- for (int i = 0; i < d->dirtyRects.size(); ++i)
- d->dirtyRects[i].translate(dx, dy);
- for (int i = 0; i < d->dirtyRegions.size(); ++i)
- d->dirtyRegions[i].translate(dx, dy);
- }
-
+ if (d->viewportUpdateMode != QGraphicsView::NoViewportUpdate) {
+ if (d->viewportUpdateMode != QGraphicsView::FullViewportUpdate) {
+ for (int i = 0; i < d->dirtyRects.size(); ++i)
+ d->dirtyRects[i].translate(dx, dy);
+ for (int i = 0; i < d->dirtyRegions.size(); ++i)
+ d->dirtyRegions[i].translate(dx, dy);
+ if (d->accelerateScrolling) {
#ifndef QT_NO_RUBBERBAND
- // Update old rubberband
- if (d->viewportUpdateMode != QGraphicsView::NoViewportUpdate && !d->rubberBandRect.isNull()) {
- if (d->viewportUpdateMode != FullViewportUpdate)
- viewport()->update(d->rubberBandRegion(viewport(), d->rubberBandRect));
- else
- viewport()->update();
- }
+ // Update new and old rubberband regions
+ if (!d->rubberBandRect.isEmpty()) {
+ QRegion rubberBandRegion(d->rubberBandRegion(viewport(), d->rubberBandRect));
+ rubberBandRegion += rubberBandRegion.translated(-dx, -dy);
+ viewport()->update(rubberBandRegion);
+ }
#endif
-
- if (d->viewportUpdateMode != QGraphicsView::NoViewportUpdate){
- if (d->accelerateScrolling && d->viewportUpdateMode != FullViewportUpdate)
- viewport()->scroll(dx, dy);
- else
+ viewport()->scroll(dx, dy);
+ } else {
+ viewport()->update();
+ }
+ } else {
viewport()->update();
+ }
}
+
d->updateLastCenterPoint();
if ((d->cacheMode & CacheBackground)
diff --git a/src/gui/graphicsview/qgraphicsview_p.h b/src/gui/graphicsview/qgraphicsview_p.h
index 2109673..a76279e 100644
--- a/src/gui/graphicsview/qgraphicsview_p.h
+++ b/src/gui/graphicsview/qgraphicsview_p.h
@@ -85,7 +85,8 @@ public:
qint64 verticalScroll() const;
QList<QGraphicsItem *> itemsInArea(const QPainterPath &path,
- Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const;
+ Qt::ItemSelectionMode mode = Qt::IntersectsItemShape,
+ Qt::SortOrder = Qt::AscendingOrder) const;
QPointF mousePressItemPoint;
QPointF mousePressScenePoint;
@@ -172,9 +173,7 @@ public:
void updateRegion(const QRegion &region);
bool updateSceneSlotReimplementedChecked;
- QList<QGraphicsItem *> findItems(const QRegion &exposedRegion,
- const QTransform &worldTransform,
- bool *allItems) const;
+ QList<QGraphicsItem *> findItems(const QRegion &exposedRegion, bool *allItems) const;
void generateStyleOptions(const QList<QGraphicsItem *> &itemList,
QGraphicsItem **itemArray,
diff --git a/src/gui/graphicsview/qgraphicswidget.cpp b/src/gui/graphicsview/qgraphicswidget.cpp
index 64ec0e7..7f02fb9 100644
--- a/src/gui/graphicsview/qgraphicswidget.cpp
+++ b/src/gui/graphicsview/qgraphicswidget.cpp
@@ -366,32 +366,33 @@ void QGraphicsWidget::resize(const QSizeF &size)
void QGraphicsWidget::setGeometry(const QRectF &rect)
{
QGraphicsWidgetPrivate *wd = QGraphicsWidget::d_func();
- const QGraphicsLayoutItemPrivate *d = QGraphicsLayoutItem::d_ptr;
- setAttribute(Qt::WA_Resized);
- QRectF newGeom = rect;
- newGeom.setSize(rect.size().expandedTo(effectiveSizeHint(Qt::MinimumSize))
- .boundedTo(effectiveSizeHint(Qt::MaximumSize)));
- if (newGeom == d->geom)
- return;
-
- // Update and prepare to change the geometry (remove from index).
- if (wd->scene) {
- if (rect.topLeft() != d->geom.topLeft())
- wd->fullUpdateHelper(true);
- else
- update();
- }
- prepareGeometryChange();
-
- // setPos triggers ItemPositionChange, which can adjust position
+ QGraphicsLayoutItemPrivate *d = QGraphicsLayoutItem::d_ptr;
+ QRectF newGeom;
QPointF oldPos = d->geom.topLeft();
- wd->inSetGeometry = 1;
- wd->setPosHelper(newGeom.topLeft(), /* update = */ false);
- wd->inSetGeometry = 0;
- newGeom.moveTopLeft(pos());
-
- if (newGeom == d->geom)
- return;
+ if (!wd->inSetPos) {
+ setAttribute(Qt::WA_Resized);
+ newGeom = rect;
+ newGeom.setSize(rect.size().expandedTo(effectiveSizeHint(Qt::MinimumSize))
+ .boundedTo(effectiveSizeHint(Qt::MaximumSize)));
+ if (newGeom == d->geom)
+ return;
+
+ // setPos triggers ItemPositionChange, which can adjust position
+ wd->inSetGeometry = 1;
+ wd->setPosHelper(newGeom.topLeft());
+ wd->inSetGeometry = 0;
+ newGeom.moveTopLeft(pos());
+
+ if (newGeom == d->geom)
+ return;
+
+ // Update and prepare to change the geometry (remove from index) if the size has changed.
+ if (wd->scene) {
+ if (rect.topLeft() == d->geom.topLeft()) {
+ prepareGeometryChange();
+ }
+ }
+ }
// Update the layout item geometry
bool moved = oldPos != pos();
@@ -401,6 +402,11 @@ void QGraphicsWidget::setGeometry(const QRectF &rect)
event.setOldPos(oldPos);
event.setNewPos(pos());
QApplication::sendEvent(this, &event);
+ if (wd->inSetPos) {
+ //set the new pos
+ d->geom.moveTopLeft(pos());
+ return;
+ }
}
QSizeF oldSize = size();
QGraphicsLayoutItem::setGeometry(newGeom);
@@ -1016,9 +1022,11 @@ QVariant QGraphicsWidget::itemChange(GraphicsItemChange change, const QVariant &
break;
case ItemPositionHasChanged:
if (!d->inSetGeometry) {
+ d->inSetPos = 1;
// Ensure setGeometry is called (avoid recursion when setPos is
// called from within setGeometry).
setGeometry(QRectF(pos(), size()));
+ d->inSetPos = 0 ;
}
break;
case ItemParentChange: {
diff --git a/src/gui/graphicsview/qgraphicswidget_p.h b/src/gui/graphicsview/qgraphicswidget_p.h
index 455a129..53eaa31 100644
--- a/src/gui/graphicsview/qgraphicswidget_p.h
+++ b/src/gui/graphicsview/qgraphicswidget_p.h
@@ -86,6 +86,7 @@ public:
inheritedFontResolveMask(0),
inSetGeometry(0),
polished(0),
+ inSetPos(0),
focusPolicy(Qt::NoFocus),
focusNext(0),
focusPrev(0),
@@ -195,6 +196,7 @@ public:
quint32 attributes : 10;
quint32 inSetGeometry : 1;
quint32 polished: 1;
+ quint32 inSetPos : 1;
// Focus
Qt::FocusPolicy focusPolicy;
diff --git a/src/gui/image/qicon.cpp b/src/gui/image/qicon.cpp
index 3c71f15..a880a13 100644
--- a/src/gui/image/qicon.cpp
+++ b/src/gui/image/qicon.cpp
@@ -854,6 +854,9 @@ void QIcon::addPixmap(const QPixmap &pixmap, Mode mode, State state)
QImageWriter::supportedImageFormats() functions to retrieve a
complete list of the supported file formats.
+ Note: When you add a non-empty filename to a QIcon, the icon becomes
+ non-null, even if the file doesn't exist or points to a corrupt file.
+
\sa addPixmap()
*/
void QIcon::addFile(const QString &fileName, const QSize &size, Mode mode, State state)
@@ -919,7 +922,7 @@ QList<QSize> QIcon::availableSizes(Mode mode, State state) const
\relates QIcon
\since 4.2
- Writes the given \a icon to the the given \a stream as a PNG
+ Writes the given \a icon to the given \a stream as a PNG
image. If the icon contains more than one image, all images will
be written to the stream. Note that writing the stream to a file
will not produce a valid image file.
diff --git a/src/gui/image/qimage.cpp b/src/gui/image/qimage.cpp
index dc236e4..70d4e2c 100644
--- a/src/gui/image/qimage.cpp
+++ b/src/gui/image/qimage.cpp
@@ -3607,6 +3607,9 @@ int QImage::pixelIndex(int x, int y) const
If the \a position is not valid, the results are undefined.
+ \warning This function is expensive when used for massive pixel
+ manipulations.
+
\sa setPixel(), valid(), {QImage#Pixel Manipulation}{Pixel
Manipulation}
*/
@@ -4993,7 +4996,7 @@ QPoint QImage::offset() const
/*!
\fn void QImage::setOffset(const QPoint& offset)
- Sets the the number of pixels by which the image is intended to be
+ Sets the number of pixels by which the image is intended to be
offset by when positioning relative to other images, to \a offset.
\sa offset(), {QImage#Image Information}{Image Information}
@@ -5581,6 +5584,8 @@ bool QImage::isDetached() const
Use one of the composition mods in QPainter::CompositionMode instead.
+ \warning This function is expensive.
+
\sa alphaChannel(), {QImage#Image Transformations}{Image
Transformations}, {QImage#Image Formats}{Image Formats}
*/
@@ -5663,6 +5668,11 @@ void QImage::setAlphaChannel(const QImage &alphaChannel)
\l{QPixmap::}{alphaChannel()}, which works in the same way as
this function on QPixmaps.
+ Most usecases for this function can be replaced with QPainter and
+ using composition modes.
+
+ \warning This is an expensive function.
+
\sa setAlphaChannel(), hasAlphaChannel(),
{QPixmap#Pixmap Information}{Pixmap},
{QImage#Image Transformations}{Image Transformations}
diff --git a/src/gui/image/qimagereader.cpp b/src/gui/image/qimagereader.cpp
index 5de39d9..7f36be9 100644
--- a/src/gui/image/qimagereader.cpp
+++ b/src/gui/image/qimagereader.cpp
@@ -1337,6 +1337,7 @@ QByteArray QImageReader::imageFormat(QIODevice *device)
\row \o TIFF \o Tagged Image File Format
\row \o XBM \o X11 Bitmap
\row \o XPM \o X11 Pixmap
+ \row \o SVG \o Scalable Vector Graphics
\endtable
Reading and writing SVG files is supported through Qt's
diff --git a/src/gui/image/qpixmap.cpp b/src/gui/image/qpixmap.cpp
index 8684a1b..0f6b649 100644
--- a/src/gui/image/qpixmap.cpp
+++ b/src/gui/image/qpixmap.cpp
@@ -674,7 +674,7 @@ void QPixmap::resize_helper(const QSize &s)
pixels black. The effect of this function is undefined when the pixmap is
being painted on.
- This is potentially an expensive operation.
+ \warning This is potentially an expensive operation.
\sa mask(), {QPixmap#Pixmap Transformations}{Pixmap Transformations},
QBitmap
@@ -1232,7 +1232,7 @@ bool QPixmap::convertFromImage(const QImage &image, ColorMode mode)
/*!
\relates QPixmap
- Writes the given \a pixmap to the the given \a stream as a PNG
+ Writes the given \a pixmap to the given \a stream as a PNG
image. Note that writing the stream to a file will not produce a
valid image file.
@@ -1380,6 +1380,12 @@ void QPixmap::deref()
If the given \a size is empty, this function returns a null
pixmap.
+
+ In some cases it can be more beneficial to draw the pixmap to a
+ painter with a scale set rather than scaling the pixmap. This is
+ the case when the painter is for instance based on OpenGL or when
+ the scale factor changes rapidly.
+
\sa isNull(), {QPixmap#Pixmap Transformations}{Pixmap
Transformations}
@@ -1751,6 +1757,10 @@ int QPixmap::metric(PaintDeviceMetric metric) const
The effect of this function is undefined when the pixmap is being
painted on.
+ \warning This is potentially an expensive operation. Most usecases
+ for this function are covered by QPainter and compositionModes
+ which will normally execute faster.
+
\sa alphaChannel(), {QPixmap#Pixmap Transformations}{Pixmap
Transformations}
*/
@@ -1793,6 +1803,9 @@ void QPixmap::setAlphaChannel(const QPixmap &alphaChannel)
\image alphachannelimage.png The pixmap and channelImage QPixmaps
+ \warning This is an expensive operation. The alpha channel of the
+ pixmap is extracted dynamically from the pixeldata.
+
\sa setAlphaChannel(), {QPixmap#Pixmap Information}{Pixmap
Information}
*/
@@ -1814,7 +1827,8 @@ QPaintEngine *QPixmap::paintEngine() const
Extracts a bitmap mask from the pixmap's alphachannel.
- This is potentially an expensive operation.
+ \warning This is potentially an expensive operation. The mask of
+ the pixmap is extracted dynamically from the pixeldata.
\sa setMask(), {QPixmap#Pixmap Information}{Pixmap Information}
*/
diff --git a/src/gui/image/qpixmap_win.cpp b/src/gui/image/qpixmap_win.cpp
index 3ec441b..cbe9004 100644
--- a/src/gui/image/qpixmap_win.cpp
+++ b/src/gui/image/qpixmap_win.cpp
@@ -319,6 +319,7 @@ static QImage qt_fromWinHBITMAP(HDC hdc, HBITMAP bitmap, int w, int h)
} else {
qWarning("qt_fromWinHBITMAP(), failed to get bitmap bits");
}
+ qFree(data);
return image;
}
diff --git a/src/gui/image/qpixmap_x11.cpp b/src/gui/image/qpixmap_x11.cpp
index ff7c1b6..38916c7 100644
--- a/src/gui/image/qpixmap_x11.cpp
+++ b/src/gui/image/qpixmap_x11.cpp
@@ -1437,7 +1437,7 @@ QImage QX11PixmapData::toImage() const
// we may have to swap the byte order
if ((QSysInfo::ByteOrder == QSysInfo::LittleEndian && xi->byte_order == MSBFirst)
- || (QSysInfo::ByteOrder == QSysInfo::BigEndian))
+ || (QSysInfo::ByteOrder == QSysInfo::BigEndian && xi->byte_order == LSBFirst))
{
for (int i=0; i < image.height(); i++) {
uint *p = (uint*)image.scanLine(i);
diff --git a/src/gui/image/qpixmapcache.cpp b/src/gui/image/qpixmapcache.cpp
index 4253f8d..458d6b9 100644
--- a/src/gui/image/qpixmapcache.cpp
+++ b/src/gui/image/qpixmapcache.cpp
@@ -187,6 +187,11 @@ bool QPMCache::insert(const QString& key, const QPixmap &pixmap, int cost)
cacheKeys.insert(key, cacheKey);
return true;
}
+ qint64 oldCacheKey = cacheKeys.value(key, -1);
+ //If for the same key we add already a pixmap we should delete it
+ if (oldCacheKey != -1)
+ QCache<qint64, QDetachedPixmap>::remove(oldCacheKey);
+
bool success = QCache<qint64, QDetachedPixmap>::insert(cacheKey, new QDetachedPixmap(pixmap), cost);
if (success) {
cacheKeys.insert(key, cacheKey);
@@ -275,7 +280,8 @@ bool QPixmapCache::insert(const QString &key, const QPixmap &pm)
/*!
Returns the cache limit (in kilobytes).
- The default cache limit is 2048 KB for Embedded, 10240 KB for Desktops.
+ The default cache limit is 2048 KB for Embedded, 10240 KB for
+ Desktops.
\sa setCacheLimit()
*/
@@ -288,7 +294,8 @@ int QPixmapCache::cacheLimit()
/*!
Sets the cache limit to \a n kilobytes.
- The default setting is 1024 kilobytes.
+ The default setting is 2048 KB for Embedded, 10240 KB for
+ Desktops.
\sa cacheLimit()
*/
diff --git a/src/gui/inputmethod/qwininputcontext_win.cpp b/src/gui/inputmethod/qwininputcontext_win.cpp
index 720f0b8..e3e8aa4 100644
--- a/src/gui/inputmethod/qwininputcontext_win.cpp
+++ b/src/gui/inputmethod/qwininputcontext_win.cpp
@@ -57,15 +57,17 @@
#ifdef Q_IME_DEBUG
#include "qdebug.h"
-#endif
-
-QT_BEGIN_NAMESPACE
+#endif
-extern bool qt_sendSpontaneousEvent(QObject*, QEvent*);
#if defined(Q_OS_WINCE)
extern void qt_wince_show_SIP(bool show); // defined in qguifunctions_wince.cpp
#endif
+QT_BEGIN_NAMESPACE
+
+extern bool qt_sendSpontaneousEvent(QObject*, QEvent*);
+
+
DEFINE_GUID(IID_IActiveIMMApp,
0x08c0e040, 0x62d1, 0x11d1, 0x93, 0x26, 0x0, 0x60, 0xb0, 0x67, 0xb8, 0x6e);
diff --git a/src/gui/itemviews/qabstractitemview.cpp b/src/gui/itemviews/qabstractitemview.cpp
index 7bd6207..7a3d674 100644
--- a/src/gui/itemviews/qabstractitemview.cpp
+++ b/src/gui/itemviews/qabstractitemview.cpp
@@ -88,6 +88,7 @@ QAbstractItemViewPrivate::QAbstractItemViewPrivate()
autoScroll(true),
autoScrollMargin(16),
autoScrollCount(0),
+ shouldScrollToCurrentOnShow(false),
alternatingColors(false),
textElideMode(Qt::ElideRight),
verticalScrollMode(QAbstractItemView::ScrollPerItem),
@@ -1337,7 +1338,7 @@ QSize QAbstractItemView::iconSize() const
/*!
\property QAbstractItemView::textElideMode
- \brief the the position of the "..." in elided text.
+ \brief the position of the "..." in elided text.
The default value for all item views is Qt::ElideRight.
*/
@@ -1380,8 +1381,9 @@ bool QAbstractItemView::event(QEvent *event)
d->executePostedLayout(); //make sure we set the layout properly
break;
case QEvent::Show:
- {
- d->executePostedLayout(); //make sure we set the layout properly
+ d->executePostedLayout(); //make sure we set the layout properly
+ if (d->shouldScrollToCurrentOnShow) {
+ d->shouldScrollToCurrentOnShow = false;
const QModelIndex current = currentIndex();
if (current.isValid() && (d->state == QAbstractItemView::EditingState || d->autoScroll))
scrollTo(current);
@@ -1400,6 +1402,9 @@ bool QAbstractItemView::event(QEvent *event)
case QEvent::FocusOut:
d->checkPersistentEditorFocus();
break;
+ case QEvent::FontChange:
+ d->doDelayedItemsLayout(); // the size of the items will change
+ break;
default:
break;
}
@@ -3160,14 +3165,18 @@ void QAbstractItemView::currentChanged(const QModelIndex &current, const QModelI
d->updateDirtyRegion();
}
}
- if (isVisible() && current.isValid() && !d->autoScrollTimer.isActive()) {
- if (d->autoScroll)
- scrollTo(current);
- d->setDirtyRegion(visualRect(current));
- d->updateDirtyRegion();
- edit(current, CurrentChanged, 0);
- if (current.row() == (d->model->rowCount(d->root) - 1))
- d->_q_fetchMore();
+ if (current.isValid() && !d->autoScrollTimer.isActive()) {
+ if (isVisible()) {
+ if (d->autoScroll)
+ scrollTo(current);
+ d->setDirtyRegion(visualRect(current));
+ d->updateDirtyRegion();
+ edit(current, CurrentChanged, 0);
+ if (current.row() == (d->model->rowCount(d->root) - 1))
+ d->_q_fetchMore();
+ } else {
+ d->shouldScrollToCurrentOnShow = d->autoScroll;
+ }
}
}
diff --git a/src/gui/itemviews/qabstractitemview_p.h b/src/gui/itemviews/qabstractitemview_p.h
index 37fe4a2..16bd1ab 100644
--- a/src/gui/itemviews/qabstractitemview_p.h
+++ b/src/gui/itemviews/qabstractitemview_p.h
@@ -359,6 +359,7 @@ public:
QBasicTimer autoScrollTimer;
int autoScrollMargin;
int autoScrollCount;
+ bool shouldScrollToCurrentOnShow; //used to know if we should scroll to current on show event
bool alternatingColors;
diff --git a/src/gui/itemviews/qheaderview.cpp b/src/gui/itemviews/qheaderview.cpp
index 5bd82d4..dc63b25 100644
--- a/src/gui/itemviews/qheaderview.cpp
+++ b/src/gui/itemviews/qheaderview.cpp
@@ -1388,8 +1388,7 @@ int QHeaderView::defaultSectionSize() const
void QHeaderView::setDefaultSectionSize(int size)
{
Q_D(QHeaderView);
- d->defaultSectionSize = size;
- d->forceInitializing = true;
+ d->setDefaultSectionSize(size);
}
/*!
@@ -1894,9 +1893,6 @@ void QHeaderView::initializeSections()
//make sure we update the hidden sections
if (newCount < oldCount)
d->updateHiddenSections(0, newCount-1);
- } else if (d->forceInitializing) {
- initializeSections(0, newCount - 1);
- d->forceInitializing = false;
}
}
@@ -1952,7 +1948,7 @@ void QHeaderView::initializeSections(int start, int end)
if (!d->sectionHidden.isEmpty())
d->sectionHidden.resize(d->sectionCount);
- if (d->sectionCount > oldCount || d->forceInitializing)
+ if (d->sectionCount > oldCount)
d->createSectionSpan(start, end, (end - start + 1) * d->defaultSectionSize, d->globalResizeMode);
//Q_ASSERT(d->headerLength() == d->length);
@@ -3364,6 +3360,29 @@ void QHeaderViewPrivate::cascadingResize(int visual, int newSize)
viewport->update();
}
+void QHeaderViewPrivate::setDefaultSectionSize(int size)
+{
+ Q_Q(QHeaderView);
+ defaultSectionSize = size;
+ int currentVisualIndex = 0;
+ for (int i = 0; i < sectionSpans.count(); ++i) {
+ QHeaderViewPrivate::SectionSpan &span = sectionSpans[i];
+ if (span.size > 0) {
+ //we resize it if it is not hidden (ie size > 0)
+ const int newSize = span.count * size;
+ if (newSize != span.size) {
+ length += newSize - span.size; //the whole length is changed
+ const int oldSectionSize = span.sectionSize();
+ span.size = span.count * size;
+ for (int i = currentVisualIndex; i < currentVisualIndex + span.count; ++i) {
+ emit q->sectionResized(logicalIndex(i), oldSectionSize, size);
+ }
+ }
+ }
+ currentVisualIndex += span.count;
+ }
+}
+
void QHeaderViewPrivate::resizeSectionSpan(int visualIndex, int oldSize, int newSize)
{
Q_Q(QHeaderView);
diff --git a/src/gui/itemviews/qheaderview_p.h b/src/gui/itemviews/qheaderview_p.h
index fbba69a..2889f08 100644
--- a/src/gui/itemviews/qheaderview_p.h
+++ b/src/gui/itemviews/qheaderview_p.h
@@ -90,7 +90,6 @@ public:
highlightSelected(false),
stretchLastSection(false),
cascadingResizing(false),
- forceInitializing(false),
stretchSections(0),
contentsSections(0),
minimumSectionSize(-1),
@@ -275,7 +274,6 @@ public:
bool highlightSelected;
bool stretchLastSection;
bool cascadingResizing;
- bool forceInitializing;
int stretchSections;
int contentsSections;
int defaultSectionSize;
@@ -310,6 +308,7 @@ public:
void createSectionSpan(int start, int end, int size, QHeaderView::ResizeMode mode);
void removeSectionsFromSpans(int start, int end);
void resizeSectionSpan(int visualIndex, int oldSize, int newSize);
+ void setDefaultSectionSize(int size);
inline int headerSectionCount() const { // for debugging
int count = 0;
diff --git a/src/gui/itemviews/qitemselectionmodel.cpp b/src/gui/itemviews/qitemselectionmodel.cpp
index 1a3ae2d..8baefdf 100644
--- a/src/gui/itemviews/qitemselectionmodel.cpp
+++ b/src/gui/itemviews/qitemselectionmodel.cpp
@@ -1313,11 +1313,11 @@ bool QItemSelectionModel::rowIntersectsSelection(int row, const QModelIndex &par
int left = sel.at(i).left();
int right = sel.at(i).right();
if (top <= row && bottom >= row) {
- Qt::ItemFlags leftFlags = d->model->index(row, left, parent).flags();
- Qt::ItemFlags rightFlags = d->model->index(row, right, parent).flags();
- if ((leftFlags & Qt::ItemIsSelectable) && (leftFlags & Qt::ItemIsEnabled)
- && (rightFlags & Qt::ItemIsSelectable) && (rightFlags & Qt::ItemIsEnabled))
- return true;
+ for (int j = left; j <= right; j++) {
+ const Qt::ItemFlags flags = d->model->index(row, j, parent).flags();
+ if ((flags & Qt::ItemIsSelectable) && (flags & Qt::ItemIsEnabled))
+ return true;
+ }
}
}
@@ -1342,11 +1342,11 @@ bool QItemSelectionModel::columnIntersectsSelection(int column, const QModelInde
int top = sel.at(i).top();
int bottom = sel.at(i).bottom();
if (left <= column && right >= column) {
- Qt::ItemFlags topFlags = d->model->index(top, column, parent).flags();
- Qt::ItemFlags bottomFlags = d->model->index(bottom, column, parent).flags();
- if ((topFlags & Qt::ItemIsSelectable) && (topFlags & Qt::ItemIsEnabled)
- && (bottomFlags & Qt::ItemIsSelectable) && (bottomFlags & Qt::ItemIsEnabled))
- return true;
+ for (int j = top; j <= bottom; j++) {
+ const Qt::ItemFlags flags = d->model->index(j, column, parent).flags();
+ if ((flags & Qt::ItemIsSelectable) && (flags & Qt::ItemIsEnabled))
+ return true;
+ }
}
}
diff --git a/src/gui/itemviews/qlistview.cpp b/src/gui/itemviews/qlistview.cpp
index 07f0a38..48f53a0 100644
--- a/src/gui/itemviews/qlistview.cpp
+++ b/src/gui/itemviews/qlistview.cpp
@@ -1997,14 +1997,15 @@ bool QListViewPrivate::doItemsLayout(int delta)
int first = batchStartRow();
int last = qMin(first + delta - 1, max);
- if (max < 0 || last < first)
- return true; // nothing to do
-
if (first == 0) {
layoutChildren(); // make sure the viewport has the right size
prepareItemsLayout();
}
+ if (max < 0 || last < first) {
+ return true; // nothing to do
+ }
+
QListViewLayoutInfo info;
info.bounds = layoutBounds;
info.grid = gridSize();
diff --git a/src/gui/itemviews/qlistwidget.cpp b/src/gui/itemviews/qlistwidget.cpp
index 7a366d1..bf3b43c 100644
--- a/src/gui/itemviews/qlistwidget.cpp
+++ b/src/gui/itemviews/qlistwidget.cpp
@@ -1158,7 +1158,7 @@ void QListWidgetPrivate::_q_dataChanged(const QModelIndex &topLeft,
/*!
\fn void QListWidget::addItem(QListWidgetItem *item)
- Inserts the \a item at the the end of the list widget.
+ Inserts the \a item at the end of the list widget.
\warning A QListWidgetItem can only be added to a
QListWidget once. Adding the same QListWidgetItem multiple
diff --git a/src/gui/itemviews/qsortfilterproxymodel.cpp b/src/gui/itemviews/qsortfilterproxymodel.cpp
index 10bcb9a..43feda8 100644
--- a/src/gui/itemviews/qsortfilterproxymodel.cpp
+++ b/src/gui/itemviews/qsortfilterproxymodel.cpp
@@ -144,6 +144,7 @@ public:
const QModelIndex &proxy_index) const
{
Q_ASSERT(proxy_index.isValid());
+ Q_ASSERT(proxy_index.model() == q_func());
const void *p = proxy_index.internalPointer();
Q_ASSERT(p);
QMap<QModelIndex, Mapping *>::const_iterator it =
@@ -311,6 +312,10 @@ QModelIndex QSortFilterProxyModelPrivate::proxy_to_source(const QModelIndex &pro
{
if (!proxy_index.isValid())
return QModelIndex(); // for now; we may want to be able to set a root index later
+ if (proxy_index.model() != q_func()) {
+ qWarning() << "QSortFilterProxyModel: index from wrong model passed to mapToSource";
+ return QModelIndex();
+ }
IndexMap::const_iterator it = index_to_iterator(proxy_index);
Mapping *m = it.value();
if ((proxy_index.row() >= m->source_rows.size()) || (proxy_index.column() >= m->source_columns.size()))
@@ -324,6 +329,10 @@ QModelIndex QSortFilterProxyModelPrivate::source_to_proxy(const QModelIndex &sou
{
if (!source_index.isValid())
return QModelIndex(); // for now; we may want to be able to set a root index later
+ if (source_index.model() != model) {
+ qWarning() << "QSortFilterProxyModel: index from wrong model passed to mapFromSource";
+ return QModelIndex();
+ }
QModelIndex source_parent = source_index.parent();
IndexMap::const_iterator it = create_mapping(source_parent);
Mapping *m = it.value();
@@ -1032,9 +1041,21 @@ void QSortFilterProxyModelPrivate::_q_sourceDataChanged(const QModelIndex &sourc
}
}
- if (!source_rows_remove.isEmpty())
+ if (!source_rows_remove.isEmpty()) {
remove_source_items(m->proxy_rows, m->source_rows,
source_rows_remove, source_parent, Qt::Vertical);
+ QSet<int> source_rows_remove_set = source_rows_remove.toList().toSet();
+ QVector<QModelIndex>::iterator it = m->mapped_children.begin();
+ while (it != m->mapped_children.end()) {
+ const QModelIndex source_child_index = *it;
+ if (source_rows_remove_set.contains(source_child_index.row())) {
+ it = m->mapped_children.erase(it);
+ remove_from_mapping(source_child_index);
+ } else {
+ ++it;
+ }
+ }
+ }
if (!source_rows_resort.isEmpty()) {
// Re-sort the rows
@@ -1569,6 +1590,10 @@ bool QSortFilterProxyModel::hasChildren(const QModelIndex &parent) const
return false;
if (!d->model->hasChildren(source_parent))
return false;
+
+ if (d->model->canFetchMore(source_parent))
+ return true; //we assume we might have children that can be fetched
+
QSortFilterProxyModelPrivate::Mapping *m = d->create_mapping(source_parent).value();
return m->source_rows.count() != 0 && m->source_columns.count() != 0;
}
diff --git a/src/gui/itemviews/qtreeview.cpp b/src/gui/itemviews/qtreeview.cpp
index 2aa0c57..62c1277 100644
--- a/src/gui/itemviews/qtreeview.cpp
+++ b/src/gui/itemviews/qtreeview.cpp
@@ -2019,6 +2019,7 @@ int QTreeView::verticalOffset() const
// If we are scrolling per item and have non-uniform row heights,
// finding the vertical offset in pixels is going to be relatively slow.
// ### find a faster way to do this
+ d->executePostedLayout();
int offset = 0;
for (int i = 0; i < d->viewItems.count(); ++i) {
if (i == verticalScrollBar()->value())
@@ -3507,6 +3508,7 @@ void QTreeViewPrivate::updateScrollBars()
int QTreeViewPrivate::itemDecorationAt(const QPoint &pos) const
{
+ const_cast<QTreeView *>(q_func())->executeDelayedItemsLayout();
int x = pos.x();
int column = header->logicalIndexAt(x);
if (column != 0)
diff --git a/src/gui/kernel/qapplication.cpp b/src/gui/kernel/qapplication.cpp
index 09f0f91..4cf0ad7 100644
--- a/src/gui/kernel/qapplication.cpp
+++ b/src/gui/kernel/qapplication.cpp
@@ -832,12 +832,13 @@ QApplication::QApplication(Display *dpy, int &argc, char **argv,
#endif // Q_WS_X11
+extern void qInitDrawhelperAsm();
/*!
+ \fn void QApplicationPrivate::initialize()
+
Initializes the QApplication object, called from the constructors.
*/
-extern void qInitDrawhelperAsm();
-
void QApplicationPrivate::initialize()
{
QWidgetPrivate::mapper = new QWidgetMapper;
@@ -2031,12 +2032,10 @@ QWidget *QApplication::focusWidget()
void QApplicationPrivate::setFocusWidget(QWidget *focus, Qt::FocusReason reason)
{
- if (focus && focus->window()
#ifndef QT_NO_GRAPHICSVIEW
- && focus->window()->graphicsProxyWidget()
-#endif
- )
+ if (focus && focus->window()->graphicsProxyWidget())
return;
+#endif
hidden_focus_widget = 0;
@@ -2099,8 +2098,8 @@ void QApplicationPrivate::setFocusWidget(QWidget *focus, Qt::FocusReason reason)
if (that)
QApplication::sendEvent(that->style(), &in);
}
+ emit qApp->focusChanged(prev, focus_widget);
}
- emit qApp->focusChanged(prev, focus_widget);
}
}
@@ -4997,6 +4996,137 @@ bool QApplicationPrivate::shouldSetFocus(QWidget *w, Qt::FocusPolicy policy)
return true;
}
+/*! \fn QDecoration &QApplication::qwsDecoration()
+ Return the QWSDecoration used for decorating windows.
+
+ \warning This method is non-portable. It is only available in
+ Qt for Embedded Linux.
+
+ \sa QDecoration
+*/
+
+/*!
+ \fn void QApplication::qwsSetDecoration(QDecoration *decoration)
+
+ Sets the QDecoration derived class to use for decorating the
+ windows used by Qt for Embedded Linux to the \a decoration
+ specified.
+
+ This method is non-portable. It is only available in Qt for Embedded Linux.
+
+ \sa QDecoration
+*/
+
+/*! \fn QDecoration* QApplication::qwsSetDecoration(const QString &decoration)
+ \overload
+
+ Requests a QDecoration object for \a decoration from the QDecorationFactory.
+
+ The string must be one of the QDecorationFactory::keys(). Keys are
+ case insensitive.
+
+ A later call to the QApplication constructor will override the
+ requested style when a "-style" option is passed in as a commandline
+ parameter.
+
+ Returns 0 if an unknown \a decoration is passed, otherwise the QStyle object
+ returned is set as the application's GUI style.
+*/
+
+/*!
+ \fn bool QApplication::qwsEventFilter(QWSEvent *event)
+
+ This virtual function is only implemented under Qt for Embedded Linux.
+
+ If you create an application that inherits QApplication and
+ reimplement this function, you get direct access to all QWS (Q
+ Window System) events that the are received from the QWS master
+ process. The events are passed in the \a event parameter.
+
+ Return true if you want to stop the event from being processed.
+ Return false for normal event dispatching. The default
+ implementation returns false.
+*/
+
+/*! \fn void QApplication::qwsSetCustomColors(QRgb *colorTable, int start, int numColors)
+ Set Qt for Embedded Linux custom color table.
+
+ Qt for Embedded Linux on 8-bpp displays allocates a standard 216 color cube.
+ The remaining 40 colors may be used by setting a custom color
+ table in the QWS master process before any clients connect.
+
+ \a colorTable is an array of up to 40 custom colors. \a start is
+ the starting index (0-39) and \a numColors is the number of colors
+ to be set (1-40).
+
+ This method is non-portable. It is available \e only in
+ Qt for Embedded Linux.
+
+ \note The custom colors will not be used by the default screen
+ driver. To make use of the new colors, implement a custom screen
+ driver, or use QDirectPainter.
+*/
+
+/*! \fn int QApplication::qwsProcessEvent(QWSEvent* event)
+ \internal
+*/
+
+/*! \fn int QApplication::x11ClientMessage(QWidget* w, XEvent* event, bool passive_only)
+ \internal
+*/
+
+/*! \fn int QApplication::x11ProcessEvent(XEvent* event)
+ This function does the core processing of individual X
+ \a{event}s, normally by dispatching Qt events to the right
+ destination.
+
+ It returns 1 if the event was consumed by special handling, 0 if
+ the \a event was consumed by normal handling, and -1 if the \a
+ event was for an unrecognized widget.
+
+ \sa x11EventFilter()
+*/
+
+/*!
+ \fn bool QApplication::x11EventFilter(XEvent *event)
+
+ \warning This virtual function is only implemented under X11.
+
+ If you create an application that inherits QApplication and
+ reimplement this function, you get direct access to all X events
+ that the are received from the X server. The events are passed in
+ the \a event parameter.
+
+ Return true if you want to stop the event from being processed.
+ Return false for normal event dispatching. The default
+ implementation returns false.
+
+ It is only the directly addressed messages that are filtered.
+ You must install an event filter directly on the event
+ dispatcher, which is returned by
+ QAbstractEventDispatcher::instance(), to handle system wide
+ messages.
+
+ \sa x11ProcessEvent()
+*/
+
+/*! \fn void QApplication::winFocus(QWidget *widget, bool gotFocus)
+ \internal
+ \since 4.1
+
+ If \a gotFocus is true, \a widget will become the active window.
+ Otherwise the active window is reset to 0.
+*/
+
+/*! \fn void QApplication::winMouseButtonUp()
+ \internal
+ */
+
+/*! \fn void QApplication::syncX()
+ Synchronizes with the X server in the X11 implementation.
+ This normally takes some time. Does nothing on other platforms.
+*/
+
QT_END_NAMESPACE
#include "moc_qapplication.cpp"
diff --git a/src/gui/kernel/qapplication_mac.mm b/src/gui/kernel/qapplication_mac.mm
index 5f8c572..69302ec 100644
--- a/src/gui/kernel/qapplication_mac.mm
+++ b/src/gui/kernel/qapplication_mac.mm
@@ -194,8 +194,8 @@ static bool appNoGrab = false; // mouse/keyboard grabbing
#ifndef QT_MAC_USE_COCOA
static EventHandlerRef app_proc_handler = 0;
static EventHandlerUPP app_proc_handlerUPP = 0;
-static AEEventHandlerUPP app_proc_ae_handlerUPP = NULL;
#endif
+static AEEventHandlerUPP app_proc_ae_handlerUPP = NULL;
static EventHandlerRef tablet_proximity_handler = 0;
static EventHandlerUPP tablet_proximity_UPP = 0;
bool QApplicationPrivate::native_modal_dialog_active;
@@ -951,7 +951,6 @@ void qt_mac_event_release(QWidget *w)
}
}
-#ifndef QT_MAC_USE_COCOA
struct QMacAppleEventTypeSpec {
AEEventClass mac_class;
AEEventID mac_id;
@@ -959,6 +958,7 @@ struct QMacAppleEventTypeSpec {
{ kCoreEventClass, kAEQuitApplication },
{ kCoreEventClass, kAEOpenDocuments }
};
+#ifndef QT_MAC_USE_COCOA
/* watched events */
static EventTypeSpec app_events[] = {
{ kEventClassQt, kEventQtRequestWindowChange },
@@ -1156,13 +1156,13 @@ void qt_init(QApplicationPrivate *priv, int)
qt_init_app_proc_handler();
}
+#endif
if (!app_proc_ae_handlerUPP) {
app_proc_ae_handlerUPP = AEEventHandlerUPP(QApplicationPrivate::globalAppleEventProcessor);
for(uint i = 0; i < sizeof(app_apple_events) / sizeof(QMacAppleEventTypeSpec); ++i)
AEInstallEventHandler(app_apple_events[i].mac_class, app_apple_events[i].mac_id,
app_proc_ae_handlerUPP, SRefCon(qApp), true);
}
-#endif
if (QApplicationPrivate::app_style) {
QEvent ev(QEvent::Style);
@@ -1210,6 +1210,17 @@ void qt_init(QApplicationPrivate *priv, int)
}
+void qt_release_apple_event_handler()
+{
+ if(app_proc_ae_handlerUPP) {
+ for(uint i = 0; i < sizeof(app_apple_events) / sizeof(QMacAppleEventTypeSpec); ++i)
+ AERemoveEventHandler(app_apple_events[i].mac_class, app_apple_events[i].mac_id,
+ app_proc_ae_handlerUPP, true);
+ DisposeAEEventHandlerUPP(app_proc_ae_handlerUPP);
+ app_proc_ae_handlerUPP = 0;
+ }
+}
+
/*****************************************************************************
qt_cleanup() - cleans up when the application is finished
*****************************************************************************/
@@ -1223,15 +1234,8 @@ void qt_cleanup()
DisposeEventHandlerUPP(app_proc_handlerUPP);
app_proc_handlerUPP = 0;
}
- if(app_proc_ae_handlerUPP) {
- for(uint i = 0; i < sizeof(app_apple_events) / sizeof(QMacAppleEventTypeSpec); ++i)
- AERemoveEventHandler(app_apple_events[i].mac_class, app_apple_events[i].mac_id,
- app_proc_ae_handlerUPP, true);
- DisposeAEEventHandlerUPP(app_proc_ae_handlerUPP);
- app_proc_ae_handlerUPP = NULL;
- }
#endif
-
+ qt_release_apple_event_handler();
qt_release_tablet_proximity_handler();
if (tablet_proximity_UPP)
DisposeEventHandlerUPP(tablet_proximity_UPP);
@@ -2367,6 +2371,12 @@ QApplicationPrivate::globalEventProcessor(EventHandlerCallRef er, EventRef event
#endif
}
+// In Carbon this is your one stop for apple events.
+// In Cocoa, it ISN'T. This is the catch-all Apple Event handler that exists
+// for the time between instantiating the NSApplication, but before the
+// NSApplication has installed it's OWN Apple Event handler. When Cocoa has
+// that set up, we remove this. So, if you are debugging problems, you likely
+// want to check out QCocoaApplicationDelegate instead.
OSStatus QApplicationPrivate::globalAppleEventProcessor(const AppleEvent *ae, AppleEvent *, long handlerRefcon)
{
QApplication *app = (QApplication *)handlerRefcon;
diff --git a/src/gui/kernel/qapplication_qws.cpp b/src/gui/kernel/qapplication_qws.cpp
index 2deda8e..018440f 100644
--- a/src/gui/kernel/qapplication_qws.cpp
+++ b/src/gui/kernel/qapplication_qws.cpp
@@ -2675,9 +2675,6 @@ void QApplication::alert(QWidget *, int)
{
}
-/*!
- \internal
-*/
int QApplication::qwsProcessEvent(QWSEvent* event)
{
Q_D(QApplication);
@@ -3056,43 +3053,11 @@ int QApplication::qwsProcessEvent(QWSEvent* event)
return 0;
}
-/*!
- \fn bool QApplication::qwsEventFilter(QWSEvent *event)
-
- This virtual function is only implemented under Qt for Embedded Linux.
-
- If you create an application that inherits QApplication and
- reimplement this function, you get direct access to all QWS (Q
- Window System) events that the are received from the QWS master
- process. The events are passed in the \a event parameter.
-
- Return true if you want to stop the event from being processed.
- Return false for normal event dispatching. The default
- implementation returns false.
-*/
bool QApplication::qwsEventFilter(QWSEvent *)
{
return false;
}
-/*!
- Set Qt for Embedded Linux custom color table.
-
- Qt for Embedded Linux on 8-bpp displays allocates a standard 216 color cube.
- The remaining 40 colors may be used by setting a custom color
- table in the QWS master process before any clients connect.
-
- \a colorTable is an array of up to 40 custom colors. \a start is
- the starting index (0-39) and \a numColors is the number of colors
- to be set (1-40).
-
- This method is non-portable. It is available \e only in
- Qt for Embedded Linux.
-
- \note The custom colors will not be used by the default screen
- driver. To make use of the new colors, implement a custom screen
- driver, or use QDirectPainter.
-*/
void QApplication::qwsSetCustomColors(QRgb *colorTable, int start, int numColors)
{
if (start < 0 || start > 39) {
@@ -3111,30 +3076,11 @@ void QApplication::qwsSetCustomColors(QRgb *colorTable, int start, int numColors
}
#ifndef QT_NO_QWS_MANAGER
-/*!
- Return the QWSDecoration used for decorating windows.
-
- \warning This method is non-portable. It is only available in
- Qt for Embedded Linux.
-
- \sa QDecoration
-*/
QDecoration &QApplication::qwsDecoration()
{
return *qws_decoration;
}
-/*!
- \fn void QApplication::qwsSetDecoration(QDecoration *decoration)
-
- Sets the QDecoration derived class to use for decorating the
- windows used by Qt for Embedded Linux to the \a decoration
- specified.
-
- This method is non-portable. It is only available in Qt for Embedded Linux.
-
- \sa QDecoration
-*/
void QApplication::qwsSetDecoration(QDecoration *dec)
{
if (dec) {
@@ -3153,21 +3099,6 @@ void QApplication::qwsSetDecoration(QDecoration *dec)
}
}
-/*!
- \overload
-
- Requests a QDecoration object for \a decoration from the QDecorationFactory.
-
- The string must be one of the QDecorationFactory::keys(). Keys are
- case insensitive.
-
- A later call to the QApplication constructor will override the
- requested style when a "-style" option is passed in as a commandline
- parameter.
-
- Returns 0 if an unknown \a decoration is passed, otherwise the QStyle object
- returned is set as the application's GUI style.
-*/
QDecoration* QApplication::qwsSetDecoration(const QString &decoration)
{
QDecoration *decore = QDecorationFactory::create(decoration);
diff --git a/src/gui/kernel/qapplication_win.cpp b/src/gui/kernel/qapplication_win.cpp
index fae0335..f14ad6f 100644
--- a/src/gui/kernel/qapplication_win.cpp
+++ b/src/gui/kernel/qapplication_win.cpp
@@ -1371,13 +1371,6 @@ QString QApplicationPrivate::appName() const
extern uint qGlobalPostedEventsCount();
-/*!
- \internal
- \since 4.1
-
- If \a gotFocus is true, \a widget will become the active window.
- Otherwise the active window is reset to 0.
-*/
void QApplication::winFocus(QWidget *widget, bool gotFocus)
{
if (d_func()->inPopupMode()) // some delayed focus event to ignore
@@ -1732,6 +1725,21 @@ LRESULT CALLBACK QtWndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam
// fall-through intended
case WM_KEYUP:
case WM_SYSKEYUP:
+#if Q_OS_WINCE_WM
+ case WM_HOTKEY:
+ if(HIWORD(msg.lParam) == VK_TBACK) {
+ const bool hotKeyDown = !(LOWORD(msg.lParam) & MOD_KEYUP);
+ msg.lParam = 0x69 << 16;
+ msg.wParam = VK_BACK;
+ if (hotKeyDown) {
+ msg.message = WM_KEYDOWN;
+ qt_keymapper_private()->updateKeyMap(msg);
+ } else {
+ msg.message = WM_KEYUP;
+ }
+ }
+ // fall-through intended
+#endif
case WM_IME_CHAR:
case WM_IME_KEYDOWN:
case WM_CHAR: {
@@ -2432,10 +2440,12 @@ LRESULT CALLBACK QtWndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam
widget = (QETWidget*)qApp->focusWidget();
HWND focus = ::GetFocus();
//if there is a current widget and the new widget belongs to the same toplevel window
+ //or if the current widget was embedded into non-qt window (i.e. we won't get WM_ACTIVATEAPP)
//then we clear the focus on the widget
//in case the new widget belongs to a different widget hierarchy, clearing the focus
//will be handled because the active window will change
- if (widget && ::IsChild(widget->window()->internalWinId(), focus)) {
+ const bool embedded = widget && ((QETWidget*)widget->window())->topData()->embedded;
+ if (widget && (embedded || ::IsChild(widget->window()->internalWinId(), focus))) {
widget->clearFocus();
result = true;
} else {
@@ -2919,7 +2929,6 @@ void qt_win_eatMouseMove()
// In DnD, the mouse release event never appears, so the
// mouse button state machine must be manually reset
-/*! \internal */
void QApplication::winMouseButtonUp()
{
qt_button_down = 0;
diff --git a/src/gui/kernel/qapplication_x11.cpp b/src/gui/kernel/qapplication_x11.cpp
index 6babda9..a3c9406 100644
--- a/src/gui/kernel/qapplication_x11.cpp
+++ b/src/gui/kernel/qapplication_x11.cpp
@@ -398,7 +398,7 @@ extern bool qt_xdnd_dragging;
// gui or non-gui from qapplication.cpp
extern bool qt_is_gui_used;
-/*!
+/*!
\internal
Try to resolve a \a symbol from \a library with the version specified
by \a vernum.
@@ -829,11 +829,14 @@ bool QApplicationPrivate::x11_apply_settings()
QColor(strlist[i]));
}
- if (groupCount == QPalette::NColorGroups)
- QApplicationPrivate::setSystemPalette(pal);
+ // ### Fix properly for 4.6
+ if (!(QApplicationPrivate::app_style && QApplicationPrivate::app_style->inherits("QGtkStyle"))) {
+ if (groupCount == QPalette::NColorGroups)
+ QApplicationPrivate::setSystemPalette(pal);
+ }
int kdeSessionVersion = QString::fromLocal8Bit(qgetenv("KDE_SESSION_VERSION")).toInt();
-
+
if (!appFont) {
QFont font(QApplication::font());
QString fontDescription;
@@ -887,11 +890,15 @@ bool QApplicationPrivate::x11_apply_settings()
}
}
+ static QString currentStyleName = stylename;
if (QCoreApplication::startingUp()) {
if (!stylename.isEmpty() && !QApplicationPrivate::styleOverride)
QApplicationPrivate::styleOverride = new QString(stylename);
} else {
- QApplication::setStyle(stylename);
+ if (currentStyleName != stylename) {
+ currentStyleName = stylename;
+ QApplication::setStyle(stylename);
+ }
}
int num =
@@ -1355,8 +1362,10 @@ static void qt_set_x11_resources(const char* font = 0, const char* fg = 0,
pal.setColor(QPalette::Disabled, QPalette::Highlight, Qt::darkBlue);
}
- QApplicationPrivate::setSystemPalette(pal);
-
+ // QGtkStyle sets it's own system palette
+ if (!(QApplicationPrivate::app_style && QApplicationPrivate::app_style->inherits("QGtkStyle"))) {
+ QApplicationPrivate::setSystemPalette(pal);
+ }
QColor::setAllowX11ColorNames(allowX11ColorNames);
}
@@ -1939,11 +1948,17 @@ void qt_init(QApplicationPrivate *priv, int,
{
QString displayName = QLatin1String(XDisplayName(NULL));
- // apparently MITSHM only works for local displays, so do a quick check here
- // to determine whether the display is local or not (not 100 % accurate)
+ // MITSHM only works for local displays, so do a quick check here
+ // to determine whether the display is local or not (not 100 % accurate).
+ // BGR server layouts are not supported either, since it requires the raster
+ // engine to work on a QImage with BGR layout.
bool local = displayName.isEmpty() || displayName.lastIndexOf(QLatin1Char(':')) == 0;
- if (local && (qgetenv("QT_X11_NO_MITSHM").toInt() == 0))
- X11->use_mitshm = mitshm_pixmaps;
+ if (local && (qgetenv("QT_X11_NO_MITSHM").toInt() == 0)) {
+ Visual *defaultVisual = DefaultVisual(X11->display, DefaultScreen(X11->display));
+ X11->use_mitshm = mitshm_pixmaps && (defaultVisual->red_mask == 0xff0000
+ && defaultVisual->green_mask == 0xff00
+ && defaultVisual->blue_mask == 0xff);
+ }
}
#endif // QT_NO_MITSHM
@@ -2961,11 +2976,6 @@ QWidget *QApplication::topLevelAt(const QPoint &p)
#endif
}
-/*!
- Synchronizes with the X server in the X11 implementation. This
- normally takes some time. Does nothing on other platforms.
-*/
-
void QApplication::syncX()
{
if (X11->display)
@@ -3071,9 +3081,6 @@ static QETWidget *qPRFindWidget(Window oldwin)
return wPRmapper ? (QETWidget*)wPRmapper->value((int)oldwin, 0) : 0;
}
-/*!
- \internal
-*/
int QApplication::x11ClientMessage(QWidget* w, XEvent* event, bool passive_only)
{
if (w && !w->internalWinId())
@@ -3136,17 +3143,6 @@ int QApplication::x11ClientMessage(QWidget* w, XEvent* event, bool passive_only)
return 0;
}
-/*!
- This function does the core processing of individual X
- \a{event}s, normally by dispatching Qt events to the right
- destination.
-
- It returns 1 if the event was consumed by special handling, 0 if
- the \a event was consumed by normal handling, and -1 if the \a
- event was for an unrecognized widget.
-
- \sa x11EventFilter()
-*/
int QApplication::x11ProcessEvent(XEvent* event)
{
Q_D(QApplication);
@@ -3154,43 +3150,48 @@ int QApplication::x11ProcessEvent(XEvent* event)
#ifdef ALIEN_DEBUG
//qDebug() << "QApplication::x11ProcessEvent:" << event->type;
#endif
+ Time time = 0, userTime = 0;
switch (event->type) {
case ButtonPress:
pressed_window = event->xbutton.window;
- X11->userTime = event->xbutton.time;
+ userTime = event->xbutton.time;
// fallthrough intended
case ButtonRelease:
- X11->time = event->xbutton.time;
+ time = event->xbutton.time;
break;
case MotionNotify:
- X11->time = event->xmotion.time;
+ time = event->xmotion.time;
break;
case XKeyPress:
- X11->userTime = event->xkey.time;
+ userTime = event->xkey.time;
// fallthrough intended
case XKeyRelease:
- X11->time = event->xkey.time;
+ time = event->xkey.time;
break;
case PropertyNotify:
- X11->time = event->xproperty.time;
+ time = event->xproperty.time;
break;
case EnterNotify:
case LeaveNotify:
- X11->time = event->xcrossing.time;
+ time = event->xcrossing.time;
break;
case SelectionClear:
- X11->time = event->xselectionclear.time;
+ time = event->xselectionclear.time;
break;
default:
- break;
- }
#ifndef QT_NO_XFIXES
- if (X11->use_xfixes && event->type == (X11->xfixes_eventbase + XFixesSelectionNotify)) {
- XFixesSelectionNotifyEvent *req =
- reinterpret_cast<XFixesSelectionNotifyEvent *>(event);
- X11->time = req->selection_timestamp;
- }
+ if (X11->use_xfixes && event->type == (X11->xfixes_eventbase + XFixesSelectionNotify)) {
+ XFixesSelectionNotifyEvent *req =
+ reinterpret_cast<XFixesSelectionNotifyEvent *>(event);
+ time = req->selection_timestamp;
+ }
#endif
+ break;
+ }
+ if (time > X11->time)
+ X11->time = time;
+ if (userTime > X11->userTime)
+ X11->userTime = userTime;
QETWidget *widget = (QETWidget*)QWidget::find((WId)event->xany.window);
@@ -3823,29 +3824,6 @@ int QApplication::x11ProcessEvent(XEvent* event)
return 0;
}
-/*!
- \fn bool QApplication::x11EventFilter(XEvent *event)
-
- \warning This virtual function is only implemented under X11.
-
- If you create an application that inherits QApplication and
- reimplement this function, you get direct access to all X events
- that the are received from the X server. The events are passed in
- the \a event parameter.
-
- Return true if you want to stop the event from being processed.
- Return false for normal event dispatching. The default
- implementation returns false.
-
- It is only the directly addressed messages that are filtered.
- You must install an event filter directly on the event
- dispatcher, which is returned by
- QAbstractEventDispatcher::instance(), to handle system wide
- messages.
-
- \sa x11ProcessEvent()
-*/
-
bool QApplication::x11EventFilter(XEvent *)
{
return false;
diff --git a/src/gui/kernel/qclipboard.cpp b/src/gui/kernel/qclipboard.cpp
index 917b5d5..bab3449 100644
--- a/src/gui/kernel/qclipboard.cpp
+++ b/src/gui/kernel/qclipboard.cpp
@@ -466,7 +466,7 @@ void QClipboard::setPixmap(const QPixmap &pixmap, Mode mode)
The \a mode argument is used to control which part of the system
clipboard is used. If \a mode is QClipboard::Clipboard, this
- function clears the the global clipboard contents. If \a mode is
+ function clears the global clipboard contents. If \a mode is
QClipboard::Selection, this function clears the global mouse
selection contents. If \a mode is QClipboard::FindBuffer, this
function clears the search string buffer.
diff --git a/src/gui/kernel/qcocoaapplication_mac.mm b/src/gui/kernel/qcocoaapplication_mac.mm
index f95f004f..a3cc2c1 100644
--- a/src/gui/kernel/qcocoaapplication_mac.mm
+++ b/src/gui/kernel/qcocoaapplication_mac.mm
@@ -1,11 +1,11 @@
/****************************************************************************
- **
- ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
** Contact: Qt Software Information (qt-info@nokia.com)
- **
- ** This file is part of the QtGui module of the Qt Toolkit.
- **
- ** $QT_BEGIN_LICENSE:LGPL$
+**
+** 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
@@ -36,11 +36,11 @@
** If you are unsure which license is appropriate for your use, please
** contact the sales department at qt-sales@nokia.com.
** $QT_END_LICENSE$
- **
- ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
- ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- **
- ****************************************************************************/
+**
+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+**
+****************************************************************************/
/****************************************************************************
**
diff --git a/src/gui/kernel/qcocoaapplicationdelegate_mac.mm b/src/gui/kernel/qcocoaapplicationdelegate_mac.mm
index e6bd511..9a24645 100644
--- a/src/gui/kernel/qcocoaapplicationdelegate_mac.mm
+++ b/src/gui/kernel/qcocoaapplicationdelegate_mac.mm
@@ -1,11 +1,11 @@
/****************************************************************************
- **
- ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
** Contact: Qt Software Information (qt-info@nokia.com)
- **
- ** This file is part of the QtGui module of the Qt Toolkit.
- **
- ** $QT_BEGIN_LICENSE:LGPL$
+**
+** 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
@@ -36,11 +36,11 @@
** If you are unsure which license is appropriate for your use, please
** contact the sales department at qt-sales@nokia.com.
** $QT_END_LICENSE$
- **
- ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
- ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- **
- ****************************************************************************/
+**
+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+**
+****************************************************************************/
/****************************************************************************
**
@@ -183,27 +183,32 @@ static void cleanupCocoaApplicationDelegate()
{
Q_UNUSED(sender);
// The reflection delegate gets precedence
- NSApplicationTerminateReply reply = NSTerminateCancel;
if (reflectionDelegate
&& [reflectionDelegate respondsToSelector:@selector(applicationShouldTerminate:)]) {
return [reflectionDelegate applicationShouldTerminate:sender];
}
if (qtPrivate->canQuit()) {
- reply = NSTerminateNow;
if (!startedQuit) {
startedQuit = true;
qAppInstance()->quit();
startedQuit = false;
}
}
- return reply;
+
+ // Prevent Cocoa from terminating the application, since this simply
+ // exits the program whithout allowing QApplication::exec() to return.
+ // The call to QApplication::quit() above will instead quit the
+ // application from the Qt side.
+ return NSTerminateCancel;
}
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
Q_UNUSED(aNotification);
inLaunch = false;
+ extern void qt_release_apple_event_handler(); //qapplication_mac.mm
+ qt_release_apple_event_handler();
}
- (void)application:(NSApplication *)sender openFiles:(NSArray *)filenames
diff --git a/src/gui/kernel/qcocoamenuloader_mac.mm b/src/gui/kernel/qcocoamenuloader_mac.mm
index 7ecb765..e836286 100644
--- a/src/gui/kernel/qcocoamenuloader_mac.mm
+++ b/src/gui/kernel/qcocoamenuloader_mac.mm
@@ -1,11 +1,11 @@
/****************************************************************************
- **
- ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
** Contact: Qt Software Information (qt-info@nokia.com)
- **
- ** This file is part of the QtGui module of the Qt Toolkit.
- **
- ** $QT_BEGIN_LICENSE:LGPL$
+**
+** 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
@@ -36,11 +36,11 @@
** If you are unsure which license is appropriate for your use, please
** contact the sales department at qt-sales@nokia.com.
** $QT_END_LICENSE$
- **
- ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
- ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- **
- ****************************************************************************/
+**
+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+**
+****************************************************************************/
#include "qmacdefines_mac.h"
#ifdef QT_MAC_USE_COCOA
diff --git a/src/gui/kernel/qcocoapanel_mac.mm b/src/gui/kernel/qcocoapanel_mac.mm
index c17b30c..c69826f 100644
--- a/src/gui/kernel/qcocoapanel_mac.mm
+++ b/src/gui/kernel/qcocoapanel_mac.mm
@@ -49,8 +49,10 @@
#include <QtGui/QWidget>
+QT_FORWARD_DECLARE_CLASS(QWidget);
+QT_BEGIN_NAMESPACE
extern Qt::MouseButton cocoaButton2QtButton(NSInteger buttonNum); // qcocoaview.mm
-
+QT_END_NAMESPACE
QT_USE_NAMESPACE
@implementation QT_MANGLE_NAMESPACE(QCocoaPanel)
@@ -108,7 +110,7 @@ QT_USE_NAMESPACE
[self retain];
QWidget *widget = [[QT_MANGLE_NAMESPACE(QCocoaWindowDelegate) sharedDelegate] qt_qwidgetForWindow:self];
- QCocoaView *view = static_cast<QCocoaView *>(qt_mac_nativeview_for(widget));
+ QT_MANGLE_NAMESPACE(QCocoaView) *view = static_cast<QT_MANGLE_NAMESPACE(QCocoaView) *>(qt_mac_nativeview_for(widget));
Qt::MouseButton mouseButton = cocoaButton2QtButton([event buttonNumber]);
// sometimes need to redirect mouse events to the popup.
@@ -157,10 +159,11 @@ QT_USE_NAMESPACE
[self release];
}
-
- (BOOL)makeFirstResponder:(NSResponder *)responder
{
- if (responder == nil)
+ // For some reason Cocoa wants to flip the first responder
+ // when Qt doesn't want to, sorry, but "No" :-)
+ if (responder == nil && qApp->focusWidget())
return NO;
return [super makeFirstResponder:responder];
}
@@ -171,7 +174,7 @@ QT_USE_NAMESPACE
+ (Class)frameViewClassForStyleMask:(NSUInteger)styleMask
{
if (styleMask & QtMacCustomizeWindow)
- return [QCocoaWindowCustomThemeFrame class];
+ return [QT_MANGLE_NAMESPACE(QCocoaWindowCustomThemeFrame) class];
return [super frameViewClassForStyleMask:styleMask];
}
diff --git a/src/gui/kernel/qcocoaview_mac.mm b/src/gui/kernel/qcocoaview_mac.mm
index 19367d1..4ceae3f 100644
--- a/src/gui/kernel/qcocoaview_mac.mm
+++ b/src/gui/kernel/qcocoaview_mac.mm
@@ -181,6 +181,7 @@ QT_FORWARD_DECLARE_CLASS(QAbstractScrollAreaPrivate)
QT_FORWARD_DECLARE_CLASS(QPaintEvent)
QT_FORWARD_DECLARE_CLASS(QPainter)
QT_FORWARD_DECLARE_CLASS(QHoverEvent)
+QT_FORWARD_DECLARE_CLASS(QCursor)
QT_USE_NAMESPACE
extern "C" {
extern NSString *NSTextInputReplacementRangeAttributeName;
@@ -197,6 +198,7 @@ extern "C" {
}
composing = false;
sendKeyEvents = true;
+ currentCustomTypes = 0;
[self setHidden:YES];
return self;
}
@@ -211,10 +213,16 @@ extern "C" {
object:self];
}
--(void)registerDragTypes:(bool)accept
+-(void)registerDragTypes
{
QMacCocoaAutoReleasePool pool;
- if (accept) {
+ // Calling registerForDraggedTypes is slow, so only do it once for each widget
+ // or when the custom types change.
+ const QStringList& customTypes = qEnabledDraggedTypes();
+ if (currentCustomTypes == 0 || *currentCustomTypes != customTypes) {
+ if (currentCustomTypes == 0)
+ currentCustomTypes = new QStringList();
+ *currentCustomTypes = customTypes;
const NSString* mimeTypeGeneric = @"com.trolltech.qt.MimeTypeName";
NSMutableArray *supportedTypes = [NSMutableArray arrayWithObjects:NSColorPboardType,
NSFilenamesPboardType, NSStringPboardType,
@@ -226,13 +234,38 @@ extern "C" {
NSFilesPromisePboardType, NSInkTextPboardType,
NSMultipleTextSelectionPboardType, mimeTypeGeneric, nil];
// Add custom types supported by the application.
- const QStringList& customTypes = qEnabledDraggedTypes();
for (int i = 0; i < customTypes.size(); i++) {
[supportedTypes addObject:reinterpret_cast<const NSString *>(QCFString::toCFStringRef(customTypes[i]))];
}
[self registerForDraggedTypes:supportedTypes];
+ }
+}
+
+- (void)resetCursorRects
+{
+ QWidget *cursorWidget = qwidget;
+
+ if (cursorWidget->testAttribute(Qt::WA_TransparentForMouseEvents))
+ cursorWidget = QApplication::widgetAt(qwidget->mapToGlobal(qwidget->rect().center()));
+
+ if (cursorWidget == 0)
+ return;
+
+ if (!cursorWidget->testAttribute(Qt::WA_SetCursor)) {
+ [super resetCursorRects];
+ return;
+ }
+
+ QRegion mask = qt_widget_private(cursorWidget)->extra->mask;
+ NSCursor *nscursor = static_cast<NSCursor *>(nsCursorForQCursor(cursorWidget->cursor()));
+ if (mask.isEmpty()) {
+ [self addCursorRect:[qt_mac_nativeview_for(cursorWidget) visibleRect] cursor:nscursor];
} else {
- [self unregisterDraggedTypes];
+ const QVector<QRect> &rects = mask.rects();
+ for (int i = 0; i < rects.size(); ++i) {
+ const QRect &rect = rects.at(i);
+ [self addCursorRect:NSMakeRect(rect.x(), rect.y(), rect.width(), rect.height()) cursor:nscursor];
+ }
}
}
@@ -253,6 +286,8 @@ extern "C" {
- (NSDragOperation)draggingEntered:(id <NSDraggingInfo>)sender
{
+ if (qwidget->testAttribute(Qt::WA_DropSiteRegistered) == false)
+ return NSDragOperationNone;
[self addDropData:sender];
QMimeData *mimeData = dropData;
if (QDragManager::self()->source())
@@ -263,9 +298,18 @@ extern "C" {
QPoint posDrag(localPoint.x, localPoint.y);
NSDragOperation nsActions = [sender draggingSourceOperationMask];
Qt::DropActions qtAllowed = qt_mac_mapNSDragOperations(nsActions);
+ QT_PREPEND_NAMESPACE(qt_mac_dnd_answer_rec.lastOperation) = nsActions;
+ Qt::KeyboardModifiers modifiers = Qt::NoModifier;
+ if ([sender draggingSource] != nil) {
+ // modifier flags might have changed, update it here since we don't send any input events.
+ QApplicationPrivate::modifier_buttons = qt_cocoaModifiers2QtModifiers([[NSApp currentEvent] modifierFlags]);
+ modifiers = QApplication::keyboardModifiers();
+ } else {
+ // when the source is from another application the above technique will not work.
+ modifiers = qt_cocoaDragOperation2QtModifiers(nsActions);
+ }
// send the drag enter event to the widget.
- QDragEnterEvent qDEEvent(posDrag, qtAllowed, mimeData,
- QApplication::mouseButtons(), QApplication::keyboardModifiers());
+ QDragEnterEvent qDEEvent(posDrag, qtAllowed, mimeData, QApplication::mouseButtons(), modifiers);
QApplication::sendEvent(qwidget, &qDEEvent);
if (!qDEEvent.isAccepted()) {
// widget is not interested in this drag, so ignore this drop data.
@@ -273,24 +317,23 @@ extern "C" {
return NSDragOperationNone;
} else {
// send a drag move event immediately after a drag enter event (as per documentation).
- QDragMoveEvent qDMEvent(posDrag, qtAllowed, mimeData,
- QApplication::mouseButtons(), QApplication::keyboardModifiers());
+ QDragMoveEvent qDMEvent(posDrag, qtAllowed, mimeData, QApplication::mouseButtons(), modifiers);
qDMEvent.setDropAction(qDEEvent.dropAction());
qDMEvent.accept(); // accept by default, since enter event was accepted.
QApplication::sendEvent(qwidget, &qDMEvent);
if (!qDMEvent.isAccepted() || qDMEvent.dropAction() == Qt::IgnoreAction) {
// since we accepted the drag enter event, the widget expects
// future drage move events.
- // ### check if we need to treat this like the drag enter event.
+ // ### check if we need to treat this like the drag enter event.
nsActions = QT_PREPEND_NAMESPACE(qt_mac_mapDropAction)(qDEEvent.dropAction());
} else {
nsActions = QT_PREPEND_NAMESPACE(qt_mac_mapDropAction)(qDMEvent.dropAction());
- }
+ }
QT_PREPEND_NAMESPACE(qt_mac_copy_answer_rect)(qDMEvent);
- return nsActions;
+ return nsActions;
}
}
-
+
- (NSDragOperation)draggingUpdated:(id < NSDraggingInfo >)sender
{
// drag enter event was rejected, so ignore the move event.
@@ -300,17 +343,27 @@ extern "C" {
NSPoint windowPoint = [sender draggingLocation];
NSPoint globalPoint = [[sender draggingDestinationWindow] convertBaseToScreen:windowPoint];
NSPoint localPoint = [self convertPoint:windowPoint fromView:nil];
+ NSDragOperation nsActions = [sender draggingSourceOperationMask];
QPoint posDrag(localPoint.x, localPoint.y);
- if (qt_mac_mouse_inside_answer_rect(posDrag))
+ if (qt_mac_mouse_inside_answer_rect(posDrag)
+ && QT_PREPEND_NAMESPACE(qt_mac_dnd_answer_rec.lastOperation) == nsActions)
return QT_PREPEND_NAMESPACE(qt_mac_mapDropActions)(QT_PREPEND_NAMESPACE(qt_mac_dnd_answer_rec.lastAction));
// send drag move event to the widget
- NSDragOperation nsActions = [sender draggingSourceOperationMask];
+ QT_PREPEND_NAMESPACE(qt_mac_dnd_answer_rec.lastOperation) = nsActions;
Qt::DropActions qtAllowed = QT_PREPEND_NAMESPACE(qt_mac_mapNSDragOperations)(nsActions);
+ Qt::KeyboardModifiers modifiers = Qt::NoModifier;
+ if ([sender draggingSource] != nil) {
+ // modifier flags might have changed, update it here since we don't send any input events.
+ QApplicationPrivate::modifier_buttons = qt_cocoaModifiers2QtModifiers([[NSApp currentEvent] modifierFlags]);
+ modifiers = QApplication::keyboardModifiers();
+ } else {
+ // when the source is from another application the above technique will not work.
+ modifiers = qt_cocoaDragOperation2QtModifiers(nsActions);
+ }
QMimeData *mimeData = dropData;
if (QDragManager::self()->source())
mimeData = QDragManager::self()->dragPrivate()->data;
- QDragMoveEvent qDMEvent(posDrag, qtAllowed, mimeData,
- QApplication::mouseButtons(), QApplication::keyboardModifiers());
+ QDragMoveEvent qDMEvent(posDrag, qtAllowed, mimeData, QApplication::mouseButtons(), modifiers);
qDMEvent.setDropAction(QT_PREPEND_NAMESPACE(qt_mac_dnd_answer_rec).lastAction);
qDMEvent.accept();
QApplication::sendEvent(qwidget, &qDMEvent);
@@ -339,12 +392,12 @@ extern "C" {
- (BOOL)performDragOperation:(id <NSDraggingInfo>)sender
{
[self addDropData:sender];
-
+
NSPoint windowPoint = [sender draggingLocation];
NSPoint globalPoint = [[sender draggingDestinationWindow] convertBaseToScreen:windowPoint];
NSPoint localPoint = [self convertPoint:windowPoint fromView:nil];
QPoint posDrop(localPoint.x, localPoint.y);
-
+
NSDragOperation nsActions = [sender draggingSourceOperationMask];
Qt::DropActions qtAllowed = qt_mac_mapNSDragOperations(nsActions);
QMimeData *mimeData = dropData;
@@ -356,6 +409,8 @@ extern "C" {
if (QDragManager::self()->object)
QDragManager::self()->dragPrivate()->target = qwidget;
QApplication::sendEvent(qwidget, &de);
+ if (QDragManager::self()->object)
+ QDragManager::self()->dragPrivate()->executed_action = de.dropAction();
if (!de.isAccepted())
return NO;
else
@@ -365,6 +420,8 @@ extern "C" {
- (void)dealloc
{
[[NSNotificationCenter defaultCenter] removeObserver:self];
+ delete currentCustomTypes;
+ [self unregisterDraggedTypes];
[super dealloc];
}
@@ -386,10 +443,9 @@ extern "C" {
- (void) setFrameSize:(NSSize)newSize
{
[super setFrameSize:newSize];
-
+
// A change in size has required the view to be invalidated.
- if ([self inLiveResize])
- {
+ if ([self inLiveResize]) {
NSRect rects[4];
NSInteger count;
[self getRectsExposedDuringLiveResize:rects count:&count];
@@ -397,9 +453,7 @@ extern "C" {
{
[self setNeedsDisplayInRect:rects[count]];
}
- }
- else
- {
+ } else {
[self setNeedsDisplay:YES];
}
}
@@ -534,7 +588,7 @@ extern "C" {
if (!qAppInstance()->activeModalWidget() || QApplicationPrivate::tryModalHelper(qwidget, 0)) {
QApplication::sendEvent(qwidget, &enterEvent);
qt_mouseover = qwidget;
-
+
// Update cursor and dispatch hover events.
qt_mac_update_cursor_at_global_pos(flipPoint(globalPoint).toPoint());
if (qwidget->testAttribute(Qt::WA_Hover) &&
@@ -589,7 +643,7 @@ extern "C" {
[viewsToLookAt addObject:qt_mac_nativeview_for(parentWidget)];
parentWidget = parentWidget->parentWidget();
}
-
+
// Now walk through the subviews of each view and determine which subview should
// get the event. We look through all the subviews at a given level with
// the assumption that the last item to be found the candidate has a higher z-order.
@@ -599,7 +653,7 @@ extern "C" {
for (NSView *lookView in viewsToLookAt) {
NSPoint tmpPoint = [lookView convertPoint:windowPoint fromView:nil];
for (NSView *view in [lookView subviews]) {
- if (view == mouseView)
+ if (view == mouseView || [view isHidden])
continue;
NSRect frameRect = [view frame];
if (NSMouseInRect(tmpPoint, [view frame], [view isFlipped]))
@@ -618,7 +672,7 @@ extern "C" {
NSPoint tmpPoint = [viewForDescent convertPoint:windowPoint fromView:nil];
// Apply same rule as above wrt z-order.
for (NSView *view in [viewForDescent subviews]) {
- if (NSMouseInRect(tmpPoint, [view frame], [view isFlipped]))
+ if (![view isHidden] && NSMouseInRect(tmpPoint, [view frame], [view isFlipped]))
lowerView = view;
}
if (!lowerView) // Low as we can be at this point.
@@ -725,7 +779,7 @@ extern "C" {
if (currentIManager && [currentIManager wantsToHandleMouseEvents]) {
[currentIManager handleMouseEvent:theEvent];
}
-
+
NSPoint windowPoint = [theEvent locationInWindow];
NSPoint globalPoint = [[theEvent window] convertBaseToScreen:windowPoint];
NSPoint localPoint = [self convertPoint:windowPoint fromView:nil];
@@ -734,7 +788,7 @@ extern "C" {
Qt::MouseButton buttons = cocoaButton2QtButton([theEvent buttonNumber]);
bool wheelOK = false;
Qt::KeyboardModifiers keyMods = qt_cocoaModifiers2QtModifiers([theEvent modifierFlags]);
-
+
// Mouse wheel deltas seem to tick in at increments of 0.1. Qt widgets
// expect the delta to be a multiple of 120.
const int ScrollFactor = 10 * 120;
@@ -756,20 +810,20 @@ extern "C" {
wheelOK = qwe2.isAccepted();
}
}
-
+
if (deltaY) {
QWheelEvent qwe(qlocal, qglobal, deltaY, buttons, keyMods, Qt::Vertical);
qt_sendSpontaneousEvent(qwidget, &qwe);
wheelOK = qwe.isAccepted();
- if (wheelOK && QApplicationPrivate::focus_widget
+ if (!wheelOK && QApplicationPrivate::focus_widget
&& QApplicationPrivate::focus_widget != qwidget) {
QWheelEvent qwe2(QApplicationPrivate::focus_widget->mapFromGlobal(qglobal), qglobal,
- deltaZ, buttons, keyMods, Qt::Vertical);
+ deltaY, buttons, keyMods, Qt::Vertical);
qt_sendSpontaneousEvent(QApplicationPrivate::focus_widget, &qwe2);
wheelOK = qwe2.isAccepted();
}
}
-
+
if (deltaZ) {
// Qt doesn't explicitly support wheels with a Z component. In a misguided attempt to
// try to be ahead of the pack, I'm adding this extra value.
@@ -858,6 +912,11 @@ extern "C" {
Q_UNUSED(anImage);
Q_UNUSED(aPoint);
qMacDnDParams()->performedAction = operation;
+ if (QDragManager::self()->object
+ && QDragManager::self()->dragPrivate()->executed_action != Qt::ActionMask) {
+ qMacDnDParams()->performedAction =
+ qt_mac_mapDropAction(QDragManager::self()->dragPrivate()->executed_action);
+ }
}
- (QWidget *)qt_qwidget
@@ -913,6 +972,27 @@ extern "C" {
}
}
+- (void)viewWillMoveToWindow:(NSWindow *)window
+{
+ if (qwidget->windowFlags() & Qt::MSWindowsOwnDC
+ && (window != [self window])) { // OpenGL Widget
+ // Create a stupid ClearDrawable Event
+ QEvent event(QEvent::MacGLClearDrawable);
+ qApp->sendEvent(qwidget, &event);
+ }
+}
+
+- (void)viewDidMoveToWindow
+{
+ if (qwidget->windowFlags() & Qt::MSWindowsOwnDC && [self window]) {
+ // call update paint event
+ qwidgetprivate->needWindowChange = true;
+ QEvent event(QEvent::MacGLWindowChange);
+ qApp->sendEvent(qwidget, &event);
+ }
+}
+
+
// NSTextInput Protocol implementation
- (void) insertText:(id)aString
@@ -1150,13 +1230,13 @@ Qt::DropAction QDragManager::drag(QDrag *o)
so we just bail early to prevent it */
if(!(GetCurrentEventButtonState() & kEventMouseButtonPrimary))
return Qt::IgnoreAction;
-
+
if(object) {
dragPrivate()->source->removeEventFilter(this);
cancel();
beingCancelled = false;
}
-
+
object = o;
dragPrivate()->target = 0;
@@ -1168,7 +1248,7 @@ Qt::DropAction QDragManager::drag(QDrag *o)
QMacPasteboard dragBoard((CFStringRef) NSDragPboard, QMacPasteboardMime::MIME_DND);
dragPrivate()->data->setData(QLatin1String("application/x-qt-mime-type-name"), QByteArray());
dragBoard.setMimeData(dragPrivate()->data);
-
+
// create the image
QPoint hotspot;
QPixmap pix = dragPrivate()->pixmap;
@@ -1214,6 +1294,7 @@ Qt::DropAction QDragManager::drag(QDrag *o)
NSSize mouseOffset = {0.0, 0.0};
NSPasteboard *pboard = [NSPasteboard pasteboardWithName:NSDragPboard];
NSPoint windowPoint = [dndParams->theEvent locationInWindow];
+ dragPrivate()->executed_action = Qt::ActionMask;
// do the drag
[dndParams->view retain];
[dndParams->view dragImage:image
@@ -1225,6 +1306,7 @@ Qt::DropAction QDragManager::drag(QDrag *o)
slideBack:YES];
[dndParams->view release];
[image release];
+ dragPrivate()->executed_action = Qt::IgnoreAction;
object = 0;
Qt::DropAction performedAction(qt_mac_mapNSDragOperation(dndParams->performedAction));
// do post drag processing, if required.
diff --git a/src/gui/kernel/qcocoaview_mac_p.h b/src/gui/kernel/qcocoaview_mac_p.h
index 9de94d5..983c762 100644
--- a/src/gui/kernel/qcocoaview_mac_p.h
+++ b/src/gui/kernel/qcocoaview_mac_p.h
@@ -83,6 +83,7 @@ Q_GUI_EXPORT
bool composing;
int composingLength;
bool sendKeyEvents;
+ QStringList *currentCustomTypes;
}
- (id)initWithQWidget:(QWidget *)widget widgetPrivate:(QWidgetPrivate *)widgetprivate;
- (void) finishInitWithQWidget:(QWidget *)widget widgetPrivate:(QWidgetPrivate *)widgetprivate;
@@ -91,7 +92,7 @@ Q_GUI_EXPORT
- (NSDragOperation)draggingUpdated:(id < NSDraggingInfo >)sender;
- (void)draggingExited:(id < NSDraggingInfo >)sender;
- (BOOL)performDragOperation:(id <NSDraggingInfo>)sender;
-- (void)registerDragTypes:(bool)accept;
+- (void)registerDragTypes;
- (void)removeDropData;
- (void)addDropData:(id <NSDraggingInfo>)sender;
- (void)setSupportedActions:(NSDragOperation)actions;
diff --git a/src/gui/kernel/qcocoawindow_mac.mm b/src/gui/kernel/qcocoawindow_mac.mm
index ba121cd..89f481f 100644
--- a/src/gui/kernel/qcocoawindow_mac.mm
+++ b/src/gui/kernel/qcocoawindow_mac.mm
@@ -1,11 +1,11 @@
/****************************************************************************
- **
- ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
** Contact: Qt Software Information (qt-info@nokia.com)
- **
- ** This file is part of the QtGui module of the Qt Toolkit.
- **
- ** $QT_BEGIN_LICENSE:LGPL$
+**
+** 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
@@ -36,11 +36,11 @@
** If you are unsure which license is appropriate for your use, please
** contact the sales department at qt-sales@nokia.com.
** $QT_END_LICENSE$
- **
- ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
- ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- **
- ****************************************************************************/
+**
+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+**
+****************************************************************************/
#include "qmacdefines_mac.h"
#ifdef QT_MAC_USE_COCOA
@@ -53,9 +53,10 @@
#include <QtGui/QWidget>
QT_FORWARD_DECLARE_CLASS(QWidget);
-QT_USE_NAMESPACE
-
+QT_BEGIN_NAMESPACE
extern Qt::MouseButton cocoaButton2QtButton(NSInteger buttonNum); // qcocoaview.mm
+QT_END_NAMESPACE
+QT_USE_NAMESPACE
@implementation NSWindow (QT_MANGLE_NAMESPACE(QWidgetIntegration))
@@ -130,7 +131,7 @@ extern Qt::MouseButton cocoaButton2QtButton(NSInteger buttonNum); // qcocoaview.
[self retain];
QWidget *widget = [[QT_MANGLE_NAMESPACE(QCocoaWindowDelegate) sharedDelegate] qt_qwidgetForWindow:self];
- QCocoaView *view = static_cast<QCocoaView *>(qt_mac_nativeview_for(widget));
+ QT_MANGLE_NAMESPACE(QCocoaView) *view = static_cast<QT_MANGLE_NAMESPACE(QCocoaView) *>(qt_mac_nativeview_for(widget));
Qt::MouseButton mouseButton = cocoaButton2QtButton([event buttonNumber]);
// sometimes need to redirect mouse events to the popup.
@@ -182,7 +183,9 @@ extern Qt::MouseButton cocoaButton2QtButton(NSInteger buttonNum); // qcocoaview.
- (BOOL)makeFirstResponder:(NSResponder *)responder
{
- if (responder == nil)
+ // For some reason Cocoa wants to flip the first responder
+ // when Qt doesn't want to, sorry, but "No" :-)
+ if (responder == nil && qApp->focusWidget())
return NO;
return [super makeFirstResponder:responder];
}
diff --git a/src/gui/kernel/qcocoawindowdelegate_mac.mm b/src/gui/kernel/qcocoawindowdelegate_mac.mm
index 8480179..fa325f4 100644
--- a/src/gui/kernel/qcocoawindowdelegate_mac.mm
+++ b/src/gui/kernel/qcocoawindowdelegate_mac.mm
@@ -1,11 +1,11 @@
/****************************************************************************
- **
- ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
** Contact: Qt Software Information (qt-info@nokia.com)
- **
- ** This file is part of the QtGui module of the Qt Toolkit.
- **
- ** $QT_BEGIN_LICENSE:LGPL$
+**
+** 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
@@ -36,11 +36,11 @@
** If you are unsure which license is appropriate for your use, please
** contact the sales department at qt-sales@nokia.com.
** $QT_END_LICENSE$
- **
- ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
- ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- **
- ****************************************************************************/
+**
+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+**
+****************************************************************************/
#import "private/qcocoawindowdelegate_mac_p.h"
#ifdef QT_MAC_USE_COCOA
@@ -194,7 +194,6 @@ static void cleanupCocoaWindowDelegate()
{
NSWindow *window = [notification object];
QWidget *qwidget = m_windowHash->value(window);
- // Just here to handle the is zoomed method.
QWidgetData *widgetData = qt_qwidget_data(qwidget);
if (!(qwidget->windowState() & (Qt::WindowMaximized | Qt::WindowFullScreen)) && [window isZoomed]) {
widgetData->window_state = widgetData->window_state | Qt::WindowMaximized;
@@ -202,7 +201,6 @@ static void cleanupCocoaWindowDelegate()
& ~Qt::WindowMaximized));
qt_sendSpontaneousEvent(qwidget, &e);
}
- [self checkForMove:[window frame] forWidget:qwidget];
NSRect rect = [[window contentView] frame];
const QSize newSize(rect.size.width, rect.size.height);
const QSize &oldSize = widgetData->crect.size();
@@ -212,12 +210,18 @@ static void cleanupCocoaWindowDelegate()
}
}
-- (void)checkForMove:(const NSRect &)newRect forWidget:(QWidget *)qwidget
+- (void)windowDidMove:(NSNotification *)notification
{
- // newRect's origin is bottom left.
+ // The code underneath needs to translate the window location
+ // from bottom left (which is the origin used by Cocoa) to
+ // upper left (which is the origin used by Qt):
+ NSWindow *window = [notification object];
+ NSRect newRect = [window frame];
+ QWidget *qwidget = m_windowHash->value(window);
QPoint qtPoint = flipPoint(NSMakePoint(newRect.origin.x,
newRect.origin.y + newRect.size.height)).toPoint();
const QRect &oldRect = qwidget->frameGeometry();
+
if (qtPoint.x() != oldRect.x() || qtPoint.y() != oldRect.y()) {
QWidgetData *widgetData = qt_qwidget_data(qwidget);
QRect oldCRect = widgetData->crect;
@@ -233,11 +237,6 @@ static void cleanupCocoaWindowDelegate()
}
}
-- (void)windowDidMove:(NSNotification *)notification
-{
- [self windowDidResize:notification];
-}
-
-(BOOL)windowShouldClose:(id)windowThatWantsToClose
{
QWidget *qwidget = m_windowHash->value(windowThatWantsToClose);
diff --git a/src/gui/kernel/qcursor.h b/src/gui/kernel/qcursor.h
index 15b4597..ad1860d 100644
--- a/src/gui/kernel/qcursor.h
+++ b/src/gui/kernel/qcursor.h
@@ -77,6 +77,7 @@ class QBitmap;
class QPixmap;
#if defined(Q_WS_MAC)
+void *nsCursorForQCursor(const QCursor &c);
void qt_mac_set_cursor(const QCursor *c, const QPoint &p);
#endif
@@ -128,6 +129,7 @@ public:
private:
QCursorData *d;
#if defined(Q_WS_MAC)
+ friend void *nsCursorForQCursor(const QCursor &c);
friend void qt_mac_set_cursor(const QCursor *c, const QPoint &p);
#endif
};
diff --git a/src/gui/kernel/qcursor_mac.mm b/src/gui/kernel/qcursor_mac.mm
index d632eb79..ae98f2e 100644
--- a/src/gui/kernel/qcursor_mac.mm
+++ b/src/gui/kernel/qcursor_mac.mm
@@ -95,9 +95,19 @@ protected:
}
};
+void *nsCursorForQCursor(const QCursor &c)
+{
+ c.d->update();
+ return [[static_cast<NSCursor *>(c.d->curs.cp.nscursor) retain] autorelease];
+}
+
static QCursorData *currentCursor = 0; //current cursor
void qt_mac_set_cursor(const QCursor *c, const QPoint &)
{
+#ifdef QT_MAC_USE_COCOA
+ Q_UNUSED(c);
+ return;
+#else
if (!c) {
currentCursor = 0;
return;
@@ -128,10 +138,15 @@ void qt_mac_set_cursor(const QCursor *c, const QPoint &)
}
}
currentCursor = c->d;
+#endif
}
void qt_mac_update_cursor_at_global_pos(const QPoint &globalPos)
{
+#ifdef QT_MAC_USE_COCOA
+ Q_UNUSED(globalPos);
+ return;
+#else
QCursor cursor(Qt::ArrowCursor);
if (QApplication::overrideCursor()) {
cursor = *QApplication::overrideCursor();
@@ -144,6 +159,7 @@ void qt_mac_update_cursor_at_global_pos(const QPoint &globalPos)
}
}
qt_mac_set_cursor(&cursor, globalPos);
+#endif
}
void qt_mac_update_cursor()
diff --git a/src/gui/kernel/qevent.cpp b/src/gui/kernel/qevent.cpp
index 8c7e47d..2aed287 100644
--- a/src/gui/kernel/qevent.cpp
+++ b/src/gui/kernel/qevent.cpp
@@ -675,12 +675,13 @@ QWheelEvent::QWheelEvent(const QPoint &pos, const QPoint& globalPos, int delta,
The \a type parameter must be QEvent::KeyPress, QEvent::KeyRelease,
or QEvent::ShortcutOverride.
- If \a key is 0, the event is not a result of
- a known key; for example, it may be the result of a compose
- sequence or keyboard macro. The \a modifiers holds the keyboard
- modifiers, and the given \a text is the Unicode text that the
- key generated. If \a autorep is true, isAutoRepeat() will be
- true. \a count is the number of keys involved in the event.
+ Int \a key is the code for the Qt::Key that the event loop should listen
+ for. If \a key is 0, the event is not a result of a known key; for
+ example, it may be the result of a compose sequence or keyboard macro.
+ The \a modifiers holds the keyboard modifiers, and the given \a text
+ is the Unicode text that the key generated. If \a autorep is true,
+ isAutoRepeat() will be true. \a count is the number of keys involved
+ in the event.
*/
QKeyEvent::QKeyEvent(Type type, int key, Qt::KeyboardModifiers modifiers, const QString& text,
bool autorep, ushort count)
diff --git a/src/gui/kernel/qlayout.cpp b/src/gui/kernel/qlayout.cpp
index aa46249..4463aab 100644
--- a/src/gui/kernel/qlayout.cpp
+++ b/src/gui/kernel/qlayout.cpp
@@ -1028,8 +1028,13 @@ void QLayout::freeze(int w, int h)
void QLayout::setMenuBar(QWidget *widget)
{
Q_D(QLayout);
- if (widget)
- addChildWidget(widget);
+
+#ifdef Q_OS_WINCE_WM
+ if (widget && widget->size().height() > 0)
+#else
+ if (widget)
+#endif
+ addChildWidget(widget);
d->menubar = widget;
}
@@ -1239,7 +1244,7 @@ bool QLayout::activate()
Must be implemented in subclasses to remove the layout item at \a
index from the layout, and return the item. If there is no such
item, the function must do nothing and return 0. Items are numbered
- consecutively from 0. If an item is deleted, other items will be
+ consecutively from 0. If an item is removed, other items will be
renumbered.
The following code fragment shows a safe way to remove all items
diff --git a/src/gui/kernel/qmacdefines_mac.h b/src/gui/kernel/qmacdefines_mac.h
index 97ec544..035b8c5 100644
--- a/src/gui/kernel/qmacdefines_mac.h
+++ b/src/gui/kernel/qmacdefines_mac.h
@@ -105,7 +105,7 @@ Yes, it is an informative comment ;-)
# undef qDebug
#endif
-#if __LP64__
+#ifdef __LP64__
typedef signed int OSStatus;
#else
typedef signed long OSStatus;
diff --git a/src/gui/kernel/qshortcutmap.cpp b/src/gui/kernel/qshortcutmap.cpp
index ed9654b..86894b4 100644
--- a/src/gui/kernel/qshortcutmap.cpp
+++ b/src/gui/kernel/qshortcutmap.cpp
@@ -753,6 +753,7 @@ bool QShortcutMap::correctGraphicsWidgetContext(Qt::ShortcutContext context, QGr
tw = tw->parentWidget();
return tw == w;
}
+ return false;
}
// Below is Qt::WindowShortcut context
diff --git a/src/gui/kernel/qt_cocoa_helpers_mac.mm b/src/gui/kernel/qt_cocoa_helpers_mac.mm
index 9c381b4..9165836 100644
--- a/src/gui/kernel/qt_cocoa_helpers_mac.mm
+++ b/src/gui/kernel/qt_cocoa_helpers_mac.mm
@@ -515,6 +515,18 @@ Qt::KeyboardModifiers qt_cocoaModifiers2QtModifiers(ulong modifierFlags)
return qtMods;
}
+Qt::KeyboardModifiers qt_cocoaDragOperation2QtModifiers(uint dragOperations)
+{
+ Qt::KeyboardModifiers qtMods =Qt::NoModifier;
+ if (dragOperations & NSDragOperationLink)
+ qtMods |= Qt::MetaModifier;
+ if (dragOperations & NSDragOperationGeneric)
+ qtMods |= Qt::ControlModifier;
+ if (dragOperations & NSDragOperationCopy)
+ qtMods |= Qt::AltModifier;
+ return qtMods;
+}
+
static inline QEvent::Type cocoaEvent2QtEvent(NSUInteger eventType)
{
// Handle the trivial cases that can be determined from the type.
@@ -555,12 +567,15 @@ bool qt_dispatchKeyEventWithCocoa(void * /*NSEvent * */ keyEvent, QWidget *widge
int keyLength = [keyChars length];
if (keyLength == 0)
return false; // Dead Key, nothing to do!
+ bool ignoreText = false;
Qt::Key qtKey = Qt::Key_unknown;
if (keyLength == 1) {
QChar ch([keyChars characterAtIndex:0]);
if (ch.isLower())
ch = ch.toUpper();
qtKey = cocoaKey2QtKey(ch);
+ // Do not set the text for Function-Key Unicodes characters (0xF700–0xF8FF).
+ ignoreText = (ch.unicode() >= 0xF700 && ch.unicode() <= 0xF8FF);
}
Qt::KeyboardModifiers keyMods = qt_cocoaModifiers2QtModifiers([event modifierFlags]);
QString text;
@@ -568,7 +583,7 @@ bool qt_dispatchKeyEventWithCocoa(void * /*NSEvent * */ keyEvent, QWidget *widge
// To quote from the Carbon port: This is actually wrong--but it is the best that
// can be done for now because of the Control/Meta mapping issues
// (we always get text on the Mac)
- if (!(keyMods & (Qt::ControlModifier | Qt::MetaModifier)))
+ if (!ignoreText && !(keyMods & (Qt::ControlModifier | Qt::MetaModifier)))
text = QCFString::toQString(reinterpret_cast<CFStringRef>(keyChars));
UInt32 macScanCode = 1;
@@ -811,13 +826,28 @@ bool qt_mac_handleMouseEvent(void * /* NSView * */view, void * /* NSEvent * */ev
QWidget *qwidget = [theView qt_qwidget];
QWidget *widgetToGetMouse = qwidget;
QWidget *popup = qAppInstance()->activePopupWidget();
- if (popup && popup != qwidget->window())
- widgetToGetMouse = popup;
NSView *tmpView = theView;
- if (widgetToGetMouse != qwidget) {
- tmpView = qt_mac_nativeview_for(widgetToGetMouse);
+
+ if (popup && popup != qwidget->window()) {
+ widgetToGetMouse = popup;
+ tmpView = qt_mac_nativeview_for(popup);
windowPoint = [[tmpView window] convertScreenToBase:globalPoint];
+
+ QPoint qWindowPoint(windowPoint.x, windowPoint.y);
+ if (widgetToGetMouse->rect().contains(qWindowPoint)) {
+ // Keeping the mouse pressed on a combobox button will make
+ // the popup pop in front of the mouse. But all mouse events
+ // will be sendt to the button. Since we want mouse events
+ // to be sendt to widgets inside the popup, we search for the
+ // widget in front of the mouse:
+ tmpView = [tmpView hitTest:windowPoint];
+ if (!tmpView)
+ return false;
+ widgetToGetMouse =
+ [static_cast<QT_MANGLE_NAMESPACE(QCocoaView) *>(tmpView) qt_qwidget];
+ }
}
+
NSPoint localPoint = [tmpView convertPoint:windowPoint fromView:nil];
QPoint qlocalPoint(localPoint.x, localPoint.y);
diff --git a/src/gui/kernel/qt_cocoa_helpers_mac_p.h b/src/gui/kernel/qt_cocoa_helpers_mac_p.h
index ef55aa4..63a301c 100644
--- a/src/gui/kernel/qt_cocoa_helpers_mac_p.h
+++ b/src/gui/kernel/qt_cocoa_helpers_mac_p.h
@@ -141,6 +141,7 @@ inline QApplication *qAppInstance() { return static_cast<QApplication *>(QCoreAp
struct ::TabletProximityRec;
void qt_dispatchTabletProximityEvent(const ::TabletProximityRec &proxRec);
Qt::KeyboardModifiers qt_cocoaModifiers2QtModifiers(ulong modifierFlags);
+Qt::KeyboardModifiers qt_cocoaDragOperation2QtModifiers(uint dragOperations);
inline int flipYCoordinate(int y)
{
return QApplication::desktop()->screenGeometry(0).height() - y;
diff --git a/src/gui/kernel/qt_mac.cpp b/src/gui/kernel/qt_mac.cpp
index 4703475..44e10a8 100644
--- a/src/gui/kernel/qt_mac.cpp
+++ b/src/gui/kernel/qt_mac.cpp
@@ -131,16 +131,47 @@ QColor qcolorForTheme(ThemeBrush brush)
QColor qcolorForThemeTextColor(ThemeTextColor themeColor)
{
-#ifndef QT_MAC_USE_COCOA
+#ifdef Q_OS_MAC32
RGBColor c;
GetThemeTextColor(themeColor, 32, true, &c);
- return QColor(c.red / 265, c.green / 256, c.blue / 256);
+ QColor color = QColor(c.red / 265, c.green / 256, c.blue / 256);
+ return color;
#else
- QNativeImage nativeImage(16,16, QNativeImage::systemFormat());
- CGRect cgrect = CGRectMake(0, 0, 16, 16);
- HIThemeSetTextFill(themeColor, 0, nativeImage.cg, kHIThemeOrientationNormal);
- CGContextFillRect(nativeImage.cg, cgrect);
- return QColor(nativeImage.image.pixel(0 , 0));
+ // There is no equivalent to GetThemeTextColor in 64-bit and it was rather bad that
+ // I didn't file a request to implement this for Snow Leopard. So, in the meantime
+ // I've encoded the values from the GetThemeTextColor. This is not exactly ideal
+ // as if someone really wants to mess with themeing, these colors will be wrong.
+ // It also means that we need to make sure the values for differences between
+ // OS releases (and it will be likely that we are a step behind.)
+ switch (themeColor) {
+ case kThemeTextColorAlertActive:
+ case kThemeTextColorTabFrontActive:
+ case kThemeTextColorBevelButtonActive:
+ case kThemeTextColorListView:
+ case kThemeTextColorPlacardActive:
+ case kThemeTextColorPopupButtonActive:
+ case kThemeTextColorPopupLabelActive:
+ case kThemeTextColorPushButtonActive:
+ return Qt::black;
+ case kThemeTextColorAlertInactive:
+ case kThemeTextColorDialogInactive:
+ case kThemeTextColorPlacardInactive:
+ return QColor(67, 69, 69, 255);
+ case kThemeTextColorPopupButtonInactive:
+ case kThemeTextColorPopupLabelInactive:
+ case kThemeTextColorPushButtonInactive:
+ case kThemeTextColorTabFrontInactive:
+ case kThemeTextColorBevelButtonInactive:
+ return QColor(123, 127, 127, 255);
+ default: {
+ QNativeImage nativeImage(16,16, QNativeImage::systemFormat());
+ CGRect cgrect = CGRectMake(0, 0, 16, 16);
+ HIThemeSetTextFill(themeColor, 0, nativeImage.cg, kHIThemeOrientationNormal);
+ CGContextFillRect(nativeImage.cg, cgrect);
+ QColor color = nativeImage.image.pixel(0,0);
+ return QColor(nativeImage.image.pixel(0 , 0));
+ }
+ }
#endif
}
QT_END_NAMESPACE
diff --git a/src/gui/kernel/qt_mac_p.h b/src/gui/kernel/qt_mac_p.h
index 3aec23f..ca995dc 100644
--- a/src/gui/kernel/qt_mac_p.h
+++ b/src/gui/kernel/qt_mac_p.h
@@ -233,6 +233,7 @@ extern QPaintDevice *qt_mac_safe_pdev; //qapplication_mac.cpp
extern OSWindowRef qt_mac_window_for(const QWidget*); //qwidget_mac.mm
extern OSViewRef qt_mac_nativeview_for(const QWidget *); //qwidget_mac.mm
+extern QPoint qt_mac_nativeMapFromParent(const QWidget *child, const QPoint &pt); //qwidget_mac.mm
#ifdef check
# undef check
@@ -249,11 +250,13 @@ struct QMacDndAnswerRecord {
Qt::KeyboardModifiers modifiers;
Qt::MouseButtons buttons;
Qt::DropAction lastAction;
+ unsigned int lastOperation;
void clear() {
rect = QRect();
modifiers = Qt::NoModifier;
buttons = Qt::NoButton;
lastAction = Qt::IgnoreAction;
+ lastOperation = 0;
}
};
extern QMacDndAnswerRecord qt_mac_dnd_answer_rec;
diff --git a/src/gui/kernel/qwidget.cpp b/src/gui/kernel/qwidget.cpp
index f92d660..bbf6758 100644
--- a/src/gui/kernel/qwidget.cpp
+++ b/src/gui/kernel/qwidget.cpp
@@ -66,6 +66,7 @@
#ifdef Q_WS_MAC
# include "qt_mac_p.h"
# include "qt_cocoa_helpers_mac_p.h"
+# include "qmainwindow.h"
#endif
#if defined(Q_WS_QWS)
# include "qwsdisplay_qws.h"
@@ -182,6 +183,7 @@ QWidgetPrivate::QWidgetPrivate(int version) :
,inDirtyList(0)
,isScrolled(0)
,isMoved(0)
+ ,usesDoubleBufferedGLContext(0)
#ifdef Q_WS_WIN
,noPaintOnScreen(0)
#endif
@@ -2131,6 +2133,10 @@ QWidget *QWidget::find(WId id)
If a widget is non-native (alien) and winId() is invoked on it, that widget
will be provided a native handle.
+ On Mac OS X, the type returned depends on which framework Qt was linked
+ against. If Qt is using Carbon, the {WId} is actually an HIViewRef. If Qt
+ is using Cocoa, {WId} is a pointer to an NSView.
+
\note We recommend that you do not store this value as it is likely to
change at run-time.
@@ -2233,9 +2239,10 @@ WId QWidget::effectiveWinId() const
The style sheet contains a textual description of customizations to the
widget's style, as described in the \l{Qt Style Sheets} document.
- \note Qt style sheets are currently not supported for QMacStyle
- (the default style on Mac OS X). We plan to address this in some future
- release.
+ Since Qt 4.5, Qt style sheets fully supports Mac OS X.
+
+ \warning Qt style sheets are currently not supported for custom QStyle
+ subclasses. We plan to address this in some future release.
\sa setStyle(), QApplication::styleSheet, {Qt Style Sheets}
*/
@@ -2336,13 +2343,26 @@ void QWidgetPrivate::setStyle_helper(QStyle *newStyle, bool propagate, bool
)
{
Q_Q(QWidget);
- createExtra();
-
QStyle *oldStyle = q->style();
#ifndef QT_NO_STYLE_STYLESHEET
- QStyle *origStyle = extra->style;
+ QStyle *origStyle = 0;
+#endif
+
+#ifdef Q_WS_MAC
+ // the metalhack boolean allows Qt/Mac to do a proper re-polish depending
+ // on how the Qt::WA_MacBrushedMetal attribute is set. It is only ever
+ // set when changing that attribute and passes the widget's CURRENT style.
+ // therefore no need to do a reassignment.
+ if (!metalHack)
+#endif
+ {
+ createExtra();
+
+#ifndef QT_NO_STYLE_STYLESHEET
+ origStyle = extra->style;
#endif
- extra->style = newStyle;
+ extra->style = newStyle;
+ }
// repolish
if (q->windowType() != Qt::Desktop) {
@@ -4707,10 +4727,13 @@ void QWidget::render(QPaintDevice *target, const QPoint &targetOffset,
if (redirected) {
target = redirected;
offset -= redirectionOffset;
- if (!inRenderWithPainter) { // Clip handled by shared painter (in qpainter.cpp).
- const QRegion redirectedSystemClip = redirected->paintEngine()->systemClip();
- if (!redirectedSystemClip.isEmpty())
- paintRegion &= redirectedSystemClip.translated(-offset);
+ }
+
+ if (!inRenderWithPainter) { // Clip handled by shared painter (in qpainter.cpp).
+ if (QPaintEngine *targetEngine = target->paintEngine()) {
+ const QRegion targetSystemClip = targetEngine->systemClip();
+ if (!targetSystemClip.isEmpty())
+ paintRegion &= targetSystemClip.translated(-offset);
}
}
@@ -4795,7 +4818,7 @@ void QWidget::render(QPainter *painter, const QPoint &targetOffset,
Q_ASSERT(engine);
QPaintEnginePrivate *enginePriv = engine->d_func();
Q_ASSERT(enginePriv);
- QPaintDevice *target = painter->worldMatrixEnabled() ? engine->paintDevice() : painter->device();
+ QPaintDevice *target = engine->paintDevice();
Q_ASSERT(target);
// Render via a pixmap when dealing with non-opaque painters or printers.
@@ -4814,8 +4837,13 @@ void QWidget::render(QPainter *painter, const QPoint &targetOffset,
const QRegion oldSystemClip = enginePriv->systemClip;
const QRegion oldSystemViewport = enginePriv->systemViewport;
- // This ensures that transformed system clips are inside the current system clip.
- enginePriv->setSystemViewport(oldSystemClip);
+ // This ensures that all painting triggered by render() is clipped to the current engine clip.
+ if (painter->hasClipping()) {
+ const QRegion painterClip = painter->deviceTransform().map(painter->clipRegion());
+ enginePriv->setSystemViewport(oldSystemClip.isEmpty() ? painterClip : oldSystemClip & painterClip);
+ } else {
+ enginePriv->setSystemViewport(oldSystemClip);
+ }
render(target, targetOffset, toBePainted, renderFlags);
@@ -6254,7 +6282,7 @@ QByteArray QWidget::saveGeometry() const
returns false.
If the restored geometry is off-screen, it will be modified to be
- inside the the available screen geometry.
+ inside the available screen geometry.
To restore geometry saved using QSettings, you can use code like
this:
@@ -8966,17 +8994,36 @@ QWidget *QWidget::childAt(const QPoint &p) const
QWidget *QWidgetPrivate::childAt_helper(const QPoint &p, bool ignoreChildrenInDestructor) const
{
Q_Q(const QWidget);
- if (!q->rect().contains(p))
+#ifdef Q_WS_MAC
+ bool includeFrame = q->isWindow() && qobject_cast<const QMainWindow *>(q)
+ && static_cast<const QMainWindow *>(q)->unifiedTitleAndToolBarOnMac();
+#endif
+
+ if (
+#ifdef Q_WS_MAC
+ !includeFrame &&
+#endif
+ !q->rect().contains(p))
return 0;
+
for (int i = children.size(); i > 0 ;) {
--i;
QWidget *w = qobject_cast<QWidget *>(children.at(i));
- if (w && !w->isWindow() && !w->isHidden() && w->geometry().contains(p)) {
+ if (w && !w->isWindow() && !w->isHidden()
+ && (w->geometry().contains(p)
+#ifdef Q_WS_MAC
+ || (includeFrame && w->geometry().contains(qt_mac_nativeMapFromParent(w, p)))
+#endif
+ )) {
if (ignoreChildrenInDestructor && w->data->in_destructor)
continue;
if (w->testAttribute(Qt::WA_TransparentForMouseEvents))
continue;
QPoint childPoint = w->mapFromParent(p);
+#ifdef Q_WS_MAC
+ if (includeFrame && !w->geometry().contains(p))
+ childPoint = qt_mac_nativeMapFromParent(w, p);
+#endif
if (QWidget *t = w->d_func()->childAt_helper(childPoint, ignoreChildrenInDestructor))
return t;
// if WMouseNoMask is set the widget mask is ignored, if
@@ -9417,11 +9464,13 @@ void QWidget::repaint(const QRect &rect)
if (!isVisible() || !updatesEnabled() || rect.isEmpty())
return;
- QTLWExtra *tlwExtra = !d->paintOnScreen() ? window()->d_func()->maybeTopData() : 0;
- if (tlwExtra && !tlwExtra->inTopLevelResize && tlwExtra->backingStore) {
- tlwExtra->inRepaint = true;
- tlwExtra->backingStore->markDirty(rect, this, true);
- tlwExtra->inRepaint = false;
+ if (hasBackingStoreSupport()) {
+ QTLWExtra *tlwExtra = window()->d_func()->maybeTopData();
+ if (tlwExtra && !tlwExtra->inTopLevelResize && tlwExtra->backingStore) {
+ tlwExtra->inRepaint = true;
+ tlwExtra->backingStore->markDirty(rect, this, true);
+ tlwExtra->inRepaint = false;
+ }
} else {
d->repaint_sys(rect);
}
@@ -9444,11 +9493,13 @@ void QWidget::repaint(const QRegion &rgn)
if (!isVisible() || !updatesEnabled() || rgn.isEmpty())
return;
- QTLWExtra *tlwExtra = !d->paintOnScreen() ? window()->d_func()->maybeTopData() : 0;
- if (tlwExtra && !tlwExtra->inTopLevelResize && tlwExtra->backingStore) {
- tlwExtra->inRepaint = true;
- tlwExtra->backingStore->markDirty(rgn, this, true);
- tlwExtra->inRepaint = false;
+ if (hasBackingStoreSupport()) {
+ QTLWExtra *tlwExtra = window()->d_func()->maybeTopData();
+ if (tlwExtra && !tlwExtra->inTopLevelResize && tlwExtra->backingStore) {
+ tlwExtra->inRepaint = true;
+ tlwExtra->backingStore->markDirty(rgn, this, true);
+ tlwExtra->inRepaint = false;
+ }
} else {
d->repaint_sys(rgn);
}
@@ -11394,3 +11445,17 @@ void QWidget::clearMask()
setMask(QRegion());
}
+/*! \fn const QX11Info &QWidget::x11Info() const
+ Returns information about the configuration of the X display used to display
+ the widget.
+
+ \warning This function is only available on X11.
+*/
+
+/*! \fn Qt::HANDLE QWidget::x11PictureHandle() const
+ Returns the X11 Picture handle of the widget for XRender
+ support. Use of this function is not portable. This function will
+ return 0 if XRender support is not compiled into Qt, if the
+ XRender extension is not supported on the X11 display, or if the
+ handle could not be created.
+*/
diff --git a/src/gui/kernel/qwidget_mac.mm b/src/gui/kernel/qwidget_mac.mm
index 7a586e1..f863428 100644
--- a/src/gui/kernel/qwidget_mac.mm
+++ b/src/gui/kernel/qwidget_mac.mm
@@ -295,9 +295,7 @@ bool qt_mac_is_macsheet(const QWidget *w)
Qt::WindowModality modality = w->windowModality();
if (modality == Qt::ApplicationModal)
return false;
- if (modality == Qt::WindowModal || w->windowType() == Qt::Sheet)
- return true;
- return false;
+ return w->parentWidget() && (modality == Qt::WindowModal || w->windowType() == Qt::Sheet);
}
bool qt_mac_is_macdrawer(const QWidget *w)
@@ -467,7 +465,18 @@ Q_GUI_EXPORT OSWindowRef qt_mac_window_for(const QWidget *w)
if (hiview){
OSWindowRef window = qt_mac_window_for(hiview);
if (!window && qt_isGenuineQWidget(hiview)) {
- w->window()->d_func()->createWindow_sys();
+ QWidget *myWindow = w->window();
+ // This is a workaround for NSToolbar. When a widget is hidden
+ // by clicking the toolbar button, Cocoa reparents the widgets
+ // to another window (but Qt doesn't know about it).
+ // When we start showing them, it reparents back,
+ // but at this point it's window is nil, but the window it's being brought
+ // into (the Qt one) is for sure created.
+ // This stops the hierarchy moving under our feet.
+ if (myWindow != w && qt_mac_window_for(qt_mac_nativeview_for(myWindow)))
+ return qt_mac_window_for(qt_mac_nativeview_for(myWindow));
+
+ myWindow->d_func()->createWindow_sys();
// Reget the hiview since the "create window could potentially move the view (I guess).
hiview = qt_mac_nativeview_for(w);
window = qt_mac_window_for(hiview);
@@ -777,16 +786,6 @@ OSStatus QWidgetPrivate::qt_window_event(EventHandlerCallRef er, EventRef event,
// By also setting the current modal window back into the event, we
// help Carbon determining which window is supposed to be raised.
handled_event = qApp->activePopupWidget() ? true : false;
- QWidget *top = 0;
- if (!QApplicationPrivate::tryModalHelper(widget, &top) && top && top != widget){
- if(!qt_mac_is_macsheet(top) || top->parentWidget() != widget) {
- handled_event = true;
- WindowPtr topWindowRef = qt_mac_window_for(top);
- SetEventParameter(event, kEventParamModalWindow, typeWindowRef, sizeof(topWindowRef), &topWindowRef);
- HIModalClickResult clickResult = kHIModalClickIsModal;
- SetEventParameter(event, kEventParamModalClickResult, typeModalClickResult, sizeof(clickResult), &clickResult);
- }
- }
#endif
} else if(ekind == kEventWindowClose) {
widget->d_func()->close_helper(QWidgetPrivate::CloseWithSpontaneousEvent);
@@ -2153,6 +2152,7 @@ void QWidgetPrivate::finishCreateWindow_sys_Carbon(OSWindowRef windowRef)
setWindowModified_sys(q->isWindowModified());
updateFrameStrut();
qt_mac_update_sizer(q);
+ applyMaxAndMinSizeOnWindow();
}
#else // QT_MAC_USE_COCOA
void QWidgetPrivate::finishCreateWindow_sys_Cocoa(void * /*NSWindow * */ voidWindowRef)
@@ -2174,7 +2174,10 @@ void QWidgetPrivate::finishCreateWindow_sys_Cocoa(void * /*NSWindow * */ voidWin
if ((popup || type == Qt::Tool || type == Qt::ToolTip) && !q->isModal()) {
[windowRef setHidesOnDeactivate:YES];
[windowRef setHasShadow:YES];
+ } else {
+ [windowRef setHidesOnDeactivate:NO];
}
+
Q_UNUSED(parentWidget);
Q_UNUSED(dialog);
@@ -2235,6 +2238,7 @@ void QWidgetPrivate::finishCreateWindow_sys_Cocoa(void * /*NSWindow * */ voidWin
syncCocoaMask();
macUpdateIsOpaque();
qt_mac_update_sizer(q);
+ applyMaxAndMinSizeOnWindow();
}
#endif // QT_MAC_USE_COCOA
@@ -2846,12 +2850,26 @@ void QWidgetPrivate::updateSystemBackground()
void QWidgetPrivate::setCursor_sys(const QCursor &)
{
+#ifndef QT_MAC_USE_COCOA
qt_mac_update_cursor();
+#else
+ Q_Q(QWidget);
+ if (q->testAttribute(Qt::WA_WState_Created)) {
+ [qt_mac_window_for(q) invalidateCursorRectsForView:qt_mac_nativeview_for(q)];
+ }
+#endif
}
void QWidgetPrivate::unsetCursor_sys()
{
+#ifndef QT_MAC_USE_COCOA
qt_mac_update_cursor();
+#else
+ Q_Q(QWidget);
+ if (q->testAttribute(Qt::WA_WState_Created)) {
+ [qt_mac_window_for(q) invalidateCursorRectsForView:qt_mac_nativeview_for(q)];
+ }
+#endif
}
void QWidgetPrivate::setWindowTitle_sys(const QString &caption)
@@ -3276,6 +3294,20 @@ void QWidgetPrivate::show_sys()
qt_event_request_window_change(q);
}
+
+QPoint qt_mac_nativeMapFromParent(const QWidget *child, const QPoint &pt)
+{
+#ifndef QT_MAC_USE_COCOA
+ CGPoint nativePoint = CGPointMake(pt.x(), pt.y());
+ HIViewConvertPoint(&nativePoint, qt_mac_nativeview_for(child->parentWidget()),
+ qt_mac_nativeview_for(child));
+#else
+ NSPoint nativePoint = [qt_mac_nativeview_for(child) convertPoint:NSMakePoint(pt.x(), pt.y()) fromView:qt_mac_nativeview_for(child->parentWidget())];
+#endif
+ return QPoint(nativePoint.x, nativePoint.y);
+}
+
+
void QWidgetPrivate::hide_sys()
{
Q_Q(QWidget);
@@ -3961,6 +3993,53 @@ void QWidgetPrivate::setWSGeometry(bool dontShow, const QRect &oldRect)
}
}
+void QWidgetPrivate::adjustWithinMaxAndMinSize(int &w, int &h)
+{
+ if (QWExtra *extra = extraData()) {
+ w = qMin(w, extra->maxw);
+ h = qMin(h, extra->maxh);
+ w = qMax(w, extra->minw);
+ h = qMax(h, extra->minh);
+
+ // Deal with size increment
+ if (QTLWExtra *top = topData()) {
+ if(top->incw) {
+ w = w/top->incw;
+ w *= top->incw;
+ }
+ if(top->inch) {
+ h = h/top->inch;
+ h *= top->inch;
+ }
+ }
+ }
+
+ if (isRealWindow()) {
+ w = qMax(0, w);
+ h = qMax(0, h);
+ }
+}
+
+void QWidgetPrivate::applyMaxAndMinSizeOnWindow()
+{
+ Q_Q(QWidget);
+ const float max_f(20000);
+#ifndef QT_MAC_USE_COCOA
+#define SF(x) ((x > max_f) ? max_f : x)
+ HISize max = CGSizeMake(SF(extra->maxw), SF(extra->maxh));
+ HISize min = CGSizeMake(SF(extra->minw), SF(extra->minh));
+#undef SF
+ SetWindowResizeLimits(qt_mac_window_for(q), &min, &max);
+#else
+#define SF(x) ((x > max_f) ? max_f : x)
+ NSSize max = NSMakeSize(SF(extra->maxw), SF(extra->maxh));
+ NSSize min = NSMakeSize(SF(extra->minw), SF(extra->minh));
+#undef SF
+ [qt_mac_window_for(q) setContentMinSize:min];
+ [qt_mac_window_for(q) setContentMaxSize:max];
+#endif
+}
+
void QWidgetPrivate::setGeometry_sys(int x, int y, int w, int h, bool isMove)
{
Q_Q(QWidget);
@@ -3971,12 +4050,19 @@ void QWidgetPrivate::setGeometry_sys(int x, int y, int w, int h, bool isMove)
QMacCocoaAutoReleasePool pool;
bool realWindow = isRealWindow();
- if (realWindow && !(w == 0 && h == 0) && !q->testAttribute(Qt::WA_DontShowOnScreen)) {
- topData()->isSetGeometry = 1;
- topData()->isMove = isMove;
+
+ if (realWindow && !q->testAttribute(Qt::WA_DontShowOnScreen)){
+ adjustWithinMaxAndMinSize(w, h);
#ifndef QT_MAC_USE_COCOA
- Rect r; SetRect(&r, x, y, x + w, y + h);
- SetWindowBounds(qt_mac_window_for(q), kWindowContentRgn, &r);
+ if (w != 0 && h != 0) {
+ topData()->isSetGeometry = 1;
+ topData()->isMove = isMove;
+ Rect r; SetRect(&r, x, y, x + w, y + h);
+ SetWindowBounds(qt_mac_window_for(q), kWindowContentRgn, &r);
+ topData()->isSetGeometry = 0;
+ } else {
+ setGeometry_sys_helper(x, y, w, h, isMove);
+ }
#else
NSWindow *window = qt_mac_window_for(q);
const QRect &fStrut = frameStrut();
@@ -3985,9 +4071,25 @@ void QWidgetPrivate::setGeometry_sys(int x, int y, int w, int h, bool isMove)
fStrut.top() + fStrut.bottom() + h));
NSRect cocoaFrameRect = NSMakeRect(frameRect.x(), flipYCoordinate(frameRect.bottom() + 1),
frameRect.width(), frameRect.height());
- [window setFrame:cocoaFrameRect display:NO];
+
+ QPoint currTopLeft = data.crect.topLeft();
+ if (currTopLeft.x() == x && currTopLeft.y() == y
+ && cocoaFrameRect.size.width != 0
+ && cocoaFrameRect.size.height != 0) {
+ [window setFrame:cocoaFrameRect display:NO];
+ } else {
+ // The window is moved and resized (or resized to zero).
+ // Since Cocoa usually only sends us a resize callback after
+ // setting a window frame, we issue an explicit move as
+ // well. To stop Cocoa from optimize away the move (since the move
+ // would have the same origin as the setFrame call) we shift the
+ // window back and forth inbetween.
+ cocoaFrameRect.origin.y += 1;
+ [window setFrame:cocoaFrameRect display:NO];
+ cocoaFrameRect.origin.y -= 1;
+ [window setFrameOrigin:cocoaFrameRect.origin];
+ }
#endif
- topData()->isSetGeometry = 0;
} else {
setGeometry_sys_helper(x, y, w, h, isMove);
}
@@ -3997,74 +4099,34 @@ void QWidgetPrivate::setGeometry_sys_helper(int x, int y, int w, int h, bool isM
{
Q_Q(QWidget);
bool realWindow = isRealWindow();
- if(QWExtra *extra = extraData()) { // any size restrictions?
- if(realWindow) {
- qt_mac_update_sizer(q);
- if(q->windowFlags() & Qt::WindowMaximizeButtonHint) {
-#ifndef QT_MAC_USE_COCOA
- OSWindowRef window = qt_mac_window_for(q);
- if(extra->maxw && extra->maxh && extra->maxw == extra->minw
- && extra->maxh == extra->minh) {
- ChangeWindowAttributes(window, kWindowNoAttributes, kWindowFullZoomAttribute);
- } else {
- ChangeWindowAttributes(window, kWindowFullZoomAttribute, kWindowNoAttributes);
- }
-#endif
- }
- }
-
- w = qMin(w,extra->maxw);
- h = qMin(h,extra->maxh);
- w = qMax(w,extra->minw);
- h = qMax(h,extra->minh);
-
- // Deal with size increment
- if(QTLWExtra *top = topData()) {
- if(top->incw) {
- w = w/top->incw;
- w *= top->incw;
- }
- if(top->inch) {
- h = h/top->inch;
- h *= top->inch;
- }
- }
- }
-
- if (realWindow) {
- w = qMax(0, w);
- h = qMax(0, h);
- }
QPoint oldp = q->pos();
QSize olds = q->size();
const bool isResize = (olds != QSize(w, h));
- if(!realWindow && !isResize && QPoint(x, y) == oldp)
+
+ if (!realWindow && !isResize && QPoint(x, y) == oldp)
return;
- if(isResize && q->isMaximized())
+
+ if (isResize)
data.window_state = data.window_state & ~Qt::WindowMaximized;
+
const bool visible = q->isVisible();
data.crect = QRect(x, y, w, h);
- if(realWindow) {
- if(QWExtra *extra = extraData()) { //set constraints
- const float max_f(20000);
+ if (realWindow) {
+ adjustWithinMaxAndMinSize(w, h);
+ qt_mac_update_sizer(q);
+
#ifndef QT_MAC_USE_COCOA
-#define SF(x) ((x > max_f) ? max_f : x)
- HISize max = CGSizeMake(SF(extra->maxw), SF(extra->maxh));
- HISize min = CGSizeMake(SF(extra->minw), SF(extra->minh));
-#undef SF
- SetWindowResizeLimits(qt_mac_window_for(q), &min, &max);
-#else
-#define SF(x) ((x > max_f) ? max_f : x)
- NSSize max = NSMakeSize(SF(extra->maxw), SF(extra->maxh));
- NSSize min = NSMakeSize(SF(extra->minw), SF(extra->minh));
-#undef SF
- [qt_mac_window_for(q) setMinSize:min];
- [qt_mac_window_for(q) setMaxSize:max];
-#endif
+ if (q->windowFlags() & Qt::WindowMaximizeButtonHint) {
+ OSWindowRef window = qt_mac_window_for(q);
+ if (extra->maxw && extra->maxh && extra->maxw == extra->minw
+ && extra->maxh == extra->minh) {
+ ChangeWindowAttributes(window, kWindowNoAttributes, kWindowFullZoomAttribute);
+ } else {
+ ChangeWindowAttributes(window, kWindowFullZoomAttribute, kWindowNoAttributes);
+ }
}
-#ifndef QT_MAC_USE_COCOA
HIRect bounds = CGRectMake(0, 0, w, h);
HIViewSetFrame(qt_mac_nativeview_for(q), &bounds);
#else
@@ -4110,6 +4172,7 @@ void QWidgetPrivate::setGeometry_sys_helper(int x, int y, int w, int h, bool isM
void QWidgetPrivate::setConstraints_sys()
{
updateMaximizeButton_sys();
+ applyMaxAndMinSizeOnWindow();
}
void QWidgetPrivate::updateMaximizeButton_sys()
@@ -4424,8 +4487,8 @@ void QWidgetPrivate::registerDropSite(bool on)
SetControlDragTrackingEnabled(qt_mac_nativeview_for(q), on);
#else
NSView *view = qt_mac_nativeview_for(q);
- if ([view isKindOfClass:[QT_MANGLE_NAMESPACE(QCocoaView) class]]) {
- [static_cast<QT_MANGLE_NAMESPACE(QCocoaView) *>(view) registerDragTypes:on];
+ if (on && [view isKindOfClass:[QT_MANGLE_NAMESPACE(QCocoaView) class]]) {
+ [static_cast<QT_MANGLE_NAMESPACE(QCocoaView) *>(view) registerDragTypes];
}
#endif
}
@@ -4583,12 +4646,15 @@ void QWidgetPrivate::setModal_sys()
OSWindowRef windowRef = qt_mac_window_for(q);
#ifdef QT_MAC_USE_COCOA
- bool windowIsSheet = [windowRef styleMask] & NSDocModalWindowMask;
+ bool alreadySheet = [windowRef styleMask] & NSDocModalWindowMask;
- if (q->windowModality() == Qt::WindowModal){
+ if (windowParent && q->windowModality() == Qt::WindowModal){
// Window should be window-modal, which implies a sheet.
- if (!windowIsSheet)
+ if (!alreadySheet) {
+ // NB: the following call will call setModal_sys recursivly:
recreateMacWindow();
+ windowRef = qt_mac_window_for(q);
+ }
if ([windowRef isKindOfClass:[NSPanel class]]){
// If the primary window of the sheet parent is a child of a modal dialog,
// the sheet parent should not be modally shaddowed.
@@ -4601,7 +4667,7 @@ void QWidgetPrivate::setModal_sys()
}
} else {
// Window shold not be window-modal, and as such, not a sheet.
- if (windowIsSheet){
+ if (alreadySheet){
// NB: the following call will call setModal_sys recursivly:
recreateMacWindow();
windowRef = qt_mac_window_for(q);
diff --git a/src/gui/kernel/qwidget_p.h b/src/gui/kernel/qwidget_p.h
index 9e93f66..2461820 100644
--- a/src/gui/kernel/qwidget_p.h
+++ b/src/gui/kernel/qwidget_p.h
@@ -257,6 +257,8 @@ public:
void macUpdateIsOpaque();
void setEnabled_helper_sys(bool enable);
bool isRealWindow() const;
+ void adjustWithinMaxAndMinSize(int &w, int &h);
+ void applyMaxAndMinSizeOnWindow();
#endif
void raise_sys();
@@ -535,6 +537,7 @@ public:
uint inDirtyList : 1;
uint isScrolled : 1;
uint isMoved : 1;
+ uint usesDoubleBufferedGLContext : 1;
#ifdef Q_WS_WIN
uint noPaintOnScreen : 1; // see qwidget_win.cpp ::paintEngine()
diff --git a/src/gui/kernel/qwidget_x11.cpp b/src/gui/kernel/qwidget_x11.cpp
index e71bc2f..6202b35 100644
--- a/src/gui/kernel/qwidget_x11.cpp
+++ b/src/gui/kernel/qwidget_x11.cpp
@@ -898,7 +898,7 @@ void QWidgetPrivate::x11UpdateIsOpaque()
bool visible = q->isVisible();
if (visible)
q->hide();
- q->setParent(q->parentWidget(), q->windowFlags() & ~Qt::WindowType_Mask);
+ q->setParent(q->parentWidget(), q->windowFlags());
q->move(pos);
if (visible)
q->show();
@@ -1750,8 +1750,8 @@ void QWidgetPrivate::show_sys()
mwmhints.functions &= ~MWM_FUNC_RESIZE;
}
- mwmhints.flags |= MWM_HINTS_DECORATIONS;
if (mwmhints.decorations == MWM_DECOR_ALL) {
+ mwmhints.flags |= MWM_HINTS_DECORATIONS;
mwmhints.decorations = (MWM_DECOR_BORDER
| MWM_DECOR_TITLE
| MWM_DECOR_MENU);
@@ -1760,10 +1760,12 @@ void QWidgetPrivate::show_sys()
}
if (q->windowFlags() & Qt::WindowMinimizeButtonHint) {
+ mwmhints.flags |= MWM_HINTS_DECORATIONS;
mwmhints.decorations |= MWM_DECOR_MINIMIZE;
mwmhints.functions |= MWM_FUNC_MINIMIZE;
}
if (q->windowFlags() & Qt::WindowMaximizeButtonHint) {
+ mwmhints.flags |= MWM_HINTS_DECORATIONS;
mwmhints.decorations |= MWM_DECOR_MAXIMIZE;
mwmhints.functions |= MWM_FUNC_MAXIMIZE;
}
@@ -2745,12 +2747,6 @@ void QWidgetPrivate::setWindowOpacity_sys(qreal opacity)
32, PropModeReplace, (uchar*)&value, 1);
}
-/*!
- Returns information about the configuration of the X display used to display
- the widget.
-
- \warning This function is only available on X11.
-*/
const QX11Info &QWidget::x11Info() const
{
Q_D(const QWidget);
@@ -2787,13 +2783,6 @@ QWindowSurface *QWidgetPrivate::createDefaultWindowSurface_sys()
return new QX11WindowSurface(q_func());
}
-/*!
- Returns the X11 Picture handle of the widget for XRender
- support. Use of this function is not portable. This function will
- return 0 if XRender support is not compiled into Qt, if the
- XRender extension is not supported on the X11 display, or if the
- handle could not be created.
-*/
Qt::HANDLE QWidget::x11PictureHandle() const
{
#ifndef QT_NO_XRENDER
diff --git a/src/gui/kernel/qx11embed_x11.cpp b/src/gui/kernel/qx11embed_x11.cpp
index e49c4d6..6329135 100644
--- a/src/gui/kernel/qx11embed_x11.cpp
+++ b/src/gui/kernel/qx11embed_x11.cpp
@@ -481,7 +481,7 @@ QX11EmbedWidget::QX11EmbedWidget(QWidget *parent)
| ExposureMask | StructureNotifyMask
| SubstructureNotifyMask | PropertyChangeMask);
- unsigned int data[] = {XEMBED_VERSION, XEMBED_MAPPED};
+ long data[] = {XEMBED_VERSION, XEMBED_MAPPED};
XChangeProperty(x11Info().display(), internalWinId(), ATOM(_XEMBED_INFO),
ATOM(_XEMBED_INFO), 32, PropModeReplace,
(unsigned char*) data, 2);
@@ -1571,7 +1571,7 @@ void QX11EmbedContainer::showEvent(QShowEvent *)
{
Q_D(QX11EmbedContainer);
if (d->client) {
- unsigned int data[] = {XEMBED_VERSION, XEMBED_MAPPED};
+ long data[] = {XEMBED_VERSION, XEMBED_MAPPED};
XChangeProperty(x11Info().display(), d->client, ATOM(_XEMBED_INFO), ATOM(_XEMBED_INFO), 32,
PropModeReplace, (unsigned char *) data, 2);
}
@@ -1587,8 +1587,7 @@ void QX11EmbedContainer::hideEvent(QHideEvent *)
{
Q_D(QX11EmbedContainer);
if (d->client) {
- unsigned int data[] = {XEMBED_VERSION, XEMBED_MAPPED};
-
+ long data[] = {XEMBED_VERSION, XEMBED_MAPPED};
XChangeProperty(x11Info().display(), d->client, ATOM(_XEMBED_INFO), ATOM(_XEMBED_INFO), 32,
PropModeReplace, (unsigned char *) data, 2);
}
diff --git a/src/gui/painting/qbackingstore.cpp b/src/gui/painting/qbackingstore.cpp
index fbac811a..0a3a8dd 100644
--- a/src/gui/painting/qbackingstore.cpp
+++ b/src/gui/painting/qbackingstore.cpp
@@ -492,7 +492,8 @@ static inline void sendUpdateRequest(QWidget *widget, bool updateImmediately)
return;
#if defined(Q_WS_WIN) && !defined(Q_OS_WINCE)
- if (QApplicationPrivate::inSizeMove && widget->internalWinId() && !updateImmediately) {
+ if (QApplicationPrivate::inSizeMove && widget->internalWinId() && !updateImmediately
+ && !widget->testAttribute(Qt::WA_DontShowOnScreen)) {
// Tell Windows to send us a paint event if we're in WM_SIZE/WM_MOVE; posted events
// are blocked until the mouse button is released. See task 146849.
const QRegion rgn(qt_dirtyRegion(widget));
@@ -1510,6 +1511,9 @@ void QWidgetPrivate::invalidateBuffer(const QRect &rect)
void QWidgetPrivate::repaint_sys(const QRegion &rgn)
{
+ if (data.in_destructor)
+ return;
+
Q_Q(QWidget);
if (q->testAttribute(Qt::WA_StaticContents)) {
if (!extra)
@@ -1517,13 +1521,20 @@ void QWidgetPrivate::repaint_sys(const QRegion &rgn)
extra->staticContentsSize = data.crect.size();
}
+ QPaintEngine *engine = q->paintEngine();
+ // QGLWidget does not support partial updates if:
+ // 1) The context is double buffered
+ // 2) The context is single buffered and auto-fill background is enabled.
+ const bool noPartialUpdateSupport = (engine && engine->type() == QPaintEngine::OpenGL)
+ && (usesDoubleBufferedGLContext || q->autoFillBackground());
+ QRegion toBePainted(noPartialUpdateSupport ? q->rect() : rgn);
+
#ifdef Q_WS_MAC
// No difference between update() and repaint() on the Mac.
- update_sys(rgn);
+ update_sys(toBePainted);
return;
#endif
- QRegion toBePainted(rgn);
toBePainted &= clipRect();
clipToEffectiveMask(toBePainted);
if (toBePainted.isEmpty())
diff --git a/src/gui/painting/qblendfunctions.cpp b/src/gui/painting/qblendfunctions.cpp
index 6589439..93f11e1 100644
--- a/src/gui/painting/qblendfunctions.cpp
+++ b/src/gui/painting/qblendfunctions.cpp
@@ -44,21 +44,6 @@
QT_BEGIN_NAMESPACE
-
-// This ifdef is made with the best of intention. GCC fails to
-// optimzie the code properly so the bytemul approach is the fastest
-// it gets. Both on ARM and on MSVC the code is optimized to be better
-// than the bytemul approach... On the other hand... This code is
-// almost never run on i386 so it may be downright silly to have this
-// piece of code here...
-#if defined (Q_CC_GNU) && (defined (QT_ARCH_I386) || defined (QT_ARCH_X86_64))
-# define QT_BLEND_USE_BYTEMUL
-#endif
-
-// #define QT_DEBUG_DRAW
-
-static const qreal aliasedCoordinateDelta = 0.5 - 0.015625;
-
struct SourceOnlyAlpha
{
inline uchar alpha(uchar src) const { return src; }
@@ -153,14 +138,11 @@ struct Blend_ARGB32_on_RGB16_SourceAndConstAlpha {
template <typename SRC, typename T>
void qt_scale_image_16bit(uchar *destPixels, int dbpl,
const uchar *srcPixels, int sbpl,
- const QRectF &target,
+ const QRectF &targetRect,
const QRectF &srcRect,
const QRect &clip,
T blender)
{
- const QRectF targetRect = target.translated(aliasedCoordinateDelta,
- aliasedCoordinateDelta);
-
qreal sx = targetRect.width() / (qreal) srcRect.width();
qreal sy = targetRect.height() / (qreal) srcRect.height();
@@ -286,7 +268,7 @@ static void qt_blend_rgb16_on_rgb16(uchar *dst, int dbpl,
int const_alpha)
{
#ifdef QT_DEBUG_DRAW
- printf("qt_blend_argb16_on_rgb16: dst=(%p, %d), src=(%p, %d), dim=(%d, %d) alpha=%d\n",
+ printf("qt_blend_rgb16_on_rgb16: dst=(%p, %d), src=(%p, %d), dim=(%d, %d) alpha=%d\n",
dst, dbpl, src, sbpl, w, h, const_alpha);
#endif
@@ -347,11 +329,6 @@ template <typename T> void qt_blend_argb24_on_rgb16(uchar *destPixels, int dbpl,
if (alpha == 255) {
*dst = spix;
} else if (alpha != 0) {
-#ifdef QT_BLEND_USE_BYTEMUL
- // truncate green channel to avoid overflow
- *dst = (alphaFunc.bytemul(spix) & 0xffdf)
- + (quint16) qrgb565(*dst).byte_mul(qrgb565::ialpha(alpha));
-#else
quint16 dpix = *dst;
quint32 sia = 255 - alpha;
@@ -363,12 +340,11 @@ template <typename T> void qt_blend_argb24_on_rgb16(uchar *destPixels, int dbpl,
quint32 siag = dg * sia;
quint32 siab = db * sia;
- quint32 rr = ((siar + (siar>>8) + (0x80 << 11)) >> 8) & 0xf800;
- quint32 rg = ((siag + (siag>>8) + (0x80 << 5)) >> 8) & 0x07e0;
- quint32 rb = ((siab + (siab>>8) + (0x80 >> 3)) >> 8);
+ quint32 rr = ((siar + (siar>>8) + (0x80 << 8)) >> 8) & 0xf800;
+ quint32 rg = ((siag + (siag>>8) + (0x80 << 3)) >> 8) & 0x07e0;
+ quint32 rb = ((siab + (siab>>8) + (0x80 >> 3)) >> 8) & 0x001f;
*dst = alphaFunc.bytemul(spix) + rr + rg + rb;
-#endif
}
++dst;
@@ -435,113 +411,45 @@ static void qt_blend_argb32_on_rgb16(uchar *destPixels, int dbpl,
}
quint16 *dst = (quint16 *) destPixels;
- int dstExtraStride = dbpl / 2 - w;
-
- const quint32 *src = (const quint32 *) srcPixels;
- int srcExtraStride = sbpl / 4 - w;
+ quint32 *src = (quint32 *) srcPixels;
for (int y=0; y<h; ++y) {
- int length = w;
- const int dstAlign = ((quintptr)dst) & 0x3;
- if (dstAlign) {
- const quint8 alpha = qAlpha(*src);
- if (alpha) {
- quint16 s = convert_argb32_to_rgb16(*src);
- if (alpha < 255)
- s += BYTE_MUL_RGB16(*dst, 255 - alpha);
- *dst = s;
- }
- ++dst;
- ++src;
- --length;
- }
+ for (int x=0; x<w; ++x) {
- const int length32 = length >> 1;
- const int srcAlign = ((quintptr)src) & 0x3;
- if (length32) {
- if (srcAlign) {
- for (int i = 0; i < length32; ++i) {
- quint32 *dest32 = reinterpret_cast<quint32*>(dst);
- const quint8 a1 = qAlpha(src[0]);
- const quint8 a2 = qAlpha(src[1]);
- quint32 s;
-
- if (!a1 && !a2) {
- src += 2;
- dst +=2;
- continue;
- }
-
- s = convert_argb32_to_rgb16(src[0])
- | (convert_argb32_to_rgb16(src[1]) << 16);
-
- if (a1 == a2) {
- if (a1 < 255) {
- const quint8 sa = ((255 - a1)+1) >> 3;
- s += BYTE_MUL_RGB16_32(*dest32, sa);
- }
- } else {
- if (a1 < 255)
- s += BYTE_MUL_RGB16(dst[0], 255 - a1);
- if (a2 < 255)
- s += BYTE_MUL_RGB16(dst[1], 255 - a2) << 16;
- }
-
- *dest32 = s;
- src += 2;
- dst += 2;
- }
- } else {
- for (int i = 0; i < length32; ++i) {
- quint32 *dest32 = reinterpret_cast<quint32*>(dst);
- const quint8 a1 = qAlpha(src[0]);
- const quint8 a2 = qAlpha(src[1]);
- quint32 s;
-
- if (!a1 && !a2) {
- src += 2;
- dst +=2;
- continue;
- }
-
- const quint64 *src64 =
- reinterpret_cast<const quint64*>(src);
- s = qConvertRgb32To16x2(*src64);
-
- if (a1 == a2) {
- if (a1 < 255) {
- const quint8 sa = ((255 - a1)+1) >> 3;
- s += BYTE_MUL_RGB16_32(*dest32, sa);
- }
- } else {
- if (a1 < 255)
- s += BYTE_MUL_RGB16(dst[0], 255 - a1);
- if (a2 < 255)
- s += BYTE_MUL_RGB16(dst[1], 255 - a2) << 16;
- }
-
- *dest32 = s;
- src += 2;
- dst += 2;
- }
- }
- }
- const int tail = length & 0x1;
- if (tail) {
- const quint8 alpha = qAlpha(*src);
- if (alpha) {
- quint16 s = convert_argb32_to_rgb16(*src);
- if (alpha < 255)
- s += BYTE_MUL_RGB16(*dst, 255 - alpha);
- *dst = s;
+ quint32 spix = src[x];
+ quint32 alpha = spix >> 24;
+
+ if (alpha == 255) {
+ dst[x] = convert_argb32_to_rgb16(spix);
+ } else if (alpha != 0) {
+ quint32 dpix = dst[x];
+
+ quint32 sia = 255 - alpha;
+
+ quint32 sr = (spix >> 8) & 0xf800;
+ quint32 sg = (spix >> 5) & 0x07e0;
+ quint32 sb = (spix >> 3) & 0x001f;
+
+ quint32 dr = (dpix & 0x0000f800);
+ quint32 dg = (dpix & 0x000007e0);
+ quint32 db = (dpix & 0x0000001f);
+
+ quint32 siar = dr * sia;
+ quint32 siag = dg * sia;
+ quint32 siab = db * sia;
+
+ quint32 rr = sr + ((siar + (siar>>8) + (0x80 << 8)) >> 8);
+ quint32 rg = sg + ((siag + (siag>>8) + (0x80 << 3)) >> 8);
+ quint32 rb = sb + ((siab + (siab>>8) + (0x80 >> 3)) >> 8);
+
+ dst[x] = (rr & 0xf800)
+ | (rg & 0x07e0)
+ | (rb);
}
- ++dst;
- ++src;
}
- dst += dstExtraStride;
- src += srcExtraStride;
+ dst = (quint16 *) (((uchar *) dst) + dbpl);
+ src = (quint32 *) (((uchar *) src) + sbpl);
}
-
}
@@ -705,14 +613,11 @@ struct Blend_ARGB32_on_ARGB32_SourceAndConstAlpha {
template <typename T> void qt_scale_image_32bit(uchar *destPixels, int dbpl,
const uchar *srcPixels, int sbpl,
- const QRectF &target,
+ const QRectF &targetRect,
const QRectF &srcRect,
const QRect &clip,
T blender)
{
- const QRectF targetRect = target.translated(aliasedCoordinateDelta,
- aliasedCoordinateDelta);
-
qreal sx = targetRect.width() / (qreal) srcRect.width();
qreal sy = targetRect.height() / (qreal) srcRect.height();
diff --git a/src/gui/painting/qcolor.cpp b/src/gui/painting/qcolor.cpp
index 5d7d4ab..1723a19 100644
--- a/src/gui/painting/qcolor.cpp
+++ b/src/gui/painting/qcolor.cpp
@@ -1369,7 +1369,7 @@ QColor QColor::toRgb() const
*/
QColor QColor::toHsv() const
{
- if (!isValid())
+ if (!isValid() || cspec == Hsv)
return *this;
if (cspec != Rgb)
@@ -1421,7 +1421,7 @@ QColor QColor::toHsv() const
*/
QColor QColor::toCmyk() const
{
- if (!isValid())
+ if (!isValid() || cspec == Cmyk)
return *this;
if (cspec != Rgb)
return toRgb().toCmyk();
diff --git a/src/gui/painting/qcolormap_win.cpp b/src/gui/painting/qcolormap_win.cpp
index d61b933..7d36582 100644
--- a/src/gui/painting/qcolormap_win.cpp
+++ b/src/gui/painting/qcolormap_win.cpp
@@ -138,7 +138,11 @@ void QColormap::cleanup()
}
QColormap QColormap::instance(int)
-{ return QColormap(); }
+{
+ Q_ASSERT_X(screenMap, "QColormap",
+ "A QApplication object needs to be constructed before QColormap is used.");
+ return QColormap();
+}
QColormap::QColormap()
: d(screenMap)
diff --git a/src/gui/painting/qdrawhelper.cpp b/src/gui/painting/qdrawhelper.cpp
index efdc778..9f2831d 100644
--- a/src/gui/painting/qdrawhelper.cpp
+++ b/src/gui/painting/qdrawhelper.cpp
@@ -370,7 +370,7 @@ Q_STATIC_TEMPLATE_FUNCTION void QT_FASTCALL destStore(QRasterBuffer *rasterBuffe
Q_TEMPLATE_FIX(DST))
{
DST *dest = reinterpret_cast<DST*>(rasterBuffer->scanLine(y)) + x;
- const quint32 *src = reinterpret_cast<const quint32*>(buffer);
+ const quint32p *src = reinterpret_cast<const quint32p*>(buffer);
while (length--)
*dest++ = DST(*src++);
}
@@ -2400,8 +2400,7 @@ static inline int color_burn_op(int dst, int src, int da, int sa)
if (src == 0 || src_da + dst_sa <= sa_da)
return qt_div_255(temp);
- else
- return qt_div_255(sa * (src_da + dst_sa - sa_da) / src + temp);
+ return qt_div_255(sa * (src_da + dst_sa - sa_da) / src + temp);
}
template <typename T>
@@ -4763,7 +4762,7 @@ void QT_FASTCALL blendUntransformed(int count, const QSpan *spans, void *userDat
static void blend_untransformed_rgb888(int count, const QSpan *spans,
void *userData)
{
-#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_24)
+#if defined(QT_QWS_DEPTH_24)
QSpanData *data = reinterpret_cast<QSpanData *>(userData);
if (data->texture.format == QImage::Format_RGB888)
@@ -4777,7 +4776,7 @@ static void blend_untransformed_rgb888(int count, const QSpan *spans,
static void blend_untransformed_argb6666(int count, const QSpan *spans,
void *userData)
{
-#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_18)
+#if defined(QT_QWS_DEPTH_18)
QSpanData *data = reinterpret_cast<QSpanData *>(userData);
if (data->texture.format == QImage::Format_ARGB6666_Premultiplied)
@@ -4793,7 +4792,7 @@ static void blend_untransformed_argb6666(int count, const QSpan *spans,
static void blend_untransformed_rgb666(int count, const QSpan *spans,
void *userData)
{
-#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_18)
+#if defined(QT_QWS_DEPTH_18)
QSpanData *data = reinterpret_cast<QSpanData *>(userData);
if (data->texture.format == QImage::Format_ARGB6666_Premultiplied)
@@ -4809,7 +4808,7 @@ static void blend_untransformed_rgb666(int count, const QSpan *spans,
static void blend_untransformed_argb8565(int count, const QSpan *spans,
void *userData)
{
-#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_16)
+#if defined(QT_QWS_DEPTH_16)
QSpanData *data = reinterpret_cast<QSpanData *>(userData);
if (data->texture.format == QImage::Format_ARGB8565_Premultiplied)
@@ -4825,7 +4824,7 @@ static void blend_untransformed_argb8565(int count, const QSpan *spans,
static void blend_untransformed_rgb565(int count, const QSpan *spans,
void *userData)
{
-#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_16)
+#if defined(QT_QWS_DEPTH_16)
QSpanData *data = reinterpret_cast<QSpanData *>(userData);
if (data->texture.format == QImage::Format_ARGB8565_Premultiplied)
@@ -4841,7 +4840,7 @@ static void blend_untransformed_rgb565(int count, const QSpan *spans,
static void blend_untransformed_argb8555(int count, const QSpan *spans,
void *userData)
{
-#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_15)
+#if defined(QT_QWS_DEPTH_15)
QSpanData *data = reinterpret_cast<QSpanData *>(userData);
if (data->texture.format == QImage::Format_ARGB8555_Premultiplied)
@@ -4857,7 +4856,7 @@ static void blend_untransformed_argb8555(int count, const QSpan *spans,
static void blend_untransformed_rgb555(int count, const QSpan *spans,
void *userData)
{
-#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_15)
+#if defined(QT_QWS_DEPTH_15)
QSpanData *data = reinterpret_cast<QSpanData *>(userData);
if (data->texture.format == QImage::Format_ARGB8555_Premultiplied)
@@ -4873,7 +4872,7 @@ static void blend_untransformed_rgb555(int count, const QSpan *spans,
static void blend_untransformed_argb4444(int count, const QSpan *spans,
void *userData)
{
-#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_12)
+#if defined(QT_QWS_DEPTH_12)
QSpanData *data = reinterpret_cast<QSpanData *>(userData);
if (data->texture.format == QImage::Format_ARGB4444_Premultiplied)
@@ -4889,7 +4888,7 @@ static void blend_untransformed_argb4444(int count, const QSpan *spans,
static void blend_untransformed_rgb444(int count, const QSpan *spans,
void *userData)
{
-#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_12)
+#if defined(QT_QWS_DEPTH_12)
QSpanData *data = reinterpret_cast<QSpanData *>(userData);
if (data->texture.format == QImage::Format_ARGB4444_Premultiplied)
@@ -5084,7 +5083,7 @@ Q_STATIC_TEMPLATE_FUNCTION void blendTiled(int count, const QSpan *spans, void *
static void blend_tiled_rgb888(int count, const QSpan *spans, void *userData)
{
-#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_24)
+#if defined(QT_QWS_DEPTH_24)
QSpanData *data = reinterpret_cast<QSpanData *>(userData);
if (data->texture.format == QImage::Format_RGB888)
@@ -5097,7 +5096,7 @@ static void blend_tiled_rgb888(int count, const QSpan *spans, void *userData)
static void blend_tiled_argb6666(int count, const QSpan *spans, void *userData)
{
-#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_18)
+#if defined(QT_QWS_DEPTH_18)
QSpanData *data = reinterpret_cast<QSpanData *>(userData);
if (data->texture.format == QImage::Format_ARGB6666_Premultiplied)
@@ -5112,7 +5111,7 @@ static void blend_tiled_argb6666(int count, const QSpan *spans, void *userData)
static void blend_tiled_rgb666(int count, const QSpan *spans, void *userData)
{
-#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_18)
+#if defined(QT_QWS_DEPTH_18)
QSpanData *data = reinterpret_cast<QSpanData *>(userData);
if (data->texture.format == QImage::Format_ARGB6666_Premultiplied)
@@ -5127,7 +5126,7 @@ static void blend_tiled_rgb666(int count, const QSpan *spans, void *userData)
static void blend_tiled_argb8565(int count, const QSpan *spans, void *userData)
{
-#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_16)
+#if defined(QT_QWS_DEPTH_16)
QSpanData *data = reinterpret_cast<QSpanData *>(userData);
if (data->texture.format == QImage::Format_ARGB8565_Premultiplied)
@@ -5142,7 +5141,7 @@ static void blend_tiled_argb8565(int count, const QSpan *spans, void *userData)
static void blend_tiled_rgb565(int count, const QSpan *spans, void *userData)
{
-#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_16)
+#if defined(QT_QWS_DEPTH_16)
QSpanData *data = reinterpret_cast<QSpanData *>(userData);
if (data->texture.format == QImage::Format_ARGB8565_Premultiplied)
@@ -5157,7 +5156,7 @@ static void blend_tiled_rgb565(int count, const QSpan *spans, void *userData)
static void blend_tiled_argb8555(int count, const QSpan *spans, void *userData)
{
-#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_15)
+#if defined(QT_QWS_DEPTH_15)
QSpanData *data = reinterpret_cast<QSpanData *>(userData);
if (data->texture.format == QImage::Format_ARGB8555_Premultiplied)
@@ -5172,7 +5171,7 @@ static void blend_tiled_argb8555(int count, const QSpan *spans, void *userData)
static void blend_tiled_rgb555(int count, const QSpan *spans, void *userData)
{
-#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_15)
+#if defined(QT_QWS_DEPTH_15)
QSpanData *data = reinterpret_cast<QSpanData *>(userData);
if (data->texture.format == QImage::Format_ARGB8555_Premultiplied)
@@ -5187,7 +5186,7 @@ static void blend_tiled_rgb555(int count, const QSpan *spans, void *userData)
static void blend_tiled_argb4444(int count, const QSpan *spans, void *userData)
{
-#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_12)
+#if defined(QT_QWS_DEPTH_12)
QSpanData *data = reinterpret_cast<QSpanData *>(userData);
if (data->texture.format == QImage::Format_ARGB4444_Premultiplied)
@@ -5202,7 +5201,7 @@ static void blend_tiled_argb4444(int count, const QSpan *spans, void *userData)
static void blend_tiled_rgb444(int count, const QSpan *spans, void *userData)
{
-#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_12)
+#if defined(QT_QWS_DEPTH_12)
QSpanData *data = reinterpret_cast<QSpanData *>(userData);
if (data->texture.format == QImage::Format_ARGB4444_Premultiplied)
@@ -5599,7 +5598,7 @@ Q_STATIC_TEMPLATE_FUNCTION void blendTransformedBilinear(int count, const QSpan
static void blend_transformed_bilinear_rgb888(int count, const QSpan *spans, void *userData)
{
-#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_24)
+#if defined(QT_QWS_DEPTH_24)
QSpanData *data = reinterpret_cast<QSpanData *>(userData);
if (data->texture.format == QImage::Format_RGB888)
@@ -5612,7 +5611,7 @@ static void blend_transformed_bilinear_rgb888(int count, const QSpan *spans, voi
static void blend_transformed_bilinear_argb6666(int count, const QSpan *spans, void *userData)
{
-#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_18)
+#if defined(QT_QWS_DEPTH_18)
QSpanData *data = reinterpret_cast<QSpanData *>(userData);
if (data->texture.format == QImage::Format_ARGB6666_Premultiplied)
@@ -5627,7 +5626,7 @@ static void blend_transformed_bilinear_argb6666(int count, const QSpan *spans, v
static void blend_transformed_bilinear_rgb666(int count, const QSpan *spans, void *userData)
{
-#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_18)
+#if defined(QT_QWS_DEPTH_18)
QSpanData *data = reinterpret_cast<QSpanData *>(userData);
if (data->texture.format == QImage::Format_ARGB6666_Premultiplied)
@@ -5642,7 +5641,7 @@ static void blend_transformed_bilinear_rgb666(int count, const QSpan *spans, voi
static void blend_transformed_bilinear_argb8565(int count, const QSpan *spans, void *userData)
{
-#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_16)
+#if defined(QT_QWS_DEPTH_16)
QSpanData *data = reinterpret_cast<QSpanData *>(userData);
if (data->texture.format == QImage::Format_ARGB8565_Premultiplied)
@@ -5658,7 +5657,7 @@ static void blend_transformed_bilinear_argb8565(int count, const QSpan *spans, v
static void blend_transformed_bilinear_rgb565(int count, const QSpan *spans,
void *userData)
{
-#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_16)
+#if defined(QT_QWS_DEPTH_16)
QSpanData *data = reinterpret_cast<QSpanData *>(userData);
if (data->texture.format == QImage::Format_RGB16)
@@ -5673,7 +5672,7 @@ static void blend_transformed_bilinear_rgb565(int count, const QSpan *spans,
static void blend_transformed_bilinear_argb8555(int count, const QSpan *spans, void *userData)
{
-#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_15)
+#if defined(QT_QWS_DEPTH_15)
QSpanData *data = reinterpret_cast<QSpanData *>(userData);
if (data->texture.format == QImage::Format_ARGB8555_Premultiplied)
@@ -5688,7 +5687,7 @@ static void blend_transformed_bilinear_argb8555(int count, const QSpan *spans, v
static void blend_transformed_bilinear_rgb555(int count, const QSpan *spans, void *userData)
{
-#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_15)
+#if defined(QT_QWS_DEPTH_15)
QSpanData *data = reinterpret_cast<QSpanData *>(userData);
if (data->texture.format == QImage::Format_ARGB8555_Premultiplied)
@@ -5703,7 +5702,7 @@ static void blend_transformed_bilinear_rgb555(int count, const QSpan *spans, voi
static void blend_transformed_bilinear_argb4444(int count, const QSpan *spans, void *userData)
{
-#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_12)
+#if defined(QT_QWS_DEPTH_12)
QSpanData *data = reinterpret_cast<QSpanData *>(userData);
if (data->texture.format == QImage::Format_ARGB4444_Premultiplied)
@@ -5718,7 +5717,7 @@ static void blend_transformed_bilinear_argb4444(int count, const QSpan *spans, v
static void blend_transformed_bilinear_rgb444(int count, const QSpan *spans, void *userData)
{
-#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_12)
+#if defined(QT_QWS_DEPTH_12)
QSpanData *data = reinterpret_cast<QSpanData *>(userData);
if (data->texture.format == QImage::Format_ARGB4444_Premultiplied)
@@ -6195,7 +6194,7 @@ Q_STATIC_TEMPLATE_FUNCTION void blendTransformed(int count, const QSpan *spans,
static void blend_transformed_rgb888(int count, const QSpan *spans,
void *userData)
{
-#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_24)
+#if defined(QT_QWS_DEPTH_24)
QSpanData *data = reinterpret_cast<QSpanData *>(userData);
if (data->texture.format == QImage::Format_RGB888)
@@ -6209,7 +6208,7 @@ static void blend_transformed_rgb888(int count, const QSpan *spans,
static void blend_transformed_argb6666(int count, const QSpan *spans,
void *userData)
{
-#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_18)
+#if defined(QT_QWS_DEPTH_18)
QSpanData *data = reinterpret_cast<QSpanData *>(userData);
if (data->texture.format == QImage::Format_ARGB6666_Premultiplied)
@@ -6225,7 +6224,7 @@ static void blend_transformed_argb6666(int count, const QSpan *spans,
static void blend_transformed_rgb666(int count, const QSpan *spans,
void *userData)
{
-#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_18)
+#if defined(QT_QWS_DEPTH_18)
QSpanData *data = reinterpret_cast<QSpanData *>(userData);
if (data->texture.format == QImage::Format_ARGB6666_Premultiplied)
@@ -6241,7 +6240,7 @@ static void blend_transformed_rgb666(int count, const QSpan *spans,
static void blend_transformed_argb8565(int count, const QSpan *spans,
void *userData)
{
-#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_16)
+#if defined(QT_QWS_DEPTH_16)
QSpanData *data = reinterpret_cast<QSpanData *>(userData);
if (data->texture.format == QImage::Format_ARGB8565_Premultiplied)
@@ -6257,7 +6256,7 @@ static void blend_transformed_argb8565(int count, const QSpan *spans,
static void blend_transformed_rgb565(int count, const QSpan *spans,
void *userData)
{
-#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_16)
+#if defined(QT_QWS_DEPTH_16)
QSpanData *data = reinterpret_cast<QSpanData *>(userData);
if (data->texture.format == QImage::Format_ARGB8565_Premultiplied)
@@ -6273,7 +6272,7 @@ static void blend_transformed_rgb565(int count, const QSpan *spans,
static void blend_transformed_argb8555(int count, const QSpan *spans,
void *userData)
{
-#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_15)
+#if defined(QT_QWS_DEPTH_15)
QSpanData *data = reinterpret_cast<QSpanData *>(userData);
if (data->texture.format == QImage::Format_ARGB8555_Premultiplied)
@@ -6289,7 +6288,7 @@ static void blend_transformed_argb8555(int count, const QSpan *spans,
static void blend_transformed_rgb555(int count, const QSpan *spans,
void *userData)
{
-#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_15)
+#if defined(QT_QWS_DEPTH_15)
QSpanData *data = reinterpret_cast<QSpanData *>(userData);
if (data->texture.format == QImage::Format_ARGB8555_Premultiplied)
@@ -6305,7 +6304,7 @@ static void blend_transformed_rgb555(int count, const QSpan *spans,
static void blend_transformed_argb4444(int count, const QSpan *spans,
void *userData)
{
-#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_12)
+#if defined(QT_QWS_DEPTH_12)
QSpanData *data = reinterpret_cast<QSpanData *>(userData);
if (data->texture.format == QImage::Format_ARGB4444_Premultiplied)
@@ -6321,7 +6320,7 @@ static void blend_transformed_argb4444(int count, const QSpan *spans,
static void blend_transformed_rgb444(int count, const QSpan *spans,
void *userData)
{
-#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_12)
+#if defined(QT_QWS_DEPTH_12)
QSpanData *data = reinterpret_cast<QSpanData *>(userData);
if (data->texture.format == QImage::Format_ARGB4444_Premultiplied)
@@ -6619,7 +6618,7 @@ Q_STATIC_TEMPLATE_FUNCTION void blendTransformedTiled(int count, const QSpan *sp
static void blend_transformed_tiled_rgb888(int count, const QSpan *spans,
void *userData)
{
-#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_24)
+#if defined(QT_QWS_DEPTH_24)
QSpanData *data = reinterpret_cast<QSpanData *>(userData);
if (data->texture.format == QImage::Format_RGB888)
@@ -6633,7 +6632,7 @@ static void blend_transformed_tiled_rgb888(int count, const QSpan *spans,
static void blend_transformed_tiled_argb6666(int count, const QSpan *spans,
void *userData)
{
-#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_18)
+#if defined(QT_QWS_DEPTH_18)
QSpanData *data = reinterpret_cast<QSpanData *>(userData);
if (data->texture.format == QImage::Format_ARGB6666_Premultiplied)
@@ -6649,7 +6648,7 @@ static void blend_transformed_tiled_argb6666(int count, const QSpan *spans,
static void blend_transformed_tiled_rgb666(int count, const QSpan *spans,
void *userData)
{
-#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_18)
+#if defined(QT_QWS_DEPTH_18)
QSpanData *data = reinterpret_cast<QSpanData *>(userData);
if (data->texture.format == QImage::Format_ARGB6666_Premultiplied)
@@ -6665,7 +6664,7 @@ static void blend_transformed_tiled_rgb666(int count, const QSpan *spans,
static void blend_transformed_tiled_argb8565(int count, const QSpan *spans,
void *userData)
{
-#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_16)
+#if defined(QT_QWS_DEPTH_16)
QSpanData *data = reinterpret_cast<QSpanData *>(userData);
if (data->texture.format == QImage::Format_ARGB8565_Premultiplied)
@@ -6681,7 +6680,7 @@ static void blend_transformed_tiled_argb8565(int count, const QSpan *spans,
static void blend_transformed_tiled_rgb565(int count, const QSpan *spans,
void *userData)
{
-#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_16)
+#if defined(QT_QWS_DEPTH_16)
QSpanData *data = reinterpret_cast<QSpanData *>(userData);
if (data->texture.format == QImage::Format_ARGB8565_Premultiplied)
@@ -6697,7 +6696,7 @@ static void blend_transformed_tiled_rgb565(int count, const QSpan *spans,
static void blend_transformed_tiled_argb8555(int count, const QSpan *spans,
void *userData)
{
-#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_15)
+#if defined(QT_QWS_DEPTH_15)
QSpanData *data = reinterpret_cast<QSpanData *>(userData);
if (data->texture.format == QImage::Format_ARGB8555_Premultiplied)
@@ -6713,7 +6712,7 @@ static void blend_transformed_tiled_argb8555(int count, const QSpan *spans,
static void blend_transformed_tiled_rgb555(int count, const QSpan *spans,
void *userData)
{
-#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_15)
+#if defined(QT_QWS_DEPTH_15)
QSpanData *data = reinterpret_cast<QSpanData *>(userData);
if (data->texture.format == QImage::Format_ARGB8555_Premultiplied)
@@ -6729,7 +6728,7 @@ static void blend_transformed_tiled_rgb555(int count, const QSpan *spans,
static void blend_transformed_tiled_argb4444(int count, const QSpan *spans,
void *userData)
{
-#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_12)
+#if defined(QT_QWS_DEPTH_12)
QSpanData *data = reinterpret_cast<QSpanData *>(userData);
if (data->texture.format == QImage::Format_ARGB4444_Premultiplied)
@@ -6745,7 +6744,7 @@ static void blend_transformed_tiled_argb4444(int count, const QSpan *spans,
static void blend_transformed_tiled_rgb444(int count, const QSpan *spans,
void *userData)
{
-#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_12)
+#if defined(QT_QWS_DEPTH_12)
QSpanData *data = reinterpret_cast<QSpanData *>(userData);
if (data->texture.format == QImage::Format_ARGB4444_Premultiplied)
diff --git a/src/gui/painting/qemulationpaintengine.cpp b/src/gui/painting/qemulationpaintengine.cpp
index 3397c45..175f1ab 100644
--- a/src/gui/painting/qemulationpaintengine.cpp
+++ b/src/gui/painting/qemulationpaintengine.cpp
@@ -123,14 +123,30 @@ void QEmulationPaintEngine::stroke(const QVectorPath &path, const QPen &pen)
real_engine->stroke(path, bgPen);
}
-
QBrush brush = pen.brush();
+ QPen copy = pen;
Qt::BrushStyle style = qbrush_style(brush);
if (style >= Qt::LinearGradientPattern && style <= Qt::ConicalGradientPattern) {
const QGradient *g = brush.gradient();
+
if (g->coordinateMode() > QGradient::LogicalMode) {
- QPaintEngineEx::stroke(path, pen);
- return;
+ if (g->coordinateMode() == QGradient::StretchToDeviceMode) {
+ QTransform mat = brush.transform();
+ mat.scale(real_engine->painter()->device()->width(), real_engine->painter()->device()->height());
+ brush.setTransform(mat);
+ copy.setBrush(brush);
+ real_engine->stroke(path, copy);
+ return;
+ } else if (g->coordinateMode() == QGradient::ObjectBoundingMode) {
+ QTransform mat = brush.transform();
+ QRealRect r = path.controlPointRect();
+ mat.translate(r.x1, r.y1);
+ mat.scale(r.x2 - r.x1, r.y2 - r.y1);
+ brush.setTransform(mat);
+ copy.setBrush(brush);
+ real_engine->stroke(path, copy);
+ return;
+ }
}
}
diff --git a/src/gui/painting/qmemrotate.cpp b/src/gui/painting/qmemrotate.cpp
index 7ad0e42..471f544 100644
--- a/src/gui/painting/qmemrotate.cpp
+++ b/src/gui/painting/qmemrotate.cpp
@@ -528,6 +528,26 @@ void qt_memrotate270(const srctype *src, int w, int h, int sstride, \
qt_memrotate270_template(src, w, h, sstride, dest, dstride); \
}
+#define QT_IMPL_SIMPLE_MEMROTATE(srctype, desttype) \
+void qt_memrotate90(const srctype *src, int w, int h, int sstride, \
+ desttype *dest, int dstride) \
+{ \
+ qt_memrotate90_tiled_unpacked<desttype,srctype>(src, w, h, sstride, dest, dstride); \
+} \
+void qt_memrotate180(const srctype *src, int w, int h, int sstride, \
+ desttype *dest, int dstride) \
+{ \
+ qt_memrotate180_template(src, w, h, sstride, dest, dstride); \
+} \
+void qt_memrotate270(const srctype *src, int w, int h, int sstride, \
+ desttype *dest, int dstride) \
+{ \
+ qt_memrotate270_tiled_unpacked<desttype,srctype>(src, w, h, sstride, dest, dstride); \
+}
+
+
+
+
QT_IMPL_MEMROTATE(quint32, quint32)
QT_IMPL_MEMROTATE(quint32, quint16)
QT_IMPL_MEMROTATE(quint16, quint32)
@@ -537,7 +557,16 @@ QT_IMPL_MEMROTATE(quint32, quint24)
QT_IMPL_MEMROTATE(quint32, quint18)
QT_IMPL_MEMROTATE(quint32, quint8)
QT_IMPL_MEMROTATE(quint16, quint8)
+QT_IMPL_MEMROTATE(qrgb444, quint8)
QT_IMPL_MEMROTATE(quint8, quint8)
+
+#if defined(QT_QWS_ROTATE_BGR)
+QT_IMPL_SIMPLE_MEMROTATE(quint16, qbgr565)
+QT_IMPL_SIMPLE_MEMROTATE(quint32, qbgr565)
+QT_IMPL_SIMPLE_MEMROTATE(qrgb555, qbgr555)
+QT_IMPL_SIMPLE_MEMROTATE(quint32, qbgr555)
+#endif
+
#ifdef QT_QWS_DEPTH_GENERIC
QT_IMPL_MEMROTATE(quint32, qrgb_generic16)
QT_IMPL_MEMROTATE(quint16, qrgb_generic16)
diff --git a/src/gui/painting/qmemrotate_p.h b/src/gui/painting/qmemrotate_p.h
index bd6006b..87cfb1a 100644
--- a/src/gui/painting/qmemrotate_p.h
+++ b/src/gui/painting/qmemrotate_p.h
@@ -90,7 +90,16 @@ QT_DECL_MEMROTATE(quint32, quint24);
QT_DECL_MEMROTATE(quint32, quint18);
QT_DECL_MEMROTATE(quint32, quint8);
QT_DECL_MEMROTATE(quint16, quint8);
+QT_DECL_MEMROTATE(qrgb444, quint8);
QT_DECL_MEMROTATE(quint8, quint8);
+
+#ifdef QT_QWS_ROTATE_BGR
+QT_DECL_MEMROTATE(quint16, qbgr565);
+QT_DECL_MEMROTATE(quint32, qbgr565);
+QT_DECL_MEMROTATE(qrgb555, qbgr555);
+QT_DECL_MEMROTATE(quint32, qbgr555);
+#endif
+
#ifdef QT_QWS_DEPTH_GENERIC
QT_DECL_MEMROTATE(quint32, qrgb_generic16);
QT_DECL_MEMROTATE(quint16, qrgb_generic16);
diff --git a/src/gui/painting/qpaintdevice_qws.cpp b/src/gui/painting/qpaintdevice_qws.cpp
index 6a68d28..c67be86 100644
--- a/src/gui/painting/qpaintdevice_qws.cpp
+++ b/src/gui/painting/qpaintdevice_qws.cpp
@@ -81,9 +81,6 @@ int QPaintDevice::metric(PaintDeviceMetric m) const
}
}
-/*!
- \internal
-*/
QWSDisplay *QPaintDevice::qwsDisplay()
{
return qt_fbdpy;
diff --git a/src/gui/painting/qpaintdevice_win.cpp b/src/gui/painting/qpaintdevice_win.cpp
index 6cae744..7cd3392 100644
--- a/src/gui/painting/qpaintdevice_win.cpp
+++ b/src/gui/painting/qpaintdevice_win.cpp
@@ -71,16 +71,11 @@ int QPaintDevice::metric(PaintDeviceMetric) const
return 0;
}
-
-/*! \internal
-*/
HDC QPaintDevice::getDC() const
{
return 0;
}
-/*! \internal
-*/
void QPaintDevice::releaseDC(HDC) const
{
}
diff --git a/src/gui/painting/qpaintdevice_x11.cpp b/src/gui/painting/qpaintdevice_x11.cpp
index 4ea9f57..95cb115 100644
--- a/src/gui/painting/qpaintdevice_x11.cpp
+++ b/src/gui/painting/qpaintdevice_x11.cpp
@@ -106,33 +106,11 @@ int QPaintDevice::metric(PaintDeviceMetric) const
#ifdef QT3_SUPPORT
-/*!
- Use QX11Info::display() instead.
-
- \oldcode
- Display *display = widget->x11Display();
- \newcode
- Display *display = QX11Info::display();
- \endcode
-
- \sa QWidget::x11Info(), QX11Info::display()
-*/
Display *QPaintDevice::x11Display() const
{
return X11->display;
}
-/*!
- Use QX11Info::screen() instead.
-
- \oldcode
- int screen = widget->x11Screen();
- \newcode
- int screen = widget->x11Info().screen();
- \endcode
-
- \sa QWidget::x11Info(), QPixmap::x11Info()
-*/
int QPaintDevice::x11Screen() const
{
const QX11Info *info = qt_x11Info(this);
@@ -141,17 +119,6 @@ int QPaintDevice::x11Screen() const
return QX11Info::appScreen();
}
-/*!
- Use QX11Info::visual() instead.
-
- \oldcode
- void *visual = widget->x11Visual();
- \newcode
- void *visual = widget->x11Info().visual();
- \endcode
-
- \sa QWidget::x11Info(), QPixmap::x11Info()
-*/
void *QPaintDevice::x11Visual() const
{
const QX11Info *info = qt_x11Info(this);
@@ -160,17 +127,6 @@ void *QPaintDevice::x11Visual() const
return QX11Info::appVisual();
}
-/*!
- Use QX11Info::depth() instead.
-
- \oldcode
- int depth = widget->x11Depth();
- \newcode
- int depth = widget->x11Info().depth();
- \endcode
-
- \sa QWidget::x11Info(), QPixmap::x11Info()
-*/
int QPaintDevice::x11Depth() const
{
const QX11Info *info = qt_x11Info(this);
@@ -179,17 +135,6 @@ int QPaintDevice::x11Depth() const
return QX11Info::appDepth();
}
-/*!
- Use QX11Info::cells() instead.
-
- \oldcode
- int cells = widget->x11Cells();
- \newcode
- int cells = widget->x11Info().cells();
- \endcode
-
- \sa QWidget::x11Info(), QPixmap::x11Info()
-*/
int QPaintDevice::x11Cells() const
{
const QX11Info *info = qt_x11Info(this);
@@ -198,17 +143,6 @@ int QPaintDevice::x11Cells() const
return QX11Info::appCells();
}
-/*!
- Use QX11Info::colormap() instead.
-
- \oldcode
- unsigned long screen = widget->x11Colormap();
- \newcode
- unsigned long screen = widget->x11Info().colormap();
- \endcode
-
- \sa QWidget::x11Info(), QPixmap::x11Info()
-*/
Qt::HANDLE QPaintDevice::x11Colormap() const
{
const QX11Info *info = qt_x11Info(this);
@@ -217,17 +151,6 @@ Qt::HANDLE QPaintDevice::x11Colormap() const
return QX11Info::appColormap();
}
-/*!
- Use QX11Info::defaultColormap() instead.
-
- \oldcode
- bool isDefault = widget->x11DefaultColormap();
- \newcode
- bool isDefault = widget->x11Info().defaultColormap();
- \endcode
-
- \sa QWidget::x11Info(), QPixmap::x11Info()
-*/
bool QPaintDevice::x11DefaultColormap() const
{
const QX11Info *info = qt_x11Info(this);
@@ -236,17 +159,6 @@ bool QPaintDevice::x11DefaultColormap() const
return QX11Info::appDefaultColormap();
}
-/*!
- Use QX11Info::defaultVisual() instead.
-
- \oldcode
- bool isDefault = widget->x11DefaultVisual();
- \newcode
- bool isDefault = widget->x11Info().defaultVisual();
- \endcode
-
- \sa QWidget::x11Info(), QPixmap::x11Info()
-*/
bool QPaintDevice::x11DefaultVisual() const
{
const QX11Info *info = qt_x11Info(this);
@@ -255,176 +167,48 @@ bool QPaintDevice::x11DefaultVisual() const
return QX11Info::appDefaultVisual();
}
-/*!
- Use QX11Info::visual() instead.
-
- \oldcode
- void *visual = QPaintDevice::x11AppVisual(screen);
- \newcode
- void *visual = qApp->x11Info(screen).visual();
- \endcode
-
- \sa QWidget::x11Info(), QPixmap::x11Info()
-*/
void *QPaintDevice::x11AppVisual(int screen)
{ return QX11Info::appVisual(screen); }
-/*!
- Use QX11Info::colormap() instead.
-
- \oldcode
- unsigned long colormap = QPaintDevice::x11AppColormap(screen);
- \newcode
- unsigned long colormap = qApp->x11Info(screen).colormap();
- \endcode
-
- \sa QWidget::x11Info(), QPixmap::x11Info()
-*/
Qt::HANDLE QPaintDevice::x11AppColormap(int screen)
{ return QX11Info::appColormap(screen); }
-/*!
- Use QX11Info::display() instead.
-
- \oldcode
- Display *display = QPaintDevice::x11AppDisplay();
- \newcode
- Display *display = qApp->x11Info().display();
- \endcode
-
- \sa QWidget::x11Info(), QPixmap::x11Info()
-*/
Display *QPaintDevice::x11AppDisplay()
{ return QX11Info::display(); }
-/*!
- Use QX11Info::screen() instead.
-
- \oldcode
- int screen = QPaintDevice::x11AppScreen();
- \newcode
- int screen = qApp->x11Info().screen();
- \endcode
-
- \sa QWidget::x11Info(), QPixmap::x11Info()
-*/
int QPaintDevice::x11AppScreen()
{ return QX11Info::appScreen(); }
-/*!
- Use QX11Info::depth() instead.
-
- \oldcode
- int depth = QPaintDevice::x11AppDepth(screen);
- \newcode
- int depth = qApp->x11Info(screen).depth();
- \endcode
-
- \sa QWidget::x11Info(), QPixmap::x11Info()
-*/
int QPaintDevice::x11AppDepth(int screen)
{ return QX11Info::appDepth(screen); }
-/*!
- Use QX11Info::cells() instead.
-
- \oldcode
- int cells = QPaintDevice::x11AppCells(screen);
- \newcode
- int cells = qApp->x11Info(screen).cells();
- \endcode
-
- \sa QWidget::x11Info(), QPixmap::x11Info()
-*/
int QPaintDevice::x11AppCells(int screen)
{ return QX11Info::appCells(screen); }
-/*!
- Use QX11Info::appRootWindow() instead.
-
- \oldcode
- unsigned long window = QPaintDevice::x11AppRootWindow(screen);
- \newcode
- unsigned long window = qApp->x11Info(screen).appRootWindow();
- \endcode
-
- \sa QWidget::x11Info(), QPixmap::x11Info()
-*/
Qt::HANDLE QPaintDevice::x11AppRootWindow(int screen)
{ return QX11Info::appRootWindow(screen); }
-/*!
- Use QX11Info::defaultColormap() instead.
-
- \oldcode
- bool isDefault = QPaintDevice::x11AppDefaultColormap(screen);
- \newcode
- bool isDefault = qApp->x11Info(screen).defaultColormap();
- \endcode
-
- \sa QWidget::x11Info(), QPixmap::x11Info()
-*/
bool QPaintDevice::x11AppDefaultColormap(int screen)
{ return QX11Info::appDefaultColormap(screen); }
-/*!
- Use QX11Info::defaultVisual() instead.
-
- \oldcode
- bool isDefault = QPaintDevice::x11AppDefaultVisual(screen);
- \newcode
- bool isDefault = qApp->x11Info(screen).defaultVisual();
- \endcode
-
- \sa QWidget::x11Info(), QPixmap::x11Info()
-*/
bool QPaintDevice::x11AppDefaultVisual(int screen)
{ return QX11Info::appDefaultVisual(screen); }
-/*!
- Use QX11Info::setAppDpiX() instead.
-*/
void QPaintDevice::x11SetAppDpiX(int dpi, int screen)
{
QX11Info::setAppDpiX(dpi, screen);
}
-/*!
- Use QX11Info::setAppDpiY() instead.
-*/
void QPaintDevice::x11SetAppDpiY(int dpi, int screen)
{
QX11Info::setAppDpiY(dpi, screen);
}
-
-/*!
- Use QX11Info::appDpiX() instead.
-
- \oldcode
- bool isDefault = QPaintDevice::x11AppDpiX(screen);
- \newcode
- bool isDefault = qApp->x11Info(screen).appDpiX();
- \endcode
-
- \sa QWidget::x11Info(), QPixmap::x11Info()
-*/
int QPaintDevice::x11AppDpiX(int screen)
{
return QX11Info::appDpiX(screen);
}
-/*!
- Use QX11Info::appDpiY() instead.
-
- \oldcode
- bool isDefault = QPaintDevice::x11AppDpiY(screen);
- \newcode
- bool isDefault = qApp->x11Info(screen).appDpiY();
- \endcode
-
- \sa QWidget::x11Info(), QPixmap::x11Info()
-*/
int QPaintDevice::x11AppDpiY(int screen)
{
return QX11Info::appDpiY(screen);
diff --git a/src/gui/painting/qpaintengine.cpp b/src/gui/painting/qpaintengine.cpp
index ad09060..7de1ec4 100644
--- a/src/gui/painting/qpaintengine.cpp
+++ b/src/gui/painting/qpaintengine.cpp
@@ -949,8 +949,8 @@ void QPaintEngine::setSystemClip(const QRegion &region)
Q_D(QPaintEngine);
d->systemClip = region;
// Be backward compatible and only call d->systemStateChanged()
- // if we currently have a system transform set.
- if (d->hasSystemTransform) {
+ // if we currently have a system transform/viewport set.
+ if (d->hasSystemTransform || d->hasSystemViewport) {
d->transformSystemClip();
d->systemStateChanged();
}
diff --git a/src/gui/painting/qpaintengine_mac.cpp b/src/gui/painting/qpaintengine_mac.cpp
index 0644a02..5889388 100644
--- a/src/gui/painting/qpaintengine_mac.cpp
+++ b/src/gui/painting/qpaintengine_mac.cpp
@@ -996,15 +996,14 @@ void QCoreGraphicsPaintEngine::drawPixmap(const QRectF &r, const QPixmap &pm, co
} else if (differentSize) {
#if (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_4)
if (QSysInfo::MacintoshVersion >= QSysInfo::MV_10_4) {
- CGImageRef img = (CGImageRef)pm.macCGHandle();
+ QCFType<CGImageRef> img = pm.toMacCGImageRef();
image = CGImageCreateWithImageInRect(img, CGRectMake(qRound(sr.x()), qRound(sr.y()), qRound(sr.width()), qRound(sr.height())));
- CGImageRelease(img);
} else
#endif
{
const int sx = qRound(sr.x()), sy = qRound(sr.y()), sw = qRound(sr.width()), sh = qRound(sr.height());
const QMacPixmapData *pmData = static_cast<const QMacPixmapData*>(pm.data);
- quint32 *pantherData = pmData->pixels + (sy * pm.width() + sx);
+ quint32 *pantherData = pmData->pixels + sy * (pmData->bytesPerRow / 4) + sx;
QCFType<CGDataProviderRef> provider = CGDataProviderCreateWithData(0, pantherData, sw*sh*pmData->bytesPerRow, 0);
image = CGImageCreate(sw, sh, 8, 32, pmData->bytesPerRow,
macGenericColorSpace(),
diff --git a/src/gui/painting/qpaintengine_p.h b/src/gui/painting/qpaintengine_p.h
index eeba7ec..0b5e175 100644
--- a/src/gui/painting/qpaintengine_p.h
+++ b/src/gui/painting/qpaintengine_p.h
@@ -83,10 +83,12 @@ public:
if (systemClip.isEmpty())
return;
- if (systemTransform.type() <= QTransform::TxTranslate)
- systemClip.translate(qRound(systemTransform.dx()), qRound(systemTransform.dy()));
- else
- systemClip = systemTransform.map(systemClip);
+ if (hasSystemTransform) {
+ if (systemTransform.type() <= QTransform::TxTranslate)
+ systemClip.translate(qRound(systemTransform.dx()), qRound(systemTransform.dy()));
+ else
+ systemClip = systemTransform.map(systemClip);
+ }
// Make sure we're inside the viewport.
if (hasSystemViewport) {
@@ -101,7 +103,7 @@ public:
inline void setSystemTransform(const QTransform &xform)
{
systemTransform = xform;
- if ((hasSystemTransform = !xform.isIdentity()))
+ if ((hasSystemTransform = !xform.isIdentity()) || hasSystemViewport)
transformSystemClip();
systemStateChanged();
}
diff --git a/src/gui/painting/qpaintengine_raster.cpp b/src/gui/painting/qpaintengine_raster.cpp
index 6dd5682..847904b 100644
--- a/src/gui/painting/qpaintengine_raster.cpp
+++ b/src/gui/painting/qpaintengine_raster.cpp
@@ -1022,7 +1022,7 @@ void QRasterPaintEnginePrivate::drawImage(const QPointF &pt,
int alpha,
const QRect &sr)
{
- if (!clip.isValid())
+ if (alpha == 0 || !clip.isValid())
return;
Q_ASSERT(img.depth() >= 8);
@@ -1140,6 +1140,33 @@ void QRasterPaintEnginePrivate::updateMatrixData(QSpanData *spanData, const QBru
}
}
+// #define QT_CLIPPING_RATIOS
+
+#ifdef QT_CLIPPING_RATIOS
+int rectClips;
+int regionClips;
+int totalClips;
+
+static void checkClipRatios(QRasterPaintEnginePrivate *d)
+{
+ if (d->clip()->hasRectClip)
+ rectClips++;
+ if (d->clip()->hasRegionClip)
+ regionClips++;
+ totalClips++;
+
+ if ((totalClips % 5000) == 0) {
+ printf("Clipping ratio: rectangular=%f%%, region=%f%%, complex=%f%%\n",
+ rectClips * 100.0 / (qreal) totalClips,
+ regionClips * 100.0 / (qreal) totalClips,
+ (totalClips - rectClips - regionClips) * 100.0 / (qreal) totalClips);
+ totalClips = 0;
+ rectClips = 0;
+ regionClips = 0;
+ }
+
+}
+#endif
/*!
\internal
@@ -1241,6 +1268,10 @@ void QRasterPaintEngine::clip(const QVectorPath &path, Qt::ClipOperation op)
d->solid_color_filler.clip = d->clip();
d->solid_color_filler.adjustSpanMethods();
+
+#ifdef QT_CLIPPING_RATIOS
+ checkClipRatios(d);
+#endif
}
@@ -1315,6 +1346,11 @@ void QRasterPaintEngine::clip(const QRect &rect, Qt::ClipOperation op)
d->solid_color_filler.clip = d->clip();
d->solid_color_filler.adjustSpanMethods();
+
+
+#ifdef QT_CLIPPING_RATIOS
+ checkClipRatios(d);
+#endif
}
/*!
@@ -2355,11 +2391,6 @@ void QRasterPaintEngine::strokePolygonCosmetic(const QPoint *points, int pointCo
}
}
-#define IMAGE_FROM_PIXMAP(pixmap) \
- pixmap.data->classId() == QPixmapData::RasterClass \
- ? ((QRasterPixmapData *) pixmap.data)->image \
- : pixmap.toImage()
-
/*!
\internal
*/
@@ -2368,16 +2399,33 @@ void QRasterPaintEngine::drawPixmap(const QPointF &pos, const QPixmap &pixmap)
#ifdef QT_DEBUG_DRAW
qDebug() << " - QRasterPaintEngine::drawPixmap(), pos=" << pos << " pixmap=" << pixmap.size() << "depth=" << pixmap.depth();
#endif
- if (pixmap.depth() == 1) {
- Q_D(QRasterPaintEngine);
- QRasterPaintEngineState *s = state();
- if (s->matrix.type() <= QTransform::TxTranslate) {
- drawBitmap(pos + QPointF(s->matrix.dx(), s->matrix.dy()), pixmap, &s->penData);
+
+ if (pixmap.data->classId() == QPixmapData::RasterClass) {
+ const QImage &image = ((QRasterPixmapData *) pixmap.data)->image;
+ if (image.depth() == 1) {
+ Q_D(QRasterPaintEngine);
+ QRasterPaintEngineState *s = state();
+ if (s->matrix.type() <= QTransform::TxTranslate) {
+ drawBitmap(pos + QPointF(s->matrix.dx(), s->matrix.dy()), image, &s->penData);
+ } else {
+ drawImage(pos, d->rasterBuffer->colorizeBitmap(image, s->pen.color()));
+ }
} else {
- drawImage(pos, d->rasterBuffer->colorizeBitmap(IMAGE_FROM_PIXMAP(pixmap), s->pen.color()));
+ QRasterPaintEngine::drawImage(pos, image);
}
} else {
- QRasterPaintEngine::drawImage(pos, IMAGE_FROM_PIXMAP(pixmap));
+ const QImage image = pixmap.toImage();
+ if (pixmap.depth() == 1) {
+ Q_D(QRasterPaintEngine);
+ QRasterPaintEngineState *s = state();
+ if (s->matrix.type() <= QTransform::TxTranslate) {
+ drawBitmap(pos + QPointF(s->matrix.dx(), s->matrix.dy()), image, &s->penData);
+ } else {
+ drawImage(pos, d->rasterBuffer->colorizeBitmap(image, s->pen.color()));
+ }
+ } else {
+ QRasterPaintEngine::drawImage(pos, image);
+ }
}
}
@@ -2390,22 +2438,40 @@ void QRasterPaintEngine::drawPixmap(const QRectF &r, const QPixmap &pixmap, cons
qDebug() << " - QRasterPaintEngine::drawPixmap(), r=" << r << " sr=" << sr << " pixmap=" << pixmap.size() << "depth=" << pixmap.depth();
#endif
- Q_D(QRasterPaintEngine);
- QRasterPaintEngineState *s = state();
-
- if (pixmap.depth() == 1) {
- if (s->matrix.type() <= QTransform::TxTranslate
- && r.size() == sr.size()
- && r.size() == pixmap.size()) {
- ensurePen();
- drawBitmap(r.topLeft() + QPointF(s->matrix.dx(), s->matrix.dy()), pixmap, &s->penData);
- return;
+ if (pixmap.data->classId() == QPixmapData::RasterClass) {
+ const QImage &image = ((QRasterPixmapData *) pixmap.data)->image;
+ if (image.depth() == 1) {
+ Q_D(QRasterPaintEngine);
+ QRasterPaintEngineState *s = state();
+ if (s->matrix.type() <= QTransform::TxTranslate
+ && r.size() == sr.size()
+ && r.size() == pixmap.size()) {
+ ensurePen();
+ drawBitmap(r.topLeft() + QPointF(s->matrix.dx(), s->matrix.dy()), image, &s->penData);
+ return;
+ } else {
+ drawImage(r, d->rasterBuffer->colorizeBitmap(image, s->pen.color()), sr);
+ }
} else {
- drawImage(r, d->rasterBuffer->colorizeBitmap(IMAGE_FROM_PIXMAP(pixmap),
- s->pen.color()), sr);
+ drawImage(r, image, sr);
}
} else {
- drawImage(r, IMAGE_FROM_PIXMAP(pixmap), sr);
+ const QImage image = pixmap.toImage();
+ if (image.depth() == 1) {
+ Q_D(QRasterPaintEngine);
+ QRasterPaintEngineState *s = state();
+ if (s->matrix.type() <= QTransform::TxTranslate
+ && r.size() == sr.size()
+ && r.size() == pixmap.size()) {
+ ensurePen();
+ drawBitmap(r.topLeft() + QPointF(s->matrix.dx(), s->matrix.dy()), image, &s->penData);
+ return;
+ } else {
+ drawImage(r, d->rasterBuffer->colorizeBitmap(image, s->pen.color()), sr);
+ }
+ } else {
+ drawImage(r, image, sr);
+ }
}
}
@@ -2507,7 +2573,12 @@ void QRasterPaintEngine::drawImage(const QRectF &r, const QImage &img, const QRe
QRasterPaintEngineState *s = state();
const bool aa = s->flags.antialiased || s->flags.bilinear;
if (!aa && sr.size() == QSize(1, 1)) {
+ // as fillRect will apply the aliased coordinate delta we need to
+ // subtract it here as we don't use it for image drawing
+ QTransform old = s->matrix;
+ s->matrix = s->matrix * QTransform::fromTranslate(-aliasedCoordinateDelta, -aliasedCoordinateDelta);
fillRect(r, QColor::fromRgba(img.pixel(sr.x(), sr.y())));
+ s->matrix = old;
return;
}
@@ -2541,6 +2612,18 @@ void QRasterPaintEngine::drawImage(const QRectF &r, const QImage &img, const QRe
return;
d->image_filler_xform.setupMatrix(copy, s->flags.bilinear);
+ if (!aa && s->matrix.type() == QTransform::TxScale) {
+ QRectF rr = s->matrix.mapRect(r);
+
+ const int x1 = qRound(rr.x());
+ const int y1 = qRound(rr.y());
+ const int x2 = qRound(rr.right());
+ const int y2 = qRound(rr.bottom());
+
+ fillRect_normalized(QRect(x1, y1, x2-x1, y2-y1), &d->image_filler_xform, d);
+ return;
+ }
+
#ifdef QT_FAST_SPANS
ensureState();
if (s->flags.tx_noshear || s->matrix.type() == QTransform::TxScale) {
@@ -2598,7 +2681,13 @@ void QRasterPaintEngine::drawImage(const QRectF &r, const QImage &img, const QRe
QRectF rr = r;
rr.translate(s->matrix.dx(), s->matrix.dy());
- fillRect_normalized(toRect_normalized(rr), &d->image_filler, d);
+
+ const int x1 = qRound(rr.x());
+ const int y1 = qRound(rr.y());
+ const int x2 = qRound(rr.right());
+ const int y2 = qRound(rr.bottom());
+
+ fillRect_normalized(QRect(x1, y1, x2-x1, y2-y1), &d->image_filler, d);
}
}
@@ -2614,10 +2703,15 @@ void QRasterPaintEngine::drawTiledPixmap(const QRectF &r, const QPixmap &pixmap,
QRasterPaintEngineState *s = state();
QImage image;
- if (pixmap.depth() == 1)
- image = d->rasterBuffer->colorizeBitmap(IMAGE_FROM_PIXMAP(pixmap), s->pen.color());
- else
- image = IMAGE_FROM_PIXMAP(pixmap);
+
+ if (pixmap.data->classId() == QPixmapData::RasterClass) {
+ image = ((QRasterPixmapData *) pixmap.data)->image;
+ } else {
+ image = pixmap.toImage();
+ }
+
+ if (image.depth() == 1)
+ image = d->rasterBuffer->colorizeBitmap(image, s->pen.color());
if (s->matrix.type() > QTransform::TxTranslate) {
QTransform copy = s->matrix;
@@ -3650,14 +3744,13 @@ void QRasterPaintEngine::drawBufferSpan(const uint *buffer, int bufsize,
}
#endif // Q_WS_QWS
-void QRasterPaintEngine::drawBitmap(const QPointF &pos, const QPixmap &pm, QSpanData *fg)
+void QRasterPaintEngine::drawBitmap(const QPointF &pos, const QImage &image, QSpanData *fg)
{
Q_ASSERT(fg);
if (!fg->blend)
return;
Q_D(QRasterPaintEngine);
- const QImage image = IMAGE_FROM_PIXMAP(pm);
Q_ASSERT(image.depth() == 1);
const int spanCount = 256;
@@ -3665,8 +3758,8 @@ void QRasterPaintEngine::drawBitmap(const QPointF &pos, const QPixmap &pm, QSpan
int n = 0;
// Boundaries
- int w = pm.width();
- int h = pm.height();
+ int w = image.width();
+ int h = image.height();
int ymax = qMin(qRound(pos.y() + h), d->rasterBuffer->height());
int ymin = qMax(qRound(pos.y()), 0);
int xmax = qMin(qRound(pos.x() + w), d->rasterBuffer->width());
@@ -4335,6 +4428,9 @@ void QClipData::fixup()
*/
void QClipData::setClipRect(const QRect &rect)
{
+ if (rect == clipRect)
+ return;
+
// qDebug() << "setClipRect" << clipSpanHeight << count << allocated << rect;
hasRectClip = true;
clipRect = rect;
@@ -4344,6 +4440,11 @@ void QClipData::setClipRect(const QRect &rect)
ymin = qMin(rect.y(), clipSpanHeight);
ymax = qMin(rect.y() + rect.height(), clipSpanHeight);
+ if (m_spans) {
+ delete m_spans;
+ m_spans = 0;
+ }
+
// qDebug() << xmin << xmax << ymin << ymax;
}
@@ -4367,6 +4468,12 @@ void QClipData::setClipRegion(const QRegion &region)
ymin = rect.y();
ymax = rect.y() + rect.height();
}
+
+ if (m_spans) {
+ delete m_spans;
+ m_spans = 0;
+ }
+
}
/*!
@@ -5063,7 +5170,11 @@ void QSpanData::adjustSpanMethods()
void QSpanData::setupMatrix(const QTransform &matrix, int bilin)
{
- QTransform inv = matrix.inverted();
+ QTransform delta;
+ // make sure we round off correctly in qdrawhelper.cpp
+ delta.translate(1.0 / 65536, 1.0 / 65536);
+
+ QTransform inv = (delta * matrix).inverted();
m11 = inv.m11();
m12 = inv.m12();
m13 = inv.m13();
diff --git a/src/gui/painting/qpaintengine_raster_p.h b/src/gui/painting/qpaintengine_raster_p.h
index 0f8060a..26a2b3f 100644
--- a/src/gui/painting/qpaintengine_raster_p.h
+++ b/src/gui/painting/qpaintengine_raster_p.h
@@ -256,7 +256,7 @@ private:
void init();
void fillRect(const QRectF &rect, QSpanData *data);
- void drawBitmap(const QPointF &pos, const QPixmap &image, QSpanData *fill);
+ void drawBitmap(const QPointF &pos, const QImage &image, QSpanData *fill);
void drawCachedGlyphs(const QPointF &p, const QTextItemInt &ti);
diff --git a/src/gui/painting/qpaintengine_x11.cpp b/src/gui/painting/qpaintengine_x11.cpp
index d931f55..9cc9683 100644
--- a/src/gui/painting/qpaintengine_x11.cpp
+++ b/src/gui/painting/qpaintengine_x11.cpp
@@ -1543,6 +1543,8 @@ void QX11PaintEnginePrivate::fillPolygon_dev(const QPointF *polygonPoints, int p
QX11PaintEnginePrivate::GCMode gcMode,
QPaintEngine::PolygonDrawMode mode)
{
+ Q_Q(QX11PaintEngine);
+
int clippedCount = 0;
qt_float_point *clippedPoints = 0;
@@ -1617,7 +1619,29 @@ void QX11PaintEnginePrivate::fillPolygon_dev(const QPointF *polygonPoints, int p
} else
#endif
if (fill.style() != Qt::NoBrush) {
- if (clippedCount > 0) {
+ if (clippedCount > 200000) {
+ QPolygon poly;
+ for (int i = 0; i < clippedCount; ++i)
+ poly << QPoint(qFloor(clippedPoints[i].x), qFloor(clippedPoints[i].y));
+
+ const QRect bounds = poly.boundingRect();
+ const QRect aligned = bounds
+ & QRect(QPoint(), QSize(pdev->width(), pdev->height()));
+
+ QImage img(aligned.size(), QImage::Format_ARGB32_Premultiplied);
+ img.fill(0);
+
+ QPainter painter(&img);
+ painter.translate(-aligned.x(), -aligned.y());
+ painter.setPen(Qt::NoPen);
+ painter.setBrush(fill);
+ if (gcMode == BrushGC)
+ painter.setBrushOrigin(q->painter()->brushOrigin());
+ painter.drawPolygon(poly);
+ painter.end();
+
+ q->drawImage(aligned, img, img.rect(), Qt::AutoColor);
+ } else if (clippedCount > 0) {
QVarLengthArray<XPoint> xpoints(clippedCount);
for (int i = 0; i < clippedCount; ++i) {
xpoints[i].x = qFloor(clippedPoints[i].x);
@@ -1760,7 +1784,10 @@ void QX11PaintEngine::drawPath(const QPainterPath &path)
QRectF deviceRect(0, 0, d->pdev->width(), d->pdev->height());
// necessary to get aliased alphablended primitives to be drawn correctly
if (d->cpen.isCosmetic() || d->has_scaling_xform) {
- stroker.setWidth(width == 0 ? 1 : width * d->xform_scale);
+ if (d->cpen.isCosmetic())
+ stroker.setWidth(width == 0 ? 1 : width);
+ else
+ stroker.setWidth(width * d->xform_scale);
stroker.d_ptr->stroker.setClipRect(deviceRect);
stroke = stroker.createStroke(path * d->matrix);
if (stroke.isEmpty())
@@ -2349,7 +2376,9 @@ void QX11PaintEngine::drawFreetype(const QPointF &p, const QTextItemInt &ti)
GlyphSet glyphSet = set->id;
const QColor &pen = d->cpen.color();
::Picture src = X11->getSolidFill(d->scrn, pen);
- XRenderPictFormat *maskFormat = XRenderFindStandardFormat(X11->display, ft->xglyph_format);
+ XRenderPictFormat *maskFormat = 0;
+ if (ft->xglyph_format != PictStandardA1)
+ maskFormat = XRenderFindStandardFormat(X11->display, ft->xglyph_format);
enum { t_min = SHRT_MIN, t_max = SHRT_MAX };
diff --git a/src/gui/painting/qpainter.cpp b/src/gui/painting/qpainter.cpp
index fe6cc69..cc48d24 100644
--- a/src/gui/painting/qpainter.cpp
+++ b/src/gui/painting/qpainter.cpp
@@ -1465,8 +1465,8 @@ bool QPainter::isActive() const
/*!
Initializes the painters pen, background and font to the same as
- the given \a widget. Call this function after begin() while the
- painter is active.
+ the given \a widget. This function is called automatically when the
+ painter is opened on a QWidget.
\sa begin(), {QPainter#Settings}{Settings}
*/
@@ -1484,7 +1484,9 @@ void QPainter::initFrom(const QWidget *widget)
d->state->bgBrush = pal.brush(widget->backgroundRole());
d->state->deviceFont = QFont(widget->font(), const_cast<QWidget*> (widget));
d->state->font = d->state->deviceFont;
- if (d->engine) {
+ if (d->extended) {
+ d->extended->penChanged();
+ } else if (d->engine) {
d->engine->setDirty(QPaintEngine::DirtyPen);
d->engine->setDirty(QPaintEngine::DirtyBrush);
d->engine->setDirty(QPaintEngine::DirtyFont);
@@ -2371,6 +2373,11 @@ void QPainter::setClipping(bool enable)
Returns the currently set clip region. Note that the clip region
is given in logical coordinates.
+ \warning QPainter does not store the combined clip explicitly as
+ this is handled by the underlying QPaintEngine, so the path is
+ recreated on demand and transformed to the current logical
+ coordinate system. This is potentially an expensive operation.
+
\sa setClipRegion(), clipPath(), setClipping()
*/
@@ -2391,7 +2398,6 @@ QRegion QPainter::clipRegion() const
// ### Falcon: Use QPainterPath
for (int i=0; i<d->state->clipInfo.size(); ++i) {
const QPainterClipInfo &info = d->state->clipInfo.at(i);
- QRegion other;
switch (info.clipType) {
case QPainterClipInfo::RegionClip: {
@@ -2444,15 +2450,20 @@ QRegion QPainter::clipRegion() const
lastWasNothing = false;
continue;
}
- if (info.operation == Qt::IntersectClip)
- region &= QRegion(info.rect) * matrix;
- else if (info.operation == Qt::UniteClip)
+ if (info.operation == Qt::IntersectClip) {
+ // Use rect intersection if possible.
+ if (matrix.type() <= QTransform::TxScale)
+ region &= matrix.mapRect(info.rect);
+ else
+ region &= matrix.map(QRegion(info.rect));
+ } else if (info.operation == Qt::UniteClip) {
region |= QRegion(info.rect) * matrix;
- else if (info.operation == Qt::NoClip) {
+ } else if (info.operation == Qt::NoClip) {
lastWasNothing = true;
region = QRegion();
- } else
+ } else {
region = QRegion(info.rect) * matrix;
+ }
break;
}
@@ -2463,15 +2474,20 @@ QRegion QPainter::clipRegion() const
lastWasNothing = false;
continue;
}
- if (info.operation == Qt::IntersectClip)
- region &= QRegion(info.rectf.toRect()) * matrix;
- else if (info.operation == Qt::UniteClip)
+ if (info.operation == Qt::IntersectClip) {
+ // Use rect intersection if possible.
+ if (matrix.type() <= QTransform::TxScale)
+ region &= matrix.mapRect(info.rectf.toRect());
+ else
+ region &= matrix.map(QRegion(info.rectf.toRect()));
+ } else if (info.operation == Qt::UniteClip) {
region |= QRegion(info.rectf.toRect()) * matrix;
- else if (info.operation == Qt::NoClip) {
+ } else if (info.operation == Qt::NoClip) {
lastWasNothing = true;
region = QRegion();
- } else
+ } else {
region = QRegion(info.rectf.toRect()) * matrix;
+ }
break;
}
}
@@ -2486,6 +2502,11 @@ extern QPainterPath qt_regionToPath(const QRegion &region);
Returns the currently clip as a path. Note that the clip path is
given in logical coordinates.
+ \warning QPainter does not store the combined clip explicitly as
+ this is handled by the underlying QPaintEngine, so the path is
+ recreated on demand and transformed to the current logical
+ coordinate system. This is potentially an expensive operation.
+
\sa setClipPath(), clipRegion(), setClipping()
*/
QPainterPath QPainter::clipPath() const
@@ -5121,6 +5142,11 @@ void QPainter::drawConvexPolygon(const QPointF *points, int pointCount)
d->engine->drawPolygon(points, pointCount, QPaintEngine::ConvexMode);
}
+static inline QPointF roundInDeviceCoordinates(const QPointF &p, const QTransform &m)
+{
+ return m.inverted().map(QPointF(m.map(p).toPoint()));
+}
+
/*!
\fn void QPainter::drawPixmap(const QRectF &target, const QPixmap &pixmap, const QRectF &source)
@@ -5155,7 +5181,7 @@ void QPainter::drawPixmap(const QPointF &p, const QPixmap &pm)
Q_D(QPainter);
- if (!d->engine || pm.isNull())
+ if (!d->engine)
return;
#ifndef QT_NO_DEBUG
@@ -5173,6 +5199,9 @@ void QPainter::drawPixmap(const QPointF &p, const QPixmap &pm)
int w = pm.width();
int h = pm.height();
+ if (w <= 0)
+ return;
+
// Emulate opaque background for bitmaps
if (d->state->bgMode == Qt::OpaqueMode && pm.isQBitmap()) {
fillRect(QRectF(x, y, w, h), d->state->bgBrush.color());
@@ -5186,11 +5215,12 @@ void QPainter::drawPixmap(const QPointF &p, const QPixmap &pm)
|| (d->state->opacity != 1.0 && !d->engine->hasFeature(QPaintEngine::ConstantOpacity)))
{
save();
- // If there is no scaling or transformation involved we have to make sure we use the
+ // If there is no rotation involved we have to make sure we use the
// antialiased and not the aliased coordinate system by rounding the coordinates.
- if (d->state->matrix.type() <= QTransform::TxTranslate) {
- x = qRound(x + d->state->matrix.dx()) - d->state->matrix.dx();
- y = qRound(y + d->state->matrix.dy()) - d->state->matrix.dy();
+ if (d->state->matrix.type() <= QTransform::TxScale) {
+ const QPointF p = roundInDeviceCoordinates(QPointF(x, y), d->state->matrix);
+ x = p.x();
+ y = p.y();
}
translate(x, y);
setBackgroundMode(Qt::TransparentMode);
@@ -5300,16 +5330,21 @@ void QPainter::drawPixmap(const QRectF &r, const QPixmap &pm, const QRectF &sr)
|| ((sw != w || sh != h) && !d->engine->hasFeature(QPaintEngine::PixmapTransform)))
{
save();
- // If there is no scaling or transformation involved we have to make sure we use the
+ // If there is no rotation involved we have to make sure we use the
// antialiased and not the aliased coordinate system by rounding the coordinates.
+ if (d->state->matrix.type() <= QTransform::TxScale) {
+ const QPointF p = roundInDeviceCoordinates(QPointF(x, y), d->state->matrix);
+ x = p.x();
+ y = p.y();
+ }
+
if (d->state->matrix.type() <= QTransform::TxTranslate && sw == w && sh == h) {
- x = qRound(x + d->state->matrix.dx()) - d->state->matrix.dx();
- y = qRound(y + d->state->matrix.dy()) - d->state->matrix.dy();
sx = qRound(sx);
sy = qRound(sy);
sw = qRound(sw);
sh = qRound(sh);
}
+
translate(x, y);
scale(w / sw, h / sh);
setBackgroundMode(Qt::TransparentMode);
@@ -5459,11 +5494,12 @@ void QPainter::drawImage(const QPointF &p, const QImage &image)
|| (d->state->opacity != 1.0 && !d->engine->hasFeature(QPaintEngine::ConstantOpacity)))
{
save();
- // If there is no scaling or transformation involved we have to make sure we use the
+ // If there is no rotation involved we have to make sure we use the
// antialiased and not the aliased coordinate system by rounding the coordinates.
- if (d->state->matrix.type() <= QTransform::TxTranslate) {
- x = qRound(x + d->state->matrix.dx()) - d->state->matrix.dx();
- y = qRound(y + d->state->matrix.dy()) - d->state->matrix.dy();
+ if (d->state->matrix.type() <= QTransform::TxScale) {
+ const QPointF p = roundInDeviceCoordinates(QPointF(x, y), d->state->matrix);
+ x = p.x();
+ y = p.y();
}
translate(x, y);
setBackgroundMode(Qt::TransparentMode);
@@ -5562,11 +5598,15 @@ void QPainter::drawImage(const QRectF &targetRect, const QImage &image, const QR
|| (d->state->opacity != 1.0 && !d->engine->hasFeature(QPaintEngine::ConstantOpacity)))
{
save();
- // If there is no scaling or transformation involved we have to make sure we use the
+ // If there is no rotation involved we have to make sure we use the
// antialiased and not the aliased coordinate system by rounding the coordinates.
+ if (d->state->matrix.type() <= QTransform::TxScale) {
+ const QPointF p = roundInDeviceCoordinates(QPointF(x, y), d->state->matrix);
+ x = p.x();
+ y = p.y();
+ }
+
if (d->state->matrix.type() <= QTransform::TxTranslate && sw == w && sh == h) {
- x = qRound(x + d->state->matrix.dx()) - d->state->matrix.dx();
- y = qRound(y + d->state->matrix.dy()) - d->state->matrix.dy();
sx = qRound(sx);
sy = qRound(sy);
sw = qRound(sw);
@@ -6309,17 +6349,18 @@ void QPainter::drawTiledPixmap(const QRectF &r, const QPixmap &pixmap, const QPo
setBrush(QBrush(d->state->pen.color(), pixmap));
setPen(Qt::NoPen);
- // If there is no scaling or transformation involved we have to make sure we use the
+ // If there is no rotation involved we have to make sure we use the
// antialiased and not the aliased coordinate system by rounding the coordinates.
- if (d->state->matrix.type() <= QTransform::TxTranslate) {
- qreal x = qRound(r.x() + d->state->matrix.dx()) - d->state->matrix.dx();
- qreal y = qRound(r.y() + d->state->matrix.dy()) - d->state->matrix.dy();
- qreal w = qRound(r.width());
- qreal h = qRound(r.height());
- sx = qRound(sx);
- sy = qRound(sy);
+ if (d->state->matrix.type() <= QTransform::TxScale) {
+ const QPointF p = roundInDeviceCoordinates(r.topLeft(), d->state->matrix);
+
+ if (d->state->matrix.type() <= QTransform::TxTranslate) {
+ sx = qRound(sx);
+ sy = qRound(sy);
+ }
+
setBrushOrigin(QPointF(r.x()-sx, r.y()-sy));
- drawRect(QRectF(x, y, w, h));
+ drawRect(QRectF(p, r.size()));
} else {
setBrushOrigin(QPointF(r.x()-sx, r.y()-sy));
drawRect(r);
@@ -7118,14 +7159,14 @@ QPoint QPainter::xFormDev(const QPoint &p) const
\fn QRect QPainter::xFormDev(const QRect &rectangle) const
\overload
- Use combineMatrix() combined with QMatrix::inverted() instead.
+ Use mapRect() combined with QMatrix::inverted() instead.
\oldcode
QPainter painter(this);
QRect transformed = painter.xFormDev(rectangle);
\newcode
QPainter painter(this);
- QRect transformed = rectangle * painter.combinedMatrix().inverted();
+ QRect transformed = painter.combinedMatrix().inverted(rectangle);
\endcode
*/
@@ -8530,4 +8571,252 @@ void qt_draw_helper(QPainterPrivate *p, const QPainterPath &path, QPainterPrivat
p->draw_helper(path, operation);
}
+/*! \fn Display *QPaintDevice::x11Display() const
+ Use QX11Info::display() instead.
+
+ \oldcode
+ Display *display = widget->x11Display();
+ \newcode
+ Display *display = QX11Info::display();
+ \endcode
+
+ \sa QWidget::x11Info(), QX11Info::display()
+*/
+
+/*! \fn int QPaintDevice::x11Screen() const
+ Use QX11Info::screen() instead.
+
+ \oldcode
+ int screen = widget->x11Screen();
+ \newcode
+ int screen = widget->x11Info().screen();
+ \endcode
+
+ \sa QWidget::x11Info(), QPixmap::x11Info()
+*/
+
+/*! \fn void *QPaintDevice::x11Visual() const
+ Use QX11Info::visual() instead.
+
+ \oldcode
+ void *visual = widget->x11Visual();
+ \newcode
+ void *visual = widget->x11Info().visual();
+ \endcode
+
+ \sa QWidget::x11Info(), QPixmap::x11Info()
+*/
+
+/*! \fn int QPaintDevice::x11Depth() const
+ Use QX11Info::depth() instead.
+
+ \oldcode
+ int depth = widget->x11Depth();
+ \newcode
+ int depth = widget->x11Info().depth();
+ \endcode
+
+ \sa QWidget::x11Info(), QPixmap::x11Info()
+*/
+
+/*! \fn int QPaintDevice::x11Cells() const
+ Use QX11Info::cells() instead.
+
+ \oldcode
+ int cells = widget->x11Cells();
+ \newcode
+ int cells = widget->x11Info().cells();
+ \endcode
+
+ \sa QWidget::x11Info(), QPixmap::x11Info()
+*/
+
+/*! \fn Qt::HANDLE QPaintDevice::x11Colormap() const
+ Use QX11Info::colormap() instead.
+
+ \oldcode
+ unsigned long screen = widget->x11Colormap();
+ \newcode
+ unsigned long screen = widget->x11Info().colormap();
+ \endcode
+
+ \sa QWidget::x11Info(), QPixmap::x11Info()
+*/
+
+/*! \fn bool QPaintDevice::x11DefaultColormap() const
+ Use QX11Info::defaultColormap() instead.
+
+ \oldcode
+ bool isDefault = widget->x11DefaultColormap();
+ \newcode
+ bool isDefault = widget->x11Info().defaultColormap();
+ \endcode
+
+ \sa QWidget::x11Info(), QPixmap::x11Info()
+*/
+
+/*! \fn bool QPaintDevice::x11DefaultVisual() const
+ Use QX11Info::defaultVisual() instead.
+
+ \oldcode
+ bool isDefault = widget->x11DefaultVisual();
+ \newcode
+ bool isDefault = widget->x11Info().defaultVisual();
+ \endcode
+
+ \sa QWidget::x11Info(), QPixmap::x11Info()
+*/
+
+/*! \fn void *QPaintDevice::x11AppVisual(int screen)
+ Use QX11Info::visual() instead.
+
+ \oldcode
+ void *visual = QPaintDevice::x11AppVisual(screen);
+ \newcode
+ void *visual = qApp->x11Info(screen).visual();
+ \endcode
+
+ \sa QWidget::x11Info(), QPixmap::x11Info()
+*/
+
+/*! \fn Qt::HANDLE QPaintDevice::x11AppColormap(int screen)
+ Use QX11Info::colormap() instead.
+
+ \oldcode
+ unsigned long colormap = QPaintDevice::x11AppColormap(screen);
+ \newcode
+ unsigned long colormap = qApp->x11Info(screen).colormap();
+ \endcode
+
+ \sa QWidget::x11Info(), QPixmap::x11Info()
+*/
+
+/*! \fn Display *QPaintDevice::x11AppDisplay()
+ Use QX11Info::display() instead.
+
+ \oldcode
+ Display *display = QPaintDevice::x11AppDisplay();
+ \newcode
+ Display *display = qApp->x11Info().display();
+ \endcode
+
+ \sa QWidget::x11Info(), QPixmap::x11Info()
+*/
+
+/*! \fn int QPaintDevice::x11AppScreen()
+ Use QX11Info::screen() instead.
+
+ \oldcode
+ int screen = QPaintDevice::x11AppScreen();
+ \newcode
+ int screen = qApp->x11Info().screen();
+ \endcode
+
+ \sa QWidget::x11Info(), QPixmap::x11Info()
+*/
+
+/*! \fn int QPaintDevice::x11AppDepth(int screen)
+ Use QX11Info::depth() instead.
+
+ \oldcode
+ int depth = QPaintDevice::x11AppDepth(screen);
+ \newcode
+ int depth = qApp->x11Info(screen).depth();
+ \endcode
+
+ \sa QWidget::x11Info(), QPixmap::x11Info()
+*/
+
+/*! \fn int QPaintDevice::x11AppCells(int screen)
+ Use QX11Info::cells() instead.
+
+ \oldcode
+ int cells = QPaintDevice::x11AppCells(screen);
+ \newcode
+ int cells = qApp->x11Info(screen).cells();
+ \endcode
+
+ \sa QWidget::x11Info(), QPixmap::x11Info()
+*/
+
+/*! \fn Qt::HANDLE QPaintDevice::x11AppRootWindow(int screen)
+ Use QX11Info::appRootWindow() instead.
+
+ \oldcode
+ unsigned long window = QPaintDevice::x11AppRootWindow(screen);
+ \newcode
+ unsigned long window = qApp->x11Info(screen).appRootWindow();
+ \endcode
+
+ \sa QWidget::x11Info(), QPixmap::x11Info()
+*/
+
+/*! \fn bool QPaintDevice::x11AppDefaultColormap(int screen)
+ Use QX11Info::defaultColormap() instead.
+
+ \oldcode
+ bool isDefault = QPaintDevice::x11AppDefaultColormap(screen);
+ \newcode
+ bool isDefault = qApp->x11Info(screen).defaultColormap();
+ \endcode
+
+ \sa QWidget::x11Info(), QPixmap::x11Info()
+*/
+
+/*! \fn bool QPaintDevice::x11AppDefaultVisual(int screen)
+ Use QX11Info::defaultVisual() instead.
+
+ \oldcode
+ bool isDefault = QPaintDevice::x11AppDefaultVisual(screen);
+ \newcode
+ bool isDefault = qApp->x11Info(screen).defaultVisual();
+ \endcode
+
+ \sa QWidget::x11Info(), QPixmap::x11Info()
+*/
+
+/*! \fn void QPaintDevice::x11SetAppDpiX(int dpi, int screen)
+ Use QX11Info::setAppDpiX() instead.
+*/
+
+/*! \fn void QPaintDevice::x11SetAppDpiY(int dpi, int screen)
+ Use QX11Info::setAppDpiY() instead.
+*/
+
+/*! \fn int QPaintDevice::x11AppDpiX(int screen)
+ Use QX11Info::appDpiX() instead.
+
+ \oldcode
+ bool isDefault = QPaintDevice::x11AppDpiX(screen);
+ \newcode
+ bool isDefault = qApp->x11Info(screen).appDpiX();
+ \endcode
+
+ \sa QWidget::x11Info(), QPixmap::x11Info()
+*/
+
+/*! \fn int QPaintDevice::x11AppDpiY(int screen)
+ Use QX11Info::appDpiY() instead.
+
+ \oldcode
+ bool isDefault = QPaintDevice::x11AppDpiY(screen);
+ \newcode
+ bool isDefault = qApp->x11Info(screen).appDpiY();
+ \endcode
+
+ \sa QWidget::x11Info(), QPixmap::x11Info()
+*/
+
+/*! \fn HDC QPaintDevice::getDC() const
+ \internal
+*/
+
+/*! \fn void QPaintDevice::releaseDC(HDC) const
+ \internal
+*/
+
+/*! \fn QWSDisplay *QPaintDevice::qwsDisplay()
+ \internal
+*/
+
QT_END_NAMESPACE
diff --git a/src/gui/painting/qpainterpath.cpp b/src/gui/painting/qpainterpath.cpp
index 70036e1..9ce16d3 100644
--- a/src/gui/painting/qpainterpath.cpp
+++ b/src/gui/painting/qpainterpath.cpp
@@ -1006,7 +1006,7 @@ void QPainterPath::addPolygon(const QPolygonF &polygon)
/*!
\fn void QPainterPath::addEllipse(const QRectF &boundingRectangle)
- Creates an ellipse within the the specified \a boundingRectangle
+ Creates an ellipse within the specified \a boundingRectangle
and adds it to the painter path as a closed subpath.
The ellipse is composed of a clockwise curve, starting and
@@ -1725,7 +1725,7 @@ static void qt_painterpath_isect_curve(const QBezier &bezier, const QPointF &pt,
*/
bool QPainterPath::contains(const QPointF &pt) const
{
- if (isEmpty())
+ if (isEmpty() || !controlPointRect().contains(pt))
return false;
QPainterPathData *d = d_func();
diff --git a/src/gui/painting/qprintengine_mac.mm b/src/gui/painting/qprintengine_mac.mm
index 7a77e47..b1216b7 100644
--- a/src/gui/painting/qprintengine_mac.mm
+++ b/src/gui/painting/qprintengine_mac.mm
@@ -62,6 +62,10 @@ bool QMacPrintEngine::begin(QPaintDevice *dev)
{
Q_D(QMacPrintEngine);
+ Q_ASSERT(dev && dev->devType() == QInternal::Printer);
+ if (!static_cast<QPrinter *>(dev)->isValid())
+ return false;
+
if (d->state == QPrinter::Idle && !d->isPrintSessionInitialized()) // Need to reinitialize
d->initialize();
@@ -121,24 +125,8 @@ bool QMacPrintEngine::end()
if(d->paintEngine->type() == QPaintEngine::CoreGraphics)
static_cast<QCoreGraphicsPaintEngine*>(d->paintEngine)->d_func()->hd = 0;
d->paintEngine->end();
- if (d->state != QPrinter::Idle) {
-#ifndef QT_MAC_USE_COCOA
- if (d->shouldSuppressStatus()) {
- PMSessionEndPageNoDialog(d->session);
- PMSessionEndDocumentNoDialog(d->session);
- } else {
- PMSessionEndPage(d->session);
- PMSessionEndDocument(d->session);
- }
- PMRelease(d->session);
-#else
- PMSessionEndPageNoDialog(d->session);
- PMSessionEndDocumentNoDialog(d->session);
- [d->printInfo release];
-#endif
- d->printInfo = 0;
- d->session = 0;
- }
+ if (d->state != QPrinter::Idle)
+ d->releaseSession();
d->state = QPrinter::Idle;
return true;
}
@@ -509,6 +497,26 @@ void QMacPrintEnginePrivate::initialize()
}
}
+void QMacPrintEnginePrivate::releaseSession()
+{
+#ifndef QT_MAC_USE_COCOA
+ if (shouldSuppressStatus()) {
+ PMSessionEndPageNoDialog(session);
+ PMSessionEndDocumentNoDialog(session);
+ } else {
+ PMSessionEndPage(session);
+ PMSessionEndDocument(session);
+ }
+ PMRelease(session);
+#else
+ PMSessionEndPageNoDialog(session);
+ PMSessionEndDocumentNoDialog(session);
+ [printInfo release];
+#endif
+ printInfo = 0;
+ session = 0;
+}
+
bool QMacPrintEnginePrivate::newPage_helper()
{
Q_Q(QMacPrintEngine);
@@ -737,6 +745,7 @@ void QMacPrintEngine::setProperty(PrintEnginePropertyKey key, const QVariant &va
d->setPaperSize(QPrinter::PaperSize(value.toInt()));
break;
case PPK_PrinterName: {
+ bool printerNameSet = false;
OSStatus status = noErr;
QCFType<CFArrayRef> printerList;
status = PMServerCreatePrinterList(kPMServerLocal, &printerList);
@@ -747,12 +756,18 @@ void QMacPrintEngine::setProperty(PrintEnginePropertyKey key, const QVariant &va
QString name = QCFString::toQString(PMPrinterGetName(printer));
if (name == value.toString()) {
status = PMSessionSetCurrentPMPrinter(d->session, printer);
+ printerNameSet = true;
break;
}
}
}
if (status != noErr)
qWarning("QMacPrintEngine::setPrinterName: Error setting printer: %ld", long(status));
+ if (!printerNameSet) {
+ qWarning("QMacPrintEngine::setPrinterName: Failed to set printer named '%s'.", qPrintable(value.toString()));
+ d->releaseSession();
+ d->state = QPrinter::Idle;
+ }
break; }
case PPK_SuppressSystemPrintStatus:
d->suppressStatus = value.toBool();
@@ -876,17 +891,12 @@ QVariant QMacPrintEngine::property(PrintEnginePropertyKey key) const
ret = r;
break; }
case PPK_PrinterName: {
- CFIndex currIndex;
- PMPrinter unused;
- QCFType<CFArrayRef> printerList;
- OSStatus status = PMSessionCreatePrinterList(d->session, &printerList, &currIndex, &unused);
+ PMPrinter printer;
+ OSStatus status = PMSessionGetCurrentPrinter(d->session, &printer);
if (status != noErr)
- qWarning("QMacPrintEngine::printerName: Problem getting list of printers: %ld", long(status));
- if (currIndex != -1 && printerList && currIndex < CFArrayGetCount(printerList)) {
- const CFStringRef name = static_cast<CFStringRef>(CFArrayGetValueAtIndex(printerList, currIndex));
- if (name)
- ret = QCFString::toQString(name);
- }
+ qWarning("QMacPrintEngine::printerName: Failed getting current PMPrinter: %ld", long(status));
+ if (printer)
+ ret = QCFString::toQString(PMPrinterGetName(printer));
break; }
case PPK_Resolution: {
ret = d->resolution.hRes;
diff --git a/src/gui/painting/qprintengine_mac_p.h b/src/gui/painting/qprintengine_mac_p.h
index 5e18845..bc917e7 100644
--- a/src/gui/painting/qprintengine_mac_p.h
+++ b/src/gui/painting/qprintengine_mac_p.h
@@ -143,6 +143,7 @@ public:
hasCustomPaperSize(false), hasCustomPageMargins(false) {}
~QMacPrintEnginePrivate();
void initialize();
+ void releaseSession();
bool newPage_helper();
void setPaperSize(QPrinter::PaperSize ps);
QPrinter::PaperSize paperSize() const;
diff --git a/src/gui/painting/qprintengine_win.cpp b/src/gui/painting/qprintengine_win.cpp
index c8674b7..7601beb 100644
--- a/src/gui/painting/qprintengine_win.cpp
+++ b/src/gui/painting/qprintengine_win.cpp
@@ -1532,7 +1532,7 @@ QVariant QWin32PrintEngine::property(PrintEnginePropertyKey key) const
value = rect;
} else {
value = QTransform(1/d->stretch_x, 0, 0, 1/d->stretch_y, 0, 0)
- .mapRect(d->fullPage ? d->devPaperRect : d->devPageRect);
+ .mapRect(d->fullPage ? d->devPhysicalPageRect : d->devPageRect);
}
break;
diff --git a/src/gui/painting/qprinter.cpp b/src/gui/painting/qprinter.cpp
index 6c309c7..5090b3a 100644
--- a/src/gui/painting/qprinter.cpp
+++ b/src/gui/painting/qprinter.cpp
@@ -285,6 +285,10 @@ void QPrinterPrivate::addToManualSetList(QPrintEngine::PrintEnginePropertyKey ke
the printProgram() function can be used to specify the command or utility
to use instead of the system default.
+ Note that setting parameters like paper size and resolution on an
+ invalid printer is undefined. You can use QPrinter::isValid() to
+ verify this before changing any parameters.
+
QPrinter supports a number of parameters, most of which can be
changed by the end user through a \l{QPrintDialog}{print dialog}. In
general, QPrinter passes these functions onto the underlying QPrintEngine.
@@ -740,7 +744,7 @@ void QPrinter::setOutputFormat(OutputFormat format)
#ifndef QT_NO_PDF
Q_D(QPrinter);
- if (d->outputFormat == format)
+ if (d->validPrinter && d->outputFormat == format)
return;
d->outputFormat = format;
@@ -769,8 +773,8 @@ void QPrinter::setOutputFormat(OutputFormat format)
if (def_engine)
delete oldPrintEngine;
- d->validPrinter = d->outputFormat == QPrinter::PdfFormat || d->outputFormat == QPrinter::PostScriptFormat;
-
+ if (d->outputFormat == QPrinter::PdfFormat || d->outputFormat == QPrinter::PostScriptFormat)
+ d->validPrinter = true;
#else
Q_UNUSED(format);
#endif
diff --git a/src/gui/painting/qtextureglyphcache.cpp b/src/gui/painting/qtextureglyphcache.cpp
index 1ea40ba..3fd1ffb 100644
--- a/src/gui/painting/qtextureglyphcache.cpp
+++ b/src/gui/painting/qtextureglyphcache.cpp
@@ -88,11 +88,12 @@ void QTextureGlyphCache::populate(const QTextItemInt &ti,
ti.ascent.toReal(),
ti.descent.toReal());
#endif
- int glyph_width = metrics.width.ceil().toInt() + margin * 2;
- int glyph_height = metrics.height.ceil().toInt() + margin * 2;
+ int glyph_width = metrics.width.ceil().toInt();
+ int glyph_height = metrics.height.ceil().toInt();
if (glyph_height == 0 || glyph_width == 0)
continue;
-
+ glyph_width += margin * 2 + 2;
+ glyph_height += margin * 2 + 2;
// align to 8-bit boundary
if (m_type == QFontEngineGlyphCache::Raster_Mono)
glyph_width = (glyph_width+7)&~7;
@@ -188,11 +189,7 @@ void QImageTextureGlyphCache::createTextureData(int width, int height)
int QImageTextureGlyphCache::glyphMargin() const
{
-#ifdef Q_WS_MAC
return 2;
-#else
- return m_type == QFontEngineGlyphCache::Raster_RGBMask ? 2 : 0;
-#endif
}
void QImageTextureGlyphCache::fillTexture(const Coord &c, glyph_t g)
diff --git a/src/gui/painting/qtransform.cpp b/src/gui/painting/qtransform.cpp
index c70208c..cec2d16 100644
--- a/src/gui/painting/qtransform.cpp
+++ b/src/gui/painting/qtransform.cpp
@@ -399,6 +399,9 @@ QTransform QTransform::inverted(bool *invertible) const
*/
QTransform & QTransform::translate(qreal dx, qreal dy)
{
+ if (dx == 0 && dy == 0)
+ return *this;
+
switch(type()) {
case TxNone:
affine._dx = dx;
@@ -435,7 +438,10 @@ QTransform & QTransform::translate(qreal dx, qreal dy)
QTransform QTransform::fromTranslate(qreal dx, qreal dy)
{
QTransform transform(1, 0, 0, 1, dx, dy);
- transform.m_dirty = TxTranslate;
+ if (dx == 0 && dy == 0)
+ transform.m_dirty = TxNone;
+ else
+ transform.m_dirty = TxTranslate;
return transform;
}
@@ -447,6 +453,9 @@ QTransform QTransform::fromTranslate(qreal dx, qreal dy)
*/
QTransform & QTransform::scale(qreal sx, qreal sy)
{
+ if (sx == 1 && sy == 1)
+ return *this;
+
switch(type()) {
case TxNone:
case TxTranslate:
@@ -481,7 +490,10 @@ QTransform & QTransform::scale(qreal sx, qreal sy)
QTransform QTransform::fromScale(qreal sx, qreal sy)
{
QTransform transform(sx, 0, 0, sy, 0, 0);
- transform.m_dirty = TxScale;
+ if (sx == 1 && sy == 1)
+ transform.m_dirty = TxNone;
+ else
+ transform.m_dirty = TxScale;
return transform;
}
@@ -544,6 +556,9 @@ const qreal inv_dist_to_plane = 1. / 1024.;
*/
QTransform & QTransform::rotate(qreal a, Qt::Axis axis)
{
+ if (a == 0)
+ return *this;
+
qreal sina = 0;
qreal cosa = 0;
if (a == 90. || a == -270.)
@@ -715,7 +730,15 @@ bool QTransform::operator!=(const QTransform &o) const
*/
QTransform & QTransform::operator*=(const QTransform &o)
{
- TransformationType t = qMax(type(), o.type());
+ const TransformationType otherType = o.type();
+ if (otherType == TxNone)
+ return *this;
+
+ const TransformationType thisType = type();
+ if (thisType == TxNone)
+ return operator=(o);
+
+ TransformationType t = qMax(thisType, otherType);
switch(t) {
case TxNone:
break;
@@ -1222,7 +1245,8 @@ static QPolygonF mapProjective(const QTransform &transform, const QPolygonF &pol
*/
QPolygonF QTransform::map(const QPolygonF &a) const
{
- if (type() >= QTransform::TxProject)
+ TransformationType t = type();
+ if (t >= QTransform::TxProject)
return mapProjective(*this, a);
int size = a.size();
@@ -1231,7 +1255,6 @@ QPolygonF QTransform::map(const QPolygonF &a) const
const QPointF *da = a.constData();
QPointF *dp = p.data();
- TransformationType t = type();
for(i = 0; i < size; ++i) {
MAP(da[i].xp, da[i].yp, dp[i].xp, dp[i].yp);
}
@@ -1249,7 +1272,8 @@ QPolygonF QTransform::map(const QPolygonF &a) const
*/
QPolygon QTransform::map(const QPolygon &a) const
{
- if (type() >= QTransform::TxProject)
+ TransformationType t = type();
+ if (t >= QTransform::TxProject)
return mapProjective(*this, QPolygonF(a)).toPolygon();
int size = a.size();
@@ -1258,7 +1282,6 @@ QPolygon QTransform::map(const QPolygon &a) const
const QPoint *da = a.constData();
QPoint *dp = p.data();
- TransformationType t = type();
for(i = 0; i < size; ++i) {
qreal nx = 0, ny = 0;
MAP(da[i].xp, da[i].yp, nx, ny);
@@ -1294,12 +1317,16 @@ QRegion QTransform::map(const QRegion &r) const
TransformationType t = type();
if (t == TxNone)
return r;
+
if (t == TxTranslate) {
QRegion copy(r);
copy.translate(qRound(affine._dx), qRound(affine._dy));
return copy;
}
+ if (t == TxScale && r.numRects() == 1)
+ return QRegion(mapRect(r.boundingRect()));
+
QPainterPath p = map(qt_regionToPath(r));
return p.toFillPolygon(QTransform()).toPolygon();
}
@@ -1328,7 +1355,8 @@ static inline QHomogeneousCoordinate mapHomogeneous(const QTransform &transform,
return c;
}
-static inline bool lineTo_clipped(QPainterPath &path, const QTransform &transform, const QPointF &a, const QPointF &b, bool needsMoveTo)
+static inline bool lineTo_clipped(QPainterPath &path, const QTransform &transform, const QPointF &a, const QPointF &b,
+ bool needsMoveTo, bool needsLineTo = true)
{
QHomogeneousCoordinate ha = mapHomogeneous(transform, a);
QHomogeneousCoordinate hb = mapHomogeneous(transform, b);
@@ -1361,7 +1389,8 @@ static inline bool lineTo_clipped(QPainterPath &path, const QTransform &transfor
if (needsMoveTo)
path.moveTo(ha.toPoint());
- path.lineTo(hb.toPoint());
+ if (needsLineTo)
+ path.lineTo(hb.toPoint());
return true;
}
@@ -1428,7 +1457,7 @@ static QPainterPath mapProjective(const QTransform &transform, const QPainterPat
}
if (path.elementCount() > 0 && lastMoveTo != last)
- lineTo_clipped(result, transform, last, lastMoveTo, needsMoveTo);
+ lineTo_clipped(result, transform, last, lastMoveTo, needsMoveTo, false);
return result;
}
@@ -1692,13 +1721,12 @@ QRect QTransform::mapRect(const QRect &rect) const
return QRect(x, y, w, h);
} else if (t < TxProject) {
// see mapToPolygon for explanations of the algorithm.
- qreal x0 = 0, y0 = 0;
- qreal x, y;
- MAP(rect.left(), rect.top(), x0, y0);
- qreal xmin = x0;
- qreal ymin = y0;
- qreal xmax = x0;
- qreal ymax = y0;
+ qreal x = 0, y = 0;
+ MAP(rect.left(), rect.top(), x, y);
+ qreal xmin = x;
+ qreal ymin = y;
+ qreal xmax = x;
+ qreal ymax = y;
MAP(rect.right() + 1, rect.top(), x, y);
xmin = qMin(xmin, x);
ymin = qMin(ymin, y);
@@ -1759,13 +1787,12 @@ QRectF QTransform::mapRect(const QRectF &rect) const
}
return QRectF(x, y, w, h);
} else if (t < TxProject) {
- qreal x0 = 0, y0 = 0;
- qreal x, y;
- MAP(rect.x(), rect.y(), x0, y0);
- qreal xmin = x0;
- qreal ymin = y0;
- qreal xmax = x0;
- qreal ymax = y0;
+ qreal x = 0, y = 0;
+ MAP(rect.x(), rect.y(), x, y);
+ qreal xmin = x;
+ qreal ymin = y;
+ qreal xmax = x;
+ qreal ymax = y;
MAP(rect.x() + rect.width(), rect.y(), x, y);
xmin = qMin(xmin, x);
ymin = qMin(ymin, y);
@@ -1859,7 +1886,7 @@ const QMatrix &QTransform::toAffine() const
QTransform::TransformationType QTransform::type() const
{
if (m_dirty >= m_type) {
- if (m_dirty > TxShear && (!qFuzzyCompare(m_13 + 1, 1) || !qFuzzyCompare(m_23 + 1, 1)))
+ if (m_dirty > TxShear && (!qFuzzyCompare(m_13 + 1, 1) || !qFuzzyCompare(m_23 + 1, 1) || !qFuzzyCompare(m_33, 1)))
m_type = TxProject;
else if (m_dirty > TxScale && (!qFuzzyCompare(affine._m12 + 1, 1) || !qFuzzyCompare(affine._m21 + 1, 1))) {
const qreal dot = affine._m11 * affine._m12 + affine._m21 * affine._m22;
@@ -1867,7 +1894,7 @@ QTransform::TransformationType QTransform::type() const
m_type = TxRotate;
else
m_type = TxShear;
- } else if (m_dirty > TxTranslate && (!qFuzzyCompare(affine._m11, 1) || !qFuzzyCompare(affine._m22, 1) || !qFuzzyCompare(m_33, 1)))
+ } else if (m_dirty > TxTranslate && (!qFuzzyCompare(affine._m11, 1) || !qFuzzyCompare(affine._m22, 1)))
m_type = TxScale;
else if (m_dirty > TxNone && (!qFuzzyCompare(affine._dx + 1, 1) || !qFuzzyCompare(affine._dy + 1, 1)))
m_type = TxTranslate;
@@ -2061,10 +2088,11 @@ QTransform::operator QVariant() const
Q_GUI_EXPORT
bool qt_scaleForTransform(const QTransform &transform, qreal *scale)
{
- if (transform.type() <= QTransform::TxTranslate) {
+ const QTransform::TransformationType type = transform.type();
+ if (type <= QTransform::TxTranslate) {
*scale = 1;
return true;
- } else if (transform.type() == QTransform::TxScale) {
+ } else if (type == QTransform::TxScale) {
const qreal xScale = qAbs(transform.m11());
const qreal yScale = qAbs(transform.m22());
*scale = qMax(xScale, yScale);
@@ -2076,7 +2104,7 @@ bool qt_scaleForTransform(const QTransform &transform, qreal *scale)
const qreal yScale = transform.m12() * transform.m12()
+ transform.m22() * transform.m22();
*scale = qSqrt(qMax(xScale, yScale));
- return transform.type() == QTransform::TxRotate && qFuzzyCompare(xScale, yScale);
+ return type == QTransform::TxRotate && qFuzzyCompare(xScale, yScale);
}
QT_END_NAMESPACE
diff --git a/src/gui/painting/qtransform.h b/src/gui/painting/qtransform.h
index de7ebcd..4ea1be3 100644
--- a/src/gui/painting/qtransform.h
+++ b/src/gui/painting/qtransform.h
@@ -255,8 +255,17 @@ inline qreal QTransform::dy() const
return affine._dy;
}
+#if defined(Q_CC_GNU)
+# define Q_CC_GNU_VERSION (((__GNUC__)<<16)|((__GNUC_MINOR__)<<8)|(__GNUC_PATCHLEVEL__))
+# if Q_CC_GNU_VERSION >= 0x040201
+# pragma GCC diagnostic ignored "-Wfloat-equal"
+# endif
+#endif
+
inline QTransform &QTransform::operator*=(qreal num)
{
+ if (num == 1.)
+ return *this;
affine._m11 *= num;
affine._m12 *= num;
m_13 *= num;
@@ -271,11 +280,15 @@ inline QTransform &QTransform::operator*=(qreal num)
}
inline QTransform &QTransform::operator/=(qreal div)
{
+ if (div == 0)
+ return *this;
div = 1/div;
return operator*=(div);
}
inline QTransform &QTransform::operator+=(qreal num)
{
+ if (num == 0)
+ return *this;
affine._m11 += num;
affine._m12 += num;
m_13 += num;
@@ -290,6 +303,8 @@ inline QTransform &QTransform::operator+=(qreal num)
}
inline QTransform &QTransform::operator-=(qreal num)
{
+ if (num == 0)
+ return *this;
affine._m11 -= num;
affine._m12 -= num;
m_13 -= num;
@@ -303,6 +318,13 @@ inline QTransform &QTransform::operator-=(qreal num)
return *this;
}
+#if defined(Q_CC_GNU_VERSION)
+# if Q_CC_GNU_VERSION >= 0x040201
+# pragma GCC diagnostic warning "-Wfloat-equal"
+# endif
+# undef Q_GCC_GNU_VERSION
+#endif
+
/****** stream functions *******************/
Q_GUI_EXPORT QDataStream &operator<<(QDataStream &, const QTransform &);
Q_GUI_EXPORT QDataStream &operator>>(QDataStream &, QTransform &);
diff --git a/src/gui/painting/qwindowsurface.cpp b/src/gui/painting/qwindowsurface.cpp
index bcb0380..d941a24 100644
--- a/src/gui/painting/qwindowsurface.cpp
+++ b/src/gui/painting/qwindowsurface.cpp
@@ -310,10 +310,13 @@ void qt_scrollRectInImage(QImage &img, const QRect &rect, const QPoint &offset)
int lineskip = img.bytesPerLine();
int depth = img.depth() >> 3;
-
- const QRect r = rect & QRect(0, 0, img.width(), img.height());
+ const QRect imageRect(0, 0, img.width(), img.height());
+ const QRect r = rect & imageRect & imageRect.translated(-offset);
const QPoint p = rect.topLeft() + offset;
+ if (r.isEmpty())
+ return;
+
const uchar *src;
uchar *dest;
diff --git a/src/gui/painting/qwindowsurface_raster.cpp b/src/gui/painting/qwindowsurface_raster.cpp
index 7a74fe0..110ba2f 100644
--- a/src/gui/painting/qwindowsurface_raster.cpp
+++ b/src/gui/painting/qwindowsurface_raster.cpp
@@ -142,8 +142,7 @@ void QRasterWindowSurface::beginPaint(const QRegion &rgn)
p.fillRect(*it, blank);
}
}
-#endif
-#if defined(Q_OS_WINCE)
+#else
Q_UNUSED(rgn);
#endif
}
@@ -250,6 +249,7 @@ void QRasterWindowSurface::flush(QWidget *widget, const QRegion &rgn, const QPoi
// d->image->image.save("flush.png");
+ Q_UNUSED(offset);
// Get a context for the widget.
#ifndef QT_MAC_USE_COCOA
CGContextRef context;
diff --git a/src/gui/styles/gtksymbols.cpp b/src/gui/styles/gtksymbols.cpp
index 3fbf233..0842ec7 100644
--- a/src/gui/styles/gtksymbols.cpp
+++ b/src/gui/styles/gtksymbols.cpp
@@ -75,6 +75,7 @@
QT_BEGIN_NAMESPACE
static bool displayDepth = -1;
+Q_GLOBAL_STATIC(QGtkStyleUpdateScheduler, styleScheduler)
typedef QHash<QString, GtkWidget*> WidgetMap;
Q_GLOBAL_STATIC(WidgetMap, gtkWidgetMap)
@@ -486,11 +487,11 @@ static void init_gtk_menu()
}
// Updates window/windowtext palette based on the indicated gtk widget
-static void ensureWidgetPalette(QWidget* widget, const QString &gtkWidgetName)
+static QPalette gtkWidgetPalette(const QString &gtkWidgetName)
{
GtkWidget *gtkWidget = QGtk::gtkWidget(gtkWidgetName);
Q_ASSERT(gtkWidget);
- QPalette pal = widget->palette();
+ QPalette pal = QApplication::palette();
GdkColor gdkBg = gtkWidget->style->bg[GTK_STATE_NORMAL];
GdkColor gdkText = gtkWidget->style->fg[GTK_STATE_NORMAL];
GdkColor gdkDisabledText = gtkWidget->style->fg[GTK_STATE_INSENSITIVE];
@@ -503,8 +504,7 @@ static void ensureWidgetPalette(QWidget* widget, const QString &gtkWidgetName)
pal.setBrush(QPalette::Disabled, QPalette::WindowText, disabledTextColor);
pal.setBrush(QPalette::All, QPalette::ButtonText, textColor);
pal.setBrush(QPalette::Disabled, QPalette::ButtonText, disabledTextColor);
- widget->setPalette(pal);
- widget->setAttribute(Qt::WA_SetPalette, false);
+ return pal;
}
bool QGtk::isKDE4Session()
@@ -515,44 +515,47 @@ bool QGtk::isKDE4Session()
return (version == 4);
}
-// Maps a Gtk widget palettes to a Qt widget
-void QGtk::applyGtkSystemPalette(QWidget *widget)
+void QGtk::applyCustomPaletteHash()
{
- // Do not apply if the widget has a custom palette;
- if (widget->testAttribute(Qt::WA_SetPalette))
- return;
+ QPalette menuPal = gtkWidgetPalette(QLS("GtkMenu"));
+ GdkColor gdkBg = QGtk::gtkWidget(QLS("GtkMenu"))->style->bg[GTK_STATE_NORMAL];
+ QColor bgColor(gdkBg.red>>8, gdkBg.green>>8, gdkBg.blue>>8);
+ menuPal.setBrush(QPalette::Base, bgColor);
+ menuPal.setBrush(QPalette::Window, bgColor);
+ qApp->setPalette(menuPal, "QMenu");
- QPalette pal;
- if (QStatusBar *statusbar = qobject_cast<QStatusBar*> (widget))
- ensureWidgetPalette(statusbar, QLS("GtkStatusbar"));
- else if (QMenuBar *menubar = qobject_cast<QMenuBar*> (widget))
- ensureWidgetPalette(menubar, QLS("GtkMenuBar"));
- else if (QToolBar *toolbar = qobject_cast<QToolBar*> (widget))
- ensureWidgetPalette(toolbar, QLS("GtkToolbar"));
- else if (QMenu *menubar = qobject_cast<QMenu*> (widget)) {
- // This really applies to the combo box rendering since
- // QComboBox copies the palette from a QMenu
- QPalette pal = widget->palette();
- GdkColor gdkBg = QGtk::gtkWidget(QLS("GtkMenu"))->style->bg[GTK_STATE_NORMAL];
- QColor bgColor(gdkBg.red>>8, gdkBg.green>>8, gdkBg.blue>>8);
- pal.setBrush(QPalette::Base, bgColor);
- menubar->setPalette(pal);
- }
- widget->setAttribute(Qt::WA_SetPalette, false);
+ QPalette toolbarPal = gtkWidgetPalette(QLS("GtkToolbar"));
+ qApp->setPalette(toolbarPal, "QToolBar");
+
+ QPalette menuBarPal = gtkWidgetPalette(QLS("GtkMenuBar"));
+ qApp->setPalette(menuBarPal, "QMenuBar");
}
static void gtkStyleSetCallback(GtkWidget*, GtkStyle*, void*)
{
+ // We have to let this function return and complete the event
+ // loop to ensure that all gtk widgets have been styled before
+ // updating
+ QMetaObject::invokeMethod(styleScheduler(), "updateTheme", Qt::QueuedConnection);
+}
+
+void QGtkStyleUpdateScheduler::updateTheme()
+{
static QString oldTheme(QLS("qt_not_set"));
QPixmapCache::clear();
- qApp->setFont(QGtk::getThemeFont());
- QGtk::initGtkWidgets();
if (oldTheme != getThemeName()) {
oldTheme = getThemeName();
- QApplicationPrivate::setSystemPalette(qApp->style()->standardPalette());
+ qApp->setFont(QGtk::getThemeFont());
+ QPalette newPalette = qApp->style()->standardPalette();
+ QApplicationPrivate::setSystemPalette(newPalette);
+ QApplication::setPalette(newPalette);
+ QGtk::initGtkWidgets();
+ QGtk::applyCustomPaletteHash();
QList<QWidget*> widgets = QApplication::allWidgets();
+ // Notify all widgets that size metrics might have changed
foreach (QWidget *widget, widgets) {
- QGtk::applyGtkSystemPalette(widget);
+ QEvent e(QEvent::StyleChange);
+ QApplication::sendEvent(widget, &e);
}
}
}
@@ -743,9 +746,9 @@ static void setupGtkFileChooser(GtkWidget* gtkFileChooser, QWidget *parent,
foreach (const QString &rawfilter, filters) {
GtkFileFilter *gtkFilter = QGtk::gtk_file_filter_new ();
QString name = rawfilter.left(rawfilter.indexOf(QLatin1Char('(')));
- QGtk::gtk_file_filter_set_name(gtkFilter, qPrintable(name));
-
QStringList extensions = extract_filter(rawfilter);
+ QGtk::gtk_file_filter_set_name(gtkFilter, qPrintable(name.isEmpty() ? extensions.join(QLS(", ")) : name));
+
foreach (const QString &fileExtension, extensions) {
QGtk::gtk_file_filter_add_pattern (gtkFilter, qPrintable(fileExtension));
}
diff --git a/src/gui/styles/gtksymbols_p.h b/src/gui/styles/gtksymbols_p.h
index 0cea542..74c5dc3 100644
--- a/src/gui/styles/gtksymbols_p.h
+++ b/src/gui/styles/gtksymbols_p.h
@@ -204,7 +204,7 @@ public:
static void cleanup_gtk_widgets();
static void initGtkWidgets();
static bool isKDE4Session();
- static void applyGtkSystemPalette(QWidget* widget);
+ static void applyCustomPaletteHash();
static QFont getThemeFont();
static bool isThemeAvailable() { return gtkStyle() != 0; }
@@ -329,6 +329,15 @@ public:
static Ptr_gconf_client_get_string gconf_client_get_string;
};
+// Helper to ensure that we have polished all our gtk widgets
+// before updating our own palettes
+class QGtkStyleUpdateScheduler : public QObject
+{
+ Q_OBJECT
+public slots:
+ void updateTheme();
+};
+
QT_END_NAMESPACE
#endif // !QT_NO_STYLE_GTK
diff --git a/src/gui/styles/qgtkstyle.cpp b/src/gui/styles/qgtkstyle.cpp
index 582962a..ca71da2 100644
--- a/src/gui/styles/qgtkstyle.cpp
+++ b/src/gui/styles/qgtkstyle.cpp
@@ -38,7 +38,6 @@
** $QT_END_LICENSE$
**
****************************************************************************/
-
#include "qgtkstyle.h"
#if !defined(QT_NO_STYLE_GTK)
@@ -138,6 +137,30 @@ static const char * const dock_widget_restore_xpm[] =
};
+class QGtkStyleFilter : public QObject
+{
+public:
+ QGtkStyleFilter() {
+ qApp->installEventFilter(this);
+ }
+
+private:
+ bool eventFilter(QObject *obj, QEvent *e);
+};
+
+bool QGtkStyleFilter::eventFilter(QObject *obj, QEvent *e)
+{
+ if (e->type() == QEvent::ApplicationPaletteChange) {
+ // Only do this the first time since this will also
+ // generate applicationPaletteChange events
+ extern QHash<QByteArray, QPalette> *qt_app_palettes_hash(); //qapplication.cpp
+ if (!qt_app_palettes_hash() || qt_app_palettes_hash()->isEmpty()) {
+ QGtk::applyCustomPaletteHash();
+ }
+ }
+ return QObject::eventFilter(obj, e);
+}
+
class QGtkStylePrivate : public QCleanlooksStylePrivate
{
Q_DECLARE_PUBLIC(QGtkStyle)
@@ -145,6 +168,7 @@ public:
QGtkStylePrivate()
: QCleanlooksStylePrivate()
{}
+ QGtkStyleFilter filter;
};
static const int groupBoxBottomMargin = 2; // space below the groupbox
@@ -217,6 +241,7 @@ static QString uniqueName(const QString &key, const QStyleOption *option, const
Constructs a QGtkStyle object.
*/
QGtkStyle::QGtkStyle()
+ : QCleanlooksStyle(*new QGtkStylePrivate)
{
QGtk::initGtkWidgets();
}
@@ -313,7 +338,7 @@ void QGtkStyle::polish(QPalette &palette)
if (!QGtk::isThemeAvailable())
QCleanlooksStyle::polish(palette);
else
- palette = standardPalette();
+ palette = palette.resolve(standardPalette());
}
/*!
@@ -328,6 +353,7 @@ void QGtkStyle::polish(QApplication *app)
if (app->desktopSettingsAware() && QGtk::isThemeAvailable()) {
QApplicationPrivate::setSystemPalette(standardPalette());
QApplicationPrivate::setSystemFont(QGtk::getThemeFont());
+ QGtk::applyCustomPaletteHash();
if (!QGtk::isKDE4Session()) {
qt_filedialog_open_filename_hook = &QGtk::openFilename;
qt_filedialog_save_filename_hook = &QGtk::saveFilename;
@@ -357,12 +383,12 @@ void QGtkStyle::unpolish(QApplication *app)
/*!
\reimp
*/
+
void QGtkStyle::polish(QWidget *widget)
{
QCleanlooksStyle::polish(widget);
if (!QGtk::isThemeAvailable())
return;
-
if (qobject_cast<QAbstractButton*>(widget)
|| qobject_cast<QToolButton*>(widget)
|| qobject_cast<QComboBox*>(widget)
@@ -375,8 +401,6 @@ void QGtkStyle::polish(QWidget *widget)
widget->setAttribute(Qt::WA_Hover);
else if (QTreeView *tree = qobject_cast<QTreeView *> (widget))
tree->viewport()->setAttribute(Qt::WA_Hover);
-
- QGtk::applyGtkSystemPalette(widget);
}
/*!
@@ -647,6 +671,12 @@ void QGtkStyle::drawPrimitive(PrimitiveElement element,
switch (element) {
case PE_Frame: {
+ if (widget && widget->inherits("QComboBoxPrivateContainer")){
+ QStyleOption copy = *option;
+ copy.state |= State_Raised;
+ drawPrimitive(PE_PanelMenu, &copy, painter, widget);
+ break;
+ }
// Drawing the entire itemview frame is very expensive, especially on the native X11 engine
// Instead we cheat a bit and draw a border image without the center part, hence only scaling
// thin rectangular images
@@ -921,14 +951,15 @@ void QGtkStyle::drawPrimitive(PrimitiveElement element,
"interior-focus", &interior_focus,
"focus-line-width", &focus_line_width, NULL);
+ // See https://bugzilla.mozilla.org/show_bug.cgi?id=405421 for info about this hack
+ g_object_set_data(G_OBJECT(gtkEntry), "transparent-bg-hint", GINT_TO_POINTER(TRUE));
+
if (!interior_focus && option->state & State_HasFocus)
rect.adjust(focus_line_width, focus_line_width, -focus_line_width, -focus_line_width);
-
gtkPainter.paintShadow(gtkEntry, "entry", rect, option->state & State_Enabled ?
GTK_STATE_NORMAL : GTK_STATE_INSENSITIVE,
GTK_SHADOW_IN, gtkEntry->style,
option->state & State_HasFocus ? QLS("focus") : QString());
-
if (!interior_focus && option->state & State_HasFocus)
gtkPainter.paintShadow(gtkEntry, "entry", option->rect, option->state & State_Enabled ?
GTK_STATE_ACTIVE : GTK_STATE_INSENSITIVE,
@@ -947,7 +978,7 @@ void QGtkStyle::drawPrimitive(PrimitiveElement element,
if (widget && widget->testAttribute(Qt::WA_SetPalette) &&
resolve_mask & (1 << QPalette::Base)) // Palette overridden by user
- painter->fillRect(textRect, option->palette.base().color());
+ painter->fillRect(textRect, option->palette.base());
else
gtkPainter.paintFlatBox( gtkEntry, "entry_bg", textRect,
option->state & State_Enabled ? GTK_STATE_NORMAL : GTK_STATE_INSENSITIVE, GTK_SHADOW_NONE, gtkEntry->style);
@@ -2477,6 +2508,10 @@ void QGtkStyle::drawControl(ControlElement element,
if (selected) {
QRect rect = option->rect.adjusted(0, 0, -1, -1);
+#ifndef QT_NO_COMBOBOX
+ if (qobject_cast<const QComboBox*>(widget))
+ rect = option->rect;
+#endif
gtkPainter.paintBox( gtkMenuItem, "menuitem", rect, GTK_STATE_PRELIGHT, GTK_SHADOW_OUT, style);
}
@@ -2593,16 +2628,24 @@ void QGtkStyle::drawControl(ControlElement element,
opt.rect = vCheckRect;
drawPrimitive(PE_PanelButtonCommand, &opt, painter, widget);
}
-
painter->drawPixmap(pmr.topLeft(), pixmap);
}
GdkColor gdkText = gtkMenuItem->style->fg[GTK_STATE_NORMAL];
GdkColor gdkDText = gtkMenuItem->style->fg[GTK_STATE_INSENSITIVE];
GdkColor gdkHText = gtkMenuItem->style->fg[GTK_STATE_PRELIGHT];
+ uint resolve_mask = option->palette.resolve();
QColor textColor = QColor(gdkText.red>>8, gdkText.green>>8, gdkText.blue>>8);
QColor disabledTextColor = QColor(gdkDText.red>>8, gdkDText.green>>8, gdkDText.blue>>8);
+ if (resolve_mask & (1 << QPalette::ButtonText)) {
+ textColor = option->palette.buttonText().color();
+ disabledTextColor = option->palette.brush(QPalette::Disabled, QPalette::ButtonText).color();
+ }
+
QColor highlightedTextColor = QColor(gdkHText.red>>8, gdkHText.green>>8, gdkHText.blue>>8);
+ if (resolve_mask & (1 << QPalette::HighlightedText)) {
+ highlightedTextColor = option->palette.highlightedText().color();
+ }
if (selected)
painter->setPen(highlightedTextColor);
@@ -2718,10 +2761,13 @@ void QGtkStyle::drawControl(ControlElement element,
if (tab->state & State_Selected)
state = GTK_STATE_NORMAL;
- bool first = tab->position == QStyleOptionTab::Beginning || tab->position == QStyleOptionTab::OnlyOneTab;
- bool last = tab->position == QStyleOptionTab::End || tab->position == QStyleOptionTab::OnlyOneTab;
bool selected = (tab->state & State_Selected);
- if (option->direction == Qt::RightToLeft) {
+ bool first = false, last = false;
+ if (widget) {
+ // This is most accurate and avoids resizing tabs while moving
+ first = tab->rect.left() == widget->rect().left();
+ last = tab->rect.right() == widget->rect().right();
+ } else if (option->direction == Qt::RightToLeft) {
bool tmp = first;
first = last;
last = tmp;
diff --git a/src/gui/styles/qmacstyle_mac.mm b/src/gui/styles/qmacstyle_mac.mm
index 398e11d..7a870fe 100644
--- a/src/gui/styles/qmacstyle_mac.mm
+++ b/src/gui/styles/qmacstyle_mac.mm
@@ -549,7 +549,6 @@ extern QPaintDevice *qt_mac_safe_pdev; //qapplication_mac.cpp
QMacCGStyle globals
*****************************************************************************/
const int qt_mac_hitheme_version = 0; //the HITheme version we speak
-const int macSpinBoxSep = 5; // distance between spinwidget and the lineedit
const int macItemFrame = 2; // menu item frame width
const int macItemHMargin = 3; // menu item hor text margin
const int macItemVMargin = 2; // menu item ver text margin
@@ -2146,8 +2145,11 @@ void qt_mac_fill_background(QPainter *painter, const QRegion &rgn, const QPoint
/*! \reimp */
void QMacStyle::polish(QPalette &pal)
{
- if (qt_mac_backgroundPattern == 0)
+ if (!qt_mac_backgroundPattern) {
+ if (!qApp)
+ return;
qt_mac_backgroundPattern = new QPixmap(d->generateBackgroundPattern());
+ }
QColor pc(Qt::black);
pc = qcolorForTheme(kThemeBrushDialogBackgroundActive);
@@ -2373,7 +2375,14 @@ int QMacStyle::pixelMetric(PixelMetric metric, const QStyleOption *opt, const QW
break;
case PM_SpinBoxFrameWidth:
GetThemeMetric(kThemeMetricEditTextFrameOutset, &ret);
- ret += 2;
+ switch (d->aquaSizeConstrain(opt, widget)) {
+ default:
+ ret += 2;
+ break;
+ case QAquaSizeMini:
+ ret += 1;
+ break;
+ }
break;
case PM_ButtonShiftHorizontal:
case PM_ButtonShiftVertical:
@@ -5014,11 +5023,10 @@ void QMacStyle::drawComplexControl(ComplexControl cc, const QStyleOptionComplex
bdi.kind = kThemeIncDecButton;
break;
case QAquaSizeMini:
+ bdi.kind = kThemeIncDecButtonMini;
+ break;
case QAquaSizeSmall:
- if (aquaSize == QAquaSizeMini)
- bdi.kind = kThemeIncDecButtonMini;
- else
- bdi.kind = kThemeIncDecButtonSmall;
+ bdi.kind = kThemeIncDecButtonSmall;
break;
}
if (!(sb->stepEnabled & (QAbstractSpinBox::StepUpEnabled
@@ -5038,8 +5046,8 @@ void QMacStyle::drawComplexControl(ComplexControl cc, const QStyleOptionComplex
bdi.value = kThemeButtonOff;
bdi.adornment = kThemeAdornmentNone;
- QRect updown = subControlRect(CC_SpinBox, sb, SC_SpinBoxUp,
- widget);
+ QRect updown = subControlRect(CC_SpinBox, sb, SC_SpinBoxUp, widget);
+
updown |= subControlRect(CC_SpinBox, sb, SC_SpinBoxDown, widget);
HIRect newRect = qt_hirectForQRect(updown);
QRect off_rct;
@@ -5050,15 +5058,6 @@ void QMacStyle::drawComplexControl(ComplexControl cc, const QStyleOptionComplex
int(outRect.size.width - newRect.size.width),
int(outRect.size.height - newRect.size.height));
- // HIThemeGetButtonBackgroundBounds offsets non-focused normal sized
- // buttons by one in de y direction, account for that here.
- if (bdi.adornment == kThemeAdornmentNone && bdi.kind == kThemeIncDecButton)
- off_rct.adjust(0, 1, 0, 0);
-
- // Adjust the rect for small buttos also.
- if (bdi.adornment == kThemeAdornmentFocus && bdi.kind == kThemeIncDecButtonSmall)
- off_rct.adjust(0, 0, 0, -1);
-
newRect = qt_hirectForQRect(updown, off_rct);
HIThemeDrawButton(&newRect, &bdi, cg, kHIThemeOrientationNormal, 0);
}
@@ -5723,39 +5722,61 @@ QRect QMacStyle::subControlRect(ComplexControl cc, const QStyleOptionComplex *op
break;
case CC_SpinBox:
if (const QStyleOptionSpinBox *spin = qstyleoption_cast<const QStyleOptionSpinBox *>(opt)) {
- const int spinner_w = 14,
- fw = pixelMetric(PM_SpinBoxFrameWidth, spin, widget);
+ QAquaWidgetSize aquaSize = d->aquaSizeConstrain(spin, widget);
+ int spinner_w;
+ int spinBoxSep;
+ int fw = pixelMetric(PM_SpinBoxFrameWidth, spin, widget);
+ switch (aquaSize) {
+ default:
+ case QAquaSizeUnknown:
+ case QAquaSizeLarge:
+ spinner_w = 14;
+ spinBoxSep = 2;
+ break;
+ case QAquaSizeSmall:
+ spinner_w = 12;
+ spinBoxSep = 2;
+ break;
+ case QAquaSizeMini:
+ spinner_w = 10;
+ spinBoxSep = 1;
+ break;
+ }
+
switch (sc) {
case SC_SpinBoxUp:
case SC_SpinBoxDown: {
if (spin->buttonSymbols == QAbstractSpinBox::NoButtons)
break;
- const int frameWidth = pixelMetric(PM_SpinBoxFrameWidth, spin, widget);
- const int spinner_w = 18;
- const int y = frameWidth;
- const int x = spin->rect.width() - spinner_w + frameWidth;
+
+ const int y = fw;
+ const int x = spin->rect.width() - spinner_w;
ret.setRect(x + spin->rect.x(), y + spin->rect.y(), spinner_w, spin->rect.height() - y * 2);
HIThemeButtonDrawInfo bdi;
bdi.version = qt_mac_hitheme_version;
bdi.kind = kThemeIncDecButton;
- QAquaWidgetSize aquaSize = d->aquaSizeConstrain(opt, widget);
+ int hackTranslateX;
switch (aquaSize) {
- case QAquaSizeUnknown:
- case QAquaSizeLarge:
- bdi.kind = kThemeIncDecButton;
- break;
- case QAquaSizeMini:
- case QAquaSizeSmall:
- if (aquaSize == QAquaSizeMini)
- bdi.kind = kThemeIncDecButtonMini;
- else
- bdi.kind = kThemeIncDecButtonSmall;
- break;
+ default:
+ case QAquaSizeUnknown:
+ case QAquaSizeLarge:
+ bdi.kind = kThemeIncDecButton;
+ hackTranslateX = 0;
+ break;
+ case QAquaSizeSmall:
+ bdi.kind = kThemeIncDecButtonSmall;
+ hackTranslateX = -2;
+ break;
+ case QAquaSizeMini:
+ bdi.kind = kThemeIncDecButtonMini;
+ hackTranslateX = -1;
+ break;
}
bdi.state = kThemeStateActive;
bdi.value = kThemeButtonOff;
bdi.adornment = kThemeAdornmentNone;
HIRect hirect = qt_hirectForQRect(ret);
+
HIRect outRect;
HIThemeGetButtonBackgroundBounds(&hirect, &bdi, &outRect);
ret = qt_qrectForHIRect(outRect);
@@ -5770,13 +5791,13 @@ QRect QMacStyle::subControlRect(ComplexControl cc, const QStyleOptionComplex *op
Q_ASSERT(0);
break;
}
- ret.translate(-1, -2); // hack: position the buttons correctly (weird that we need this)
+ ret.translate(hackTranslateX, 0); // hack: position the buttons correctly (weird that we need this)
ret = visualRect(spin->direction, spin->rect, ret);
break;
}
case SC_SpinBoxEditField:
ret.setRect(fw, fw,
- spin->rect.width() - spinner_w - fw * 2 - macSpinBoxSep + 1,
+ spin->rect.width() - spinner_w - fw * 2 - spinBoxSep,
spin->rect.height() - fw * 2);
ret = visualRect(spin->direction, spin->rect, ret);
break;
@@ -5808,8 +5829,8 @@ QSize QMacStyle::sizeFromContents(ContentsType ct, const QStyleOption *opt,
switch (ct) {
case QStyle::CT_SpinBox:
- sz.setWidth(sz.width() + macSpinBoxSep);
- sz.setHeight(sz.height() - 3); // hack to work around horrible sizeHint() code in QAbstractSpinBox
+ // hack to work around horrible sizeHint() code in QAbstractSpinBox
+ sz.setHeight(sz.height() - 3);
break;
case QStyle::CT_TabBarTab:
if (const QStyleOptionTabV3 *tab = qstyleoption_cast<const QStyleOptionTabV3 *>(opt)) {
diff --git a/src/gui/styles/qstylesheetstyle.cpp b/src/gui/styles/qstylesheetstyle.cpp
index a39eeb7..714b8c5 100644
--- a/src/gui/styles/qstylesheetstyle.cpp
+++ b/src/gui/styles/qstylesheetstyle.cpp
@@ -1514,20 +1514,11 @@ void QRenderRule::configurePalette(QPalette *p, QPalette::ColorRole fr, QPalette
void QRenderRule::configurePalette(QPalette *p, QPalette::ColorGroup cg, const QWidget *w, bool embedded)
{
-#ifdef QT_NO_COMBOBOX
- const bool isReadOnlyCombo = false;
-#else
- const bool isReadOnlyCombo = qobject_cast<const QComboBox *>(w) != 0;
-#endif
-
if (bg && bg->brush.style() != Qt::NoBrush) {
- if (isReadOnlyCombo) {
- p->setBrush(cg, QPalette::Base, bg->brush); // for windows, windowxp
- p->setBrush(cg, QPalette::Button, bg->brush); // for plastique
- } else {
- p->setBrush(cg, w->backgroundRole(), bg->brush);
- //p->setBrush(cg, QPalette::Window, bg->brush);
- }
+ p->setBrush(cg, QPalette::Base, bg->brush); // for windows, windowxp
+ p->setBrush(cg, QPalette::Button, bg->brush); // for plastique
+ p->setBrush(cg, w->backgroundRole(), bg->brush);
+ p->setBrush(cg, QPalette::Window, bg->brush);
}
if (embedded) {
@@ -1542,12 +1533,9 @@ void QRenderRule::configurePalette(QPalette *p, QPalette::ColorGroup cg, const Q
return;
if (pal->foreground.style() != Qt::NoBrush) {
- if (isReadOnlyCombo) {
- p->setBrush(cg, QPalette::ButtonText, pal->foreground);
- } else {
- p->setBrush(cg, w->foregroundRole(), pal->foreground);
- p->setBrush(cg, QPalette::WindowText, pal->foreground);
- }
+ p->setBrush(cg, QPalette::ButtonText, pal->foreground);
+ p->setBrush(cg, w->foregroundRole(), pal->foreground);
+ p->setBrush(cg, QPalette::WindowText, pal->foreground);
p->setBrush(cg, QPalette::Text, pal->foreground);
}
if (pal->selectionBackground.style() != Qt::NoBrush)
@@ -4938,7 +4926,7 @@ QSize QStyleSheetStyle::sizeFromContents(ContentsType ct, const QStyleOption *op
case CT_LineEdit:
#ifndef QT_NO_SPINBOX
// ### hopelessly broken QAbstractSpinBox (part 2)
- if (QAbstractSpinBox *spinBox = qobject_cast<QAbstractSpinBox *>(w->parentWidget())) {
+ if (QAbstractSpinBox *spinBox = qobject_cast<QAbstractSpinBox *>(w ? w->parentWidget() : 0)) {
QRenderRule rule = renderRule(spinBox, opt);
if (rule.hasBox() || !rule.hasNativeBorder())
return csz;
@@ -5854,7 +5842,7 @@ QRect QStyleSheetStyle::subElementRect(SubElement se, const QStyleOption *opt, c
bool QStyleSheetStyle::event(QEvent *e)
{
- return baseStyle()->event(e) || ParentStyle::event(e);
+ return (baseStyle()->event(e) && e->isAccepted()) || ParentStyle::event(e);
}
void QStyleSheetStyle::updateStyleSheetFont(QWidget* w) const
diff --git a/src/gui/styles/qwindowsmobilestyle.cpp b/src/gui/styles/qwindowsmobilestyle.cpp
index c52c700..1c03b9e 100644
--- a/src/gui/styles/qwindowsmobilestyle.cpp
+++ b/src/gui/styles/qwindowsmobilestyle.cpp
@@ -3401,6 +3401,9 @@ int QWindowsMobileStyle::styleHint(StyleHint hint, const QStyleOption *opt, cons
case SH_ScrollBar_ContextMenu:
ret = false;
break;
+ case SH_MenuBar_AltKeyNavigation:
+ ret = false;
+ break;
default:
ret = QWindowsStyle::styleHint(hint, opt, widget, returnData);
break;
diff --git a/src/gui/styles/qwindowsvistastyle.cpp b/src/gui/styles/qwindowsvistastyle.cpp
index 4c3060d..013ca1e 100644
--- a/src/gui/styles/qwindowsvistastyle.cpp
+++ b/src/gui/styles/qwindowsvistastyle.cpp
@@ -801,12 +801,20 @@ void QWindowsVistaStyle::drawPrimitive(PrimitiveElement element, const QStyleOpt
if (vopt->viewItemPosition == QStyleOptionViewItemV4::OnlyOne
|| vopt->viewItemPosition == QStyleOptionViewItemV4::Invalid)
painter->drawPixmap(pixmapRect.topLeft(), pixmap);
- else if (reverse ? rightSection : leftSection)
- painter->drawPixmap(pixmapRect, pixmap, srcRect.adjusted(0, 0, -frame, 0));
- else if (reverse ? leftSection : rightSection)
- painter->drawPixmap(pixmapRect, pixmap,
- srcRect.adjusted(frame, 0, 0, 0));
- else if (vopt->viewItemPosition == QStyleOptionViewItemV4::Middle)
+ else if (reverse ? rightSection : leftSection){
+ painter->drawPixmap(QRect(pixmapRect.topLeft(),
+ QSize(frame, pixmapRect.height())), pixmap,
+ QRect(QPoint(0, 0), QSize(frame, pixmapRect.height())));
+ painter->drawPixmap(pixmapRect.adjusted(frame, 0, 0, 0),
+ pixmap, srcRect.adjusted(frame, 0, -frame, 0));
+ } else if (reverse ? leftSection : rightSection) {
+ painter->drawPixmap(QRect(pixmapRect.topRight() - QPoint(frame - 1, 0),
+ QSize(frame, pixmapRect.height())), pixmap,
+ QRect(QPoint(pixmapRect.width() - frame, 0),
+ QSize(frame, pixmapRect.height())));
+ painter->drawPixmap(pixmapRect.adjusted(0, 0, -frame, 0),
+ pixmap, srcRect.adjusted(frame, 0, -frame, 0));
+ } else if (vopt->viewItemPosition == QStyleOptionViewItemV4::Middle)
painter->drawPixmap(pixmapRect, pixmap,
srcRect.adjusted(frame, 0, -frame, 0));
} else {
@@ -2388,6 +2396,9 @@ void QWindowsVistaStyle::polish(QWidget *widget)
else if (QTreeView *tree = qobject_cast<QTreeView *> (widget)) {
tree->viewport()->setAttribute(Qt::WA_Hover);
}
+ else if (QListView *list = qobject_cast<QListView *> (widget)) {
+ list->viewport()->setAttribute(Qt::WA_Hover);
+ }
}
/*!
diff --git a/src/gui/styles/qwindowsvistastyle_p.h b/src/gui/styles/qwindowsvistastyle_p.h
index 877bc50..cef2b71 100644
--- a/src/gui/styles/qwindowsvistastyle_p.h
+++ b/src/gui/styles/qwindowsvistastyle_p.h
@@ -76,6 +76,7 @@
#include <qscrollbar.h>
#include <qprogressbar.h>
#include <qdockwidget.h>
+#include <qlistview.h>
#include <qtreeview.h>
#include <qtextedit.h>
#include <qmessagebox.h>
diff --git a/src/gui/styles/qwindowsxpstyle.cpp b/src/gui/styles/qwindowsxpstyle.cpp
index 9d735a7..2f4254e 100644
--- a/src/gui/styles/qwindowsxpstyle.cpp
+++ b/src/gui/styles/qwindowsxpstyle.cpp
@@ -607,7 +607,7 @@ void QWindowsXPStylePrivate::drawBackground(XPThemeData &themeData)
QPainter *painter = themeData.painter;
Q_ASSERT_X(painter != 0, "QWindowsXPStylePrivate::drawBackground()", "Trying to draw a theme part without a painter");
- if (!painter)
+ if (!painter || !painter->isActive())
return;
painter->save();
@@ -2834,7 +2834,7 @@ void QWindowsXPStyle::drawComplexControl(ComplexControl cc, const QStyleOptionCo
bflags |= State_MouseOver;
}
}
-
+
QStyleOption tool(0);
tool.palette = toolbutton->palette;
if (toolbutton->subControls & SC_ToolButton) {
diff --git a/src/gui/text/qcssparser.cpp b/src/gui/text/qcssparser.cpp
index db1e781..38621c1 100644
--- a/src/gui/text/qcssparser.cpp
+++ b/src/gui/text/qcssparser.cpp
@@ -278,19 +278,15 @@ static const QCssKnownValue values[NumKnownValues - 1] = {
{ "xx-large", Value_XXLarge }
};
+//Map id to strings as they appears in the 'values' array above
+static const int indexOfId[NumKnownValues] = { 0, 40, 47, 41, 48, 53, 34, 26, 68, 69, 25, 42, 5, 62, 46,
+ 29, 57, 58, 27, 50, 60, 6, 10, 38, 55, 19, 13, 17, 18, 20, 21, 49, 24, 45, 65, 36, 3, 2, 39, 61, 16,
+ 11, 56, 14, 32, 63, 54, 64, 33, 67, 8, 28, 37, 12, 35, 59, 7, 9, 4, 66, 52, 22, 23, 30, 31, 1, 15, 0,
+ 51, 44, 43 };
+
QString Value::toString() const
{
- static int indexOfId[NumKnownValues - 1];
- static bool hasCachedIndexes = false;
-
if (type == KnownIdentifier) {
- if (!hasCachedIndexes) {
- for (int i = 0; i < NumKnownValues - 1; ++i)
- indexOfId[values[i].id] = i;
-
- hasCachedIndexes = true;
- }
-
return QLatin1String(values[indexOfId[variant.toInt()]].name);
} else {
return variant.toString();
@@ -1165,13 +1161,20 @@ static bool setFontWeightFromValue(const Value &value, QFont *font)
return true;
}
-static bool setFontFamilyFromValues(const QVector<Value> &values, QFont *font)
+/** \internal
+ * parse the font family from the values (starting from index \a start)
+ * and set it the \a font
+ * \returns true if a family was extracted.
+ */
+static bool setFontFamilyFromValues(const QVector<Value> &values, QFont *font, int start = 0)
{
QString family;
- for (int i = 0; i < values.count(); ++i) {
+ for (int i = start; i < values.count(); ++i) {
const Value &v = values.at(i);
- if (v.type == Value::TermOperatorComma)
- break;
+ if (v.type == Value::TermOperatorComma) {
+ family += QLatin1Char(',');
+ continue;
+ }
const QString str = v.variant.toString();
if (str.isEmpty())
break;
@@ -1225,9 +1228,7 @@ static void parseShorthandFontProperty(const QVector<Value> &values, QFont *font
}
if (i < values.count()) {
- QString fam = values.at(i).variant.toString();
- if (!fam.isEmpty())
- font->setFamily(fam);
+ setFontFamilyFromValues(values, font, i);
}
}
diff --git a/src/gui/text/qfont.cpp b/src/gui/text/qfont.cpp
index 43f5b1e..f73ffb5 100644
--- a/src/gui/text/qfont.cpp
+++ b/src/gui/text/qfont.cpp
@@ -890,7 +890,10 @@ int QFont::pointSize() const
*/
void QFont::setPointSize(int pointSize)
{
- Q_ASSERT_X (pointSize > 0, "QFont::setPointSize", "point size must be greater than 0");
+ if (pointSize <= 0) {
+ qWarning("QFont::setPointSize: Point size <= 0 (%d), must be greater than 0", pointSize);
+ return;
+ }
detach();
@@ -909,7 +912,10 @@ void QFont::setPointSize(int pointSize)
*/
void QFont::setPointSizeF(qreal pointSize)
{
- Q_ASSERT_X(pointSize > 0.0, "QFont::setPointSizeF", "point size must be greater than 0");
+ if (pointSize <= 0) {
+ qWarning("QFont::setPointSizeF: Point size <= 0 (%f), must be greater than 0", pointSize);
+ return;
+ }
detach();
diff --git a/src/gui/text/qfontdatabase_win.cpp b/src/gui/text/qfontdatabase_win.cpp
index c9f5586..780ae28 100644
--- a/src/gui/text/qfontdatabase_win.cpp
+++ b/src/gui/text/qfontdatabase_win.cpp
@@ -699,6 +699,7 @@ QFontEngine *loadEngine(int script, const QFontPrivate *fp, const QFontDef &requ
}
bool stockFont = false;
+ bool preferClearTypeAA = false;
HFONT hfont = 0;
@@ -799,10 +800,12 @@ QFontEngine *loadEngine(int script, const QFontPrivate *fp, const QFontDef &requ
#endif
if (request.styleStrategy & QFont::PreferAntialias) {
- if (QSysInfo::WindowsVersion >= QSysInfo::WV_XP)
+ if (QSysInfo::WindowsVersion >= QSysInfo::WV_XP) {
qual = 5; // == CLEARTYPE_QUALITY;
- else
+ preferClearTypeAA = true;
+ } else {
qual = ANTIALIASED_QUALITY;
+ }
} else if (request.styleStrategy & QFont::NoAntialias) {
qual = NONANTIALIASED_QUALITY;
}
@@ -884,6 +887,9 @@ QFontEngine *loadEngine(int script, const QFontPrivate *fp, const QFontDef &requ
}
QFontEngineWin *few = new QFontEngineWin(font_name, hfont, stockFont, lf);
+ if (preferClearTypeAA)
+ few->glyphFormat = QFontEngineGlyphCache::Raster_RGBMask;
+
// Also check for OpenType tables when using complex scripts
// ### TODO: This only works for scripts that require OpenType. More generally
// for scripts that do not require OpenType we should just look at the list of
@@ -1134,7 +1140,7 @@ static void getFamiliesAndSignatures(const QByteArray &fontData, QFontDatabasePr
signature.fsUsb[1] = qFromBigEndian<quint32>(table + 46);
signature.fsUsb[2] = qFromBigEndian<quint32>(table + 50);
signature.fsUsb[3] = qFromBigEndian<quint32>(table + 54);
-
+
signature.fsCsb[0] = qFromBigEndian<quint32>(table + 78);
signature.fsCsb[1] = qFromBigEndian<quint32>(table + 82);
}
diff --git a/src/gui/text/qfontdatabase_x11.cpp b/src/gui/text/qfontdatabase_x11.cpp
index 15e626e..70e1599 100644
--- a/src/gui/text/qfontdatabase_x11.cpp
+++ b/src/gui/text/qfontdatabase_x11.cpp
@@ -494,7 +494,7 @@ static inline bool isFixedPitch(char **tokens)
Fills in a font definition (QFontDef) from an XLFD (X Logical Font
Description).
- Returns true if the the given xlfd is valid.
+ Returns true if the given xlfd is valid.
*/
bool qt_fillFontDef(const QByteArray &xlfd, QFontDef *fd, int dpi, QtFontDesc *desc)
{
diff --git a/src/gui/text/qfontengine.cpp b/src/gui/text/qfontengine.cpp
index 47fe5c2..d7a9c23 100644
--- a/src/gui/text/qfontengine.cpp
+++ b/src/gui/text/qfontengine.cpp
@@ -624,6 +624,45 @@ QImage QFontEngine::alphaRGBMapForGlyph(glyph_t glyph, int /* margin */, const Q
return rgbMask;
}
+QImage QFontEngine::alphaMapForGlyph(glyph_t glyph)
+{
+ glyph_metrics_t gm = boundingBox(glyph);
+ int glyph_x = qFloor(gm.x.toReal());
+ int glyph_y = qFloor(gm.y.toReal());
+ int glyph_width = qCeil((gm.x + gm.width).toReal()) - glyph_x;
+ int glyph_height = qCeil((gm.y + gm.height).toReal()) - glyph_y;
+
+ if (glyph_width <= 0 || glyph_height <= 0)
+ return QImage();
+ QFixedPoint pt;
+ pt.x = 0;
+ pt.y = -glyph_y; // the baseline
+ QPainterPath path;
+ QImage im(glyph_width + qAbs(glyph_x) + 4, glyph_height, QImage::Format_ARGB32_Premultiplied);
+ im.fill(Qt::transparent);
+ QPainter p(&im);
+ p.setRenderHint(QPainter::Antialiasing);
+ addGlyphsToPath(&glyph, &pt, 1, &path, 0);
+ p.setPen(Qt::NoPen);
+ p.setBrush(Qt::black);
+ p.drawPath(path);
+ p.end();
+
+ QImage indexed(im.width(), im.height(), QImage::Format_Indexed8);
+ QVector<QRgb> colors(256);
+ for (int i=0; i<256; ++i)
+ colors[i] = qRgba(0, 0, 0, i);
+ indexed.setColorTable(colors);
+
+ for (int y=0; y<im.height(); ++y) {
+ uchar *dst = (uchar *) indexed.scanLine(y);
+ uint *src = (uint *) im.scanLine(y);
+ for (int x=0; x<im.width(); ++x)
+ dst[x] = qAlpha(src[x]);
+ }
+
+ return indexed;
+}
void QFontEngine::removeGlyphFromCache(glyph_t)
{
diff --git a/src/gui/text/qfontengine_ft.cpp b/src/gui/text/qfontengine_ft.cpp
index cb0b436..6f5ee1f 100644
--- a/src/gui/text/qfontengine_ft.cpp
+++ b/src/gui/text/qfontengine_ft.cpp
@@ -613,7 +613,7 @@ QFontEngineFT::QFontEngineFT(const QFontDef &fd)
subpixelType = Subpixel_None;
lcdFilterType = 0;
#if defined(FT_LCD_FILTER_H)
- lcdFilterType = (int) FT_LCD_FILTER_DEFAULT;
+ lcdFilterType = (int)((quintptr) FT_LCD_FILTER_DEFAULT);
#endif
defaultFormat = Format_None;
canUploadGlyphsToServer = false;
@@ -1521,6 +1521,11 @@ bool QFontEngineFT::stringToCMap(const QChar *str, int len, QGlyphLayout *glyphs
return false;
}
+#if !defined(QT_NO_FONTCONFIG)
+ extern QMutex *qt_fontdatabase_mutex();
+ QMutex *mtx = 0;
+#endif
+
bool mirrored = flags & QTextEngine::RightToLeft;
int glyph_pos = 0;
if (freetype->symbol_map) {
@@ -1533,6 +1538,11 @@ bool QFontEngineFT::stringToCMap(const QChar *str, int len, QGlyphLayout *glyphs
if ( !glyphs->glyphs[glyph_pos] ) {
glyph_t glyph;
#if !defined(QT_NO_FONTCONFIG)
+ if (!mtx) {
+ mtx = qt_fontdatabase_mutex();
+ mtx->lock();
+ }
+
if (FcCharSetHasChar(freetype->charset, uc)) {
#else
if (false) {
@@ -1561,20 +1571,26 @@ bool QFontEngineFT::stringToCMap(const QChar *str, int len, QGlyphLayout *glyphs
if (mirrored)
uc = QChar::mirroredChar(uc);
glyphs->glyphs[glyph_pos] = uc < QFreetypeFace::cmapCacheSize ? freetype->cmapCache[uc] : 0;
- if (!glyphs->glyphs[glyph_pos]
+ if (!glyphs->glyphs[glyph_pos]) {
#if !defined(QT_NO_FONTCONFIG)
- && FcCharSetHasChar(freetype->charset, uc)
+ if (!mtx) {
+ mtx = qt_fontdatabase_mutex();
+ mtx->lock();
+ }
+
+ if (FcCharSetHasChar(freetype->charset, uc))
#endif
- ) {
- redo:
- glyph_t glyph = FT_Get_Char_Index(face, uc);
- if (!glyph && (uc == 0xa0 || uc == 0x9)) {
- uc = 0x20;
- goto redo;
+ {
+ redo:
+ glyph_t glyph = FT_Get_Char_Index(face, uc);
+ if (!glyph && (uc == 0xa0 || uc == 0x9)) {
+ uc = 0x20;
+ goto redo;
+ }
+ glyphs->glyphs[glyph_pos] = glyph;
+ if (uc < QFreetypeFace::cmapCacheSize)
+ freetype->cmapCache[uc] = glyph;
}
- glyphs->glyphs[glyph_pos] = glyph;
- if (uc < QFreetypeFace::cmapCacheSize)
- freetype->cmapCache[uc] = glyph;
}
++glyph_pos;
}
@@ -1583,6 +1599,11 @@ bool QFontEngineFT::stringToCMap(const QChar *str, int len, QGlyphLayout *glyphs
*nglyphs = glyph_pos;
glyphs->numGlyphs = glyph_pos;
+#if !defined(QT_NO_FONTCONFIG)
+ if (mtx)
+ mtx->unlock();
+#endif
+
if (flags & QTextEngine::GlyphIndicesOnly)
return true;
@@ -1788,9 +1809,11 @@ QImage QFontEngineFT::alphaMapForGlyph(glyph_t g)
GlyphFormat glyph_format = antialias ? Format_A8 : Format_Mono;
- Glyph *glyph = loadGlyph(g, glyph_format);
- if (!glyph)
- return QImage();
+ Glyph *glyph = defaultGlyphSet.outline_drawing ? 0 : loadGlyph(g, glyph_format);
+ if (!glyph) {
+ unlockFace();
+ return QFontEngine::alphaMapForGlyph(g);
+ }
const int pitch = antialias ? (glyph->width + 3) & ~3 : ((glyph->width + 31)/32) * 4;
diff --git a/src/gui/text/qfontengine_mac.mm b/src/gui/text/qfontengine_mac.mm
index 40d145a..425cab2 100644
--- a/src/gui/text/qfontengine_mac.mm
+++ b/src/gui/text/qfontengine_mac.mm
@@ -120,7 +120,7 @@ OSStatus QMacFontPath::closePath(void *data)
#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5
-QCoreTextFontEngineMulti::QCoreTextFontEngineMulti(const ATSFontFamilyRef &, const ATSFontRef &atsFontRef, const QFontDef &fontDef, bool)
+QCoreTextFontEngineMulti::QCoreTextFontEngineMulti(const ATSFontFamilyRef &, const ATSFontRef &atsFontRef, const QFontDef &fontDef, bool kerning)
: QFontEngineMulti(0)
{
this->fontDef = fontDef;
@@ -149,11 +149,15 @@ QCoreTextFontEngineMulti::QCoreTextFontEngineMulti(const ATSFontFamilyRef &, con
CFRetain(ctfont);
}
- const void *keys[] = { NSFontAttributeName };
- const void *values[] = { ctfont };
- attributeDict = CFDictionaryCreate(0, keys, values, 1,
+ attributeDict = CFDictionaryCreateMutable(0, 2,
&kCFTypeDictionaryKeyCallBacks,
&kCFTypeDictionaryValueCallBacks);
+ CFDictionaryAddValue(attributeDict, NSFontAttributeName, ctfont);
+ if (!kerning) {
+ float zero = 0.0;
+ QCFType<CFNumberRef> noKern = CFNumberCreate(kCFAllocatorDefault, kCFNumberFloatType, &zero);
+ CFDictionaryAddValue(attributeDict, kCTKernAttributeName, &noKern);
+ }
QCoreTextFontEngine *fe = new QCoreTextFontEngine(ctfont, fontDef, this);
fe->ref.ref();
@@ -277,10 +281,11 @@ bool QCoreTextFontEngineMulti::stringToCMap(const QChar *str, int len, QGlyphLay
outAdvances_x[idx] = QFixed::fromReal(tmpPoints[i + 1].x - tmpPoints[i].x);
outAdvances_y[idx] = QFixed::fromReal(tmpPoints[i + 1].y - tmpPoints[i].y);
}
- double runWidth = ceil(CTRunGetTypographicBounds(run, range, 0, 0, 0));
- runWidth += tmpPoints[0].x;
+ CGSize lastGlyphAdvance;
+ CTFontGetAdvancesForGlyphs(runFont, kCTFontHorizontalOrientation, tmpGlyphs + glyphCount - 1, &lastGlyphAdvance, 1);
+
outGlyphs[rtl ? 0 : (glyphCount - 1)] = tmpGlyphs[glyphCount - 1] | fontIndex;
- outAdvances_x[rtl ? 0 : (glyphCount - 1)] = QFixed::fromReal(runWidth - tmpPoints[glyphCount - 1].x);
+ outAdvances_x[rtl ? 0 : (glyphCount - 1)] = QFixed::fromReal(lastGlyphAdvance.width).ceil();
}
outGlyphs += glyphCount;
outAttributes += glyphCount;
@@ -365,26 +370,26 @@ glyph_metrics_t QCoreTextFontEngine::boundingBox(glyph_t glyph)
ret.y = -QFixed::fromReal(rect.origin.y) - ret.height;
CGSize advances[1];
CTFontGetAdvancesForGlyphs(ctfont, kCTFontHorizontalOrientation, &g, advances, 1);
- ret.xoff = QFixed::fromReal(advances[0].width);
- ret.yoff = QFixed::fromReal(advances[0].height);
+ ret.xoff = QFixed::fromReal(advances[0].width).ceil();
+ ret.yoff = QFixed::fromReal(advances[0].height).ceil();
return ret;
}
QFixed QCoreTextFontEngine::ascent() const
{
- return QFixed::fromReal(CTFontGetAscent(ctfont));
+ return QFixed::fromReal(CTFontGetAscent(ctfont)).ceil();
}
QFixed QCoreTextFontEngine::descent() const
{
- return QFixed::fromReal(CTFontGetDescent(ctfont));
+ return QFixed::fromReal(CTFontGetDescent(ctfont)).ceil();
}
QFixed QCoreTextFontEngine::leading() const
{
- return QFixed::fromReal(CTFontGetLeading(ctfont));
+ return QFixed::fromReal(CTFontGetLeading(ctfont)).ceil();
}
QFixed QCoreTextFontEngine::xHeight() const
{
- return QFixed::fromReal(CTFontGetXHeight(ctfont));
+ return QFixed::fromReal(CTFontGetXHeight(ctfont)).ceil();
}
QFixed QCoreTextFontEngine::averageCharWidth() const
{
diff --git a/src/gui/text/qfontengine_p.h b/src/gui/text/qfontengine_p.h
index e289aa9..dc18991 100644
--- a/src/gui/text/qfontengine_p.h
+++ b/src/gui/text/qfontengine_p.h
@@ -178,7 +178,7 @@ public:
* Create a qimage with the alpha values for the glyph.
* Returns an image indexed_8 with index values ranging from 0=fully transparant to 255=opaque
*/
- virtual QImage alphaMapForGlyph(glyph_t) = 0;
+ virtual QImage alphaMapForGlyph(glyph_t);
virtual QImage alphaMapForGlyph(glyph_t, const QTransform &t);
virtual QImage alphaRGBMapForGlyph(glyph_t, int margin, const QTransform &t);
@@ -480,7 +480,7 @@ private:
uint fontIndexForFont(CTFontRef id) const;
CTFontRef ctfont;
- mutable QCFType<CFDictionaryRef> attributeDict;
+ mutable QCFType<CFMutableDictionaryRef> attributeDict;
friend class QFontDialogPrivate;
};
diff --git a/src/gui/text/qfontengine_win.cpp b/src/gui/text/qfontengine_win.cpp
index 1996d44..bf3a176 100644
--- a/src/gui/text/qfontengine_win.cpp
+++ b/src/gui/text/qfontengine_win.cpp
@@ -1406,8 +1406,8 @@ QNativeImage *QFontEngineWin::drawGDIGlyph(HFONT font, glyph_t glyph, int margin
#endif
#endif
- QNativeImage *ni = new QNativeImage(iw + 2 * margin,
- ih + 2 * margin,
+ QNativeImage *ni = new QNativeImage(iw + 2 * margin + 2,
+ ih + 2 * margin + 2,
QNativeImage::systemFormat(), true);
ni->image.fill(0xffffffff);
@@ -1449,7 +1449,7 @@ QImage QFontEngineWin::alphaMapForGlyph(glyph_t glyph, const QTransform &xform)
font = CreateFontIndirectW(&lf);
}
- QNativeImage *mask = drawGDIGlyph(font, glyph, 0, xform);
+ QNativeImage *mask = drawGDIGlyph(font, glyph, 2, xform);
if (mask == 0)
return QImage();
diff --git a/src/gui/text/qtextcursor.cpp b/src/gui/text/qtextcursor.cpp
index c327b9f..48963bb 100644
--- a/src/gui/text/qtextcursor.cpp
+++ b/src/gui/text/qtextcursor.cpp
@@ -1074,7 +1074,10 @@ QTextCursor::QTextCursor(const QTextCursor &cursor)
}
/*!
- Makes a copy of \a cursor and assigns it to this QTextCursor.
+ Makes a copy of \a cursor and assigns it to this QTextCursor. Note
+ that QTextCursor is an \l{Implicitly Shared Classes}{implicitly
+ shared} class.
+
*/
QTextCursor &QTextCursor::operator=(const QTextCursor &cursor)
{
diff --git a/src/gui/text/qtextdocument.cpp b/src/gui/text/qtextdocument.cpp
index e84b324..873f846 100644
--- a/src/gui/text/qtextdocument.cpp
+++ b/src/gui/text/qtextdocument.cpp
@@ -287,7 +287,7 @@ QTextCodec *Qt::codecForHtml(const QByteArray &ba)
that inform connected editor widgets about the state of the undo/redo
system.
- \sa QTextCursor QTextEdit \link richtext.html Rich Text Processing\endlink
+ \sa QTextCursor, QTextEdit, \link richtext.html Rich Text Processing\endlink , {Text Object Example}
*/
/*!
diff --git a/src/gui/text/qtextformat.cpp b/src/gui/text/qtextformat.cpp
index 21bfc4d..38ac4ca 100644
--- a/src/gui/text/qtextformat.cpp
+++ b/src/gui/text/qtextformat.cpp
@@ -1449,7 +1449,7 @@ void QTextCharFormat::setUnderlineStyle(UnderlineStyle style)
/*!
\since 4.5
\fn bool QTextCharFormat::fontKerning() const
- Returns true if the the font kerning is enabled.
+ Returns true if the font kerning is enabled.
\sa setFontKerning()
\sa font()
diff --git a/src/gui/text/qtextformat.h b/src/gui/text/qtextformat.h
index 0571d75..8eaeeb1 100644
--- a/src/gui/text/qtextformat.h
+++ b/src/gui/text/qtextformat.h
@@ -232,6 +232,12 @@ public:
ImageWidth = 0x5010,
ImageHeight = 0x5011,
+ // internal
+ /*
+ SuppressText = 0x5012,
+ SuppressBackground = 0x513
+ */
+
// selection properties
FullWidthSelection = 0x06000,
diff --git a/src/gui/text/qtextlayout.cpp b/src/gui/text/qtextlayout.cpp
index 434d1ca..fa624ef 100644
--- a/src/gui/text/qtextlayout.cpp
+++ b/src/gui/text/qtextlayout.cpp
@@ -61,6 +61,8 @@
QT_BEGIN_NAMESPACE
#define ObjectSelectionBrush (QTextFormat::ForegroundBrush + 1)
+#define SuppressText 0x5012
+#define SuppressBackground 0x513
static inline QFixed leadingSpaceWidth(QTextEngine *eng, const QScriptLine &line)
{
@@ -1143,6 +1145,7 @@ void QTextLayout::draw(QPainter *p, const QPointF &pos, const QVector<FormatRang
}
QPainterPath excludedRegion;
+ QPainterPath textDoneRegion;
for (int i = 0; i < selections.size(); ++i) {
FormatRange selection = selections.at(i);
const QBrush bg = selection.format.background();
@@ -1202,23 +1205,55 @@ void QTextLayout::draw(QPainter *p, const QPointF &pos, const QVector<FormatRang
}
+
+ bool hasText = (selection.format.foreground().style() != Qt::NoBrush);
+ bool hasBackground= (selection.format.background().style() != Qt::NoBrush);
+
+ if (hasBackground) {
+ selection.format.setProperty(ObjectSelectionBrush, selection.format.property(QTextFormat::BackgroundBrush));
+ // don't just clear the property, set an empty brush that overrides a potential
+ // background brush specified in the text
+ selection.format.setProperty(QTextFormat::BackgroundBrush, QBrush());
+ selection.format.clearProperty(QTextFormat::OutlinePen);
+ }
+
+ selection.format.setProperty(SuppressText, !hasText);
+
+ if (hasText && !hasBackground && !(textDoneRegion & region).isEmpty())
+ continue;
+
p->save();
p->setClipPath(region, Qt::IntersectClip);
- selection.format.setProperty(ObjectSelectionBrush, selection.format.property(QTextFormat::BackgroundBrush));
- // don't just clear the property, set an empty brush that overrides a potential
- // background brush specified in the text
- selection.format.setProperty(QTextFormat::BackgroundBrush, QBrush());
- selection.format.clearProperty(QTextFormat::OutlinePen);
-
for (int line = firstLine; line < lastLine; ++line) {
QTextLine l(line, d);
l.draw(p, position, &selection);
}
p->restore();
- if (selection.format.foreground().style() != Qt::NoBrush) // i.e. we have drawn text
- excludedRegion += region;
+ if (hasText) {
+ textDoneRegion += region;
+ } else {
+ if (hasBackground)
+ textDoneRegion -= region;
+ }
+
+ excludedRegion += region;
+ }
+
+ QPainterPath needsTextButNoBackground = excludedRegion - textDoneRegion;
+ if (!needsTextButNoBackground.isEmpty()){
+ p->save();
+ p->setClipPath(needsTextButNoBackground, Qt::IntersectClip);
+ FormatRange selection;
+ selection.start = 0;
+ selection.length = INT_MAX;
+ selection.format.setProperty(SuppressBackground, true);
+ for (int line = firstLine; line < lastLine; ++line) {
+ QTextLine l(line, d);
+ l.draw(p, position, &selection);
+ }
+ p->restore();
}
if (!excludedRegion.isEmpty()) {
@@ -1912,14 +1947,17 @@ static void drawMenuText(QPainter *p, QFixed x, QFixed y, const QScriptItem &si,
static void setPenAndDrawBackground(QPainter *p, const QPen &defaultPen, const QTextCharFormat &chf, const QRectF &r)
{
QBrush c = chf.foreground();
- if (c.style() == Qt::NoBrush)
+ if (c.style() == Qt::NoBrush) {
p->setPen(defaultPen);
+ }
QBrush bg = chf.background();
- if (bg.style() != Qt::NoBrush)
+ if (bg.style() != Qt::NoBrush && !chf.property(SuppressBackground).toBool())
p->fillRect(r, bg);
- if (c.style() != Qt::NoBrush)
+ if (c.style() != Qt::NoBrush) {
p->setPen(QPen(c, 0));
+ }
+
}
/*!
@@ -1933,7 +1971,7 @@ void QTextLine::draw(QPainter *p, const QPointF &pos, const QTextLayout::FormatR
const QScriptLine &line = eng->lines[i];
QPen pen = p->pen();
- bool noText = (selection && selection->format.foreground().style() == Qt::NoBrush);
+ bool noText = (selection && selection->format.property(SuppressText).toBool());
if (!line.length) {
if (selection
diff --git a/src/gui/text/qtextobject.cpp b/src/gui/text/qtextobject.cpp
index 3f4c8e5..71b68e0 100644
--- a/src/gui/text/qtextobject.cpp
+++ b/src/gui/text/qtextobject.cpp
@@ -76,7 +76,7 @@ QT_BEGIN_NAMESPACE
objects, you will also need to reimplement QTextDocument::createObject()
which acts as a factory method for creating text objects.
- \sa QTextDocument
+ \sa QTextDocument, {Text Object Example}
*/
/*!
diff --git a/src/gui/text/qtexttable.cpp b/src/gui/text/qtexttable.cpp
index ba1c04f..48708c9 100644
--- a/src/gui/text/qtexttable.cpp
+++ b/src/gui/text/qtexttable.cpp
@@ -525,7 +525,12 @@ void QTextTablePrivate::update() const
Rows and columns within a QTextTable can be merged and split using
the mergeCells() and splitCell() functions. However, only cells that span multiple
rows or columns can be split. (Merging or splitting does not increase or decrease
- the number of rows and columns.)
+ the number of rows and columns.)
+
+ Note that if you have merged multiple columns and rows into one cell, you will not
+ be able to split the merged cell into new cells spanning over more than one row
+ or column. To be able to split cells spanning over several rows and columns you
+ need to do this over several iterations.
\table 80%
\row
diff --git a/src/gui/util/qcompleter.cpp b/src/gui/util/qcompleter.cpp
index aeb7e91..faa4e7b 100644
--- a/src/gui/util/qcompleter.cpp
+++ b/src/gui/util/qcompleter.cpp
@@ -824,7 +824,7 @@ void QCompleterPrivate::_q_complete(QModelIndex index, bool highlighted)
Q_Q(QCompleter);
QString completion;
- if (!index.isValid() || (index.row() >= proxy->engine->matchCount())) {
+ if (!index.isValid() || (!proxy->showAll && (index.row() >= proxy->engine->matchCount()))) {
completion = prefix;
} else {
QModelIndex si = proxy->mapToSource(index);
@@ -1079,7 +1079,14 @@ void QCompleter::setPopup(QAbstractItemView *popup)
popup->setModel(d->proxy);
popup->hide();
popup->setParent(0, Qt::Popup);
+
+ Qt::FocusPolicy origPolicy = Qt::NoFocus;
+ if (d->widget)
+ origPolicy = d->widget->focusPolicy();
popup->setFocusPolicy(Qt::NoFocus);
+ if (d->widget)
+ d->widget->setFocusPolicy(origPolicy);
+
popup->setFocusProxy(d->widget);
popup->installEventFilter(this);
popup->setItemDelegate(new QCompleterItemDelegate(popup));
diff --git a/src/gui/util/qundostack.cpp b/src/gui/util/qundostack.cpp
index 11f65e3..a6b9c23 100644
--- a/src/gui/util/qundostack.cpp
+++ b/src/gui/util/qundostack.cpp
@@ -715,7 +715,7 @@ int QUndoStack::index() const
}
/*!
- Repeatedly calls undo() or redo() until the the current command index reaches
+ Repeatedly calls undo() or redo() until the current command index reaches
\a idx. This function can be used to roll the state of the document forwards
of backwards. indexChanged() is emitted only once.
diff --git a/src/gui/widgets/qabstractbutton.cpp b/src/gui/widgets/qabstractbutton.cpp
index 330a7f8..61ed0ea 100644
--- a/src/gui/widgets/qabstractbutton.cpp
+++ b/src/gui/widgets/qabstractbutton.cpp
@@ -1248,15 +1248,6 @@ void QAbstractButton::timerEvent(QTimerEvent *e)
}
}
-#if defined(Q_OS_WINCE) && !defined(QT_NO_CONTEXTMENU)
-/*! \reimp */
-void QAbstractButton::contextMenuEvent(QContextMenuEvent *e)
-{
- e->ignore();
- setDown(false);
-}
-#endif
-
/*! \reimp */
void QAbstractButton::focusInEvent(QFocusEvent *e)
{
diff --git a/src/gui/widgets/qabstractbutton.h b/src/gui/widgets/qabstractbutton.h
index 6503a56..f0cbb05 100644
--- a/src/gui/widgets/qabstractbutton.h
+++ b/src/gui/widgets/qabstractbutton.h
@@ -143,9 +143,6 @@ protected:
void focusOutEvent(QFocusEvent *e);
void changeEvent(QEvent *e);
void timerEvent(QTimerEvent *e);
-#ifdef Q_OS_WINCE
- void contextMenuEvent(QContextMenuEvent *e);
-#endif
#ifdef QT3_SUPPORT
public:
diff --git a/src/gui/widgets/qcalendarwidget.cpp b/src/gui/widgets/qcalendarwidget.cpp
index 92c12a5..4436c04 100644
--- a/src/gui/widgets/qcalendarwidget.cpp
+++ b/src/gui/widgets/qcalendarwidget.cpp
@@ -2791,7 +2791,7 @@ QTextCharFormat QCalendarWidget::dateTextFormat(const QDate &date) const
void QCalendarWidget::setDateTextFormat(const QDate &date, const QTextCharFormat &format)
{
Q_D(QCalendarWidget);
- if ( date.isNull() && !format.isValid() )
+ if (date.isNull())
d->m_model->m_dateFormats.clear();
else
d->m_model->m_dateFormats[date] = format;
diff --git a/src/gui/widgets/qcocoamenu_mac.mm b/src/gui/widgets/qcocoamenu_mac.mm
index c92dfc0..6434289 100644
--- a/src/gui/widgets/qcocoamenu_mac.mm
+++ b/src/gui/widgets/qcocoamenu_mac.mm
@@ -1,11 +1,11 @@
/****************************************************************************
- **
- ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
** Contact: Qt Software Information (qt-info@nokia.com)
- **
- ** This file is part of the QtGui module of the Qt Toolkit.
- **
- ** $QT_BEGIN_LICENSE:LGPL$
+**
+** 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
@@ -36,11 +36,11 @@
** If you are unsure which license is appropriate for your use, please
** contact the sales department at qt-sales@nokia.com.
** $QT_END_LICENSE$
- **
- ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
- ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- **
- ****************************************************************************/
+**
+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+**
+****************************************************************************/
#include "qmacdefines_mac.h"
#include "qapplication.h"
@@ -55,11 +55,17 @@
QT_FORWARD_DECLARE_CLASS(QAction)
QT_FORWARD_DECLARE_CLASS(QWidget)
QT_FORWARD_DECLARE_CLASS(QApplication)
+QT_FORWARD_DECLARE_CLASS(QCoreApplication)
+QT_FORWARD_DECLARE_CLASS(QApplicationPrivate)
+QT_FORWARD_DECLARE_CLASS(QKeyEvent)
+QT_FORWARD_DECLARE_CLASS(QEvent)
QT_BEGIN_NAMESPACE
extern bool qt_sendSpontaneousEvent(QObject*, QEvent*); //qapplication.cpp
QT_END_NAMESPACE
+QT_USE_NAMESPACE
+
@implementation QT_MANGLE_NAMESPACE(QCocoaMenu)
- (id)initWithQMenu:(QMenu*)menu
@@ -134,8 +140,9 @@ QT_END_NAMESPACE
// If it does, then we will first send the key sequence to the QWidget that has focus
// since (in Qt's eyes) it needs to a chance at the key event first. If the widget
// accepts the key event, we then return YES, but set the target and action to be nil,
- // which means that the action should not be triggered. In every other case we return
- // NO, which means that Cocoa can do as it pleases (i.e., fire the menu action).
+ // which means that the action should not be triggered, and instead dispatch the event ourselves.
+ // In every other case we return NO, which means that Cocoa can do as it pleases
+ // (i.e., fire the menu action).
NSMenuItem *whichItem;
if ([self hasShortcut:menu
forKey:[event characters]
@@ -158,9 +165,11 @@ QT_END_NAMESPACE
accel_ev.ignore();
qt_sendSpontaneousEvent(widget, &accel_ev);
if (accel_ev.isAccepted()) {
- *target = nil;
- *action = nil;
- return YES;
+ if (qt_dispatchKeyEvent(event, widget)) {
+ *target = nil;
+ *action = nil;
+ return YES;
+ }
}
}
}
diff --git a/src/gui/widgets/qcombobox.cpp b/src/gui/widgets/qcombobox.cpp
index c7e2590..09a51fe 100644
--- a/src/gui/widgets/qcombobox.cpp
+++ b/src/gui/widgets/qcombobox.cpp
@@ -109,7 +109,7 @@ QStyleOptionMenuItem QComboMenuDelegate::getStyleOption(const QStyleOptionViewIt
const QModelIndex &index) const
{
QStyleOptionMenuItem menuOption;
- menuOption.palette = QComboBoxPrivate::viewContainerPalette(mCombo).resolve(QApplication::palette("QMenu"));
+ menuOption.palette = option.palette.resolve(QApplication::palette("QMenu"));
menuOption.state = QStyle::State_None;
if (mCombo->window()->isActiveWindow())
menuOption.state = QStyle::State_Active;
diff --git a/src/gui/widgets/qcombobox_p.h b/src/gui/widgets/qcombobox_p.h
index f1203dc..c39a231 100644
--- a/src/gui/widgets/qcombobox_p.h
+++ b/src/gui/widgets/qcombobox_p.h
@@ -265,7 +265,7 @@ protected:
const QStyleOptionViewItem &option,
const QModelIndex &index) const {
QStyleOptionMenuItem opt = getStyleOption(option, index);
- painter->eraseRect(option.rect);
+ painter->fillRect(option.rect, opt.palette.background());
mCombo->style()->drawControl(QStyle::CE_MenuItem, &opt, painter, mCombo);
}
QSize sizeHint(const QStyleOptionViewItem &option,
diff --git a/src/gui/widgets/qdialogbuttonbox.cpp b/src/gui/widgets/qdialogbuttonbox.cpp
index 246da95..4a95292 100644
--- a/src/gui/widgets/qdialogbuttonbox.cpp
+++ b/src/gui/widgets/qdialogbuttonbox.cpp
@@ -752,7 +752,8 @@ QDialogButtonBox::~QDialogButtonBox()
\value KdeLayout Use a policy appropriate for applications on KDE.
\value GnomeLayout Use a policy appropriate for applications on GNOME.
- The button layout is specified by the \l{style()}{current style}.
+ The button layout is specified by the \l{style()}{current style}. However,
+ on the X11 platform, it may be influenced by the desktop environment.
*/
/*!
diff --git a/src/gui/widgets/qlcdnumber.cpp b/src/gui/widgets/qlcdnumber.cpp
index 0136f1a..af80963 100644
--- a/src/gui/widgets/qlcdnumber.cpp
+++ b/src/gui/widgets/qlcdnumber.cpp
@@ -1271,7 +1271,7 @@ bool QLCDNumber::event(QEvent *e)
/*!
\fn int QLCDNumber::margin() const
- Returns the with of the the margin around the contents of the widget.
+ Returns the width of the margin around the contents of the widget.
Use QWidget::getContentsMargins() instead.
\sa setMargin(), QWidget::getContentsMargins()
diff --git a/src/gui/widgets/qlineedit.cpp b/src/gui/widgets/qlineedit.cpp
index b03df9e..b76d019 100644
--- a/src/gui/widgets/qlineedit.cpp
+++ b/src/gui/widgets/qlineedit.cpp
@@ -3673,7 +3673,7 @@ void QLineEditPrivate::redo() {
/*!
\fn int QLineEdit::margin() const
- Returns the with of the the margin around the contents of the widget.
+ Returns the width of the margin around the contents of the widget.
Use QWidget::getContentsMargins() instead.
\sa setMargin(), QWidget::getContentsMargins()
diff --git a/src/gui/widgets/qmaccocoaviewcontainer_mac.mm b/src/gui/widgets/qmaccocoaviewcontainer_mac.mm
index 710af6a..380e983 100644
--- a/src/gui/widgets/qmaccocoaviewcontainer_mac.mm
+++ b/src/gui/widgets/qmaccocoaviewcontainer_mac.mm
@@ -1,11 +1,11 @@
/****************************************************************************
- **
- ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
** Contact: Qt Software Information (qt-info@nokia.com)
- **
- ** This file is part of the QtGui module of the Qt Toolkit.
- **
- ** $QT_BEGIN_LICENSE:LGPL$
+**
+** 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
@@ -36,11 +36,11 @@
** If you are unsure which license is appropriate for your use, please
** contact the sales department at qt-sales@nokia.com.
** $QT_END_LICENSE$
- **
- ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
- ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- **
- ****************************************************************************/
+**
+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+**
+****************************************************************************/
#import <Cocoa/Cocoa.h>
#include <private/qwidget_p.h>
diff --git a/src/gui/widgets/qmacnativewidget_mac.mm b/src/gui/widgets/qmacnativewidget_mac.mm
index 1bc0430..0f4edf9 100644
--- a/src/gui/widgets/qmacnativewidget_mac.mm
+++ b/src/gui/widgets/qmacnativewidget_mac.mm
@@ -1,11 +1,11 @@
/****************************************************************************
- **
- ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
** Contact: Qt Software Information (qt-info@nokia.com)
- **
- ** This file is part of the QtGui module of the Qt Toolkit.
- **
- ** $QT_BEGIN_LICENSE:LGPL$
+**
+** 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
@@ -36,11 +36,11 @@
** If you are unsure which license is appropriate for your use, please
** contact the sales department at qt-sales@nokia.com.
** $QT_END_LICENSE$
- **
- ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
- ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- **
- ****************************************************************************/
+**
+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+**
+****************************************************************************/
#import <Cocoa/Cocoa.h>
#import <private/qcocoaview_mac_p.h>
diff --git a/src/gui/widgets/qmainwindow.cpp b/src/gui/widgets/qmainwindow.cpp
index 46d6471..558ba42 100644
--- a/src/gui/widgets/qmainwindow.cpp
+++ b/src/gui/widgets/qmainwindow.cpp
@@ -480,9 +480,6 @@ void QMainWindow::setMenuBar(QMenuBar *menuBar)
oldMenuBar->hide();
oldMenuBar->deleteLater();
}
-#ifdef Q_OS_WINCE
- if (menuBar->size().height() > 0)
-#endif
d->layout->setMenuBar(menuBar);
}
@@ -1411,10 +1408,10 @@ bool QMainWindow::event(QEvent *event)
This property is false by default and only has any effect on Mac OS X 10.4 or higher.
- If set to true, then the top toolbar area is replaced with a Carbon
- HIToolbar and all toolbars in the top toolbar area are moved to that. Any
- toolbars added afterwards will also be added to the Carbon HIToolbar. This
- means a couple of things.
+ If set to true, then the top toolbar area is replaced with a Carbon HIToolbar
+ or a Cocoa NSToolbar (depending on whether Qt was built with Carbon or Cocoa).
+ All toolbars in the top toolbar area and any toolbars added afterwards are
+ moved to that. This means a couple of things.
\list
\i QToolBars in this toolbar area are not movable and you cannot drag other
diff --git a/src/gui/widgets/qmainwindowlayout_mac.mm b/src/gui/widgets/qmainwindowlayout_mac.mm
index 950f758..c807afb 100644
--- a/src/gui/widgets/qmainwindowlayout_mac.mm
+++ b/src/gui/widgets/qmainwindowlayout_mac.mm
@@ -1,3 +1,47 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (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 either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** 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.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+**
+****************************************************************************/
+
#include <private/qmainwindowlayout_p.h>
#include <qtoolbar.h>
#include <private/qtoolbarlayout_p.h>
diff --git a/src/gui/widgets/qmdiarea.cpp b/src/gui/widgets/qmdiarea.cpp
index 598d3b5..6acd977 100644
--- a/src/gui/widgets/qmdiarea.cpp
+++ b/src/gui/widgets/qmdiarea.cpp
@@ -81,7 +81,7 @@
subwindows. This information could be used in a popup menu
containing a list of windows, for example.
- The subwindows are sorted by the the current
+ The subwindows are sorted by the current
\l{QMdiArea::}{WindowOrder}. This is used for the subWindowList()
and for activateNextSubWindow() and acivatePreviousSubWindow().
Also, it is used when cascading or tiling the windows with
diff --git a/src/gui/widgets/qmenu.cpp b/src/gui/widgets/qmenu.cpp
index ed3e338..7396a9d 100644
--- a/src/gui/widgets/qmenu.cpp
+++ b/src/gui/widgets/qmenu.cpp
@@ -2889,8 +2889,8 @@ void QMenu::internalDelayedPopup()
int subMenuOffset = style()->pixelMetric(QStyle::PM_SubMenuOverlap, 0, this);
const QRect actionRect(d->actionRect(d->currentAction));
const QSize menuSize(d->activeMenu->sizeHint());
- const QPoint rightPos(mapToGlobal(QPoint(rect().right() + subMenuOffset + 1, actionRect.top())));
- const QPoint leftPos(mapToGlobal(QPoint(rect().left() - subMenuOffset - menuSize.width(), actionRect.top())));
+ const QPoint rightPos(mapToGlobal(QPoint(actionRect.right() + subMenuOffset + 1, actionRect.top())));
+ const QPoint leftPos(mapToGlobal(QPoint(actionRect.left() - subMenuOffset - menuSize.width(), actionRect.top())));
QPoint pos(rightPos);
QMenu *caused = qobject_cast<QMenu*>(d->activeMenu->d_func()->causedPopup.widget);
diff --git a/src/gui/widgets/qmenu_p.h b/src/gui/widgets/qmenu_p.h
index e3c4890..74367c4 100644
--- a/src/gui/widgets/qmenu_p.h
+++ b/src/gui/widgets/qmenu_p.h
@@ -208,7 +208,7 @@ public:
QString searchBuffer;
QBasicTimer searchBufferTimer;
- //passing of mouse events up the parent heirarchy
+ //passing of mouse events up the parent hierarchy
QPointer<QMenu> activeMenu;
bool mouseEventTaken(QMouseEvent *);
diff --git a/src/gui/widgets/qmenu_wince.cpp b/src/gui/widgets/qmenu_wince.cpp
index ea58d46..42a4e0b 100644
--- a/src/gui/widgets/qmenu_wince.cpp
+++ b/src/gui/widgets/qmenu_wince.cpp
@@ -58,6 +58,9 @@
#include <QtCore/qlibrary.h>
#include <commctrl.h>
+#if Q_OS_WINCE_WM
+# include <windowsm.h>
+#endif
#include "qguifunctions_wince.h"
@@ -71,6 +74,12 @@
#define SHCMBM_GETSUBMENU (WM_USER + 401)
#endif
+#ifdef Q_OS_WINCE_WM
+# define SHMBOF_NODEFAULT 0x00000001
+# define SHMBOF_NOTIFY 0x00000002
+# define SHCMBM_OVERRIDEKEY (WM_USER + 0x193)
+#endif
+
extern bool qt_wince_is_smartphone();//defined in qguifunctions_wce.cpp
extern bool qt_wince_is_pocket_pc(); //defined in qguifunctions_wce.cpp
@@ -204,8 +213,15 @@ static HWND qt_wce_create_menubar(HWND parentHandle, HINSTANCE resourceHandle, i
mbi.dwFlags = flags;
mbi.nToolBarId = toolbarID;
- if (ptrCreateMenuBar(&mbi))
+ if (ptrCreateMenuBar(&mbi)) {
+#ifdef Q_OS_WINCE_WM
+ // Tell the menu bar that we want to override hot key behaviour.
+ LPARAM lparam = MAKELPARAM(SHMBOF_NODEFAULT | SHMBOF_NOTIFY,
+ SHMBOF_NODEFAULT | SHMBOF_NOTIFY);
+ SendMessage(mbi.hwndMB, SHCMBM_OVERRIDEKEY, VK_TBACK, lparam);
+#endif
return mbi.hwndMB;
+ }
}
return 0;
}
diff --git a/src/gui/widgets/qmenubar.cpp b/src/gui/widgets/qmenubar.cpp
index ccf37db..c63da64 100644
--- a/src/gui/widgets/qmenubar.cpp
+++ b/src/gui/widgets/qmenubar.cpp
@@ -2379,7 +2379,7 @@ int QMenuBar::findIdForAction(QAction *act) const
/*!
\fn int QMenuBar::margin() const
- Returns the with of the the margin around the contents of the widget.
+ Returns the width of the margin around the contents of the widget.
Use QWidget::getContentsMargins() instead.
\sa setMargin(), QWidget::getContentsMargins()
diff --git a/src/gui/widgets/qplaintextedit.cpp b/src/gui/widgets/qplaintextedit.cpp
index 2e9201d..e563fa1 100644
--- a/src/gui/widgets/qplaintextedit.cpp
+++ b/src/gui/widgets/qplaintextedit.cpp
@@ -624,7 +624,7 @@ void QPlainTextEditPrivate::setTopBlock(int blockNumber, int lineNumber, int dx)
if (viewport->updatesEnabled() && viewport->isVisible()) {
int dy = 0;
- if (doc->findBlockByLineNumber(control->topBlock).isValid()) {
+ if (doc->findBlockByNumber(control->topBlock).isValid()) {
dy = (int)(-q->blockBoundingGeometry(block).y())
+ verticalOffset() - verticalOffset(blockNumber, lineNumber);
}
diff --git a/src/gui/widgets/qscrollarea.cpp b/src/gui/widgets/qscrollarea.cpp
index 6aca7d3..8b01453 100644
--- a/src/gui/widgets/qscrollarea.cpp
+++ b/src/gui/widgets/qscrollarea.cpp
@@ -127,7 +127,7 @@ QT_BEGIN_NAMESPACE
setting the layout's \l{QLayout::sizeConstraint}{size constraint}
property to one which provides constraints on the minimum and/or
maximum size of the layout (e.g., QLayout::SetMinAndMaxSize) will
- cause the size of the the scroll area to be updated whenever the
+ cause the size of the scroll area to be updated whenever the
contents of the layout changes.
For a complete example using the QScrollArea class, see the \l
diff --git a/src/gui/widgets/qsplitter.cpp b/src/gui/widgets/qsplitter.cpp
index bf8af35..45e838f 100644
--- a/src/gui/widgets/qsplitter.cpp
+++ b/src/gui/widgets/qsplitter.cpp
@@ -1517,7 +1517,7 @@ void QSplitter::setOpaqueResize(bool on)
/*!
\fn int QSplitter::margin() const
- Returns the with of the the margin around the contents of the widget.
+ Returns the width of the margin around the contents of the widget.
Use QWidget::getContentsMargins() instead.
\sa setMargin(), QWidget::getContentsMargins()
diff --git a/src/gui/widgets/qtabbar.cpp b/src/gui/widgets/qtabbar.cpp
index 7d970ad..69221ba 100644
--- a/src/gui/widgets/qtabbar.cpp
+++ b/src/gui/widgets/qtabbar.cpp
@@ -131,7 +131,7 @@ void QTabBar::initStyleOption(QStyleOptionTab *option, int tabIndex) const
option->state &= ~QStyle::State_Enabled;
if (isActiveWindow())
option->state |= QStyle::State_Active;
- if (option->rect == d->hoverRect)
+ if (!d->dragInProgress && option->rect == d->hoverRect)
option->state |= QStyle::State_MouseOver;
option->shape = d->shape;
option->text = tab.text;
@@ -454,9 +454,6 @@ void QTabBarPrivate::layoutTabs()
maxExtent = maxWidth;
}
- if (pressedIndex != -1 && movable)
- grabCache(0, tabList.count(), true);
-
Q_ASSERT(tabChainIndex == tabChain.count() - 1); // add an assert just to make sure.
// Mirror our front item.
tabChain[tabChainIndex].init();
@@ -1088,7 +1085,7 @@ void QTabBar::setTabData(int index, const QVariant & data)
}
/*!
- Returns the datad of the tab at position \a index, or a null
+ Returns the data of the tab at position \a index, or a null
variant if \a index is out of range.
*/
QVariant QTabBar::tabData(int index) const
@@ -1170,13 +1167,13 @@ void QTabBar::setCurrentIndex(int index)
d->currentIndex = index;
update();
d->makeVisible(index);
+ d->tabList[index].lastTab = oldIndex;
+ d->layoutWidgets(oldIndex);
+ d->layoutWidgets(index);
#ifdef QT3_SUPPORT
emit selected(index);
#endif
emit currentChanged(index);
- d->tabList[index].lastTab = oldIndex;
- d->layoutWidgets(oldIndex);
- d->layoutWidgets(index);
}
}
@@ -1484,6 +1481,8 @@ void QTabBar::paintEvent(QPaintEvent *)
bool vertical = verticalTabs(d->shape);
QStyleOptionTab cutTab;
selected = d->currentIndex;
+ if (d->dragInProgress)
+ selected = d->pressedIndex;
for (int i = 0; i < d->tabList.count(); ++i)
optTabBase.tabBarRect |= tabRect(i);
@@ -1522,11 +1521,7 @@ void QTabBar::paintEvent(QPaintEvent *)
if (i == selected)
continue;
- if (!d->tabList[i].animatingCache.isNull() && d->paintWithOffsets) {
- p.drawPixmap(tab.rect, d->tabList[i].animatingCache);
- } else {
- p.drawControl(QStyle::CE_TabBarTab, tab);
- }
+ p.drawControl(QStyle::CE_TabBarTab, tab);
}
// Draw the selected tab last to get it "on top"
@@ -1539,7 +1534,11 @@ void QTabBar::paintEvent(QPaintEvent *)
else
tab.rect.moveLeft(tab.rect.x() + d->tabList[selected].dragOffset);
}
- p.drawControl(QStyle::CE_TabBarTab, tab);
+ if (!d->dragInProgress)
+ p.drawControl(QStyle::CE_TabBarTab, tab);
+ else
+ d->movingTab->setGeometry(tab.rect);
+
}
// Only draw the tear indicator if necessary. Most of the time we don't need too.
@@ -1680,6 +1679,7 @@ void QTabBarPrivate::_q_moveTab(int offset)
if (!validIndex(index))
return;
tabList[index].dragOffset = offset;
+ layoutTab(index); // Make buttons follow tab
q->update();
}
}
@@ -1727,8 +1727,7 @@ void QTabBar::mouseMoveEvent(QMouseEvent *event)
if (!d->dragInProgress && d->pressedIndex != -1) {
if ((event->pos() - d->dragStartPosition).manhattanLength() > QApplication::startDragDistance()) {
d->dragInProgress = true;
- if (d->animations.isEmpty())
- d->grabCache(0, d->tabList.count(), false);
+ d->setupMovableTab();
}
}
@@ -1773,7 +1772,6 @@ void QTabBar::mouseMoveEvent(QMouseEvent *event)
if (dragDistance > needsToBeOver)
d->slide(i + offset, d->pressedIndex);
}
-
}
// Buttons needs to follow the dragged tab
d->layoutTab(d->pressedIndex);
@@ -1801,32 +1799,41 @@ void QTabBarPrivate::_q_moveTabFinished()
}
}
-void QTabBarPrivate::grabCache(int start, int end, bool unhide)
+void QTabBarPrivate::setupMovableTab()
{
Q_Q(QTabBar);
- paintWithOffsets = false;
- bool showButtonsAgain = rightB->isVisible();
- rightB->hide();
- leftB->hide();
-
- QWidget *topLevel = q->window();
- QPoint topLevelOffset(q->mapTo(topLevel, QPoint()));
- for (int i = start; i < end; ++i) {
- QRect tabRect = q->tabRect(i);
- tabRect.translate(topLevelOffset);
- if (unhide) {
- tabList[i].unHideWidgets();
- layoutWidgets(i);
- }
- tabList[i].animatingCache = QPixmap::grabWidget(topLevel, tabRect);
- if (i != pressedIndex)
- tabList[i].hideWidgets();
- }
- if (showButtonsAgain) {
- rightB->show();
- leftB->show();
- }
- paintWithOffsets = true;
+ if (!movingTab)
+ movingTab = new QWidget(q);
+
+ QRect grabRect = q->tabRect(pressedIndex);
+
+ QPixmap grabImage(grabRect.size());
+ grabImage.fill(Qt::transparent);
+ QStylePainter p(&grabImage, q);
+
+ QStyleOptionTabV3 tab;
+ q->initStyleOption(&tab, pressedIndex);
+ tab.rect.moveTopLeft(QPoint(0, 0));
+ p.drawControl(QStyle::CE_TabBarTab, tab);
+ p.end();
+
+ QPalette pal;
+ pal.setBrush(QPalette::All, QPalette::Window, grabImage);
+ movingTab->setPalette(pal);
+ movingTab->setGeometry(grabRect);
+ movingTab->setAutoFillBackground(true);
+ movingTab->raise();
+
+ // Re-arrange widget order to avoid overlaps
+ if (tabList[pressedIndex].leftWidget)
+ tabList[pressedIndex].leftWidget->raise();
+ if (tabList[pressedIndex].rightWidget)
+ tabList[pressedIndex].rightWidget->raise();
+ if (leftB)
+ leftB->raise();
+ if (rightB)
+ rightB->raise();
+ movingTab->setVisible(true);
}
void QTabBarPrivate::_q_moveTabFinished(int index)
@@ -1834,10 +1841,9 @@ void QTabBarPrivate::_q_moveTabFinished(int index)
Q_Q(QTabBar);
bool cleanup = (pressedIndex == index) || (pressedIndex == -1) || !validIndex(index);
if (animations.isEmpty() && cleanup) {
+ movingTab->setVisible(false); // We might not get a mouse release
for (int i = 0; i < tabList.count(); ++i) {
tabList[i].dragOffset = 0;
- tabList[i].unHideWidgets();
- tabList[i].animatingCache = QPixmap();
}
if (pressedIndex != -1 && movable) {
pressedIndex = -1;
@@ -1881,6 +1887,7 @@ void QTabBar::mouseReleaseEvent(QMouseEvent *event)
d->_q_moveTabFinished(d->pressedIndex);
}
d->dragInProgress = false;
+ d->movingTab->setVisible(false);
d->dragStartPosition = QPoint();
}
@@ -2203,21 +2210,19 @@ void QTabBar::setTabButton(int index, ButtonPosition position, QWidget *widget)
widget->setParent(this);
// make sure our left and right widgets stay on top
widget->lower();
+ widget->show();
}
if (position == LeftSide) {
if (d->tabList[index].leftWidget)
d->tabList[index].leftWidget->hide();
d->tabList[index].leftWidget = widget;
- if(!d->tabList[index].hidLeft && widget)
- widget->show();
} else {
if (d->tabList[index].rightWidget)
d->tabList[index].rightWidget->hide();
d->tabList[index].rightWidget = widget;
- if(!d->tabList[index].hidRight && widget)
- widget->show();
}
d->layoutTabs();
+ d->refresh();
update();
}
diff --git a/src/gui/widgets/qtabbar_p.h b/src/gui/widgets/qtabbar_p.h
index a117aa3..cb1a15b 100644
--- a/src/gui/widgets/qtabbar_p.h
+++ b/src/gui/widgets/qtabbar_p.h
@@ -70,7 +70,6 @@
QT_BEGIN_NAMESPACE
-
class QTabBarPrivate : public QWidgetPrivate
{
Q_DECLARE_PUBLIC(QTabBar)
@@ -78,7 +77,7 @@ public:
QTabBarPrivate()
:currentIndex(-1), pressedIndex(-1),
shape(QTabBar::RoundedNorth),
- layoutDirty(false), drawBase(true), scrollOffset(0), expanding(true), closeButtonOnTabs(false), selectionBehaviorOnRemove(QTabBar::SelectRightTab), paintWithOffsets(true), movable(false), dragInProgress(false), documentMode(false) {}
+ layoutDirty(false), drawBase(true), scrollOffset(0), expanding(true), closeButtonOnTabs(false), selectionBehaviorOnRemove(QTabBar::SelectRightTab), paintWithOffsets(true), movable(false), dragInProgress(false), documentMode(false), movingTab(0) {}
int currentIndex;
int pressedIndex;
@@ -98,8 +97,6 @@ public:
, lastTab(-1)
, timeLine(0)
, dragOffset(0)
- , hidLeft(false)
- , hidRight(false)
{}
bool enabled;
int shortcutId;
@@ -123,9 +120,6 @@ public:
QTimeLine *timeLine;
int dragOffset;
- QPixmap animatingCache;
- bool hidLeft;
- bool hidRight;
void makeTimeLine(QWidget *q) {
if (timeLine)
@@ -135,27 +129,6 @@ public:
q->connect(timeLine, SIGNAL(finished()), q, SLOT(_q_moveTabFinished()));
}
- void hideWidgets() {
- if (!hidRight && rightWidget) {
- hidRight = rightWidget->isVisible();
- rightWidget->hide();
- }
-
- if (!hidLeft && leftWidget) {
- hidLeft = leftWidget->isVisible();
- leftWidget->hide();
- }
- }
-
- void unHideWidgets() {
- if (leftWidget && hidLeft)
- leftWidget->show();
- hidLeft = false;
- if (rightWidget && hidRight)
- rightWidget->show();
- hidRight = false;
- }
-
};
QList<Tab> tabList;
QHash<QTimeLine*, int> animations;
@@ -184,12 +157,12 @@ public:
void _q_moveTabFinished(int offset);
QRect hoverRect;
- void grabCache(int start, int end, bool unhide);
void refresh();
void layoutTabs();
void layoutWidgets(int index = -1);
void layoutTab(int index);
void updateMacBorderMetrics();
+ void setupMovableTab();
void makeVisible(int index);
QSize iconSize;
@@ -206,6 +179,8 @@ public:
bool dragInProgress;
bool documentMode;
+ QWidget *movingTab;
+
// shared by tabwidget and qtabbar
static void initStyleBaseOption(QStyleOptionTabBarBaseV2 *optTabBase, QTabBar *tabbar, QSize size)
{
diff --git a/src/gui/widgets/qtabwidget.cpp b/src/gui/widgets/qtabwidget.cpp
index c16e000..43b2f54 100644
--- a/src/gui/widgets/qtabwidget.cpp
+++ b/src/gui/widgets/qtabwidget.cpp
@@ -504,7 +504,7 @@ QIcon QTabWidget::tabIcon(int index) const
}
/*!
- Returns true if the the page at position \a index is enabled; otherwise returns false.
+ Returns true if the page at position \a index is enabled; otherwise returns false.
\sa setTabEnabled(), QWidget::isEnabled()
*/
diff --git a/src/gui/widgets/qtoolbar.cpp b/src/gui/widgets/qtoolbar.cpp
index 85d6ea2..1babb6d 100644
--- a/src/gui/widgets/qtoolbar.cpp
+++ b/src/gui/widgets/qtoolbar.cpp
@@ -1153,6 +1153,17 @@ bool QToolBar::event(QEvent *event)
if (d->mouseMoveEvent(static_cast<QMouseEvent*>(event)))
return true;
break;
+#ifdef Q_OS_WINCE
+ case QEvent::ContextMenu:
+ {
+ QContextMenuEvent* contextMenuEvent = static_cast<QContextMenuEvent*>(event);
+ QWidget* child = childAt(contextMenuEvent->pos());
+ QAbstractButton* button = qobject_cast<QAbstractButton*>(child);
+ if (button)
+ button->setDown(false);
+ }
+ break;
+#endif
case QEvent::Leave:
if (d->state != 0 && d->state->dragging) {
#ifdef Q_OS_WIN
diff --git a/src/gui/widgets/qtoolbox.cpp b/src/gui/widgets/qtoolbox.cpp
index 81935a5..271130a 100644
--- a/src/gui/widgets/qtoolbox.cpp
+++ b/src/gui/widgets/qtoolbox.cpp
@@ -802,7 +802,7 @@ void QToolBox::itemRemoved(int index)
/*!
\fn int QToolBox::margin() const
- Returns the with of the the margin around the contents of the widget.
+ Returns the width of the margin around the contents of the widget.
Use QWidget::getContentsMargins() instead.
\sa setMargin(), QWidget::getContentsMargins()
diff --git a/src/network/access/access.pri b/src/network/access/access.pri
index 6bcca0c..3269b2e 100644
--- a/src/network/access/access.pri
+++ b/src/network/access/access.pri
@@ -2,6 +2,9 @@
HEADERS += access/qftp.h \
access/qhttp.h \
+ access/qhttpnetworkheader_p.h \
+ access/qhttpnetworkrequest_p.h \
+ access/qhttpnetworkreply_p.h \
access/qhttpnetworkconnection_p.h \
access/qnetworkaccessmanager.h \
access/qnetworkaccessmanager_p.h \
@@ -27,6 +30,9 @@ HEADERS += access/qftp.h \
SOURCES += access/qftp.cpp \
access/qhttp.cpp \
+ access/qhttpnetworkheader.cpp \
+ access/qhttpnetworkrequest.cpp \
+ access/qhttpnetworkreply.cpp \
access/qhttpnetworkconnection.cpp \
access/qnetworkaccessmanager.cpp \
access/qnetworkaccesscache.cpp \
diff --git a/src/network/access/qhttp.cpp b/src/network/access/qhttp.cpp
index 96ccc91..7d14ab6 100644
--- a/src/network/access/qhttp.cpp
+++ b/src/network/access/qhttp.cpp
@@ -950,7 +950,7 @@ void QHttpHeader::setContentLength(int len)
}
/*!
- Returns true if the header has an entry for the the special HTTP
+ Returns true if the header has an entry for the special HTTP
header field \c content-type; otherwise returns false.
\sa contentType() setContentType()
diff --git a/src/network/access/qhttpnetworkconnection.cpp b/src/network/access/qhttpnetworkconnection.cpp
index edb2988..ae518df 100644
--- a/src/network/access/qhttpnetworkconnection.cpp
+++ b/src/network/access/qhttpnetworkconnection.cpp
@@ -45,7 +45,7 @@
#include <private/qauthenticator_p.h>
#include <qnetworkproxy.h>
#include <qauthenticator.h>
-#include <qbytearraymatcher.h>
+
#include <qbuffer.h>
#include <qpair.h>
#include <qhttp.h>
@@ -59,875 +59,9 @@
# include <QtNetwork/qsslconfiguration.h>
#endif
-#ifndef QT_NO_COMPRESS
-# include <zlib.h>
-static const unsigned char gz_magic[2] = {0x1f, 0x8b}; // gzip magic header
-// gzip flag byte
-#define HEAD_CRC 0x02 // bit 1 set: header CRC present
-#define EXTRA_FIELD 0x04 // bit 2 set: extra field present
-#define ORIG_NAME 0x08 // bit 3 set: original file name present
-#define COMMENT 0x10 // bit 4 set: file comment present
-#define RESERVED 0xE0 // bits 5..7: reserved
-#define CHUNK 16384
-#endif
-
-QT_BEGIN_NAMESPACE
-
-class QHttpNetworkHeaderPrivate : public QSharedData
-{
-public:
- QUrl url;
- QList<QPair<QByteArray, QByteArray> > fields;
-
- QHttpNetworkHeaderPrivate(const QUrl &newUrl = QUrl());
- QHttpNetworkHeaderPrivate(const QHttpNetworkHeaderPrivate &other);
- inline qint64 contentLength() const;
- inline void setContentLength(qint64 length);
-
- inline QByteArray headerField(const QByteArray &name, const QByteArray &defaultValue = QByteArray()) const;
- inline QList<QByteArray> headerFieldValues(const QByteArray &name) const;
- inline void setHeaderField(const QByteArray &name, const QByteArray &data);
- bool operator==(const QHttpNetworkHeaderPrivate &other) const;
-
-};
-
-QHttpNetworkHeaderPrivate::QHttpNetworkHeaderPrivate(const QUrl &newUrl)
- :url(newUrl)
-{
-}
-
-QHttpNetworkHeaderPrivate::QHttpNetworkHeaderPrivate(const QHttpNetworkHeaderPrivate &other)
- :QSharedData(other)
-{
- url = other.url;
- fields = other.fields;
-}
-
-qint64 QHttpNetworkHeaderPrivate::contentLength() const
-{
- bool ok = false;
- QByteArray value = headerField("content-length");
- qint64 length = value.toULongLong(&ok);
- if (ok)
- return length;
- return -1; // the header field is not set
-}
-
-void QHttpNetworkHeaderPrivate::setContentLength(qint64 length)
-{
- setHeaderField("Content-Length", QByteArray::number(length));
-}
-
-QByteArray QHttpNetworkHeaderPrivate::headerField(const QByteArray &name, const QByteArray &defaultValue) const
-{
- QList<QByteArray> allValues = headerFieldValues(name);
- if (allValues.isEmpty())
- return defaultValue;
-
- QByteArray result;
- bool first = true;
- foreach (QByteArray value, allValues) {
- if (!first)
- result += ", ";
- first = false;
- result += value;
- }
- return result;
-}
-
-QList<QByteArray> QHttpNetworkHeaderPrivate::headerFieldValues(const QByteArray &name) const
-{
- QList<QByteArray> result;
- QByteArray lowerName = name.toLower();
- QList<QPair<QByteArray, QByteArray> >::ConstIterator it = fields.constBegin(),
- end = fields.constEnd();
- for ( ; it != end; ++it)
- if (lowerName == it->first.toLower())
- result += it->second;
-
- return result;
-}
-
-void QHttpNetworkHeaderPrivate::setHeaderField(const QByteArray &name, const QByteArray &data)
-{
- QByteArray lowerName = name.toLower();
- QList<QPair<QByteArray, QByteArray> >::Iterator it = fields.begin();
- while (it != fields.end()) {
- if (lowerName == it->first.toLower())
- it = fields.erase(it);
- else
- ++it;
- }
- fields.append(qMakePair(name, data));
-}
-
-bool QHttpNetworkHeaderPrivate::operator==(const QHttpNetworkHeaderPrivate &other) const
-{
- return (url == other.url);
-}
-
-// QHttpNetworkRequestPrivate
-class QHttpNetworkRequestPrivate : public QHttpNetworkHeaderPrivate
-{
-public:
- QHttpNetworkRequestPrivate(QHttpNetworkRequest::Operation op,
- QHttpNetworkRequest::Priority pri, const QUrl &newUrl = QUrl());
- QHttpNetworkRequestPrivate(const QHttpNetworkRequestPrivate &other);
- ~QHttpNetworkRequestPrivate();
- bool operator==(const QHttpNetworkRequestPrivate &other) const;
- QByteArray methodName() const;
- QByteArray uri(bool throughProxy) const;
-
- static QByteArray header(const QHttpNetworkRequest &request, bool throughProxy);
-
- QHttpNetworkRequest::Operation operation;
- QHttpNetworkRequest::Priority priority;
- mutable QIODevice *data;
- bool autoDecompress;
-};
-
-QHttpNetworkRequestPrivate::QHttpNetworkRequestPrivate(QHttpNetworkRequest::Operation op,
- QHttpNetworkRequest::Priority pri, const QUrl &newUrl)
- : QHttpNetworkHeaderPrivate(newUrl), operation(op), priority(pri), data(0),
- autoDecompress(false)
-{
-}
-
-QHttpNetworkRequestPrivate::QHttpNetworkRequestPrivate(const QHttpNetworkRequestPrivate &other)
- : QHttpNetworkHeaderPrivate(other)
-{
- operation = other.operation;
- priority = other.priority;
- data = other.data;
- autoDecompress = other.autoDecompress;
-}
-
-QHttpNetworkRequestPrivate::~QHttpNetworkRequestPrivate()
-{
-}
-
-bool QHttpNetworkRequestPrivate::operator==(const QHttpNetworkRequestPrivate &other) const
-{
- return QHttpNetworkHeaderPrivate::operator==(other)
- && (operation == other.operation)
- && (data == other.data);
-}
-
-QByteArray QHttpNetworkRequestPrivate::methodName() const
-{
- QByteArray ba;
- switch (operation) {
- case QHttpNetworkRequest::Options:
- ba += "OPTIONS";
- break;
- case QHttpNetworkRequest::Get:
- ba += "GET";
- break;
- case QHttpNetworkRequest::Head:
- ba += "HEAD";
- break;
- case QHttpNetworkRequest::Post:
- ba += "POST";
- break;
- case QHttpNetworkRequest::Put:
- ba += "PUT";
- break;
- case QHttpNetworkRequest::Delete:
- ba += "DELETE";
- break;
- case QHttpNetworkRequest::Trace:
- ba += "TRACE";
- break;
- case QHttpNetworkRequest::Connect:
- ba += "CONNECT";
- break;
- default:
- break;
- }
- return ba;
-}
-
-QByteArray QHttpNetworkRequestPrivate::uri(bool throughProxy) const
-{
- QUrl::FormattingOptions format(QUrl::RemoveFragment);
-
- // for POST, query data is send as content
- if (operation == QHttpNetworkRequest::Post && !data)
- format |= QUrl::RemoveQuery;
- // for requests through proxy, the Request-URI contains full url
- if (throughProxy)
- format |= QUrl::RemoveUserInfo;
- else
- format |= QUrl::RemoveScheme | QUrl::RemoveAuthority;
- QByteArray uri = url.toEncoded(format);
- if (uri.isEmpty() || (throughProxy && url.path().isEmpty()))
- uri += '/';
- return uri;
-}
-
-QByteArray QHttpNetworkRequestPrivate::header(const QHttpNetworkRequest &request, bool throughProxy)
-{
- QByteArray ba = request.d->methodName();
- QByteArray uri = request.d->uri(throughProxy);
- ba += " " + uri;
-
- QString majorVersion = QString::number(request.majorVersion());
- QString minorVersion = QString::number(request.minorVersion());
- ba += " HTTP/" + majorVersion.toLatin1() + "." + minorVersion.toLatin1() + "\r\n";
-
- QList<QPair<QByteArray, QByteArray> > fields = request.header();
- QList<QPair<QByteArray, QByteArray> >::const_iterator it = fields.constBegin();
- for (; it != fields.constEnd(); ++it)
- ba += it->first + ": " + it->second + "\r\n";
- if (request.d->operation == QHttpNetworkRequest::Post) {
- // add content type, if not set in the request
- if (request.headerField("content-type").isEmpty())
- ba += "Content-Type: application/x-www-form-urlencoded\r\n";
- if (!request.d->data && request.d->url.hasQuery()) {
- QByteArray query = request.d->url.encodedQuery();
- ba += "Content-Length: "+ QByteArray::number(query.size()) + "\r\n";
- ba += "\r\n";
- ba += query;
- } else {
- ba += "\r\n";
- }
- } else {
- ba += "\r\n";
- }
- return ba;
-}
-
-class QHttpNetworkReplyPrivate : public QObjectPrivate, public QHttpNetworkHeaderPrivate
-{
-public:
- QHttpNetworkReplyPrivate(const QUrl &newUrl = QUrl());
- ~QHttpNetworkReplyPrivate();
- qint64 readStatus(QAbstractSocket *socket);
- void parseStatus(const QByteArray &status);
- qint64 readHeader(QAbstractSocket *socket);
- void parseHeader(const QByteArray &header);
- qint64 readBody(QAbstractSocket *socket, QIODevice *out);
- bool findChallenge(bool forProxy, QByteArray &challenge) const;
- QAuthenticatorPrivate::Method authenticationMethod(bool isProxy) const;
- void clear();
-
- qint64 transferRaw(QIODevice *in, QIODevice *out, qint64 size);
- qint64 transferChunked(QIODevice *in, QIODevice *out);
- qint64 getChunkSize(QIODevice *in, qint64 *chunkSize);
-
- qint64 bytesAvailable() const;
- bool isChunked();
- bool connectionCloseEnabled();
- bool isGzipped();
-#ifndef QT_NO_COMPRESS
- bool gzipCheckHeader(QByteArray &content, int &pos);
- int gunzipBodyPartially(QByteArray &compressed, QByteArray &inflated);
-#endif
- void removeAutoDecompressHeader();
-
- enum ReplyState {
- NothingDoneState,
- ReadingStatusState,
- ReadingHeaderState,
- ReadingDataState,
- AllDoneState
- } state;
-
- QHttpNetworkRequest request;
- int statusCode;
- int majorVersion;
- int minorVersion;
- QString errorString;
- QString reasonPhrase;
- qint64 bodyLength;
- qint64 contentRead;
- qint64 totalProgress;
- QByteArray fragment;
- qint64 currentChunkSize;
- qint64 currentChunkRead;
- QPointer<QHttpNetworkConnection> connection;
- bool initInflate;
- bool streamEnd;
-#ifndef QT_NO_COMPRESS
- z_stream inflateStrm;
-#endif
- bool autoDecompress;
-
- QByteArray responseData; // uncompressed body
- QByteArray compressedData; // compressed body (temporary)
- QBuffer requestDataBuffer;
- bool requestIsBuffering;
- bool requestIsPrepared;
-};
-
-QHttpNetworkReplyPrivate::QHttpNetworkReplyPrivate(const QUrl &newUrl)
- : QHttpNetworkHeaderPrivate(newUrl), state(NothingDoneState), statusCode(100),
- majorVersion(0), minorVersion(0), bodyLength(0), contentRead(0), totalProgress(0),
- currentChunkSize(0), currentChunkRead(0), connection(0), initInflate(false),
- autoDecompress(false), requestIsBuffering(false), requestIsPrepared(false)
-{
-}
-
-QHttpNetworkReplyPrivate::~QHttpNetworkReplyPrivate()
-{
-}
-
-void QHttpNetworkReplyPrivate::clear()
-{
- state = NothingDoneState;
- statusCode = 100;
- bodyLength = 0;
- contentRead = 0;
- totalProgress = 0;
- currentChunkSize = 0;
- currentChunkRead = 0;
- connection = 0;
-#ifndef QT_NO_COMPRESS
- if (initInflate)
- inflateEnd(&inflateStrm);
-#endif
- initInflate = false;
- streamEnd = false;
- autoDecompress = false;
- fields.clear();
-}
-
-// QHttpNetworkReplyPrivate
-qint64 QHttpNetworkReplyPrivate::bytesAvailable() const
-{
- return (state != ReadingDataState ? 0 : fragment.size());
-}
-
-bool QHttpNetworkReplyPrivate::isGzipped()
-{
- QByteArray encoding = headerField("content-encoding");
- return encoding.toLower() == "gzip";
-}
-
-void QHttpNetworkReplyPrivate::removeAutoDecompressHeader()
-{
- // The header "Content-Encoding = gzip" is retained.
- // Content-Length is removed since the actual one send by the server is for compressed data
- QByteArray name("content-length");
- QByteArray lowerName = name.toLower();
- QList<QPair<QByteArray, QByteArray> >::Iterator it = fields.begin(),
- end = fields.end();
- while (it != end) {
- if (name == it->first.toLower()) {
- fields.erase(it);
- break;
- }
- ++it;
- }
-
-}
-
-bool QHttpNetworkReplyPrivate::findChallenge(bool forProxy, QByteArray &challenge) const
-{
- challenge.clear();
- // find out the type of authentication protocol requested.
- QByteArray header = forProxy ? "proxy-authenticate" : "www-authenticate";
- // pick the best protocol (has to match parsing in QAuthenticatorPrivate)
- QList<QByteArray> challenges = headerFieldValues(header);
- for (int i = 0; i<challenges.size(); i++) {
- QByteArray line = challenges.at(i);
- if (!line.toLower().startsWith("negotiate"))
- challenge = line;
- }
- return !challenge.isEmpty();
-}
-QAuthenticatorPrivate::Method QHttpNetworkReplyPrivate::authenticationMethod(bool isProxy) const
-{
- // The logic is same as the one used in void QAuthenticatorPrivate::parseHttpResponse()
- QAuthenticatorPrivate::Method method = QAuthenticatorPrivate::None;
- QByteArray header = isProxy ? "proxy-authenticate" : "www-authenticate";
- QList<QByteArray> challenges = headerFieldValues(header);
- for (int i = 0; i<challenges.size(); i++) {
- QByteArray line = challenges.at(i).trimmed().toLower();
- if (method < QAuthenticatorPrivate::Basic
- && line.startsWith("basic")) {
- method = QAuthenticatorPrivate::Basic;
- } else if (method < QAuthenticatorPrivate::Ntlm
- && line.startsWith("ntlm")) {
- method = QAuthenticatorPrivate::Ntlm;
- } else if (method < QAuthenticatorPrivate::DigestMd5
- && line.startsWith("digest")) {
- method = QAuthenticatorPrivate::DigestMd5;
- }
- }
- return method;
-}
-#ifndef QT_NO_COMPRESS
-bool QHttpNetworkReplyPrivate::gzipCheckHeader(QByteArray &content, int &pos)
-{
- int method = 0; // method byte
- int flags = 0; // flags byte
- bool ret = false;
-
- // Assure two bytes in the buffer so we can peek ahead -- handle case
- // where first byte of header is at the end of the buffer after the last
- // gzip segment
- pos = -1;
- QByteArray &body = content;
- int maxPos = body.size()-1;
- if (maxPos < 1) {
- return ret;
- }
-
- // Peek ahead to check the gzip magic header
- if (body[0] != char(gz_magic[0]) ||
- body[1] != char(gz_magic[1])) {
- return ret;
- }
- pos += 2;
- // Check the rest of the gzip header
- if (++pos <= maxPos)
- method = body[pos];
- if (pos++ <= maxPos)
- flags = body[pos];
- if (method != Z_DEFLATED || (flags & RESERVED) != 0) {
- return ret;
- }
-
- // Discard time, xflags and OS code:
- pos += 6;
- if (pos > maxPos)
- return ret;
- if ((flags & EXTRA_FIELD) && ((pos+2) <= maxPos)) { // skip the extra field
- unsigned len = (unsigned)body[++pos];
- len += ((unsigned)body[++pos])<<8;
- pos += len;
- if (pos > maxPos)
- return ret;
- }
- if ((flags & ORIG_NAME) != 0) { // skip the original file name
- while(++pos <= maxPos && body[pos]) {}
- }
- if ((flags & COMMENT) != 0) { // skip the .gz file comment
- while(++pos <= maxPos && body[pos]) {}
- }
- if ((flags & HEAD_CRC) != 0) { // skip the header crc
- pos += 2;
- if (pos > maxPos)
- return ret;
- }
- ret = (pos < maxPos); // return failed, if no more bytes left
- return ret;
-}
-
-int QHttpNetworkReplyPrivate::gunzipBodyPartially(QByteArray &compressed, QByteArray &inflated)
-{
- int ret = Z_DATA_ERROR;
- unsigned have;
- unsigned char out[CHUNK];
- int pos = -1;
-
- if (!initInflate) {
- // check the header
- if (!gzipCheckHeader(compressed, pos))
- return ret;
- // allocate inflate state
- inflateStrm.zalloc = Z_NULL;
- inflateStrm.zfree = Z_NULL;
- inflateStrm.opaque = Z_NULL;
- inflateStrm.avail_in = 0;
- inflateStrm.next_in = Z_NULL;
- ret = inflateInit2(&inflateStrm, -MAX_WBITS);
- if (ret != Z_OK)
- return ret;
- initInflate = true;
- streamEnd = false;
- }
-
- //remove the header.
- compressed.remove(0, pos+1);
- // expand until deflate stream ends
- inflateStrm.next_in = (unsigned char *)compressed.data();
- inflateStrm.avail_in = compressed.size();
- do {
- inflateStrm.avail_out = sizeof(out);
- inflateStrm.next_out = out;
- ret = inflate(&inflateStrm, Z_NO_FLUSH);
- switch (ret) {
- case Z_NEED_DICT:
- ret = Z_DATA_ERROR;
- // and fall through
- case Z_DATA_ERROR:
- case Z_MEM_ERROR:
- inflateEnd(&inflateStrm);
- initInflate = false;
- return ret;
- }
- have = sizeof(out) - inflateStrm.avail_out;
- inflated.append(QByteArray((const char *)out, have));
- } while (inflateStrm.avail_out == 0);
- // clean up and return
- if (ret <= Z_ERRNO || ret == Z_STREAM_END) {
- inflateEnd(&inflateStrm);
- initInflate = false;
- }
- streamEnd = (ret == Z_STREAM_END);
- return ret;
-}
-#endif
-
-qint64 QHttpNetworkReplyPrivate::readStatus(QAbstractSocket *socket)
-{
- qint64 bytes = 0;
- char c;
-
- while (socket->bytesAvailable()) {
- // allow both CRLF & LF (only) line endings
- if (socket->peek(&c, 1) == 1 && c == '\n') {
- bytes += socket->read(&c, 1); // read the "n"
- // remove the CR at the end
- if (fragment.endsWith('\r')) {
- fragment.truncate(fragment.length()-1);
- }
- parseStatus(fragment);
- state = ReadingHeaderState;
- fragment.clear(); // next fragment
- break;
- } else {
- c = 0;
- bytes += socket->read(&c, 1);
- fragment.append(c);
- }
- }
- return bytes;
-}
-
-void QHttpNetworkReplyPrivate::parseStatus(const QByteArray &status)
-{
- const QByteArrayMatcher sp(" ");
- int i = sp.indexIn(status);
- const QByteArray version = status.mid(0, i);
- int j = sp.indexIn(status, i + 1);
- const QByteArray code = status.mid(i + 1, j - i - 1);
- const QByteArray reason = status.mid(j + 1, status.count() - j);
-
- const QByteArrayMatcher slash("/");
- int k = slash.indexIn(version);
- const QByteArrayMatcher dot(".");
- int l = dot.indexIn(version, k);
- const QByteArray major = version.mid(k + 1, l - k - 1);
- const QByteArray minor = version.mid(l + 1, version.count() - l);
-
- majorVersion = QString::fromAscii(major.constData()).toInt();
- minorVersion = QString::fromAscii(minor.constData()).toInt();
- statusCode = QString::fromAscii(code.constData()).toInt();
- reasonPhrase = QString::fromAscii(reason.constData());
-}
-
-qint64 QHttpNetworkReplyPrivate::readHeader(QAbstractSocket *socket)
-{
- qint64 bytes = 0;
- char crlfcrlf[5];
- crlfcrlf[4] = '\0';
- char c = 0;
- bool allHeaders = false;
- while (!allHeaders && socket->bytesAvailable()) {
- if (socket->peek(&c, 1) == 1 && c == '\n') {
- // check for possible header endings. As per HTTP rfc,
- // the header endings will be marked by CRLFCRLF. But
- // we will allow CRLFLF, LFLF & CRLFCRLF
- if (fragment.endsWith("\n\r") || fragment.endsWith('\n'))
- allHeaders = true;
- }
- bytes += socket->read(&c, 1);
- fragment.append(c);
- }
- // we received all headers now parse them
- if (allHeaders) {
- parseHeader(fragment);
- state = ReadingDataState;
- fragment.clear(); // next fragment
- bodyLength = contentLength(); // cache the length
- }
- return bytes;
-}
-
-void QHttpNetworkReplyPrivate::parseHeader(const QByteArray &header)
-{
- // see rfc2616, sec 4 for information about HTTP/1.1 headers.
- // allows relaxed parsing here, accepts both CRLF & LF line endings
- const QByteArrayMatcher lf("\n");
- const QByteArrayMatcher colon(":");
- int i = 0;
- while (i < header.count()) {
- int j = colon.indexIn(header, i); // field-name
- if (j == -1)
- break;
- const QByteArray field = header.mid(i, j - i).trimmed();
- j++;
- // any number of LWS is allowed before and after the value
- QByteArray value;
- do {
- i = lf.indexIn(header, j);
- if (i == -1)
- break;
- if (!value.isEmpty())
- value += ' ';
- // check if we have CRLF or only LF
- bool hasCR = (i && header[i-1] == '\r');
- int length = i -(hasCR ? 1: 0) - j;
- value += header.mid(j, length).trimmed();
- j = ++i;
- } while (i < header.count() && (header.at(i) == ' ' || header.at(i) == '\t'));
- if (i == -1)
- break; // something is wrong
-
- fields.append(qMakePair(field, value));
- }
-}
-
-bool QHttpNetworkReplyPrivate::isChunked()
-{
- return headerField("transfer-encoding").toLower().contains("chunked");
-}
-
-bool QHttpNetworkReplyPrivate::connectionCloseEnabled()
-{
- return (headerField("connection").toLower().contains("close") ||
- headerField("proxy-connection").toLower().contains("close"));
-}
-
-qint64 QHttpNetworkReplyPrivate::readBody(QAbstractSocket *socket, QIODevice *out)
-{
- qint64 bytes = 0;
- if (isChunked()) {
- bytes += transferChunked(socket, out); // chunked transfer encoding (rfc 2616, sec 3.6)
- } else if (bodyLength > 0) { // we have a Content-Length
- bytes += transferRaw(socket, out, bodyLength - contentRead);
- if (contentRead + bytes == bodyLength)
- state = AllDoneState;
- } else {
- bytes += transferRaw(socket, out, socket->bytesAvailable());
- }
- if (state == AllDoneState)
- socket->readAll(); // Read the rest to clean (CRLF)
- contentRead += bytes;
- return bytes;
-}
-
-qint64 QHttpNetworkReplyPrivate::transferRaw(QIODevice *in, QIODevice *out, qint64 size)
-{
- qint64 bytes = 0;
- Q_ASSERT(in);
- Q_ASSERT(out);
-
- int toBeRead = qMin<qint64>(128*1024, qMin<qint64>(size, in->bytesAvailable()));
- QByteArray raw(toBeRead, 0);
- while (size > 0) {
- qint64 read = in->read(raw.data(), raw.size());
- if (read == 0)
- return bytes;
- // ### error checking here
- qint64 written = out->write(raw.data(), read);
- if (written == 0)
- return bytes;
- if (read != written)
- qDebug() << "### read" << read << "written" << written;
- bytes += read;
- size -= read;
- out->waitForBytesWritten(-1); // throttle
- }
- return bytes;
-
-}
-
-qint64 QHttpNetworkReplyPrivate::transferChunked(QIODevice *in, QIODevice *out)
-{
- qint64 bytes = 0;
- while (in->bytesAvailable()) { // while we can read from input
- // if we are done with the current chunk, get the size of the new chunk
- if (currentChunkRead >= currentChunkSize) {
- currentChunkSize = 0;
- currentChunkRead = 0;
- if (bytes) {
- char crlf[2];
- bytes += in->read(crlf, 2); // read the "\r\n" after the chunk
- }
- bytes += getChunkSize(in, &currentChunkSize);
- if (currentChunkSize == -1)
- break;
- }
- // if the chunk size is 0, end of the stream
- if (currentChunkSize == 0) {
- state = AllDoneState;
- break;
- }
- // otherwise, read data
- qint64 readSize = qMin(in->bytesAvailable(), currentChunkSize - currentChunkRead);
- QByteArray buffer(readSize, 0);
- qint64 read = in->read(buffer.data(), readSize);
- bytes += read;
- currentChunkRead += read;
- qint64 written = out->write(buffer);
- Q_UNUSED(written); // Avoid compile warning when building release
- Q_ASSERT(read == written);
- // ### error checking here
- out->waitForBytesWritten(-1);
- }
- return bytes;
-}
-
-qint64 QHttpNetworkReplyPrivate::getChunkSize(QIODevice *in, qint64 *chunkSize)
-{
- qint64 bytes = 0;
- char crlf[2];
- *chunkSize = -1;
- int bytesAvailable = in->bytesAvailable();
- while (bytesAvailable > bytes) {
- qint64 sniffedBytes = in->peek(crlf, 2);
- int fragmentSize = fragment.size();
- // check the next two bytes for a "\r\n", skip blank lines
- if ((fragmentSize && sniffedBytes == 2 && crlf[0] == '\r' && crlf[1] == '\n')
- ||(fragmentSize > 1 && fragment.endsWith('\r') && crlf[0] == '\n'))
- {
- bytes += in->read(crlf, 1); // read the \r or \n
- if (crlf[0] == '\r')
- bytes += in->read(crlf, 1); // read the \n
- bool ok = false;
- // ignore the chunk-extension
- fragment = fragment.mid(0, fragment.indexOf(';')).trimmed();
- *chunkSize = fragment.toLong(&ok, 16);
- fragment.clear();
- break; // size done
- } else {
- // read the fragment to the buffer
- char c = 0;
- bytes += in->read(&c, 1);
- fragment.append(c);
- }
- }
- return bytes;
-}
-
-// QHttpNetworkConnectionPrivate
-
-typedef QPair<QHttpNetworkRequest, QHttpNetworkReply*> HttpMessagePair;
-
-class QHttpNetworkConnectionPrivate : public QObjectPrivate
-{
- Q_DECLARE_PUBLIC(QHttpNetworkConnection)
-public:
- QHttpNetworkConnectionPrivate(const QString &hostName, quint16 port, bool encrypt);
- ~QHttpNetworkConnectionPrivate();
- void init();
- void connectSignals(QAbstractSocket *socket);
-
- enum SocketState {
- IdleState = 0, // ready to send request
- ConnectingState = 1, // connecting to host
- WritingState = 2, // writing the data
- WaitingState = 4, // waiting for reply
- ReadingState = 8, // reading the reply
- Wait4AuthState = 0x10, // blocked for send till the current authentication slot is done
- BusyState = (ConnectingState|WritingState|WaitingState|ReadingState|Wait4AuthState)
- };
-
- enum { ChunkSize = 4096 };
-
- int indexOf(QAbstractSocket *socket) const;
- bool isSocketBusy(QAbstractSocket *socket) const;
- bool isSocketWriting(QAbstractSocket *socket) const;
- bool isSocketWaiting(QAbstractSocket *socket) const;
- bool isSocketReading(QAbstractSocket *socket) const;
-
- QHttpNetworkReply *queueRequest(const QHttpNetworkRequest &request);
- void unqueueRequest(QAbstractSocket *socket);
- void prepareRequest(HttpMessagePair &request);
- bool sendRequest(QAbstractSocket *socket);
- void receiveReply(QAbstractSocket *socket, QHttpNetworkReply *reply);
- void resendCurrentRequest(QAbstractSocket *socket);
- void closeChannel(int channel);
- void copyCredentials(int fromChannel, QAuthenticator *auth, bool isProxy);
-
- // private slots
- void _q_bytesWritten(qint64 bytes); // proceed sending
- void _q_readyRead(); // pending data to read
- void _q_disconnected(); // disconnected from host
- void _q_startNextRequest(); // send the next request from the queue
- void _q_restartPendingRequest(); // send the currently blocked request
- void _q_connected(); // start sending request
- void _q_error(QAbstractSocket::SocketError); // error from socket
-#ifndef QT_NO_NETWORKPROXY
- void _q_proxyAuthenticationRequired(const QNetworkProxy &proxy, QAuthenticator *auth); // from transparent proxy
-#endif
- void _q_dataReadyReadNoBuffer();
- void _q_dataReadyReadBuffer();
-
- void createAuthorization(QAbstractSocket *socket, QHttpNetworkRequest &request);
- bool ensureConnection(QAbstractSocket *socket);
- QString errorDetail(QNetworkReply::NetworkError errorCode, QAbstractSocket *socket);
- void eraseData(QHttpNetworkReply *reply);
-#ifndef QT_NO_COMPRESS
- bool expand(QAbstractSocket *socket, QHttpNetworkReply *reply, bool dataComplete);
-#endif
- void bufferData(HttpMessagePair &request);
- void removeReply(QHttpNetworkReply *reply);
-
- QString hostName;
- quint16 port;
- bool encrypt;
-
- struct Channel {
- QAbstractSocket *socket;
- SocketState state;
- QHttpNetworkRequest request; // current request
- QHttpNetworkReply *reply; // current reply for this request
- qint64 written;
- qint64 bytesTotal;
- bool resendCurrent;
- int lastStatus; // last status received on this channel
- bool pendingEncrypt; // for https (send after encrypted)
- int reconnectAttempts; // maximum 2 reconnection attempts
- QAuthenticatorPrivate::Method authMehtod;
- QAuthenticatorPrivate::Method proxyAuthMehtod;
- QAuthenticator authenticator;
- QAuthenticator proxyAuthenticator;
-#ifndef QT_NO_OPENSSL
- bool ignoreSSLErrors;
-#endif
- Channel() :state(IdleState), reply(0), written(0), bytesTotal(0), resendCurrent(false), reconnectAttempts(2),
- authMehtod(QAuthenticatorPrivate::None), proxyAuthMehtod(QAuthenticatorPrivate::None)
-#ifndef QT_NO_OPENSSL
- , ignoreSSLErrors(false)
-#endif
- {}
- };
- static const int channelCount;
- Channel channels[2]; // maximum of 2 socket connections to the server
- bool pendingAuthSignal; // there is an incomplete authentication signal
- bool pendingProxyAuthSignal; // there is an incomplete proxy authentication signal
-
- void appendData(QHttpNetworkReply &reply, const QByteArray &fragment, bool compressed);
- qint64 bytesAvailable(const QHttpNetworkReply &reply, bool compressed = false) const;
- qint64 read(QHttpNetworkReply &reply, QByteArray &data, qint64 maxSize, bool compressed);
- void emitReplyError(QAbstractSocket *socket, QHttpNetworkReply *reply, QNetworkReply::NetworkError errorCode);
- bool handleAuthenticateChallenge(QAbstractSocket *socket, QHttpNetworkReply *reply, bool isProxy, bool &resend);
- void allDone(QAbstractSocket *socket, QHttpNetworkReply *reply);
- void handleStatus(QAbstractSocket *socket, QHttpNetworkReply *reply);
- inline bool emitSignals(QHttpNetworkReply *reply);
- inline bool expectContent(QHttpNetworkReply *reply);
-
-#ifndef QT_NO_OPENSSL
- void _q_encrypted(); // start sending request (https)
- void _q_sslErrors(const QList<QSslError> &errors); // ssl errors from the socket
- QSslConfiguration sslConfiguration(const QHttpNetworkReply &reply) const;
-#endif
-
-#ifndef QT_NO_NETWORKPROXY
- QNetworkProxy networkProxy;
-#endif
-
- //The request queues
- QList<HttpMessagePair> highPriorityQueue;
- QList<HttpMessagePair> lowPriorityQueue;
-};
+QT_BEGIN_NAMESPACE
const int QHttpNetworkConnectionPrivate::channelCount = 2;
@@ -1131,6 +265,11 @@ bool QHttpNetworkConnectionPrivate::ensureConnection(QAbstractSocket *socket)
if (socket->state() != QAbstractSocket::ConnectedState) {
// connect to the host if not already connected.
int index = indexOf(socket);
+ // resend this request after we receive the disconnected signal
+ if (socket->state() == QAbstractSocket::ClosingState) {
+ channels[index].resendCurrent = true;
+ return false;
+ }
channels[index].state = ConnectingState;
channels[index].pendingEncrypt = encrypt;
@@ -1390,10 +529,20 @@ void QHttpNetworkConnectionPrivate::receiveReply(QAbstractSocket *socket, QHttpN
QHttpNetworkReplyPrivate::ReplyState state = reply ? reply->d_func()->state : QHttpNetworkReplyPrivate::AllDoneState;
switch (state) {
case QHttpNetworkReplyPrivate::NothingDoneState:
- case QHttpNetworkReplyPrivate::ReadingStatusState:
- bytes += reply->d_func()->readStatus(socket);
+ case QHttpNetworkReplyPrivate::ReadingStatusState: {
+ qint64 statusBytes = reply->d_func()->readStatus(socket);
+ if (statusBytes == -1) {
+ // error reading the status, close the socket and emit error
+ socket->close();
+ reply->d_func()->errorString = errorDetail(QNetworkReply::ProtocolFailure, socket);
+ emit reply->finishedWithError(QNetworkReply::ProtocolFailure, reply->d_func()->errorString);
+ QMetaObject::invokeMethod(q, "_q_startNextRequest", Qt::QueuedConnection);
+ break;
+ }
+ bytes += statusBytes;
channels[i].lastStatus = reply->d_func()->statusCode;
break;
+ }
case QHttpNetworkReplyPrivate::ReadingHeaderState:
bytes += reply->d_func()->readHeader(socket);
if (reply->d_func()->state == QHttpNetworkReplyPrivate::ReadingDataState) {
@@ -1494,10 +643,21 @@ void QHttpNetworkConnectionPrivate::handleStatus(QAbstractSocket *socket, QHttpN
switch (statusCode) {
case 401:
case 407:
- handleAuthenticateChallenge(socket, reply, (statusCode == 407), resend);
- if (resend) {
- eraseData(reply);
- sendRequest(socket);
+ if (handleAuthenticateChallenge(socket, reply, (statusCode == 407), resend)) {
+ if (resend) {
+ eraseData(reply);
+ sendRequest(socket);
+ }
+ } else {
+ int i = indexOf(socket);
+ emit channels[i].reply->headerChanged();
+ emit channels[i].reply->readyRead();
+ QNetworkReply::NetworkError errorCode = (statusCode == 407)
+ ? QNetworkReply::ProxyAuthenticationRequiredError
+ : QNetworkReply::AuthenticationRequiredError;
+ reply->d_func()->errorString = errorDetail(errorCode, socket);
+ emit q->error(errorCode, reply->d_func()->errorString);
+ emit channels[i].reply->finished();
}
break;
default:
@@ -1600,7 +760,6 @@ bool QHttpNetworkConnectionPrivate::handleAuthenticateChallenge(QAbstractSocket
// authentication is cancelled, send the current contents to the user.
emit channels[i].reply->headerChanged();
emit channels[i].reply->readyRead();
- emit channels[i].reply->finished();
QNetworkReply::NetworkError errorCode =
isProxy
? QNetworkReply::ProxyAuthenticationRequiredError
@@ -1848,6 +1007,9 @@ void QHttpNetworkConnectionPrivate::_q_disconnected()
channels[i].state = ReadingState;
if (channels[i].reply)
receiveReply(socket, channels[i].reply);
+ } else if (channels[i].state == IdleState && channels[i].resendCurrent) {
+ // re-sending request because the socket was in ClosingState
+ QMetaObject::invokeMethod(q, "_q_startNextRequest", Qt::QueuedConnection);
}
channels[i].state = IdleState;
}
@@ -2150,235 +1312,6 @@ QNetworkProxy QHttpNetworkConnection::transparentProxy() const
}
#endif
-// QHttpNetworkRequest
-
-QHttpNetworkRequest::QHttpNetworkRequest(const QUrl &url, Operation operation, Priority priority)
- : d(new QHttpNetworkRequestPrivate(operation, priority, url))
-{
-}
-
-QHttpNetworkRequest::QHttpNetworkRequest(const QHttpNetworkRequest &other)
- : QHttpNetworkHeader(other), d(other.d)
-{
-}
-
-QHttpNetworkRequest::~QHttpNetworkRequest()
-{
-}
-
-QUrl QHttpNetworkRequest::url() const
-{
- return d->url;
-}
-void QHttpNetworkRequest::setUrl(const QUrl &url)
-{
- d->url = url;
-}
-
-qint64 QHttpNetworkRequest::contentLength() const
-{
- return d->contentLength();
-}
-
-void QHttpNetworkRequest::setContentLength(qint64 length)
-{
- d->setContentLength(length);
-}
-
-QList<QPair<QByteArray, QByteArray> > QHttpNetworkRequest::header() const
-{
- return d->fields;
-}
-
-QByteArray QHttpNetworkRequest::headerField(const QByteArray &name, const QByteArray &defaultValue) const
-{
- return d->headerField(name, defaultValue);
-}
-
-void QHttpNetworkRequest::setHeaderField(const QByteArray &name, const QByteArray &data)
-{
- d->setHeaderField(name, data);
-}
-
-QHttpNetworkRequest &QHttpNetworkRequest::operator=(const QHttpNetworkRequest &other)
-{
- d = other.d;
- return *this;
-}
-
-bool QHttpNetworkRequest::operator==(const QHttpNetworkRequest &other) const
-{
- return d->operator==(*other.d);
-}
-
-QHttpNetworkRequest::Operation QHttpNetworkRequest::operation() const
-{
- return d->operation;
-}
-
-void QHttpNetworkRequest::setOperation(Operation operation)
-{
- d->operation = operation;
-}
-
-QHttpNetworkRequest::Priority QHttpNetworkRequest::priority() const
-{
- return d->priority;
-}
-
-void QHttpNetworkRequest::setPriority(Priority priority)
-{
- d->priority = priority;
-}
-
-QIODevice *QHttpNetworkRequest::data() const
-{
- return d->data;
-}
-
-void QHttpNetworkRequest::setData(QIODevice *data)
-{
- d->data = data;
-}
-
-int QHttpNetworkRequest::majorVersion() const
-{
- return 1;
-}
-
-int QHttpNetworkRequest::minorVersion() const
-{
- return 1;
-}
-
-// QHttpNetworkReply
-
-QHttpNetworkReply::QHttpNetworkReply(const QUrl &url, QObject *parent)
- : QObject(*new QHttpNetworkReplyPrivate(url), parent)
-{
-}
-
-QHttpNetworkReply::~QHttpNetworkReply()
-{
- Q_D(QHttpNetworkReply);
- if (d->connection) {
- d->connection->d_func()->removeReply(this);
- }
-}
-
-QUrl QHttpNetworkReply::url() const
-{
- return d_func()->url;
-}
-void QHttpNetworkReply::setUrl(const QUrl &url)
-{
- Q_D(QHttpNetworkReply);
- d->url = url;
-}
-
-qint64 QHttpNetworkReply::contentLength() const
-{
- return d_func()->contentLength();
-}
-
-void QHttpNetworkReply::setContentLength(qint64 length)
-{
- Q_D(QHttpNetworkReply);
- d->setContentLength(length);
-}
-
-QList<QPair<QByteArray, QByteArray> > QHttpNetworkReply::header() const
-{
- return d_func()->fields;
-}
-
-QByteArray QHttpNetworkReply::headerField(const QByteArray &name, const QByteArray &defaultValue) const
-{
- return d_func()->headerField(name, defaultValue);
-}
-
-void QHttpNetworkReply::setHeaderField(const QByteArray &name, const QByteArray &data)
-{
- Q_D(QHttpNetworkReply);
- d->setHeaderField(name, data);
-}
-
-void QHttpNetworkReply::parseHeader(const QByteArray &header)
-{
- Q_D(QHttpNetworkReply);
- d->parseHeader(header);
-}
-
-QHttpNetworkRequest QHttpNetworkReply::request() const
-{
- return d_func()->request;
-}
-
-void QHttpNetworkReply::setRequest(const QHttpNetworkRequest &request)
-{
- Q_D(QHttpNetworkReply);
- d->request = request;
-}
-
-int QHttpNetworkReply::statusCode() const
-{
- return d_func()->statusCode;
-}
-
-void QHttpNetworkReply::setStatusCode(int code)
-{
- Q_D(QHttpNetworkReply);
- d->statusCode = code;
-}
-
-QString QHttpNetworkReply::errorString() const
-{
- return d_func()->errorString;
-}
-
-QString QHttpNetworkReply::reasonPhrase() const
-{
- return d_func()->reasonPhrase;
-}
-
-void QHttpNetworkReply::setErrorString(const QString &error)
-{
- Q_D(QHttpNetworkReply);
- d->errorString = error;
-}
-
-int QHttpNetworkReply::majorVersion() const
-{
- return d_func()->majorVersion;
-}
-
-int QHttpNetworkReply::minorVersion() const
-{
- return d_func()->minorVersion;
-}
-
-qint64 QHttpNetworkReply::bytesAvailable() const
-{
- Q_D(const QHttpNetworkReply);
- if (d->connection)
- return d->connection->d_func()->bytesAvailable(*this);
- else
- return -1;
-}
-
-QByteArray QHttpNetworkReply::read(qint64 maxSize)
-{
- Q_D(QHttpNetworkReply);
- QByteArray data;
- if (d->connection)
- d->connection->d_func()->read(*this, data, maxSize, false);
- return data;
-}
-
-bool QHttpNetworkReply::isFinished() const
-{
- return d_func()->state == QHttpNetworkReplyPrivate::AllDoneState;
-}
// SSL support below
#ifndef QT_NO_OPENSSL
@@ -2433,27 +1366,7 @@ void QHttpNetworkConnection::ignoreSslErrors(int channel)
}
}
-QSslConfiguration QHttpNetworkReply::sslConfiguration() const
-{
- Q_D(const QHttpNetworkReply);
- if (d->connection)
- return d->connection->d_func()->sslConfiguration(*this);
- return QSslConfiguration();
-}
-void QHttpNetworkReply::setSslConfiguration(const QSslConfiguration &config)
-{
- Q_D(QHttpNetworkReply);
- if (d->connection)
- d->connection->setSslConfiguration(config);
-}
-
-void QHttpNetworkReply::ignoreSslErrors()
-{
- Q_D(QHttpNetworkReply);
- if (d->connection)
- d->connection->ignoreSslErrors();
-}
#endif //QT_NO_OPENSSL
diff --git a/src/network/access/qhttpnetworkconnection_p.h b/src/network/access/qhttpnetworkconnection_p.h
index 8dbcb3d..09bd459 100644
--- a/src/network/access/qhttpnetworkconnection_p.h
+++ b/src/network/access/qhttpnetworkconnection_p.h
@@ -56,6 +56,16 @@
#include <QtNetwork/qnetworkreply.h>
#include <QtNetwork/qabstractsocket.h>
+#include <private/qobject_p.h>
+#include <qauthenticator.h>
+#include <qnetworkproxy.h>
+#include <qbuffer.h>
+
+#include <private/qhttpnetworkheader_p.h>
+#include <private/qhttpnetworkrequest_p.h>
+#include <private/qhttpnetworkreply_p.h>
+
+
#ifndef QT_NO_HTTP
#ifndef QT_NO_OPENSSL
@@ -145,144 +155,137 @@ private:
#endif
};
-class Q_AUTOTEST_EXPORT QHttpNetworkHeader
-{
-public:
- virtual ~QHttpNetworkHeader() {};
- virtual QUrl url() const = 0;
- virtual void setUrl(const QUrl &url) = 0;
- virtual int majorVersion() const = 0;
- virtual int minorVersion() const = 0;
- virtual qint64 contentLength() const = 0;
- virtual void setContentLength(qint64 length) = 0;
- virtual QList<QPair<QByteArray, QByteArray> > header() const = 0;
- virtual QByteArray headerField(const QByteArray &name, const QByteArray &defaultValue = QByteArray()) const = 0;
- virtual void setHeaderField(const QByteArray &name, const QByteArray &data) = 0;
-};
+// private classes
+typedef QPair<QHttpNetworkRequest, QHttpNetworkReply*> HttpMessagePair;
+
-class QHttpNetworkRequestPrivate;
-class Q_AUTOTEST_EXPORT QHttpNetworkRequest: public QHttpNetworkHeader
+class QHttpNetworkConnectionPrivate : public QObjectPrivate
{
+ Q_DECLARE_PUBLIC(QHttpNetworkConnection)
public:
- enum Operation {
- Options,
- Get,
- Head,
- Post,
- Put,
- Delete,
- Trace,
- Connect
+ QHttpNetworkConnectionPrivate(const QString &hostName, quint16 port, bool encrypt);
+ ~QHttpNetworkConnectionPrivate();
+ void init();
+ void connectSignals(QAbstractSocket *socket);
+
+ enum SocketState {
+ IdleState = 0, // ready to send request
+ ConnectingState = 1, // connecting to host
+ WritingState = 2, // writing the data
+ WaitingState = 4, // waiting for reply
+ ReadingState = 8, // reading the reply
+ Wait4AuthState = 0x10, // blocked for send till the current authentication slot is done
+ BusyState = (ConnectingState|WritingState|WaitingState|ReadingState|Wait4AuthState)
};
- enum Priority {
- HighPriority,
- NormalPriority,
- LowPriority
+ enum { ChunkSize = 4096 };
+
+ int indexOf(QAbstractSocket *socket) const;
+ bool isSocketBusy(QAbstractSocket *socket) const;
+ bool isSocketWriting(QAbstractSocket *socket) const;
+ bool isSocketWaiting(QAbstractSocket *socket) const;
+ bool isSocketReading(QAbstractSocket *socket) const;
+
+ QHttpNetworkReply *queueRequest(const QHttpNetworkRequest &request);
+ void unqueueRequest(QAbstractSocket *socket);
+ void prepareRequest(HttpMessagePair &request);
+ bool sendRequest(QAbstractSocket *socket);
+ void receiveReply(QAbstractSocket *socket, QHttpNetworkReply *reply);
+ void resendCurrentRequest(QAbstractSocket *socket);
+ void closeChannel(int channel);
+ void copyCredentials(int fromChannel, QAuthenticator *auth, bool isProxy);
+
+ // private slots
+ void _q_bytesWritten(qint64 bytes); // proceed sending
+ void _q_readyRead(); // pending data to read
+ void _q_disconnected(); // disconnected from host
+ void _q_startNextRequest(); // send the next request from the queue
+ void _q_restartPendingRequest(); // send the currently blocked request
+ void _q_connected(); // start sending request
+ void _q_error(QAbstractSocket::SocketError); // error from socket
+#ifndef QT_NO_NETWORKPROXY
+ void _q_proxyAuthenticationRequired(const QNetworkProxy &proxy, QAuthenticator *auth); // from transparent proxy
+#endif
+ void _q_dataReadyReadNoBuffer();
+ void _q_dataReadyReadBuffer();
+
+ void createAuthorization(QAbstractSocket *socket, QHttpNetworkRequest &request);
+ bool ensureConnection(QAbstractSocket *socket);
+ QString errorDetail(QNetworkReply::NetworkError errorCode, QAbstractSocket *socket);
+ void eraseData(QHttpNetworkReply *reply);
+#ifndef QT_NO_COMPRESS
+ bool expand(QAbstractSocket *socket, QHttpNetworkReply *reply, bool dataComplete);
+#endif
+ void bufferData(HttpMessagePair &request);
+ void removeReply(QHttpNetworkReply *reply);
+
+ QString hostName;
+ quint16 port;
+ bool encrypt;
+
+ struct Channel {
+ QAbstractSocket *socket;
+ SocketState state;
+ QHttpNetworkRequest request; // current request
+ QHttpNetworkReply *reply; // current reply for this request
+ qint64 written;
+ qint64 bytesTotal;
+ bool resendCurrent;
+ int lastStatus; // last status received on this channel
+ bool pendingEncrypt; // for https (send after encrypted)
+ int reconnectAttempts; // maximum 2 reconnection attempts
+ QAuthenticatorPrivate::Method authMehtod;
+ QAuthenticatorPrivate::Method proxyAuthMehtod;
+ QAuthenticator authenticator;
+ QAuthenticator proxyAuthenticator;
+#ifndef QT_NO_OPENSSL
+ bool ignoreSSLErrors;
+#endif
+ Channel() :state(IdleState), reply(0), written(0), bytesTotal(0), resendCurrent(false), reconnectAttempts(2),
+ authMehtod(QAuthenticatorPrivate::None), proxyAuthMehtod(QAuthenticatorPrivate::None)
+#ifndef QT_NO_OPENSSL
+ , ignoreSSLErrors(false)
+#endif
+ {}
};
-
- QHttpNetworkRequest(const QUrl &url = QUrl(), Operation operation = Get, Priority priority = NormalPriority);
- QHttpNetworkRequest(const QHttpNetworkRequest &other);
- virtual ~QHttpNetworkRequest();
- QHttpNetworkRequest &operator=(const QHttpNetworkRequest &other);
- bool operator==(const QHttpNetworkRequest &other) const;
-
- QUrl url() const;
- void setUrl(const QUrl &url);
-
- int majorVersion() const;
- int minorVersion() const;
-
- qint64 contentLength() const;
- void setContentLength(qint64 length);
-
- QList<QPair<QByteArray, QByteArray> > header() const;
- QByteArray headerField(const QByteArray &name, const QByteArray &defaultValue = QByteArray()) const;
- void setHeaderField(const QByteArray &name, const QByteArray &data);
-
- Operation operation() const;
- void setOperation(Operation operation);
-
- Priority priority() const;
- void setPriority(Priority priority);
-
- QIODevice *data() const;
- void setData(QIODevice *data);
-
-private:
- QSharedDataPointer<QHttpNetworkRequestPrivate> d;
- friend class QHttpNetworkRequestPrivate;
- friend class QHttpNetworkConnectionPrivate;
-};
-
-class QHttpNetworkReplyPrivate;
-class Q_AUTOTEST_EXPORT QHttpNetworkReply : public QObject, public QHttpNetworkHeader
-{
- Q_OBJECT
-public:
-
- explicit QHttpNetworkReply(const QUrl &url = QUrl(), QObject *parent = 0);
- virtual ~QHttpNetworkReply();
-
- QUrl url() const;
- void setUrl(const QUrl &url);
-
- int majorVersion() const;
- int minorVersion() const;
-
- qint64 contentLength() const;
- void setContentLength(qint64 length);
-
- QList<QPair<QByteArray, QByteArray> > header() const;
- QByteArray headerField(const QByteArray &name, const QByteArray &defaultValue = QByteArray()) const;
- void setHeaderField(const QByteArray &name, const QByteArray &data);
- void parseHeader(const QByteArray &header); // mainly for testing
-
- QHttpNetworkRequest request() const;
- void setRequest(const QHttpNetworkRequest &request);
-
- int statusCode() const;
- void setStatusCode(int code);
-
- QString errorString() const;
- void setErrorString(const QString &error);
-
- QString reasonPhrase() const;
-
- qint64 bytesAvailable() const;
- QByteArray read(qint64 maxSize = -1);
-
- bool isFinished() const;
+ static const int channelCount;
+ Channel channels[2]; // maximum of 2 socket connections to the server
+ bool pendingAuthSignal; // there is an incomplete authentication signal
+ bool pendingProxyAuthSignal; // there is an incomplete proxy authentication signal
+
+ void appendData(QHttpNetworkReply &reply, const QByteArray &fragment, bool compressed);
+ qint64 bytesAvailable(const QHttpNetworkReply &reply, bool compressed = false) const;
+ qint64 read(QHttpNetworkReply &reply, QByteArray &data, qint64 maxSize, bool compressed);
+ void emitReplyError(QAbstractSocket *socket, QHttpNetworkReply *reply, QNetworkReply::NetworkError errorCode);
+ bool handleAuthenticateChallenge(QAbstractSocket *socket, QHttpNetworkReply *reply, bool isProxy, bool &resend);
+ void allDone(QAbstractSocket *socket, QHttpNetworkReply *reply);
+ void handleStatus(QAbstractSocket *socket, QHttpNetworkReply *reply);
+ inline bool emitSignals(QHttpNetworkReply *reply);
+ inline bool expectContent(QHttpNetworkReply *reply);
#ifndef QT_NO_OPENSSL
- QSslConfiguration sslConfiguration() const;
- void setSslConfiguration(const QSslConfiguration &config);
- void ignoreSslErrors();
-
-Q_SIGNALS:
- void sslErrors(const QList<QSslError> &errors);
+ void _q_encrypted(); // start sending request (https)
+ void _q_sslErrors(const QList<QSslError> &errors); // ssl errors from the socket
+ QSslConfiguration sslConfiguration(const QHttpNetworkReply &reply) const;
#endif
-Q_SIGNALS:
- void readyRead();
- void finished();
- void finishedWithError(QNetworkReply::NetworkError errorCode, const QString &detail = QString());
- void headerChanged();
- void dataReadProgress(int done, int total);
- void dataSendProgress(int done, int total);
+#ifndef QT_NO_NETWORKPROXY
+ QNetworkProxy networkProxy;
+#endif
-private:
- Q_DECLARE_PRIVATE(QHttpNetworkReply)
- friend class QHttpNetworkConnection;
- friend class QHttpNetworkConnectionPrivate;
+ //The request queues
+ QList<HttpMessagePair> highPriorityQueue;
+ QList<HttpMessagePair> lowPriorityQueue;
};
+
+
QT_END_NAMESPACE
-Q_DECLARE_METATYPE(QHttpNetworkRequest)
+//Q_DECLARE_METATYPE(QHttpNetworkRequest)
//Q_DECLARE_METATYPE(QHttpNetworkReply)
#endif // QT_NO_HTTP
diff --git a/src/network/access/qhttpnetworkheader.cpp b/src/network/access/qhttpnetworkheader.cpp
new file mode 100644
index 0000000..6f7f6f7
--- /dev/null
+++ b/src/network/access/qhttpnetworkheader.cpp
@@ -0,0 +1,123 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the QtNetwork 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 either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** 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.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "qhttpnetworkheader_p.h"
+
+
+QT_BEGIN_NAMESPACE
+
+QHttpNetworkHeaderPrivate::QHttpNetworkHeaderPrivate(const QUrl &newUrl)
+ :url(newUrl)
+{
+}
+
+QHttpNetworkHeaderPrivate::QHttpNetworkHeaderPrivate(const QHttpNetworkHeaderPrivate &other)
+ :QSharedData(other)
+{
+ url = other.url;
+ fields = other.fields;
+}
+
+qint64 QHttpNetworkHeaderPrivate::contentLength() const
+{
+ bool ok = false;
+ QByteArray value = headerField("content-length");
+ qint64 length = value.toULongLong(&ok);
+ if (ok)
+ return length;
+ return -1; // the header field is not set
+}
+
+void QHttpNetworkHeaderPrivate::setContentLength(qint64 length)
+{
+ setHeaderField("Content-Length", QByteArray::number(length));
+}
+
+QByteArray QHttpNetworkHeaderPrivate::headerField(const QByteArray &name, const QByteArray &defaultValue) const
+{
+ QList<QByteArray> allValues = headerFieldValues(name);
+ if (allValues.isEmpty())
+ return defaultValue;
+
+ QByteArray result;
+ bool first = true;
+ foreach (QByteArray value, allValues) {
+ if (!first)
+ result += ", ";
+ first = false;
+ result += value;
+ }
+ return result;
+}
+
+QList<QByteArray> QHttpNetworkHeaderPrivate::headerFieldValues(const QByteArray &name) const
+{
+ QList<QByteArray> result;
+ QByteArray lowerName = name.toLower();
+ QList<QPair<QByteArray, QByteArray> >::ConstIterator it = fields.constBegin(),
+ end = fields.constEnd();
+ for ( ; it != end; ++it)
+ if (lowerName == it->first.toLower())
+ result += it->second;
+
+ return result;
+}
+
+void QHttpNetworkHeaderPrivate::setHeaderField(const QByteArray &name, const QByteArray &data)
+{
+ QByteArray lowerName = name.toLower();
+ QList<QPair<QByteArray, QByteArray> >::Iterator it = fields.begin();
+ while (it != fields.end()) {
+ if (lowerName == it->first.toLower())
+ it = fields.erase(it);
+ else
+ ++it;
+ }
+ fields.append(qMakePair(name, data));
+}
+
+bool QHttpNetworkHeaderPrivate::operator==(const QHttpNetworkHeaderPrivate &other) const
+{
+ return (url == other.url);
+}
+
+
+QT_END_NAMESPACE
diff --git a/util/install/win/resource.h b/src/network/access/qhttpnetworkheader_p.h
index 791edfe..4e62352 100644
--- a/util/install/win/resource.h
+++ b/src/network/access/qhttpnetworkheader_p.h
@@ -3,7 +3,7 @@
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
** Contact: Qt Software Information (qt-info@nokia.com)
**
-** This file is part of the utils of the Qt Toolkit.
+** This file is part of the QtNetwork module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL$
** No Commercial Usage
@@ -38,40 +38,74 @@
** $QT_END_LICENSE$
**
****************************************************************************/
-#ifndef RESOURCE_H
-#define RESOURCE_H
-#include <qcstring.h>
-#include <qstring.h>
+#ifndef QHTTPNETWORKHEADER_H
+#define QHTTPNETWORKHEADER_H
-class ResourceLoader
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists for the convenience
+// of the Network Access API. This header file may change from
+// version to version without notice, or even be removed.
+//
+// We mean it.
+//
+#ifndef QT_NO_HTTP
+
+#include <qshareddata.h>
+#include <qurl.h>
+
+QT_BEGIN_NAMESPACE
+
+class Q_AUTOTEST_EXPORT QHttpNetworkHeader
{
public:
- ResourceLoader( char *resourceName, int minimumSize=0 );
- ~ResourceLoader();
+ virtual ~QHttpNetworkHeader() {};
+ virtual QUrl url() const = 0;
+ virtual void setUrl(const QUrl &url) = 0;
+
+ virtual int majorVersion() const = 0;
+ virtual int minorVersion() const = 0;
- bool isValid() const;
- QByteArray data();
+ virtual qint64 contentLength() const = 0;
+ virtual void setContentLength(qint64 length) = 0;
-private:
- bool valid;
- int arSize;
- char *arData;
- QByteArray ba;
+ virtual QList<QPair<QByteArray, QByteArray> > header() const = 0;
+ virtual QByteArray headerField(const QByteArray &name, const QByteArray &defaultValue = QByteArray()) const = 0;
+ virtual void setHeaderField(const QByteArray &name, const QByteArray &data) = 0;
};
-#if defined(Q_OS_WIN32)
-class ResourceSaver
+class QHttpNetworkHeaderPrivate : public QSharedData
{
public:
- ResourceSaver( const QString& appName );
- ~ResourceSaver();
+ QUrl url;
+ QList<QPair<QByteArray, QByteArray> > fields;
- bool setData( char *resourceName, const QByteArray &data, QString *errorMessage=0 );
+ QHttpNetworkHeaderPrivate(const QUrl &newUrl = QUrl());
+ QHttpNetworkHeaderPrivate(const QHttpNetworkHeaderPrivate &other);
+ qint64 contentLength() const;
+ void setContentLength(qint64 length);
+
+ QByteArray headerField(const QByteArray &name, const QByteArray &defaultValue = QByteArray()) const;
+ QList<QByteArray> headerFieldValues(const QByteArray &name) const;
+ void setHeaderField(const QByteArray &name, const QByteArray &data);
+ bool operator==(const QHttpNetworkHeaderPrivate &other) const;
-private:
- QString applicationName;
};
-#endif
-#endif // RESOURCE_H
+
+QT_END_NAMESPACE
+
+
+#endif // QT_NO_HTTP
+
+
+#endif // QHTTPNETWORKHEADER_H
+
+
+
+
+
+
diff --git a/src/network/access/qhttpnetworkreply.cpp b/src/network/access/qhttpnetworkreply.cpp
new file mode 100644
index 0000000..69e0a4c
--- /dev/null
+++ b/src/network/access/qhttpnetworkreply.cpp
@@ -0,0 +1,686 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the QtNetwork 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 either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** 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.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "qhttpnetworkreply_p.h"
+#include "qhttpnetworkconnection_p.h"
+
+#include <qbytearraymatcher.h>
+
+#ifndef QT_NO_HTTP
+
+#ifndef QT_NO_OPENSSL
+# include <QtNetwork/qsslkey.h>
+# include <QtNetwork/qsslcipher.h>
+# include <QtNetwork/qsslconfiguration.h>
+#endif
+
+QT_BEGIN_NAMESPACE
+
+QHttpNetworkReply::QHttpNetworkReply(const QUrl &url, QObject *parent)
+ : QObject(*new QHttpNetworkReplyPrivate(url), parent)
+{
+}
+
+QHttpNetworkReply::~QHttpNetworkReply()
+{
+ Q_D(QHttpNetworkReply);
+ if (d->connection) {
+ d->connection->d_func()->removeReply(this);
+ }
+}
+
+QUrl QHttpNetworkReply::url() const
+{
+ return d_func()->url;
+}
+void QHttpNetworkReply::setUrl(const QUrl &url)
+{
+ Q_D(QHttpNetworkReply);
+ d->url = url;
+}
+
+qint64 QHttpNetworkReply::contentLength() const
+{
+ return d_func()->contentLength();
+}
+
+void QHttpNetworkReply::setContentLength(qint64 length)
+{
+ Q_D(QHttpNetworkReply);
+ d->setContentLength(length);
+}
+
+QList<QPair<QByteArray, QByteArray> > QHttpNetworkReply::header() const
+{
+ return d_func()->fields;
+}
+
+QByteArray QHttpNetworkReply::headerField(const QByteArray &name, const QByteArray &defaultValue) const
+{
+ return d_func()->headerField(name, defaultValue);
+}
+
+void QHttpNetworkReply::setHeaderField(const QByteArray &name, const QByteArray &data)
+{
+ Q_D(QHttpNetworkReply);
+ d->setHeaderField(name, data);
+}
+
+void QHttpNetworkReply::parseHeader(const QByteArray &header)
+{
+ Q_D(QHttpNetworkReply);
+ d->parseHeader(header);
+}
+
+QHttpNetworkRequest QHttpNetworkReply::request() const
+{
+ return d_func()->request;
+}
+
+void QHttpNetworkReply::setRequest(const QHttpNetworkRequest &request)
+{
+ Q_D(QHttpNetworkReply);
+ d->request = request;
+}
+
+int QHttpNetworkReply::statusCode() const
+{
+ return d_func()->statusCode;
+}
+
+void QHttpNetworkReply::setStatusCode(int code)
+{
+ Q_D(QHttpNetworkReply);
+ d->statusCode = code;
+}
+
+QString QHttpNetworkReply::errorString() const
+{
+ return d_func()->errorString;
+}
+
+QString QHttpNetworkReply::reasonPhrase() const
+{
+ return d_func()->reasonPhrase;
+}
+
+void QHttpNetworkReply::setErrorString(const QString &error)
+{
+ Q_D(QHttpNetworkReply);
+ d->errorString = error;
+}
+
+int QHttpNetworkReply::majorVersion() const
+{
+ return d_func()->majorVersion;
+}
+
+int QHttpNetworkReply::minorVersion() const
+{
+ return d_func()->minorVersion;
+}
+
+qint64 QHttpNetworkReply::bytesAvailable() const
+{
+ Q_D(const QHttpNetworkReply);
+ if (d->connection)
+ return d->connection->d_func()->bytesAvailable(*this);
+ else
+ return -1;
+}
+
+QByteArray QHttpNetworkReply::read(qint64 maxSize)
+{
+ Q_D(QHttpNetworkReply);
+ QByteArray data;
+ if (d->connection)
+ d->connection->d_func()->read(*this, data, maxSize, false);
+ return data;
+}
+
+bool QHttpNetworkReply::isFinished() const
+{
+ return d_func()->state == QHttpNetworkReplyPrivate::AllDoneState;
+}
+
+
+
+QHttpNetworkReplyPrivate::QHttpNetworkReplyPrivate(const QUrl &newUrl)
+ : QHttpNetworkHeaderPrivate(newUrl), state(NothingDoneState), statusCode(100),
+ majorVersion(0), minorVersion(0), bodyLength(0), contentRead(0), totalProgress(0),
+ currentChunkSize(0), currentChunkRead(0), connection(0), initInflate(false),
+ autoDecompress(false), requestIsBuffering(false), requestIsPrepared(false)
+{
+}
+
+QHttpNetworkReplyPrivate::~QHttpNetworkReplyPrivate()
+{
+}
+
+void QHttpNetworkReplyPrivate::clear()
+{
+ state = NothingDoneState;
+ statusCode = 100;
+ bodyLength = 0;
+ contentRead = 0;
+ totalProgress = 0;
+ currentChunkSize = 0;
+ currentChunkRead = 0;
+ connection = 0;
+#ifndef QT_NO_COMPRESS
+ if (initInflate)
+ inflateEnd(&inflateStrm);
+#endif
+ initInflate = false;
+ streamEnd = false;
+ autoDecompress = false;
+ fields.clear();
+}
+
+// QHttpNetworkReplyPrivate
+qint64 QHttpNetworkReplyPrivate::bytesAvailable() const
+{
+ return (state != ReadingDataState ? 0 : fragment.size());
+}
+
+bool QHttpNetworkReplyPrivate::isGzipped()
+{
+ QByteArray encoding = headerField("content-encoding");
+ return encoding.toLower() == "gzip";
+}
+
+void QHttpNetworkReplyPrivate::removeAutoDecompressHeader()
+{
+ // The header "Content-Encoding = gzip" is retained.
+ // Content-Length is removed since the actual one send by the server is for compressed data
+ QByteArray name("content-length");
+ QByteArray lowerName = name.toLower();
+ QList<QPair<QByteArray, QByteArray> >::Iterator it = fields.begin(),
+ end = fields.end();
+ while (it != end) {
+ if (name == it->first.toLower()) {
+ fields.erase(it);
+ break;
+ }
+ ++it;
+ }
+
+}
+
+bool QHttpNetworkReplyPrivate::findChallenge(bool forProxy, QByteArray &challenge) const
+{
+ challenge.clear();
+ // find out the type of authentication protocol requested.
+ QByteArray header = forProxy ? "proxy-authenticate" : "www-authenticate";
+ // pick the best protocol (has to match parsing in QAuthenticatorPrivate)
+ QList<QByteArray> challenges = headerFieldValues(header);
+ for (int i = 0; i<challenges.size(); i++) {
+ QByteArray line = challenges.at(i);
+ if (!line.toLower().startsWith("negotiate"))
+ challenge = line;
+ }
+ return !challenge.isEmpty();
+}
+
+QAuthenticatorPrivate::Method QHttpNetworkReplyPrivate::authenticationMethod(bool isProxy) const
+{
+ // The logic is same as the one used in void QAuthenticatorPrivate::parseHttpResponse()
+ QAuthenticatorPrivate::Method method = QAuthenticatorPrivate::None;
+ QByteArray header = isProxy ? "proxy-authenticate" : "www-authenticate";
+ QList<QByteArray> challenges = headerFieldValues(header);
+ for (int i = 0; i<challenges.size(); i++) {
+ QByteArray line = challenges.at(i).trimmed().toLower();
+ if (method < QAuthenticatorPrivate::Basic
+ && line.startsWith("basic")) {
+ method = QAuthenticatorPrivate::Basic;
+ } else if (method < QAuthenticatorPrivate::Ntlm
+ && line.startsWith("ntlm")) {
+ method = QAuthenticatorPrivate::Ntlm;
+ } else if (method < QAuthenticatorPrivate::DigestMd5
+ && line.startsWith("digest")) {
+ method = QAuthenticatorPrivate::DigestMd5;
+ }
+ }
+ return method;
+}
+
+#ifndef QT_NO_COMPRESS
+bool QHttpNetworkReplyPrivate::gzipCheckHeader(QByteArray &content, int &pos)
+{
+ int method = 0; // method byte
+ int flags = 0; // flags byte
+ bool ret = false;
+
+ // Assure two bytes in the buffer so we can peek ahead -- handle case
+ // where first byte of header is at the end of the buffer after the last
+ // gzip segment
+ pos = -1;
+ QByteArray &body = content;
+ int maxPos = body.size()-1;
+ if (maxPos < 1) {
+ return ret;
+ }
+
+ // Peek ahead to check the gzip magic header
+ if (body[0] != char(gz_magic[0]) ||
+ body[1] != char(gz_magic[1])) {
+ return ret;
+ }
+ pos += 2;
+ // Check the rest of the gzip header
+ if (++pos <= maxPos)
+ method = body[pos];
+ if (pos++ <= maxPos)
+ flags = body[pos];
+ if (method != Z_DEFLATED || (flags & RESERVED) != 0) {
+ return ret;
+ }
+
+ // Discard time, xflags and OS code:
+ pos += 6;
+ if (pos > maxPos)
+ return ret;
+ if ((flags & EXTRA_FIELD) && ((pos+2) <= maxPos)) { // skip the extra field
+ unsigned len = (unsigned)body[++pos];
+ len += ((unsigned)body[++pos])<<8;
+ pos += len;
+ if (pos > maxPos)
+ return ret;
+ }
+ if ((flags & ORIG_NAME) != 0) { // skip the original file name
+ while(++pos <= maxPos && body[pos]) {}
+ }
+ if ((flags & COMMENT) != 0) { // skip the .gz file comment
+ while(++pos <= maxPos && body[pos]) {}
+ }
+ if ((flags & HEAD_CRC) != 0) { // skip the header crc
+ pos += 2;
+ if (pos > maxPos)
+ return ret;
+ }
+ ret = (pos < maxPos); // return failed, if no more bytes left
+ return ret;
+}
+
+int QHttpNetworkReplyPrivate::gunzipBodyPartially(QByteArray &compressed, QByteArray &inflated)
+{
+ int ret = Z_DATA_ERROR;
+ unsigned have;
+ unsigned char out[CHUNK];
+ int pos = -1;
+
+ if (!initInflate) {
+ // check the header
+ if (!gzipCheckHeader(compressed, pos))
+ return ret;
+ // allocate inflate state
+ inflateStrm.zalloc = Z_NULL;
+ inflateStrm.zfree = Z_NULL;
+ inflateStrm.opaque = Z_NULL;
+ inflateStrm.avail_in = 0;
+ inflateStrm.next_in = Z_NULL;
+ ret = inflateInit2(&inflateStrm, -MAX_WBITS);
+ if (ret != Z_OK)
+ return ret;
+ initInflate = true;
+ streamEnd = false;
+ }
+
+ //remove the header.
+ compressed.remove(0, pos+1);
+ // expand until deflate stream ends
+ inflateStrm.next_in = (unsigned char *)compressed.data();
+ inflateStrm.avail_in = compressed.size();
+ do {
+ inflateStrm.avail_out = sizeof(out);
+ inflateStrm.next_out = out;
+ ret = inflate(&inflateStrm, Z_NO_FLUSH);
+ switch (ret) {
+ case Z_NEED_DICT:
+ ret = Z_DATA_ERROR;
+ // and fall through
+ case Z_DATA_ERROR:
+ case Z_MEM_ERROR:
+ inflateEnd(&inflateStrm);
+ initInflate = false;
+ return ret;
+ }
+ have = sizeof(out) - inflateStrm.avail_out;
+ inflated.append(QByteArray((const char *)out, have));
+ } while (inflateStrm.avail_out == 0);
+ // clean up and return
+ if (ret <= Z_ERRNO || ret == Z_STREAM_END) {
+ inflateEnd(&inflateStrm);
+ initInflate = false;
+ }
+ streamEnd = (ret == Z_STREAM_END);
+ return ret;
+}
+#endif
+
+qint64 QHttpNetworkReplyPrivate::readStatus(QAbstractSocket *socket)
+{
+ qint64 bytes = 0;
+ char c;
+
+ while (socket->bytesAvailable()) {
+ // allow both CRLF & LF (only) line endings
+ if (socket->peek(&c, 1) == 1 && c == '\n') {
+ bytes += socket->read(&c, 1); // read the "n"
+ // remove the CR at the end
+ if (fragment.endsWith('\r')) {
+ fragment.truncate(fragment.length()-1);
+ }
+ bool ok = parseStatus(fragment);
+ state = ReadingHeaderState;
+ fragment.clear(); // next fragment
+
+ if (!ok)
+ return -1;
+ break;
+ } else {
+ c = 0;
+ bytes += socket->read(&c, 1);
+ fragment.append(c);
+ }
+
+ // is this a valid reply?
+ if (fragment.length() >= 5 && !fragment.startsWith("HTTP/"))
+ return -1;
+
+ }
+
+ return bytes;
+}
+
+bool QHttpNetworkReplyPrivate::parseStatus(const QByteArray &status)
+{
+ // from RFC 2616:
+ // Status-Line = HTTP-Version SP Status-Code SP Reason-Phrase CRLF
+ // HTTP-Version = "HTTP" "/" 1*DIGIT "." 1*DIGIT
+ // that makes: 'HTTP/n.n xxx Message'
+ // byte count: 0123456789012
+
+ static const int minLength = 11;
+ static const int dotPos = 6;
+ static const int spacePos = 8;
+ static const char httpMagic[] = "HTTP/";
+
+ if (status.length() < minLength
+ || !status.startsWith(httpMagic)
+ || status.at(dotPos) != '.'
+ || status.at(spacePos) != ' ') {
+ // I don't know how to parse this status line
+ return false;
+ }
+
+ // optimize for the valid case: defer checking until the end
+ majorVersion = status.at(dotPos - 1) - '0';
+ minorVersion = status.at(dotPos + 1) - '0';
+
+ int i = spacePos;
+ int j = status.indexOf(' ', i + 1); // j == -1 || at(j) == ' ' so j+1 == 0 && j+1 <= length()
+ const QByteArray code = status.mid(i + 1, j - i - 1);
+
+ bool ok;
+ statusCode = code.toInt(&ok);
+ reasonPhrase = QString::fromLatin1(status.constData() + j + 1);
+
+ return ok && uint(majorVersion) <= 9 && uint(minorVersion) <= 9;
+}
+
+qint64 QHttpNetworkReplyPrivate::readHeader(QAbstractSocket *socket)
+{
+ qint64 bytes = 0;
+ char crlfcrlf[5];
+ crlfcrlf[4] = '\0';
+ char c = 0;
+ bool allHeaders = false;
+ while (!allHeaders && socket->bytesAvailable()) {
+ if (socket->peek(&c, 1) == 1 && c == '\n') {
+ // check for possible header endings. As per HTTP rfc,
+ // the header endings will be marked by CRLFCRLF. But
+ // we will allow CRLFLF, LFLF & CRLFCRLF
+ if (fragment.endsWith("\n\r") || fragment.endsWith('\n'))
+ allHeaders = true;
+ }
+ bytes += socket->read(&c, 1);
+ fragment.append(c);
+ }
+ // we received all headers now parse them
+ if (allHeaders) {
+ parseHeader(fragment);
+ state = ReadingDataState;
+ fragment.clear(); // next fragment
+ bodyLength = contentLength(); // cache the length
+ }
+ return bytes;
+}
+
+void QHttpNetworkReplyPrivate::parseHeader(const QByteArray &header)
+{
+ // see rfc2616, sec 4 for information about HTTP/1.1 headers.
+ // allows relaxed parsing here, accepts both CRLF & LF line endings
+ const QByteArrayMatcher lf("\n");
+ const QByteArrayMatcher colon(":");
+ int i = 0;
+ while (i < header.count()) {
+ int j = colon.indexIn(header, i); // field-name
+ if (j == -1)
+ break;
+ const QByteArray field = header.mid(i, j - i).trimmed();
+ j++;
+ // any number of LWS is allowed before and after the value
+ QByteArray value;
+ do {
+ i = lf.indexIn(header, j);
+ if (i == -1)
+ break;
+ if (!value.isEmpty())
+ value += ' ';
+ // check if we have CRLF or only LF
+ bool hasCR = (i && header[i-1] == '\r');
+ int length = i -(hasCR ? 1: 0) - j;
+ value += header.mid(j, length).trimmed();
+ j = ++i;
+ } while (i < header.count() && (header.at(i) == ' ' || header.at(i) == '\t'));
+ if (i == -1)
+ break; // something is wrong
+
+ fields.append(qMakePair(field, value));
+ }
+}
+
+bool QHttpNetworkReplyPrivate::isChunked()
+{
+ return headerField("transfer-encoding").toLower().contains("chunked");
+}
+
+bool QHttpNetworkReplyPrivate::connectionCloseEnabled()
+{
+ return (headerField("connection").toLower().contains("close") ||
+ headerField("proxy-connection").toLower().contains("close"));
+}
+
+qint64 QHttpNetworkReplyPrivate::readBody(QAbstractSocket *socket, QIODevice *out)
+{
+ qint64 bytes = 0;
+ if (isChunked()) {
+ bytes += transferChunked(socket, out); // chunked transfer encoding (rfc 2616, sec 3.6)
+ } else if (bodyLength > 0) { // we have a Content-Length
+ bytes += transferRaw(socket, out, bodyLength - contentRead);
+ if (contentRead + bytes == bodyLength)
+ state = AllDoneState;
+ } else {
+ bytes += transferRaw(socket, out, socket->bytesAvailable());
+ }
+ if (state == AllDoneState)
+ socket->readAll(); // Read the rest to clean (CRLF)
+ contentRead += bytes;
+ return bytes;
+}
+
+qint64 QHttpNetworkReplyPrivate::transferRaw(QIODevice *in, QIODevice *out, qint64 size)
+{
+ qint64 bytes = 0;
+ Q_ASSERT(in);
+ Q_ASSERT(out);
+
+ int toBeRead = qMin<qint64>(128*1024, qMin<qint64>(size, in->bytesAvailable()));
+ QByteArray raw(toBeRead, 0);
+ while (size > 0) {
+ qint64 read = in->read(raw.data(), raw.size());
+ if (read == 0)
+ return bytes;
+ // ### error checking here
+ qint64 written = out->write(raw.data(), read);
+ if (written == 0)
+ return bytes;
+ if (read != written)
+ qDebug() << "### read" << read << "written" << written;
+ bytes += read;
+ size -= read;
+ out->waitForBytesWritten(-1); // throttle
+ }
+ return bytes;
+
+}
+
+qint64 QHttpNetworkReplyPrivate::transferChunked(QIODevice *in, QIODevice *out)
+{
+ qint64 bytes = 0;
+ while (in->bytesAvailable()) { // while we can read from input
+ // if we are done with the current chunk, get the size of the new chunk
+ if (currentChunkRead >= currentChunkSize) {
+ currentChunkSize = 0;
+ currentChunkRead = 0;
+ if (bytes) {
+ char crlf[2];
+ bytes += in->read(crlf, 2); // read the "\r\n" after the chunk
+ }
+ bytes += getChunkSize(in, &currentChunkSize);
+ if (currentChunkSize == -1)
+ break;
+ }
+ // if the chunk size is 0, end of the stream
+ if (currentChunkSize == 0) {
+ state = AllDoneState;
+ break;
+ }
+ // otherwise, read data
+ qint64 readSize = qMin(in->bytesAvailable(), currentChunkSize - currentChunkRead);
+ QByteArray buffer(readSize, 0);
+ qint64 read = in->read(buffer.data(), readSize);
+ bytes += read;
+ currentChunkRead += read;
+ qint64 written = out->write(buffer);
+ Q_UNUSED(written); // Avoid compile warning when building release
+ Q_ASSERT(read == written);
+ // ### error checking here
+ out->waitForBytesWritten(-1);
+ }
+ return bytes;
+}
+
+qint64 QHttpNetworkReplyPrivate::getChunkSize(QIODevice *in, qint64 *chunkSize)
+{
+ qint64 bytes = 0;
+ char crlf[2];
+ *chunkSize = -1;
+ int bytesAvailable = in->bytesAvailable();
+ while (bytesAvailable > bytes) {
+ qint64 sniffedBytes = in->peek(crlf, 2);
+ int fragmentSize = fragment.size();
+ // check the next two bytes for a "\r\n", skip blank lines
+ if ((fragmentSize && sniffedBytes == 2 && crlf[0] == '\r' && crlf[1] == '\n')
+ ||(fragmentSize > 1 && fragment.endsWith('\r') && crlf[0] == '\n'))
+ {
+ bytes += in->read(crlf, 1); // read the \r or \n
+ if (crlf[0] == '\r')
+ bytes += in->read(crlf, 1); // read the \n
+ bool ok = false;
+ // ignore the chunk-extension
+ fragment = fragment.mid(0, fragment.indexOf(';')).trimmed();
+ *chunkSize = fragment.toLong(&ok, 16);
+ fragment.clear();
+ break; // size done
+ } else {
+ // read the fragment to the buffer
+ char c = 0;
+ bytes += in->read(&c, 1);
+ fragment.append(c);
+ }
+ }
+ return bytes;
+}
+
+// SSL support below
+#ifndef QT_NO_OPENSSL
+
+QSslConfiguration QHttpNetworkReply::sslConfiguration() const
+{
+ Q_D(const QHttpNetworkReply);
+ if (d->connection)
+ return d->connection->d_func()->sslConfiguration(*this);
+ return QSslConfiguration();
+}
+
+void QHttpNetworkReply::setSslConfiguration(const QSslConfiguration &config)
+{
+ Q_D(QHttpNetworkReply);
+ if (d->connection)
+ d->connection->setSslConfiguration(config);
+}
+
+void QHttpNetworkReply::ignoreSslErrors()
+{
+ Q_D(QHttpNetworkReply);
+ if (d->connection)
+ d->connection->ignoreSslErrors();
+}
+
+
+#endif //QT_NO_OPENSSL
+
+
+QT_END_NAMESPACE
+
+#endif // QT_NO_HTTP
diff --git a/src/network/access/qhttpnetworkreply_p.h b/src/network/access/qhttpnetworkreply_p.h
new file mode 100644
index 0000000..cb4d34f
--- /dev/null
+++ b/src/network/access/qhttpnetworkreply_p.h
@@ -0,0 +1,224 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the QtNetwork 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 either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** 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.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QHTTPNETWORKREPLY_H
+#define QHTTPNETWORKREPLY_H
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists for the convenience
+// of the Network Access API. This header file may change from
+// version to version without notice, or even be removed.
+//
+// We mean it.
+//
+#ifndef QT_NO_HTTP
+
+#ifndef QT_NO_COMPRESS
+# include <zlib.h>
+static const unsigned char gz_magic[2] = {0x1f, 0x8b}; // gzip magic header
+// gzip flag byte
+#define HEAD_CRC 0x02 // bit 1 set: header CRC present
+#define EXTRA_FIELD 0x04 // bit 2 set: extra field present
+#define ORIG_NAME 0x08 // bit 3 set: original file name present
+#define COMMENT 0x10 // bit 4 set: file comment present
+#define RESERVED 0xE0 // bits 5..7: reserved
+#define CHUNK 16384
+#endif
+
+#include <QtNetwork/qtcpsocket.h>
+// it's safe to include these even if SSL support is not enabled
+#include <QtNetwork/qsslsocket.h>
+#include <QtNetwork/qsslerror.h>
+
+#include <QtNetwork/qnetworkrequest.h>
+#include <QtNetwork/qnetworkreply.h>
+#include <qbuffer.h>
+
+#include <private/qobject_p.h>
+#include <private/qhttpnetworkheader_p.h>
+#include <private/qhttpnetworkrequest_p.h>
+#include <private/qauthenticator_p.h>
+
+QT_BEGIN_NAMESPACE
+
+class QHttpNetworkConnection;
+class QHttpNetworkRequest;
+class QHttpNetworkConnectionPrivate;
+class QHttpNetworkReplyPrivate;
+class Q_AUTOTEST_EXPORT QHttpNetworkReply : public QObject, public QHttpNetworkHeader
+{
+ Q_OBJECT
+public:
+
+ explicit QHttpNetworkReply(const QUrl &url = QUrl(), QObject *parent = 0);
+ virtual ~QHttpNetworkReply();
+
+ QUrl url() const;
+ void setUrl(const QUrl &url);
+
+ int majorVersion() const;
+ int minorVersion() const;
+
+ qint64 contentLength() const;
+ void setContentLength(qint64 length);
+
+ QList<QPair<QByteArray, QByteArray> > header() const;
+ QByteArray headerField(const QByteArray &name, const QByteArray &defaultValue = QByteArray()) const;
+ void setHeaderField(const QByteArray &name, const QByteArray &data);
+ void parseHeader(const QByteArray &header); // mainly for testing
+
+ QHttpNetworkRequest request() const;
+ void setRequest(const QHttpNetworkRequest &request);
+
+ int statusCode() const;
+ void setStatusCode(int code);
+
+ QString errorString() const;
+ void setErrorString(const QString &error);
+
+ QString reasonPhrase() const;
+
+ qint64 bytesAvailable() const;
+ QByteArray read(qint64 maxSize = -1);
+
+ bool isFinished() const;
+
+#ifndef QT_NO_OPENSSL
+ QSslConfiguration sslConfiguration() const;
+ void setSslConfiguration(const QSslConfiguration &config);
+ void ignoreSslErrors();
+
+Q_SIGNALS:
+ void sslErrors(const QList<QSslError> &errors);
+#endif
+
+Q_SIGNALS:
+ void readyRead();
+ void finished();
+ void finishedWithError(QNetworkReply::NetworkError errorCode, const QString &detail = QString());
+ void headerChanged();
+ void dataReadProgress(int done, int total);
+ void dataSendProgress(int done, int total);
+
+private:
+ Q_DECLARE_PRIVATE(QHttpNetworkReply)
+ friend class QHttpNetworkConnection;
+ friend class QHttpNetworkConnectionPrivate;
+};
+
+
+class QHttpNetworkReplyPrivate : public QObjectPrivate, public QHttpNetworkHeaderPrivate
+{
+public:
+ QHttpNetworkReplyPrivate(const QUrl &newUrl = QUrl());
+ ~QHttpNetworkReplyPrivate();
+ qint64 readStatus(QAbstractSocket *socket);
+ bool parseStatus(const QByteArray &status);
+ qint64 readHeader(QAbstractSocket *socket);
+ void parseHeader(const QByteArray &header);
+ qint64 readBody(QAbstractSocket *socket, QIODevice *out);
+ bool findChallenge(bool forProxy, QByteArray &challenge) const;
+ QAuthenticatorPrivate::Method authenticationMethod(bool isProxy) const;
+ void clear();
+
+ qint64 transferRaw(QIODevice *in, QIODevice *out, qint64 size);
+ qint64 transferChunked(QIODevice *in, QIODevice *out);
+ qint64 getChunkSize(QIODevice *in, qint64 *chunkSize);
+
+ qint64 bytesAvailable() const;
+ bool isChunked();
+ bool connectionCloseEnabled();
+ bool isGzipped();
+#ifndef QT_NO_COMPRESS
+ bool gzipCheckHeader(QByteArray &content, int &pos);
+ int gunzipBodyPartially(QByteArray &compressed, QByteArray &inflated);
+#endif
+ void removeAutoDecompressHeader();
+
+ enum ReplyState {
+ NothingDoneState,
+ ReadingStatusState,
+ ReadingHeaderState,
+ ReadingDataState,
+ AllDoneState
+ } state;
+
+ QHttpNetworkRequest request;
+ int statusCode;
+ int majorVersion;
+ int minorVersion;
+ QString errorString;
+ QString reasonPhrase;
+ qint64 bodyLength;
+ qint64 contentRead;
+ qint64 totalProgress;
+ QByteArray fragment;
+ qint64 currentChunkSize;
+ qint64 currentChunkRead;
+ QPointer<QHttpNetworkConnection> connection;
+ bool initInflate;
+ bool streamEnd;
+#ifndef QT_NO_COMPRESS
+ z_stream inflateStrm;
+#endif
+ bool autoDecompress;
+
+ QByteArray responseData; // uncompressed body
+ QByteArray compressedData; // compressed body (temporary)
+ QBuffer requestDataBuffer;
+ bool requestIsBuffering;
+ bool requestIsPrepared;
+};
+
+
+
+
+QT_END_NAMESPACE
+
+//Q_DECLARE_METATYPE(QHttpNetworkReply)
+
+#endif // QT_NO_HTTP
+
+
+#endif // QHTTPNETWORKREPLY_H
diff --git a/src/network/access/qhttpnetworkrequest.cpp b/src/network/access/qhttpnetworkrequest.cpp
new file mode 100644
index 0000000..420cb69
--- /dev/null
+++ b/src/network/access/qhttpnetworkrequest.cpp
@@ -0,0 +1,261 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the QtNetwork 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 either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** 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.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "qhttpnetworkrequest_p.h"
+
+QT_BEGIN_NAMESPACE
+
+QHttpNetworkRequestPrivate::QHttpNetworkRequestPrivate(QHttpNetworkRequest::Operation op,
+ QHttpNetworkRequest::Priority pri, const QUrl &newUrl)
+ : QHttpNetworkHeaderPrivate(newUrl), operation(op), priority(pri), data(0),
+ autoDecompress(false)
+{
+}
+
+QHttpNetworkRequestPrivate::QHttpNetworkRequestPrivate(const QHttpNetworkRequestPrivate &other)
+ : QHttpNetworkHeaderPrivate(other)
+{
+ operation = other.operation;
+ priority = other.priority;
+ data = other.data;
+ autoDecompress = other.autoDecompress;
+}
+
+QHttpNetworkRequestPrivate::~QHttpNetworkRequestPrivate()
+{
+}
+
+bool QHttpNetworkRequestPrivate::operator==(const QHttpNetworkRequestPrivate &other) const
+{
+ return QHttpNetworkHeaderPrivate::operator==(other)
+ && (operation == other.operation)
+ && (data == other.data);
+}
+
+QByteArray QHttpNetworkRequestPrivate::methodName() const
+{
+ QByteArray ba;
+ switch (operation) {
+ case QHttpNetworkRequest::Options:
+ ba += "OPTIONS";
+ break;
+ case QHttpNetworkRequest::Get:
+ ba += "GET";
+ break;
+ case QHttpNetworkRequest::Head:
+ ba += "HEAD";
+ break;
+ case QHttpNetworkRequest::Post:
+ ba += "POST";
+ break;
+ case QHttpNetworkRequest::Put:
+ ba += "PUT";
+ break;
+ case QHttpNetworkRequest::Delete:
+ ba += "DELETE";
+ break;
+ case QHttpNetworkRequest::Trace:
+ ba += "TRACE";
+ break;
+ case QHttpNetworkRequest::Connect:
+ ba += "CONNECT";
+ break;
+ default:
+ break;
+ }
+ return ba;
+}
+
+QByteArray QHttpNetworkRequestPrivate::uri(bool throughProxy) const
+{
+ QUrl::FormattingOptions format(QUrl::RemoveFragment);
+
+ // for POST, query data is send as content
+ if (operation == QHttpNetworkRequest::Post && !data)
+ format |= QUrl::RemoveQuery;
+ // for requests through proxy, the Request-URI contains full url
+ if (throughProxy)
+ format |= QUrl::RemoveUserInfo;
+ else
+ format |= QUrl::RemoveScheme | QUrl::RemoveAuthority;
+ QByteArray uri = url.toEncoded(format);
+ if (uri.isEmpty() || (throughProxy && url.path().isEmpty()))
+ uri += '/';
+ return uri;
+}
+
+QByteArray QHttpNetworkRequestPrivate::header(const QHttpNetworkRequest &request, bool throughProxy)
+{
+ QByteArray ba = request.d->methodName();
+ QByteArray uri = request.d->uri(throughProxy);
+ ba += " " + uri;
+
+ QString majorVersion = QString::number(request.majorVersion());
+ QString minorVersion = QString::number(request.minorVersion());
+ ba += " HTTP/" + majorVersion.toLatin1() + "." + minorVersion.toLatin1() + "\r\n";
+
+ QList<QPair<QByteArray, QByteArray> > fields = request.header();
+ QList<QPair<QByteArray, QByteArray> >::const_iterator it = fields.constBegin();
+ for (; it != fields.constEnd(); ++it)
+ ba += it->first + ": " + it->second + "\r\n";
+ if (request.d->operation == QHttpNetworkRequest::Post) {
+ // add content type, if not set in the request
+ if (request.headerField("content-type").isEmpty())
+ ba += "Content-Type: application/x-www-form-urlencoded\r\n";
+ if (!request.d->data && request.d->url.hasQuery()) {
+ QByteArray query = request.d->url.encodedQuery();
+ ba += "Content-Length: "+ QByteArray::number(query.size()) + "\r\n";
+ ba += "\r\n";
+ ba += query;
+ } else {
+ ba += "\r\n";
+ }
+ } else {
+ ba += "\r\n";
+ }
+ return ba;
+}
+
+
+// QHttpNetworkRequest
+
+QHttpNetworkRequest::QHttpNetworkRequest(const QUrl &url, Operation operation, Priority priority)
+ : d(new QHttpNetworkRequestPrivate(operation, priority, url))
+{
+}
+
+QHttpNetworkRequest::QHttpNetworkRequest(const QHttpNetworkRequest &other)
+ : QHttpNetworkHeader(other), d(other.d)
+{
+}
+
+QHttpNetworkRequest::~QHttpNetworkRequest()
+{
+}
+
+QUrl QHttpNetworkRequest::url() const
+{
+ return d->url;
+}
+void QHttpNetworkRequest::setUrl(const QUrl &url)
+{
+ d->url = url;
+}
+
+qint64 QHttpNetworkRequest::contentLength() const
+{
+ return d->contentLength();
+}
+
+void QHttpNetworkRequest::setContentLength(qint64 length)
+{
+ d->setContentLength(length);
+}
+
+QList<QPair<QByteArray, QByteArray> > QHttpNetworkRequest::header() const
+{
+ return d->fields;
+}
+
+QByteArray QHttpNetworkRequest::headerField(const QByteArray &name, const QByteArray &defaultValue) const
+{
+ return d->headerField(name, defaultValue);
+}
+
+void QHttpNetworkRequest::setHeaderField(const QByteArray &name, const QByteArray &data)
+{
+ d->setHeaderField(name, data);
+}
+
+QHttpNetworkRequest &QHttpNetworkRequest::operator=(const QHttpNetworkRequest &other)
+{
+ d = other.d;
+ return *this;
+}
+
+bool QHttpNetworkRequest::operator==(const QHttpNetworkRequest &other) const
+{
+ return d->operator==(*other.d);
+}
+
+QHttpNetworkRequest::Operation QHttpNetworkRequest::operation() const
+{
+ return d->operation;
+}
+
+void QHttpNetworkRequest::setOperation(Operation operation)
+{
+ d->operation = operation;
+}
+
+QHttpNetworkRequest::Priority QHttpNetworkRequest::priority() const
+{
+ return d->priority;
+}
+
+void QHttpNetworkRequest::setPriority(Priority priority)
+{
+ d->priority = priority;
+}
+
+QIODevice *QHttpNetworkRequest::data() const
+{
+ return d->data;
+}
+
+void QHttpNetworkRequest::setData(QIODevice *data)
+{
+ d->data = data;
+}
+
+int QHttpNetworkRequest::majorVersion() const
+{
+ return 1;
+}
+
+int QHttpNetworkRequest::minorVersion() const
+{
+ return 1;
+}
+
+
+QT_END_NAMESPACE
+
diff --git a/src/network/access/qhttpnetworkrequest_p.h b/src/network/access/qhttpnetworkrequest_p.h
new file mode 100644
index 0000000..d18e116
--- /dev/null
+++ b/src/network/access/qhttpnetworkrequest_p.h
@@ -0,0 +1,144 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the QtNetwork 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 either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** 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.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QHTTPNETWORKREQUEST_H
+#define QHTTPNETWORKREQUEST_H
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists for the convenience
+// of the Network Access API. This header file may change from
+// version to version without notice, or even be removed.
+//
+// We mean it.
+//
+#ifndef QT_NO_HTTP
+
+#include <private/qhttpnetworkheader_p.h>
+
+QT_BEGIN_NAMESPACE
+
+class QHttpNetworkRequestPrivate;
+class Q_AUTOTEST_EXPORT QHttpNetworkRequest: public QHttpNetworkHeader
+{
+public:
+ enum Operation {
+ Options,
+ Get,
+ Head,
+ Post,
+ Put,
+ Delete,
+ Trace,
+ Connect
+ };
+
+ enum Priority {
+ HighPriority,
+ NormalPriority,
+ LowPriority
+ };
+
+ QHttpNetworkRequest(const QUrl &url = QUrl(), Operation operation = Get, Priority priority = NormalPriority);
+ QHttpNetworkRequest(const QHttpNetworkRequest &other);
+ virtual ~QHttpNetworkRequest();
+ QHttpNetworkRequest &operator=(const QHttpNetworkRequest &other);
+ bool operator==(const QHttpNetworkRequest &other) const;
+
+ QUrl url() const;
+ void setUrl(const QUrl &url);
+
+ int majorVersion() const;
+ int minorVersion() const;
+
+ qint64 contentLength() const;
+ void setContentLength(qint64 length);
+
+ QList<QPair<QByteArray, QByteArray> > header() const;
+ QByteArray headerField(const QByteArray &name, const QByteArray &defaultValue = QByteArray()) const;
+ void setHeaderField(const QByteArray &name, const QByteArray &data);
+
+ Operation operation() const;
+ void setOperation(Operation operation);
+
+ Priority priority() const;
+ void setPriority(Priority priority);
+
+ QIODevice *data() const;
+ void setData(QIODevice *data);
+
+private:
+ QSharedDataPointer<QHttpNetworkRequestPrivate> d;
+ friend class QHttpNetworkRequestPrivate;
+ friend class QHttpNetworkConnectionPrivate;
+};
+
+
+class QHttpNetworkRequestPrivate : public QHttpNetworkHeaderPrivate
+{
+public:
+ QHttpNetworkRequestPrivate(QHttpNetworkRequest::Operation op,
+ QHttpNetworkRequest::Priority pri, const QUrl &newUrl = QUrl());
+ QHttpNetworkRequestPrivate(const QHttpNetworkRequestPrivate &other);
+ ~QHttpNetworkRequestPrivate();
+ bool operator==(const QHttpNetworkRequestPrivate &other) const;
+ QByteArray methodName() const;
+ QByteArray uri(bool throughProxy) const;
+
+ static QByteArray header(const QHttpNetworkRequest &request, bool throughProxy);
+
+ QHttpNetworkRequest::Operation operation;
+ QHttpNetworkRequest::Priority priority;
+ mutable QIODevice *data;
+ bool autoDecompress;
+};
+
+
+QT_END_NAMESPACE
+
+//Q_DECLARE_METATYPE(QHttpNetworkRequest)
+
+#endif // QT_NO_HTTP
+
+
+#endif // QHTTPNETWORKREQUEST_H
diff --git a/src/network/access/qnetworkaccesshttpbackend.cpp b/src/network/access/qnetworkaccesshttpbackend.cpp
index a52b5a0..f214699 100644
--- a/src/network/access/qnetworkaccesshttpbackend.cpp
+++ b/src/network/access/qnetworkaccesshttpbackend.cpp
@@ -1036,21 +1036,39 @@ QNetworkCacheMetaData QNetworkAccessHttpBackend::fetchCacheMetaData(const QNetwo
if (it != cacheHeaders.rawHeaders.constEnd())
metaData.setLastModified(QNetworkHeadersPrivate::fromHttpDate(it->second));
- bool canDiskCache = true; // Everything defaults to being cacheable on disk
-
- // 14.32
- // HTTP/1.1 caches SHOULD treat "Pragma: no-cache" as if the client
- // had sent "Cache-Control: no-cache".
- it = cacheHeaders.findRawHeader("pragma");
- if (it != cacheHeaders.rawHeaders.constEnd()
- && it->second == "no-cache")
- canDiskCache = false;
+ bool canDiskCache;
+ // only cache GET replies by default, all other replies (POST, PUT, DELETE)
+ // are not cacheable by default (according to RFC 2616 section 9)
+ if (httpReply->request().operation() == QHttpNetworkRequest::Get) {
+
+ canDiskCache = true;
+ // 14.32
+ // HTTP/1.1 caches SHOULD treat "Pragma: no-cache" as if the client
+ // had sent "Cache-Control: no-cache".
+ it = cacheHeaders.findRawHeader("pragma");
+ if (it != cacheHeaders.rawHeaders.constEnd()
+ && it->second == "no-cache")
+ canDiskCache = false;
+
+ // HTTP/1.1. Check the Cache-Control header
+ if (cacheControl.contains("no-cache"))
+ canDiskCache = false;
+ else if (cacheControl.contains("no-store"))
+ canDiskCache = false;
+
+ // responses to POST might be cacheable
+ } else if (httpReply->request().operation() == QHttpNetworkRequest::Post) {
- // HTTP/1.1. Check the Cache-Control header
- if (cacheControl.contains("no-cache"))
canDiskCache = false;
- else if (cacheControl.contains("no-store"))
+ // some pages contain "expires:" and "cache-control: no-cache" field,
+ // so we only might cache POST requests if we get "cache-control: max-age ..."
+ if (cacheControl.contains("max-age"))
+ canDiskCache = true;
+
+ // responses to PUT and DELETE are not cacheable
+ } else {
canDiskCache = false;
+ }
metaData.setSaveToDisk(canDiskCache);
int statusCode = httpReply->statusCode();
diff --git a/src/network/access/qnetworkaccessmanager.cpp b/src/network/access/qnetworkaccessmanager.cpp
index 11e1e46..bcbeef1 100644
--- a/src/network/access/qnetworkaccessmanager.cpp
+++ b/src/network/access/qnetworkaccessmanager.cpp
@@ -477,7 +477,8 @@ void QNetworkAccessManager::setCache(QAbstractNetworkCache *cache)
if (d->networkCache != cache) {
delete d->networkCache;
d->networkCache = cache;
- d->networkCache->setParent(this);
+ if (d->networkCache)
+ d->networkCache->setParent(this);
}
}
diff --git a/src/network/access/qnetworkcookie.cpp b/src/network/access/qnetworkcookie.cpp
index b82d8f9..67df526 100644
--- a/src/network/access/qnetworkcookie.cpp
+++ b/src/network/access/qnetworkcookie.cpp
@@ -569,7 +569,7 @@ static bool checkStaticArray(int &val, const QByteArray &dateString, int at, con
int j = 0;
int i = 0;
while (i <= size) {
- const char *str(array + i);
+ const char *str = array + i;
if (str[0] == dateString[at]
&& str[1] == dateString[at + 1]
&& str[2] == dateString[at + 2]) {
@@ -913,6 +913,17 @@ static QDateTime parseDateString(const QByteArray &dateString)
*/
QList<QNetworkCookie> QNetworkCookie::parseCookies(const QByteArray &cookieString)
{
+ // cookieString can be a number of set-cookie header strings joined together
+ // by \n, parse each line separately.
+ QList<QNetworkCookie> cookies;
+ QList<QByteArray> list = cookieString.split('\n');
+ for (int a = 0; a < list.size(); a++)
+ cookies += QNetworkCookiePrivate::parseSetCookieHeaderLine(list.at(a));
+ return cookies;
+}
+
+QList<QNetworkCookie> QNetworkCookiePrivate::parseSetCookieHeaderLine(const QByteArray &cookieString)
+{
// According to http://wp.netscape.com/newsref/std/cookie_spec.html,<
// the Set-Cookie response header is of the format:
//
@@ -930,12 +941,6 @@ QList<QNetworkCookie> QNetworkCookie::parseCookies(const QByteArray &cookieStrin
while (position < length) {
QNetworkCookie cookie;
- // When there are multiple SetCookie headers they are join with a new line
- // \n will always be the start of a new cookie
- int endOfSetCookie = cookieString.indexOf('\n', position);
- if (endOfSetCookie == -1)
- endOfSetCookie = length;
-
// The first part is always the "NAME=VALUE" part
QPair<QByteArray,QByteArray> field = nextField(cookieString, position);
if (field.first.isEmpty() || field.second.isNull())
@@ -946,7 +951,7 @@ QList<QNetworkCookie> QNetworkCookie::parseCookies(const QByteArray &cookieStrin
position = nextNonWhitespace(cookieString, position);
bool endOfCookie = false;
- while (!endOfCookie && position < endOfSetCookie)
+ while (!endOfCookie && position < length) {
switch (cookieString.at(position++)) {
case ',':
// end of the cookie
@@ -969,27 +974,24 @@ QList<QNetworkCookie> QNetworkCookie::parseCookies(const QByteArray &cookieStrin
position = end;
QDateTime dt = parseDateString(dateString.toLower());
if (!dt.isValid()) {
- cookie = QNetworkCookie();
- endOfCookie = true;
- continue;
+ return result;
}
cookie.setExpirationDate(dt);
} else if (field.first == "domain") {
QByteArray rawDomain = field.second;
- QString maybeLeadingDot;
if (rawDomain.startsWith('.')) {
- maybeLeadingDot = QLatin1Char('.');
rawDomain = rawDomain.mid(1);
}
-
QString normalizedDomain = QUrl::fromAce(QUrl::toAce(QString::fromUtf8(rawDomain)));
- cookie.setDomain(maybeLeadingDot + normalizedDomain);
+ // always add the dot, there are some servers that forget the
+ // leading dot. This is actually forbidden according to RFC 2109,
+ // but all browsers accept it anyway so we do that as well
+ cookie.setDomain(QLatin1Char('.') + normalizedDomain);
} else if (field.first == "max-age") {
bool ok = false;
int secs = field.second.toInt(&ok);
if (!ok)
- // invalid cookie string
- return QList<QNetworkCookie>();
+ return result;
cookie.setExpirationDate(now.addSecs(secs));
} else if (field.first == "path") {
QString path = QUrl::fromPercentEncoding(field.second);
@@ -1003,9 +1005,7 @@ QList<QNetworkCookie> QNetworkCookie::parseCookies(const QByteArray &cookieStrin
} else if (field.first == "version") {
if (field.second != "1") {
// oops, we don't know how to handle this cookie
- cookie = QNetworkCookie();
- endOfCookie = true;
- continue;
+ return result;
}
} else {
// got an unknown field in the cookie
@@ -1013,9 +1013,8 @@ QList<QNetworkCookie> QNetworkCookie::parseCookies(const QByteArray &cookieStrin
}
position = nextNonWhitespace(cookieString, position);
- if (position > endOfSetCookie)
- endOfCookie = true;
}
+ }
if (!cookie.name().isEmpty())
result += cookie;
@@ -1184,7 +1183,6 @@ bool QNetworkCookieJar::setCookiesFromUrl(const QList<QNetworkCookie> &cookieLis
cookie.expirationDate() < now;
// validate the cookie & set the defaults if unset
- // (RFC 2965: "The request-URI MUST path-match the Path attribute of the cookie.")
if (cookie.path().isEmpty())
cookie.setPath(defaultPath);
else if (!isParentPath(pathAndFileName, cookie.path()))
@@ -1198,6 +1196,13 @@ bool QNetworkCookieJar::setCookiesFromUrl(const QList<QNetworkCookie> &cookieLis
|| isParentDomain(defaultDomain, domain))) {
continue; // not accepted
}
+
+ // reject if domain is like ".com"
+ // (i.e., reject if domain does not contain embedded dots, see RFC 2109 section 4.3.2)
+ // this is just a rudimentary check and does not cover all cases
+ if (domain.lastIndexOf(QLatin1Char('.')) == 0)
+ continue; // not accepted
+
}
QList<QNetworkCookie>::Iterator it = d->allCookies.begin(),
diff --git a/src/network/access/qnetworkcookie_p.h b/src/network/access/qnetworkcookie_p.h
index 83ef14a..0c41322 100644
--- a/src/network/access/qnetworkcookie_p.h
+++ b/src/network/access/qnetworkcookie_p.h
@@ -61,6 +61,7 @@ class QNetworkCookiePrivate: public QSharedData
{
public:
inline QNetworkCookiePrivate() : secure(false), httpOnly(false) { }
+ static QList<QNetworkCookie> parseSetCookieHeaderLine(const QByteArray &cookieString);
QDateTime expirationDate;
QString domain;
diff --git a/src/network/access/qnetworkdiskcache.cpp b/src/network/access/qnetworkdiskcache.cpp
index fa0fccb..44a8298 100644
--- a/src/network/access/qnetworkdiskcache.cpp
+++ b/src/network/access/qnetworkdiskcache.cpp
@@ -191,7 +191,11 @@ QIODevice *QNetworkDiskCache::prepare(const QNetworkCacheMetaData &metaData)
} else {
QString templateName = d->tmpCacheFileName();
cacheItem->file = new QTemporaryFile(templateName, &cacheItem->data);
- cacheItem->file->open();
+ if (!cacheItem->file->open()) {
+ qWarning() << "QNetworkDiskCache::prepare() unable to open temporary file";
+ delete cacheItem;
+ return 0;
+ }
cacheItem->writeHeader(cacheItem->file);
device = cacheItem->file;
}
@@ -229,7 +233,7 @@ void QNetworkDiskCachePrivate::storeItem(QCacheItem *cacheItem)
if (QFile::exists(fileName)) {
if (!QFile::remove(fileName)) {
- qWarning() << "QNetworkDiskCache: could't remove the cache file " << fileName;
+ qWarning() << "QNetworkDiskCache: couldn't remove the cache file " << fileName;
return;
}
}
@@ -253,7 +257,8 @@ void QNetworkDiskCachePrivate::storeItem(QCacheItem *cacheItem)
// ### use atomic rename rather then remove & rename
if (cacheItem->file->rename(fileName))
currentCacheSize += cacheItem->file->size();
- cacheItem->file->setAutoRemove(true);
+ else
+ cacheItem->file->setAutoRemove(true);
}
if (cacheItem->metaData.url() == lastItem.metaData.url())
lastItem.reset();
@@ -489,21 +494,21 @@ qint64 QNetworkDiskCache::expire()
QDir::Filters filters = QDir::AllDirs | QDir:: Files | QDir::NoDotAndDotDot;
QDirIterator it(cacheDirectory(), filters, QDirIterator::Subdirectories);
- QMap<QDateTime, QString> cacheItems;
+ QMultiMap<QDateTime, QString> cacheItems;
qint64 totalSize = 0;
while (it.hasNext()) {
QString path = it.next();
QFileInfo info = it.fileInfo();
QString fileName = info.fileName();
if (fileName.endsWith(CACHE_POSTFIX) && fileName.startsWith(CACHE_PREFIX)) {
- cacheItems[info.created()] = path;
+ cacheItems.insert(info.created(), path);
totalSize += info.size();
}
}
int removedFiles = 0;
qint64 goal = (maximumCacheSize() * 9) / 10;
- QMap<QDateTime, QString>::const_iterator i = cacheItems.constBegin();
+ QMultiMap<QDateTime, QString>::const_iterator i = cacheItems.constBegin();
while (i != cacheItems.constEnd()) {
if (totalSize < goal)
break;
diff --git a/src/network/access/qnetworkreplyimpl.cpp b/src/network/access/qnetworkreplyimpl.cpp
index eaa572f..79c3d1a 100644
--- a/src/network/access/qnetworkreplyimpl.cpp
+++ b/src/network/access/qnetworkreplyimpl.cpp
@@ -131,27 +131,37 @@ void QNetworkReplyImplPrivate::_q_copyReadyRead()
if (!copyDevice && !q->isOpen())
return;
- qint64 bytesToRead = nextDownstreamBlockSize();
- if (bytesToRead == 0)
- // we'll be called again, eventually
- return;
+ forever {
+ qint64 bytesToRead = nextDownstreamBlockSize();
+ if (bytesToRead == 0)
+ // we'll be called again, eventually
+ break;
- bytesToRead = qBound<qint64>(1, bytesToRead, copyDevice->bytesAvailable());
- char *ptr = readBuffer.reserve(bytesToRead);
- qint64 bytesActuallyRead = copyDevice->read(ptr, bytesToRead);
- if (bytesActuallyRead == -1) {
- readBuffer.chop(bytesToRead);
- backendNotify(NotifyCopyFinished);
- return;
- }
+ bytesToRead = qBound<qint64>(1, bytesToRead, copyDevice->bytesAvailable());
+ char *ptr = readBuffer.reserve(bytesToRead);
+ qint64 bytesActuallyRead = copyDevice->read(ptr, bytesToRead);
+ if (bytesActuallyRead == -1) {
+ readBuffer.chop(bytesToRead);
+ backendNotify(NotifyCopyFinished);
+ return;
+ }
- if (bytesActuallyRead != bytesToRead)
- readBuffer.chop(bytesToRead - bytesActuallyRead);
+ if (bytesActuallyRead != bytesToRead)
+ readBuffer.chop(bytesToRead - bytesActuallyRead);
- if (!copyDevice->isSequential() && copyDevice->atEnd())
- backendNotify(NotifyCopyFinished);
+ if (!copyDevice->isSequential() && copyDevice->atEnd()) {
+ backendNotify(NotifyCopyFinished);
+ break;
+ }
+
+ bytesDownloaded += bytesActuallyRead;
+ }
+
+ if (bytesDownloaded == lastBytesDownloaded) {
+ // we didn't read anything
+ return;
+ }
- bytesDownloaded += bytesActuallyRead;
lastBytesDownloaded = bytesDownloaded;
QVariant totalSize = cookedHeaders.value(QNetworkRequest::ContentLengthHeader);
emit q->downloadProgress(bytesDownloaded,
diff --git a/src/network/kernel/qauthenticator.cpp b/src/network/kernel/qauthenticator.cpp
index 4f477bd..33795aa 100644
--- a/src/network/kernel/qauthenticator.cpp
+++ b/src/network/kernel/qauthenticator.cpp
@@ -52,7 +52,7 @@
QT_BEGIN_NAMESPACE
-#include <../3rdparty/des/des.cpp>
+#include "../../3rdparty/des/des.cpp"
static QByteArray qNtlmPhase1();
static QByteArray qNtlmPhase3(QAuthenticatorPrivate *ctx, const QByteArray& phase2data);
@@ -73,6 +73,15 @@ static QByteArray qNtlmPhase3(QAuthenticatorPrivate *ctx, const QByteArray& phas
authentication information to the socket when accessing services that
require authentication.
+ QAuthenticator supports the following authentication methods:
+ \list
+ \o Basic
+ \o NTLM version 1
+ \o Digest-MD5
+ \endlist
+
+ Note that, in particular, NTLM version 2 is not supported.
+
\sa QSslSocket
*/
diff --git a/src/network/kernel/qnetworkinterface.cpp b/src/network/kernel/qnetworkinterface.cpp
index 670745b..960999e 100644
--- a/src/network/kernel/qnetworkinterface.cpp
+++ b/src/network/kernel/qnetworkinterface.cpp
@@ -397,7 +397,7 @@ QNetworkInterface::~QNetworkInterface()
}
/*!
- Creates a copy of the the QNetworkInterface object contained in \a
+ Creates a copy of the QNetworkInterface object contained in \a
other.
*/
QNetworkInterface::QNetworkInterface(const QNetworkInterface &other)
diff --git a/src/network/kernel/qnetworkproxy.cpp b/src/network/kernel/qnetworkproxy.cpp
index f4ece97..62bdfc7 100644
--- a/src/network/kernel/qnetworkproxy.cpp
+++ b/src/network/kernel/qnetworkproxy.cpp
@@ -86,10 +86,11 @@
The SOCKS5 support in Qt 4 is based on \l{RFC 1928} and \l{RFC 1929}.
The supported authentication methods are no authentication and
username/password authentication. Both IPv4 and IPv6 are
- supported, but domain name resolution via the SOCKS server is not
- supported; i.e. all domain names are resolved locally. There are
- several things to remember when using SOCKS5 with QUdpSocket and
- QTcpServer:
+ supported. Domain names are resolved through the SOCKS5 server if
+ the QNetworkProxy::HostNameLookupCapability is enabled, otherwise
+ they are resolved locally and the IP address is sent to the
+ server. There are several things to remember when using SOCKS5
+ with QUdpSocket and QTcpServer:
With QUdpSocket, a call to \l {QUdpSocket::bind()}{bind()} may fail
with a timeout error. If a port number other than 0 is passed to
@@ -365,7 +366,8 @@ static QNetworkProxy::Capabilities defaultCapabilitiesForType(QNetworkProxy::Pro
int(QNetworkProxy::HostNameLookupCapability)),
};
- Q_ASSERT(int(type) >= 0 && int(type) <= int(QNetworkProxy::FtpCachingProxy));
+ if (int(type) < 0 && int(type) > int(QNetworkProxy::FtpCachingProxy))
+ type = QNetworkProxy::DefaultProxy;
return QNetworkProxy::Capabilities(defaults[int(type)]);
}
@@ -378,6 +380,7 @@ public:
QNetworkProxy::Capabilities capabilities;
quint16 port;
QNetworkProxy::ProxyType type;
+ bool capabilitiesSet;
inline QNetworkProxyPrivate(QNetworkProxy::ProxyType t = QNetworkProxy::DefaultProxy,
const QString &h = QString(), quint16 p = 0,
@@ -387,7 +390,8 @@ public:
password(pw),
capabilities(defaultCapabilitiesForType(t)),
port(p),
- type(t)
+ type(t),
+ capabilitiesSet(false)
{ }
inline bool operator==(const QNetworkProxyPrivate &other) const
@@ -490,13 +494,16 @@ QNetworkProxy &QNetworkProxy::operator=(const QNetworkProxy &other)
Sets the proxy type for this instance to be \a type.
Note that changing the type of a proxy does not change
- the set of capabilities this QNetworkProxy object holds.
+ the set of capabilities this QNetworkProxy object holds if any
+ capabilities have been set with setCapabilities().
\sa type(), setCapabilities()
*/
void QNetworkProxy::setType(QNetworkProxy::ProxyType type)
{
d->type = type;
+ if (!d->capabilitiesSet)
+ d->capabilities = defaultCapabilitiesForType(type);
}
/*!
@@ -519,6 +526,7 @@ QNetworkProxy::ProxyType QNetworkProxy::type() const
void QNetworkProxy::setCapabilities(Capabilities capabilities)
{
d->capabilities = capabilities;
+ d->capabilitiesSet = true;
}
/*!
diff --git a/src/network/socket/qabstractsocket.cpp b/src/network/socket/qabstractsocket.cpp
index 910e30a..336a7e7 100644
--- a/src/network/socket/qabstractsocket.cpp
+++ b/src/network/socket/qabstractsocket.cpp
@@ -1127,7 +1127,7 @@ bool QAbstractSocketPrivate::readFromSocket()
/*! \internal
- Sets up the the internal state after the connection has succeeded.
+ Sets up the internal state after the connection has succeeded.
*/
void QAbstractSocketPrivate::fetchConnectionParameters()
{
@@ -1263,7 +1263,7 @@ void QAbstractSocket::connectToHostImplementation(const QString &hostName, quint
(int) openMode);
#endif
- if (d->state == ConnectedState || d->state == ConnectingState) {
+ if (d->state == ConnectedState || d->state == ConnectingState || d->state == ClosingState) {
qWarning("QAbstractSocket::connectToHost() called when already connecting/connected to \"%s\"", qPrintable(hostName));
return;
}
@@ -2279,7 +2279,7 @@ void QAbstractSocket::disconnectFromHostImplementation()
emit delayedCloseFinished(); // compat signal
#endif
// only emit disconnected if we were connected before
- if (previousState == ConnectedState || ClosingState)
+ if (previousState == ConnectedState || previousState == ClosingState)
emit disconnected();
d->localPort = 0;
diff --git a/src/network/socket/qlocalserver_unix.cpp b/src/network/socket/qlocalserver_unix.cpp
index 065a9de..e7d2252 100644
--- a/src/network/socket/qlocalserver_unix.cpp
+++ b/src/network/socket/qlocalserver_unix.cpp
@@ -148,9 +148,11 @@ void QLocalServerPrivate::closeServer()
QT_CLOSE(listenSocket);
listenSocket = -1;
- if (socketNotifier)
+ if (socketNotifier) {
+ socketNotifier->setEnabled(false); // Otherwise, closed socket is checked before deleter runs
socketNotifier->deleteLater();
- socketNotifier = 0;
+ socketNotifier = 0;
+ }
if (!fullServerName.isEmpty())
QFile::remove(fullServerName);
diff --git a/src/network/socket/qlocalsocket_p.h b/src/network/socket/qlocalsocket_p.h
index dd48d0a..781d3da 100644
--- a/src/network/socket/qlocalsocket_p.h
+++ b/src/network/socket/qlocalsocket_p.h
@@ -192,6 +192,7 @@ public:
void _q_error(QAbstractSocket::SocketError newError);
void _q_connectToSocket();
void _q_abortConnectionAttempt();
+ void cancelDelayedConnect();
QSocketNotifier *delayConnect;
QTimer *connectTimer;
int connectingSocket;
diff --git a/src/network/socket/qlocalsocket_unix.cpp b/src/network/socket/qlocalsocket_unix.cpp
index a375e9b..38643f1 100644
--- a/src/network/socket/qlocalsocket_unix.cpp
+++ b/src/network/socket/qlocalsocket_unix.cpp
@@ -322,11 +322,8 @@ void QLocalSocketPrivate::_q_connectToSocket()
}
// connected!
- if (delayConnect) {
- delayConnect->setEnabled(false);
- delete delayConnect;
- delayConnect = 0;
- }
+ cancelDelayedConnect();
+
serverName = connectingName;
fullServerName = connectingPathName;
if (unixSocket.setSocketDescriptor(connectingSocket,
@@ -373,6 +370,18 @@ void QLocalSocketPrivate::_q_abortConnectionAttempt()
q->close();
}
+void QLocalSocketPrivate::cancelDelayedConnect()
+{
+ if (delayConnect) {
+ delayConnect->setEnabled(false);
+ delete delayConnect;
+ delayConnect = 0;
+ connectTimer->stop();
+ delete connectTimer;
+ connectTimer = 0;
+ }
+}
+
quintptr QLocalSocket::socketDescriptor() const
{
Q_D(const QLocalSocket);
@@ -419,14 +428,7 @@ void QLocalSocket::close()
{
Q_D(QLocalSocket);
d->unixSocket.close();
- if (d->delayConnect) {
- d->delayConnect->setEnabled(false);
- delete d->delayConnect;
- d->delayConnect = 0;
- d->connectTimer->stop();
- delete d->connectTimer;
- d->connectTimer = 0;
- }
+ d->cancelDelayedConnect();
if (d->connectingSocket != -1)
::close(d->connectingSocket);
d->connectingSocket = -1;
diff --git a/src/network/socket/qlocalsocket_win.cpp b/src/network/socket/qlocalsocket_win.cpp
index e759d0b..39c9284 100644
--- a/src/network/socket/qlocalsocket_win.cpp
+++ b/src/network/socket/qlocalsocket_win.cpp
@@ -298,7 +298,7 @@ qint64 QLocalSocketPrivate::bytesAvailable()
if (PeekNamedPipe(handle, NULL, 0, NULL, &bytes, NULL)) {
return bytes;
} else {
- if (ERROR_BROKEN_PIPE == GetLastError() && !pipeClosed) {
+ if (!pipeClosed) {
pipeClosed = true;
QTimer::singleShot(0, q, SLOT(_q_pipeClosed()));
}
diff --git a/src/network/socket/qnativesocketengine_unix.cpp b/src/network/socket/qnativesocketengine_unix.cpp
index 73f6f84..cc372a6 100644
--- a/src/network/socket/qnativesocketengine_unix.cpp
+++ b/src/network/socket/qnativesocketengine_unix.cpp
@@ -506,26 +506,11 @@ int QNativeSocketEnginePrivate::nativeAccept()
qint64 QNativeSocketEnginePrivate::nativeBytesAvailable() const
{
- /*
- Apparently, there is not consistency among different operating
- systems on how to use FIONREAD.
-
- FreeBSD, Linux and Solaris all expect the 3rd argument to
- ioctl() to be an int, which is normally 32-bit even on 64-bit
- machines.
-
- IRIX, on the other hand, expects a size_t, which is 64-bit on
- 64-bit machines.
-
- So, the solution is to use size_t initialized to zero to make
- sure all bits are set to zero, preventing underflow with the
- FreeBSD/Linux/Solaris ioctls.
- */
- size_t nbytes = 0;
+ int nbytes = 0;
// gives shorter than true amounts on Unix domain sockets.
qint64 available = 0;
if (::ioctl(socketDescriptor, FIONREAD, (char *) &nbytes) >= 0)
- available = (qint64) *((int *) &nbytes);
+ available = (qint64) nbytes;
#if defined (QNATIVESOCKETENGINE_DEBUG)
qDebug("QNativeSocketEnginePrivate::nativeBytesAvailable() == %lli", available);
diff --git a/src/network/ssl/qsslcipher.cpp b/src/network/ssl/qsslcipher.cpp
index 505c662..7fec2df 100644
--- a/src/network/ssl/qsslcipher.cpp
+++ b/src/network/ssl/qsslcipher.cpp
@@ -64,9 +64,9 @@
#ifndef QT_NO_DEBUG_STREAM
#include <QtCore/qdebug.h>
+#endif
QT_BEGIN_NAMESPACE
-#endif
/*!
Constructs an empty QSslCipher object.
diff --git a/src/network/ssl/qsslsocket_openssl_symbols.cpp b/src/network/ssl/qsslsocket_openssl_symbols.cpp
index e09e764..42c09f5 100644
--- a/src/network/ssl/qsslsocket_openssl_symbols.cpp
+++ b/src/network/ssl/qsslsocket_openssl_symbols.cpp
@@ -364,11 +364,14 @@ static QPair<QLibrary*, QLibrary*> loadOpenSsl()
// DT_RPATH tags on our library header as well as other system-specific search
// paths. See the man page for dlopen(3) on your system for more information.
+#ifdef Q_OS_OPENBSD
+ libcrypto->setLoadHints(QLibrary::ExportExternalSymbolsHint);
+#endif
#ifdef SHLIB_VERSION_NUMBER
// first attempt: the canonical name is libssl.so.<SHLIB_VERSION_NUMBER>
libssl->setFileNameAndVersion(QLatin1String("ssl"), QLatin1String(SHLIB_VERSION_NUMBER));
libcrypto->setFileNameAndVersion(QLatin1String("crypto"), QLatin1String(SHLIB_VERSION_NUMBER));
- if (libssl->load() && libcrypto->load()) {
+ if (libcrypto->load() && libssl->load()) {
// libssl.so.<SHLIB_VERSION_NUMBER> and libcrypto.so.<SHLIB_VERSION_NUMBER> found
return pair;
} else {
@@ -380,7 +383,7 @@ static QPair<QLibrary*, QLibrary*> loadOpenSsl()
// second attempt: find the development files libssl.so and libcrypto.so
libssl->setFileNameAndVersion(QLatin1String("ssl"), -1);
libcrypto->setFileNameAndVersion(QLatin1String("crypto"), -1);
- if (libssl->load() && libcrypto->load()) {
+ if (libcrypto->load() && libssl->load()) {
// libssl.so.0 and libcrypto.so.0 found
return pair;
} else {
@@ -395,7 +398,7 @@ static QPair<QLibrary*, QLibrary*> loadOpenSsl()
crypto.replace(QLatin1String("ssl"), QLatin1String("crypto"));
libssl->setFileNameAndVersion(ssl, -1);
libcrypto->setFileNameAndVersion(crypto, -1);
- if (libssl->load() && libcrypto->load()) {
+ if (libcrypto->load() && libssl->load()) {
// libssl.so.0 and libcrypto.so.0 found
return pair;
} else {
diff --git a/src/opengl/opengl.pro b/src/opengl/opengl.pro
index 48d7caf..78aaddb 100644
--- a/src/opengl/opengl.pro
+++ b/src/opengl/opengl.pro
@@ -25,18 +25,16 @@ HEADERS += qgl.h \
qglcolormap.h \
qglpixelbuffer.h \
qglframebufferobject.h \
- qglpixmapfilter_p.h
SOURCES += qgl.cpp \
qglcolormap.cpp \
qglpixelbuffer.cpp \
qglframebufferobject.cpp \
qglextensions.cpp \
- qglpixmapfilter.cpp
!contains(QT_CONFIG, opengles2) {
- HEADERS += qpaintengine_opengl_p.h
- SOURCES += qpaintengine_opengl.cpp
+ HEADERS += qpaintengine_opengl_p.h qglpixmapfilter_p.h
+ SOURCES += qpaintengine_opengl.cpp qglpixmapfilter.cpp
}
contains(QT_CONFIG, opengles2) {
@@ -130,6 +128,10 @@ wince*: {
contains(QT_CONFIG,opengles1cl) {
QMAKE_LIBS += "libGLES_CL.lib"
}
+ contains(QT_CONFIG,opengles2) {
+ QMAKE_LIBS += "libGLESv2.lib"
+ }
+
} else {
QMAKE_LIBS += $$QMAKE_LIBS_OPENGL
}
diff --git a/src/opengl/qgl.cpp b/src/opengl/qgl.cpp
index 2d90342..8f963f8 100644
--- a/src/opengl/qgl.cpp
+++ b/src/opengl/qgl.cpp
@@ -1327,13 +1327,21 @@ QImage qt_gl_read_framebuffer(const QSize &size, bool alpha_format, bool include
// This is an old legacy fix for PowerPC based Macs, which
// we shouldn't remove
while (p < end) {
- *p = 0xFF000000 | (*p>>8);
+ *p = 0xff000000 | (*p>>8);
++p;
}
}
} else {
// OpenGL gives ABGR (i.e. RGBA backwards); Qt wants ARGB
- img = img.rgbSwapped();
+ for (int y = 0; y < h; y++) {
+ uint *q = (uint*)img.scanLine(y);
+ for (int x=0; x < w; ++x) {
+ const uint pixel = *q;
+ *q = ((pixel << 16) & 0xff0000) | ((pixel >> 16) & 0xff) | (pixel & 0xff00ff00);
+ q++;
+ }
+ }
+
}
return img.mirrored();
}
@@ -2398,6 +2406,10 @@ bool QGLContext::create(const QGLContext* shareContext)
return false;
reset();
d->valid = chooseContext(shareContext);
+ if (d->valid && d->paintDevice->devType() == QInternal::Widget) {
+ QWidgetPrivate *wd = qt_widget_private(static_cast<QWidget *>(d->paintDevice));
+ wd->usesDoubleBufferedGLContext = d->glFormat.doubleBuffer();
+ }
if (d->sharing) // ok, we managed to share
qgl_share_reg()->addShare(this, shareContext);
return d->valid;
@@ -2576,7 +2588,7 @@ const QGLContext* QGLContext::currentContext()
\i paintGL() - Renders the OpenGL scene. Gets called whenever the widget
needs to be updated.
\i resizeGL() - Sets up the OpenGL viewport, projection, etc. Gets
- called whenever the the widget has been resized (and also when it
+ called whenever the widget has been resized (and also when it
is shown for the first time because all newly created widgets get a
resize event automatically).
\i initializeGL() - Sets up the OpenGL rendering context, defines display
@@ -2615,6 +2627,10 @@ const QGLContext* QGLContext::currentContext()
QGLWidget. This will side-step the issue altogether, and is what
we recommend for users that need this kind of functionality.
+ On Mac OS X, when Qt is built with Cocoa support, a QGLWidget
+ can't have any sibling widgets placed ontop of itself. This is due
+ to limitations in the Cocoa API and is not supported by Apple.
+
\section1 Overlays
The QGLWidget creates a GL overlay context in addition to the
@@ -3230,6 +3246,10 @@ bool QGLWidget::event(QEvent *e)
update();
}
return true;
+# if defined(QT_MAC_USE_COCOA)
+ } else if (e->type() == QEvent::MacGLClearDrawable) {
+ d->glcx->d_ptr->clearDrawable();
+# endif
}
#endif
diff --git a/src/opengl/qgl_cl_p.h b/src/opengl/qgl_cl_p.h
index e514ff5..c05a7d7 100644
--- a/src/opengl/qgl_cl_p.h
+++ b/src/opengl/qgl_cl_p.h
@@ -57,7 +57,7 @@ QT_BEGIN_NAMESPACE
inline void glTexParameterf (GLenum target, GLenum pname, GLfloat param)
{
- glTexParameterx(target, pname, param);
+ glTexParameterx(target, pname, FLOAT2X(param));
}
inline void glClearColor (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)
{
diff --git a/src/opengl/qgl_mac.mm b/src/opengl/qgl_mac.mm
index 314c659..1319396 100644
--- a/src/opengl/qgl_mac.mm
+++ b/src/opengl/qgl_mac.mm
@@ -87,29 +87,6 @@ QT_FORWARD_DECLARE_CLASS(QWidget)
QT_FORWARD_DECLARE_CLASS(QWidgetPrivate)
QT_FORWARD_DECLARE_CLASS(QGLWidgetPrivate)
-@interface QT_MANGLE_NAMESPACE(QCocoaOpenGLView) : QT_MANGLE_NAMESPACE(QCocoaView)
-{
-}
-- (id)initWithQWidget:(QWidget *)widget widgetPrivate:(QWidgetPrivate *)widgetprivate;
-@end
-
-@implementation QT_MANGLE_NAMESPACE(QCocoaOpenGLView)
-- (id)initWithQWidget:(QWidget *)widget widgetPrivate:(QWidgetPrivate *)widgetprivate
-{
- self = [super initWithQWidget:widget widgetPrivate:widgetprivate];
- [[NSNotificationCenter defaultCenter] addObserver:self
- selector:@selector(_surfaceNeedsUpdate:)
- name:NSViewGlobalFrameDidChangeNotification
- object:self];
- return self;
-}
-
-- (void) _surfaceNeedsUpdate:(NSNotification*)notification
-{
- Q_UNUSED(notification);
- static_cast<QGLWidgetPrivate *>(qwidgetprivate)->glcx->updatePaintDevice();
-}
-@end
QT_BEGIN_NAMESPACE
void *qt_current_nsopengl_context()
@@ -435,6 +412,11 @@ void *QGLContextPrivate::tryFormat(const QGLFormat &format)
#endif
}
+void QGLContextPrivate::clearDrawable()
+{
+ [static_cast<NSOpenGLContext *>(cx) clearDrawable];
+}
+
/*!
\bold{Mac OS X only:} This virtual function tries to find a visual that
matches the format, reducing the demands if the original request
@@ -647,7 +629,7 @@ void QGLContext::updatePaintDevice()
// ideally we would use QWidget::isVisible(), but we get "invalid drawable" errors
if (![(NSWindow *)qt_mac_window_for(w) isVisible])
return;
- if ([static_cast<NSOpenGLContext *>(d->cx) view] != view)
+ if ([static_cast<NSOpenGLContext *>(d->cx) view] != view && ![view isHidden])
[static_cast<NSOpenGLContext *>(d->cx) setView:view];
} else if (d->paintDevice->devType() == QInternal::Pixmap) {
const QPixmap *pm = static_cast<const QPixmap *>(d->paintDevice);
diff --git a/src/opengl/qgl_p.h b/src/opengl/qgl_p.h
index b8bbeaf..16aaa96 100644
--- a/src/opengl/qgl_p.h
+++ b/src/opengl/qgl_p.h
@@ -234,6 +234,7 @@ public:
#if defined(Q_WS_MAC)
bool update;
void *tryFormat(const QGLFormat &format);
+ void clearDrawable();
#endif
QGLFormat glFormat;
QGLFormat reqFormat;
diff --git a/src/opengl/qglframebufferobject.cpp b/src/opengl/qglframebufferobject.cpp
index fb22272..c362b7e 100644
--- a/src/opengl/qglframebufferobject.cpp
+++ b/src/opengl/qglframebufferobject.cpp
@@ -48,6 +48,10 @@
#include <qlibrary.h>
#include <qimage.h>
+#ifdef QT_OPENGL_ES_1_CL
+#include "qgl_cl_p.h"
+#endif
+
QT_BEGIN_NAMESPACE
extern QImage qt_gl_read_framebuffer(const QSize&, bool, bool);
diff --git a/src/opengl/qglpixelbuffer_egl.cpp b/src/opengl/qglpixelbuffer_egl.cpp
index 964efa2..5390fd1 100644
--- a/src/opengl/qglpixelbuffer_egl.cpp
+++ b/src/opengl/qglpixelbuffer_egl.cpp
@@ -47,6 +47,10 @@
#include <qimage.h>
#include <private/qgl_p.h>
+#ifdef QT_OPENGL_ES_1_CL
+#include "qgl_cl_p.h"
+#endif
+
QT_BEGIN_NAMESPACE
#ifdef EGL_BIND_TO_TEXTURE_RGBA
@@ -188,8 +192,8 @@ GLuint QGLPixelBuffer::generateDynamicTexture() const
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, d->req_size.width(), d->req_size.height(), 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
else
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, d->req_size.width(), d->req_size.height(), 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+ glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+ glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
return texture;
#else
return 0;
diff --git a/src/opengl/qglpixelbuffer_mac.mm b/src/opengl/qglpixelbuffer_mac.mm
index 14941ab..e95e36b 100644
--- a/src/opengl/qglpixelbuffer_mac.mm
+++ b/src/opengl/qglpixelbuffer_mac.mm
@@ -299,19 +299,14 @@ void QGLPixelBuffer::releaseFromDynamicTexture()
GLuint QGLPixelBuffer::generateDynamicTexture() const
{
- Q_D(const QGLPixelBuffer);
-
#ifdef QT_MAC_USE_COCOA
+ Q_D(const QGLPixelBuffer);
NSOpenGLContext *oldContext = [NSOpenGLContext currentContext];
if (d->share_ctx != oldContext)
[static_cast<NSOpenGLContext *>(d->share_ctx) makeCurrentContext];
GLuint texture;
glGenTextures(1, &texture);
glBindTexture(GL_TEXTURE_2D, texture);
- [static_cast<NSOpenGLContext *>(d->share_ctx)
- setTextureImageToPixelBuffer:static_cast<NSOpenGLPixelBuffer *>(d->pbuf)
- colorBuffer:GL_FRONT];
- glBindTexture(GL_TEXTURE_2D, texture); // updates texture target
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
@@ -322,8 +317,6 @@ GLuint QGLPixelBuffer::generateDynamicTexture() const
GLuint texture;
glGenTextures(1, &texture);
glBindTexture(GL_TEXTURE_2D, texture);
- aglTexImagePBuffer(d->share_ctx, d->pbuf, GL_FRONT);
- glBindTexture(GL_TEXTURE_2D, texture); // updates texture target
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
return texture;
diff --git a/src/opengl/qglpixelbuffer_win.cpp b/src/opengl/qglpixelbuffer_win.cpp
index e81a576..e3228cc 100644
--- a/src/opengl/qglpixelbuffer_win.cpp
+++ b/src/opengl/qglpixelbuffer_win.cpp
@@ -43,7 +43,7 @@
#include <qgl.h>
#include <private/qgl_p.h>
-#include <qglpixelbuffer_p.h>
+#include <private/qglpixelbuffer_p.h>
#include <qimage.h>
#include <qdebug.h>
diff --git a/src/opengl/qpaintengine_opengl.cpp b/src/opengl/qpaintengine_opengl.cpp
index 976a021..5a212f5 100644
--- a/src/opengl/qpaintengine_opengl.cpp
+++ b/src/opengl/qpaintengine_opengl.cpp
@@ -1983,7 +1983,7 @@ public:
void QOpenGLTrapezoidToArrayTessellator::addTrap(const Trapezoid &trap)
{
// On OpenGL ES we convert the trap to 2 triangles
-#ifndef QT_OPENGL_ES_1
+#ifndef QT_OPENGL_ES
if (size > allocated - 8) {
#else
if (size > allocated - 12) {
@@ -1994,31 +1994,31 @@ void QOpenGLTrapezoidToArrayTessellator::addTrap(const Trapezoid &trap)
QGLTrapezoid t = toGLTrapezoid(trap);
-#ifndef QT_OPENGL_ES_1
- vertices[size++] = t.topLeftX;
- vertices[size++] = t.top;
- vertices[size++] = t.topRightX;
- vertices[size++] = t.top;
- vertices[size++] = t.bottomRightX;
- vertices[size++] = t.bottom;
- vertices[size++] = t.bottomLeftX;
- vertices[size++] = t.bottom;
+#ifndef QT_OPENGL_ES
+ vertices[size++] = f2vt(t.topLeftX);
+ vertices[size++] = f2vt(t.top);
+ vertices[size++] = f2vt(t.topRightX);
+ vertices[size++] = f2vt(t.top);
+ vertices[size++] = f2vt(t.bottomRightX);
+ vertices[size++] = f2vt(t.bottom);
+ vertices[size++] = f2vt(t.bottomLeftX);
+ vertices[size++] = f2vt(t.bottom);
#else
// First triangle
- vertices[size++] = t.topLeftX;
- vertices[size++] = t.top;
- vertices[size++] = t.topRightX;
- vertices[size++] = t.top;
- vertices[size++] = t.bottomRightX;
- vertices[size++] = t.bottom;
+ vertices[size++] = f2vt(t.topLeftX);
+ vertices[size++] = f2vt(t.top);
+ vertices[size++] = f2vt(t.topRightX);
+ vertices[size++] = f2vt(t.top);
+ vertices[size++] = f2vt(t.bottomRightX);
+ vertices[size++] = f2vt(t.bottom);
// Second triangle
- vertices[size++] = t.bottomLeftX;
- vertices[size++] = t.bottom;
- vertices[size++] = t.topLeftX;
- vertices[size++] = t.top;
- vertices[size++] = t.bottomRightX;
- vertices[size++] = t.bottom;
+ vertices[size++] = f2vt(t.bottomLeftX);
+ vertices[size++] = f2vt(t.bottom);
+ vertices[size++] = f2vt(t.topLeftX);
+ vertices[size++] = f2vt(t.top);
+ vertices[size++] = f2vt(t.bottomRightX);
+ vertices[size++] = f2vt(t.bottom);
#endif
}
@@ -3716,8 +3716,14 @@ void QOpenGLPaintEngine::drawRects(const QRectF *rects, int rectCount)
d->disableClipping();
GLuint program = qt_gl_program_cache()->getProgram(d->drawable.context(),
FRAGMENT_PROGRAM_MASK_TRAPEZOID_AA, 0, true);
- QGLRectMaskGenerator maskGenerator(path, d->matrix, d->offscreen, program);
- d->addItem(qt_mask_texture_cache()->getMask(maskGenerator, d));
+
+ if (d->matrix.type() >= QTransform::TxProject) {
+ QGLPathMaskGenerator maskGenerator(path, d->matrix, d->offscreen, program);
+ d->addItem(qt_mask_texture_cache()->getMask(maskGenerator, d));
+ } else {
+ QGLRectMaskGenerator maskGenerator(path, d->matrix, d->offscreen, program);
+ d->addItem(qt_mask_texture_cache()->getMask(maskGenerator, d));
+ }
d->enableClipping();
}
@@ -5062,9 +5068,8 @@ void QOpenGLPaintEngine::drawTextItem(const QPointF &p, const QTextItem &textIte
// fall back to drawing a polygon if the scale factor is large, or
// we use a gradient pen
- if (ti.fontEngine->fontDef.pixelSize >= 64
- || (d->matrix.det() > 1) || (d->pen_brush_style >= Qt::LinearGradientPattern
- && d->pen_brush_style <= Qt::ConicalGradientPattern)) {
+ if ((d->matrix.det() > 1) || (d->pen_brush_style >= Qt::LinearGradientPattern
+ && d->pen_brush_style <= Qt::ConicalGradientPattern)) {
QPaintEngine::drawTextItem(p, textItem);
return;
}
diff --git a/src/opengl/qwindowsurface_gl.cpp b/src/opengl/qwindowsurface_gl.cpp
index 3dd3064..b41adf9 100644
--- a/src/opengl/qwindowsurface_gl.cpp
+++ b/src/opengl/qwindowsurface_gl.cpp
@@ -76,13 +76,17 @@
#define GLX_SAMPLES_ARB 100001
#endif
+#ifdef QT_OPENGL_ES_1_CL
+#include "qgl_cl_p.h"
+#endif
+
QT_BEGIN_NAMESPACE
//
// QGLGraphicsSystem
//
#ifdef Q_WS_WIN
-Q_GUI_EXPORT bool qt_win_owndc_required;
+extern Q_GUI_EXPORT bool qt_win_owndc_required;
#endif
QGLGraphicsSystem::QGLGraphicsSystem()
: QGraphicsSystem()
diff --git a/src/plugins/accessible/widgets/simplewidgets.h b/src/plugins/accessible/widgets/simplewidgets.h
index d4552e3..d1fd0da 100644
--- a/src/plugins/accessible/widgets/simplewidgets.h
+++ b/src/plugins/accessible/widgets/simplewidgets.h
@@ -115,6 +115,7 @@ public:
class QAccessibleLineEdit : public QAccessibleWidgetEx, public QAccessibleTextInterface,
public QAccessibleSimpleEditableTextInterface
{
+ Q_ACCESSIBLE_OBJECT
public:
explicit QAccessibleLineEdit(QWidget *o, const QString &name = QString());
diff --git a/src/plugins/gfxdrivers/directfb/directfb.pro b/src/plugins/gfxdrivers/directfb/directfb.pro
index 96eb536..5c60b2f 100644
--- a/src/plugins/gfxdrivers/directfb/directfb.pro
+++ b/src/plugins/gfxdrivers/directfb/directfb.pro
@@ -3,38 +3,42 @@ include(../../qpluginbase.pri)
QTDIR_build:DESTDIR = $$QT_BUILD_TREE/plugins/gfxdrivers
-# These defines might be necessary if your DirectFB driver doesn't
+# These defines might be necessary if your DirectFB driver doesn't
# support all of the DirectFB API.
#
+#DEFINES += QT_DIRECTFB_IMAGECACHE
#DEFINES += QT_NO_DIRECTFB_WM
#DEFINES += QT_NO_DIRECTFB_LAYER
#DEFINES += QT_NO_DIRECTFB_PALETTE
#DEFINES += QT_NO_DIRECTFB_PREALLOCATED
#DEFINES += QT_NO_DIRECTFB_MOUSE
#DEFINES += QT_NO_DIRECTFB_KEYBOARD
+#DEFINES += QT_DIRECTFB_TIMING
+#DEFINES += QT_NO_DIRECTFB_OPAQUE_DETECTION
+#DIRECTFB_DRAWINGOPERATIONS=DRAW_RECTS|DRAW_LINES|DRAW_IMAGE|DRAW_PIXMAP|DRAW_TILED_PIXMAP|STROKE_PATH|DRAW_PATH|DRAW_POINTS|DRAW_ELLIPSE|DRAW_POLYGON|DRAW_TEXT|FILL_PATH|FILL_RECT|DRAW_COLORSPANS
+#DEFINES += \"QT_DIRECTFB_WARN_ON_RASTERFALLBACKS=$$DIRECTFB_DRAWINGOPERATIONS\"
+#DEFINES += \"QT_DIRECTFB_DISABLE_RASTERFALLBACKS=$$DIRECTFB_DRAWINGOPERATIONS\"
target.path = $$[QT_INSTALL_PLUGINS]/gfxdrivers
INSTALLS += target
-HEADERS = \
- qdirectfbscreen.h \
- qdirectfbsurface.h \
- qdirectfbpaintengine.h \
- qdirectfbpaintdevice.h \
- qdirectfbpixmap.h \
- qdirectfbkeyboard.h \
- qdirectfbmouse.h
+HEADERS = qdirectfbscreen.h \
+ qdirectfbwindowsurface.h \
+ qdirectfbpaintengine.h \
+ qdirectfbpaintdevice.h \
+ qdirectfbpixmap.h \
+ qdirectfbkeyboard.h \
+ qdirectfbmouse.h
-SOURCES = \
- qdirectfbscreen.cpp \
- qdirectfbscreenplugin.cpp \
- qdirectfbsurface.cpp \
- qdirectfbpaintengine.cpp \
- qdirectfbpaintdevice.cpp \
- qdirectfbpixmap.cpp \
- qdirectfbkeyboard.cpp \
- qdirectfbmouse.cpp
+SOURCES = qdirectfbscreen.cpp \
+ qdirectfbscreenplugin.cpp \
+ qdirectfbwindowsurface.cpp \
+ qdirectfbpaintengine.cpp \
+ qdirectfbpaintdevice.cpp \
+ qdirectfbpixmap.cpp \
+ qdirectfbkeyboard.cpp \
+ qdirectfbmouse.cpp
QMAKE_CXXFLAGS += $$QT_CFLAGS_DIRECTFB
LIBS += $$QT_LIBS_DIRECTFB
-
+DEFINES += $$QT_DEFINES_DIRECTFB
diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbkeyboard.cpp b/src/plugins/gfxdrivers/directfb/qdirectfbkeyboard.cpp
index cd19f69..368b9f9 100644
--- a/src/plugins/gfxdrivers/directfb/qdirectfbkeyboard.cpp
+++ b/src/plugins/gfxdrivers/directfb/qdirectfbkeyboard.cpp
@@ -173,6 +173,22 @@ void QDirectFBKeyboardHandlerPrivate::readKeyboardData()
Qt::KeyboardModifiers modifiers = Qt::NoModifier;
+ // Not implemented:
+ // if (input.modifiers & DIMM_SUPER)
+ // if (input.modifiers & DIMM_HYPER)
+
+ if (!(input.flags & DIEF_KEYSYMBOL) ||
+ !(input.flags & DIEF_KEYID) ||
+ !(input.type & (DIET_KEYPRESS|DIET_KEYRELEASE)))
+ {
+ static bool first = true;
+ if (first) {
+ qWarning("QDirectFBKeyboardHandler - Getting unexpected non-keyboard related events");
+ first = false;
+ }
+ break;
+ }
+
if (input.flags & DIEF_MODIFIERS) {
if (input.modifiers & DIMM_SHIFT)
modifiers |= Qt::ShiftModifier;
@@ -185,31 +201,15 @@ void QDirectFBKeyboardHandlerPrivate::readKeyboardData()
if (input.modifiers & DIMM_META)
modifiers |= Qt::MetaModifier;
}
- // Not implemented:
- // if (input.modifiers & DIMM_SUPER)
- // if (input.modifiers & DIMM_HYPER)
- if ( !(input.flags & DIEF_KEYSYMBOL) ||
- !(input.flags & DIEF_KEYID) ||
- !(input.type & (DIET_KEYPRESS | DIET_KEYRELEASE)) )
- {
- static int warningCount = 0;
- if (!warningCount) {
- qWarning("QDirectFBKeyboardHandler - Getting unexpected non-keyboard related events");
- warningCount = 100;
- }
- else
- warningCount--;
- break;
- }
- bool press = input.type & DIET_KEYPRESS;
+ const bool press = input.type & DIET_KEYPRESS;
DFBInputDeviceKeySymbol symbol = input.key_symbol;
int unicode = -1;
int keycode = 0;
keycode = keymap()->value(symbol);
- if (keycode == 0 && DFB_KEY_TYPE(symbol) == DIKT_UNICODE)
+ if (DFB_KEY_TYPE(symbol) == DIKT_UNICODE)
unicode = symbol;
if (unicode != -1 || keycode != 0) {
@@ -314,6 +314,100 @@ KeyMap::KeyMap()
insert(DIKS_DEAD_SEMIVOICED_SOUND , Qt::Key_Dead_Semivoiced_Sound);
insert(DIKS_DEAD_TILDE , Qt::Key_Dead_Tilde);
insert(DIKS_DEAD_VOICED_SOUND , Qt::Key_Dead_Voiced_Sound);
+ insert(DIKS_SPACE , Qt::Key_Space);
+ insert(DIKS_EXCLAMATION_MARK , Qt::Key_Exclam);
+ insert(DIKS_QUOTATION , Qt::Key_QuoteDbl);
+ insert(DIKS_NUMBER_SIGN , Qt::Key_NumberSign);
+ insert(DIKS_DOLLAR_SIGN , Qt::Key_Dollar);
+ insert(DIKS_PERCENT_SIGN , Qt::Key_Percent);
+ insert(DIKS_AMPERSAND , Qt::Key_Ampersand);
+ insert(DIKS_APOSTROPHE , Qt::Key_Apostrophe);
+ insert(DIKS_PARENTHESIS_LEFT , Qt::Key_ParenLeft);
+ insert(DIKS_PARENTHESIS_RIGHT , Qt::Key_ParenRight);
+ insert(DIKS_ASTERISK , Qt::Key_Asterisk);
+ insert(DIKS_PLUS_SIGN , Qt::Key_Plus);
+ insert(DIKS_COMMA , Qt::Key_Comma);
+ insert(DIKS_MINUS_SIGN , Qt::Key_Minus);
+ insert(DIKS_PERIOD , Qt::Key_Period);
+ insert(DIKS_SLASH , Qt::Key_Slash);
+ insert(DIKS_0 , Qt::Key_0);
+ insert(DIKS_1 , Qt::Key_1);
+ insert(DIKS_2 , Qt::Key_2);
+ insert(DIKS_3 , Qt::Key_3);
+ insert(DIKS_4 , Qt::Key_4);
+ insert(DIKS_5 , Qt::Key_5);
+ insert(DIKS_6 , Qt::Key_6);
+ insert(DIKS_7 , Qt::Key_7);
+ insert(DIKS_8 , Qt::Key_8);
+ insert(DIKS_9 , Qt::Key_9);
+ insert(DIKS_COLON , Qt::Key_Colon);
+ insert(DIKS_SEMICOLON , Qt::Key_Semicolon);
+ insert(DIKS_LESS_THAN_SIGN , Qt::Key_Less);
+ insert(DIKS_EQUALS_SIGN , Qt::Key_Equal);
+ insert(DIKS_GREATER_THAN_SIGN , Qt::Key_Greater);
+ insert(DIKS_QUESTION_MARK , Qt::Key_Question);
+ insert(DIKS_AT , Qt::Key_At);
+ insert(DIKS_CAPITAL_A , Qt::Key_A);
+ insert(DIKS_CAPITAL_B , Qt::Key_B);
+ insert(DIKS_CAPITAL_C , Qt::Key_C);
+ insert(DIKS_CAPITAL_D , Qt::Key_D);
+ insert(DIKS_CAPITAL_E , Qt::Key_E);
+ insert(DIKS_CAPITAL_F , Qt::Key_F);
+ insert(DIKS_CAPITAL_G , Qt::Key_G);
+ insert(DIKS_CAPITAL_H , Qt::Key_H);
+ insert(DIKS_CAPITAL_I , Qt::Key_I);
+ insert(DIKS_CAPITAL_J , Qt::Key_J);
+ insert(DIKS_CAPITAL_K , Qt::Key_K);
+ insert(DIKS_CAPITAL_L , Qt::Key_L);
+ insert(DIKS_CAPITAL_M , Qt::Key_M);
+ insert(DIKS_CAPITAL_N , Qt::Key_N);
+ insert(DIKS_CAPITAL_O , Qt::Key_O);
+ insert(DIKS_CAPITAL_P , Qt::Key_P);
+ insert(DIKS_CAPITAL_Q , Qt::Key_Q);
+ insert(DIKS_CAPITAL_R , Qt::Key_R);
+ insert(DIKS_CAPITAL_S , Qt::Key_S);
+ insert(DIKS_CAPITAL_T , Qt::Key_T);
+ insert(DIKS_CAPITAL_U , Qt::Key_U);
+ insert(DIKS_CAPITAL_V , Qt::Key_V);
+ insert(DIKS_CAPITAL_W , Qt::Key_W);
+ insert(DIKS_CAPITAL_X , Qt::Key_X);
+ insert(DIKS_CAPITAL_Y , Qt::Key_Y);
+ insert(DIKS_CAPITAL_Z , Qt::Key_Z);
+ insert(DIKS_SQUARE_BRACKET_LEFT , Qt::Key_BracketLeft);
+ insert(DIKS_BACKSLASH , Qt::Key_Backslash);
+ insert(DIKS_SQUARE_BRACKET_RIGHT , Qt::Key_BracketRight);
+ insert(DIKS_CIRCUMFLEX_ACCENT , Qt::Key_AsciiCircum);
+ insert(DIKS_UNDERSCORE , Qt::Key_Underscore);
+ insert(DIKS_SMALL_A , Qt::Key_A);
+ insert(DIKS_SMALL_B , Qt::Key_B);
+ insert(DIKS_SMALL_C , Qt::Key_C);
+ insert(DIKS_SMALL_D , Qt::Key_D);
+ insert(DIKS_SMALL_E , Qt::Key_E);
+ insert(DIKS_SMALL_F , Qt::Key_F);
+ insert(DIKS_SMALL_G , Qt::Key_G);
+ insert(DIKS_SMALL_H , Qt::Key_H);
+ insert(DIKS_SMALL_I , Qt::Key_I);
+ insert(DIKS_SMALL_J , Qt::Key_J);
+ insert(DIKS_SMALL_K , Qt::Key_K);
+ insert(DIKS_SMALL_L , Qt::Key_L);
+ insert(DIKS_SMALL_M , Qt::Key_M);
+ insert(DIKS_SMALL_N , Qt::Key_N);
+ insert(DIKS_SMALL_O , Qt::Key_O);
+ insert(DIKS_SMALL_P , Qt::Key_P);
+ insert(DIKS_SMALL_Q , Qt::Key_Q);
+ insert(DIKS_SMALL_R , Qt::Key_R);
+ insert(DIKS_SMALL_S , Qt::Key_S);
+ insert(DIKS_SMALL_T , Qt::Key_T);
+ insert(DIKS_SMALL_U , Qt::Key_U);
+ insert(DIKS_SMALL_V , Qt::Key_V);
+ insert(DIKS_SMALL_W , Qt::Key_W);
+ insert(DIKS_SMALL_X , Qt::Key_X);
+ insert(DIKS_SMALL_Y , Qt::Key_Y);
+ insert(DIKS_SMALL_Z , Qt::Key_Z);
+ insert(DIKS_CURLY_BRACKET_LEFT , Qt::Key_BraceLeft);
+ insert(DIKS_VERTICAL_BAR , Qt::Key_Bar);
+ insert(DIKS_CURLY_BRACKET_RIGHT , Qt::Key_BraceRight);
+ insert(DIKS_TILDE , Qt::Key_AsciiTilde);
}
#include "qdirectfbkeyboard.moc"
diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbmouse.cpp b/src/plugins/gfxdrivers/directfb/qdirectfbmouse.cpp
index f4d9b46..b999dd2 100644
--- a/src/plugins/gfxdrivers/directfb/qdirectfbmouse.cpp
+++ b/src/plugins/gfxdrivers/directfb/qdirectfbmouse.cpp
@@ -56,9 +56,7 @@ public:
QDirectFBMouseHandlerPrivate(QDirectFBMouseHandler *h);
~QDirectFBMouseHandlerPrivate();
- void suspend();
- void resume();
-
+ void setEnabled(bool on);
private:
QDirectFBMouseHandler *handler;
IDirectFBEventBuffer *eventBuffer;
@@ -130,7 +128,7 @@ QDirectFBMouseHandlerPrivate::QDirectFBMouseHandlerPrivate(QDirectFBMouseHandler
mouseNotifier = new QSocketNotifier(fd, QSocketNotifier::Read, this);
connect(mouseNotifier, SIGNAL(activated(int)),this, SLOT(readMouseData()));
- resume();
+ setEnabled(true);
}
QDirectFBMouseHandlerPrivate::~QDirectFBMouseHandlerPrivate()
@@ -139,15 +137,32 @@ QDirectFBMouseHandlerPrivate::~QDirectFBMouseHandlerPrivate()
eventBuffer->Release(eventBuffer);
}
-void QDirectFBMouseHandlerPrivate::suspend()
+void QDirectFBMouseHandlerPrivate::setEnabled(bool on)
{
- mouseNotifier->setEnabled(false);
-}
+ if (mouseNotifier->isEnabled() != on) {
+#ifndef QT_NO_DIRECTFB_LAYER
+ DFBResult result;
+ result = layer->SetCooperativeLevel(layer, DLSCL_ADMINISTRATIVE);
+ if (result != DFB_OK) {
+ DirectFBError("QDirectFBScreenCursor::QDirectFBScreenCursor: "
+ "Unable to set cooperative level", result);
+ }
+ result = layer->EnableCursor(layer, on ? 1 : 0);
+ if (result != DFB_OK) {
+ DirectFBError("QDirectFBScreenCursor::QDirectFBScreenCursor: "
+ "Unable to enable cursor", result);
+ }
-void QDirectFBMouseHandlerPrivate::resume()
-{
- eventBuffer->Reset(eventBuffer);
- mouseNotifier->setEnabled(true);
+ result = layer->SetCooperativeLevel(layer, DLSCL_SHARED);
+ if (result != DFB_OK) {
+ DirectFBError("QDirectFBScreenCursor::show: "
+ "Unable to set cooperative level", result);
+ }
+
+ layer->SetCooperativeLevel(layer, DLSCL_SHARED);
+#endif
+ mouseNotifier->setEnabled(on);
+ }
}
void QDirectFBMouseHandlerPrivate::readMouseData()
@@ -260,12 +275,12 @@ QDirectFBMouseHandler::~QDirectFBMouseHandler()
void QDirectFBMouseHandler::suspend()
{
- d->suspend();
+ d->setEnabled(false);
}
void QDirectFBMouseHandler::resume()
{
- d->resume();
+ d->setEnabled(true);
}
#include "qdirectfbmouse.moc"
diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbmouse.h b/src/plugins/gfxdrivers/directfb/qdirectfbmouse.h
index e81a4ba..d2eccfc 100644
--- a/src/plugins/gfxdrivers/directfb/qdirectfbmouse.h
+++ b/src/plugins/gfxdrivers/directfb/qdirectfbmouse.h
@@ -61,7 +61,6 @@ public:
void suspend();
void resume();
-
protected:
QDirectFBMouseHandlerPrivate *d;
};
diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbpaintdevice.cpp b/src/plugins/gfxdrivers/directfb/qdirectfbpaintdevice.cpp
index 5e71640..72e0ce5 100644
--- a/src/plugins/gfxdrivers/directfb/qdirectfbpaintdevice.cpp
+++ b/src/plugins/gfxdrivers/directfb/qdirectfbpaintdevice.cpp
@@ -56,23 +56,21 @@ IDirectFBSurface *QDirectFBPaintDevice::directFBSurface() const
}
-// Locks the dfb surface and creates a QImage (lockedImage) from the pointer
-void QDirectFBPaintDevice::lockDirectFB() {
-
- if (lockedImage)
- return; // Already locked
-
- void *mem;
- int w, h;
- DFBResult result = dfbSurface->Lock(dfbSurface, DSLF_WRITE, &mem, &bpl);
- if (result != DFB_OK || !mem) {
- DirectFBError("QDirectFBPixmapData::buffer()", result);
- return;
+void QDirectFBPaintDevice::lockDirectFB(uint flags)
+{
+ if (!(lock & flags)) {
+ if (lock)
+ unlockDirectFB();
+ if ((mem = QDirectFBScreen::lockSurface(dfbSurface, flags, &bpl))) {
+ const QSize s = size();
+ lockedImage = new QImage(mem, s.width(), s.height(), bpl,
+ QDirectFBScreen::getImageFormat(dfbSurface));
+ lock = flags;
+ Q_ASSERT(mem);
+ } else {
+ lock = 0;
+ }
}
-
- dfbSurface->GetSize(dfbSurface, &w, &h);
- lockedImage = new QImage(static_cast<uchar*>(mem), w, h, bpl,
- QDirectFBScreen::getImageFormat(dfbSurface));
}
@@ -84,15 +82,19 @@ void QDirectFBPaintDevice::unlockDirectFB()
dfbSurface->Unlock(dfbSurface);
delete lockedImage;
lockedImage = 0;
+ mem = 0;
+ lock = 0;
}
-void* QDirectFBPaintDevice::memory() const
+void *QDirectFBPaintDevice::memory() const
{
- QDirectFBPaintDevice* that = const_cast<QDirectFBPaintDevice*>(this);
- that->lockDirectFB();
- Q_ASSERT(that->lockedImage);
- return that->lockedImage->bits();
+ if (lock != (DSLF_READ|DSLF_WRITE)) {
+ QDirectFBPaintDevice *that = const_cast<QDirectFBPaintDevice*>(this);
+ that->lockDirectFB(DSLF_READ|DSLF_WRITE);
+ Q_ASSERT(that->lockedImage);
+ }
+ return mem;
}
@@ -108,9 +110,8 @@ int QDirectFBPaintDevice::bytesPerLine() const
// Can only get the stride when we lock the surface
Q_ASSERT(!lockedImage);
QDirectFBPaintDevice* that = const_cast<QDirectFBPaintDevice*>(this);
- that->lockDirectFB();
+ that->lockDirectFB(DSLF_READ);
Q_ASSERT(bpl != -1);
- that->unlockDirectFB();
}
return bpl;
}
@@ -123,7 +124,6 @@ QSize QDirectFBPaintDevice::size() const
return QSize(w, h);
}
-
int QDirectFBPaintDevice::metric(QPaintDevice::PaintDeviceMetric metric) const
{
if (!dfbSurface)
@@ -132,40 +132,21 @@ int QDirectFBPaintDevice::metric(QPaintDevice::PaintDeviceMetric metric) const
int w, h;
dfbSurface->GetSize(dfbSurface, &w, &h);
- int dpmX, dpmY; // Dots-per-meter ;-)
-
- // Do some common calculations:
- switch (metric) {
- case QPaintDevice::PdmWidthMM:
- case QPaintDevice::PdmPhysicalDpiX:
- case QPaintDevice::PdmDpiX:
- dpmX = (screen->deviceWidth() * 1000) / screen->physicalWidth();
- break;
- case QPaintDevice::PdmHeightMM:
- case QPaintDevice::PdmPhysicalDpiY:
- case QPaintDevice::PdmDpiY:
- dpmY = (screen->deviceHeight() * 1000) / screen->physicalHeight();
- break;
- default:
- break;
- }
-
- // Now use those calculations
switch (metric) {
case QPaintDevice::PdmWidth:
return w;
case QPaintDevice::PdmHeight:
return h;
case QPaintDevice::PdmWidthMM:
- return (w * 1000) / dpmX;
+ return (w * 1000) / dotsPerMeterX();
case QPaintDevice::PdmHeightMM:
- return (h * 1000) / dpmY;
+ return (h * 1000) / dotsPerMeterY();
case QPaintDevice::PdmPhysicalDpiX:
case QPaintDevice::PdmDpiX:
- return (dpmX * 254) / 10000; // 0.0254 meters-per-inch
+ return (dotsPerMeterX() * 254) / 10000; // 0.0254 meters-per-inch
case QPaintDevice::PdmPhysicalDpiY:
case QPaintDevice::PdmDpiY:
- return (dpmY * 254) / 10000; // 0.0254 meters-per-inch
+ return (dotsPerMeterY() * 254) / 10000; // 0.0254 meters-per-inch
case QPaintDevice::PdmDepth:
DFBSurfacePixelFormat format;
dfbSurface->GetPixelFormat(dfbSurface, &format);
diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbpaintdevice.h b/src/plugins/gfxdrivers/directfb/qdirectfbpaintdevice.h
index 89a3087..13f0a8f 100644
--- a/src/plugins/gfxdrivers/directfb/qdirectfbpaintdevice.h
+++ b/src/plugins/gfxdrivers/directfb/qdirectfbpaintdevice.h
@@ -58,7 +58,7 @@ public:
IDirectFBSurface *directFBSurface() const;
- void lockDirectFB();
+ void lockDirectFB(uint flags);
void unlockDirectFB();
inline bool forceRasterPrimitives() const { return forceRaster; }
@@ -69,6 +69,7 @@ public:
int bytesPerLine() const;
QSize size() const;
int metric(QPaintDevice::PaintDeviceMetric metric) const;
+ uint lockFlags() const { return lock; }
protected:
// Shouldn't create QDirectFBPaintDevice by itself but only sub-class it:
QDirectFBPaintDevice(QDirectFBScreen *scr = QDirectFBScreen::instance())
@@ -76,13 +77,27 @@ protected:
dfbSurface(0),
lockedImage(0),
screen(scr),
- forceRaster(false) {}
+ forceRaster(false),
+ lock(0),
+ mem(0)
+ {}
+
+ inline int dotsPerMeterX() const
+ {
+ return (screen->deviceWidth() * 1000) / screen->physicalWidth();
+ }
+ inline int dotsPerMeterY() const
+ {
+ return (screen->deviceHeight() * 1000) / screen->physicalHeight();
+ }
IDirectFBSurface *dfbSurface;
QImage *lockedImage;
QDirectFBScreen *screen;
int bpl;
bool forceRaster;
+ uint lock;
+ uchar *mem;
private:
Q_DISABLE_COPY(QDirectFBPaintDevice)
};
diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp b/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp
index 3b6ea80..989a37a 100644
--- a/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp
+++ b/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp
@@ -43,7 +43,7 @@
#ifndef QT_NO_DIRECTFB
-#include "qdirectfbsurface.h"
+#include "qdirectfbwindowsurface.h"
#include "qdirectfbscreen.h"
#include "qdirectfbpixmap.h"
#include <directfb.h>
@@ -54,6 +54,98 @@
#include <private/qpixmapdata_p.h>
#include <private/qpixmap_raster_p.h>
+#if defined QT_DIRECTFB_WARN_ON_RASTERFALLBACKS || defined QT_DIRECTFB_DISABLE_RASTERFALLBACKS
+#define VOID_ARG() static_cast<bool>(false)
+enum PaintOperation {
+ DRAW_RECTS = 0x0001,
+ DRAW_LINES = 0x0002,
+ DRAW_IMAGE = 0x0004,
+ DRAW_PIXMAP = 0x0008,
+ DRAW_TILED_PIXMAP = 0x0010,
+ STROKE_PATH = 0x0020,
+ DRAW_PATH = 0x0040,
+ DRAW_POINTS = 0x0080,
+ DRAW_ELLIPSE = 0x0100,
+ DRAW_POLYGON = 0x0200,
+ DRAW_TEXT = 0x0400,
+ FILL_PATH = 0x0800,
+ FILL_RECT = 0x1000,
+ DRAW_COLORSPANS = 0x2000,
+ ALL = 0xffff
+};
+#endif
+
+#ifdef QT_DIRECTFB_WARN_ON_RASTERFALLBACKS
+template <typename T> inline const T *ptr(const T &t) { return &t; }
+template <> inline const bool* ptr<bool>(const bool &) { return 0; }
+template <typename device, typename T1, typename T2, typename T3>
+static void rasterFallbackWarn(const char *msg, const char *func, const device *dev,
+ int scale, bool matrixRotShear, bool simplePen,
+ bool dfbHandledClip, bool forceRasterPrimitives,
+ const char *nameOne, const T1 &one,
+ const char *nameTwo, const T2 &two,
+ const char *nameThree, const T3 &three)
+{
+ QString out;
+ QDebug dbg(&out);
+ dbg << msg << (QByteArray(func) + "()") << "painting on";
+ if (dev->devType() == QInternal::Widget) {
+ dbg << static_cast<const QWidget*>(dev);
+ } else {
+ dbg << dev << "of type" << dev->devType();
+ }
+
+ dbg << "scale" << scale
+ << "matrixRotShear" << matrixRotShear
+ << "simplePen" << simplePen
+ << "dfbHandledClip" << dfbHandledClip
+ << "forceRasterPrimitives" << forceRasterPrimitives;
+
+ const T1 *t1 = ptr(one);
+ const T2 *t2 = ptr(two);
+ const T3 *t3 = ptr(three);
+
+ if (t1) {
+ dbg << nameOne << *t1;
+ if (t2) {
+ dbg << nameTwo << *t2;
+ if (t3) {
+ dbg << nameThree << *t3;
+ }
+ }
+ }
+ qWarning("%s", qPrintable(out));
+}
+#endif
+
+#if defined QT_DIRECTFB_WARN_ON_RASTERFALLBACKS && defined QT_DIRECTFB_DISABLE_RASTERFALLBACKS
+#define RASTERFALLBACK(op, one, two, three) \
+ if (op & (QT_DIRECTFB_WARN_ON_RASTERFALLBACKS)) \
+ rasterFallbackWarn("Disabled raster engine operation", \
+ __FUNCTION__, state()->painter->device(), \
+ d_func()->scale, d_func()->matrixRotShear, \
+ d_func()->simplePen, d_func()->dfbCanHandleClip(), \
+ d_func()->forceRasterPrimitives, \
+ #one, one, #two, two, #three, three); \
+ if (op & (QT_DIRECTFB_DISABLE_RASTERFALLBACKS)) \
+ return;
+#elif defined QT_DIRECTFB_DISABLE_RASTERFALLBACKS
+#define RASTERFALLBACK(op, one, two, three) \
+ if (op & (QT_DIRECTFB_DISABLE_RASTERFALLBACKS)) \
+ return;
+#elif defined QT_DIRECTFB_WARN_ON_RASTERFALLBACKS
+#define RASTERFALLBACK(op, one, two, three) \
+ if (op & (QT_DIRECTFB_WARN_ON_RASTERFALLBACKS)) \
+ rasterFallbackWarn("Falling back to raster engine for", \
+ __FUNCTION__, state()->painter->device(), \
+ d_func()->scale, d_func()->matrixRotShear, \
+ d_func()->simplePen, d_func()->dfbCanHandleClip(), \
+ d_func()->forceRasterPrimitives, \
+ #one, one, #two, two, #three, three);
+#else
+#define RASTERFALLBACK(op, one, two, three)
+#endif
+
static inline uint ALPHA_MUL(uint x, uint a)
{
uint t = x * a;
@@ -64,142 +156,73 @@ static inline uint ALPHA_MUL(uint x, uint a)
class SurfaceCache
{
public:
- SurfaceCache();
- ~SurfaceCache();
+ SurfaceCache() : surface(0), buffer(0), bufsize(0) {}
+ ~SurfaceCache() { clear(); }
- inline IDirectFBSurface *getSurface(const uint *buffer, int size);
- inline void clear();
-private:
- IDirectFBSurface *surface;
- uint *buffer;
- int bufsize;
-};
-
-SurfaceCache::SurfaceCache()
- : surface(0), buffer(0), bufsize(0)
-{
-}
-
-class CachedImage
-{
-public:
- CachedImage(const QImage &image);
- ~CachedImage();
+ IDirectFBSurface *getSurface(const uint *buf, int size)
+ {
+ if (buffer == buf && bufsize == size)
+ return surface;
- IDirectFBSurface *surface() { return s; }
+ clear();
-private:
- IDirectFBSurface *s;
-};
+ const DFBSurfaceDescription description = QDirectFBScreen::getSurfaceDescription(buf, size);
+ surface = QDirectFBScreen::instance()->createDFBSurface(description, QDirectFBScreen::TrackSurface);
+ if (!surface)
+ qWarning("QDirectFBPaintEngine: SurfaceCache: Unable to create surface");
-CachedImage::CachedImage(const QImage &image)
- : s(0)
-{
- IDirectFBSurface *tmpSurface = 0;
- DFBSurfaceDescription description;
- description = QDirectFBScreen::getSurfaceDescription(image);
- QDirectFBScreen* screen = QDirectFBScreen::instance();
+ buffer = const_cast<uint*>(buf);
+ bufsize = size;
- tmpSurface = screen->createDFBSurface(&description, QDirectFBScreen::TrackSurface);
- if (!tmpSurface) {
- qWarning("CachedImage CreateSurface failed!");
- return;
+ return surface;
}
-#ifndef QT_NO_DIRECTFB_PALETTE
- QDirectFBScreen::setSurfaceColorTable(tmpSurface, image);
-#endif
-
- description.flags = DFBSurfaceDescriptionFlags(description.flags & ~DSDESC_PREALLOCATED);
-
- s = screen->createDFBSurface(&description, QDirectFBScreen::TrackSurface);
- if (!s)
- qWarning("QDirectFBPaintEngine failed caching image");
-
-#ifndef QT_NO_DIRECTFB_PALETTE
- QDirectFBScreen::setSurfaceColorTable(s, image);
-#endif
-
- if (s) {
- s->SetBlittingFlags(s, DSBLIT_NOFX);
- s->Blit(s, tmpSurface, 0, 0, 0);
- s->ReleaseSource(s);
+ void clear()
+ {
+ if (surface && QDirectFBScreen::instance())
+ QDirectFBScreen::instance()->releaseDFBSurface(surface);
+ surface = 0;
+ buffer = 0;
+ bufsize = 0;
}
- if (tmpSurface)
- screen->releaseDFBSurface(tmpSurface);
-}
-
-CachedImage::~CachedImage()
-{
- if (s && QDirectFBScreen::instance())
- QDirectFBScreen::instance()->releaseDFBSurface(s);
-}
-
-static QCache<qint64, CachedImage> imageCache(4*1024*1024); // 4 MB
-
-IDirectFBSurface* SurfaceCache::getSurface(const uint *buf, int size)
-{
- if (buffer == buf && bufsize == size)
- return surface;
-
- clear();
-
- DFBSurfaceDescription description;
- description = QDirectFBScreen::getSurfaceDescription(buf, size);
-
- surface = QDirectFBScreen::instance()->createDFBSurface(&description, QDirectFBScreen::TrackSurface);
- if (!surface)
- qWarning("QDirectFBPaintEngine: SurfaceCache: Unable to create surface");
-
- buffer = const_cast<uint*>(buf);
- bufsize = size;
-
- return surface;
-}
+private:
+ IDirectFBSurface *surface;
+ uint *buffer;
+ int bufsize;
+};
-void SurfaceCache::clear()
-{
- if (surface)
- QDirectFBScreen::instance()->releaseDFBSurface(surface);
- surface = 0;
- buffer = 0;
- bufsize = 0;
-}
-SurfaceCache::~SurfaceCache()
+#ifdef QT_DIRECTFB_IMAGECACHE
+#include <private/qimage_p.h>
+struct CachedImage
{
- clear();
-}
+ IDirectFBSurface *surface;
+ ~CachedImage()
+ {
+ if (surface && QDirectFBScreen::instance()) {
+ QDirectFBScreen::instance()->releaseDFBSurface(surface);
+ }
+ }
+};
+static QCache<qint64, CachedImage> imageCache(4*1024*1024); // 4 MB
+#endif
class QDirectFBPaintEnginePrivate : public QRasterPaintEnginePrivate
{
public:
+ enum Scale { NoScale, Scaled, NegativeScale };
+
QDirectFBPaintEnginePrivate(QDirectFBPaintEngine *p);
~QDirectFBPaintEnginePrivate();
- IDirectFBSurface *surface;
-
- QPen pen;
- QBrush brush;
-
- bool antialiased;
- bool forceRasterPrimitives;
-
- bool simplePen;
- bool simpleBrush;
-
- bool matrixRotShear;
- bool matrixScale;
-
void setTransform(const QTransform &m);
void setPen(const QPen &pen);
- void setBrush(const QBrush &brush);
void setCompositionMode(QPainter::CompositionMode mode);
- void setOpacity(const qreal value);
+ void setOpacity(quint8 value);
void setRenderHints(QPainter::RenderHints hints);
- inline void setDFBColor(const QColor &color) const;
+ inline void setDFBColor(const QColor &color);
inline void lock();
inline void unlock();
@@ -207,615 +230,69 @@ public:
inline bool dfbCanHandleClip(const QRect &rect) const;
inline bool dfbCanHandleClip(const QRectF &rect) const;
inline bool dfbCanHandleClip() const;
+ inline bool isSimpleBrush(const QBrush &brush) const;
- void drawLines(const QLine *lines, int count) const;
- void drawLines(const QLineF *lines, int count) const;
+ void drawLines(const QLine *lines, int count);
+ void drawLines(const QLineF *lines, int count);
- void fillRegion(const QRegion &r) const;
- void fillRects(const QRect *rects, int count) const;
- void drawRects(const QRect *rects, int count) const;
- void fillRects(const QRectF *rects, int count) const;
- void drawRects(const QRectF *rects, int count) const;
+ void fillRegion(const QRegion &r);
+ void fillRects(const QRect *rects, int count);
+ void drawRects(const QRect *rects, int count);
+ void fillRects(const QRectF *rects, int count);
+ void drawRects(const QRectF *rects, int count);
- void drawPixmap(const QRectF &dest,
- const QPixmap &pixmap, const QRectF &src);
void drawTiledPixmap(const QRectF &dest, const QPixmap &pixmap);
- void drawImage(const QRectF &dest, const QImage &image, const QRectF &src);
+ void blit(const QRectF &dest, IDirectFBSurface *surface, const QRectF &src);
- void updateClip();
- void updateFlags();
- inline void setClipDirty();
- void systemStateChanged(); //Needed to be notified when system clip changes
+ inline void updateClip();
+ void systemStateChanged();
void begin(QPaintDevice *device);
void end();
+ static IDirectFBSurface *getSurface(const QImage &img, bool *release);
+
+#ifdef QT_DIRECTFB_IMAGECACHE
+ static inline int cacheCost(const QImage &img) { return img.width() * img.height() * img.depth() / 8; }
+#endif
+
+ void prepareForBlit(bool alpha);
+private:
+ IDirectFBSurface *surface;
+
+ QPen pen;
+
+ bool antialiased;
+ bool forceRasterPrimitives;
+
+ bool simplePen;
+
+ bool matrixRotShear;
+ Scale scale;
+
SurfaceCache *surfaceCache;
QTransform transform;
int lastLockedHeight;
-private:
-// QRegion rectsToClippedRegion(const QRect *rects, int n) const;
-// QRegion rectsToClippedRegion(const QRectF *rects, int n) const;
IDirectFB *fb;
- DFBSurfaceDescription fbDescription;
int fbWidth;
int fbHeight;
quint8 opacity;
- quint32 drawFlags;
- quint32 blitFlags;
- quint32 duffFlags;
- bool dirtyFlags;
+ quint32 drawFlagsFromCompositionMode, blitFlagsFromCompositionMode;
+ DFBSurfacePorterDuffRule porterDuffRule;
+
bool dirtyClip;
bool dfbHandledClip;
+ bool ignoreSystemClip;
QDirectFBPaintDevice *dfbDevice;
+ void *lockedMemory;
QDirectFBPaintEngine *q;
+ friend class QDirectFBPaintEngine;
};
-QDirectFBPaintEnginePrivate::QDirectFBPaintEnginePrivate(QDirectFBPaintEngine *p)
- : surface(0), antialiased(false), forceRasterPrimitives(false), simplePen(false),
- simpleBrush(false), matrixRotShear(false), matrixScale(false), lastLockedHeight(-1),
- fbWidth(-1), fbHeight(-1), opacity(255), drawFlags(0), blitFlags(0), duffFlags(0),
- dirtyFlags(false), dirtyClip(true), dfbHandledClip(false), dfbDevice(0), q(p)
-{
- fb = QDirectFBScreen::instance()->dfb();
- surfaceCache = new SurfaceCache;
- static int cacheLimit = qgetenv("QT_DIRECTFB_IMAGECACHE").toInt();
- if (cacheLimit > 0)
- imageCache.setMaxCost(cacheLimit * 1024);
-}
-
-QDirectFBPaintEnginePrivate::~QDirectFBPaintEnginePrivate()
-{
- delete surfaceCache;
-}
-
-bool QDirectFBPaintEnginePrivate::dfbCanHandleClip(const QRect &rect) const
-{
- // TODO: Check to see if DirectFB can handle the clip for the given rect
- return dfbHandledClip;
-}
-
-bool QDirectFBPaintEnginePrivate::dfbCanHandleClip(const QRectF &rect) const
-{
- // TODO: Check to see if DirectFB can handle the clip for the given rect
- return dfbHandledClip;
-}
-
-bool QDirectFBPaintEnginePrivate::dfbCanHandleClip() const
-{
- return dfbHandledClip;
-}
-
-void QDirectFBPaintEnginePrivate::setClipDirty()
-{
- dirtyClip = true;
-}
-
-
-void QDirectFBPaintEnginePrivate::lock()
-{
- // We will potentially get a new pointer to the buffer after a
- // lock so we need to call the base implementation of prepare so
- // it updates its rasterBuffer to point to the new buffer address.
- lastLockedHeight = dfbDevice->height();
-
- Q_ASSERT(dfbDevice);
- prepare(dfbDevice);
-}
-
-void QDirectFBPaintEnginePrivate::unlock()
-{
- Q_ASSERT(dfbDevice);
- dfbDevice->unlockDirectFB();
-}
-
-void QDirectFBPaintEnginePrivate::setTransform(const QTransform &m)
-{
- transform = m;
- matrixRotShear = (transform.m12() != 0 || transform.m21() != 0);
- matrixScale = (transform.m11() != 1 || transform.m22() != 1);
-}
-
-void QDirectFBPaintEnginePrivate::begin(QPaintDevice *device)
-{
- lastLockedHeight = -1;
- if (device->devType() == QInternal::CustomRaster)
- dfbDevice = static_cast<QDirectFBPaintDevice*>(device);
- else if (device->devType() == QInternal::Pixmap) {
- QPixmapData *data = static_cast<QPixmap*>(device)->pixmapData();
- Q_ASSERT(data->classId() == QPixmapData::DirectFBClass);
- QDirectFBPixmapData* dfbPixmapData = static_cast<QDirectFBPixmapData*>(data);
- dfbDevice = static_cast<QDirectFBPaintDevice*>(dfbPixmapData);
- }
-
- if (dfbDevice)
- surface = dfbDevice->directFBSurface();
-
- if (!surface) {
- qFatal("QDirectFBPaintEngine used on an invalid device: 0x%x",
- device->devType());
- }
- forceRasterPrimitives = dfbDevice->forceRasterPrimitives();
-
- surface->GetSize(surface, &fbWidth, &fbHeight);
-
- setTransform(QTransform());
- antialiased = false;
- drawFlags = DSDRAW_BLEND;
- blitFlags = DSBLIT_BLEND_ALPHACHANNEL;
- duffFlags = DSPD_SRC_OVER;
- opacity = 255;
- dirtyFlags = true;
- dirtyClip = true;
- setPen(q->state()->pen);
- setDFBColor(pen.color());
-}
-
-void QDirectFBPaintEnginePrivate::end()
-{
- dfbDevice = 0;
- surface->ReleaseSource(surface);
- surface->SetClip(surface, NULL);
- surface = 0;
-}
-
-void QDirectFBPaintEnginePrivate::setPen(const QPen &p)
-{
- pen = p;
- simplePen = (pen.style() == Qt::NoPen) ||
- (pen.style() == Qt::SolidLine && !antialiased
- && (pen.widthF() <= 1 && !matrixScale));
-}
-
-void QDirectFBPaintEnginePrivate::setBrush(const QBrush &b)
-{
- brush = b;
- simpleBrush = (brush.style() == Qt::NoBrush) ||
- (brush.style() == Qt::SolidPattern && !antialiased);
-}
-
-void QDirectFBPaintEnginePrivate::setCompositionMode(QPainter::CompositionMode mode)
-{
- drawFlags &= ~(DSDRAW_XOR);
- blitFlags &= ~(DSBLIT_XOR);
-
- // TODO: check these mappings!!!!
- quint32 duff = DSPD_NONE;
- quint32 blit = blitFlags;
-
- switch (mode) {
- case QPainter::CompositionMode_SourceOver:
- duff = DSPD_SRC_OVER;
- blit |= DSBLIT_BLEND_ALPHACHANNEL;
- break;
- case QPainter::CompositionMode_DestinationOver:
- duff = DSPD_DST_OVER;
- blit |= DSBLIT_BLEND_ALPHACHANNEL;
- break;
- case QPainter::CompositionMode_Clear:
- duff = DSPD_CLEAR;
- blit &= ~DSBLIT_BLEND_ALPHACHANNEL;
- break;
- case QPainter::CompositionMode_Source:
- duff = DSPD_SRC;
- blit &= ~DSBLIT_BLEND_ALPHACHANNEL;
- break;
- case QPainter::CompositionMode_Destination:
- blit &= ~DSBLIT_BLEND_ALPHACHANNEL;
- return;
- case QPainter::CompositionMode_SourceIn:
- duff = DSPD_SRC_IN;
- blit |= DSBLIT_BLEND_ALPHACHANNEL;
- break;
- case QPainter::CompositionMode_DestinationIn:
- duff = DSPD_DST_IN;
- blit |= DSBLIT_BLEND_ALPHACHANNEL;
- break;
- case QPainter::CompositionMode_SourceOut:
- duff = DSPD_SRC_OUT;
- blit |= DSBLIT_BLEND_ALPHACHANNEL;
- break;
- case QPainter::CompositionMode_DestinationOut:
- duff = DSPD_DST_OUT;
- blit |= DSBLIT_BLEND_ALPHACHANNEL;
- break;
- case QPainter::CompositionMode_SourceAtop:
- duff = DSPD_SRC_OVER;
- blit |= DSBLIT_BLEND_ALPHACHANNEL;
- break;
- case QPainter::CompositionMode_DestinationAtop:
- duff = DSPD_DST_OVER;
- break;
- case QPainter::CompositionMode_Xor:
- duff = DSPD_NONE;
- blit |= DSBLIT_BLEND_ALPHACHANNEL;
- drawFlags |= DSDRAW_XOR;
- blit |= DSBLIT_XOR;
- dirtyFlags = true;
- break;
- default:
- qWarning("QDirectFBPaintEnginePrivate::setCompositionMode(): "
- "mode %d not implemented", mode);
- break;
- }
-
- if (duff != duffFlags || blit != blitFlags) {
- duffFlags = duff;
- blitFlags = blit;
- dirtyFlags = true;
- }
-}
-
-void QDirectFBPaintEnginePrivate::setOpacity(const qreal value)
-{
- const bool wasOpaque = (opacity == 255);
- opacity = quint8(value * 255);
- const bool opaque = (opacity == 255);
-
- if (opaque == wasOpaque)
- return;
-
- if (opaque)
- blitFlags &= ~(DSBLIT_BLEND_COLORALPHA | DSBLIT_SRC_PREMULTCOLOR);
- else
- blitFlags |= (DSBLIT_BLEND_COLORALPHA | DSBLIT_SRC_PREMULTCOLOR);
-
- dirtyFlags = true;
-}
-
-void QDirectFBPaintEnginePrivate::setRenderHints(QPainter::RenderHints hints)
-{
- const bool old = antialiased;
- antialiased = bool(hints & QPainter::Antialiasing);
- if (old != antialiased) {
- setPen(q->state()->pen);
- }
-}
-
-void QDirectFBPaintEnginePrivate::updateFlags()
-{
- if (!dirtyFlags)
- return;
- surface->SetDrawingFlags(surface, DFBSurfaceDrawingFlags(drawFlags));
- surface->SetBlittingFlags(surface, DFBSurfaceBlittingFlags(blitFlags));
- surface->SetPorterDuff(surface, DFBSurfacePorterDuffRule(duffFlags));
- dirtyFlags = false;
-}
-
-void QDirectFBPaintEnginePrivate::setDFBColor(const QColor &color) const
-{
- const quint8 alpha = (opacity == 255 ?
- color.alpha() : ALPHA_MUL(color.alpha(), opacity));
- surface->SetColor(surface,
- color.red(), color.green(), color.blue(), alpha);
-}
-
-void QDirectFBPaintEnginePrivate::drawLines(const QLine *lines, int n) const
-{
- QVarLengthArray<DFBRegion> regions(n);
-
- for (int i = 0; i < n; ++i) {
- const QLine l = transform.map(lines[i]);
-
- regions[i].x1 = l.x1();
- regions[i].y1 = l.y1();
- regions[i].x2 = l.x2();
- regions[i].y2 = l.y2();
- }
- surface->DrawLines(surface, regions.data(), n);
-}
-
-void QDirectFBPaintEnginePrivate::drawLines(const QLineF *lines, int n) const
-{
- QVarLengthArray<DFBRegion> regions(n);
-
- for (int i = 0; i < n; ++i) {
- const QLine l = transform.map(lines[i]).toLine();
-
- regions[i].x1 = l.x1();
- regions[i].y1 = l.y1();
- regions[i].x2 = l.x2();
- regions[i].y2 = l.y2();
- }
- surface->DrawLines(surface, regions.data(), n);
-}
-
-/* ### Commented out until it can be implemented properly using raster's QClipData
-QRegion QDirectFBPaintEnginePrivate::rectsToClippedRegion(const QRect *rects,
- int n) const
-{
- QRegion region;
-
- for (int i = 0; i < n; ++i) {
- const QRect r = transform.mapRect(rects[i]);
- region += clip & r;
- }
-
- return region;
-}
-
-QRegion QDirectFBPaintEnginePrivate::rectsToClippedRegion(const QRectF *rects,
- int n) const
-{
- QRegion region;
-
- for (int i = 0; i < n; ++i) {
- const QRect r = transform.mapRect(rects[i]).toRect();
- region += clip & r;
- }
-
- return region;
-}
-*/
-
-void QDirectFBPaintEnginePrivate::fillRegion(const QRegion &region) const
-{
- const QVector<QRect> rects = region.rects();
- const int n = rects.size();
- QVarLengthArray<DFBRectangle> dfbRects(n);
-
- for (int i = 0; i < n; ++i) {
- const QRect r = rects.at(i);
- dfbRects[i].x = r.x();
- dfbRects[i].y = r.y();
- dfbRects[i].w = r.width();
- dfbRects[i].h = r.height();
-
- }
- surface->FillRectangles(surface, dfbRects.data(), n);
-}
-
-void QDirectFBPaintEnginePrivate::fillRects(const QRect *rects, int n) const
-{
- QVarLengthArray<DFBRectangle> dfbRects(n);
- for (int i = 0; i < n; ++i) {
- const QRect r = transform.mapRect(rects[i]);
- dfbRects[i].x = r.x();
- dfbRects[i].y = r.y();
- dfbRects[i].w = r.width();
- dfbRects[i].h = r.height();
- }
- surface->FillRectangles(surface, dfbRects.data(), n);
-}
-
-void QDirectFBPaintEnginePrivate::fillRects(const QRectF *rects, int n) const
-{
- QVarLengthArray<DFBRectangle> dfbRects(n);
- for (int i = 0; i < n; ++i) {
- const QRect r = transform.mapRect(rects[i]).toRect();
- dfbRects[i].x = r.x();
- dfbRects[i].y = r.y();
- dfbRects[i].w = r.width();
- dfbRects[i].h = r.height();
- }
- surface->FillRectangles(surface, dfbRects.data(), n);
-}
-
-void QDirectFBPaintEnginePrivate::drawRects(const QRect *rects, int n) const
-{
- for (int i = 0; i < n; ++i) {
- const QRect r = transform.mapRect(rects[i]);
- surface->DrawRectangle(surface, r.x(), r.y(),
- r.width() + 1, r.height() + 1);
- }
-}
-
-void QDirectFBPaintEnginePrivate::drawRects(const QRectF *rects, int n) const
-{
- for (int i = 0; i < n; ++i) {
- const QRect r = transform.mapRect(rects[i]).toRect();
- surface->DrawRectangle(surface, r.x(), r.y(),
- r.width() + 1, r.height() + 1);
- }
-}
-
-void QDirectFBPaintEnginePrivate::drawPixmap(const QRectF &dest,
- const QPixmap &pixmap,
- const QRectF &src)
-{
- surface->SetColor(surface, 0xff, 0xff, 0xff, opacity);
-
- const bool changeFlags = !pixmap.hasAlphaChannel()
- && (blitFlags & DSBLIT_BLEND_ALPHACHANNEL);
- if (changeFlags) {
- quint32 flags = blitFlags & ~DSBLIT_BLEND_ALPHACHANNEL;
- surface->SetBlittingFlags(surface, DFBSurfaceBlittingFlags(flags));
- }
-
- QPixmapData *data = pixmap.pixmapData();
- Q_ASSERT(data->classId() == QPixmapData::DirectFBClass);
- QDirectFBPixmapData *dfbData = static_cast<QDirectFBPixmapData*>(data);
- IDirectFBSurface *s = dfbData->directFBSurface();
- const QRect sr = src.toRect();
- const QRect dr = transform.mapRect(dest).toRect();
- const DFBRectangle sRect = { sr.x(), sr.y(), sr.width(), sr.height() };
- DFBResult result;
-
- if (dr.size() == sr.size()) {
- result = surface->Blit(surface, s, &sRect, dr.x(), dr.y());
- } else {
- const DFBRectangle dRect = { dr.x(), dr.y(), dr.width(), dr.height() };
- result = surface->StretchBlit(surface, s, &sRect, &dRect);
- }
- if (result != DFB_OK)
- DirectFBError("QDirectFBPaintEngine::drawPixmap()", result);
- if (changeFlags)
- surface->SetBlittingFlags(surface, DFBSurfaceBlittingFlags(blitFlags));
-}
-
-void QDirectFBPaintEnginePrivate::drawTiledPixmap(const QRectF &dest,
- const QPixmap &pixmap)
-{
- surface->SetColor(surface, 0xff, 0xff, 0xff, opacity);
-
- const bool changeFlags = !pixmap.hasAlphaChannel()
- && (blitFlags & DSBLIT_BLEND_ALPHACHANNEL);
- if (changeFlags) {
- quint32 flags = blitFlags & ~DSBLIT_BLEND_ALPHACHANNEL;
- surface->SetBlittingFlags(surface, DFBSurfaceBlittingFlags(flags));
- }
-
- QPixmapData *data = pixmap.pixmapData();
- Q_ASSERT(data->classId() == QPixmapData::DirectFBClass);
- QDirectFBPixmapData *dfbData = static_cast<QDirectFBPixmapData*>(data);
- IDirectFBSurface *s = dfbData->directFBSurface();
- const QRect dr = transform.mapRect(dest).toRect();
- DFBResult result = DFB_OK;
-
- if (!matrixScale && dr == QRect(0, 0, fbWidth, fbHeight)) {
- result = surface->TileBlit(surface, s, 0, 0, 0);
- } else if (!matrixScale) {
- const int dx = pixmap.width();
- const int dy = pixmap.height();
- const DFBRectangle rect = { 0, 0, dx, dy };
- QVarLengthArray<DFBRectangle> rects;
- QVarLengthArray<DFBPoint> points;
-
- for (int y = dr.y(); y <= dr.bottom(); y += dy) {
- for (int x = dr.x(); x <= dr.right(); x += dx) {
- rects.append(rect);
- const DFBPoint point = { x, y };
- points.append(point);
- }
- }
- result = surface->BatchBlit(surface, s, rects.constData(),
- points.constData(), points.size());
- } else {
- const QRect sr = transform.mapRect(QRect(0, 0, pixmap.width(), pixmap.height()));
- const int dx = sr.width();
- const int dy = sr.height();
- const DFBRectangle sRect = { 0, 0, dx, dy };
-
- for (int y = dr.y(); y <= dr.bottom(); y += dy) {
- for (int x = dr.x(); x <= dr.right(); x += dx) {
- const DFBRectangle dRect = { x, y, dx, dy };
- result = surface->StretchBlit(surface, s, &sRect, &dRect);
- if (result != DFB_OK) {
- y = dr.bottom() + 1;
- break;
- }
- }
- }
- }
-
- if (result != DFB_OK)
- DirectFBError("QDirectFBPaintEngine::drawTiledPixmap()", result);
-
- if (changeFlags)
- surface->SetBlittingFlags(surface, DFBSurfaceBlittingFlags(blitFlags));
-}
-
-void QDirectFBPaintEnginePrivate::drawImage(const QRectF &dest,
- const QImage &srcImage,
- const QRectF &src)
-{
- QImage image = srcImage;
- if (QDirectFBScreen::getSurfacePixelFormat(image.format()) == DSPF_UNKNOWN) {
- image = image.convertToFormat(image.hasAlphaChannel()
- ? QDirectFBScreen::instance()->alphaPixmapFormat()
- : QDirectFBScreen::instance()->pixelFormat());
- }
-
- CachedImage *img = imageCache[image.cacheKey()];
- IDirectFBSurface *imgSurface = 0;
- bool doRelease = false;
-
- if (img) {
- imgSurface = img->surface();
- } else {
- const int cost = image.width() * image.height() * image.depth() / 8;
- if (cost <= imageCache.maxCost()) {
- img = new CachedImage(image);
- imgSurface = img->surface();
- if (imgSurface) {
- imageCache.insert(image.cacheKey(), img, cost);
- } else {
- delete img;
- img = 0;
- }
- }
-
- if (!imgSurface) {
- DFBSurfaceDescription description;
-
- description = QDirectFBScreen::getSurfaceDescription(image);
- imgSurface = QDirectFBScreen::instance()->createDFBSurface(&description,
- QDirectFBScreen::DontTrackSurface);
- if (!imgSurface) {
- qWarning("QDirectFBPaintEnginePrivate::drawImage");
- return;
- }
-
-#ifndef QT_NO_DIRECTFB_PALETTE
- QDirectFBScreen::setSurfaceColorTable(surface, image);
-#endif
- doRelease = (imgSurface != 0);
- }
- }
-
- const QRect sr = src.toRect();
- const QRect dr = transform.mapRect(dest).toRect();
- const DFBRectangle sRect = { sr.x(), sr.y(), sr.width(), sr.height() };
-
- surface->SetColor(surface, 0xff, 0xff, 0xff, opacity);
-
- const bool changeFlags = !image.hasAlphaChannel()
- && (blitFlags & DSBLIT_BLEND_ALPHACHANNEL);
- if (changeFlags) {
- quint32 flags = blitFlags & ~DSBLIT_BLEND_ALPHACHANNEL;
- surface->SetBlittingFlags(surface, DFBSurfaceBlittingFlags(flags));
- }
- if (dr.size() == sr.size()) {
- surface->Blit(surface, imgSurface, &sRect, dr.x(), dr.y());
- } else {
- const DFBRectangle dRect = { dr.x(), dr.y(),
- dr.width(), dr.height() };
- surface->StretchBlit(surface, imgSurface, &sRect, &dRect);
- }
- if (changeFlags)
- surface->SetBlittingFlags(surface, DFBSurfaceBlittingFlags(blitFlags));
- if (doRelease) {
- surface->ReleaseSource(surface);
- imgSurface->Release(imgSurface);
- }
-}
-
-void QDirectFBPaintEnginePrivate::updateClip()
-{
- if (!dirtyClip)
- return;
-
- if (!clip() || !clip()->enabled) {
- surface->SetClip(surface, NULL);
- dfbHandledClip = true;
- }
- else if (clip()->hasRectClip) {
- const DFBRegion r = {
- clip()->clipRect.x(),
- clip()->clipRect.y(),
- clip()->clipRect.x() + clip()->clipRect.width(),
- clip()->clipRect.y() + clip()->clipRect.height()
- };
- surface->SetClip(surface, &r);
-
- dfbHandledClip = true;
- }
- else
- dfbHandledClip = false;
-
- dirtyClip = false;
-}
-
-void QDirectFBPaintEnginePrivate::systemStateChanged()
-{
- setClipDirty();
- QRasterPaintEnginePrivate::systemStateChanged();
-}
-
QDirectFBPaintEngine::QDirectFBPaintEngine(QPaintDevice *device)
: QRasterPaintEngine(*(new QDirectFBPaintEnginePrivate(this)), device)
{
@@ -844,12 +321,10 @@ bool QDirectFBPaintEngine::end()
return QRasterPaintEngine::end();
}
-
-
void QDirectFBPaintEngine::clipEnabledChanged()
{
Q_D(QDirectFBPaintEngine);
- d->setClipDirty();
+ d->dirtyClip = true;
QRasterPaintEngine::clipEnabledChanged();
}
@@ -861,19 +336,10 @@ void QDirectFBPaintEngine::penChanged()
QRasterPaintEngine::penChanged();
}
-void QDirectFBPaintEngine::brushChanged()
-{
- Q_D(QDirectFBPaintEngine);
- d->setBrush(state()->brush);
-
- QRasterPaintEngine::brushChanged();
-}
-
void QDirectFBPaintEngine::opacityChanged()
{
Q_D(QDirectFBPaintEngine);
- d->setOpacity(state()->opacity);
-
+ d->setOpacity(quint8(state()->opacity * 255));
QRasterPaintEngine::opacityChanged();
}
@@ -881,7 +347,6 @@ void QDirectFBPaintEngine::compositionModeChanged()
{
Q_D(QDirectFBPaintEngine);
d->setCompositionMode(state()->compositionMode());
-
QRasterPaintEngine::compositionModeChanged();
}
@@ -895,9 +360,9 @@ void QDirectFBPaintEngine::renderHintsChanged()
void QDirectFBPaintEngine::transformChanged()
{
Q_D(QDirectFBPaintEngine);
- const bool old = d->matrixScale;
+ const QDirectFBPaintEnginePrivate::Scale old = d->scale;
d->setTransform(state()->transform());
- if (d->matrixScale != old) {
+ if (d->scale != old) {
d->setPen(state()->pen);
}
QRasterPaintEngine::transformChanged();
@@ -907,11 +372,9 @@ void QDirectFBPaintEngine::setState(QPainterState *s)
{
Q_D(QDirectFBPaintEngine);
QRasterPaintEngine::setState(s);
- if (d->surface)
- d->updateClip();
+ d->dirtyClip = true;
d->setPen(state()->pen);
- d->setBrush(state()->brush);
- d->setOpacity(state()->opacity);
+ d->setOpacity(quint8(state()->opacity * 255));
d->setCompositionMode(state()->compositionMode());
d->setTransform(state()->transform());
}
@@ -919,7 +382,7 @@ void QDirectFBPaintEngine::setState(QPainterState *s)
void QDirectFBPaintEngine::clip(const QVectorPath &path, Qt::ClipOperation op)
{
Q_D(QDirectFBPaintEngine);
- d->setClipDirty();
+ d->dirtyClip = true;
const QPoint bottom = d->transform.map(QPoint(0, path.controlPointRect().y2));
if (bottom.y() >= d->lastLockedHeight)
d->lock();
@@ -929,8 +392,8 @@ void QDirectFBPaintEngine::clip(const QVectorPath &path, Qt::ClipOperation op)
void QDirectFBPaintEngine::clip(const QRect &rect, Qt::ClipOperation op)
{
Q_D(QDirectFBPaintEngine);
- d->setClipDirty();
- if (!d->clip()->hasRectClip && d->clip()->enabled) {
+ d->dirtyClip = true;
+ if (d->clip() && !d->clip()->hasRectClip && d->clip()->enabled) {
const QPoint bottom = d->transform.map(QPoint(0, rect.bottom()));
if (bottom.y() >= d->lastLockedHeight)
d->lock();
@@ -943,8 +406,11 @@ void QDirectFBPaintEngine::drawRects(const QRect *rects, int rectCount)
{
Q_D(QDirectFBPaintEngine);
d->updateClip();
- if (!d->dfbCanHandleClip() || d->matrixRotShear || !d->simpleBrush
- || !d->simplePen || d->forceRasterPrimitives) {
+ const QBrush &brush = state()->brush;
+ if (!d->dfbCanHandleClip() || d->matrixRotShear
+ || !d->simplePen || d->forceRasterPrimitives
+ || !d->isSimpleBrush(brush)) {
+ RASTERFALLBACK(DRAW_RECTS, rectCount, VOID_ARG(), VOID_ARG());
d->lock();
QRasterPaintEngine::drawRects(rects, rectCount);
return;
@@ -952,13 +418,11 @@ void QDirectFBPaintEngine::drawRects(const QRect *rects, int rectCount)
d->unlock();
- if (d->brush != Qt::NoBrush) {
- d->updateFlags();
- d->setDFBColor(d->brush.color());
+ if (brush != Qt::NoBrush) {
+ d->setDFBColor(brush.color());
d->fillRects(rects, rectCount);
}
if (d->pen != Qt::NoPen) {
- d->updateFlags();
d->setDFBColor(d->pen.color());
d->drawRects(rects, rectCount);
}
@@ -968,8 +432,11 @@ void QDirectFBPaintEngine::drawRects(const QRectF *rects, int rectCount)
{
Q_D(QDirectFBPaintEngine);
d->updateClip();
- if (!d->dfbCanHandleClip() || d->matrixRotShear || !d->simpleBrush
- || !d->simplePen || d->forceRasterPrimitives) {
+ const QBrush &brush = state()->brush;
+ if (!d->dfbCanHandleClip() || d->matrixRotShear
+ || !d->simplePen || d->forceRasterPrimitives
+ || !d->isSimpleBrush(brush)) {
+ RASTERFALLBACK(DRAW_RECTS, rectCount, VOID_ARG(), VOID_ARG());
d->lock();
QRasterPaintEngine::drawRects(rects, rectCount);
return;
@@ -977,13 +444,11 @@ void QDirectFBPaintEngine::drawRects(const QRectF *rects, int rectCount)
d->unlock();
- if (d->brush != Qt::NoBrush) {
- d->updateFlags();
- d->setDFBColor(d->brush.color());
+ if (brush != Qt::NoBrush) {
+ d->setDFBColor(brush.color());
d->fillRects(rects, rectCount);
}
if (d->pen != Qt::NoPen) {
- d->updateFlags();
d->setDFBColor(d->pen.color());
d->drawRects(rects, rectCount);
}
@@ -994,6 +459,7 @@ void QDirectFBPaintEngine::drawLines(const QLine *lines, int lineCount)
Q_D(QDirectFBPaintEngine);
d->updateClip();
if (!d->simplePen || !d->dfbCanHandleClip() || d->forceRasterPrimitives) {
+ RASTERFALLBACK(DRAW_LINES, lineCount, VOID_ARG(), VOID_ARG());
d->lock();
QRasterPaintEngine::drawLines(lines, lineCount);
return;
@@ -1001,7 +467,6 @@ void QDirectFBPaintEngine::drawLines(const QLine *lines, int lineCount)
if (d->pen != Qt::NoPen) {
d->unlock();
- d->updateFlags();
d->setDFBColor(d->pen.color());
d->drawLines(lines, lineCount);
}
@@ -1012,6 +477,7 @@ void QDirectFBPaintEngine::drawLines(const QLineF *lines, int lineCount)
Q_D(QDirectFBPaintEngine);
d->updateClip();
if (!d->simplePen || !d->dfbCanHandleClip() || d->forceRasterPrimitives) {
+ RASTERFALLBACK(DRAW_LINES, lineCount, VOID_ARG(), VOID_ARG());
d->lock();
QRasterPaintEngine::drawLines(lines, lineCount);
return;
@@ -1019,7 +485,6 @@ void QDirectFBPaintEngine::drawLines(const QLineF *lines, int lineCount)
if (d->pen != Qt::NoPen) {
d->unlock();
- d->updateFlags();
d->setDFBColor(d->pen.color());
d->drawLines(lines, lineCount);
}
@@ -1030,22 +495,53 @@ void QDirectFBPaintEngine::drawImage(const QRectF &r, const QImage &image,
Qt::ImageConversionFlags flags)
{
Q_D(QDirectFBPaintEngine);
- Q_UNUSED(flags); // XXX
+ Q_UNUSED(flags);
+
+ /* This is hard to read. The way it works is like this:
+
+ - If you do not have support for preallocated surfaces and do not use an
+ image cache we always fall back to raster engine.
+
+ - If it's rotated/sheared/mirrored (negative scale) or we can't
+ clip it we fall back to raster engine.
+
+ - If we don't cache the image, but we do have support for
+ preallocated surfaces we fall back to the raster engine if the
+ image is in a format DirectFB can't handle.
+
+ - If we do cache the image but don't have support for preallocated
+ images and the cost of caching the image (bytes used) is higher
+ than the max image cache size we fall back to raster engine.
+ */
-#ifndef QT_NO_DIRECTFB_PREALLOCATED
d->updateClip();
- if (!d->dfbCanHandleClip(r) || d->matrixRotShear)
+#if !defined QT_NO_DIRECTFB_PREALLOCATED || defined QT_DIRECTFB_IMAGECACHE
+ if (d->matrixRotShear
+ || d->scale == QDirectFBPaintEnginePrivate::NegativeScale
+ || !d->dfbCanHandleClip(r)
+#ifndef QT_DIRECTFB_IMAGECACHE
+ || QDirectFBScreen::getSurfacePixelFormat(image.format()) == DSPF_UNKNOWN
+#elif defined QT_NO_DIRECTFB_PREALLOCATED
+ || QDirectFBPaintEnginePrivate::cacheCost(image) > imageCache.maxCost()
+#endif
+ )
#endif
{
+ RASTERFALLBACK(DRAW_IMAGE, r, image.size(), sr);
d->lock();
QRasterPaintEngine::drawImage(r, image, sr, flags);
return;
}
-
-#ifndef QT_NO_DIRECTFB_PREALLOCATED
+#if !defined QT_NO_DIRECTFB_PREALLOCATED || defined QT_DIRECTFB_IMAGECACHE
d->unlock();
- d->updateFlags();
- d->drawImage(r, image, sr);
+ bool release;
+ IDirectFBSurface *imgSurface = d->getSurface(image, &release);
+ d->prepareForBlit(QDirectFBScreen::hasAlpha(imgSurface));
+ d->blit(r, imgSurface, sr);
+ if (release) {
+ imgSurface->ReleaseSource(imgSurface);
+ imgSurface->Release(imgSurface);
+ }
#endif
}
@@ -1061,18 +557,23 @@ void QDirectFBPaintEngine::drawPixmap(const QRectF &r, const QPixmap &pixmap,
d->updateClip();
if (pixmap.pixmapData()->classId() != QPixmapData::DirectFBClass) {
+ RASTERFALLBACK(DRAW_PIXMAP, r, pixmap.size(), sr);
d->lock();
QRasterPaintEngine::drawPixmap(r, pixmap, sr);
- }
- else if (!d->dfbCanHandleClip(r) || d->matrixRotShear) {
- const QImage *img = static_cast<QDirectFBPixmapData*>(pixmap.pixmapData())->buffer();
+ } else if (!d->dfbCanHandleClip(r) || d->matrixRotShear
+ || d->scale == QDirectFBPaintEnginePrivate::NegativeScale) {
+ RASTERFALLBACK(DRAW_PIXMAP, r, pixmap.size(), sr);
+ const QImage *img = static_cast<QDirectFBPixmapData*>(pixmap.pixmapData())->buffer(DSLF_READ);
d->lock();
QRasterPaintEngine::drawImage(r, *img, sr);
- }
- else {
+ } else {
d->unlock();
- d->updateFlags();
- d->drawPixmap(r, pixmap, sr);
+ d->prepareForBlit(pixmap.hasAlphaChannel());
+ QPixmapData *data = pixmap.pixmapData();
+ Q_ASSERT(data->classId() == QPixmapData::DirectFBClass);
+ QDirectFBPixmapData *dfbData = static_cast<QDirectFBPixmapData*>(data);
+ IDirectFBSurface *s = dfbData->directFBSurface();
+ d->blit(r, s, sr);
}
}
@@ -1088,20 +589,20 @@ void QDirectFBPaintEngine::drawTiledPixmap(const QRectF &r,
Q_D(QDirectFBPaintEngine);
d->updateClip();
if (pixmap.pixmapData()->classId() != QPixmapData::DirectFBClass) {
+ RASTERFALLBACK(DRAW_TILED_PIXMAP, r, pixmap.size(), sp);
d->lock();
QRasterPaintEngine::drawTiledPixmap(r, pixmap, sp);
- }
- else if (!d->dfbCanHandleClip(r) || d->matrixRotShear || !sp.isNull()) {
- const QImage *img = static_cast<QDirectFBPixmapData*>(pixmap.pixmapData())->buffer();
+ } else if (!d->dfbCanHandleClip(r) || d->matrixRotShear || !sp.isNull()
+ || d->scale == QDirectFBPaintEnginePrivate::NegativeScale) {
+ RASTERFALLBACK(DRAW_TILED_PIXMAP, r, pixmap.size(), sp);
+ const QImage *img = static_cast<QDirectFBPixmapData*>(pixmap.pixmapData())->buffer(DSLF_READ);
d->lock();
QRasterPixmapData *data = new QRasterPixmapData(QPixmapData::PixmapType);
data->fromImage(*img, Qt::AutoColor);
const QPixmap pix(data);
QRasterPaintEngine::drawTiledPixmap(r, pix, sp);
- }
- else {
+ } else {
d->unlock();
- d->updateFlags();
d->drawTiledPixmap(r, pixmap);
}
}
@@ -1109,6 +610,7 @@ void QDirectFBPaintEngine::drawTiledPixmap(const QRectF &r,
void QDirectFBPaintEngine::stroke(const QVectorPath &path, const QPen &pen)
{
+ RASTERFALLBACK(STROKE_PATH, path, VOID_ARG(), VOID_ARG());
Q_D(QDirectFBPaintEngine);
d->lock();
QRasterPaintEngine::stroke(path, pen);
@@ -1116,6 +618,7 @@ void QDirectFBPaintEngine::stroke(const QVectorPath &path, const QPen &pen)
void QDirectFBPaintEngine::drawPath(const QPainterPath &path)
{
+ RASTERFALLBACK(DRAW_PATH, path, VOID_ARG(), VOID_ARG());
Q_D(QDirectFBPaintEngine);
d->lock();
QRasterPaintEngine::drawPath(path);
@@ -1123,6 +626,7 @@ void QDirectFBPaintEngine::drawPath(const QPainterPath &path)
void QDirectFBPaintEngine::drawPoints(const QPointF *points, int pointCount)
{
+ RASTERFALLBACK(DRAW_POINTS, pointCount, VOID_ARG(), VOID_ARG());
Q_D(QDirectFBPaintEngine);
d->lock();
QRasterPaintEngine::drawPoints(points, pointCount);
@@ -1130,6 +634,7 @@ void QDirectFBPaintEngine::drawPoints(const QPointF *points, int pointCount)
void QDirectFBPaintEngine::drawPoints(const QPoint *points, int pointCount)
{
+ RASTERFALLBACK(DRAW_POINTS, pointCount, VOID_ARG(), VOID_ARG());
Q_D(QDirectFBPaintEngine);
d->lock();
QRasterPaintEngine::drawPoints(points, pointCount);
@@ -1137,6 +642,7 @@ void QDirectFBPaintEngine::drawPoints(const QPoint *points, int pointCount)
void QDirectFBPaintEngine::drawEllipse(const QRectF &rect)
{
+ RASTERFALLBACK(DRAW_ELLIPSE, rect, VOID_ARG(), VOID_ARG());
Q_D(QDirectFBPaintEngine);
d->lock();
QRasterPaintEngine::drawEllipse(rect);
@@ -1145,6 +651,7 @@ void QDirectFBPaintEngine::drawEllipse(const QRectF &rect)
void QDirectFBPaintEngine::drawPolygon(const QPointF *points, int pointCount,
PolygonDrawMode mode)
{
+ RASTERFALLBACK(DRAW_POLYGON, pointCount, mode, VOID_ARG());
Q_D(QDirectFBPaintEngine);
d->lock();
QRasterPaintEngine::drawPolygon(points, pointCount, mode);
@@ -1153,6 +660,7 @@ void QDirectFBPaintEngine::drawPolygon(const QPointF *points, int pointCount,
void QDirectFBPaintEngine::drawPolygon(const QPoint *points, int pointCount,
PolygonDrawMode mode)
{
+ RASTERFALLBACK(DRAW_POLYGON, pointCount, mode, VOID_ARG());
Q_D(QDirectFBPaintEngine);
d->lock();
QRasterPaintEngine::drawPolygon(points, pointCount, mode);
@@ -1161,6 +669,7 @@ void QDirectFBPaintEngine::drawPolygon(const QPoint *points, int pointCount,
void QDirectFBPaintEngine::drawTextItem(const QPointF &p,
const QTextItem &textItem)
{
+ RASTERFALLBACK(DRAW_TEXT, p, textItem.text(), VOID_ARG());
Q_D(QDirectFBPaintEngine);
d->lock();
QRasterPaintEngine::drawTextItem(p, textItem);
@@ -1168,6 +677,7 @@ void QDirectFBPaintEngine::drawTextItem(const QPointF &p,
void QDirectFBPaintEngine::fill(const QVectorPath &path, const QBrush &brush)
{
+ RASTERFALLBACK(FILL_PATH, path, brush, VOID_ARG());
Q_D(QDirectFBPaintEngine);
d->lock();
QRasterPaintEngine::fill(path, brush);
@@ -1184,7 +694,6 @@ void QDirectFBPaintEngine::fillRect(const QRectF &rect, const QBrush &brush)
if (d->forceRasterPrimitives)
break;
d->unlock();
- d->updateFlags();
d->setDFBColor(brush.color());
const QRect r = d->transform.mapRect(rect).toRect();
d->surface->FillRectangle(d->surface, r.x(), r.y(),
@@ -1194,7 +703,6 @@ void QDirectFBPaintEngine::fillRect(const QRectF &rect, const QBrush &brush)
if (state()->brushOrigin == QPointF() && brush.transform().isIdentity()) {
//could handle certain types of brush.transform() E.g. scale
d->unlock();
- d->updateFlags();
d->drawTiledPixmap(rect, brush.texture());
return;
}
@@ -1203,6 +711,7 @@ void QDirectFBPaintEngine::fillRect(const QRectF &rect, const QBrush &brush)
break;
}
}
+ RASTERFALLBACK(FILL_RECT, rect, brush, VOID_ARG());
d->lock();
QRasterPaintEngine::fillRect(rect, brush);
}
@@ -1212,11 +721,11 @@ void QDirectFBPaintEngine::fillRect(const QRectF &rect, const QColor &color)
Q_D(QDirectFBPaintEngine);
d->updateClip();
if (!d->dfbCanHandleClip() || d->matrixRotShear || d->forceRasterPrimitives) {
+ RASTERFALLBACK(FILL_RECT, rect, color, VOID_ARG());
d->lock();
QRasterPaintEngine::fillRect(rect, color);
} else {
d->unlock();
- d->updateFlags();
d->setDFBColor(color);
const QRect r = d->transform.mapRect(rect).toRect();
d->surface->FillRectangle(d->surface, r.x(), r.y(),
@@ -1229,6 +738,7 @@ void QDirectFBPaintEngine::drawColorSpans(const QSpan *spans, int count,
{
Q_D(QDirectFBPaintEngine);
if (d->forceRasterPrimitives) {
+ RASTERFALLBACK(DRAW_COLORSPANS, count, color, VOID_ARG());
d->lock();
QRasterPaintEngine::drawColorSpans(spans, count, color);
} else {
@@ -1246,6 +756,7 @@ void QDirectFBPaintEngine::drawColorSpans(const QSpan *spans, int count,
} else {
DFBSpan span = { spans[i].x, spans[i].len };
uint c = BYTE_MUL(color, spans[i].coverage);
+ // ### how does this play with setDFBColor
d->surface->SetColor(d->surface,
qRed(c), qGreen(c), qBlue(c), qAlpha(c));
d->surface->FillSpans(d->surface, spans[i].y, &span, 1);
@@ -1266,9 +777,463 @@ void QDirectFBPaintEngine::drawBufferSpan(const uint *buffer, int bufsize,
{
Q_D(QDirectFBPaintEngine);
IDirectFBSurface *src = d->surfaceCache->getSurface(buffer, bufsize);
+ // ### how does this play with setDFBColor
src->SetColor(src, 0, 0, 0, const_alpha);
const DFBRectangle rect = { 0, 0, length, 1 };
d->surface->Blit(d->surface, src, &rect, x, y);
}
+#ifdef QT_DIRECTFB_IMAGECACHE
+static void cachedImageCleanupHook(qint64 key)
+{
+ delete imageCache.take(key);
+}
+void QDirectFBPaintEngine::initImageCache(int size)
+{
+ Q_ASSERT(size >= 0);
+ imageCache.setMaxCost(size);
+ typedef void (*_qt_image_cleanup_hook_64)(qint64);
+ extern Q_GUI_EXPORT _qt_image_cleanup_hook_64 qt_image_cleanup_hook_64;
+ qt_image_cleanup_hook_64 = ::cachedImageCleanupHook;
+}
+
+#endif // QT_DIRECTFB_IMAGECACHE
+
+// ---- QDirectFBPaintEnginePrivate ----
+
+
+QDirectFBPaintEnginePrivate::QDirectFBPaintEnginePrivate(QDirectFBPaintEngine *p)
+ : surface(0), antialiased(false), forceRasterPrimitives(false), simplePen(false),
+ matrixRotShear(false), scale(NoScale), lastLockedHeight(-1),
+ fbWidth(-1), fbHeight(-1), opacity(255), drawFlagsFromCompositionMode(0),
+ blitFlagsFromCompositionMode(0), porterDuffRule(DSPD_SRC_OVER), dirtyClip(true),
+ dfbHandledClip(false), dfbDevice(0), lockedMemory(0), q(p)
+{
+ fb = QDirectFBScreen::instance()->dfb();
+ ignoreSystemClip = QDirectFBScreen::instance()->directFBFlags() & QDirectFBScreen::IgnoreSystemClip;
+ surfaceCache = new SurfaceCache;
+}
+
+QDirectFBPaintEnginePrivate::~QDirectFBPaintEnginePrivate()
+{
+ delete surfaceCache;
+}
+
+bool QDirectFBPaintEnginePrivate::dfbCanHandleClip(const QRect &rect) const
+{
+ // TODO: Check to see if DirectFB can handle the clip for the given rect
+ return dfbHandledClip;
+}
+
+bool QDirectFBPaintEnginePrivate::dfbCanHandleClip(const QRectF &rect) const
+{
+ // TODO: Check to see if DirectFB can handle the clip for the given rect
+ return dfbHandledClip;
+}
+
+bool QDirectFBPaintEnginePrivate::dfbCanHandleClip() const
+{
+ return dfbHandledClip;
+}
+
+bool QDirectFBPaintEnginePrivate::isSimpleBrush(const QBrush &brush) const
+{
+ return (brush.style() == Qt::NoBrush) || (brush.style() == Qt::SolidPattern && !antialiased);
+}
+
+void QDirectFBPaintEnginePrivate::lock()
+{
+ // We will potentially get a new pointer to the buffer after a
+ // lock so we need to call the base implementation of prepare so
+ // it updates its rasterBuffer to point to the new buffer address.
+ Q_ASSERT(dfbDevice);
+ if (dfbDevice->lockFlags() != (DSLF_WRITE|DSLF_READ)
+ || dfbDevice->height() != lastLockedHeight
+ || dfbDevice->memory() != lockedMemory) {
+ prepare(dfbDevice);
+ lastLockedHeight = dfbDevice->height();
+ lockedMemory = dfbDevice->memory();
+ }
+}
+
+void QDirectFBPaintEnginePrivate::unlock()
+{
+ Q_ASSERT(dfbDevice);
+ dfbDevice->unlockDirectFB();
+ lockedMemory = 0;
+}
+
+void QDirectFBPaintEnginePrivate::setTransform(const QTransform &m)
+{
+ transform = m;
+ matrixRotShear = (transform.m12() != 0 || transform.m21() != 0);
+ if (qMin(transform.m11(), transform.m22()) < 0) {
+ scale = NegativeScale;
+ } else if (transform.m11() != 1 || transform.m22() != 1) {
+ scale = Scaled;
+ } else {
+ scale = NoScale;
+ }
+}
+
+void QDirectFBPaintEnginePrivate::begin(QPaintDevice *device)
+{
+ lastLockedHeight = -1;
+ if (device->devType() == QInternal::CustomRaster)
+ dfbDevice = static_cast<QDirectFBPaintDevice*>(device);
+ else if (device->devType() == QInternal::Pixmap) {
+ QPixmapData *data = static_cast<QPixmap*>(device)->pixmapData();
+ Q_ASSERT(data->classId() == QPixmapData::DirectFBClass);
+ QDirectFBPixmapData* dfbPixmapData = static_cast<QDirectFBPixmapData*>(data);
+ dfbDevice = static_cast<QDirectFBPaintDevice*>(dfbPixmapData);
+ }
+
+ if (dfbDevice)
+ surface = dfbDevice->directFBSurface();
+
+ if (!surface) {
+ qFatal("QDirectFBPaintEngine used on an invalid device: 0x%x",
+ device->devType());
+ }
+ lockedMemory = 0;
+ forceRasterPrimitives = dfbDevice->forceRasterPrimitives();
+
+ surface->GetSize(surface, &fbWidth, &fbHeight);
+
+ setTransform(QTransform());
+ antialiased = false;
+ opacity = 255;
+ setCompositionMode(q->state()->compositionMode());
+ dirtyClip = true;
+ setPen(q->state()->pen);
+ setDFBColor(pen.color());
+}
+
+void QDirectFBPaintEnginePrivate::end()
+{
+ lockedMemory = 0;
+ dfbDevice = 0;
+ surface->ReleaseSource(surface);
+ surface->SetClip(surface, NULL);
+ surface = 0;
+}
+
+void QDirectFBPaintEnginePrivate::setPen(const QPen &p)
+{
+ pen = p;
+ simplePen = (pen.style() == Qt::NoPen) ||
+ (pen.style() == Qt::SolidLine
+ && !antialiased
+ && (pen.brush().style() == Qt::SolidPattern)
+ && (pen.widthF() <= 1 && scale != NoScale));
+}
+
+void QDirectFBPaintEnginePrivate::setCompositionMode(QPainter::CompositionMode mode)
+{
+ blitFlagsFromCompositionMode = DSBLIT_NOFX;
+ drawFlagsFromCompositionMode = DSDRAW_NOFX;
+
+ bool blend = true;
+ switch (mode) {
+ case QPainter::CompositionMode_SourceOver:
+ porterDuffRule = DSPD_SRC_OVER;
+ break;
+ case QPainter::CompositionMode_DestinationOver:
+ porterDuffRule = DSPD_DST_OVER;
+ break;
+ case QPainter::CompositionMode_Clear:
+ porterDuffRule = DSPD_CLEAR;
+ blend = false;
+ break;
+ case QPainter::CompositionMode_Source:
+ porterDuffRule = DSPD_SRC;
+ blend = false;
+ break;
+ case QPainter::CompositionMode_Destination:
+ porterDuffRule = DSPD_NONE; // ### need to double check this
+ blend = false;
+ return;
+ case QPainter::CompositionMode_SourceIn:
+ porterDuffRule = DSPD_SRC_IN;
+ break;
+ case QPainter::CompositionMode_DestinationIn:
+ porterDuffRule = DSPD_DST_IN;
+ break;
+ case QPainter::CompositionMode_SourceOut:
+ porterDuffRule = DSPD_SRC_OUT;
+ break;
+ case QPainter::CompositionMode_DestinationOut:
+ porterDuffRule = DSPD_DST_OUT;
+ break;
+ case QPainter::CompositionMode_Xor:
+ porterDuffRule = DSPD_XOR;
+ blitFlagsFromCompositionMode |= DSBLIT_XOR;
+ drawFlagsFromCompositionMode |= DSDRAW_XOR;
+ break;
+// case QPainter::CompositionMode_Plus: // ???
+// porterDuffRule = DSPD_ADD;
+// break;
+ default:
+ qWarning("QDirectFBPaintEnginePrivate::setCompositionMode(): "
+ "mode %d not implemented", mode);
+ return;
+ }
+ // intentially not comparing with current porterDuffRule. surface might have changed.
+ if (blend) {
+ blitFlagsFromCompositionMode |= DSBLIT_BLEND_ALPHACHANNEL;
+ drawFlagsFromCompositionMode |= DSDRAW_BLEND;
+ }
+ if (opacity != 255) {
+ setOpacity(opacity);
+ }
+}
+
+void QDirectFBPaintEnginePrivate::setOpacity(quint8 op)
+{
+ opacity = op;
+ if (opacity == 255) {
+ blitFlagsFromCompositionMode &= ~DSBLIT_BLEND_COLORALPHA;
+ } else {
+ blitFlagsFromCompositionMode |= DSBLIT_BLEND_COLORALPHA;
+ }
+}
+
+void QDirectFBPaintEnginePrivate::setRenderHints(QPainter::RenderHints hints)
+{
+ const bool old = antialiased;
+ antialiased = bool(hints & QPainter::Antialiasing);
+ if (old != antialiased) {
+ setPen(q->state()->pen);
+ }
+}
+
+void QDirectFBPaintEnginePrivate::prepareForBlit(bool alpha)
+{
+ quint32 blittingFlags = blitFlagsFromCompositionMode;
+ if (alpha) {
+ surface->SetPorterDuff(surface,
+ (blittingFlags & DSBLIT_BLEND_COLORALPHA)
+ ? DSPD_NONE
+ : porterDuffRule);
+ } else {
+ blittingFlags &= ~DSBLIT_BLEND_ALPHACHANNEL;
+ surface->SetPorterDuff(surface, DSPD_NONE);
+ }
+ surface->SetColor(surface, 0xff, 0xff, 0xff, opacity);
+ surface->SetBlittingFlags(surface, DFBSurfaceBlittingFlags(blittingFlags));
+}
+
+void QDirectFBPaintEnginePrivate::setDFBColor(const QColor &color)
+{
+ Q_ASSERT(surface);
+ const quint8 alpha = (opacity == 255 ?
+ color.alpha() : ALPHA_MUL(color.alpha(), opacity));
+ surface->SetColor(surface,
+ color.red(), color.green(), color.blue(), alpha);
+ quint32 drawingFlags = drawFlagsFromCompositionMode;
+ if (alpha == 255) {
+ drawingFlags &= ~DSDRAW_BLEND;
+ }
+ surface->SetPorterDuff(surface, DSPD_NONE);
+ // PorterDuff messes up alpha values for primitives
+ surface->SetDrawingFlags(surface, DFBSurfaceDrawingFlags(drawingFlags));
+}
+
+void QDirectFBPaintEnginePrivate::drawLines(const QLine *lines, int n)
+{
+ for (int i = 0; i < n; ++i) {
+ const QLine l = transform.map(lines[i]);
+ surface->DrawLine(surface, l.x1(), l.y1(), l.x2(), l.y2());
+ }
+}
+
+void QDirectFBPaintEnginePrivate::drawLines(const QLineF *lines, int n)
+{
+ for (int i = 0; i < n; ++i) {
+ const QLine l = transform.map(lines[i]).toLine();
+ surface->DrawLine(surface, l.x1(), l.y1(), l.x2(), l.y2());
+ }
+}
+
+void QDirectFBPaintEnginePrivate::fillRegion(const QRegion &region)
+{
+ Q_ASSERT(isSimpleBrush(q->state()->brush));
+ setDFBColor(q->state()->brush.color());
+ const QVector<QRect> rects = region.rects();
+ const int n = rects.size();
+ fillRects(rects.constData(), n);
+}
+
+void QDirectFBPaintEnginePrivate::fillRects(const QRect *rects, int n)
+{
+ for (int i = 0; i < n; ++i) {
+ const QRect r = transform.mapRect(rects[i]);
+ surface->FillRectangle(surface, r.x(), r.y(),
+ r.width(), r.height());
+ }
+}
+
+void QDirectFBPaintEnginePrivate::fillRects(const QRectF *rects, int n)
+{
+ for (int i = 0; i < n; ++i) {
+ const QRect r = transform.mapRect(rects[i]).toRect();
+ surface->FillRectangle(surface, r.x(), r.y(),
+ r.width(), r.height());
+ }
+}
+
+void QDirectFBPaintEnginePrivate::drawRects(const QRect *rects, int n)
+{
+ for (int i = 0; i < n; ++i) {
+ const QRect r = transform.mapRect(rects[i]);
+ surface->DrawRectangle(surface, r.x(), r.y(),
+ r.width() + 1, r.height() + 1);
+ }
+}
+
+void QDirectFBPaintEnginePrivate::drawRects(const QRectF *rects, int n)
+{
+ for (int i = 0; i < n; ++i) {
+ const QRect r = transform.mapRect(rects[i]).toRect();
+ surface->DrawRectangle(surface, r.x(), r.y(),
+ r.width() + 1, r.height() + 1);
+ }
+}
+
+IDirectFBSurface *QDirectFBPaintEnginePrivate::getSurface(const QImage &img, bool *release)
+{
+#ifndef QT_DIRECTFB_IMAGECACHE
+ *release = true;
+ return QDirectFBScreen::instance()->createDFBSurface(img, QDirectFBScreen::DontTrackSurface);
+#else
+ const qint64 key = img.cacheKey();
+ *release = false;
+ if (imageCache.contains(key)) {
+ return imageCache[key]->surface;
+ }
+
+ const int cost = cacheCost(img);
+ const bool cache = cost <= imageCache.maxCost();
+ QDirectFBScreen *screen = QDirectFBScreen::instance();
+ const QImage::Format format = (img.format() == screen->alphaPixmapFormat() || QDirectFBPixmapData::hasAlphaChannel(img)
+ ? screen->alphaPixmapFormat() : screen->pixelFormat());
+
+ IDirectFBSurface *surface = screen->copyToDFBSurface(img, format,
+ cache
+ ? QDirectFBScreen::TrackSurface
+ : QDirectFBScreen::DontTrackSurface);
+ if (cache) {
+ CachedImage *cachedImage = new CachedImage;
+ const_cast<QImage&>(img).data_ptr()->is_cached = true;
+ cachedImage->surface = surface;
+ imageCache.insert(key, cachedImage, cost);
+ } else {
+ *release = true;
+ }
+ return surface;
+#endif
+}
+
+
+void QDirectFBPaintEnginePrivate::blit(const QRectF &dest, IDirectFBSurface *s, const QRectF &src)
+{
+ const QRect sr = src.toRect();
+ const QRect dr = transform.mapRect(dest).toRect();
+ const DFBRectangle sRect = { sr.x(), sr.y(), sr.width(), sr.height() };
+ DFBResult result;
+
+ if (dr.size() == sr.size()) {
+ result = surface->Blit(surface, s, &sRect, dr.x(), dr.y());
+ } else {
+ const DFBRectangle dRect = { dr.x(), dr.y(), dr.width(), dr.height() };
+ result = surface->StretchBlit(surface, s, &sRect, &dRect);
+ }
+ if (result != DFB_OK)
+ DirectFBError("QDirectFBPaintEngine::drawPixmap()", result);
+}
+
+void QDirectFBPaintEnginePrivate::drawTiledPixmap(const QRectF &dest,
+ const QPixmap &pixmap)
+{
+ prepareForBlit(pixmap.hasAlphaChannel());
+ QPixmapData *data = pixmap.pixmapData();
+ Q_ASSERT(data->classId() == QPixmapData::DirectFBClass);
+ QDirectFBPixmapData *dfbData = static_cast<QDirectFBPixmapData*>(data);
+ IDirectFBSurface *s = dfbData->directFBSurface();
+ const QRect dr = transform.mapRect(dest).toRect();
+ DFBResult result = DFB_OK;
+
+ if (scale == NoScale && dr == QRect(0, 0, fbWidth, fbHeight)) {
+ result = surface->TileBlit(surface, s, 0, 0, 0);
+ } else if (scale == NoScale) {
+ const int dx = pixmap.width();
+ const int dy = pixmap.height();
+ const DFBRectangle rect = { 0, 0, dx, dy };
+ QVarLengthArray<DFBRectangle> rects;
+ QVarLengthArray<DFBPoint> points;
+
+ for (int y = dr.y(); y <= dr.bottom(); y += dy) {
+ for (int x = dr.x(); x <= dr.right(); x += dx) {
+ rects.append(rect);
+ const DFBPoint point = { x, y };
+ points.append(point);
+ }
+ }
+ result = surface->BatchBlit(surface, s, rects.constData(),
+ points.constData(), points.size());
+ } else {
+ const QRect sr = transform.mapRect(QRect(0, 0, pixmap.width(), pixmap.height()));
+ const int dx = sr.width();
+ const int dy = sr.height();
+ const DFBRectangle sRect = { 0, 0, dx, dy };
+
+ for (int y = dr.y(); y <= dr.bottom(); y += dy) {
+ for (int x = dr.x(); x <= dr.right(); x += dx) {
+ const DFBRectangle dRect = { x, y, dx, dy };
+ result = surface->StretchBlit(surface, s, &sRect, &dRect);
+ if (result != DFB_OK) {
+ y = dr.bottom() + 1;
+ break;
+ }
+ }
+ }
+ }
+
+ if (result != DFB_OK)
+ DirectFBError("QDirectFBPaintEngine::drawTiledPixmap()", result);
+}
+
+void QDirectFBPaintEnginePrivate::updateClip()
+{
+ if (!dirtyClip)
+ return;
+
+ const QClipData *clipData = clip();
+ if (!clipData || !clipData->enabled) {
+ surface->SetClip(surface, NULL);
+ dfbHandledClip = true;
+ } else if (clipData->hasRectClip) {
+ const DFBRegion r = {
+ clipData->clipRect.x(),
+ clipData->clipRect.y(),
+ clipData->clipRect.x() + clipData->clipRect.width(),
+ clipData->clipRect.y() + clipData->clipRect.height()
+ };
+ surface->SetClip(surface, &r);
+ dfbHandledClip = true;
+ } else if (clipData->hasRegionClip && ignoreSystemClip && clipData->clipRegion == systemClip) {
+ dfbHandledClip = true;
+ } else {
+ dfbHandledClip = false;
+ }
+
+ dirtyClip = false;
+}
+
+void QDirectFBPaintEnginePrivate::systemStateChanged()
+{
+ dirtyClip = true;
+ QRasterPaintEnginePrivate::systemStateChanged();
+}
+
#endif // QT_NO_DIRECTFB
diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.h b/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.h
index 3c2cefa..d33255b 100644
--- a/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.h
+++ b/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.h
@@ -96,7 +96,6 @@ public:
virtual void clipEnabledChanged();
virtual void penChanged();
- virtual void brushChanged();
virtual void opacityChanged();
virtual void compositionModeChanged();
virtual void renderHintsChanged();
@@ -107,6 +106,7 @@ public:
virtual void clip(const QVectorPath &path, Qt::ClipOperation op);
virtual void clip(const QRect &rect, Qt::ClipOperation op);
+ static void initImageCache(int size);
};
QT_END_HEADER
diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbpixmap.cpp b/src/plugins/gfxdrivers/directfb/qdirectfbpixmap.cpp
index 9f5c055..c9b676a 100644
--- a/src/plugins/gfxdrivers/directfb/qdirectfbpixmap.cpp
+++ b/src/plugins/gfxdrivers/directfb/qdirectfbpixmap.cpp
@@ -51,7 +51,7 @@ static int global_ser_no = 0;
QDirectFBPixmapData::QDirectFBPixmapData(PixelType pixelType)
: QPixmapData(pixelType, DirectFBClass),
- engine(0)
+ engine(0), format(QImage::Format_Invalid), alpha(false)
{
setSerialNumber(0);
}
@@ -67,16 +67,18 @@ QDirectFBPixmapData::~QDirectFBPixmapData()
void QDirectFBPixmapData::resize(int width, int height)
{
if (width <= 0 || height <= 0) {
- setSerialNumber(0);
+ invalidate();
return;
}
+ format = screen->pixelFormat();
dfbSurface = QDirectFBScreen::instance()->createDFBSurface(QSize(width, height),
- screen->pixelFormat(),
+ format,
QDirectFBScreen::TrackSurface);
- forceRaster = (screen->pixelFormat() == QImage::Format_RGB32);
+ alpha = false;
+ forceRaster = (format == QImage::Format_RGB32);
if (!dfbSurface) {
- setSerialNumber(0);
+ invalidate();
qWarning("QDirectFBPixmapData::resize(): Unable to allocate surface");
return;
}
@@ -84,18 +86,111 @@ void QDirectFBPixmapData::resize(int width, int height)
setSerialNumber(++global_ser_no);
}
-void QDirectFBPixmapData::fromImage(const QImage &img,
- Qt::ImageConversionFlags)
+
+// mostly duplicated from qimage.cpp (QImageData::checkForAlphaPixels)
+static bool checkForAlphaPixels(const QImage &img)
+{
+ const uchar *bits = img.bits();
+ const int bytes_per_line = img.bytesPerLine();
+ const uchar *end_bits = bits + bytes_per_line;
+ const int width = img.width();
+ const int height = img.height();
+ switch (img.format()) {
+ case QImage::Format_Indexed8:
+ return img.hasAlphaChannel();
+ case QImage::Format_ARGB32:
+ case QImage::Format_ARGB32_Premultiplied:
+ for (int y=0; y<height; ++y) {
+ for (int x=0; x<width; ++x) {
+ if ((((uint *)bits)[x] & 0xff000000) != 0xff000000) {
+ return true;
+ }
+ }
+ bits += bytes_per_line;
+ }
+ break;
+
+ case QImage::Format_ARGB8555_Premultiplied:
+ case QImage::Format_ARGB8565_Premultiplied:
+ for (int y=0; y<height; ++y) {
+ while (bits < end_bits) {
+ if (bits[0] != 0) {
+ return true;
+ }
+ bits += 3;
+ }
+ bits = end_bits;
+ end_bits += bytes_per_line;
+ }
+ break;
+
+ case QImage::Format_ARGB6666_Premultiplied:
+ for (int y=0; y<height; ++y) {
+ while (bits < end_bits) {
+ if ((bits[0] & 0xfc) != 0) {
+ return true;
+ }
+ bits += 3;
+ }
+ bits = end_bits;
+ end_bits += bytes_per_line;
+ }
+ break;
+
+ case QImage::Format_ARGB4444_Premultiplied:
+ for (int y=0; y<height; ++y) {
+ while (bits < end_bits) {
+ if ((bits[0] & 0xf0) != 0) {
+ return true;
+ }
+ bits += 2;
+ }
+ bits = end_bits;
+ end_bits += bytes_per_line;
+ }
+ break;
+
+ default:
+ break;
+ }
+
+ return false;
+}
+
+bool QDirectFBPixmapData::hasAlphaChannel(const QImage &img)
{
- const QImage::Format format = img.hasAlphaChannel() ?
- screen->alphaPixmapFormat()
- : screen->pixelFormat();
+#ifndef QT_NO_DIRECTFB_OPAQUE_DETECTION
+ return ::checkForAlphaPixels(img);
+#else
+ return img.hasAlphaChannel();
+#endif
+}
+
+
+void QDirectFBPixmapData::fromImage(const QImage &i,
+ Qt::ImageConversionFlags flags)
+{
+#ifdef QT_NO_DIRECTFB_OPAQUE_DETECTION
+ Q_UNUSED(flags);
+#endif
+ const QImage img = (i.depth() == 1 ? i.convertToFormat(screen->alphaPixmapFormat()) : i);
+ if (img.hasAlphaChannel()
+#ifndef QT_NO_DIRECTFB_OPAQUE_DETECTION
+ && (flags & Qt::NoOpaqueDetection || QDirectFBPixmapData::hasAlphaChannel(img))
+#endif
+ ) {
+ alpha = true;
+ format = screen->alphaPixmapFormat();
+ } else {
+ alpha = false;
+ format = screen->pixelFormat();
+ }
dfbSurface = screen->copyToDFBSurface(img, format,
QDirectFBScreen::TrackSurface);
forceRaster = (format == QImage::Format_RGB32);
if (!dfbSurface) {
qWarning("QDirectFBPixmapData::fromImage()");
- setSerialNumber(0);
+ invalidate();
return;
}
setSerialNumber(++global_ser_no);
@@ -109,32 +204,54 @@ void QDirectFBPixmapData::copy(const QPixmapData *data, const QRect &rect)
}
IDirectFBSurface *src = static_cast<const QDirectFBPixmapData*>(data)->directFBSurface();
- const QImage::Format format = (data->hasAlphaChannel()
- ? QDirectFBScreen::instance()->alphaPixmapFormat()
- : QDirectFBScreen::instance()->pixelFormat());
+ const bool hasAlpha = data->hasAlphaChannel();
+ format = (hasAlpha
+ ? QDirectFBScreen::instance()->alphaPixmapFormat()
+ : QDirectFBScreen::instance()->pixelFormat());
dfbSurface = screen->createDFBSurface(rect.size(), format,
QDirectFBScreen::TrackSurface);
if (!dfbSurface) {
qWarning("QDirectFBPixmapData::copy()");
- setSerialNumber(0);
+ invalidate();
return;
}
forceRaster = (format == QImage::Format_RGB32);
- dfbSurface->SetBlittingFlags(dfbSurface, DSBLIT_NOFX);
+ if (hasAlpha) {
+ dfbSurface->Clear(dfbSurface, 0, 0, 0, 0);
+ dfbSurface->SetBlittingFlags(dfbSurface, DSBLIT_BLEND_ALPHACHANNEL);
+ } else {
+ dfbSurface->SetBlittingFlags(dfbSurface, DSBLIT_NOFX);
+ }
const DFBRectangle blitRect = { rect.x(), rect.y(),
rect.width(), rect.height() };
DFBResult result = dfbSurface->Blit(dfbSurface, src, &blitRect, 0, 0);
+ dfbSurface->ReleaseSource(dfbSurface);
if (result != DFB_OK) {
DirectFBError("QDirectFBPixmapData::copy()", result);
- setSerialNumber(0);
+ invalidate();
return;
}
setSerialNumber(++global_ser_no);
}
+static inline bool isOpaqueFormat(QImage::Format format)
+{
+ switch (format) {
+ case QImage::Format_RGB32:
+ case QImage::Format_RGB16:
+ case QImage::Format_RGB666:
+ case QImage::Format_RGB555:
+ case QImage::Format_RGB888:
+ case QImage::Format_RGB444:
+ return true;
+ default:
+ break;
+ }
+ return false;
+}
void QDirectFBPixmapData::fill(const QColor &color)
{
@@ -143,21 +260,19 @@ void QDirectFBPixmapData::fill(const QColor &color)
Q_ASSERT(dfbSurface);
- if (color.alpha() < 255 && !hasAlphaChannel()) {
- DFBSurfaceDescription description;
- description.flags = DFBSurfaceDescriptionFlags(DSDESC_WIDTH |
- DSDESC_HEIGHT |
- DSDESC_PIXELFORMAT);
- dfbSurface->GetSize(dfbSurface, &description.width, &description.height);
- QDirectFBScreen::initSurfaceDescriptionPixelFormat(&description, screen->alphaPixmapFormat());
- screen->releaseDFBSurface(dfbSurface); // release old surface
+ alpha = (color.alpha() < 255);
- dfbSurface = screen->createDFBSurface(&description, QDirectFBScreen::TrackSurface);
+ if (alpha && ::isOpaqueFormat(format)) {
+ QSize size;
+ dfbSurface->GetSize(dfbSurface, &size.rwidth(), &size.rheight());
+ screen->releaseDFBSurface(dfbSurface);
+ format = screen->alphaPixmapFormat();
+ dfbSurface = screen->createDFBSurface(size, screen->alphaPixmapFormat(), QDirectFBScreen::TrackSurface);
forceRaster = false;
setSerialNumber(++global_ser_no);
if (!dfbSurface) {
qWarning("QDirectFBPixmapData::fill()");
- setSerialNumber(0);
+ invalidate();
return;
}
}
@@ -165,52 +280,23 @@ void QDirectFBPixmapData::fill(const QColor &color)
if (forceRaster) {
// in DSPF_RGB32 all dfb drawing causes the Alpha byte to be
// set to 0. This causes issues for the raster engine.
- char *mem;
- int bpl;
- const int h = QPixmapData::height();
- dfbSurface->Lock(dfbSurface, DSLF_WRITE, (void**)&mem, &bpl);
- const int c = color.rgba();
- for (int i = 0; i < h; ++i) {
- memset(mem, c, bpl);
- mem += bpl;
+ uchar *mem = QDirectFBScreen::lockSurface(dfbSurface, DSLF_WRITE, &bpl);
+ if (mem) {
+ const int h = QPixmapData::height();
+ const int w = QPixmapData::width() * 4; // 4 bytes per 32 bit pixel
+ const int c = color.rgba();
+ for (int i = 0; i < h; ++i) {
+ memset(mem, c, w);
+ mem += bpl;
+ }
+ dfbSurface->Unlock(dfbSurface);
}
- dfbSurface->Unlock(dfbSurface);
} else {
dfbSurface->Clear(dfbSurface, color.red(), color.green(), color.blue(),
color.alpha());
}
}
-bool QDirectFBPixmapData::hasAlphaChannel() const
-{
- if (!serialNumber())
- return false;
-
- // We don't need to ask DFB for this really. Can just keep track
- // of what image format this has. It should always have either
- // QDirectFBScreen::alphaPixmapFormat() or QScreen::pixelFormat()
-
- DFBSurfacePixelFormat format;
- dfbSurface->GetPixelFormat(dfbSurface, &format);
- switch (format) {
- case DSPF_ARGB1555:
- case DSPF_ARGB:
- case DSPF_LUT8:
- case DSPF_AiRGB:
- case DSPF_A1:
- case DSPF_ARGB2554:
- case DSPF_ARGB4444:
- case DSPF_AYUV:
- case DSPF_A4:
- case DSPF_ARGB1666:
- case DSPF_ARGB6666:
- case DSPF_LUT2:
- return true;
- default:
- return false;
- }
-}
-
QPixmap QDirectFBPixmapData::transformed(const QTransform &transform,
Qt::TransformationMode mode) const
{
@@ -235,13 +321,22 @@ QPixmap QDirectFBPixmapData::transformed(const QTransform &transform,
return QPixmap();
QDirectFBPixmapData *data = new QDirectFBPixmapData(QPixmapData::PixmapType);
- data->resize(size.width(), size.height());
-
- IDirectFBSurface *dest = data->dfbSurface;
- dest->SetBlittingFlags(dest, DSBLIT_NOFX);
+ DFBSurfaceBlittingFlags flags = DSBLIT_NOFX;
+ data->alpha = alpha;
+ if (alpha) {
+ flags = DSBLIT_BLEND_ALPHACHANNEL;
+ }
+ data->dfbSurface = screen->createDFBSurface(size,
+ format,
+ QDirectFBScreen::TrackSurface);
+ if (flags & DSBLIT_BLEND_ALPHACHANNEL) {
+ data->dfbSurface->Clear(data->dfbSurface, 0, 0, 0, 0);
+ }
+ data->dfbSurface->SetBlittingFlags(data->dfbSurface, flags);
const DFBRectangle destRect = { 0, 0, size.width(), size.height() };
- dest->StretchBlit(dest, dfbSurface, 0, &destRect);
+ data->dfbSurface->StretchBlit(data->dfbSurface, dfbSurface, 0, &destRect);
+ data->dfbSurface->ReleaseSource(data->dfbSurface);
return QPixmap(data);
}
@@ -251,12 +346,28 @@ QImage QDirectFBPixmapData::toImage() const
if (!dfbSurface)
return QImage();
+#ifndef QT_NO_DIRECTFB_PREALLOCATED
+ QImage ret(size(), QDirectFBScreen::getImageFormat(dfbSurface));
+ if (IDirectFBSurface *imgSurface = screen->createDFBSurface(ret, QDirectFBScreen::DontTrackSurface)) {
+ if (hasAlphaChannel()) {
+ imgSurface->SetBlittingFlags(imgSurface, DSBLIT_BLEND_ALPHACHANNEL);
+ imgSurface->Clear(imgSurface, 0, 0, 0, 0);
+ } else {
+ imgSurface->SetBlittingFlags(imgSurface, DSBLIT_NOFX);
+ }
+ imgSurface->Blit(imgSurface, dfbSurface, 0, 0, 0);
+ imgSurface->ReleaseSource(imgSurface);
+ imgSurface->Release(imgSurface);
+ return ret;
+ }
+#endif
+
QDirectFBPixmapData *that = const_cast<QDirectFBPixmapData*>(this);
const QImage *img = that->buffer();
return img->copy();
}
-QPaintEngine* QDirectFBPixmapData::paintEngine() const
+QPaintEngine *QDirectFBPixmapData::paintEngine() const
{
if (!engine) {
// QDirectFBPixmapData is also a QCustomRasterPaintDevice, so pass
@@ -267,9 +378,22 @@ QPaintEngine* QDirectFBPixmapData::paintEngine() const
return engine;
}
+QImage *QDirectFBPixmapData::buffer()
+{
+ lockDirectFB(DSLF_READ|DSLF_WRITE);
+ return lockedImage;
+}
-QImage* QDirectFBPixmapData::buffer()
+QImage * QDirectFBPixmapData::buffer(uint lockFlags)
{
- lockDirectFB();
+ lockDirectFB(lockFlags);
return lockedImage;
}
+
+void QDirectFBPixmapData::invalidate()
+{
+ setSerialNumber(0);
+ alpha = false;
+ format = QImage::Format_Invalid;
+}
+
diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbpixmap.h b/src/plugins/gfxdrivers/directfb/qdirectfbpixmap.h
index 32676f8..7cd60d6 100644
--- a/src/plugins/gfxdrivers/directfb/qdirectfbpixmap.h
+++ b/src/plugins/gfxdrivers/directfb/qdirectfbpixmap.h
@@ -64,18 +64,23 @@ public:
void fromImage(const QImage &image, Qt::ImageConversionFlags flags);
void copy(const QPixmapData *data, const QRect &rect);
void fill(const QColor &color);
- bool hasAlphaChannel() const;
+ inline bool hasAlphaChannel() const { return alpha; }
QPixmap transformed(const QTransform &matrix,
Qt::TransformationMode mode) const;
QImage toImage() const;
QPaintEngine* paintEngine() const;
- QImage *buffer();
+ virtual QImage *buffer();
+ QImage *buffer(uint lockFlags);
// Pure virtual in QPixmapData, so re-implement here and delegate to QDirectFBPaintDevice
int metric(QPaintDevice::PaintDeviceMetric m) const {return QDirectFBPaintDevice::metric(m);}
-
+ inline QImage::Format pixelFormat() const { return format; }
+ static bool hasAlphaChannel(const QImage &img);
private:
+ void invalidate();
QDirectFBPaintEngine *engine;
+ QImage::Format format;
+ bool alpha;
};
QT_END_HEADER
diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbscreen.cpp b/src/plugins/gfxdrivers/directfb/qdirectfbscreen.cpp
index fd6f48a..98e32ed 100644
--- a/src/plugins/gfxdrivers/directfb/qdirectfbscreen.cpp
+++ b/src/plugins/gfxdrivers/directfb/qdirectfbscreen.cpp
@@ -40,7 +40,7 @@
****************************************************************************/
#include "qdirectfbscreen.h"
-#include "qdirectfbsurface.h"
+#include "qdirectfbwindowsurface.h"
#include "qdirectfbpixmap.h"
#include "qdirectfbmouse.h"
#include "qdirectfbkeyboard.h"
@@ -80,12 +80,12 @@ public:
#ifndef QT_NO_DIRECTFB_KEYBOARD
QDirectFBKeyboardHandler *keyboard;
#endif
- bool videoonly;
+ QDirectFBScreen::DirectFBFlags directFBFlags;
QImage::Format alphaPixmapFormat;
};
-QDirectFBScreenPrivate::QDirectFBScreenPrivate(QDirectFBScreen* screen)
- : QWSGraphicsSystem(screen), dfb(0), dfbSurface(0), flipFlags(DSFLIP_BLIT)
+QDirectFBScreenPrivate::QDirectFBScreenPrivate(QDirectFBScreen *screen)
+ : QWSGraphicsSystem(screen), dfb(0), dfbSurface(0), flipFlags(DSFLIP_NONE)
#ifndef QT_NO_DIRECTFB_LAYER
, dfbLayer(0)
#endif
@@ -96,7 +96,7 @@ QDirectFBScreenPrivate::QDirectFBScreenPrivate(QDirectFBScreen* screen)
#ifndef QT_NO_DIRECTFB_KEYBOARD
, keyboard(0)
#endif
- , videoonly(false)
+ , directFBFlags(QDirectFBScreen::NoFlags)
, alphaPixmapFormat(QImage::Format_Invalid)
{
#ifndef QT_NO_QWS_SIGNALHANDLER
@@ -113,9 +113,9 @@ QDirectFBScreenPrivate::~QDirectFBScreenPrivate()
delete keyboard;
#endif
- foreach (IDirectFBSurface* surf, allocatedSurfaces)
- surf->Release(surf);
- allocatedSurfaces.clear();
+ for (QSet<IDirectFBSurface*>::const_iterator it = allocatedSurfaces.begin(); it != allocatedSurfaces.end(); ++it) {
+ (*it)->Release(*it);
+ }
if (dfbSurface)
dfbSurface->Release(dfbSurface);
@@ -137,7 +137,7 @@ QDirectFBScreenPrivate::~QDirectFBScreenPrivate()
// creates a preallocated surface with the same format as the image if
// possible.
-IDirectFBSurface* QDirectFBScreen::createDFBSurface(const QImage &img, SurfaceCreationOptions options)
+IDirectFBSurface *QDirectFBScreen::createDFBSurface(const QImage &img, SurfaceCreationOptions options)
{
if (img.isNull()) // assert?
return 0;
@@ -155,23 +155,24 @@ IDirectFBSurface* QDirectFBScreen::createDFBSurface(const QImage &img, SurfaceCr
return surface;
}
- DFBSurfaceDescription desc = QDirectFBScreen::getSurfaceDescription(img);
- IDirectFBSurface *surface = createDFBSurface(&desc, options);
+ IDirectFBSurface *surface = createDFBSurface(QDirectFBScreen::getSurfaceDescription(img), options);
#ifdef QT_NO_DIRECTFB_PREALLOCATED
if (surface) {
- char *mem;
int bpl;
- surface->Lock(surface, DSLF_WRITE, (void**)&mem, &bpl);
- const int h = img.height();
- for (int i = 0; i < h; ++i) {
- memcpy(mem, img.scanLine(i), bpl);
- mem += bpl;
+ uchar *mem = QDirectFBScreen::lockSurface(surface, DSLF_WRITE, &bpl);
+ if (mem) {
+ const int h = img.height();
+ const int w = img.width() * img.depth() / 8;
+ for (int i = 0; i < h; ++i) {
+ memcpy(mem, img.scanLine(i), w);
+ mem += bpl;
+ }
+ surface->Unlock(surface);
}
- surface->Unlock(surface);
}
#endif
#ifndef QT_NO_DIRECTFB_PALETTE
- if (img.numColors() != 0)
+ if (img.numColors() != 0 && surface)
QDirectFBScreen::setSurfaceColorTable(surface, img);
#endif
return surface;
@@ -185,9 +186,17 @@ IDirectFBSurface *QDirectFBScreen::copyDFBSurface(IDirectFBSurface *src,
QSize size;
src->GetSize(src, &size.rwidth(), &size.rheight());
IDirectFBSurface *surface = createDFBSurface(size, format, options);
- surface->SetBlittingFlags(surface, DSBLIT_NOFX);
+ DFBSurfacePixelFormat dspf;
+ src->GetPixelFormat(src, &dspf);
+ DFBSurfaceBlittingFlags flags = QDirectFBScreen::hasAlpha(dspf)
+ ? DSBLIT_BLEND_ALPHACHANNEL
+ : DSBLIT_NOFX;
+ if (flags & DSBLIT_BLEND_ALPHACHANNEL)
+ surface->Clear(surface, 0, 0, 0, 0);
+
+ surface->SetBlittingFlags(surface, flags);
surface->Blit(surface, src, 0, 0, 0);
- surface->ReleaseSource(surface); // ??? Is this always right?
+ surface->ReleaseSource(surface);
return surface;
}
@@ -196,42 +205,61 @@ IDirectFBSurface *QDirectFBScreen::createDFBSurface(const QSize &size,
SurfaceCreationOptions options)
{
DFBSurfaceDescription desc;
+ memset(&desc, 0, sizeof(DFBSurfaceDescription));
desc.flags = DFBSurfaceDescriptionFlags(DSDESC_WIDTH|DSDESC_HEIGHT);
if (!QDirectFBScreen::initSurfaceDescriptionPixelFormat(&desc, format))
return 0;
desc.width = size.width();
desc.height = size.height();
- return createDFBSurface(&desc, options);
+ return createDFBSurface(desc, options);
}
-
-IDirectFBSurface* QDirectFBScreen::createDFBSurface(const DFBSurfaceDescription *desc, SurfaceCreationOptions options)
+IDirectFBSurface *QDirectFBScreen::createDFBSurface(DFBSurfaceDescription desc, SurfaceCreationOptions options)
{
- DFBResult result;
- IDirectFBSurface* newSurface = 0;
+ DFBResult result = DFB_OK;
+ IDirectFBSurface *newSurface = 0;
if (!d_ptr->dfb) {
qWarning("QDirectFBScreen::createDFBSurface() - not connected");
return 0;
}
- if (d_ptr->videoonly && !(desc->flags & DSDESC_PREALLOCATED)) {
+ if (d_ptr->directFBFlags & VideoOnly && !(desc.flags & DSDESC_PREALLOCATED)) {
// Add the video only capability. This means the surface will be created in video ram
- DFBSurfaceDescription voDesc = *desc;
- voDesc.caps = DFBSurfaceCapabilities(voDesc.caps | DSCAPS_VIDEOONLY);
- voDesc.flags = DFBSurfaceDescriptionFlags(voDesc.flags | DSDESC_CAPS);
- result = d_ptr->dfb->CreateSurface(d_ptr->dfb, &voDesc, &newSurface);
+ if (!(desc.flags & DSDESC_CAPS)) {
+ desc.caps = DSCAPS_VIDEOONLY;
+ desc.flags = DFBSurfaceDescriptionFlags(desc.flags | DSDESC_CAPS);
+ } else {
+ desc.caps = DFBSurfaceCapabilities(desc.caps | DSCAPS_VIDEOONLY);
+ }
+ result = d_ptr->dfb->CreateSurface(d_ptr->dfb, &desc, &newSurface);
+ if (result != DFB_OK
+#ifdef QT_NO_DEBUG
+ && (desc.flags & DSDESC_CAPS) && (desc.caps & DSCAPS_PRIMARY)
+#endif
+ ) {
+ qWarning("QDirectFBScreen::createDFBSurface() Failed to create surface in video memory!\n"
+ " Flags %0x Caps %0x width %d height %d pixelformat %0x %d preallocated %p %d\n%s",
+ desc.flags, desc.caps, desc.width, desc.height,
+ desc.pixelformat, DFB_PIXELFORMAT_INDEX(desc.pixelformat),
+ desc.preallocated[0].data, desc.preallocated[0].pitch,
+ DirectFBErrorString(result));
+ }
+ desc.caps = DFBSurfaceCapabilities(desc.caps & ~DSCAPS_VIDEOONLY);
}
+ if (d_ptr->directFBFlags & SystemOnly)
+ desc.caps = DFBSurfaceCapabilities(desc.caps | DSCAPS_SYSTEMONLY);
+
if (!newSurface)
- result = d_ptr->dfb->CreateSurface(d_ptr->dfb, desc, &newSurface);
+ result = d_ptr->dfb->CreateSurface(d_ptr->dfb, &desc, &newSurface);
if (result != DFB_OK) {
qWarning("QDirectFBScreen::createDFBSurface() Failed!\n"
" Flags %0x Caps %0x width %d height %d pixelformat %0x %d preallocated %p %d\n%s",
- desc->flags, desc->caps, desc->width, desc->height,
- desc->pixelformat, DFB_PIXELFORMAT_INDEX(desc->pixelformat),
- desc->preallocated[0].data, desc->preallocated[0].pitch,
+ desc.flags, desc.caps, desc.width, desc.height,
+ desc.pixelformat, DFB_PIXELFORMAT_INDEX(desc.pixelformat),
+ desc.preallocated[0].data, desc.preallocated[0].pitch,
DirectFBErrorString(result));
return 0;
}
@@ -257,43 +285,53 @@ IDirectFBSurface *QDirectFBScreen::copyToDFBSurface(const QImage &img,
#ifdef QT_NO_DIRECTFB_PREALLOCATED
|| image.format() != pixmapFormat
#endif
+#ifdef QT_NO_DIRECTFB_PALETTE
+ || image.numColors() != 0
+#endif
) {
image = image.convertToFormat(pixmapFormat);
}
-
- IDirectFBSurface *dfbSurface = createDFBSurface(img.size(), pixmapFormat, options);
+ IDirectFBSurface *dfbSurface = createDFBSurface(image.size(), pixmapFormat, options);
if (!dfbSurface) {
- qWarning("QDirectFBPixmapData::fromImage() Couldn't create surface");
+ qWarning("QDirectFBScreen::copyToDFBSurface() Couldn't create surface");
return 0;
}
#ifndef QT_NO_DIRECTFB_PREALLOCATED
- IDirectFBSurface *imgSurface = createDFBSurface(img, DontTrackSurface);
+ IDirectFBSurface *imgSurface = createDFBSurface(image, DontTrackSurface);
if (!imgSurface) {
- qWarning("QDirectFBPixmapData::fromImage()");
+ qWarning("QDirectFBScreen::copyToDFBSurface()");
QDirectFBScreen::releaseDFBSurface(dfbSurface);
return 0;
}
+
Q_ASSERT(imgSurface);
- DFBResult result;
- dfbSurface->SetBlittingFlags(dfbSurface, DSBLIT_NOFX);
- result = dfbSurface->Blit(dfbSurface, imgSurface, 0, 0, 0);
+ DFBSurfaceBlittingFlags flags = img.hasAlphaChannel()
+ ? DSBLIT_BLEND_ALPHACHANNEL
+ : DSBLIT_NOFX;
+ if (flags & DSBLIT_BLEND_ALPHACHANNEL)
+ dfbSurface->Clear(dfbSurface, 0, 0, 0, 0);
+
+ dfbSurface->SetBlittingFlags(dfbSurface, flags);
+ DFBResult result = dfbSurface->Blit(dfbSurface, imgSurface, 0, 0, 0);
if (result != DFB_OK)
- DirectFBError("QDirectFBPixmapData::fromImage()", result);
+ DirectFBError("QDirectFBScreen::copyToDFBSurface()", result);
dfbSurface->ReleaseSource(dfbSurface);
imgSurface->Release(imgSurface);
#else // QT_NO_DIRECTFB_PREALLOCATED
Q_ASSERT(image.format() == pixmapFormat);
- char *mem;
int bpl;
- dfbSurface->Lock(dfbSurface, DSLF_WRITE, (void**)&mem, &bpl);
- const int w = image.width() * image.depth() / 8;
- for (int i = 0; i < image.height(); ++i) {
- memcpy(mem, image.scanLine(i), w);
- mem += bpl;
+ uchar *mem = QDirectFBScreen::lockSurface(dfbSurface, DSLF_WRITE, &bpl);
+ if (mem) {
+ const int h = image.height();
+ const int w = image.width() * image.depth() / 8;
+ for (int i=0; i<h; ++i) {
+ memcpy(mem, image.scanLine(i), w);
+ mem += bpl;
+ }
+ dfbSurface->Unlock(dfbSurface);
}
- dfbSurface->Unlock(dfbSurface);
#endif
return dfbSurface;
}
@@ -309,23 +347,23 @@ void QDirectFBScreen::releaseDFBSurface(IDirectFBSurface *surface)
//qDebug("Released surface at %p. New count = %d", surface, d_ptr->allocatedSurfaces.count());
}
-bool QDirectFBScreen::preferVideoOnly() const
+QDirectFBScreen::DirectFBFlags QDirectFBScreen::directFBFlags() const
{
- return d_ptr->videoonly;
+ return d_ptr->directFBFlags;
}
-IDirectFB* QDirectFBScreen::dfb()
+IDirectFB *QDirectFBScreen::dfb()
{
return d_ptr->dfb;
}
-IDirectFBSurface* QDirectFBScreen::dfbSurface()
+IDirectFBSurface *QDirectFBScreen::dfbSurface()
{
return d_ptr->dfbSurface;
}
#ifndef QT_NO_DIRECTFB_LAYER
-IDirectFBDisplayLayer* QDirectFBScreen::dfbDisplayLayer()
+IDirectFBDisplayLayer *QDirectFBScreen::dfbDisplayLayer()
{
return d_ptr->dfbLayer;
}
@@ -364,16 +402,6 @@ DFBSurfacePixelFormat QDirectFBScreen::getSurfacePixelFormat(QImage::Format form
};
}
-static inline bool isPremultiplied(IDirectFBSurface *surface)
-{
- Q_ASSERT(surface);
- DFBSurfaceCapabilities caps;
- const DFBResult result = surface->GetCapabilities(surface, &caps);
- Q_ASSERT(result == DFB_OK);
- Q_UNUSED(result);
- return caps & DSCAPS_PREMULTIPLIED;
-}
-
QImage::Format QDirectFBScreen::getImageFormat(IDirectFBSurface *surface)
{
DFBSurfacePixelFormat format;
@@ -418,6 +446,7 @@ QImage::Format QDirectFBScreen::getImageFormat(IDirectFBSurface *surface)
DFBSurfaceDescription QDirectFBScreen::getSurfaceDescription(const QImage &image)
{
DFBSurfaceDescription description;
+ memset(&description, 0, sizeof(DFBSurfaceDescription));
const DFBSurfacePixelFormat format = getSurfacePixelFormat(image.format());
@@ -452,6 +481,7 @@ DFBSurfaceDescription QDirectFBScreen::getSurfaceDescription(const uint *buffer,
int length)
{
DFBSurfaceDescription description;
+ memset(&description, 0, sizeof(DFBSurfaceDescription));
description.flags = DFBSurfaceDescriptionFlags(DSDESC_CAPS
| DSDESC_WIDTH
@@ -513,16 +543,12 @@ class Q_GUI_EXPORT QDirectFBScreenCursor : public QScreenCursor
{
public:
QDirectFBScreenCursor();
- ~QDirectFBScreenCursor();
-
- void set(const QImage &image, int hotx, int hoty);
- void move(int x, int y);
- void show();
- void hide();
-
+ virtual void set(const QImage &image, int hotx, int hoty);
+ virtual void move(int x, int y);
+ virtual void show();
+ virtual void hide();
private:
IDirectFBDisplayLayer *layer;
- bool implicitHide;
};
QDirectFBScreenCursor::QDirectFBScreenCursor()
@@ -532,116 +558,101 @@ QDirectFBScreenCursor::QDirectFBScreenCursor()
qFatal("QDirectFBScreenCursor: DirectFB not initialized");
layer = QDirectFBScreen::instance()->dfbDisplayLayer();
+ Q_ASSERT(layer);
- if (layer)
- layer->SetCooperativeLevel(layer, DLSCL_SHARED); // XXX: hw: remove?
- else
- qFatal("QDirectFBScreenCursor: Unable to get primary display layer!");
-
- enable = true;
+ enable = false;
hwaccel = true;
- implicitHide = false;
supportsAlpha = true;
-
- set(QImage(), 0, 0);
}
-QDirectFBScreenCursor::~QDirectFBScreenCursor()
-{
-}
-
-void QDirectFBScreenCursor::show()
+void QDirectFBScreenCursor::move(int x, int y)
{
- DFBResult result;
- result = layer->SetCooperativeLevel(layer, DLSCL_ADMINISTRATIVE);
- if (result != DFB_OK) {
- DirectFBError("QDirectFBScreenCursor::show: "
- "Unable to set cooperative level", result);
- }
- result = layer->EnableCursor(layer, 1);
- if (result != DFB_OK) {
- DirectFBError("QDirectFBScreenCursor::show: "
- "Unable to enable cursor", result);
- }
- result = layer->SetCooperativeLevel(layer, DLSCL_SHARED);
- if (result != DFB_OK) {
- DirectFBError("QDirectFBScreenCursor::show: "
- "Unable to reset cooperative level", result);
- }
- implicitHide = false;
+ layer->WarpCursor(layer, x, y);
}
void QDirectFBScreenCursor::hide()
{
- DFBResult result;
- result = layer->SetCooperativeLevel(layer, DLSCL_ADMINISTRATIVE);
- if (result != DFB_OK) {
- DirectFBError("QDirectFBScreenCursor::hide: "
- "Unable to set cooperative level", result);
- }
- result = layer->EnableCursor(layer, 0);
- if (result != DFB_OK) {
- DirectFBError("QDirectFBScreenCursor::hide: "
- "Unable to disable cursor", result);
- }
- result = layer->SetCooperativeLevel(layer, DLSCL_SHARED);
- if (result != DFB_OK) {
- DirectFBError("QDirectFBScreenCursor::hide: "
- "Unable to reset cooperative level", result);
+ if (enable) {
+ enable = false;
+ DFBResult result;
+ result = layer->SetCooperativeLevel(layer, DLSCL_ADMINISTRATIVE);
+ if (result != DFB_OK) {
+ DirectFBError("QDirectFBScreenCursor::hide: "
+ "Unable to set cooperative level", result);
+ }
+ result = layer->SetCursorOpacity(layer, 0);
+ if (result != DFB_OK) {
+ DirectFBError("QDirectFBScreenCursor::hide: "
+ "Unable to set cursor opacity", result);
+ }
+ result = layer->SetCooperativeLevel(layer, DLSCL_SHARED);
+ if (result != DFB_OK) {
+ DirectFBError("QDirectFBScreenCursor::hide: "
+ "Unable to set cooperative level", result);
+ }
}
- implicitHide = true;
}
-void QDirectFBScreenCursor::move(int x, int y)
+void QDirectFBScreenCursor::show()
{
- layer->WarpCursor(layer, x, y);
+ if (!enable) {
+ enable = true;
+ DFBResult result;
+ result = layer->SetCooperativeLevel(layer, DLSCL_ADMINISTRATIVE);
+ if (result != DFB_OK) {
+ DirectFBError("QDirectFBScreenCursor::show: "
+ "Unable to set cooperative level", result);
+ }
+ result = layer->SetCursorOpacity(layer, 255);
+ if (result != DFB_OK) {
+ DirectFBError("QDirectFBScreenCursor::show: "
+ "Unable to set cursor shape", result);
+ }
+ result = layer->SetCooperativeLevel(layer, DLSCL_SHARED);
+ if (result != DFB_OK) {
+ DirectFBError("QDirectFBScreenCursor::show: "
+ "Unable to set cooperative level", result);
+ }
+ }
}
void QDirectFBScreenCursor::set(const QImage &image, int hotx, int hoty)
{
- if (image.isNull() && isVisible()) {
- hide();
- implicitHide = true;
- } else if (!image.isNull() && implicitHide) {
- show();
- }
- cursor = image.convertToFormat(QDirectFBScreen::instance()->alphaPixmapFormat());
+ QDirectFBScreen *screen = QDirectFBScreen::instance();
+ if (!screen)
+ return;
- if (!image.isNull()) {
- Q_ASSERT(cursor.numColors() == 0);
+ if (image.isNull()) {
+ cursor = QImage();
+ hide();
+ } else {
+ cursor = image.convertToFormat(screen->alphaPixmapFormat());
size = cursor.size();
hotspot = QPoint(hotx, hoty);
-
- DFBSurfaceDescription description;
- description = QDirectFBScreen::getSurfaceDescription(cursor);
-
- IDirectFBSurface *surface;
- surface = QDirectFBScreen::instance()->createDFBSurface(&description,
- QDirectFBScreen::TrackSurface);
+ IDirectFBSurface *surface = screen->createDFBSurface(cursor, QDirectFBScreen::DontTrackSurface);
if (!surface) {
qWarning("QDirectFBScreenCursor::set: Unable to create surface");
return;
}
DFBResult result = layer->SetCooperativeLevel(layer, DLSCL_ADMINISTRATIVE);
if (result != DFB_OK) {
- DirectFBError("QDirectFBScreenCursor::set: "
+ DirectFBError("QDirectFBScreenCursor::show: "
"Unable to set cooperative level", result);
}
result = layer->SetCursorShape(layer, surface, hotx, hoty);
if (result != DFB_OK) {
- DirectFBError("QDirectFBScreenCursor::set: Unable to set cursor shape",
- result);
+ DirectFBError("QDirectFBScreenCursor::show: "
+ "Unable to set cursor shape", result);
}
-
+ surface->Release(surface);
result = layer->SetCooperativeLevel(layer, DLSCL_SHARED);
if (result != DFB_OK) {
- DirectFBError("QDirectFBScreenCursor::set: "
- "Unable to reset cooperative level", result);
+ DirectFBError("QDirectFBScreenCursor::show: "
+ "Unable to set cooperative level", result);
}
-
- if (surface)
- QDirectFBScreen::instance()->releaseDFBSurface(surface);
+ show();
}
+
}
#endif // QT_NO_DIRECTFB_LAYER
@@ -700,7 +711,7 @@ int QDirectFBScreen::depth(DFBSurfacePixelFormat format)
void QDirectFBScreenPrivate::setFlipFlags(const QStringList &args)
{
- QRegExp flipRegexp(QLatin1String("^flip=([\\w,]+)$"));
+ QRegExp flipRegexp(QLatin1String("^flip=([\\w,]*)$"));
int index = args.indexOf(flipRegexp);
if (index >= 0) {
const QStringList flips = flipRegexp.cap(1).split(QLatin1Char(','),
@@ -719,10 +730,12 @@ void QDirectFBScreenPrivate::setFlipFlags(const QStringList &args)
qWarning("QDirectFBScreen: Unknown flip argument: %s",
qPrintable(flip));
}
+ } else {
+ flipFlags = DFBSurfaceFlipFlags(DSFLIP_BLIT);
}
}
-QPixmapData* QDirectFBScreenPrivate::createPixmapData(QPixmapData::PixelType type) const
+QPixmapData *QDirectFBScreenPrivate::createPixmapData(QPixmapData::PixelType type) const
{
if (type == QPixmapData::BitmapType)
return QWSGraphicsSystem::createPixmapData(type);
@@ -730,7 +743,85 @@ QPixmapData* QDirectFBScreenPrivate::createPixmapData(QPixmapData::PixelType typ
return new QDirectFBPixmapData(type);
}
-static void printDirectFBInfo(IDirectFB *fb)
+#ifdef QT_NO_DEBUG
+struct FlagDescription;
+static const FlagDescription *accelerationDescriptions = 0;
+static const FlagDescription *blitDescriptions = 0;
+static const FlagDescription *drawDescriptions = 0;
+#else
+struct FlagDescription {
+ const char *name;
+ uint flag;
+};
+
+static const FlagDescription accelerationDescriptions[] = {
+ { " DFXL_NONE ", DFXL_NONE },
+ { " DFXL_FILLRECTANGLE", DFXL_FILLRECTANGLE },
+ { " DFXL_DRAWRECTANGLE", DFXL_DRAWRECTANGLE },
+ { " DFXL_DRAWLINE", DFXL_DRAWLINE },
+ { " DFXL_FILLTRIANGLE", DFXL_FILLTRIANGLE },
+ { " DFXL_BLIT", DFXL_BLIT },
+ { " DFXL_STRETCHBLIT", DFXL_STRETCHBLIT },
+ { " DFXL_TEXTRIANGLES", DFXL_TEXTRIANGLES },
+ { " DFXL_DRAWSTRING", DFXL_DRAWSTRING },
+ { 0, 0 }
+};
+
+static const FlagDescription blitDescriptions[] = {
+ { " DSBLIT_NOFX", DSBLIT_NOFX },
+ { " DSBLIT_BLEND_ALPHACHANNEL", DSBLIT_BLEND_ALPHACHANNEL },
+ { " DSBLIT_BLEND_COLORALPHA", DSBLIT_BLEND_COLORALPHA },
+ { " DSBLIT_COLORIZE", DSBLIT_COLORIZE },
+ { " DSBLIT_SRC_COLORKEY", DSBLIT_SRC_COLORKEY },
+ { " DSBLIT_DST_COLORKEY", DSBLIT_DST_COLORKEY },
+ { " DSBLIT_SRC_PREMULTIPLY", DSBLIT_SRC_PREMULTIPLY },
+ { " DSBLIT_DST_PREMULTIPLY", DSBLIT_DST_PREMULTIPLY },
+ { " DSBLIT_DEMULTIPLY", DSBLIT_DEMULTIPLY },
+ { " DSBLIT_DEINTERLACE", DSBLIT_DEINTERLACE },
+ { " DSBLIT_SRC_PREMULTCOLOR", DSBLIT_SRC_PREMULTCOLOR },
+ { " DSBLIT_XOR", DSBLIT_XOR },
+ { " DSBLIT_INDEX_TRANSLATION", DSBLIT_INDEX_TRANSLATION },
+ { 0, 0 }
+};
+
+static const FlagDescription drawDescriptions[] = {
+ { " DSDRAW_NOFX", DSDRAW_NOFX },
+ { " DSDRAW_BLEND", DSDRAW_BLEND },
+ { " DSDRAW_DST_COLORKEY", DSDRAW_DST_COLORKEY },
+ { " DSDRAW_SRC_PREMULTIPLY", DSDRAW_SRC_PREMULTIPLY },
+ { " DSDRAW_DST_PREMULTIPLY", DSDRAW_DST_PREMULTIPLY },
+ { " DSDRAW_DEMULTIPLY", DSDRAW_DEMULTIPLY },
+ { " DSDRAW_XOR", DSDRAW_XOR },
+ { 0, 0 }
+};
+#endif
+
+
+
+static const QByteArray flagDescriptions(uint mask, const FlagDescription *flags)
+{
+#ifdef QT_NO_DEBUG
+ Q_UNUSED(mask);
+ Q_UNUSED(flags);
+ return QByteArray("");
+#else
+ if (!mask)
+ return flags[0].name;
+
+ QStringList list;
+ for (int i=1; flags[i].name; ++i) {
+ if (mask & flags[i].flag) {
+ list.append(QString::fromLatin1(flags[i].name));
+ }
+ }
+ Q_ASSERT(!list.isEmpty());
+ return (QLatin1Char(' ') + list.join(QLatin1String("|"))).toLatin1();
+#endif
+}
+
+
+
+static void printDirectFBInfo(IDirectFB *fb, IDirectFBSurface *primarySurface)
{
DFBResult result;
DFBGraphicsDeviceDescription dev;
@@ -741,11 +832,30 @@ static void printDirectFBInfo(IDirectFB *fb)
return;
}
- qDebug("Device: %s (%s), Driver: %s v%i.%i (%s)\n"
- " acceleration: 0x%x, blit: 0x%x, draw: 0x%0x video: %i\n",
+ DFBSurfacePixelFormat pixelFormat;
+ primarySurface->GetPixelFormat(primarySurface, &pixelFormat);
+
+ qDebug("Device: %s (%s), Driver: %s v%i.%i (%s) Pixelformat: %d (%d)\n"
+ "acceleration: 0x%x%s\nblit: 0x%x%s\ndraw: 0x%0x%s\nvideo: %iKB\n",
dev.name, dev.vendor, dev.driver.name, dev.driver.major,
- dev.driver.minor, dev.driver.vendor, dev.acceleration_mask,
- dev.blitting_flags, dev.drawing_flags, dev.video_memory);
+ dev.driver.minor, dev.driver.vendor, DFB_PIXELFORMAT_INDEX(pixelFormat),
+ QDirectFBScreen::getImageFormat(primarySurface), dev.acceleration_mask,
+ ::flagDescriptions(dev.acceleration_mask, accelerationDescriptions).constData(),
+ dev.blitting_flags, ::flagDescriptions(dev.blitting_flags, blitDescriptions).constData(),
+ dev.drawing_flags, ::flagDescriptions(dev.drawing_flags, drawDescriptions).constData(),
+ (dev.video_memory >> 10));
+}
+
+static inline bool setIntOption(const QStringList &arguments, const QString &variable, int *value)
+{
+ Q_ASSERT(value);
+ QRegExp rx(QString("%1=?(\\d+)").arg(variable));
+ rx.setCaseSensitivity(Qt::CaseInsensitive);
+ if (arguments.indexOf(rx) != -1) {
+ *value = rx.cap(1).toInt();
+ return true;
+ }
+ return false;
}
bool QDirectFBScreen::connect(const QString &displaySpec)
@@ -780,11 +890,29 @@ bool QDirectFBScreen::connect(const QString &displaySpec)
return false;
}
- if (displayArgs.contains(QLatin1String("debug"), Qt::CaseInsensitive))
- printDirectFBInfo(d_ptr->dfb);
+ if (displayArgs.contains(QLatin1String("videoonly"), Qt::CaseInsensitive))
+ d_ptr->directFBFlags |= VideoOnly;
+
+ if (displayArgs.contains(QLatin1String("systemonly"), Qt::CaseInsensitive)) {
+ if (d_ptr->directFBFlags & VideoOnly) {
+ qWarning("QDirectFBScreen: error. videoonly and systemonly are mutually exclusive");
+ } else {
+ d_ptr->directFBFlags |= SystemOnly;
+ }
+ }
+
+ if (displayArgs.contains(QLatin1String("boundingrectflip"), Qt::CaseInsensitive)) {
+ d_ptr->directFBFlags |= BoundingRectFlip;
+ }
- if (displayArgs.contains(QLatin1String("videoonly")))
- d_ptr->videoonly = true;
+#ifdef QT_DIRECTFB_IMAGECACHE
+ int imageCacheSize = 4 * 1024 * 1024; // 4 MB
+ ::setIntOption(displayArgs, QLatin1String("imagecachesize"), &imageCacheSize);
+ QDirectFBPaintEngine::initImageCache(imageCacheSize);
+#endif
+
+ if (displayArgs.contains(QLatin1String("ignoresystemclip"), Qt::CaseInsensitive))
+ d_ptr->directFBFlags |= IgnoreSystemClip;
#ifndef QT_NO_DIRECTFB_WM
if (displayArgs.contains(QLatin1String("fullscreen")))
@@ -792,31 +920,47 @@ bool QDirectFBScreen::connect(const QString &displaySpec)
d_ptr->dfb->SetCooperativeLevel(d_ptr->dfb, DFSCL_FULLSCREEN);
DFBSurfaceDescription description;
+ memset(&description, 0, sizeof(DFBSurfaceDescription));
+
description.flags = DFBSurfaceDescriptionFlags(DSDESC_CAPS);
- description.caps = DFBSurfaceCapabilities(DSCAPS_PRIMARY
- | DSCAPS_DOUBLE
- | DSCAPS_STATIC_ALLOC);
- if (displayArgs.contains(QLatin1String("forcepremultiplied"),
- Qt::CaseInsensitive)) {
- description.caps = DFBSurfaceCapabilities(description.caps
- | DSCAPS_PREMULTIPLIED);
+ if (::setIntOption(displayArgs, QLatin1String("width"), &description.width))
+ description.flags = DFBSurfaceDescriptionFlags(description.flags | DSDESC_WIDTH);
+ if (::setIntOption(displayArgs, QLatin1String("height"), &description.height))
+ description.flags = DFBSurfaceDescriptionFlags(description.flags | DSDESC_HEIGHT);
+
+ uint caps = DSCAPS_PRIMARY|DSCAPS_DOUBLE;
+ struct {
+ const char *name;
+ const DFBSurfaceCapabilities cap;
+ } const capabilities[] = {
+ { "static_alloc", DSCAPS_STATIC_ALLOC },
+ { "triplebuffer", DSCAPS_TRIPLE },
+ { "interlaced", DSCAPS_INTERLACED },
+ { "separated", DSCAPS_SEPARATED },
+// { "depthbuffer", DSCAPS_DEPTH }, // only makes sense with TextureTriangles which are not supported
+ { 0, DSCAPS_NONE }
+ };
+ for (int i=0; capabilities[i].name; ++i) {
+ if (displayArgs.contains(QString::fromLatin1(capabilities[i].name), Qt::CaseInsensitive))
+ caps |= capabilities[i].cap;
}
- if (!(d_ptr->flipFlags & DSFLIP_BLIT)) {
- description.caps = DFBSurfaceCapabilities(description.caps
- | DSCAPS_DOUBLE
- | DSCAPS_TRIPLE);
+ if (displayArgs.contains(QLatin1String("forcepremultiplied"), Qt::CaseInsensitive)) {
+ caps |= DSCAPS_PREMULTIPLIED;
}
-
+ description.caps = DFBSurfaceCapabilities(caps);
// We don't track the primary surface as it's released in disconnect
- d_ptr->dfbSurface = createDFBSurface(&description, DontTrackSurface);
+ d_ptr->dfbSurface = createDFBSurface(description, DontTrackSurface);
if (!d_ptr->dfbSurface) {
DirectFBError("QDirectFBScreen: error creating primary surface",
result);
return false;
}
+ if (displayArgs.contains(QLatin1String("debug"), Qt::CaseInsensitive))
+ printDirectFBInfo(d_ptr->dfb, d_ptr->dfbSurface);
+
// Work out what format we're going to use for surfaces with an alpha channel
d_ptr->alphaPixmapFormat = QDirectFBScreen::getImageFormat(d_ptr->dfbSurface);
setPixelFormat(d_ptr->alphaPixmapFormat);
@@ -865,18 +1009,8 @@ bool QDirectFBScreen::connect(const QString &displaySpec)
setPixelFormat(getImageFormat(d_ptr->dfbSurface));
physWidth = physHeight = -1;
- QRegExp mmWidthRx(QLatin1String("mmWidth=?(\\d+)"));
- int dimIdxW = displayArgs.indexOf(mmWidthRx);
- if (dimIdxW >= 0) {
- mmWidthRx.exactMatch(displayArgs.at(dimIdxW));
- physWidth = mmWidthRx.cap(1).toInt();
- }
- QRegExp mmHeightRx(QLatin1String("mmHeight=?(\\d+)"));
- int dimIdxH = displayArgs.indexOf(mmHeightRx);
- if (dimIdxH >= 0) {
- mmHeightRx.exactMatch(displayArgs.at(dimIdxH));
- physHeight = mmHeightRx.cap(1).toInt();
- }
+ ::setIntOption(displayArgs, QLatin1String("mmWidth"), &physWidth);
+ ::setIntOption(displayArgs, QLatin1String("mmHeight"), &physHeight);
const int dpi = 72;
if (physWidth < 0)
physWidth = qRound(dw * 25.4 / dpi);
@@ -911,7 +1045,7 @@ void QDirectFBScreen::disconnect()
d_ptr->dfbSurface->Release(d_ptr->dfbSurface);
d_ptr->dfbSurface = 0;
- foreach (IDirectFBSurface* surf, d_ptr->allocatedSurfaces)
+ foreach (IDirectFBSurface *surf, d_ptr->allocatedSurfaces)
surf->Release(surf);
d_ptr->allocatedSurfaces.clear();
@@ -929,16 +1063,15 @@ void QDirectFBScreen::disconnect()
bool QDirectFBScreen::initDevice()
{
- QWSServer *server = QWSServer::instance();
#ifndef QT_NO_DIRECTFB_MOUSE
if (qgetenv("QWS_MOUSE_PROTO").isEmpty()) {
- server->setDefaultMouse("None");
+ QWSServer::instance()->setDefaultMouse("None");
d_ptr->mouse = new QDirectFBMouseHandler;
}
#endif
#ifndef QT_NO_DIRECTFB_KEYBOARD
if (qgetenv("QWS_KEYBOARD").isEmpty()) {
- server->setDefaultKeyboard("None");
+ QWSServer::instance()->setDefaultKeyboard("None");
d_ptr->keyboard = new QDirectFBKeyboardHandler(QString());
}
#endif
@@ -981,22 +1114,24 @@ void QDirectFBScreen::blank(bool on)
(on ? DSPM_ON : DSPM_SUSPEND));
}
-QWSWindowSurface* QDirectFBScreen::createSurface(QWidget *widget) const
+QWSWindowSurface *QDirectFBScreen::createSurface(QWidget *widget) const
{
#ifdef QT_NO_DIRECTFB_WM
- if (QApplication::type() == QApplication::GuiServer)
- return new QDirectFBSurface(const_cast<QDirectFBScreen*>(this), widget);
- else
+ if (QApplication::type() == QApplication::GuiServer) {
+ return new QDirectFBWindowSurface(d_ptr->flipFlags, const_cast<QDirectFBScreen*>(this), widget);
+ } else {
return QScreen::createSurface(widget);
+ }
#else
- return new QDirectFBSurface(const_cast<QDirectFBScreen*>(this), widget);
+ return new QDirectFBWindowSurface(d_ptr->flipFlags, const_cast<QDirectFBScreen*>(this), widget);
#endif
}
-QWSWindowSurface* QDirectFBScreen::createSurface(const QString &key) const
+QWSWindowSurface *QDirectFBScreen::createSurface(const QString &key) const
{
- if (key == QLatin1String("directfb"))
- return new QDirectFBSurface(const_cast<QDirectFBScreen*>(this));
+ if (key == QLatin1String("directfb")) {
+ return new QDirectFBWindowSurface(d_ptr->flipFlags, const_cast<QDirectFBScreen*>(this));
+ }
return QScreen::createSurface(key);
}
@@ -1028,7 +1163,7 @@ void QDirectFBScreen::compose(const QRegion &region)
const QPoint offset = win->requestedRegion().boundingRect().topLeft();
if (surface->key() == QLatin1String("directfb")) {
- QDirectFBSurface *s = static_cast<QDirectFBSurface*>(surface);
+ QDirectFBWindowSurface *s = static_cast<QDirectFBWindowSurface*>(surface);
blit(s->directFBSurface(), offset, r);
} else {
blit(surface->image(), offset, r);
@@ -1077,12 +1212,13 @@ void QDirectFBScreen::compose(const QRegion &region)
const QPoint offset = win->requestedRegion().boundingRect().topLeft();
if (surface->key() == QLatin1String("directfb")) {
- QDirectFBSurface *s = static_cast<QDirectFBSurface*>(surface);
+ QDirectFBWindowSurface *s = static_cast<QDirectFBWindowSurface*>(surface);
blit(s->directFBSurface(), offset, r);
} else {
blit(surface->image(), offset, r);
}
}
+ d_ptr->dfbSurface->ReleaseSource(d_ptr->dfbSurface);
}
// Normally, when using DirectFB to compose the windows (I.e. when
@@ -1162,26 +1298,34 @@ void QDirectFBScreen::blit(IDirectFBSurface *src, const QPoint &topLeft,
points.data(), n);
}
+// This function is only ever called by QScreen::drawBackground which
+// is only ever called by QScreen::compose which is never called with
+// DirectFB so it's really a noop.
void QDirectFBScreen::solidFill(const QColor &color, const QRegion &region)
{
if (region.isEmpty())
return;
- const QVector<QRect> rects = region.rects();
- QVarLengthArray<DFBRectangle> dfbRects(rects.size());
- for (int i = 0; i < rects.size(); ++i) {
- const QRect r = rects.at(i);
- dfbRects[i].x = r.x();
- dfbRects[i].y = r.y();
- dfbRects[i].w = r.width();
- dfbRects[i].h = r.height();
- }
+ if (QDirectFBScreen::getImageFormat(d_ptr->dfbSurface) == QImage::Format_RGB32) {
+ data = QDirectFBScreen::lockSurface(d_ptr->dfbSurface, DSLF_WRITE, &lstep);
+ if (!data)
+ return;
- d_ptr->dfbSurface->SetColor(d_ptr->dfbSurface,
- color.red(), color.green(), color.blue(),
- color.alpha());
- d_ptr->dfbSurface->FillRectangles(d_ptr->dfbSurface, dfbRects.data(),
- dfbRects.size());
+ QScreen::solidFill(color, region);
+ d_ptr->dfbSurface->Unlock(d_ptr->dfbSurface);
+ data = 0;
+ lstep = 0;
+ } else {
+ d_ptr->dfbSurface->SetColor(d_ptr->dfbSurface,
+ color.red(), color.green(), color.blue(),
+ color.alpha());
+ const QVector<QRect> rects = region.rects();
+ for (int i=0; i<rects.size(); ++i) {
+ const QRect &r = rects.at(i);
+ d_ptr->dfbSurface->FillRectangle(d_ptr->dfbSurface,
+ r.x(), r.y(), r.width(), r.height());
+ }
+ }
}
QImage::Format QDirectFBScreen::alphaPixmapFormat() const
@@ -1189,7 +1333,6 @@ QImage::Format QDirectFBScreen::alphaPixmapFormat() const
return d_ptr->alphaPixmapFormat;
}
-
bool QDirectFBScreen::initSurfaceDescriptionPixelFormat(DFBSurfaceDescription *description,
QImage::Format format)
{
@@ -1208,3 +1351,15 @@ bool QDirectFBScreen::initSurfaceDescriptionPixelFormat(DFBSurfaceDescription *d
}
return true;
}
+
+uchar *QDirectFBScreen::lockSurface(IDirectFBSurface *surface, uint flags, int *bpl)
+{
+ void *mem;
+ const DFBResult result = surface->Lock(surface, static_cast<DFBSurfaceLockFlags>(flags), static_cast<void**>(&mem), bpl);
+ if (result != DFB_OK) {
+ DirectFBError("QDirectFBScreen::lockSurface()", result);
+ }
+
+ return reinterpret_cast<uchar*>(mem);
+}
+
diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbscreen.h b/src/plugins/gfxdrivers/directfb/qdirectfbscreen.h
index a1e93c6..84199a2 100644
--- a/src/plugins/gfxdrivers/directfb/qdirectfbscreen.h
+++ b/src/plugins/gfxdrivers/directfb/qdirectfbscreen.h
@@ -59,6 +59,18 @@ public:
QDirectFBScreen(int display_id);
~QDirectFBScreen();
+ enum DirectFBFlag {
+ NoFlags = 0x00,
+ VideoOnly = 0x01,
+ SystemOnly = 0x02,
+ IgnoreSystemClip = 0x04,
+ BoundingRectFlip = 0x08
+ };
+
+ Q_DECLARE_FLAGS(DirectFBFlags, DirectFBFlag);
+
+ DirectFBFlags directFBFlags() const;
+
bool connect(const QString &displaySpec);
void disconnect();
bool initDevice();
@@ -72,19 +84,19 @@ public:
void setMode(int width, int height, int depth);
void blank(bool on);
- QWSWindowSurface* createSurface(QWidget *widget) const;
- QWSWindowSurface* createSurface(const QString &key) const;
+ QWSWindowSurface *createSurface(QWidget *widget) const;
+ QWSWindowSurface *createSurface(const QString &key) const;
- static inline QDirectFBScreen* instance() {
+ static inline QDirectFBScreen *instance() {
QScreen *inst = QScreen::instance();
Q_ASSERT(!inst || inst->classId() == QScreen::DirectFBClass);
return static_cast<QDirectFBScreen*>(inst);
}
- IDirectFB* dfb();
- IDirectFBSurface* dfbSurface();
+ IDirectFB *dfb();
+ IDirectFBSurface *dfbSurface();
#ifndef QT_NO_DIRECTFB_LAYER
- IDirectFBDisplayLayer* dfbDisplayLayer();
+ IDirectFBDisplayLayer *dfbDisplayLayer();
#endif
// Track surface creation/release so we can release all on exit
@@ -93,8 +105,6 @@ public:
TrackSurface = 1
};
Q_DECLARE_FLAGS(SurfaceCreationOptions, SurfaceCreationOption);
- IDirectFBSurface *createDFBSurface(const DFBSurfaceDescription *desc,
- SurfaceCreationOptions options);
IDirectFBSurface *createDFBSurface(const QImage &image,
SurfaceCreationOptions options);
IDirectFBSurface *createDFBSurface(const QSize &size,
@@ -106,9 +116,7 @@ public:
IDirectFBSurface *copyToDFBSurface(const QImage &image,
QImage::Format format,
SurfaceCreationOptions options);
- void releaseDFBSurface(IDirectFBSurface* surface);
-
- bool preferVideoOnly() const;
+ void releaseDFBSurface(IDirectFBSurface *surface);
static int depth(DFBSurfacePixelFormat format);
@@ -119,6 +127,8 @@ public:
static QImage::Format getImageFormat(IDirectFBSurface *surface);
static bool initSurfaceDescriptionPixelFormat(DFBSurfaceDescription *description, QImage::Format format);
static inline bool isPremultiplied(QImage::Format format);
+ static inline bool hasAlpha(DFBSurfacePixelFormat format);
+ static inline bool hasAlpha(IDirectFBSurface *surface);
QImage::Format alphaPixmapFormat() const;
#ifndef QT_NO_DIRECTFB_PALETTE
@@ -126,15 +136,21 @@ public:
const QImage &image);
#endif
+ static uchar *lockSurface(IDirectFBSurface *surface, uint flags, int *bpl = 0);
+
private:
+ IDirectFBSurface *createDFBSurface(DFBSurfaceDescription desc,
+ SurfaceCreationOptions options);
void compose(const QRegion &r);
void blit(IDirectFBSurface *src, const QPoint &topLeft,
const QRegion &region);
QDirectFBScreenPrivate *d_ptr;
+ friend class SurfaceCache;
};
Q_DECLARE_OPERATORS_FOR_FLAGS(QDirectFBScreen::SurfaceCreationOptions);
+Q_DECLARE_OPERATORS_FOR_FLAGS(QDirectFBScreen::DirectFBFlags);
inline bool QDirectFBScreen::isPremultiplied(QImage::Format format)
{
@@ -151,6 +167,34 @@ inline bool QDirectFBScreen::isPremultiplied(QImage::Format format)
return false;
}
+inline bool QDirectFBScreen::hasAlpha(DFBSurfacePixelFormat format)
+{
+ switch (format) {
+ case DSPF_ARGB1555:
+ case DSPF_ARGB:
+ case DSPF_LUT8:
+ case DSPF_AiRGB:
+ case DSPF_A1:
+ case DSPF_ARGB2554:
+ case DSPF_ARGB4444:
+ case DSPF_AYUV:
+ case DSPF_A4:
+ case DSPF_ARGB1666:
+ case DSPF_ARGB6666:
+ case DSPF_LUT2:
+ return true;
+ default:
+ return false;
+ }
+}
+
+inline bool QDirectFBScreen::hasAlpha(IDirectFBSurface *surface)
+{
+ Q_ASSERT(surface);
+ DFBSurfacePixelFormat format;
+ surface->GetPixelFormat(surface, &format);
+ return QDirectFBScreen::hasAlpha(format);
+}
QT_END_HEADER
diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbsurface.cpp b/src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.cpp
index 4ba1102..cd8796b 100644
--- a/src/plugins/gfxdrivers/directfb/qdirectfbsurface.cpp
+++ b/src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.cpp
@@ -39,7 +39,7 @@
**
****************************************************************************/
-#include "qdirectfbsurface.h"
+#include "qdirectfbwindowsurface.h"
#include "qdirectfbscreen.h"
#include "qdirectfbpaintengine.h"
@@ -50,50 +50,74 @@
//#define QT_DIRECTFB_DEBUG_SURFACES 1
-QDirectFBSurface::QDirectFBSurface(QDirectFBScreen* scr)
+QDirectFBWindowSurface::QDirectFBWindowSurface(DFBSurfaceFlipFlags flip, QDirectFBScreen *scr)
: QDirectFBPaintDevice(scr)
#ifndef QT_NO_DIRECTFB_WM
, dfbWindow(0)
#endif
, engine(0)
+ , flipFlags(flip)
+ , boundingRectFlip(scr->directFBFlags() & QDirectFBScreen::BoundingRectFlip)
{
setSurfaceFlags(Opaque | Buffered);
+#ifdef QT_DIRECTFB_TIMING
+ frames = 0;
+ timer.start();
+#endif
}
-QDirectFBSurface::QDirectFBSurface(QDirectFBScreen* scr, QWidget *widget)
+QDirectFBWindowSurface::QDirectFBWindowSurface(DFBSurfaceFlipFlags flip, QDirectFBScreen *scr, QWidget *widget)
: QWSWindowSurface(widget), QDirectFBPaintDevice(scr)
#ifndef QT_NO_DIRECTFB_WM
, dfbWindow(0)
#endif
, engine(0)
+ , flipFlags(flip)
+ , boundingRectFlip(scr->directFBFlags() & QDirectFBScreen::BoundingRectFlip)
{
onscreen = widget->testAttribute(Qt::WA_PaintOnScreen);
if (onscreen)
setSurfaceFlags(Opaque | RegionReserved);
else
setSurfaceFlags(Opaque | Buffered);
+#ifdef QT_DIRECTFB_TIMING
+ frames = 0;
+ timer.start();
+#endif
}
-QDirectFBSurface::~QDirectFBSurface()
+QDirectFBWindowSurface::~QDirectFBWindowSurface()
{
}
-bool QDirectFBSurface::isValid() const
+bool QDirectFBWindowSurface::isValid() const
{
return true;
}
#ifndef QT_NO_DIRECTFB_WM
-void QDirectFBSurface::createWindow()
+void QDirectFBWindowSurface::createWindow()
{
+#ifdef QT_NO_DIRECTFB_LAYER
+#warning QT_NO_DIRECTFB_LAYER requires QT_NO_DIRECTFB_WM
+#else
IDirectFBDisplayLayer *layer = screen->dfbDisplayLayer();
if (!layer)
qFatal("QDirectFBWindowSurface: Unable to get primary display layer!");
- DFBWindowDescription description;
- description.caps = DFBWindowCapabilities(DWCAPS_NODECORATION |
- DWCAPS_ALPHACHANNEL);
- description.flags = DWDESC_CAPS;
+ DFBWindowDescription description;
+ description.caps = DFBWindowCapabilities(DWCAPS_NODECORATION);
+ description.flags = DFBWindowDescriptionFlags(DWDESC_CAPS
+ |DWDESC_SURFACE_CAPS
+ |DWDESC_PIXELFORMAT);
+
+ description.surface_caps = DSCAPS_NONE;
+ if (screen->directFBFlags() & QDirectFBScreen::VideoOnly)
+ description.surface_caps = DFBSurfaceCapabilities(description.surface_caps|DSCAPS_VIDEOONLY);
+ const QImage::Format format = screen->pixelFormat();
+ description.pixelformat = QDirectFBScreen::getSurfacePixelFormat(format);
+ if (QDirectFBScreen::isPremultiplied(format))
+ description.surface_caps = DFBSurfaceCapabilities(DSCAPS_PREMULTIPLIED|description.caps);
DFBResult result = layer->CreateWindow(layer, &description, &dfbWindow);
if (result != DFB_OK)
@@ -103,10 +127,12 @@ void QDirectFBSurface::createWindow()
dfbSurface->Release(dfbSurface);
dfbWindow->GetSurface(dfbWindow, &dfbSurface);
+ forceRaster = (format == QImage::Format_RGB32);
+#endif
}
#endif // QT_NO_DIRECTFB_WM
-void QDirectFBSurface::setGeometry(const QRect &rect, const QRegion &mask)
+void QDirectFBWindowSurface::setGeometry(const QRect &rect, const QRegion &mask)
{
if (rect.isNull()) {
#ifndef QT_NO_DIRECTFB_WM
@@ -115,27 +141,32 @@ void QDirectFBSurface::setGeometry(const QRect &rect, const QRegion &mask)
dfbWindow = 0;
}
#endif
- if (dfbSurface) {
+ if (dfbSurface && dfbSurface != screen->dfbSurface()) {
dfbSurface->Release(dfbSurface);
dfbSurface = 0;
}
} else if (rect != geometry()) {
- const bool isResize = rect.size() != geometry().size();
DFBResult result = DFB_OK;
// If we're in a resize, the surface shouldn't be locked
- Q_ASSERT( (lockedImage == 0) || (isResize == false));
+ Q_ASSERT((lockedImage == 0) || (rect.size() == geometry().size()));
if (onscreen) {
- if (dfbSurface)
- dfbSurface->Release(dfbSurface);
-
- DFBRectangle r = { rect.x(), rect.y(),
- rect.width(), rect.height() };
IDirectFBSurface *primarySurface = screen->dfbSurface();
Q_ASSERT(primarySurface);
- result = primarySurface->GetSubSurface(primarySurface, &r, &dfbSurface);
+ if (dfbSurface && dfbSurface != primarySurface)
+ dfbSurface->Release(dfbSurface);
+
+ if (rect == screen->region().boundingRect()) {
+ dfbSurface = primarySurface;
+ } else {
+ const DFBRectangle r = { rect.x(), rect.y(),
+ rect.width(), rect.height() };
+ result = primarySurface->GetSubSurface(primarySurface, &r, &dfbSurface);
+ }
+ forceRaster = (dfbSurface && QDirectFBScreen::getImageFormat(dfbSurface) == QImage::Format_RGB32);
} else {
+ const bool isResize = rect.size() != geometry().size();
#ifdef QT_NO_DIRECTFB_WM
if (isResize) {
if (dfbSurface)
@@ -147,15 +178,8 @@ void QDirectFBSurface::setGeometry(const QRect &rect, const QRegion &mask)
"Unable to get DirectFB handle!");
}
- DFBSurfaceDescription description;
- description.flags = DFBSurfaceDescriptionFlags(DSDESC_WIDTH |
- DSDESC_HEIGHT |
- DSDESC_PIXELFORMAT);
- description.width = rect.width();
- description.height = rect.height();
- QDirectFBScreen::initSurfaceDescriptionPixelFormat(&description,
- QDirectFBScreen::instance()->pixelFormat());
- dfbSurface = QDirectFBScreen::instance()->createDFBSurface(&description, false);
+ dfbSurface = screen->createDFBSurface(rect.size(), screen->pixelFormat(), QDirectFBScreen::DontTrackSurface);
+ forceRaster = (dfbSurface && QDirectFBScreen::getImageFormat(dfbSurface) == QImage::Format_RGB32);
} else {
Q_ASSERT(dfbSurface);
}
@@ -179,13 +203,13 @@ void QDirectFBSurface::setGeometry(const QRect &rect, const QRegion &mask)
}
if (result != DFB_OK)
- DirectFBErrorFatal("QDirectFBSurface::setGeometry()", result);
+ DirectFBErrorFatal("QDirectFBWindowSurface::setGeometry()", result);
}
QWSWindowSurface::setGeometry(rect, mask);
}
-QByteArray QDirectFBSurface::permanentState() const
+QByteArray QDirectFBWindowSurface::permanentState() const
{
QByteArray array;
#ifdef QT_NO_DIRECTFB_WM
@@ -204,7 +228,7 @@ QByteArray QDirectFBSurface::permanentState() const
return array;
}
-void QDirectFBSurface::setPermanentState(const QByteArray &state)
+void QDirectFBWindowSurface::setPermanentState(const QByteArray &state)
{
SurfaceFlags flags;
const char *ptr = state.constData();
@@ -218,9 +242,9 @@ void QDirectFBSurface::setPermanentState(const QByteArray &state)
#endif
}
-bool QDirectFBSurface::scroll(const QRegion &region, int dx, int dy)
+bool QDirectFBWindowSurface::scroll(const QRegion &region, int dx, int dy)
{
- if (!dfbSurface)
+ if (!dfbSurface || !(flipFlags & DSFLIP_BLIT))
return false;
const QVector<QRect> rects = region.rects();
@@ -242,11 +266,11 @@ bool QDirectFBSurface::scroll(const QRegion &region, int dx, int dy)
dfbSurface->SetBlittingFlags(dfbSurface, DSBLIT_NOFX);
dfbSurface->BatchBlit(dfbSurface, dfbSurface,
dfbRects.data(), dfbPoints.data(), n);
-
+ dfbSurface->ReleaseSource(dfbSurface);
return true;
}
-bool QDirectFBSurface::move(const QPoint &offset)
+bool QDirectFBWindowSurface::move(const QPoint &offset)
{
QWSWindowSurface::move(offset);
@@ -261,7 +285,7 @@ bool QDirectFBSurface::move(const QPoint &offset)
#endif
}
-QRegion QDirectFBSurface::move(const QPoint &offset, const QRegion &newClip)
+QRegion QDirectFBWindowSurface::move(const QPoint &offset, const QRegion &newClip)
{
#ifdef QT_NO_DIRECTFB_WM
return QWSWindowSurface::move(offset, newClip);
@@ -274,10 +298,10 @@ QRegion QDirectFBSurface::move(const QPoint &offset, const QRegion &newClip)
#endif
}
-QPaintEngine* QDirectFBSurface::paintEngine() const
+QPaintEngine* QDirectFBWindowSurface::paintEngine() const
{
if (!engine) {
- QDirectFBSurface *that = const_cast<QDirectFBSurface*>(this);
+ QDirectFBWindowSurface *that = const_cast<QDirectFBWindowSurface*>(this);
that->engine = new QDirectFBPaintEngine(that);
return that->engine;
}
@@ -307,10 +331,15 @@ inline bool isWidgetOpaque(const QWidget *w)
return false;
}
-
-void QDirectFBSurface::flush(QWidget *widget, const QRegion &region,
- const QPoint &offset)
+void QDirectFBWindowSurface::flush(QWidget *widget, const QRegion &region,
+ const QPoint &offset)
{
+ Q_UNUSED(widget);
+#ifdef QT_NO_DIRECTFB_WM
+ Q_UNUSED(region);
+ Q_UNUSED(offset);
+#endif
+
QWidget *win = window();
// hw: make sure opacity information is updated before compositing
@@ -331,42 +360,49 @@ void QDirectFBSurface::flush(QWidget *widget, const QRegion &region,
if (winOpacity != opacity)
dfbWindow->SetOpacity(dfbWindow, winOpacity);
}
-#endif
-
- // XXX: have to call the base function first as the decoration is
- // currently painted there
- QWSWindowSurface::flush(widget, region, offset);
-
-#ifndef QT_NO_DIRECTFB_WM
- if (region.numRects() > 1) {
- const QVector<QRect> rects = region.rects();
- for (int i=0; i<rects.size(); ++i) {
- const QRect &r = rects.at(i);
+ if (!(flipFlags & DSFLIP_BLIT)) {
+ dfbSurface->Flip(dfbSurface, 0, flipFlags);
+ } else {
+ if (!boundingRectFlip && region.numRects() > 1) {
+ const QVector<QRect> rects = region.rects();
+ const DFBSurfaceFlipFlags nonWaitFlags = DFBSurfaceFlipFlags(flipFlags & ~DSFLIP_WAIT);
+ for (int i=0; i<rects.size(); ++i) {
+ const QRect &r = rects.at(i);
+ const DFBRegion dfbReg = { r.x() + offset.x(), r.y() + offset.y(),
+ r.x() + r.width() + offset.x(),
+ r.y() + r.height() + offset.y() };
+ dfbSurface->Flip(dfbSurface, &dfbReg, i + 1 < rects.size() ? nonWaitFlags : flipFlags);
+ }
+ } else {
+ const QRect r = region.boundingRect();
const DFBRegion dfbReg = { r.x() + offset.x(), r.y() + offset.y(),
r.x() + r.width() + offset.x(),
r.y() + r.height() + offset.y() };
- dfbSurface->Flip(dfbSurface, &dfbReg, DSFLIP_ONSYNC);
+ dfbSurface->Flip(dfbSurface, &dfbReg, flipFlags);
}
- } else {
- const QRect r = region.boundingRect();
- const DFBRegion dfbReg = { r.x() + offset.x(), r.y() + offset.y(),
- r.x() + r.width() + offset.x(),
- r.y() + r.height() + offset.y() };
- dfbSurface->Flip(dfbSurface, &dfbReg, DSFLIP_ONSYNC);
+ }
+#endif
+#ifdef QT_DIRECTFB_TIMING
+ enum { Secs = 3 };
+ ++frames;
+ if (timer.elapsed() >= Secs * 1000) {
+ qDebug("%d fps", int(double(frames) / double(Secs)));
+ frames = 0;
+ timer.restart();
}
#endif
}
-void QDirectFBSurface::beginPaint(const QRegion &)
+void QDirectFBWindowSurface::beginPaint(const QRegion &)
{
}
-void QDirectFBSurface::endPaint(const QRegion &)
+void QDirectFBWindowSurface::endPaint(const QRegion &)
{
#ifdef QT_DIRECTFB_DEBUG_SURFACES
if (bufferImages.count()) {
- qDebug("QDirectFBSurface::endPaint() this=%p", this);
+ qDebug("QDirectFBWindowSurface::endPaint() this=%p", this);
foreach(QImage* bufferImg, bufferImages)
qDebug(" Deleting buffer image %p", bufferImg);
@@ -379,7 +415,7 @@ void QDirectFBSurface::endPaint(const QRegion &)
}
-QImage* QDirectFBSurface::buffer(const QWidget *widget)
+QImage *QDirectFBWindowSurface::buffer(const QWidget *widget)
{
if (!lockedImage)
return 0;
@@ -397,7 +433,7 @@ QImage* QDirectFBSurface::buffer(const QWidget *widget)
bufferImages.append(img);
#ifdef QT_DIRECTFB_DEBUG_SURFACES
- qDebug("QDirectFBSurface::buffer() Created & returned %p", img);
+ qDebug("QDirectFBWindowSurface::buffer() Created & returned %p", img);
#endif
return img;
diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbsurface.h b/src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.h
index a9cdb7d..75998c4 100644
--- a/src/plugins/gfxdrivers/directfb/qdirectfbsurface.h
+++ b/src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.h
@@ -50,16 +50,20 @@
#include <private/qwindowsurface_qws_p.h>
#include <directfb.h>
+#ifdef QT_DIRECTFB_TIMING
+#include <qdatetime.h>
+#endif
+
QT_BEGIN_HEADER
QT_MODULE(Gui)
-class QDirectFBSurface: public QWSWindowSurface, public QDirectFBPaintDevice
+class QDirectFBWindowSurface : public QWSWindowSurface, public QDirectFBPaintDevice
{
public:
- QDirectFBSurface(QDirectFBScreen* scr);
- QDirectFBSurface(QDirectFBScreen* scr, QWidget *widget);
- ~QDirectFBSurface();
+ QDirectFBWindowSurface(DFBSurfaceFlipFlags flipFlags, QDirectFBScreen* scr);
+ QDirectFBWindowSurface(DFBSurfaceFlipFlags flipFlags, QDirectFBScreen* scr, QWidget *widget);
+ ~QDirectFBWindowSurface();
bool isValid() const;
@@ -75,15 +79,15 @@ public:
QRegion move(const QPoint &offset, const QRegion &newClip);
QImage image() const { return QImage(); }
- QPaintDevice* paintDevice() { return this; }
- QPaintEngine* paintEngine() const;
+ QPaintDevice *paintDevice() { return this; }
+ QPaintEngine *paintEngine() const;
void flush(QWidget *widget, const QRegion &region, const QPoint &offset);
void beginPaint(const QRegion &);
void endPaint(const QRegion &);
- QImage* buffer(const QWidget *widget);
+ QImage *buffer(const QWidget *widget);
private:
#ifndef QT_NO_DIRECTFB_WM
@@ -95,6 +99,12 @@ private:
bool onscreen;
QList<QImage*> bufferImages;
+ DFBSurfaceFlipFlags flipFlags;
+ bool boundingRectFlip;
+#ifdef QT_DIRECTFB_TIMING
+ int frames;
+ QTime timer;
+#endif
};
QT_END_HEADER
diff --git a/src/plugins/gfxdrivers/powervr/QWSWSEGL/QWSWSEGL.pro b/src/plugins/gfxdrivers/powervr/QWSWSEGL/QWSWSEGL.pro
index b62894d..9331d0a 100644
--- a/src/plugins/gfxdrivers/powervr/QWSWSEGL/QWSWSEGL.pro
+++ b/src/plugins/gfxdrivers/powervr/QWSWSEGL/QWSWSEGL.pro
@@ -22,3 +22,5 @@ LIBS += -lpvr2d
DESTDIR = $$QMAKE_LIBDIR_QT
target.path = $$[QT_INSTALL_LIBS]
INSTALLS += target
+
+include(../powervr.pri) \ No newline at end of file
diff --git a/src/plugins/gfxdrivers/powervr/QWSWSEGL/pvrqwsdrawable.c b/src/plugins/gfxdrivers/powervr/QWSWSEGL/pvrqwsdrawable.c
index 5c37253..4771d14 100644
--- a/src/plugins/gfxdrivers/powervr/QWSWSEGL/pvrqwsdrawable.c
+++ b/src/plugins/gfxdrivers/powervr/QWSWSEGL/pvrqwsdrawable.c
@@ -72,7 +72,7 @@ static int pvrQwsInitFbScreen(int screen)
/* Bail out if already initialized, or the number is incorrect */
if (screen < 0 || screen >= PVRQWS_MAX_SCREENS)
return 0;
- if (pvrQwsDisplay.screens[screen].mapped)
+ if (pvrQwsDisplay.screens[screen].initialized)
return 1;
/* Open the framebuffer and fetch its properties */
@@ -125,26 +125,33 @@ static int pvrQwsInitFbScreen(int screen)
start = fix.smem_start;
length = var.xres_virtual * var.yres_virtual * bytesPerPixel;
- /* Map the framebuffer region into memory */
- mapped = mmap(0, length, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
- if (!mapped || mapped == (void *)(-1)) {
- perror("mmap");
- close(fd);
- return 0;
- }
-
- /* Allocate a PVR2D memory region for the framebuffer */
- memInfo = 0;
- if (pvrQwsDisplay.context) {
- pageAddresses[0] = start & 0xFFFFF000;
- pageAddresses[1] = 0;
- if (PVR2DMemWrap
- (pvrQwsDisplay.context, mapped, PVR2D_WRAPFLAG_CONTIGUOUS,
- length, pageAddresses, &memInfo) != PVR2D_OK) {
- munmap(mapped, length);
+ if (screen == 0) {
+ /* We use PVR2DGetFrameBuffer to map the first screen.
+ On some chipsets it is more reliable than using PVR2DMemWrap */
+ mapped = 0;
+ memInfo = 0;
+ } else {
+ /* Other screens: map the framebuffer region into memory */
+ mapped = mmap(0, length, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
+ if (!mapped || mapped == (void *)(-1)) {
+ perror("mmap");
close(fd);
return 0;
}
+
+ /* Allocate a PVR2D memory region for the framebuffer */
+ memInfo = 0;
+ if (pvrQwsDisplay.context) {
+ pageAddresses[0] = start & 0xFFFFF000;
+ pageAddresses[1] = 0;
+ if (PVR2DMemWrap
+ (pvrQwsDisplay.context, mapped, PVR2D_WRAPFLAG_CONTIGUOUS,
+ length, pageAddresses, &memInfo) != PVR2D_OK) {
+ munmap(mapped, length);
+ close(fd);
+ return 0;
+ }
+ }
}
/* We don't need the file descriptor any more */
@@ -158,11 +165,17 @@ static int pvrQwsInitFbScreen(int screen)
pvrQwsDisplay.screens[screen].screenStride = stride;
pvrQwsDisplay.screens[screen].pixelFormat = format;
pvrQwsDisplay.screens[screen].bytesPerPixel = bytesPerPixel;
- pvrQwsDisplay.screens[screen].frameBuffer = memInfo;
pvrQwsDisplay.screens[screen].screenDrawable = 0;
- pvrQwsDisplay.screens[screen].mapped = mapped;
+ if (mapped) {
+ /* Don't set these fields if mapped is 0, because PVR2DGetFrameBuffer
+ may have already been called and set them */
+ pvrQwsDisplay.screens[screen].frameBuffer = memInfo;
+ pvrQwsDisplay.screens[screen].mapped = mapped;
+ }
pvrQwsDisplay.screens[screen].mappedLength = length;
pvrQwsDisplay.screens[screen].screenStart = start;
+ pvrQwsDisplay.screens[screen].needsUnmap = (mapped != 0);
+ pvrQwsDisplay.screens[screen].initialized = 1;
return 1;
}
@@ -209,7 +222,7 @@ static int pvrQwsAddDrawable(void)
/* Create the PVR2DMEMINFO blocks for the active framebuffers */
for (screen = 0; screen < PVRQWS_MAX_SCREENS; ++screen) {
- if (pvrQwsDisplay.screens[screen].mapped) {
+ if (screen != 0 && pvrQwsDisplay.screens[screen].mapped) {
pageAddresses[0]
= pvrQwsDisplay.screens[screen].screenStart & 0xFFFFF000;
pageAddresses[1] = 0;
@@ -224,6 +237,17 @@ static int pvrQwsAddDrawable(void)
return 0;
}
pvrQwsDisplay.screens[screen].frameBuffer = memInfo;
+ } else if (screen == 0) {
+ if (PVR2DGetFrameBuffer
+ (pvrQwsDisplay.context,
+ PVR2D_FB_PRIMARY_SURFACE, &memInfo) != PVR2D_OK) {
+ fprintf(stderr, "QWSWSEGL: could not get the primary framebuffer surface\n");
+ PVR2DDestroyDeviceContext(pvrQwsDisplay.context);
+ pvrQwsDisplay.context = 0;
+ return 0;
+ }
+ pvrQwsDisplay.screens[screen].frameBuffer = memInfo;
+ pvrQwsDisplay.screens[screen].mapped = memInfo->pBase;
}
}
@@ -330,7 +354,7 @@ void pvrQwsDisplayClose(void)
pvrQwsDestroyDrawableForced(info->screenDrawable);
if (info->frameBuffer)
PVR2DMemFree(pvrQwsDisplay.context, info->frameBuffer);
- if (info->mapped)
+ if (info->mapped && info->needsUnmap)
munmap(info->mapped, info->mappedLength);
}
diff --git a/src/plugins/gfxdrivers/powervr/QWSWSEGL/pvrqwsdrawable_p.h b/src/plugins/gfxdrivers/powervr/QWSWSEGL/pvrqwsdrawable_p.h
index d6c42a6..4f3ea90 100644
--- a/src/plugins/gfxdrivers/powervr/QWSWSEGL/pvrqwsdrawable_p.h
+++ b/src/plugins/gfxdrivers/powervr/QWSWSEGL/pvrqwsdrawable_p.h
@@ -76,6 +76,8 @@ typedef struct {
void *mapped;
int mappedLength;
unsigned long screenStart;
+ int needsUnmap;
+ int initialized;
} PvrQwsScreenInfo;
diff --git a/src/plugins/gfxdrivers/powervr/README b/src/plugins/gfxdrivers/powervr/README
index b830066..4dce87f 100644
--- a/src/plugins/gfxdrivers/powervr/README
+++ b/src/plugins/gfxdrivers/powervr/README
@@ -8,6 +8,9 @@ is built as two libraries: The actual QScreen plugin used by Qt (in the
pvreglscreen directory) and a WSEGL plugin for the PowerVR drivers (in the
QWSWSEGL directory).
+Qt/Embedded needs to be configured with the QT_QWS_CLIENTBLIT and
+QT_NO_QWS_CURSOR defines.
+
The PowerVR drivers provide the WSEGL plugin API to allow window systems such as
QWS to integrate correctly. In order to use the integration, the WSEGL plugin
(libpvrQWSWSEGL.so, usually installed into the Qt library directory) must be in
@@ -26,12 +29,13 @@ strictly Unix-style markers.
***************************************************************************
* IMPORTANT: To build the QScreen plugin and the WSEGL library it depends *
-* on, the pvr2d.h, wsegl.h headers for your platform are required. These *
-* can be obtained either through your platform provider or directly from *
-* Imagination Technologies. *
+* on, the pvr2d.h, wsegl.h headers for your platform are required. You *
+* can find a copy of these headers in src/3rdparty/powervr for SGX based *
+* platforms like the TI OMAP3xxx. They may also work on MBX platforms too *
+* depending on how old your libEGL is. You can tell Qt where to find *
+* these headers by setting QMAKE_INCDIR_POWERVR in the mkspec. *
***************************************************************************
-
When you start a Qt/Embedded application, you should modify the QWS_DISPLAY
environment variable to use the "powervr" driver instead of "LinuxFb". For
example, if your original QWS_DISPLAY variable was:
diff --git a/src/plugins/gfxdrivers/powervr/powervr.pri b/src/plugins/gfxdrivers/powervr/powervr.pri
new file mode 100644
index 0000000..9df8c0e
--- /dev/null
+++ b/src/plugins/gfxdrivers/powervr/powervr.pri
@@ -0,0 +1,2 @@
+
+INCLUDEPATH += $$QMAKE_INCDIR_POWERVR
diff --git a/src/plugins/gfxdrivers/powervr/pvreglscreen/pvreglscreen.cpp b/src/plugins/gfxdrivers/powervr/pvreglscreen/pvreglscreen.cpp
index 3a94851..b0ffbf1 100644
--- a/src/plugins/gfxdrivers/powervr/pvreglscreen/pvreglscreen.cpp
+++ b/src/plugins/gfxdrivers/powervr/pvreglscreen/pvreglscreen.cpp
@@ -381,7 +381,7 @@ void PvrEglSurfaceHolder::removeSurface()
// create the temporary surface again.
if (surface == EGL_NO_SURFACE && dpy != EGL_NO_DISPLAY) {
surface = eglCreateWindowSurface
- (dpy, config, (EGLNativeWindowType)tempSurface, NULL);
+ (dpy, config, (EGLNativeWindowType)(-1), NULL);
if (surface == EGL_NO_SURFACE)
qWarning("Could not re-create the temporary EGL surface");
}
diff --git a/src/plugins/gfxdrivers/powervr/pvreglscreen/pvreglscreen.pro b/src/plugins/gfxdrivers/powervr/pvreglscreen/pvreglscreen.pro
index 691cd2d..675be85 100644
--- a/src/plugins/gfxdrivers/powervr/pvreglscreen/pvreglscreen.pro
+++ b/src/plugins/gfxdrivers/powervr/pvreglscreen/pvreglscreen.pro
@@ -9,9 +9,10 @@ DEFINES += QT_QWS_CLIENTBLIT
INCLUDEPATH += ../QWSWSEGL
+
HEADERS = \
- pvreglscreen.h \
- pvreglwindowsurface.h
+ pvreglscreen.h \
+ pvreglwindowsurface.h
SOURCES = \
pvreglscreenplugin.cpp \
@@ -22,3 +23,5 @@ QTDIR_build:DESTDIR = $$QT_BUILD_TREE/plugins/gfxdrivers
target.path = $$[QT_INSTALL_PLUGINS]/gfxdrivers
INSTALLS += target
+
+include(../powervr.pri) \ No newline at end of file
diff --git a/src/plugins/iconengines/svgiconengine/qsvgiconengine.cpp b/src/plugins/iconengines/svgiconengine/qsvgiconengine.cpp
index 7fdf81f..3273513 100644
--- a/src/plugins/iconengines/svgiconengine/qsvgiconengine.cpp
+++ b/src/plugins/iconengines/svgiconengine/qsvgiconengine.cpp
@@ -121,17 +121,11 @@ QSize QSvgIconEngine::actualSize(const QSize &size, QIcon::Mode mode,
if (!pm.isNull() && pm.size() == size)
return size;
}
-
- QSvgRenderer renderer;
- d->loadDataForModeAndState(&renderer, mode, state);
- if (renderer.isValid()) {
- QSize defaultSize = renderer.defaultSize();
- if (!defaultSize.isNull())
- defaultSize.scale(size, Qt::KeepAspectRatio);
- return defaultSize;
- } else {
+
+ QPixmap pm = pixmap(size, mode, state);
+ if (pm.isNull())
return QSize();
- }
+ return pm.size();
}
void QSvgIconEnginePrivate::loadDataForModeAndState(QSvgRenderer *renderer, QIcon::Mode mode, QIcon::State state)
@@ -158,9 +152,13 @@ void QSvgIconEnginePrivate::loadDataForModeAndState(QSvgRenderer *renderer, QIco
QPixmap QSvgIconEngine::pixmap(const QSize &size, QIcon::Mode mode,
QIcon::State state)
-{
+{
QPixmap pm;
+ QString pmckey(d->pmcKey(size, mode, state));
+ if (QPixmapCache::find(pmckey, pm))
+ return pm;
+
if (d->addedPixmaps) {
pm = d->addedPixmaps->value(d->hashKey(mode, state));
if (!pm.isNull() && pm.size() == size)
@@ -176,10 +174,6 @@ QPixmap QSvgIconEngine::pixmap(const QSize &size, QIcon::Mode mode,
if (!actualSize.isNull())
actualSize.scale(size, Qt::KeepAspectRatio);
- QString pmckey(d->pmcKey(actualSize, mode, state));
- if (QPixmapCache::find(pmckey, pm))
- return pm;
-
QImage img(actualSize, QImage::Format_ARGB32_Premultiplied);
img.fill(0x00000000);
QPainter p(&img);
diff --git a/src/plugins/qpluginbase.pri b/src/plugins/qpluginbase.pri
index 446efab..ae39021 100644
--- a/src/plugins/qpluginbase.pri
+++ b/src/plugins/qpluginbase.pri
@@ -1,6 +1,6 @@
TEMPLATE = lib
isEmpty(QT_MAJOR_VERSION) {
- VERSION=4.5.1
+ VERSION=4.5.2
} else {
VERSION=$${QT_MAJOR_VERSION}.$${QT_MINOR_VERSION}.$${QT_PATCH_VERSION}
}
diff --git a/src/qbase.pri b/src/qbase.pri
index e9da61d..f7c8a95 100644
--- a/src/qbase.pri
+++ b/src/qbase.pri
@@ -4,7 +4,7 @@ INCLUDEPATH *= $$QMAKE_INCDIR_QT/$$TARGET #just for today to have some compat
isEmpty(QT_ARCH):!isEmpty(ARCH):QT_ARCH=$$ARCH #another compat that will rot for change #215700
TEMPLATE = lib
isEmpty(QT_MAJOR_VERSION) {
- VERSION=4.5.1
+ VERSION=4.5.2
} else {
VERSION=$${QT_MAJOR_VERSION}.$${QT_MINOR_VERSION}.$${QT_PATCH_VERSION}
}
diff --git a/src/qt3support/dialogs/q3filedialog.cpp b/src/qt3support/dialogs/q3filedialog.cpp
index 4874b6d..1ec0cfc 100644
--- a/src/qt3support/dialogs/q3filedialog.cpp
+++ b/src/qt3support/dialogs/q3filedialog.cpp
@@ -631,6 +631,7 @@ public:
protected:
void keyPressEvent(QKeyEvent *e);
void focusOutEvent(QFocusEvent *e);
+ void emitDoRename();
signals:
void cancelRename();
@@ -1143,16 +1144,20 @@ void QRenameEdit::keyPressEvent(QKeyEvent *e)
void QRenameEdit::focusOutEvent(QFocusEvent *)
{
- if (!doRenameAlreadyEmitted) {
- doRenameAlreadyEmitted = true;
- emit doRename();
- }
+ if (!doRenameAlreadyEmitted)
+ emitDoRename();
}
void QRenameEdit::slotReturnPressed()
{
+ emitDoRename();
+}
+
+void QRenameEdit::emitDoRename()
+{
doRenameAlreadyEmitted = true;
emit doRename();
+ doRenameAlreadyEmitted = false;
}
/************************************************************************
diff --git a/src/qt3support/network/q3http.cpp b/src/qt3support/network/q3http.cpp
index f1590a6..591b381 100644
--- a/src/qt3support/network/q3http.cpp
+++ b/src/qt3support/network/q3http.cpp
@@ -626,7 +626,7 @@ void Q3HttpHeader::setContentLength( int len )
}
/*!
- Returns true if the header has an entry for the the special HTTP
+ Returns true if the header has an entry for the special HTTP
header field \c content-type; otherwise returns false.
\sa contentType() setContentType()
diff --git a/src/qt3support/network/q3urloperator.cpp b/src/qt3support/network/q3urloperator.cpp
index 3f334a8..b415e12 100644
--- a/src/qt3support/network/q3urloperator.cpp
+++ b/src/qt3support/network/q3urloperator.cpp
@@ -543,7 +543,7 @@ const Q3NetworkOperation *Q3UrlOperator::rename( const QString &oldname, const Q
in mind that the get() and put() operations emit this signal
through the Q3UrlOperator. The number of transferred bytes and the
total bytes that you receive as arguments in this signal do not
- relate to the the whole copy operation; they relate first to the
+ relate to the whole copy operation; they relate first to the
get() and then to the put() operation. Always check what type of
operation the signal comes from; this is given in the signal's
last argument.
diff --git a/src/qt3support/text/q3richtext.cpp b/src/qt3support/text/q3richtext.cpp
index c058e37..e508001 100644
--- a/src/qt3support/text/q3richtext.cpp
+++ b/src/qt3support/text/q3richtext.cpp
@@ -4895,7 +4895,8 @@ void Q3TextParagraph::drawString(QPainter &painter, const QString &str, int star
bool extendRight = false;
bool extendLeft = false;
bool selWrap = (real_selEnd == length()-1 && n && n->hasSelection(it.key()));
- if (selWrap || this->str->at(real_selEnd).lineStart) {
+ if (selWrap
+ || ((real_selEnd < this->str->length()) && this->str->at(real_selEnd).lineStart)) {
extendRight = (fullSelectionWidth != 0);
if (!extendRight && !rightToLeft)
tmpw += painter.fontMetrics().width(QLatin1Char(' '));
diff --git a/src/qt3support/widgets/q3action.cpp b/src/qt3support/widgets/q3action.cpp
index 4e1a1bf..311212a 100644
--- a/src/qt3support/widgets/q3action.cpp
+++ b/src/qt3support/widgets/q3action.cpp
@@ -497,7 +497,7 @@ Q3Action::Q3Action(const QIcon& icon, const QString& menuText, QKeySequence acce
}
/*!
- This constructor results in an icon-less action with the the menu
+ This constructor results in an icon-less action with the menu
text \a menuText and keyboard accelerator \a accel. It is a child
of \a parent and called \a name.
diff --git a/src/qt3support/widgets/q3groupbox.cpp b/src/qt3support/widgets/q3groupbox.cpp
index 1fa7e7c..e0b609a 100644
--- a/src/qt3support/widgets/q3groupbox.cpp
+++ b/src/qt3support/widgets/q3groupbox.cpp
@@ -382,7 +382,7 @@ int Q3GroupBox::insideSpacing() const
}
/*!
- Sets the the width of the inside margin to \a m pixels.
+ Sets the width of the inside margin to \a m pixels.
\sa insideMargin()
*/
@@ -954,7 +954,7 @@ int Q3GroupBox::frameWidth() const
\fn int Q3GroupBox::margin() const
\since 4.2
- Returns the width of the the margin around the contents of the widget.
+ Returns the width of the margin around the contents of the widget.
This function uses QWidget::getContentsMargins() to get the margin.
diff --git a/src/qt3support/widgets/q3popupmenu.cpp b/src/qt3support/widgets/q3popupmenu.cpp
index 7f890b5..0b3a524 100644
--- a/src/qt3support/widgets/q3popupmenu.cpp
+++ b/src/qt3support/widgets/q3popupmenu.cpp
@@ -134,7 +134,7 @@ QT_BEGIN_NAMESPACE
\fn int Q3PopupMenu::margin() const
\since 4.2
- Returns the with of the the margin around the contents of the widget.
+ Returns the width of the margin around the contents of the widget.
This function uses QWidget::getContentsMargins() to get the margin.
\sa setMargin(), QWidget::getContentsMargins()
diff --git a/src/qt3support/widgets/q3progressbar.cpp b/src/qt3support/widgets/q3progressbar.cpp
index caae460..81f0dbf 100644
--- a/src/qt3support/widgets/q3progressbar.cpp
+++ b/src/qt3support/widgets/q3progressbar.cpp
@@ -455,7 +455,7 @@ void Q3ProgressBar::paintEvent(QPaintEvent *)
\fn int Q3ProgressBar::margin() const
\since 4.2
- Returns the with of the the margin around the contents of the widget.
+ Returns the width of the margin around the contents of the widget.
This function uses QWidget::getContentsMargins() to get the margin.
\sa setMargin(), QWidget::getContentsMargins()
diff --git a/src/qt3support/widgets/q3scrollview.cpp b/src/qt3support/widgets/q3scrollview.cpp
index 91a9203..5a91027 100644
--- a/src/qt3support/widgets/q3scrollview.cpp
+++ b/src/qt3support/widgets/q3scrollview.cpp
@@ -2038,7 +2038,7 @@ void Q3ScrollView::center(int x, int y)
\list
\i Margin 0.0 allows (x, y) to be on the edge of the visible area.
\i Margin 0.5 ensures that (x, y) is in middle 50% of the visible area.
- \i Margin 1.0 ensures that (x, y) is in the center of the the visible area.
+ \i Margin 1.0 ensures that (x, y) is in the center of the visible area.
\endlist
*/
void Q3ScrollView::center(int x, int y, float xmargin, float ymargin)
diff --git a/src/script/qscriptvalueiterator.cpp b/src/script/qscriptvalueiterator.cpp
index fe5ef9f..1a60632 100644
--- a/src/script/qscriptvalueiterator.cpp
+++ b/src/script/qscriptvalueiterator.cpp
@@ -106,6 +106,7 @@ QScriptValueIteratorPrivate::QScriptValueIteratorPrivate()
*/
QScriptValueIteratorPrivate::~QScriptValueIteratorPrivate()
{
+ delete it;
}
/*!
@@ -130,7 +131,6 @@ QScriptValueIterator::QScriptValueIterator(const QScriptValue &object)
QScriptValueIterator::~QScriptValueIterator()
{
if (d_ptr) {
- delete d_ptr->it;
delete d_ptr;
d_ptr = 0;
}
@@ -312,7 +312,7 @@ void QScriptValueIterator::remove()
QScriptValueIterator& QScriptValueIterator::operator=(QScriptValue &object)
{
if (d_ptr) {
- delete d_ptr->it;
+ delete d_ptr;
d_ptr = 0;
}
QScriptValueImpl val = QScriptValuePrivate::valueOf(object);
diff --git a/src/scripttools/debugging/qscriptbreakpointswidget.cpp b/src/scripttools/debugging/qscriptbreakpointswidget.cpp
index aea1fe7..efb3047 100644
--- a/src/scripttools/debugging/qscriptbreakpointswidget.cpp
+++ b/src/scripttools/debugging/qscriptbreakpointswidget.cpp
@@ -225,7 +225,6 @@ public:
bool eventFilter(QObject *editor, QEvent *event)
{
-#if QT_VERSION >= 0x040500
if (QLineEdit *le = qobject_cast<QLineEdit*>(editor)) {
if (event->type() == QEvent::KeyPress) {
int key = static_cast<QKeyEvent*>(event)->key();
@@ -237,21 +236,18 @@ public:
}
}
}
-#endif
return QStyledItemDelegate::eventFilter(editor, event);
}
void setModelData(QWidget *editor, QAbstractItemModel *model,
const QModelIndex &index) const
{
-#if QT_VERSION >= 0x040500
if (index.column() == 2) {
// check that the syntax is OK
QString condition = qobject_cast<QLineEdit*>(editor)->text();
if (QScriptEngine::checkSyntax(condition).state() != QScriptSyntaxCheckResult::Valid)
return;
}
-#endif
QStyledItemDelegate::setModelData(editor, model, index);
}
@@ -261,11 +257,7 @@ private Q_SLOTS:
QWidget *editor = qobject_cast<QWidget*>(sender());
QPalette pal = editor->palette();
QColor col;
-#if QT_VERSION >= 0x040500
bool ok = (QScriptEngine::checkSyntax(text).state() == QScriptSyntaxCheckResult::Valid);
-#else
- bool ok = true;
-#endif
if (ok) {
col = Qt::white;
} else {
diff --git a/src/scripttools/debugging/qscriptcompletiontask.cpp b/src/scripttools/debugging/qscriptcompletiontask.cpp
index 3767505..119b96a 100644
--- a/src/scripttools/debugging/qscriptcompletiontask.cpp
+++ b/src/scripttools/debugging/qscriptcompletiontask.cpp
@@ -162,11 +162,7 @@ void QScriptCompletionTaskPrivate::completeScriptExpression()
obj = ctx->thisObject();
} else {
QScriptValueList scopeChain;
-#if QT_VERSION >= 0x040500
scopeChain = ctx->scopeChain();
-#else
- scopeChain.append(ctx->activationObject());
-#endif
for (int i = 0; i < scopeChain.size(); ++i) {
QScriptValue oo = scopeChain.at(i).property(topLevelIdent);
if (oo.isObject()) {
@@ -180,11 +176,7 @@ void QScriptCompletionTaskPrivate::completeScriptExpression()
if (obj.isValid())
objects.append(obj);
} else {
-#if QT_VERSION >= 0x040500
objects << ctx->scopeChain();
-#else
- objects.append(ctx->activationObject());
-#endif
QStringList keywords;
keywords.append(QString::fromLatin1("this"));
keywords.append(QString::fromLatin1("true"));
diff --git a/src/scripttools/debugging/qscriptdebugger.cpp b/src/scripttools/debugging/qscriptdebugger.cpp
index 5a356ae..ce43572 100644
--- a/src/scripttools/debugging/qscriptdebugger.cpp
+++ b/src/scripttools/debugging/qscriptdebugger.cpp
@@ -663,11 +663,7 @@ QString QScriptDebuggerPrivate::toolTip(int frameIndex, int lineNumber,
objects.append(ctx->thisObject());
++pathIndex;
} else {
-#if QT_VERSION >= 0x040500
objects << ctx->scopeChain();
-#else
- objects.append(ctx->activationObject());
-#endif
}
for (int i = 0; i < objects.size(); ++i) {
QScriptValue val = objects.at(i);
@@ -991,13 +987,11 @@ public:
qint64 scriptId = m_added.at(m_index);
m_debugger->scriptsModel->addScript(scriptId, data);
-#if QT_VERSION >= 0x040500
// ### could be slow, might want to do this in a separate thread
QString xml = qt_scriptToXml(data.contents(), data.baseLineNumber());
QScriptXmlParser::Result extraInfo = QScriptXmlParser::parse(xml);
m_debugger->scriptsModel->addExtraScriptInfo(
scriptId, extraInfo.functionsInfo, extraInfo.executableLineNumbers);
-#endif
if (++m_index < m_added.size())
frontend.scheduleGetScriptData(m_added.at(m_index));
diff --git a/src/scripttools/debugging/qscriptdebuggeragent.cpp b/src/scripttools/debugging/qscriptdebuggeragent.cpp
index fcba033..0ea9c99 100644
--- a/src/scripttools/debugging/qscriptdebuggeragent.cpp
+++ b/src/scripttools/debugging/qscriptdebuggeragent.cpp
@@ -88,16 +88,9 @@ QScriptDebuggerAgentPrivate *QScriptDebuggerAgentPrivate::get(
*/
QScriptDebuggerAgent::QScriptDebuggerAgent(
QScriptDebuggerBackendPrivate *backend, QScriptEngine *engine)
-#if QT_VERSION >= 0x040500
: QScriptEngineAgent(*new QScriptDebuggerAgentPrivate, engine)
-#else
- : QScriptEngineAgent(engine), d_ptr(new QScriptDebuggerAgentPrivate)
-#endif
{
Q_D(QScriptDebuggerAgent);
-#if QT_VERSION < 0x040500
- d_ptr->q_ptr = this;
-#endif
d->backend = backend;
QScriptContext *ctx = engine->currentContext();
@@ -117,9 +110,6 @@ QScriptDebuggerAgent::~QScriptDebuggerAgent()
Q_D(QScriptDebuggerAgent);
if (d->backend)
d->backend->agentDestroyed(this);
-#if QT_VERSION < 0x040500
- delete d_ptr;
-#endif
}
/*!
@@ -712,12 +702,7 @@ void QScriptDebuggerAgent::exceptionCatch(qint64 scriptId,
*/
bool QScriptDebuggerAgent::supportsExtension(Extension extension) const
{
-#if QT_VERSION >= 0x040500
return (extension == DebuggerInvocationRequest);
-#else
- Q_UNUSED(extension);
- return false;
-#endif
}
/*!
@@ -727,7 +712,6 @@ QVariant QScriptDebuggerAgent::extension(Extension extension,
const QVariant &argument)
{
Q_UNUSED(extension);
-#if QT_VERSION >= 0x040500
Q_D(QScriptDebuggerAgent);
Q_ASSERT(extension == DebuggerInvocationRequest);
QVariantList lst = argument.toList();
@@ -739,9 +723,6 @@ QVariant QScriptDebuggerAgent::extension(Extension extension,
d->backend->debuggerInvocationRequest(
scriptId, lineNumber, columnNumber);
}
-#else
- Q_UNUSED(argument);
-#endif
return QVariant();
}
diff --git a/src/scripttools/debugging/qscriptdebuggeragent_p.h b/src/scripttools/debugging/qscriptdebuggeragent_p.h
index 556b17b..28ec46a 100644
--- a/src/scripttools/debugging/qscriptdebuggeragent_p.h
+++ b/src/scripttools/debugging/qscriptdebuggeragent_p.h
@@ -125,9 +125,6 @@ public:
const QVariant &argument = QVariant());
private:
-#if QT_VERSION < 0x040500
- QScriptDebuggerAgentPrivate *d_ptr;
-#endif
Q_DECLARE_PRIVATE(QScriptDebuggerAgent)
Q_DISABLE_COPY(QScriptDebuggerAgent)
};
diff --git a/src/scripttools/debugging/qscriptdebuggeragent_p_p.h b/src/scripttools/debugging/qscriptdebuggeragent_p_p.h
index cf6fd1a..313b1c0 100644
--- a/src/scripttools/debugging/qscriptdebuggeragent_p_p.h
+++ b/src/scripttools/debugging/qscriptdebuggeragent_p_p.h
@@ -68,9 +68,7 @@ QT_BEGIN_NAMESPACE
class QScriptDebuggerAgent;
class QScriptDebuggerAgentPrivate
-#if QT_VERSION >= 0x040500
: public QScriptEngineAgentPrivate
-#endif
{
Q_DECLARE_PUBLIC(QScriptDebuggerAgent)
public:
@@ -125,10 +123,6 @@ public:
int statementCounter;
QScriptDebuggerBackendPrivate *backend;
-
-#if QT_VERSION < 0x040500
- QScriptDebuggerAgent *q_ptr;
-#endif
};
QT_END_NAMESPACE
diff --git a/src/scripttools/debugging/qscriptdebuggerbackend.cpp b/src/scripttools/debugging/qscriptdebuggerbackend.cpp
index 24a3847..3c29130 100644
--- a/src/scripttools/debugging/qscriptdebuggerbackend.cpp
+++ b/src/scripttools/debugging/qscriptdebuggerbackend.cpp
@@ -615,13 +615,11 @@ void QScriptDebuggerBackend::doPendingEvaluate(bool postEvent)
// push a new context and initialize its scope chain etc.
{
QScriptContext *evalContext = engine()->pushContext();
-#if QT_VERSION >= 0x040500
QScriptValueList scopeChain = ctx->scopeChain();
if (scopeChain.isEmpty())
scopeChain.append(engine()->globalObject());
while (!scopeChain.isEmpty())
evalContext->pushScope(scopeChain.takeLast());
-#endif
evalContext->setActivationObject(ctx->activationObject());
evalContext->setThisObject(ctx->thisObject());
}
diff --git a/src/scripttools/debugging/qscriptdebuggercommandexecutor.cpp b/src/scripttools/debugging/qscriptdebuggercommandexecutor.cpp
index e36386d..1be8c5f 100644
--- a/src/scripttools/debugging/qscriptdebuggercommandexecutor.cpp
+++ b/src/scripttools/debugging/qscriptdebuggercommandexecutor.cpp
@@ -287,13 +287,9 @@ QScriptDebuggerResponse QScriptDebuggerCommandExecutor::execute(
QScriptContext *ctx = backend->context(command.contextIndex());
if (ctx) {
QScriptDebuggerValueList dest;
-#if QT_VERSION >= 0x040500
QScriptValueList src = ctx->scopeChain();
for (int i = 0; i < src.size(); ++i)
dest.append(src.at(i));
-#else
- dest.append(ctx->activationObject());
-#endif
response.setResult(dest);
} else {
response.setError(QScriptDebuggerResponse::InvalidContextIndex);
diff --git a/src/scripttools/debugging/qscriptdebuggerconsoleglobalobject.cpp b/src/scripttools/debugging/qscriptdebuggerconsoleglobalobject.cpp
index 0018b92..f923508 100644
--- a/src/scripttools/debugging/qscriptdebuggerconsoleglobalobject.cpp
+++ b/src/scripttools/debugging/qscriptdebuggerconsoleglobalobject.cpp
@@ -448,12 +448,7 @@ QStringList QScriptDebuggerConsoleGlobalObject::getCommandCompletions(const QStr
bool QScriptDebuggerConsoleGlobalObject::checkSyntax(const QString &program)
{
-#if QT_VERSION >= 0x040500
return (QScriptEngine::checkSyntax(program).state() == QScriptSyntaxCheckResult::Valid);
-#else
- Q_UNUSED(program);
- return true;
-#endif
}
void QScriptDebuggerConsoleGlobalObject::setEvaluateAction(int action)
diff --git a/src/scripttools/debugging/qscriptdebuggerlocalswidget.cpp b/src/scripttools/debugging/qscriptdebuggerlocalswidget.cpp
index a4919be..60fe48d 100644
--- a/src/scripttools/debugging/qscriptdebuggerlocalswidget.cpp
+++ b/src/scripttools/debugging/qscriptdebuggerlocalswidget.cpp
@@ -206,11 +206,7 @@ private Q_SLOTS:
QWidget *editor = qobject_cast<QWidget*>(sender());
QPalette pal = editor->palette();
QColor col;
-#if QT_VERSION >= 0x040500
bool ok = (QScriptEngine::checkSyntax(text).state() == QScriptSyntaxCheckResult::Valid);
-#else
- bool ok = true;
-#endif
if (ok) {
col = Qt::white;
} else {
@@ -277,12 +273,10 @@ bool QScriptDebuggerLocalsItemDelegate::eventFilter(QObject *watched, QEvent *ev
return QStyledItemDelegate::eventFilter(watched, event);
QKeyEvent *ke = static_cast<QKeyEvent*>(event);
if ((ke->key() == Qt::Key_Enter) || (ke->key() == Qt::Key_Return)) {
-#if QT_VERSION >= 0x040500
if (QScriptEngine::checkSyntax(le->text()).state() != QScriptSyntaxCheckResult::Valid) {
// ignore when script contains syntax error
return true;
}
-#endif
}
if (ke->key() != Qt::Key_Tab)
return QStyledItemDelegate::eventFilter(watched, event);
@@ -296,14 +290,12 @@ void QScriptDebuggerLocalsItemDelegate::setModelData(
QWidget *editor, QAbstractItemModel *model,
const QModelIndex &index) const
{
-#if QT_VERSION >= 0x040500
if (index.column() == 1) {
// check that the syntax is OK
QString expression = qobject_cast<QLineEdit*>(editor)->text();
if (QScriptEngine::checkSyntax(expression).state() != QScriptSyntaxCheckResult::Valid)
return;
}
-#endif
QStyledItemDelegate::setModelData(editor, model, index);
}
diff --git a/src/scripttools/debugging/qscriptdebuggerscriptedconsolecommand.cpp b/src/scripttools/debugging/qscriptdebuggerscriptedconsolecommand.cpp
index 20350f6..fa30d84 100644
--- a/src/scripttools/debugging/qscriptdebuggerscriptedconsolecommand.cpp
+++ b/src/scripttools/debugging/qscriptdebuggerscriptedconsolecommand.cpp
@@ -410,11 +410,7 @@ void QScriptDebuggerScriptedConsoleCommandJob::start()
for (int i = 0; i < d->arguments.size(); ++i)
args.append(QScriptValue(engine, d->arguments.at(i)));
QScriptDebuggerConsoleGlobalObject *global;
-#if QT_VERSION >= 0x040500
global = qobject_cast<QScriptDebuggerConsoleGlobalObject*>(engine->globalObject().toQObject());
-#else
- global = qobject_cast<QScriptDebuggerConsoleGlobalObject*>(engine->globalObject().scope().toQObject());
-#endif
Q_ASSERT(global != 0);
global->setScheduler(this);
global->setResponseHandler(this);
@@ -444,11 +440,7 @@ void QScriptDebuggerScriptedConsoleCommandJob::handleResponse(
args.append(qScriptValueFromValue(engine, response));
args.append(QScriptValue(engine, commandId));
QScriptDebuggerConsoleGlobalObject *global;
-#if QT_VERSION >= 0x040500
global = qobject_cast<QScriptDebuggerConsoleGlobalObject*>(engine->globalObject().toQObject());
-#else
- global = qobject_cast<QScriptDebuggerConsoleGlobalObject*>(engine->globalObject().scope().toQObject());
-#endif
Q_ASSERT(global != 0);
global->setScheduler(this);
global->setResponseHandler(this);
@@ -566,12 +558,7 @@ QScriptDebuggerScriptedConsoleCommand *QScriptDebuggerScriptedConsoleCommand::pa
QScriptDebuggerConsoleGlobalObject *cppGlobal = new QScriptDebuggerConsoleGlobalObject();
QScriptValue global = engine->newQObject(cppGlobal,
QScriptEngine::ScriptOwnership,
-#if QT_VERSION >= 0x040500
QScriptEngine::ExcludeSuperClassContents);
-#else
- QScriptEngine::ExcludeSuperClassMethods
- | QScriptEngine::ExcludeSuperClassProperties);
-#endif
{
QScriptValueIterator it(engine->globalObject());
while (it.hasNext()) {
@@ -579,12 +566,7 @@ QScriptDebuggerScriptedConsoleCommand *QScriptDebuggerScriptedConsoleCommand::pa
global.setProperty(it.scriptName(), it.value(), it.flags());
}
}
-#if QT_VERSION >= 0x040500
engine->setGlobalObject(global);
-#else
- engine->globalObject().setScope(global);
- global = engine->globalObject();
-#endif
cppGlobal->setMessageHandler(messageHandler);
QScriptValue ret = engine->evaluate(program, fileName);
diff --git a/src/scripttools/debugging/qscriptedit.cpp b/src/scripttools/debugging/qscriptedit.cpp
index 2bc0a40..7c2a72c 100644
--- a/src/scripttools/debugging/qscriptedit.cpp
+++ b/src/scripttools/debugging/qscriptedit.cpp
@@ -342,11 +342,9 @@ void QScriptEdit::extraAreaPaintEvent(QPaintEvent *e)
icon.paint(&painter, r, Qt::AlignCenter);
}
-#if QT_VERSION >= 0x040500
if (!m_executableLineNumbers.contains(lineNumber))
painter.setPen(pal.color(QPalette::Mid));
else
-#endif
painter.setPen(QColor(Qt::darkCyan));
QString number = QString::number(lineNumber);
painter.drawText(rect.x() + markWidth, (int)top, rect.x() + extraAreaWidth - markWidth - 4,
@@ -370,10 +368,8 @@ void QScriptEdit::extraAreaMouseEvent(QMouseEvent *e)
if (e->type() == QEvent::MouseMove && e->buttons() == 0) { // mouse tracking
bool hand = (e->pos().x() <= markWidth);
-#if QT_VERSION >= 0x040500
int lineNumber = cursor.blockNumber() + m_baseLineNumber;
hand = hand && m_executableLineNumbers.contains(lineNumber);
-#endif
#ifndef QT_NO_CURSOR
if (hand != (m_extraArea->cursor().shape() == Qt::PointingHandCursor))
m_extraArea->setCursor(hand ? Qt::PointingHandCursor : Qt::ArrowCursor);
@@ -382,12 +378,8 @@ void QScriptEdit::extraAreaMouseEvent(QMouseEvent *e)
if (e->type() == QEvent::MouseButtonPress) {
if (e->button() == Qt::LeftButton) {
-#if QT_VERSION >= 0x040500
int lineNumber = cursor.blockNumber() + m_baseLineNumber;
bool executable = m_executableLineNumbers.contains(lineNumber);
-#else
- bool executable = true;
-#endif
if ((e->pos().x() <= markWidth) && executable)
m_extraAreaToggleBlockNumber = cursor.blockNumber();
else
@@ -402,10 +394,8 @@ void QScriptEdit::extraAreaMouseEvent(QMouseEvent *e)
}
} else if (e->button() == Qt::RightButton) {
int lineNumber = cursor.blockNumber() + m_baseLineNumber;
-#if QT_VERSION >= 0x040500
if (!m_executableLineNumbers.contains(lineNumber))
return;
-#endif
bool has = m_breakpoints.contains(lineNumber);
QMenu *popup = new QMenu();
QAction *toggleAct = new QAction(QObject::tr("Toggle Breakpoint"), popup);
diff --git a/src/scripttools/debugging/qscriptenginedebugger.h b/src/scripttools/debugging/qscriptenginedebugger.h
index d5e127f..a4853f0 100644
--- a/src/scripttools/debugging/qscriptenginedebugger.h
+++ b/src/scripttools/debugging/qscriptenginedebugger.h
@@ -48,11 +48,7 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-#if QT_VERSION >= 0x040500
QT_MODULE(ScriptTools)
-#else
-# define Q_SCRIPTTOOLS_EXPORT
-#endif
class QAction;
class QScriptEngine;
diff --git a/src/sql/drivers/db2/qsql_db2.cpp b/src/sql/drivers/db2/qsql_db2.cpp
index 69383f7..11d0041 100644
--- a/src/sql/drivers/db2/qsql_db2.cpp
+++ b/src/sql/drivers/db2/qsql_db2.cpp
@@ -49,6 +49,7 @@
#include <qstringlist.h>
#include <qvarlengtharray.h>
#include <qvector.h>
+#include <QDebug>
#ifndef UNICODE
#define UNICODE
@@ -87,8 +88,19 @@ public:
{}
~QDB2ResultPrivate()
{
- for (int i = 0; i < valueCache.count(); ++i)
+ emptyValueCache();
+ }
+ void clearValueCache()
+ {
+ for (int i = 0; i < valueCache.count(); ++i) {
delete valueCache[i];
+ valueCache[i] = NULL;
+ }
+ }
+ void emptyValueCache()
+ {
+ clearValueCache();
+ valueCache.clear();
}
const QDB2DriverPrivate* dp;
@@ -544,7 +556,7 @@ bool QDB2Result::reset (const QString& query)
SQLRETURN r;
d->recInf.clear();
- d->valueCache.clear();
+ d->emptyValueCache();
if (!qMakeStatement(d, isForwardOnly()))
return false;
@@ -568,6 +580,7 @@ bool QDB2Result::reset (const QString& query)
setSelect(false);
}
d->valueCache.resize(count);
+ d->valueCache.fill(NULL);
setActive(true);
return true;
}
@@ -579,7 +592,7 @@ bool QDB2Result::prepare(const QString& query)
SQLRETURN r;
d->recInf.clear();
- d->valueCache.clear();
+ d->emptyValueCache();
if (!qMakeStatement(d, isForwardOnly()))
return false;
@@ -607,7 +620,7 @@ bool QDB2Result::exec()
SQLRETURN r;
d->recInf.clear();
- d->valueCache.clear();
+ d->emptyValueCache();
if (!qMakeStatement(d, isForwardOnly(), false))
return false;
@@ -811,6 +824,7 @@ bool QDB2Result::exec()
}
setActive(true);
d->valueCache.resize(count);
+ d->valueCache.fill(NULL);
//get out parameters
if (!hasOutValues())
@@ -858,7 +872,7 @@ bool QDB2Result::fetch(int i)
return false;
if (i == at())
return true;
- d->valueCache.fill(0);
+ d->clearValueCache();
int actualIdx = i + 1;
if (actualIdx <= 0) {
setAt(QSql::BeforeFirstRow);
@@ -887,7 +901,7 @@ bool QDB2Result::fetch(int i)
bool QDB2Result::fetchNext()
{
SQLRETURN r;
- d->valueCache.fill(0);
+ d->clearValueCache();
r = SQLFetchScroll(d->hStmt,
SQL_FETCH_NEXT,
0);
@@ -907,7 +921,7 @@ bool QDB2Result::fetchFirst()
return false;
if (isForwardOnly())
return fetchNext();
- d->valueCache.fill(0);
+ d->clearValueCache();
SQLRETURN r;
r = SQLFetchScroll(d->hStmt,
SQL_FETCH_FIRST,
@@ -923,7 +937,7 @@ bool QDB2Result::fetchFirst()
bool QDB2Result::fetchLast()
{
- d->valueCache.fill(0);
+ d->clearValueCache();
int i = at();
if (i == QSql::AfterLastRow) {
@@ -1044,7 +1058,7 @@ QVariant QDB2Result::data(int field)
case QSql::HighPrecision:
default:
// length + 1 for the comma
- v = new QVariant(qGetStringData(d->hStmt, field, info.length() + 1, isNull));
+ v = new QVariant(value);
ok = true;
break;
}
@@ -1101,7 +1115,7 @@ bool QDB2Result::nextResult()
setActive(false);
setAt(QSql::BeforeFirstRow);
d->recInf.clear();
- d->valueCache.clear();
+ d->emptyValueCache();
setSelect(false);
SQLRETURN r = SQLMoreResults(d->hStmt);
@@ -1120,6 +1134,7 @@ bool QDB2Result::nextResult()
d->recInf.append(qMakeFieldInfo(d, i));
d->valueCache.resize(fieldCount);
+ d->valueCache.fill(NULL);
setActive(true);
return true;
@@ -1167,7 +1182,7 @@ QDB2Driver::~QDB2Driver()
delete d;
}
-bool QDB2Driver::open(const QString& db, const QString& user, const QString& password, const QString&, int,
+bool QDB2Driver::open(const QString& db, const QString& user, const QString& password, const QString& host, int port,
const QString& connOpts)
{
if (isOpen())
@@ -1190,6 +1205,8 @@ bool QDB2Driver::open(const QString& db, const QString& user, const QString& pas
setOpenError(true);
return false;
}
+
+ QString protocol;
// Set connection attributes
const QStringList opts(connOpts.split(QLatin1Char(';'), QString::SkipEmptyParts));
for (int i = 0; i < opts.count(); ++i) {
@@ -1220,7 +1237,10 @@ bool QDB2Driver::open(const QString& db, const QString& user, const QString& pas
} else if (opt == QLatin1String("SQL_ATTR_LOGIN_TIMEOUT")) {
v = val.toUInt();
r = SQLSetConnectAttr(d->hDbc, SQL_ATTR_LOGIN_TIMEOUT, (SQLPOINTER) v, 0);
- } else {
+ } else if (opt.compare(QLatin1String("PROTOCOL"), Qt::CaseInsensitive) == 0) {
+ protocol = tmp;
+ }
+ else {
qWarning("QDB2Driver::open: Unknown connection attribute '%s'",
tmp.toLocal8Bit().constData());
}
@@ -1229,9 +1249,18 @@ bool QDB2Driver::open(const QString& db, const QString& user, const QString& pas
"Unable to set connection attribute '%1'").arg(opt), d);
}
+ if (protocol.isEmpty())
+ protocol = QLatin1String("PROTOCOL=TCPIP");
+
+ if (port < 0 )
+ port = 50000;
+
QString connQStr;
- connQStr = QLatin1String("DSN=") + db + QLatin1String(";UID=") + user + QLatin1String(";PWD=")
- + password;
+ connQStr = protocol + QLatin1String(";DATABASE=") + db + QLatin1String(";HOSTNAME=") + host
+ + QLatin1String(";PORT=") + QString::number(port) + QLatin1String(";UID=") + user
+ + QLatin1String(";PWD=") + password;
+
+
SQLTCHAR connOut[SQL_MAX_OPTION_STRING_LENGTH];
SQLSMALLINT cb;
@@ -1250,7 +1279,7 @@ bool QDB2Driver::open(const QString& db, const QString& user, const QString& pas
return false;
}
- d->user = user.toUpper();
+ d->user = user;
setOpen(true);
setOpenError(false);
return true;
@@ -1295,10 +1324,25 @@ QSqlRecord QDB2Driver::record(const QString& tableName) const
SQLHANDLE hStmt;
QString catalog, schema, table;
- qSplitTableQualifier(tableName.toUpper(), &catalog, &schema, &table);
+ qSplitTableQualifier(tableName, &catalog, &schema, &table);
if (schema.isEmpty())
schema = d->user;
+ if (isIdentifierEscaped(catalog, QSqlDriver::TableName))
+ catalog = stripDelimiters(catalog, QSqlDriver::TableName);
+ else
+ catalog = catalog.toUpper();
+
+ if (isIdentifierEscaped(schema, QSqlDriver::TableName))
+ schema = stripDelimiters(schema, QSqlDriver::TableName);
+ else
+ schema = schema.toUpper();
+
+ if (isIdentifierEscaped(table, QSqlDriver::TableName))
+ table = stripDelimiters(table, QSqlDriver::TableName);
+ else
+ table = table.toUpper();
+
SQLRETURN r = SQLAllocHandle(SQL_HANDLE_STMT,
d->hDbc,
&hStmt);
@@ -1312,6 +1356,9 @@ QSqlRecord QDB2Driver::record(const QString& tableName) const
(SQLPOINTER) SQL_CURSOR_FORWARD_ONLY,
SQL_IS_UINTEGER);
+
+ //Aside: szSchemaName and szTableName parameters of SQLColumns
+ //are case sensitive search patterns, so no escaping is used.
r = SQLColumns(hStmt,
NULL,
0,
@@ -1392,7 +1439,13 @@ QStringList QDB2Driver::tables(QSql::TableType type) const
bool isNull;
QString fieldVal = qGetStringData(hStmt, 2, -1, isNull);
QString userVal = qGetStringData(hStmt, 1, -1, isNull);
- if (userVal != d->user)
+ QString user = d->user;
+ if ( isIdentifierEscaped(user, QSqlDriver::TableName))
+ user = stripDelimiters(user, QSqlDriver::TableName);
+ else
+ user = user.toUpper();
+
+ if (userVal != user)
fieldVal = userVal + QLatin1Char('.') + fieldVal;
tl.append(fieldVal);
r = SQLFetchScroll(hStmt,
@@ -1423,7 +1476,23 @@ QSqlIndex QDB2Driver::primaryIndex(const QString& tablename) const
return index;
}
QString catalog, schema, table;
- qSplitTableQualifier(tablename.toUpper(), &catalog, &schema, &table);
+ qSplitTableQualifier(tablename, &catalog, &schema, &table);
+
+ if (isIdentifierEscaped(catalog, QSqlDriver::TableName))
+ catalog = stripDelimiters(catalog, QSqlDriver::TableName);
+ else
+ catalog = catalog.toUpper();
+
+ if (isIdentifierEscaped(schema, QSqlDriver::TableName))
+ schema = stripDelimiters(schema, QSqlDriver::TableName);
+ else
+ schema = schema.toUpper();
+
+ if (isIdentifierEscaped(table, QSqlDriver::TableName))
+ table = stripDelimiters(table, QSqlDriver::TableName);
+ else
+ table = table.toUpper();
+
r = SQLSetStmtAttr(hStmt,
SQL_ATTR_CURSOR_TYPE,
(SQLPOINTER)SQL_CURSOR_FORWARD_ONLY,
diff --git a/src/sql/drivers/ibase/qsql_ibase.cpp b/src/sql/drivers/ibase/qsql_ibase.cpp
index 64f13b5..4f3d79d 100644
--- a/src/sql/drivers/ibase/qsql_ibase.cpp
+++ b/src/sql/drivers/ibase/qsql_ibase.cpp
@@ -66,8 +66,11 @@ QT_BEGIN_NAMESPACE
enum { QIBaseChunkSize = SHRT_MAX / 2 };
-static bool getIBaseError(QString& msg, ISC_STATUS* status, ISC_LONG &sqlcode,
- QTextCodec *tc)
+#if defined(FB_API_VER) && FB_API_VER >= 20
+static bool getIBaseError(QString& msg, const ISC_STATUS* status, ISC_LONG &sqlcode, QTextCodec *tc)
+#else
+static bool getIBaseError(QString& msg, ISC_STATUS* status, ISC_LONG &sqlcode, QTextCodec *tc)
+#endif
{
if (status[0] != 1 || status[1] <= 0)
return false;
@@ -75,7 +78,11 @@ static bool getIBaseError(QString& msg, ISC_STATUS* status, ISC_LONG &sqlcode,
msg.clear();
sqlcode = isc_sqlcode(status);
char buf[512];
+#if defined(FB_API_VER) && FB_API_VER >= 20
+ while(fb_interpret(buf, 512, &status)) {
+#else
while(isc_interprete(buf, &status)) {
+#endif
if(!msg.isEmpty())
msg += QLatin1String(" - ");
if (tc)
@@ -871,7 +878,7 @@ QIBaseResult::~QIBaseResult()
bool QIBaseResult::prepare(const QString& query)
{
- //qDebug("prepare: %s\n", qPrintable(query));
+// qDebug("prepare: %s", qPrintable(query));
if (!driver() || !driver()->isOpen() || driver()->isOpenError())
return false;
d->cleanup();
@@ -1025,7 +1032,7 @@ bool QIBaseResult::exec()
}
if (ok) {
- if (colCount()) {
+ if (colCount() && d->queryType != isc_info_sql_stmt_exec_procedure) {
isc_dsql_free_statement(d->status, &d->stmt, DSQL_close);
if (d->isError(QT_TRANSLATE_NOOP("QIBaseResult", "Unable to close statement")))
return false;
@@ -1039,7 +1046,7 @@ bool QIBaseResult::exec()
return false;
// Not all stored procedures necessarily return values.
- if (d->queryType == isc_info_sql_stmt_exec_procedure && d->sqlda->sqld == 0)
+ if (d->queryType == isc_info_sql_stmt_exec_procedure && d->sqlda && d->sqlda->sqld == 0)
delDA(d->sqlda);
if (d->sqlda)
@@ -1270,27 +1277,27 @@ QSqlRecord QIBaseResult::record() const
v = d->sqlda->sqlvar[i];
QSqlField f(QString::fromLatin1(v.aliasname, v.aliasname_length).simplified(),
qIBaseTypeName2(v.sqltype, v.sqlscale < 0));
- QSqlQuery q(new QIBaseResult(d->db));
- q.setForwardOnly(true);
- q.exec(QLatin1String("select b.RDB$FIELD_PRECISION, b.RDB$FIELD_SCALE, b.RDB$FIELD_LENGTH, a.RDB$NULL_FLAG "
- "FROM RDB$RELATION_FIELDS a, RDB$FIELDS b "
- "WHERE b.RDB$FIELD_NAME = a.RDB$FIELD_SOURCE "
- "AND a.RDB$RELATION_NAME = '") + QString::fromAscii(v.relname, v.relname_length).toUpper() + QLatin1String("' "
- "AND a.RDB$FIELD_NAME = '") + QString::fromAscii(v.sqlname, v.sqlname_length).toUpper() + QLatin1String("' "));
- if(q.first()) {
- if(v.sqlscale < 0) {
- f.setLength(q.value(0).toInt());
- f.setPrecision(qAbs(q.value(1).toInt()));
- } else {
- f.setLength(q.value(2).toInt());
- f.setPrecision(0);
+ f.setLength(v.sqllen);
+ f.setPrecision(qAbs(v.sqlscale));
+ f.setRequiredStatus((v.sqltype & 1) == 0 ? QSqlField::Required : QSqlField::Optional);
+ if(v.sqlscale < 0) {
+ QSqlQuery q(new QIBaseResult(d->db));
+ q.setForwardOnly(true);
+ q.exec(QLatin1String("select b.RDB$FIELD_PRECISION, b.RDB$FIELD_SCALE, b.RDB$FIELD_LENGTH, a.RDB$NULL_FLAG "
+ "FROM RDB$RELATION_FIELDS a, RDB$FIELDS b "
+ "WHERE b.RDB$FIELD_NAME = a.RDB$FIELD_SOURCE "
+ "AND a.RDB$RELATION_NAME = '") + QString::fromAscii(v.relname, v.relname_length).toUpper() + QLatin1String("' "
+ "AND a.RDB$FIELD_NAME = '") + QString::fromAscii(v.sqlname, v.sqlname_length).toUpper() + QLatin1String("' "));
+ if(q.first()) {
+ if(v.sqlscale < 0) {
+ f.setLength(q.value(0).toInt());
+ f.setPrecision(qAbs(q.value(1).toInt()));
+ } else {
+ f.setLength(q.value(2).toInt());
+ f.setPrecision(0);
+ }
+ f.setRequiredStatus(q.value(3).toBool() ? QSqlField::Required : QSqlField::Optional);
}
- f.setRequiredStatus(q.value(3).toBool() ? QSqlField::Required : QSqlField::Optional);
- }
- else {
- f.setLength(0);
- f.setPrecision(0);
- f.setRequiredStatus(QSqlField::Unknown);
}
f.setSqlType(v.sqltype);
rec.append(f);
@@ -1552,12 +1559,16 @@ QSqlRecord QIBaseDriver::record(const QString& tablename) const
QSqlQuery q(createResult());
q.setForwardOnly(true);
-
+ QString table = tablename;
+ if (isIdentifierEscaped(table, QSqlDriver::TableName))
+ table = stripDelimiters(table, QSqlDriver::TableName);
+ else
+ table = table.toUpper();
q.exec(QLatin1String("SELECT a.RDB$FIELD_NAME, b.RDB$FIELD_TYPE, b.RDB$FIELD_LENGTH, "
"b.RDB$FIELD_SCALE, b.RDB$FIELD_PRECISION, a.RDB$NULL_FLAG "
"FROM RDB$RELATION_FIELDS a, RDB$FIELDS b "
"WHERE b.RDB$FIELD_NAME = a.RDB$FIELD_SOURCE "
- "AND a.RDB$RELATION_NAME = '") + tablename.toUpper() + QLatin1String("' "
+ "AND a.RDB$RELATION_NAME = '") + table + QLatin1String("' "
"ORDER BY a.RDB$FIELD_POSITION"));
while (q.next()) {
@@ -1585,12 +1596,18 @@ QSqlIndex QIBaseDriver::primaryIndex(const QString &table) const
if (!isOpen())
return index;
+ QString tablename = table;
+ if (isIdentifierEscaped(tablename, QSqlDriver::TableName))
+ tablename = stripDelimiters(tablename, QSqlDriver::TableName);
+ else
+ tablename = tablename.toUpper();
+
QSqlQuery q(createResult());
q.setForwardOnly(true);
q.exec(QLatin1String("SELECT a.RDB$INDEX_NAME, b.RDB$FIELD_NAME, d.RDB$FIELD_TYPE, d.RDB$FIELD_SCALE "
"FROM RDB$RELATION_CONSTRAINTS a, RDB$INDEX_SEGMENTS b, RDB$RELATION_FIELDS c, RDB$FIELDS d "
"WHERE a.RDB$CONSTRAINT_TYPE = 'PRIMARY KEY' "
- "AND a.RDB$RELATION_NAME = '") + table.toUpper() +
+ "AND a.RDB$RELATION_NAME = '") + tablename +
QLatin1String(" 'AND a.RDB$INDEX_NAME = b.RDB$INDEX_NAME "
"AND c.RDB$RELATION_NAME = a.RDB$RELATION_NAME "
"AND c.RDB$FIELD_NAME = b.RDB$FIELD_NAME "
diff --git a/src/sql/drivers/mysql/qsql_mysql.cpp b/src/sql/drivers/mysql/qsql_mysql.cpp
index 9b57f3c..fbefa0c 100644
--- a/src/sql/drivers/mysql/qsql_mysql.cpp
+++ b/src/sql/drivers/mysql/qsql_mysql.cpp
@@ -163,18 +163,21 @@ static inline QVariant qDateTimeFromString(QString &val)
#endif
}
-class QMYSQLResultPrivate
+class QMYSQLResultPrivate : public QObject
{
+ Q_OBJECT
public:
- QMYSQLResultPrivate(QMYSQLDriverPrivate* dp) : d(dp), result(0),
+ QMYSQLResultPrivate(const QMYSQLDriver* dp) : driver(dp), result(0),
rowsAffected(0), hasBlobs(false)
#if MYSQL_VERSION_ID >= 40108
, stmt(0), meta(0), inBinds(0), outBinds(0)
#endif
, precisionPolicy(QSql::HighPrecision)
- {}
+ {
+ connect(dp, SIGNAL(destroyed()), this, SLOT(driverDestroyed()));
+ }
- QMYSQLDriverPrivate* d;
+ const QMYSQLDriver* driver;
MYSQL_RES *result;
MYSQL_ROW row;
@@ -207,6 +210,8 @@ public:
MYSQL_BIND *outBinds;
#endif
QSql::NumericalPrecisionPolicy precisionPolicy;
+private Q_SLOTS:
+ void driverDestroyed() { driver = NULL; }
};
#ifndef QT_NO_TEXTCODEC
@@ -224,7 +229,7 @@ static QTextCodec* codec(MYSQL* mysql)
static QSqlError qMakeError(const QString& err, QSqlError::ErrorType type,
const QMYSQLDriverPrivate* p)
{
- const char *cerr = mysql_error(p->mysql);
+ const char *cerr = p->mysql ? mysql_error(p->mysql) : 0;
return QSqlError(QLatin1String("QMYSQL: ") + err,
p->tc ? toUnicode(p->tc, cerr) : QString::fromLatin1(cerr),
type, mysql_errno(p->mysql));
@@ -379,7 +384,7 @@ bool QMYSQLResultPrivate::bindInValues()
QMYSQLResult::QMYSQLResult(const QMYSQLDriver* db)
: QSqlResult(db)
{
- d = new QMYSQLResultPrivate(db->d);
+ d = new QMYSQLResultPrivate(db);
}
QMYSQLResult::~QMYSQLResult()
@@ -391,7 +396,7 @@ QMYSQLResult::~QMYSQLResult()
QVariant QMYSQLResult::handle() const
{
#if MYSQL_VERSION_ID >= 40108
- if(d->d->preparedQuerys)
+ if(d->driver && d->driver->d->preparedQuerys)
return d->meta ? qVariantFromValue(d->meta) : qVariantFromValue(d->stmt);
else
#endif
@@ -406,8 +411,8 @@ void QMYSQLResult::cleanup()
// must iterate trough leftover result sets from multi-selects or stored procedures
// if this isn't done subsequent queries will fail with "Commands out of sync"
#if MYSQL_VERSION_ID >= 40100
- while (d->d->mysql && mysql_next_result(d->d->mysql) == 0) {
- MYSQL_RES *res = mysql_store_result(d->d->mysql);
+ while (d->driver && d->driver->d->mysql && mysql_next_result(d->driver->d->mysql) == 0) {
+ MYSQL_RES *res = mysql_store_result(d->driver->d->mysql);
if (res)
mysql_free_result(res);
}
@@ -447,11 +452,14 @@ void QMYSQLResult::cleanup()
setAt(-1);
setActive(false);
- d->d->preparedQuerys = d->d->preparedQuerysEnabled;
+ if(d->driver)
+ d->driver->d->preparedQuerys = d->driver->d->preparedQuerysEnabled;
}
bool QMYSQLResult::fetch(int i)
{
+ if(!d->driver)
+ return false;
if (isForwardOnly()) { // fake a forward seek
if (at() < i) {
int x = i - at();
@@ -463,7 +471,7 @@ bool QMYSQLResult::fetch(int i)
}
if (at() == i)
return true;
- if (d->d->preparedQuerys) {
+ if (d->driver->d->preparedQuerys) {
#if MYSQL_VERSION_ID >= 40108
mysql_stmt_data_seek(d->stmt, i);
@@ -494,7 +502,9 @@ bool QMYSQLResult::fetch(int i)
bool QMYSQLResult::fetchNext()
{
- if (d->d->preparedQuerys) {
+ if(!d->driver)
+ return false;
+ if (d->driver->d->preparedQuerys) {
#if MYSQL_VERSION_ID >= 40108
if (mysql_stmt_fetch(d->stmt))
return false;
@@ -512,6 +522,8 @@ bool QMYSQLResult::fetchNext()
bool QMYSQLResult::fetchLast()
{
+ if(!d->driver)
+ return false;
if (isForwardOnly()) { // fake this since MySQL can't seek on forward only queries
bool success = fetchNext(); // did we move at all?
while (fetchNext()) {};
@@ -519,7 +531,7 @@ bool QMYSQLResult::fetchLast()
}
my_ulonglong numRows;
- if (d->d->preparedQuerys) {
+ if (d->driver->d->preparedQuerys) {
#if MYSQL_VERSION_ID >= 40108
numRows = mysql_stmt_num_rows(d->stmt);
#else
@@ -553,15 +565,18 @@ QVariant QMYSQLResult::data(int field)
return QVariant();
}
+ if (!d->driver)
+ return QVariant();
+
int fieldLength = 0;
const QMYSQLResultPrivate::QMyField &f = d->fields.at(field);
QString val;
- if (d->d->preparedQuerys) {
+ if (d->driver->d->preparedQuerys) {
if (f.nullIndicator)
return QVariant(f.type);
if (f.type != QVariant::ByteArray)
- val = toUnicode(d->d->tc, f.outField, f.bufLength);
+ val = toUnicode(d->driver->d->tc, f.outField, f.bufLength);
} else {
if (d->row[field] == NULL) {
// NULL value
@@ -569,7 +584,7 @@ QVariant QMYSQLResult::data(int field)
}
fieldLength = mysql_fetch_lengths(d->result)[field];
if (f.type != QVariant::ByteArray)
- val = toUnicode(d->d->tc, d->row[field], fieldLength);
+ val = toUnicode(d->driver->d->tc, d->row[field], fieldLength);
}
switch(f.type) {
@@ -614,7 +629,7 @@ QVariant QMYSQLResult::data(int field)
case QVariant::ByteArray: {
QByteArray ba;
- if (d->d->preparedQuerys) {
+ if (d->driver->d->preparedQuerys) {
ba = QByteArray(f.outField, f.bufLength);
} else {
ba = QByteArray(d->row[field], fieldLength);
@@ -631,7 +646,7 @@ QVariant QMYSQLResult::data(int field)
bool QMYSQLResult::isNull(int field)
{
- if (d->d->preparedQuerys)
+ if (d->driver->d->preparedQuerys)
return d->fields.at(field).nullIndicator;
else
return d->row[field] == NULL;
@@ -639,31 +654,31 @@ bool QMYSQLResult::isNull(int field)
bool QMYSQLResult::reset (const QString& query)
{
- if (!driver() || !driver()->isOpen() || driver()->isOpenError())
+ if (!driver() || !driver()->isOpen() || driver()->isOpenError() || !d->driver)
return false;
- if(d->d->preparedQuerysEnabled && prepare(query)) {
- d->d->preparedQuerys = true;
+ if(d->driver->d->preparedQuerysEnabled && prepare(query)) {
+ d->driver->d->preparedQuerys = true;
return exec();
}
- d->d->preparedQuerys = false;
+ d->driver->d->preparedQuerys = false;
- const QByteArray encQuery(fromUnicode(d->d->tc, query));
- if (mysql_real_query(d->d->mysql, encQuery.data(), encQuery.length())) {
+ const QByteArray encQuery(fromUnicode(d->driver->d->tc, query));
+ if (mysql_real_query(d->driver->d->mysql, encQuery.data(), encQuery.length())) {
setLastError(qMakeError(QCoreApplication::translate("QMYSQLResult", "Unable to execute query"),
- QSqlError::StatementError, d->d));
+ QSqlError::StatementError, d->driver->d));
return false;
}
- d->result = mysql_store_result(d->d->mysql);
- if (!d->result && mysql_field_count(d->d->mysql) > 0) {
+ d->result = mysql_store_result(d->driver->d->mysql);
+ if (!d->result && mysql_field_count(d->driver->d->mysql) > 0) {
setLastError(qMakeError(QCoreApplication::translate("QMYSQLResult", "Unable to store result"),
- QSqlError::StatementError, d->d));
+ QSqlError::StatementError, d->driver->d));
return false;
}
- int numFields = mysql_field_count(d->d->mysql);
+ int numFields = mysql_field_count(d->driver->d->mysql);
setSelect(numFields != 0);
d->fields.resize(numFields);
- d->rowsAffected = mysql_affected_rows(d->d->mysql);
+ d->rowsAffected = mysql_affected_rows(d->driver->d->mysql);
if (isSelect()) {
for(int i = 0; i < numFields; i++) {
MYSQL_FIELD* field = mysql_fetch_field_direct(d->result, i);
@@ -677,8 +692,8 @@ bool QMYSQLResult::reset (const QString& query)
int QMYSQLResult::size()
{
- if (isSelect())
- if (d->d->preparedQuerys)
+ if (d->driver && isSelect())
+ if (d->driver->d->preparedQuerys)
#if MYSQL_VERSION_ID >= 40108
return mysql_stmt_num_rows(d->stmt);
#else
@@ -697,17 +712,17 @@ int QMYSQLResult::numRowsAffected()
QVariant QMYSQLResult::lastInsertId() const
{
- if (!isActive())
+ if (!isActive() || !d->driver)
return QVariant();
- if (d->d->preparedQuerys) {
+ if (d->driver->d->preparedQuerys) {
#if MYSQL_VERSION_ID >= 40108
quint64 id = mysql_stmt_insert_id(d->stmt);
if (id)
return QVariant(id);
#endif
} else {
- quint64 id = mysql_insert_id(d->d->mysql);
+ quint64 id = mysql_insert_id(d->driver->d->mysql);
if (id)
return QVariant(id);
}
@@ -718,20 +733,20 @@ QSqlRecord QMYSQLResult::record() const
{
QSqlRecord info;
MYSQL_RES *res;
- if (!isActive() || !isSelect())
+ if (!isActive() || !isSelect() || !d->driver)
return info;
#if MYSQL_VERSION_ID >= 40108
- res = d->d->preparedQuerys ? d->meta : d->result;
+ res = d->driver->d->preparedQuerys ? d->meta : d->result;
#else
res = d->result;
#endif
- if (!mysql_errno(d->d->mysql)) {
+ if (!mysql_errno(d->driver->d->mysql)) {
mysql_field_seek(res, 0);
MYSQL_FIELD* field = mysql_fetch_field(res);
while(field) {
- info.append(qToField(field, d->d->tc));
+ info.append(qToField(field, d->driver->d->tc));
field = mysql_fetch_field(res);
}
}
@@ -741,6 +756,8 @@ QSqlRecord QMYSQLResult::record() const
bool QMYSQLResult::nextResult()
{
+ if(!d->driver)
+ return false;
#if MYSQL_VERSION_ID >= 40100
setAt(-1);
setActive(false);
@@ -754,26 +771,26 @@ bool QMYSQLResult::nextResult()
delete[] d->fields[i].outField;
d->fields.clear();
- int status = mysql_next_result(d->d->mysql);
+ int status = mysql_next_result(d->driver->d->mysql);
if (status > 0) {
setLastError(qMakeError(QCoreApplication::translate("QMYSQLResult", "Unable to execute next query"),
- QSqlError::StatementError, d->d));
+ QSqlError::StatementError, d->driver->d));
return false;
} else if (status == -1) {
return false; // No more result sets
}
- d->result = mysql_store_result(d->d->mysql);
- int numFields = mysql_field_count(d->d->mysql);
+ d->result = mysql_store_result(d->driver->d->mysql);
+ int numFields = mysql_field_count(d->driver->d->mysql);
if (!d->result && numFields > 0) {
setLastError(qMakeError(QCoreApplication::translate("QMYSQLResult", "Unable to store next result"),
- QSqlError::StatementError, d->d));
+ QSqlError::StatementError, d->driver->d));
return false;
}
setSelect(numFields > 0);
d->fields.resize(numFields);
- d->rowsAffected = mysql_affected_rows(d->d->mysql);
+ d->rowsAffected = mysql_affected_rows(d->driver->d->mysql);
if (isSelect()) {
for (int i = 0; i < numFields; i++) {
@@ -833,9 +850,11 @@ static MYSQL_TIME *toMySqlDate(QDate date, QTime time, QVariant::Type type)
bool QMYSQLResult::prepare(const QString& query)
{
+ if(!d->driver)
+ return false;
#if MYSQL_VERSION_ID >= 40108
cleanup();
- if (!d->d->preparedQuerys)
+ if (!d->driver->d->preparedQuerys)
return QSqlResult::prepare(query);
int r;
@@ -844,14 +863,14 @@ bool QMYSQLResult::prepare(const QString& query)
return false;
if (!d->stmt)
- d->stmt = mysql_stmt_init(d->d->mysql);
+ d->stmt = mysql_stmt_init(d->driver->d->mysql);
if (!d->stmt) {
setLastError(qMakeError(QCoreApplication::translate("QMYSQLResult", "Unable to prepare statement"),
- QSqlError::StatementError, d->d));
+ QSqlError::StatementError, d->driver->d));
return false;
}
- const QByteArray encQuery(fromUnicode(d->d->tc, query));
+ const QByteArray encQuery(fromUnicode(d->driver->d->tc, query));
r = mysql_stmt_prepare(d->stmt, encQuery.constData(), encQuery.length());
if (r != 0) {
setLastError(qMakeStmtError(QCoreApplication::translate("QMYSQLResult",
@@ -873,7 +892,9 @@ bool QMYSQLResult::prepare(const QString& query)
bool QMYSQLResult::exec()
{
- if (!d->d->preparedQuerys)
+ if (!d->driver)
+ return false;
+ if (!d->driver->d->preparedQuerys)
return QSqlResult::exec();
if (!d->stmt)
return false;
@@ -963,7 +984,7 @@ bool QMYSQLResult::exec()
break;
case QVariant::String:
default: {
- QByteArray ba = fromUnicode(d->d->tc, val.toString());
+ QByteArray ba = fromUnicode(d->driver->d->tc, val.toString());
stringVector.append(ba);
currBind->buffer_type = MYSQL_TYPE_STRING;
currBind->buffer = const_cast<char *>(ba.constData());
@@ -1314,7 +1335,7 @@ QSqlIndex QMYSQLDriver::primaryIndex(const QString& tablename) const
QSqlQuery i(createResult());
QString stmt(QLatin1String("show index from %1;"));
QSqlRecord fil = record(tablename);
- i.exec(stmt.arg(escapeIdentifier(tablename, QSqlDriver::TableName)));
+ i.exec(stmt.arg(tablename));
while (i.isActive() && i.next()) {
if (i.value(2).toString() == QLatin1String("PRIMARY")) {
idx.append(fil.field(i.value(4).toString()));
@@ -1329,10 +1350,14 @@ QSqlIndex QMYSQLDriver::primaryIndex(const QString& tablename) const
QSqlRecord QMYSQLDriver::record(const QString& tablename) const
{
+ QString table=tablename;
+ if(isIdentifierEscaped(table, QSqlDriver::TableName))
+ table = stripDelimiters(table, QSqlDriver::TableName);
+
QSqlRecord info;
if (!isOpen())
return info;
- MYSQL_RES* r = mysql_list_fields(d->mysql, tablename.toLocal8Bit().constData(), 0);
+ MYSQL_RES* r = mysql_list_fields(d->mysql, table.toLocal8Bit().constData(), 0);
if (!r) {
return info;
}
@@ -1443,4 +1468,17 @@ QString QMYSQLDriver::escapeIdentifier(const QString &identifier, IdentifierType
return res;
}
+bool QMYSQLDriver::isIdentifierEscapedImplementation(const QString &identifier, IdentifierType type) const
+{
+ Q_UNUSED(type);
+ bool isLeftDelimited = (identifier.left(1) == QString(QLatin1Char('`')));
+ bool isRightDelimited = (identifier.right(1) == QString(QLatin1Char('`')));
+ if( identifier.size() > 2 && isLeftDelimited && isRightDelimited )
+ return true;
+ else
+ return false;
+}
+
QT_END_NAMESPACE
+
+#include "qsql_mysql.moc" \ No newline at end of file
diff --git a/src/sql/drivers/mysql/qsql_mysql.h b/src/sql/drivers/mysql/qsql_mysql.h
index 97aa346..31d9dcf 100644
--- a/src/sql/drivers/mysql/qsql_mysql.h
+++ b/src/sql/drivers/mysql/qsql_mysql.h
@@ -123,6 +123,9 @@ public:
QVariant handle() const;
QString escapeIdentifier(const QString &identifier, IdentifierType type) const;
+protected Q_SLOTS:
+ bool isIdentifierEscapedImplementation(const QString &identifier, IdentifierType type) const;
+
protected:
bool beginTransaction();
bool commitTransaction();
diff --git a/src/sql/drivers/oci/qsql_oci.cpp b/src/sql/drivers/oci/qsql_oci.cpp
index 7017d6c..d63c482 100644
--- a/src/sql/drivers/oci/qsql_oci.cpp
+++ b/src/sql/drivers/oci/qsql_oci.cpp
@@ -2098,7 +2098,7 @@ bool QOCIDriver::open(const QString & db,
setOpen(true);
setOpenError(false);
- d->user = user.toUpper();
+ d->user = user;
return true;
}
@@ -2200,8 +2200,15 @@ QStringList QOCIDriver::tables(QSql::TableType type) const
"and owner != 'WKSYS'"
"and owner != 'CTXSYS'"
"and owner != 'WMSYS'"));
+
+ QString user = d->user;
+ if ( isIdentifierEscaped(user, QSqlDriver::TableName))
+ user = stripDelimiters(user, QSqlDriver::TableName);
+ else
+ user = user.toUpper();
+
while (t.next()) {
- if (t.value(0).toString() != d->user)
+ if (t.value(0).toString().toUpper() != user.toUpper())
tl.append(t.value(0).toString() + QLatin1String(".") + t.value(1).toString());
else
tl.append(t.value(1).toString());
@@ -2217,7 +2224,7 @@ QStringList QOCIDriver::tables(QSql::TableType type) const
"and owner != 'CTXSYS'"
"and owner != 'WMSYS'"));
while (t.next()) {
- if (t.value(0).toString() != d->user)
+ if (t.value(0).toString().toUpper() != d->user.toUpper())
tl.append(t.value(0).toString() + QLatin1String(".") + t.value(1).toString());
else
tl.append(t.value(1).toString());
@@ -2237,10 +2244,10 @@ void qSplitTableAndOwner(const QString & tname, QString * tbl,
{
int i = tname.indexOf(QLatin1Char('.')); // prefixed with owner?
if (i != -1) {
- *tbl = tname.right(tname.length() - i - 1).toUpper();
- *owner = tname.left(i).toUpper();
+ *tbl = tname.right(tname.length() - i - 1);
+ *owner = tname.left(i);
} else {
- *tbl = tname.toUpper();
+ *tbl = tname;
}
}
@@ -2256,7 +2263,7 @@ QSqlRecord QOCIDriver::record(const QString& tablename) const
QString stmt(QLatin1String("select column_name, data_type, data_length, "
"data_precision, data_scale, nullable, data_default%1"
"from all_tab_columns "
- "where upper(table_name)=%2"));
+ "where table_name=%2"));
if (d->serverVersion >= 9)
stmt = stmt.arg(QLatin1String(", char_length "));
else
@@ -2264,11 +2271,23 @@ QSqlRecord QOCIDriver::record(const QString& tablename) const
bool buildRecordInfo = false;
QString table, owner, tmpStmt;
qSplitTableAndOwner(tablename, &table, &owner);
+
+ if (isIdentifierEscaped(table, QSqlDriver::TableName))
+ table = stripDelimiters(table, QSqlDriver::TableName);
+ else
+ table = table.toUpper();
+
tmpStmt = stmt.arg(QLatin1Char('\'') + table + QLatin1Char('\''));
if (owner.isEmpty()) {
owner = d->user;
}
- tmpStmt += QLatin1String(" and upper(owner)='") + owner + QLatin1String("'");
+
+ if (isIdentifierEscaped(owner, QSqlDriver::TableName))
+ owner = stripDelimiters(owner, QSqlDriver::TableName);
+ else
+ owner = owner.toUpper();
+
+ tmpStmt += QLatin1String(" and owner='") + owner + QLatin1String("'");
t.setForwardOnly(true);
t.exec(tmpStmt);
if (!t.next()) { // try and see if the tablename is a synonym
@@ -2317,11 +2336,23 @@ QSqlIndex QOCIDriver::primaryIndex(const QString& tablename) const
bool buildIndex = false;
QString table, owner, tmpStmt;
qSplitTableAndOwner(tablename, &table, &owner);
- tmpStmt = stmt + QLatin1String(" and upper(a.table_name)='") + table + QLatin1String("'");
+
+ if (isIdentifierEscaped(table, QSqlDriver::TableName))
+ table = stripDelimiters(table, QSqlDriver::TableName);
+ else
+ table = table.toUpper();
+
+ tmpStmt = stmt + QLatin1String(" and a.table_name='") + table + QLatin1String("'");
if (owner.isEmpty()) {
owner = d->user;
}
- tmpStmt += QLatin1String(" and upper(a.owner)='") + owner + QLatin1String("'");
+
+ if (isIdentifierEscaped(owner, QSqlDriver::TableName))
+ owner = stripDelimiters(owner, QSqlDriver::TableName);
+ else
+ owner = owner.toUpper();
+
+ tmpStmt += QLatin1String(" and a.owner='") + owner + QLatin1String("'");
t.setForwardOnly(true);
t.exec(tmpStmt);
@@ -2415,13 +2446,14 @@ QVariant QOCIDriver::handle() const
return qVariantFromValue(d->env);
}
-QString QOCIDriver::escapeIdentifier(const QString &identifier, IdentifierType /* type */) const
+QString QOCIDriver::escapeIdentifier(const QString &identifier, IdentifierType type) const
{
QString res = identifier;
- res.replace(QLatin1Char('"'), QLatin1String("\"\""));
- if (identifier.indexOf(QLatin1Char(' ')) != -1)
+ if(!identifier.isEmpty() && !isIdentifierEscaped(identifier, type)) {
+ res.replace(QLatin1Char('"'), QLatin1String("\"\""));
res.prepend(QLatin1Char('"')).append(QLatin1Char('"'));
-// res.replace(QLatin1Char('.'), QLatin1String("\".\""));
+ res.replace(QLatin1Char('.'), QLatin1String("\".\""));
+ }
return res;
}
diff --git a/src/sql/drivers/odbc/qsql_odbc.cpp b/src/sql/drivers/odbc/qsql_odbc.cpp
index f6710db..ee500a0 100644
--- a/src/sql/drivers/odbc/qsql_odbc.cpp
+++ b/src/sql/drivers/odbc/qsql_odbc.cpp
@@ -55,6 +55,7 @@
#include <qvarlengtharray.h>
#include <qvector.h>
#include <QDebug>
+#include <QSqlQuery>
QT_BEGIN_NAMESPACE
@@ -69,18 +70,15 @@ QT_BEGIN_NAMESPACE
#endif
// newer platform SDKs use SQLLEN instead of SQLINTEGER
-#if defined(SQLLEN) || defined(Q_OS_WIN64)
-# define QSQLLEN SQLLEN
-#else
+#if defined(WIN32) && (_MSC_VER < 1300)
# define QSQLLEN SQLINTEGER
-#endif
-
-#if defined(SQLULEN) || defined(Q_OS_WIN64)
-# define QSQLULEN SQLULEN
-#else
# define QSQLULEN SQLUINTEGER
+#else
+# define QSQLLEN SQLLEN
+# define QSQLULEN SQLULEN
#endif
+
static const int COLNAMESIZE = 256;
//Map Qt parameter types to ODBC types
static const SQLSMALLINT qParamType[4] = { SQL_PARAM_INPUT, SQL_PARAM_INPUT, SQL_PARAM_OUTPUT, SQL_PARAM_INPUT_OUTPUT };
@@ -88,6 +86,7 @@ static const SQLSMALLINT qParamType[4] = { SQL_PARAM_INPUT, SQL_PARAM_INPUT, SQL
class QODBCDriverPrivate
{
public:
+ enum DefaultCase{Lower, Mixed, Upper, Sensitive};
QODBCDriverPrivate()
: hEnv(0), hDbc(0), useSchema(false), disconnectCount(0), isMySqlServer(false),
isMSSqlServer(false), hasSQLFetchScroll(true), hasMultiResultSets(false)
@@ -119,6 +118,9 @@ public:
bool setConnectionOptions(const QString& connOpts);
void splitTableQualifier(const QString &qualifier, QString &catalog,
QString &schema, QString &table);
+ DefaultCase defaultCase() const;
+ QString adjustCase(const QString&) const;
+ QChar quoteChar() const;
};
class QODBCPrivate
@@ -350,7 +352,7 @@ static QString qGetStringData(SQLHANDLE hStmt, int column, int colSize, bool uni
} else {
fieldVal += QString::fromAscii(buf, rSize);
}
- if (fieldVal.size() + lengthIndicator >= colSize) {
+ if (lengthIndicator - fieldVal.size() <= 0) {
// workaround for Drivermanagers that don't return SQL_NO_DATA
break;
}
@@ -555,6 +557,28 @@ static int qGetODBCVersion(const QString &connOpts)
return SQL_OV_ODBC2;
}
+QChar QODBCDriverPrivate::quoteChar() const
+{
+ static bool isQuoteInitialized = false;
+ static QChar quote = QChar::fromLatin1('"');
+ if (!isQuoteInitialized) {
+ char driverResponse[4];
+ SQLSMALLINT length;
+ int r = SQLGetInfo(hDbc,
+ SQL_IDENTIFIER_QUOTE_CHAR,
+ &driverResponse,
+ sizeof(driverResponse),
+ &length);
+ if (r == SQL_SUCCESS || r == SQL_SUCCESS_WITH_INFO) {
+ quote = QChar::fromLatin1(driverResponse[0]);
+ } else {
+ quote = QChar::fromLatin1('"');
+ }
+ isQuoteInitialized = true;
+ }
+ return quote;
+}
+
bool QODBCDriverPrivate::setConnectionOptions(const QString& connOpts)
{
// Set any connection attributes
@@ -705,6 +729,65 @@ void QODBCDriverPrivate::splitTableQualifier(const QString & qualifier, QString
}
}
+QODBCDriverPrivate::DefaultCase QODBCDriverPrivate::defaultCase() const
+{
+ static bool isInitialized = false;
+ static DefaultCase ret;
+
+ if (!isInitialized) {
+ SQLUSMALLINT casing;
+ int r = SQLGetInfo(hDbc,
+ SQL_IDENTIFIER_CASE,
+ &casing,
+ sizeof(casing),
+ NULL);
+ if ( r != SQL_SUCCESS)
+ ret = Lower;//arbitrary case if driver cannot be queried
+ else {
+ switch (casing) {
+ case (SQL_IC_UPPER):
+ ret = Upper;
+ break;
+ case (SQL_IC_LOWER):
+ ret = Lower;
+ break;
+ case (SQL_IC_SENSITIVE):
+ ret = Sensitive;
+ break;
+ case (SQL_IC_MIXED):
+ ret = Mixed;
+ break;
+ default:
+ ret = Upper;
+ }
+ }
+ isInitialized = true;
+ }
+ return ret;
+}
+
+/*
+ Adjust the casing of an identifier to match what the
+ database engine would have done to it.
+*/
+QString QODBCDriverPrivate::adjustCase(const QString &identifier) const
+{
+ QString ret = identifier;
+ switch(defaultCase()) {
+ case (Lower):
+ ret = identifier.toLower();
+ break;
+ case (Upper):
+ ret = identifier.toUpper();
+ break;
+ case(Mixed):
+ case(Sensitive):
+ default:
+ ret = identifier;
+ }
+ return ret;
+}
+
////////////////////////////////////////////////////////////////////////////
QODBCResult::QODBCResult(const QODBCDriver * db, QODBCDriverPrivate* p)
@@ -1714,6 +1797,10 @@ bool QODBCDriver::open(const QString & db,
d->checkHasMultiResults();
setOpen(true);
setOpenError(false);
+ if(d->isMSSqlServer) {
+ QSqlQuery i(createResult());
+ i.exec(QLatin1String("SET QUOTED_IDENTIFIER ON"));
+ }
return true;
}
@@ -2084,6 +2171,22 @@ QSqlIndex QODBCDriver::primaryIndex(const QString& tablename) const
}
QString catalog, schema, table;
d->splitTableQualifier(tablename, catalog, schema, table);
+
+ if (isIdentifierEscaped(catalog, QSqlDriver::TableName))
+ catalog = stripDelimiters(catalog, QSqlDriver::TableName);
+ else
+ catalog = d->adjustCase(catalog);
+
+ if (isIdentifierEscaped(schema, QSqlDriver::TableName))
+ schema = stripDelimiters(schema, QSqlDriver::TableName);
+ else
+ schema = d->adjustCase(schema);
+
+ if (isIdentifierEscaped(table, QSqlDriver::TableName))
+ table = stripDelimiters(table, QSqlDriver::TableName);
+ else
+ table = d->adjustCase(table);
+
r = SQLSetStmtAttr(hStmt,
SQL_ATTR_CURSOR_TYPE,
(SQLPOINTER)SQL_CURSOR_FORWARD_ONLY,
@@ -2186,6 +2289,22 @@ QSqlRecord QODBCDriver::record(const QString& tablename) const
SQLHANDLE hStmt;
QString catalog, schema, table;
d->splitTableQualifier(tablename, catalog, schema, table);
+
+ if (isIdentifierEscaped(catalog, QSqlDriver::TableName))
+ catalog = stripDelimiters(catalog, QSqlDriver::TableName);
+ else
+ catalog = d->adjustCase(catalog);
+
+ if (isIdentifierEscaped(schema, QSqlDriver::TableName))
+ schema = stripDelimiters(schema, QSqlDriver::TableName);
+ else
+ schema = d->adjustCase(schema);
+
+ if (isIdentifierEscaped(table, QSqlDriver::TableName))
+ table = stripDelimiters(table, QSqlDriver::TableName);
+ else
+ table = d->adjustCase(table);
+
SQLRETURN r = SQLAllocHandle(SQL_HANDLE_STMT,
d->hDbc,
&hStmt);
@@ -2309,4 +2428,15 @@ QString QODBCDriver::escapeIdentifier(const QString &identifier, IdentifierType)
return res;
}
+bool QODBCDriver::isIdentifierEscapedImplementation(const QString &identifier, IdentifierType) const
+{
+ QString quote = d->quoteChar();
+ bool isLeftDelimited = identifier.left(1) == quote;
+ bool isRightDelimited = identifier.right(1) == quote;
+ if( identifier.size() > 2 && isLeftDelimited && isRightDelimited )
+ return true;
+ else
+ return false;
+}
+
QT_END_NAMESPACE
diff --git a/src/sql/drivers/odbc/qsql_odbc.h b/src/sql/drivers/odbc/qsql_odbc.h
index 4148007..51f53ea 100644
--- a/src/sql/drivers/odbc/qsql_odbc.h
+++ b/src/sql/drivers/odbc/qsql_odbc.h
@@ -145,10 +145,14 @@ public:
QString escapeIdentifier(const QString &identifier, IdentifierType type) const;
+protected Q_SLOTS:
+ bool isIdentifierEscapedImplementation(const QString &identifier, IdentifierType type) const;
+
protected:
bool beginTransaction();
bool commitTransaction();
bool rollbackTransaction();
+
private:
void init();
bool endTrans();
diff --git a/src/sql/drivers/psql/qsql_psql.cpp b/src/sql/drivers/psql/qsql_psql.cpp
index afe45fc..16d19f1 100644
--- a/src/sql/drivers/psql/qsql_psql.cpp
+++ b/src/sql/drivers/psql/qsql_psql.cpp
@@ -894,6 +894,16 @@ QSqlIndex QPSQLDriver::primaryIndex(const QString& tablename) const
QString schema;
qSplitTableName(tbl, schema);
+ if (isIdentifierEscaped(tbl, QSqlDriver::TableName))
+ tbl = stripDelimiters(tbl, QSqlDriver::TableName);
+ else
+ tbl = tbl.toLower();
+
+ if (isIdentifierEscaped(schema, QSqlDriver::TableName))
+ schema = stripDelimiters(schema, QSqlDriver::TableName);
+ else
+ schema = schema.toLower();
+
switch(d->pro) {
case QPSQLDriver::Version6:
stmt = QLatin1String("select pg_att1.attname, int(pg_att1.atttypid), pg_cl.relname "
@@ -926,7 +936,7 @@ QSqlIndex QPSQLDriver::primaryIndex(const QString& tablename) const
"FROM pg_attribute, pg_class "
"WHERE %1 pg_class.oid IN "
"(SELECT indexrelid FROM pg_index WHERE indisprimary = true AND indrelid IN "
- " (SELECT oid FROM pg_class WHERE lower(relname) = '%2')) "
+ " (SELECT oid FROM pg_class WHERE relname = '%2')) "
"AND pg_attribute.attrelid = pg_class.oid "
"AND pg_attribute.attisdropped = false "
"ORDER BY pg_attribute.attnum");
@@ -934,11 +944,11 @@ QSqlIndex QPSQLDriver::primaryIndex(const QString& tablename) const
stmt = stmt.arg(QLatin1String("pg_table_is_visible(pg_class.oid) AND"));
else
stmt = stmt.arg(QString::fromLatin1("pg_class.relnamespace = (select oid from "
- "pg_namespace where pg_namespace.nspname = '%1') AND ").arg(schema.toLower()));
+ "pg_namespace where pg_namespace.nspname = '%1') AND ").arg(schema));
break;
}
- i.exec(stmt.arg(tbl.toLower()));
+ i.exec(stmt.arg(tbl));
while (i.isActive() && i.next()) {
QSqlField f(i.value(0).toString(), qDecodePSQLType(i.value(1).toInt()));
idx.append(f);
@@ -957,6 +967,16 @@ QSqlRecord QPSQLDriver::record(const QString& tablename) const
QString schema;
qSplitTableName(tbl, schema);
+ if (isIdentifierEscaped(tbl, QSqlDriver::TableName))
+ tbl = stripDelimiters(tbl, QSqlDriver::TableName);
+ else
+ tbl = tbl.toLower();
+
+ if (isIdentifierEscaped(schema, QSqlDriver::TableName))
+ schema = stripDelimiters(schema, QSqlDriver::TableName);
+ else
+ schema = schema.toLower();
+
QString stmt;
switch(d->pro) {
case QPSQLDriver::Version6:
@@ -1001,7 +1021,7 @@ QSqlRecord QPSQLDriver::record(const QString& tablename) const
"left join pg_attrdef on (pg_attrdef.adrelid = "
"pg_attribute.attrelid and pg_attrdef.adnum = pg_attribute.attnum) "
"where %1 "
- "and lower(pg_class.relname) = '%2' "
+ "and pg_class.relname = '%2' "
"and pg_attribute.attnum > 0 "
"and pg_attribute.attrelid = pg_class.oid "
"and pg_attribute.attisdropped = false "
@@ -1010,12 +1030,12 @@ QSqlRecord QPSQLDriver::record(const QString& tablename) const
stmt = stmt.arg(QLatin1String("pg_table_is_visible(pg_class.oid)"));
else
stmt = stmt.arg(QString::fromLatin1("pg_class.relnamespace = (select oid from "
- "pg_namespace where pg_namespace.nspname = '%1')").arg(schema.toLower()));
+ "pg_namespace where pg_namespace.nspname = '%1')").arg(schema));
break;
}
QSqlQuery query(createResult());
- query.exec(stmt.arg(tbl.toLower()));
+ query.exec(stmt.arg(tbl));
if (d->pro >= QPSQLDriver::Version71) {
while (query.next()) {
int len = query.value(3).toInt();
diff --git a/src/sql/drivers/sqlite/qsql_sqlite.cpp b/src/sql/drivers/sqlite/qsql_sqlite.cpp
index 605c4e8..f732077 100644
--- a/src/sql/drivers/sqlite/qsql_sqlite.cpp
+++ b/src/sql/drivers/sqlite/qsql_sqlite.cpp
@@ -661,9 +661,13 @@ QSqlIndex QSQLiteDriver::primaryIndex(const QString &tblname) const
if (!isOpen())
return QSqlIndex();
+ QString table = tblname;
+ if (isIdentifierEscaped(table, QSqlDriver::TableName))
+ table = stripDelimiters(table, QSqlDriver::TableName);
+
QSqlQuery q(createResult());
q.setForwardOnly(true);
- return qGetTableInfo(q, tblname, true);
+ return qGetTableInfo(q, table, true);
}
QSqlRecord QSQLiteDriver::record(const QString &tbl) const
@@ -671,9 +675,13 @@ QSqlRecord QSQLiteDriver::record(const QString &tbl) const
if (!isOpen())
return QSqlRecord();
+ QString table = tbl;
+ if (isIdentifierEscaped(table, QSqlDriver::TableName))
+ table = stripDelimiters(table, QSqlDriver::TableName);
+
QSqlQuery q(createResult());
q.setForwardOnly(true);
- return qGetTableInfo(q, tbl);
+ return qGetTableInfo(q, table);
}
QVariant QSQLiteDriver::handle() const
@@ -681,10 +689,10 @@ QVariant QSQLiteDriver::handle() const
return qVariantFromValue(d->access);
}
-QString QSQLiteDriver::escapeIdentifier(const QString &identifier, IdentifierType /*type*/) const
+QString QSQLiteDriver::escapeIdentifier(const QString &identifier, IdentifierType type) const
{
QString res = identifier;
- if(!identifier.isEmpty() && identifier.left(1) != QString(QLatin1Char('"')) && identifier.right(1) != QString(QLatin1Char('"')) ) {
+ if(!identifier.isEmpty() && !isIdentifierEscaped(identifier, type) ) {
res.replace(QLatin1Char('"'), QLatin1String("\"\""));
res.prepend(QLatin1Char('"')).append(QLatin1Char('"'));
res.replace(QLatin1Char('.'), QLatin1String("\".\""));
diff --git a/src/sql/drivers/sqlite2/qsql_sqlite2.cpp b/src/sql/drivers/sqlite2/qsql_sqlite2.cpp
index ff73caa..d0c6e18 100644
--- a/src/sql/drivers/sqlite2/qsql_sqlite2.cpp
+++ b/src/sql/drivers/sqlite2/qsql_sqlite2.cpp
@@ -167,7 +167,15 @@ void QSQLite2ResultPrivate::init(const char **cnames, int numCols)
for (int i = 0; i < numCols; ++i) {
const char* lastDot = strrchr(cnames[i], '.');
const char* fieldName = lastDot ? lastDot + 1 : cnames[i];
- rInf.append(QSqlField(QString::fromAscii(fieldName),
+
+ //remove quotations around the field name if any
+ QString fieldStr = QString::fromAscii(fieldName);
+ QString quote = QString::fromLatin1("\"");
+ if ( fieldStr.length() > 2 && fieldStr.left(1) == quote && fieldStr.right(1) == quote) {
+ fieldStr = fieldStr.mid(1);
+ fieldStr.chop(1);
+ }
+ rInf.append(QSqlField(fieldStr,
nameToType(QString::fromAscii(cnames[i+numCols]))));
}
}
@@ -503,8 +511,11 @@ QSqlIndex QSQLite2Driver::primaryIndex(const QString &tblname) const
QSqlQuery q(createResult());
q.setForwardOnly(true);
+ QString table = tblname;
+ if (isIdentifierEscaped(table, QSqlDriver::TableName))
+ table = stripDelimiters(table, QSqlDriver::TableName);
// finrst find a UNIQUE INDEX
- q.exec(QLatin1String("PRAGMA index_list('") + tblname + QLatin1String("');"));
+ q.exec(QLatin1String("PRAGMA index_list('") + table + QLatin1String("');"));
QString indexname;
while(q.next()) {
if (q.value(2).toInt()==1) {
@@ -517,7 +528,7 @@ QSqlIndex QSQLite2Driver::primaryIndex(const QString &tblname) const
q.exec(QLatin1String("PRAGMA index_info('") + indexname + QLatin1String("');"));
- QSqlIndex index(tblname, indexname);
+ QSqlIndex index(table, indexname);
while(q.next()) {
QString name = q.value(2).toString();
QVariant::Type type = QVariant::Invalid;
@@ -532,6 +543,9 @@ QSqlRecord QSQLite2Driver::record(const QString &tbl) const
{
if (!isOpen())
return QSqlRecord();
+ QString table = tbl;
+ if (isIdentifierEscaped(tbl, QSqlDriver::TableName))
+ table = stripDelimiters(table, QSqlDriver::TableName);
QSqlQuery q(createResult());
q.setForwardOnly(true);
diff --git a/src/sql/drivers/tds/qsql_tds.cpp b/src/sql/drivers/tds/qsql_tds.cpp
index 46e4a0b..515f0de 100644
--- a/src/sql/drivers/tds/qsql_tds.cpp
+++ b/src/sql/drivers/tds/qsql_tds.cpp
@@ -293,6 +293,8 @@ QTDSResult::QTDSResult(const QTDSDriver* db)
// insert d in error handler dict
errs()->insert(d->dbproc, d);
+ dbcmd(d->dbproc, "set quoted_identifier on");
+ dbsqlexec(d->dbproc);
}
QTDSResult::~QTDSResult()
@@ -367,7 +369,7 @@ bool QTDSResult::gotoNext(QSqlCachedResult::ValueCache &values, int index)
if (qIsNull(d->buffer.at(i * 2 + 1)))
values[idx] = QVariant(QVariant::String);
else
- values[idx] = QString::fromLocal8Bit((const char*)d->buffer.at(i * 2));
+ values[idx] = QString::fromLocal8Bit((const char*)d->buffer.at(i * 2)).trimmed();
break;
case QVariant::ByteArray: {
if (qIsNull(d->buffer.at(i * 2 + 1)))
@@ -698,9 +700,14 @@ QSqlRecord QTDSDriver::record(const QString& tablename) const
return info;
QSqlQuery t(createResult());
t.setForwardOnly(true);
+
+ QString table = tablename;
+ if (isIdentifierEscaped(table, QSqlDriver::TableName))
+ table = stripDelimiters(table, QSqlDriver::TableName);
+
QString stmt (QLatin1String("select name, type, length, prec from syscolumns "
"where id = (select id from sysobjects where name = '%1')"));
- t.exec(stmt.arg(tablename));
+ t.exec(stmt.arg(table));
while (t.next()) {
QSqlField f(t.value(0).toString().simplified(), qDecodeTDSType(t.value(1).toInt()));
f.setLength(t.value(2).toInt());
@@ -770,13 +777,17 @@ QSqlIndex QTDSDriver::primaryIndex(const QString& tablename) const
{
QSqlRecord rec = record(tablename);
- QSqlIndex idx(tablename);
- if ((!isOpen()) || (tablename.isEmpty()))
+ QString table = tablename;
+ if (isIdentifierEscaped(table, QSqlDriver::TableName))
+ table = stripDelimiters(table, QSqlDriver::TableName);
+
+ QSqlIndex idx(table);
+ if ((!isOpen()) || (table.isEmpty()))
return QSqlIndex();
QSqlQuery t(createResult());
t.setForwardOnly(true);
- t.exec(QString::fromLatin1("sp_helpindex '%1'").arg(tablename));
+ t.exec(QString::fromLatin1("sp_helpindex '%1'").arg(table));
if (t.next()) {
QStringList fNames = t.value(2).toString().simplified().split(QLatin1Char(','));
QRegExp regx(QLatin1String("\\s*(\\S+)(?:\\s+(DESC|desc))?\\s*"));
diff --git a/src/sql/kernel/qsqldatabase.cpp b/src/sql/kernel/qsqldatabase.cpp
index 6232452..a270c0e 100644
--- a/src/sql/kernel/qsqldatabase.cpp
+++ b/src/sql/kernel/qsqldatabase.cpp
@@ -378,7 +378,7 @@ void QSqlDatabasePrivate::disable()
the connection name argument, if you don't pass the connection
name argument, the default connection is assumed. The following
snippet shows how to create and open a default connection to a
- MySQL database:
+ PostgreSQL database:
\snippet doc/src/snippets/sqldatabase/sqldatabase.cpp 0
diff --git a/src/sql/kernel/qsqldriver.cpp b/src/sql/kernel/qsqldriver.cpp
index ddebe45..40bc0df 100644
--- a/src/sql/kernel/qsqldriver.cpp
+++ b/src/sql/kernel/qsqldriver.cpp
@@ -49,6 +49,17 @@
QT_BEGIN_NAMESPACE
+static QString prepareIdentifier(const QString &identifier,
+ QSqlDriver::IdentifierType type, const QSqlDriver *driver)
+{
+ Q_ASSERT( driver != NULL );
+ QString ret = identifier;
+ if (!driver->isIdentifierEscaped(identifier, type)) {
+ ret = driver->escapeIdentifier(identifier, type);
+ }
+ return ret;
+}
+
class QSqlDriverPrivate : public QObjectPrivate
{
public:
@@ -372,6 +383,7 @@ QSqlRecord QSqlDriver::record(const QString & /* tableName */) const
on \a type.
The default implementation does nothing.
+ \sa isIdentifierEscaped()
*/
QString QSqlDriver::escapeIdentifier(const QString &identifier, IdentifierType) const
{
@@ -379,6 +391,55 @@ QString QSqlDriver::escapeIdentifier(const QString &identifier, IdentifierType)
}
/*!
+ Returns whether \a identifier is escaped according to the database rules.
+ \a identifier can either be a table name or field name, dependent
+ on \a type.
+
+ \warning Because of binary compatability constraints, this function is not virtual.
+ If you want to provide your own implementation in your QSqlDriver subclass,
+ reimplement the isIdentifierEscapedImplementation() slot in your subclass instead.
+ The isIdentifierEscapedFunction() will dynamically detect the slot and call it.
+
+ \sa stripDelimiters(), escapeIdentifier()
+ */
+bool QSqlDriver::isIdentifierEscaped(const QString &identifier, IdentifierType type) const
+{
+ bool result;
+ QMetaObject::invokeMethod(const_cast<QSqlDriver*>(this),
+ "isIdentifierEscapedImplementation", Qt::DirectConnection,
+ Q_RETURN_ARG(bool, result),
+ Q_ARG(QString, identifier),
+ Q_ARG(IdentifierType, type));
+ return result;
+}
+
+/*!
+ Returns the \a identifier with the leading and trailing delimiters removed,
+ \a identifier can either be a table name or field name,
+ dependent on \a type. If \a identifier does not have leading
+ and trailing delimiter characters, \a identifier is returned without
+ modification.
+
+ \warning Because of binary compatability constraints, this function is not virtual,
+ If you want to provide your own implementation in your QSqlDriver subclass,
+ reimplement the stripDelimitersImplementation() slot in your subclass instead.
+ The stripDelimiters() function will dynamically detect the slot and call it.
+
+ \since 4.5
+ \sa isIdentifierEscaped()
+ */
+QString QSqlDriver::stripDelimiters(const QString &identifier, IdentifierType type) const
+{
+ QString result;
+ QMetaObject::invokeMethod(const_cast<QSqlDriver*>(this),
+ "stripDelimitersImplementation", Qt::DirectConnection,
+ Q_RETURN_ARG(QString, result),
+ Q_ARG(QString, identifier),
+ Q_ARG(IdentifierType, type));
+ return result;
+}
+
+/*!
Returns a SQL statement of type \a type for the table \a tableName
with the values from \a rec. If \a preparedStatement is true, the
string will contain placeholders instead of values.
@@ -397,21 +458,26 @@ QString QSqlDriver::sqlStatement(StatementType type, const QString &tableName,
case SelectStatement:
for (i = 0; i < rec.count(); ++i) {
if (rec.isGenerated(i))
- s.append(escapeIdentifier(rec.fieldName(i), FieldName)).append(QLatin1String(", "));
+ s.append(prepareIdentifier(rec.fieldName(i), QSqlDriver::FieldName, this)).append(QLatin1String(", "));
}
if (s.isEmpty())
return s;
s.chop(2);
- s.prepend(QLatin1String("SELECT ")).append(QLatin1String(" FROM ")).append(escapeIdentifier(tableName, TableName));
+ s.prepend(QLatin1String("SELECT ")).append(QLatin1String(" FROM ")).append(tableName);
break;
case WhereStatement:
if (preparedStatement) {
- for (int i = 0; i < rec.count(); ++i)
- s.append(escapeIdentifier(rec.fieldName(i), FieldName)).append(
- QLatin1String(" = ? AND "));
+ for (int i = 0; i < rec.count(); ++i) {
+ s.append(prepareIdentifier(rec.fieldName(i), FieldName,this));
+ if (rec.isNull(i))
+ s.append(QLatin1String(" IS NULL"));
+ else
+ s.append(QLatin1String(" = ?"));
+ s.append(QLatin1String(" AND "));
+ }
} else {
for (i = 0; i < rec.count(); ++i) {
- s.append(escapeIdentifier(rec.fieldName(i), FieldName));
+ s.append(prepareIdentifier(rec.fieldName(i), QSqlDriver::FieldName, this));
QString val = formatValue(rec.field(i));
if (val == QLatin1String("NULL"))
s.append(QLatin1String(" IS NULL"));
@@ -426,12 +492,12 @@ QString QSqlDriver::sqlStatement(StatementType type, const QString &tableName,
}
break;
case UpdateStatement:
- s.append(QLatin1String("UPDATE ")).append(escapeIdentifier(tableName, TableName)).append(
+ s.append(QLatin1String("UPDATE ")).append(tableName).append(
QLatin1String(" SET "));
for (i = 0; i < rec.count(); ++i) {
if (!rec.isGenerated(i) || !rec.value(i).isValid())
continue;
- s.append(escapeIdentifier(rec.fieldName(i), FieldName)).append(QLatin1Char('='));
+ s.append(prepareIdentifier(rec.fieldName(i), QSqlDriver::FieldName, this)).append(QLatin1Char('='));
if (preparedStatement)
s.append(QLatin1Char('?'));
else
@@ -444,15 +510,15 @@ QString QSqlDriver::sqlStatement(StatementType type, const QString &tableName,
s.clear();
break;
case DeleteStatement:
- s.append(QLatin1String("DELETE FROM ")).append(escapeIdentifier(tableName, TableName));
+ s.append(QLatin1String("DELETE FROM ")).append(tableName);
break;
case InsertStatement: {
- s.append(QLatin1String("INSERT INTO ")).append(escapeIdentifier(tableName, TableName)).append(QLatin1String(" ("));
+ s.append(QLatin1String("INSERT INTO ")).append(tableName).append(QLatin1String(" ("));
QString vals;
for (i = 0; i < rec.count(); ++i) {
if (!rec.isGenerated(i) || !rec.value(i).isValid())
continue;
- s.append(escapeIdentifier(rec.fieldName(i), FieldName)).append(QLatin1String(", "));
+ s.append(prepareIdentifier(rec.fieldName(i), QSqlDriver::FieldName, this)).append(QLatin1String(", "));
if (preparedStatement)
vals.append(QLatin1String("?"));
else
@@ -800,4 +866,56 @@ QStringList QSqlDriver::subscribedToNotificationsImplementation() const
return QStringList();
}
+/*!
+ This slot returns whether \a identifier is escaped according to the database rules.
+ \a identifier can either be a table name or field name, dependent
+ on \a type.
+
+ Because of binary compatability constraints, isIdentifierEscaped() function
+ (introduced in Qt 4.5) is not virtual. Instead, isIdentifierEscaped() will
+ dynamically detect and call \e this slot. The default implementation
+ assumes the escape/delimiter character is a double quote. Reimplement this
+ slot in your own QSqlDriver if your database engine uses a different
+ delimiter character.
+
+ \since 4.5
+ \sa isIdentifierEscaped()
+ */
+bool QSqlDriver::isIdentifierEscapedImplementation(const QString &identifier, IdentifierType type) const
+{
+ Q_UNUSED(type);
+ bool isLeftDelimited = identifier.left(1) == QString(QLatin1Char('"'));
+ bool isRightDelimited = identifier.right(1) == QString(QLatin1Char('"'));
+ if( identifier.size() > 2 && isLeftDelimited && isRightDelimited )
+ return true;
+ else
+ return false;
+}
+
+/*!
+ This slot returns \a identifier with the leading and trailing delimiters removed,
+ \a identifier can either be a tablename or field name, dependent on \a type.
+ If \a identifier does not have leading and trailing delimiter characters, \a
+ identifier is returned without modification.
+
+ Because of binary compatability constraints, the stripDelimiters() function
+ (introduced in Qt 4.5) is not virtual. Instead, stripDelimiters() will
+ dynamically detect and call \e this slot. It generally unnecessary
+ to reimplement this slot.
+
+ \since 4.5
+ \sa stripDelimiters()
+ */
+QString QSqlDriver::stripDelimitersImplementation(const QString &identifier, IdentifierType type) const
+{
+ QString ret;
+ if (this->isIdentifierEscaped(identifier, type)) {
+ ret = identifier.mid(1);
+ ret.chop(1);
+ } else {
+ ret = identifier;
+ }
+ return ret;
+}
+
QT_END_NAMESPACE
diff --git a/src/sql/kernel/qsqldriver.h b/src/sql/kernel/qsqldriver.h
index e763719..8ac1471 100644
--- a/src/sql/kernel/qsqldriver.h
+++ b/src/sql/kernel/qsqldriver.h
@@ -127,6 +127,9 @@ public:
bool unsubscribeFromNotification(const QString &name); // ### Qt 5: make virtual
QStringList subscribedToNotifications() const; // ### Qt 5: make virtual
+ bool isIdentifierEscaped(const QString &identifier, IdentifierType type) const; // ### Qt 5: make virtual
+ QString stripDelimiters(const QString &identifier, IdentifierType type) const; // ### Qt 5: make virtual
+
Q_SIGNALS:
void notification(const QString &name);
@@ -140,6 +143,9 @@ protected Q_SLOTS:
bool unsubscribeFromNotificationImplementation(const QString &name); // ### Qt 5: eliminate, see unsubscribeFromNotification()
QStringList subscribedToNotificationsImplementation() const; // ### Qt 5: eliminate, see subscribedNotifications()
+ bool isIdentifierEscapedImplementation(const QString &identifier, IdentifierType type) const; // ### Qt 5: eliminate, see isIdentifierEscaped()
+ QString stripDelimitersImplementation(const QString &identifier, IdentifierType type) const; // ### Qt 5: eliminate, see stripDelimiters()
+
private:
Q_DISABLE_COPY(QSqlDriver)
};
diff --git a/src/sql/kernel/qsqlquery.cpp b/src/sql/kernel/qsqlquery.cpp
index e6729a5..2a07e28 100644
--- a/src/sql/kernel/qsqlquery.cpp
+++ b/src/sql/kernel/qsqlquery.cpp
@@ -1195,7 +1195,7 @@ void QSqlQuery::finish()
The query will be repositioned on an \e invalid record in the new
result set and must be navigated to a valid record before data
values can be retrieved. If a new result set isn't available the
- function returns false and the the query is set to inactive. In any
+ function returns false and the query is set to inactive. In any
case the old result set will be discarded.
When one of the statements is a non-select statement a count of
diff --git a/src/sql/models/qsqlrelationaltablemodel.cpp b/src/sql/models/qsqlrelationaltablemodel.cpp
index 935466b..12eae84 100644
--- a/src/sql/models/qsqlrelationaltablemodel.cpp
+++ b/src/sql/models/qsqlrelationaltablemodel.cpp
@@ -182,10 +182,21 @@ void QRelation::populateDictionary()
populateModel();
QSqlRecord record;
+ QString indexColumn;
+ QString displayColumn;
for (int i=0; i < model->rowCount(); ++i) {
record = model->record(i);
- dictionary[record.field(rel.indexColumn()).value().toString()] =
- record.field(rel.displayColumn()).value();
+
+ indexColumn = rel.indexColumn();
+ if (m_parent->database().driver()->isIdentifierEscaped(indexColumn, QSqlDriver::FieldName))
+ indexColumn = m_parent->database().driver()->stripDelimiters(indexColumn, QSqlDriver::FieldName);
+
+ displayColumn = rel.displayColumn();
+ if (m_parent->database().driver()->isIdentifierEscaped(displayColumn, QSqlDriver::FieldName))
+ displayColumn = m_parent->database().driver()->stripDelimiters(displayColumn, QSqlDriver::FieldName);
+
+ dictionary[record.field(indexColumn).value().toString()] =
+ record.field(displayColumn).value();
}
m_dictInitialized = true;
}
@@ -215,7 +226,7 @@ public:
QSqlRelationalTableModelPrivate()
: QSqlTableModelPrivate()
{}
- QString escapedRelationField(const QString &tableName, const QString &fieldName) const;
+ QString relationField(const QString &tableName, const QString &fieldName) const;
int nameToIndex(const QString &name) const;
mutable QVector<QRelation> relations;
@@ -255,7 +266,10 @@ void QSqlRelationalTableModelPrivate::revertCachedRow(int row)
int QSqlRelationalTableModelPrivate::nameToIndex(const QString &name) const
{
- return baseRec.indexOf(name);
+ QString fieldname = name;
+ if (db.driver()->isIdentifierEscaped(fieldname, QSqlDriver::FieldName))
+ fieldname = db.driver()->stripDelimiters(fieldname, QSqlDriver::FieldName);
+ return baseRec.indexOf(fieldname);
}
void QSqlRelationalTableModelPrivate::clearEditBuffer()
@@ -481,14 +495,14 @@ QSqlRelation QSqlRelationalTableModel::relation(int column) const
return d->relations.value(column).rel;
}
-QString QSqlRelationalTableModelPrivate::escapedRelationField(const QString &tableName,
+QString QSqlRelationalTableModelPrivate::relationField(const QString &tableName,
const QString &fieldName) const
{
- QString esc;
- esc.reserve(tableName.size() + fieldName.size() + 1);
- esc.append(tableName).append(QLatin1Char('.')).append(fieldName);
+ QString ret;
+ ret.reserve(tableName.size() + fieldName.size() + 1);
+ ret.append(tableName).append(QLatin1Char('.')).append(fieldName);
- return db.driver()->escapeIdentifier(esc, QSqlDriver::FieldName);
+ return ret;
}
/*!
@@ -514,15 +528,29 @@ QString QSqlRelationalTableModel::selectStatement() const
// Count how many times each field name occurs in the record
QHash<QString, int> fieldNames;
+ QStringList fieldList;
for (int i = 0; i < rec.count(); ++i) {
QSqlRelation relation = d->relations.value(i, nullRelation).rel;
QString name;
if (relation.isValid())
+ {
// Count the display column name, not the original foreign key
name = relation.displayColumn();
+ if (d->db.driver()->isIdentifierEscaped(name, QSqlDriver::FieldName))
+ name = d->db.driver()->stripDelimiters(name, QSqlDriver::FieldName);
+
+ QSqlRecord rec = database().record(relation.tableName());
+ for (int i = 0; i < rec.count(); ++i) {
+ if (name.compare(rec.fieldName(i), Qt::CaseInsensitive) == 0) {
+ name = rec.fieldName(i);
+ break;
+ }
+ }
+ }
else
name = rec.fieldName(i);
fieldNames.insert(name, fieldNames.value(name, 0) + 1);
+ fieldList.append(name);
}
for (int i = 0; i < rec.count(); ++i) {
@@ -531,27 +559,30 @@ QString QSqlRelationalTableModel::selectStatement() const
QString relTableAlias = QString::fromLatin1("relTblAl_%1").arg(i);
if (!fList.isEmpty())
fList.append(QLatin1String(", "));
- fList.append(d->escapedRelationField(relTableAlias, relation.displayColumn()));
+ fList.append(d->relationField(relTableAlias,relation.displayColumn()));
// If there are duplicate field names they must be aliased
- if (fieldNames.value(relation.displayColumn()) > 1) {
- fList.append(QString::fromLatin1(" AS %1_%2").arg(relation.tableName()).arg(relation.displayColumn()));
+ if (fieldNames.value(fieldList[i]) > 1) {
+ QString relTableName = relation.tableName();
+ if (d->db.driver()->isIdentifierEscaped(relTableName, QSqlDriver::TableName))
+ relTableName = d->db.driver()->stripDelimiters(relTableName, QSqlDriver::TableName);
+ QString displayColumn = relation.displayColumn();
+ if (d->db.driver()->isIdentifierEscaped(displayColumn, QSqlDriver::FieldName))
+ displayColumn = d->db.driver()->stripDelimiters(displayColumn, QSqlDriver::FieldName);
+ fList.append(QString::fromLatin1(" AS %1_%2").arg(relTableName).arg(displayColumn));
}
// this needs fixing!! the below if is borken.
- if (!tables.contains(relation.tableName()))
- tables.append(d->db.driver()->escapeIdentifier(relation.tableName(),QSqlDriver::TableName)
- .append(QLatin1String(" "))
- .append(d->db.driver()->escapeIdentifier(relTableAlias, QSqlDriver::TableName)));
+ tables.append(relation.tableName().append(QLatin1String(" ")).append(relTableAlias));
if(!where.isEmpty())
where.append(QLatin1String(" AND "));
- where.append(d->escapedRelationField(tableName(), rec.fieldName(i)));
+ where.append(d->relationField(tableName(), d->db.driver()->escapeIdentifier(rec.fieldName(i), QSqlDriver::FieldName)));
where.append(QLatin1String(" = "));
- where.append(d->escapedRelationField(relTableAlias, relation.indexColumn()));
+ where.append(d->relationField(relTableAlias, relation.indexColumn()));
} else {
if (!fList.isEmpty())
fList.append(QLatin1String(", "));
- fList.append(d->escapedRelationField(tableName(), rec.fieldName(i)));
+ fList.append(d->relationField(tableName(), d->db.driver()->escapeIdentifier(rec.fieldName(i), QSqlDriver::FieldName)));
}
}
if (!tables.isEmpty())
@@ -560,7 +591,7 @@ QString QSqlRelationalTableModel::selectStatement() const
return query;
if(!tList.isEmpty())
tList.prepend(QLatin1String(", "));
- tList.prepend(d->db.driver()->escapeIdentifier(tableName(),QSqlDriver::TableName));
+ tList.prepend(tableName());
query.append(QLatin1String("SELECT "));
query.append(fList).append(QLatin1String(" FROM ")).append(tList);
qAppendWhereClause(query, where, filter());
@@ -690,7 +721,7 @@ QString QSqlRelationalTableModel::orderByClause() const
return QSqlTableModel::orderByClause();
QString s = QLatin1String("ORDER BY ");
- s.append(d->escapedRelationField(QLatin1String("relTblAl_") + QString::number(d->sortColumn),
+ s.append(d->relationField(QLatin1String("relTblAl_") + QString::number(d->sortColumn),
rel.displayColumn()));
s += d->sortOrder == Qt::AscendingOrder ? QLatin1String(" ASC") : QLatin1String(" DESC");
return s;
diff --git a/src/sql/models/qsqltablemodel.cpp b/src/sql/models/qsqltablemodel.cpp
index 2fb9b0f..c2442c5 100644
--- a/src/sql/models/qsqltablemodel.cpp
+++ b/src/sql/models/qsqltablemodel.cpp
@@ -98,7 +98,10 @@ bool QSqlTableModelPrivate::setRecord(int row, const QSqlRecord &record)
int QSqlTableModelPrivate::nameToIndex(const QString &name) const
{
- return rec.indexOf(name);
+ QString fieldname = name;
+ if (db.driver()->isIdentifierEscaped(fieldname, QSqlDriver::FieldName))
+ fieldname = db.driver()->stripDelimiters(fieldname, QSqlDriver::FieldName);
+ return rec.indexOf(fieldname);
}
void QSqlTableModelPrivate::initRecordAndPrimaryIndex()
@@ -367,10 +370,7 @@ void QSqlTableModel::setTable(const QString &tableName)
{
Q_D(QSqlTableModel);
clear();
- if(d->db.tables().contains(tableName.toUpper()))
- d->tableName = tableName.toUpper();
- else
- d->tableName = tableName;
+ d->tableName = tableName;
d->initRecordAndPrimaryIndex();
d->initColOffsets(d->rec.count());
@@ -976,7 +976,9 @@ QString QSqlTableModel::orderByClause() const
if (!f.isValid())
return s;
- QString table = d->db.driver()->escapeIdentifier(d->tableName, QSqlDriver::TableName);
+ QString table = d->tableName;
+ //we can safely escape the field because it would have been obtained from the database
+ //and have the correct case
QString field = d->db.driver()->escapeIdentifier(f.name(), QSqlDriver::FieldName);
s.append(QLatin1String("ORDER BY ")).append(table).append(QLatin1Char('.')).append(field);
s += d->sortOrder == Qt::AscendingOrder ? QLatin1String(" ASC") : QLatin1String(" DESC");
@@ -1317,8 +1319,12 @@ bool QSqlTableModel::setRecord(int row, const QSqlRecord &record)
mrow.rec = d->rec;
mrow.primaryValues = d->primaryValues(indexInQuery(createIndex(row, 0)).row());
}
+ QString fieldName;
for (int i = 0; i < record.count(); ++i) {
- int idx = mrow.rec.indexOf(record.fieldName(i));
+ fieldName = record.fieldName(i);
+ if (d->db.driver()->isIdentifierEscaped(fieldName, QSqlDriver::FieldName))
+ fieldName = d->db.driver()->stripDelimiters(fieldName, QSqlDriver::FieldName);
+ int idx = mrow.rec.indexOf(fieldName);
if (idx == -1)
isOk = false;
else
diff --git a/src/src.pro b/src/src.pro
index fb28882..f40c6ad 100644
--- a/src/src.pro
+++ b/src/src.pro
@@ -13,7 +13,7 @@ wince*:{
contains(QT_CONFIG, qt3support): SRC_SUBDIRS += src_tools_uic3
}
}
-win32:!contains(QT_EDITION, OpenSource|Console): {
+win32:{
SRC_SUBDIRS += src_activeqt
!wince*: SRC_SUBDIRS += src_tools_idc
}
diff --git a/src/svg/qsvghandler.cpp b/src/svg/qsvghandler.cpp
index 56dab5f..6a897e8 100644
--- a/src/svg/qsvghandler.cpp
+++ b/src/svg/qsvghandler.cpp
@@ -1673,10 +1673,19 @@ static void parseCSStoXMLAttrs(const QVector<QCss::Declaration> &declarations,
const QCss::Declaration &decl = declarations.at(i);
if (decl.d->property.isEmpty())
continue;
- if (decl.d->values.count() != 1)
- continue;
QCss::Value val = decl.d->values.first();
- QString valueStr = val.toString();
+ QString valueStr;
+ if (decl.d->values.count() != 1) {
+ for (int i=0; i<decl.d->values.count(); ++i) {
+ const QString &value = decl.d->values[i].toString();
+ if (value.isEmpty())
+ valueStr += QLatin1Char(',');
+ else
+ valueStr += value;
+ }
+ } else {
+ valueStr = val.toString();
+ }
if (val.type == QCss::Value::Uri) {
valueStr.prepend(QLatin1String("url("));
valueStr.append(QLatin1Char(')'));
@@ -2587,10 +2596,12 @@ static void parseBaseGradient(QSvgNode *node,
if (prop && prop->type() == QSvgStyleProperty::GRADIENT) {
QSvgGradientStyle *inherited =
static_cast<QSvgGradientStyle*>(prop);
- if (!inherited->stopLink().isEmpty())
+ if (!inherited->stopLink().isEmpty()) {
gradProp->setStopLink(inherited->stopLink(), handler->document());
- else
+ } else {
grad->setStops(inherited->qgradient()->stops());
+ gradProp->setGradientStopsSet(inherited->gradientStopsSet());
+ }
matrix = inherited->qmatrix();
} else {
@@ -2649,7 +2660,6 @@ static QSvgStyleProperty *createLinearGradientNode(QSvgNode *node,
}
QLinearGradient *grad = new QLinearGradient(nx1, ny1, nx2, ny2);
- grad->setColorAt(qQNaN(), QColor());
grad->setInterpolationMode(QGradient::ComponentInterpolation);
QSvgGradientStyle *prop = new QSvgGradientStyle(grad);
parseBaseGradient(node, attributes, prop, handler);
@@ -2783,7 +2793,6 @@ static QSvgStyleProperty *createRadialGradientNode(QSvgNode *node,
nfy = toDouble(fy);
QRadialGradient *grad = new QRadialGradient(ncx, ncy, nr, nfx, nfy);
- grad->setColorAt(qQNaN(), QColor());
grad->setInterpolationMode(QGradient::ComponentInterpolation);
QSvgGradientStyle *prop = new QSvgGradientStyle(grad);
@@ -2929,12 +2938,9 @@ static bool parseStopNode(QSvgStyleProperty *parent,
QGradient *grad = style->qgradient();
offset = qMin(qreal(1), qMax(qreal(0), offset)); // Clamp to range [0, 1]
- QGradientStops stops = grad->stops();
- // Check if the gradient is marked as empty (marked with one single stop at NaN).
- if ((stops.size() == 1) && qIsNaN(stops.at(0).first)) {
- stops.clear();
- grad->setStops(stops);
- } else {
+ QGradientStops stops;
+ if (style->gradientStopsSet()) {
+ stops = grad->stops();
// If the stop offset equals the one previously added, add an epsilon to make it greater.
if (offset <= stops.back().first)
offset = stops.back().first + FLT_EPSILON;
@@ -2950,6 +2956,7 @@ static bool parseStopNode(QSvgStyleProperty *parent,
}
grad->setColorAt(offset, color);
+ style->setGradientStopsSet(true);
if (!colorOK)
style->addResolve(offset);
return true;
diff --git a/src/svg/qsvgstyle.cpp b/src/svg/qsvgstyle.cpp
index 389f68f..bd0804c 100644
--- a/src/svg/qsvgstyle.cpp
+++ b/src/svg/qsvgstyle.cpp
@@ -231,7 +231,7 @@ void QSvgSolidColorStyle::revert(QPainter *p, QSvgExtraStates &)
}
QSvgGradientStyle::QSvgGradientStyle(QGradient *grad)
- : m_gradient(grad)
+ : m_gradient(grad), m_gradientStopsSet(false)
{
}
@@ -256,14 +256,13 @@ void QSvgGradientStyle::apply(QPainter *p, const QRectF &/*rect*/, QSvgNode *, Q
}
// If the gradient is marked as empty, insert transparent black
- QGradientStops stops = m_gradient->stops();
- if (stops.size() == 1 && qIsNaN(stops.at(0).first))
+ if (!m_gradientStopsSet) {
m_gradient->setStops(QGradientStops() << QGradientStop(0.0, QColor(0, 0, 0, 0)));
-
- QGradient gradient = *m_gradient;
+ m_gradientStopsSet = true;
+ }
QBrush brush;
- brush = QBrush(gradient);
+ brush = QBrush(*m_gradient);
if (!m_matrix.isIdentity())
brush.setMatrix(m_matrix);
@@ -809,6 +808,7 @@ void QSvgGradientStyle::resolveStops()
static_cast<QSvgGradientStyle*>(prop);
st->resolveStops();
m_gradient->setStops(st->qgradient()->stops());
+ m_gradientStopsSet = st->gradientStopsSet();
}
}
m_link = QString();
diff --git a/src/svg/qsvgstyle_p.h b/src/svg/qsvgstyle_p.h
index ff4058b..058ba35 100644
--- a/src/svg/qsvgstyle_p.h
+++ b/src/svg/qsvgstyle_p.h
@@ -376,6 +376,16 @@ public:
}
void addResolve(qreal offset);
+
+ bool gradientStopsSet() const
+ {
+ return m_gradientStopsSet;
+ }
+
+ void setGradientStopsSet(bool set)
+ {
+ m_gradientStopsSet = set;
+ }
private:
QGradient *m_gradient;
QList<qreal> m_resolvePoints;
@@ -386,6 +396,7 @@ private:
QSvgTinyDocument *m_doc;
QString m_link;
+ bool m_gradientStopsSet;
};
class QSvgTransformStyle : public QSvgStyleProperty
diff --git a/src/svg/qsvgwidget.cpp b/src/svg/qsvgwidget.cpp
index a4200ca..ac8595f 100644
--- a/src/svg/qsvgwidget.cpp
+++ b/src/svg/qsvgwidget.cpp
@@ -83,18 +83,6 @@ class QSvgWidgetPrivate : public QWidgetPrivate
{
Q_DECLARE_PUBLIC(QSvgWidget)
public:
- QSvgWidgetPrivate()
- : QWidgetPrivate()
- {
- Q_Q(QSvgWidget);
- renderer = new QSvgRenderer(q);
- }
- QSvgWidgetPrivate(const QString &file)
- : QWidgetPrivate()
- {
- Q_Q(QSvgWidget);
- renderer = new QSvgRenderer(file, q);
- }
QSvgRenderer *renderer;
};
@@ -104,6 +92,7 @@ public:
QSvgWidget::QSvgWidget(QWidget *parent)
: QWidget(*new QSvgWidgetPrivate, parent, 0)
{
+ d_func()->renderer = new QSvgRenderer(this);
QObject::connect(d_func()->renderer, SIGNAL(repaintNeeded()),
this, SLOT(update()));
}
@@ -113,8 +102,9 @@ QSvgWidget::QSvgWidget(QWidget *parent)
of the specified \a file.
*/
QSvgWidget::QSvgWidget(const QString &file, QWidget *parent)
- : QWidget(*new QSvgWidgetPrivate(file), parent, 0)
+ : QWidget(*new QSvgWidgetPrivate, parent, 0)
{
+ d_func()->renderer = new QSvgRenderer(file, this);
QObject::connect(d_func()->renderer, SIGNAL(repaintNeeded()),
this, SLOT(update()));
}
diff --git a/src/testlib/qtestcase.cpp b/src/testlib/qtestcase.cpp
index f17d95d..b5200dc 100644
--- a/src/testlib/qtestcase.cpp
+++ b/src/testlib/qtestcase.cpp
@@ -1481,7 +1481,7 @@ int QTest::qExec(QObject *testObject, int argc, char **argv)
}
#endif
-#if defined(QTEST_NOEXITCODE) || (defined(QT_BUILD_INTERNAL) && !defined(QTEST_FORCE_EXITCODE))
+#if defined(QTEST_NOEXITCODE)
return 0;
#else
diff --git a/src/tools/uic/cpp/cppwriteinitialization.cpp b/src/tools/uic/cpp/cppwriteinitialization.cpp
index ed06006..47566ad 100644
--- a/src/tools/uic/cpp/cppwriteinitialization.cpp
+++ b/src/tools/uic/cpp/cppwriteinitialization.cpp
@@ -1648,21 +1648,21 @@ QString WriteInitialization::writeIconProperties(const DomResourceIcon *i)
const QString pixmap = QLatin1String("QPixmap");
m_output << m_indent << "QIcon " << iconName << ";\n";
if (i->hasElementNormalOff())
- m_output << m_indent << iconName << ".addPixmap(" << pixCall(pixmap, i->elementNormalOff()->text()) << ", QIcon::Normal, QIcon::Off);\n";
+ m_output << m_indent << iconName << ".addFile(QString::fromUtf8(" << fixString(i->elementNormalOff()->text(), m_dindent) << "), QSize(), QIcon::Normal, QIcon::Off);\n";
if (i->hasElementNormalOn())
- m_output << m_indent << iconName << ".addPixmap(" << pixCall(pixmap, i->elementNormalOn()->text()) << ", QIcon::Normal, QIcon::On);\n";
+ m_output << m_indent << iconName << ".addFile(QString::fromUtf8(" << fixString(i->elementNormalOn()->text(), m_dindent) << "), QSize(), QIcon::Normal, QIcon::On);\n";
if (i->hasElementDisabledOff())
- m_output << m_indent << iconName << ".addPixmap(" << pixCall(pixmap, i->elementDisabledOff()->text()) << ", QIcon::Disabled, QIcon::Off);\n";
+ m_output << m_indent << iconName << ".addFile(QString::fromUtf8(" << fixString(i->elementDisabledOff()->text(), m_dindent) << "), QSize(), QIcon::Disabled, QIcon::Off);\n";
if (i->hasElementDisabledOn())
- m_output << m_indent << iconName << ".addPixmap(" << pixCall(pixmap, i->elementDisabledOn()->text()) << ", QIcon::Disabled, QIcon::On);\n";
+ m_output << m_indent << iconName << ".addFile(QString::fromUtf8(" << fixString(i->elementDisabledOn()->text(), m_dindent) << "), QSize(), QIcon::Disabled, QIcon::On);\n";
if (i->hasElementActiveOff())
- m_output << m_indent << iconName << ".addPixmap(" << pixCall(pixmap, i->elementActiveOff()->text()) << ", QIcon::Active, QIcon::Off);\n";
+ m_output << m_indent << iconName << ".addFile(QString::fromUtf8(" << fixString(i->elementActiveOff()->text(), m_dindent) << "), QSize(), QIcon::Active, QIcon::Off);\n";
if (i->hasElementActiveOn())
- m_output << m_indent << iconName << ".addPixmap(" << pixCall(pixmap, i->elementActiveOn()->text()) << ", QIcon::Active, QIcon::On);\n";
+ m_output << m_indent << iconName << ".addFile(QString::fromUtf8(" << fixString(i->elementActiveOn()->text(), m_dindent) << "), QSize(), QIcon::Active, QIcon::On);\n";
if (i->hasElementSelectedOff())
- m_output << m_indent << iconName << ".addPixmap(" << pixCall(pixmap, i->elementSelectedOff()->text()) << ", QIcon::Selected, QIcon::Off);\n";
+ m_output << m_indent << iconName << ".addFile(QString::fromUtf8(" << fixString(i->elementSelectedOff()->text(), m_dindent) << "), QSize(), QIcon::Selected, QIcon::Off);\n";
if (i->hasElementSelectedOn())
- m_output << m_indent << iconName << ".addPixmap(" << pixCall(pixmap, i->elementSelectedOn()->text()) << ", QIcon::Selected, QIcon::On);\n";
+ m_output << m_indent << iconName << ".addFile(QString::fromUtf8(" << fixString(i->elementSelectedOn()->text(), m_dindent) << "), QSize(), QIcon::Selected, QIcon::On);\n";
} else { // pre-4.4 legacy
m_output << m_indent << "const QIcon " << iconName << " = " << pixCall(QLatin1String("QIcon"), i->text())<< ";\n";
}
diff --git a/src/xml/sax/qxml.cpp b/src/xml/sax/qxml.cpp
index c78d4ba..ade0339 100644
--- a/src/xml/sax/qxml.cpp
+++ b/src/xml/sax/qxml.cpp
@@ -2107,7 +2107,7 @@ events are reported.
You can set the lexical handler with
QXmlReader::setLexicalHandler().
- This interface's design is based on the the SAX2 extension
+ This interface's design is based on the SAX2 extension
LexicalHandler.
The interface provides the startDTD(), endDTD(), startEntity(),
diff --git a/src/xmlpatterns/expr/qapplytemplate.cpp b/src/xmlpatterns/expr/qapplytemplate.cpp
index 95f4fdf..b91c2f0 100644
--- a/src/xmlpatterns/expr/qapplytemplate.cpp
+++ b/src/xmlpatterns/expr/qapplytemplate.cpp
@@ -160,8 +160,7 @@ Item::Iterator::Ptr ApplyTemplate::evaluateSequence(const DynamicContext::Ptr &c
focus->setFocusIterator(focusIterator);
return makeSequenceMappingIterator<Item>(ConstPtr(this), focusIterator, focus);
}
- else
- return CommonValues::emptyIterator;
+ return CommonValues::emptyIterator;
}
}
diff --git a/src/xmlpatterns/expr/qxsltsimplecontentconstructor.cpp b/src/xmlpatterns/expr/qxsltsimplecontentconstructor.cpp
index ef77c76..104c5cc 100644
--- a/src/xmlpatterns/expr/qxsltsimplecontentconstructor.cpp
+++ b/src/xmlpatterns/expr/qxsltsimplecontentconstructor.cpp
@@ -105,7 +105,7 @@ Item XSLTSimpleContentConstructor::evaluateSingleton(const DynamicContext::Ptr &
QString result;
bool previousIsText = false;
- bool discard;
+ bool discard = false;
if(next)
{
diff --git a/src/xmlpatterns/functions/qsequencefns.cpp b/src/xmlpatterns/functions/qsequencefns.cpp
index f6d5391..faa787e 100644
--- a/src/xmlpatterns/functions/qsequencefns.cpp
+++ b/src/xmlpatterns/functions/qsequencefns.cpp
@@ -246,8 +246,7 @@ Item::Iterator::Ptr SubsequenceFN::evaluateSequence(const DynamicContext::Ptr &c
if(length < 1 && length != -1)
return CommonValues::emptyIterator;
- else
- return Item::Iterator::Ptr(new SubsequenceIterator(it, startingLoc, length));
+ return Item::Iterator::Ptr(new SubsequenceIterator(it, startingLoc, length));
}
Item SubsequenceFN::evaluateSingleton(const DynamicContext::Ptr &context) const
diff --git a/tests/arthur/common/images.qrc b/tests/arthur/common/images.qrc
index 8e94760..060b52c 100644
--- a/tests/arthur/common/images.qrc
+++ b/tests/arthur/common/images.qrc
@@ -3,6 +3,7 @@
<qresource>
<file>images/alpha.png</file>
<file>images/border.png</file>
+ <file>images/borderimage.png</file>
<file>images/dome_argb32.png</file>
<file>images/dome_indexed.png</file>
<file>images/dome_mono_palette.png</file>
diff --git a/tests/arthur/common/images/borderimage.png b/tests/arthur/common/images/borderimage.png
new file mode 100644
index 0000000..f7f6b66
--- /dev/null
+++ b/tests/arthur/common/images/borderimage.png
Binary files differ
diff --git a/tests/arthur/common/paintcommands.cpp b/tests/arthur/common/paintcommands.cpp
index a72e689..6ab71f8 100644
--- a/tests/arthur/common/paintcommands.cpp
+++ b/tests/arthur/common/paintcommands.cpp
@@ -1886,7 +1886,6 @@ void PaintCommands::command_setBrushOrigin(QRegExp re)
/***************************************************************************************************/
void PaintCommands::command_brushTranslate(QRegExp re)
{
-#if QT_VERSION > 0x040200
QStringList caps = re.capturedTexts();
double dx = convertToDouble(caps.at(1));
double dy = convertToDouble(caps.at(2));
@@ -1899,13 +1898,11 @@ void PaintCommands::command_brushTranslate(QRegExp re)
brush_matrix.translate(dx, dy);
new_brush.setTransform(brush_matrix);
m_painter->setBrush(new_brush);
-#endif
}
/***************************************************************************************************/
void PaintCommands::command_brushScale(QRegExp re)
{
-#if QT_VERSION > 0x040200
QStringList caps = re.capturedTexts();
double sx = convertToDouble(caps.at(1));
double sy = convertToDouble(caps.at(2));
@@ -1918,13 +1915,11 @@ void PaintCommands::command_brushScale(QRegExp re)
brush_matrix.scale(sx, sy);
new_brush.setTransform(brush_matrix);
m_painter->setBrush(new_brush);
-#endif
}
/***************************************************************************************************/
void PaintCommands::command_brushRotate(QRegExp re)
{
-#if QT_VERSION > 0x040200
QStringList caps = re.capturedTexts();
double rot = convertToDouble(caps.at(1));
@@ -1936,13 +1931,11 @@ void PaintCommands::command_brushRotate(QRegExp re)
brush_matrix.rotate(rot);
new_brush.setTransform(brush_matrix);
m_painter->setBrush(new_brush);
-#endif
}
/***************************************************************************************************/
void PaintCommands::command_brushShear(QRegExp re)
{
-#if QT_VERSION > 0x040200
QStringList caps = re.capturedTexts();
double sx = convertToDouble(caps.at(1));
double sy = convertToDouble(caps.at(2));
@@ -1955,7 +1948,6 @@ void PaintCommands::command_brushShear(QRegExp re)
brush_matrix.shear(sx, sy);
new_brush.setTransform(brush_matrix);
m_painter->setBrush(new_brush);
-#endif
}
/***************************************************************************************************/
@@ -2326,10 +2318,8 @@ void PaintCommands::command_gradient_setLinear(QRegExp re)
lg.setSpread(m_gradientSpread);
lg.setCoordinateMode(m_gradientCoordinate);
QBrush brush(lg);
-#if QT_VERSION > 0x040200
QTransform brush_matrix = m_painter->brush().transform();
brush.setTransform(brush_matrix);
-#endif
m_painter->setBrush(brush);
}
@@ -2375,10 +2365,8 @@ void PaintCommands::command_gradient_setRadial(QRegExp re)
rg.setSpread(m_gradientSpread);
rg.setCoordinateMode(m_gradientCoordinate);
QBrush brush(rg);
-#if QT_VERSION > 0x040200
QTransform brush_matrix = m_painter->brush().transform();
brush.setTransform(brush_matrix);
-#endif
m_painter->setBrush(brush);
}
@@ -2400,10 +2388,8 @@ void PaintCommands::command_gradient_setConical(QRegExp re)
cg.setSpread(m_gradientSpread);
cg.setCoordinateMode(m_gradientCoordinate);
QBrush brush(cg);
-#if QT_VERSION > 0x040200
QTransform brush_matrix = m_painter->brush().transform();
brush.setTransform(brush_matrix);
-#endif
m_painter->setBrush(brush);
}
@@ -2448,7 +2434,6 @@ void PaintCommands::command_surface_begin(QRegExp re)
m_surface_painter = m_painter;
-#if QT_VERSION > 0x040200
if (m_type == OpenGLType || m_type == OpenGLPBufferType) {
#ifndef QT_NO_OPENGL
m_surface_pbuffer = new QGLPixelBuffer(qRound(w), qRound(h));
@@ -2461,9 +2446,7 @@ void PaintCommands::command_surface_begin(QRegExp re)
m_surface_pixmap.fill(Qt::transparent);
m_painter = new QPainter(&m_surface_pixmap);
#endif
- } else
-#endif
- {
+ } else {
m_surface_image = QImage(qRound(w), qRound(h), QImage::Format_ARGB32_Premultiplied);
m_surface_image.fill(0);
m_painter = new QPainter(&m_surface_image);
diff --git a/tests/arthur/common/qengines.cpp b/tests/arthur/common/qengines.cpp
index 46f4e6b..9cd2389 100644
--- a/tests/arthur/common/qengines.cpp
+++ b/tests/arthur/common/qengines.cpp
@@ -243,11 +243,7 @@ void GLEngine::prepare(const QSize &_size, const QColor &color)
size = _size;
fillColor = color;
if (usePixelBuffers) {
-#if (QT_VERSION < 0x040200) && defined(Q_WS_MAC)
- pbuffer = new QGLPixelBuffer(QSize(512, 512), QGLFormat(QGL::SampleBuffers));
-#else
pbuffer = new QGLPixelBuffer(size, QGLFormat(QGL::SampleBuffers));
-#endif
} else {
widget = new QGLWidget(QGLFormat(QGL::SampleBuffers));
widget->setAutoFillBackground(false);
diff --git a/tests/arthur/data/qps/borderimage.qps b/tests/arthur/data/qps/borderimage.qps
new file mode 100644
index 0000000..8d2e54b
--- /dev/null
+++ b/tests/arthur/data/qps/borderimage.qps
@@ -0,0 +1,164 @@
+image_load borderimage.png borderimage
+
+translate -128 -128
+begin_block draw_border
+
+# top
+drawImage borderimage 0 0 16 16 0 0 16 16
+drawImage borderimage 16 0 36 16 16 0 32 16
+drawImage borderimage 52 0 16 16 48 0 16 16
+
+# sides
+drawImage borderimage 0 16 16 16 0 16 16 32
+drawImage borderimage 52 16 16 16 48 16 16 32
+
+#bottom
+drawImage borderimage 0 32 16 16 0 48 16 16
+drawImage borderimage 16 32 36 16 16 48 32 16
+drawImage borderimage 52 32 16 16 48 48 16 16
+
+end_block draw_border
+
+resetMatrix
+
+begin_block draw_column
+
+translate 1 1
+repeat_block draw_border
+translate 0.1 64.1
+repeat_block draw_border
+translate 0.1 64.1
+repeat_block draw_border
+translate 0.1 64.1
+repeat_block draw_border
+translate 0.1 64.1
+repeat_block draw_border
+translate 0.1 64.1
+repeat_block draw_border
+translate 0.1 64.1
+repeat_block draw_border
+translate 0.1 64.1
+repeat_block draw_border
+translate 0.1 64.1
+repeat_block draw_border
+translate 0.1 64.1
+repeat_block draw_border
+
+end_block draw_column
+
+setRenderHint Antialiasing
+
+resetMatrix
+translate 72 0
+
+repeat_block draw_column
+
+resetMatrix
+scale 1.25 1.25
+translate 144 0
+
+repeat_block draw_border
+
+resetMatrix
+scale 1.25 1.25
+translate 246 0
+rotate 30
+
+repeat_block draw_border
+
+setRenderHint SmoothPixmapTransform
+
+resetMatrix
+scale 1.25 1.25
+translate 144 120
+
+repeat_block draw_border
+
+resetMatrix
+scale 1.25 1.25
+translate 246 120
+rotate 30
+
+repeat_block draw_border
+
+resetMatrix
+translate 215 260
+scale 3.55 3.55
+rotate 30
+
+repeat_block draw_border
+
+resetMatrix
+setRenderHint SmoothPixmapTransform off
+setRenderHint Antialiasing off
+
+translate 480 627
+rotate 180
+repeat_block draw_column
+
+resetMatrix
+setRenderHint Antialiasing
+
+translate 552 627
+rotate 180
+repeat_block draw_column
+
+resetMatrix
+setRenderHint Antialiasing off
+
+translate 200.1 520.1
+
+begin_block one_pixel_border
+drawImage borderimage 0 0 16 16 0 0 16 16
+drawImage borderimage 16 0 64 16 16 0 1 1
+drawImage borderimage 80 0 16 16 48 0 16 16
+
+drawImage borderimage 0 16 16 64 16 0 1 1
+drawImage borderimage 80 16 16 64 16 0 1 1
+
+drawImage borderimage 0 80 16 16 0 48 16 16
+drawImage borderimage 16 80 64 16 16 0 1 1
+drawImage borderimage 80 80 16 16 48 48 16 16
+end_block one_pixel_border
+
+resetMatrix
+
+translate 205.1 626.1
+scale 0.4 0.4
+
+repeat_block one_pixel_border
+
+resetMatrix
+
+translate 255.1 624.1
+scale 0.4 0.4
+rotate 10
+
+repeat_block one_pixel_border
+
+resetMatrix
+
+setPen red
+
+drawRect 0 0 70 680
+drawText 10 670 "aa off"
+
+drawRect 72 0 70 680
+drawText 80 670 "aa on"
+
+drawRect 409 0 70 680
+drawText 419 650 "rot 180"
+drawText 419 670 "aa off"
+
+drawRect 481 0 70 680
+drawText 491 650 "rot 180"
+drawText 491 670 "aa on"
+
+drawRect 164 0 224 124
+drawText 174 114 "smoothpixmaptransform off"
+
+drawRect 164 128 224 134
+drawText 174 252 "smoothpixmaptransform on"
+
+drawRect 200 520 97 188
+drawText 210 698 "1x1 edges"
diff --git a/tests/arthur/data/qps/borderimage_qps.png b/tests/arthur/data/qps/borderimage_qps.png
new file mode 100644
index 0000000..ed51d5f
--- /dev/null
+++ b/tests/arthur/data/qps/borderimage_qps.png
Binary files differ
diff --git a/tests/auto/auto.pro b/tests/auto/auto.pro
index 41c73a3..60e6657 100644
--- a/tests/auto/auto.pro
+++ b/tests/auto/auto.pro
@@ -407,8 +407,7 @@ SUBDIRS += checkxmlfiles \
xmlpatternsdiagnosticsts \
xmlpatternsview \
xmlpatternsxqts \
- xmlpatternsxslts \
- xmlpatterns
+ xmlpatternsxslts
xmlpatternsdiagnosticsts.depends = xmlpatternsxqts
xmlpatternsview.depends = xmlpatternsxqts
diff --git a/tests/auto/bic/tst_bic.cpp b/tests/auto/bic/tst_bic.cpp
index e0f42f0..181c275 100644
--- a/tests/auto/bic/tst_bic.cpp
+++ b/tests/auto/bic/tst_bic.cpp
@@ -195,29 +195,10 @@ void tst_Bic::sizesAndVTables_data()
&& archFileName420.isEmpty())
QSKIP("No reference files found for this platform", SkipAll);
-#if QT_VERSION >= 0x040100
bool isPatchRelease400 = false;
-#else
- bool isPatchRelease400 = true;
-#endif
-
-#if QT_VERSION >= 0x040200
bool isPatchRelease410 = false;
-#else
- bool isPatchRelease410 = true;
-#endif
-
-#if QT_VERSION >= 0x040300
bool isPatchRelease420 = false;
-#else
- bool isPatchRelease420 = true;
-#endif
-
-#if QT_VERSION >= 0x040400
bool isPatchRelease430 = false;
-#else
- bool isPatchRelease430 = true;
-#endif
QTest::addColumn<QString>("oldLib");
QTest::addColumn<bool>("isPatchRelease");
diff --git a/tests/auto/collections/tst_collections.cpp b/tests/auto/collections/tst_collections.cpp
index 6d3d1df..c05d8da 100644
--- a/tests/auto/collections/tst_collections.cpp
+++ b/tests/auto/collections/tst_collections.cpp
@@ -161,9 +161,7 @@ private slots:
void q_init();
void pointersize();
void containerInstantiation();
-#if QT_VERSION >= 0x040101
void qtimerList();
-#endif
void containerTypedefs();
void forwardDeclared();
};
@@ -1907,11 +1905,9 @@ void tst_Collections::map()
i.toFront();
while(i.hasNext()) {
sum += i.next().value();
-#if QT_VERSION >= 0x040100
i.setValue(10);
i.value() += 22;
QVERIFY(i.value() == 32);
-#endif
}
QVERIFY(sum == 11);
}
@@ -2870,10 +2866,8 @@ void tst_Collections::javaStyleIterators()
while (i.hasPrevious()) {
i.previous();
QVERIFY(i.value().isEmpty());
-#if QT_VERSION >= 0x040100
i.value() = "x";
QCOMPARE(i.value(), QString("x"));
-#endif
}
}
@@ -3355,7 +3349,6 @@ void tst_Collections::containerInstantiation()
instantiateRandomAccess<Stack, EqualsComparable>();
}
-#if QT_VERSION >= 0x040101
void tst_Collections::qtimerList()
{
QList<double> foo;
@@ -3378,7 +3371,6 @@ void tst_Collections::qtimerList()
}
QFAIL("QList preallocates too much memory");
}
-#endif
template <typename Container>
void testContainerTypedefs(Container container)
@@ -3387,11 +3379,11 @@ void testContainerTypedefs(Container container)
{ typedef typename Container::value_type Foo; }
{ typedef typename Container::iterator Foo; }
{ typedef typename Container::const_iterator Foo; }
- { typedef typename Container::reference Foo; }
- { typedef typename Container::const_reference Foo; }
- { typedef typename Container::pointer Foo; }
- { typedef typename Container::difference_type Foo; }
- { typedef typename Container::size_type Foo; }
+ { typedef typename Container::reference Foo; }
+ { typedef typename Container::const_reference Foo; }
+ { typedef typename Container::pointer Foo; }
+ { typedef typename Container::difference_type Foo; }
+ { typedef typename Container::size_type Foo; }
}
template <typename Container>
@@ -3403,11 +3395,11 @@ void testPairAssociativeContainerTypedefs(Container container)
// { typedef typename Container::value_type Foo; }
// { typedef typename Container::const_iterator Foo; }
// { typedef typename Container::reference Foo; }
-// { typedef typename Container::const_reference Foo; }
-// { typedef typename Container::pointer Foo; }
+// { typedef typename Container::const_reference Foo; }
+// { typedef typename Container::pointer Foo; }
- { typedef typename Container::difference_type Foo; }
- { typedef typename Container::size_type Foo; }
+ { typedef typename Container::difference_type Foo; }
+ { typedef typename Container::size_type Foo; }
{ typedef typename Container::iterator Foo; }
{ typedef typename Container::key_type Foo; }
{ typedef typename Container::mapped_type Foo; }
@@ -3422,11 +3414,11 @@ void testSetContainerTypedefs(Container container)
Q_UNUSED(container)
{ typedef typename Container::iterator Foo; }
{ typedef typename Container::const_iterator Foo; }
- { typedef typename Container::reference Foo; }
- { typedef typename Container::const_reference Foo; }
- { typedef typename Container::pointer Foo; }
- { typedef typename Container::difference_type Foo; }
- { typedef typename Container::size_type Foo; }
+ { typedef typename Container::reference Foo; }
+ { typedef typename Container::const_reference Foo; }
+ { typedef typename Container::pointer Foo; }
+ { typedef typename Container::difference_type Foo; }
+ { typedef typename Container::size_type Foo; }
{ typedef typename Container::key_type Foo; }
}
@@ -3450,7 +3442,7 @@ void tst_Collections::containerTypedefs()
}
#if defined(Q_CC_MSVC) && !defined(Q_CC_MSVC_NET)
-class Key1
+class Key1
{};
class T1
{};
diff --git a/tests/auto/compilerwarnings/tst_compilerwarnings.cpp b/tests/auto/compilerwarnings/tst_compilerwarnings.cpp
index 232af55..1f5f479 100644
--- a/tests/auto/compilerwarnings/tst_compilerwarnings.cpp
+++ b/tests/auto/compilerwarnings/tst_compilerwarnings.cpp
@@ -173,9 +173,7 @@ void tst_CompilerWarnings::warnings()
<< "-Wno-long-long" << "-Wshadow" << "-Wpacked" << "-Wunreachable-code"
<< "-Wundef" << "-Wchar-subscripts" << "-Wformat-nonliteral" << "-Wformat-security"
<< "-Wcast-align"
-#if QT_VERSION >= 0x040100
<< "-Wfloat-equal"
-#endif
<< "-o" << tmpFile
<< tmpSourceFile;
#elif defined(Q_CC_XLC)
diff --git a/tests/auto/macgui/tst_gui.cpp b/tests/auto/macgui/tst_gui.cpp
index b302f8b..641e596 100644
--- a/tests/auto/macgui/tst_gui.cpp
+++ b/tests/auto/macgui/tst_gui.cpp
@@ -69,8 +69,7 @@ private slots:
QPixmap grabWindowContents(QWidget * widget)
{
- const int titleBarHeight = widget->frameGeometry().height() - widget->height();
- return QPixmap::grabWindow(widget->winId(), 0, titleBarHeight, -1, widget->height());
+ return QPixmap::grabWindow(widget->winId());
}
/*
@@ -79,10 +78,6 @@ QPixmap grabWindowContents(QWidget * widget)
*/
void tst_gui::scrollbarPainting()
{
-#if defined (Q_WS_MAC) && defined (__i386__)
- QSKIP("This test fails on scruffy when run by the autotest system (but not when you run it manually).", SkipAll);
-#endif
-
ColorWidget colorWidget;
colorWidget.resize(400, 400);
diff --git a/tests/auto/mediaobject/tst_mediaobject.cpp b/tests/auto/mediaobject/tst_mediaobject.cpp
index 96589b7..1b113b2 100644
--- a/tests/auto/mediaobject/tst_mediaobject.cpp
+++ b/tests/auto/mediaobject/tst_mediaobject.cpp
@@ -349,6 +349,18 @@ void tst_MediaObject::_pausePlayback()
void tst_MediaObject::initTestCase()
{
QCoreApplication::setApplicationName("tst_MediaObject");
+ m_stateChangedSignalSpy = 0;
+ m_media = 0;
+
+#ifdef Q_OS_WINCE
+ QString pluginsPath = QLibraryInfo::location(QLibraryInfo::PluginsPath);
+#ifdef DEBUG
+ QVERIFY(QFile::exists(pluginsPath + "/phonon_backend/phonon_waveoutd4.dll") || QFile::exists(pluginsPath + "/phonon_backend/phonon_phonon_ds9d4.dll"));
+#else
+ QVERIFY(QFile::exists(pluginsPath + "/phonon_backend/phonon_waveout4.dll") || QFile::exists(pluginsPath + "/phonon_backend/phonon_phonon_ds94.dll"));
+#endif
+#endif
+
m_url = qgetenv("PHONON_TESTURL");
m_media = new MediaObject(this);
@@ -787,7 +799,7 @@ void tst_MediaObject::setMediaAndPlay()
QSignalSpy totalTimeChangedSignalSpy(m_media, SIGNAL(totalTimeChanged(qint64)));
QVERIFY(m_media->currentSource().type() != MediaSource::Invalid);
Phonon::State state = m_media->state();
- QVERIFY(state == Phonon::StoppedState || state == Phonon::PlayingState);
+ QVERIFY(state == Phonon::StoppedState || state == Phonon::PlayingState || Phonon::PausedState);
m_media->setCurrentSource(m_url);
// before calling play() we better make sure that if play() finishes very fast that we don't get
// called again
@@ -856,8 +868,10 @@ void tst_MediaObject::testPlayBeforeFinish()
void tst_MediaObject::cleanupTestCase()
{
- delete m_stateChangedSignalSpy;
- delete m_media;
+ if (m_stateChangedSignalSpy)
+ delete m_stateChangedSignalSpy;
+ if (m_media)
+ delete m_media;
#ifdef Q_OS_WINCE
QTest::qWait(200);
#endif
diff --git a/tests/auto/moc/forgotten-qinterface.h b/tests/auto/moc/forgotten-qinterface.h
index a11793b..370a3d0 100644
--- a/tests/auto/moc/forgotten-qinterface.h
+++ b/tests/auto/moc/forgotten-qinterface.h
@@ -39,6 +39,8 @@
**
****************************************************************************/
+#include <QObject>
+
struct MyInterface
{
virtual ~MyInterface() {}
diff --git a/tests/auto/moc/tst_moc.cpp b/tests/auto/moc/tst_moc.cpp
index 39f4f23..afb31f6 100644
--- a/tests/auto/moc/tst_moc.cpp
+++ b/tests/auto/moc/tst_moc.cpp
@@ -151,7 +151,6 @@ public slots:
Q_DECLARE_METATYPE(MyStruct)
Q_DECLARE_METATYPE(MyStruct*)
-#if QT_VERSION >= 0x040200
namespace myNS {
struct Points
{
@@ -161,7 +160,6 @@ namespace myNS {
}
Q_DECLARE_METATYPE(myNS::Points)
-#endif
class TestClassinfoWithEscapes: public QObject
{
@@ -195,10 +193,7 @@ class TestClass : public MyNamespace::TestSuperClass, public DONT_CONFUSE_MOC(My
public DONT_CONFUSE_MOC_EVEN_MORE(MyStruct2, dummy, ignored)
{
Q_OBJECT
-#if QT_VERSION >= 0x040101
Q_CLASSINFO("help", QT_TR_NOOP("Opening this will let you configure something"))
-#endif
-#if QT_VERSION >= 0x040102
Q_PROPERTY(short int shortIntProperty READ shortIntProperty)
Q_PROPERTY(unsigned short int unsignedShortIntProperty READ unsignedShortIntProperty)
Q_PROPERTY(signed short int signedShortIntProperty READ signedShortIntProperty)
@@ -206,10 +201,7 @@ class TestClass : public MyNamespace::TestSuperClass, public DONT_CONFUSE_MOC(My
Q_PROPERTY(unsigned long int unsignedLongIntProperty READ unsignedLongIntProperty)
Q_PROPERTY(signed long int signedLongIntProperty READ signedLongIntProperty)
Q_PROPERTY(long double longDoubleProperty READ longDoubleProperty)
-#endif
-#if QT_VERSION >= 0x040200
Q_PROPERTY(myNS::Points points READ points WRITE setPoints)
-#endif
Q_CLASSINFO("Multi"
"line",
@@ -294,9 +286,7 @@ private slots:
#ifndef NOLONGLONG
void slotWithULongLong(unsigned long long) {}
-#if QT_VERSION >= 0x040101
void slotWithULongLongP(unsigned long long*) {}
-#endif
void slotWithULong(unsigned long) {}
void slotWithLongLong(long long) {}
void slotWithLong(long) {}
@@ -304,9 +294,7 @@ private slots:
void slotWithColonColonType(::Int::Type) {}
-#if QT_VERSION >= 0x040101
TestClass &slotWithReferenceReturnType() { return *this; }
-#endif
#if (0 && 1) || 1
void expressionEvaluationShortcut1() {}
@@ -321,7 +309,6 @@ public slots:
void slotWithNamedArray(const double namedArray[3]) {}
void slotWithMultiArray(const double[3][4]) {}
-#if QT_VERSION >= 0x040102
short int shortIntProperty() { return 0; }
unsigned short int unsignedShortIntProperty() { return 0; }
signed short int signedShortIntProperty() { return 0; }
@@ -329,12 +316,9 @@ public slots:
unsigned long int unsignedLongIntProperty() { return 0; }
signed long int signedLongIntProperty() { return 0; }
long double longDoubleProperty() { return 0.0; }
-#endif
-#if QT_VERSION >= 0x040200
myNS::Points points() { return m_points; }
void setPoints(myNS::Points points) { m_points = points; }
-#endif
signals:
void signalWithArray(const double[3]);
@@ -384,10 +368,8 @@ public:
public slots:
void slotWithVoidStar(void *) {}
-#if QT_VERSION >= 0x040200
private:
myNS::Points m_points;
-#endif
private slots:
inline virtual void blub1() {}
@@ -466,6 +448,8 @@ public:
inline tst_Moc() {}
private slots:
+ void initTestCase();
+
void slotWithException() throw(MyStruct);
void dontStripNamespaces();
void oldStyleCasts();
@@ -519,8 +503,28 @@ private:
bool user2() { return false; };
bool user3() { return false; };
bool userFunction(){ return false; };
+
+private:
+ QString qtIncludePath;
};
+void tst_Moc::initTestCase()
+{
+#if defined(Q_OS_UNIX)
+ QProcess proc;
+ proc.start("qmake", QStringList() << "-query" << "QT_INSTALL_HEADERS");
+ QVERIFY(proc.waitForFinished());
+ QCOMPARE(proc.exitCode(), 0);
+ QByteArray output = proc.readAllStandardOutput();
+ QVERIFY(!output.isEmpty());
+ QCOMPARE(proc.readAllStandardError(), QByteArray());
+ qtIncludePath = QString::fromLocal8Bit(output).trimmed();
+ QFileInfo fi(qtIncludePath);
+ QVERIFY(fi.exists());
+ QVERIFY(fi.isDir());
+#endif
+}
+
void tst_Moc::slotWithException() throw(MyStruct)
{
// be happy
@@ -552,8 +556,6 @@ void tst_Moc::oldStyleCasts()
QSKIP("Not tested when cross-compiled", SkipAll);
#endif
#if defined(Q_OS_LINUX) && defined(Q_CC_GNU)
- QVERIFY(!qgetenv("QTDIR").isNull());
-
QProcess proc;
proc.start("moc", QStringList(srcify("/oldstyle-casts.h")));
QVERIFY(proc.waitForFinished());
@@ -564,7 +566,7 @@ void tst_Moc::oldStyleCasts()
QStringList args;
args << "-c" << "-x" << "c++" << "-Wold-style-cast" << "-I" << "."
- << "-I" << qgetenv("QTDIR") + "/include" << "-o" << "/dev/null" << "-";
+ << "-I" << qtIncludePath << "-o" << "/dev/null" << "-";
proc.start("gcc", args);
QVERIFY(proc.waitForStarted());
proc.write(mocOut);
@@ -584,8 +586,6 @@ void tst_Moc::warnOnExtraSignalSlotQualifiaction()
QSKIP("Not tested when cross-compiled", SkipAll);
#endif
#if defined(Q_OS_LINUX) && defined(Q_CC_GNU)
- QVERIFY(!qgetenv("QTDIR").isNull());
-
QProcess proc;
proc.start("moc", QStringList(srcify("extraqualification.h")));
QVERIFY(proc.waitForFinished());
@@ -610,10 +610,8 @@ void tst_Moc::uLongLong()
QVERIFY(idx != -1);
idx = mobj->indexOfSlot("slotWithULongLong(unsigned long long)");
QVERIFY(idx != -1);
-#if QT_VERSION >= 0x040101
idx = mobj->indexOfSlot("slotWithULongLongP(unsigned long long*)");
QVERIFY(idx != -1);
-#endif
idx = mobj->indexOfSlot("slotWithLong(long)");
QVERIFY(idx != -1);
@@ -630,8 +628,6 @@ void tst_Moc::inputFileNameWithDotsButNoExtension()
QSKIP("Not tested when cross-compiled", SkipAll);
#endif
#if defined(Q_OS_LINUX) && defined(Q_CC_GNU)
- QVERIFY(!qgetenv("QTDIR").isNull());
-
QProcess proc;
proc.setWorkingDirectory(QString(SRCDIR) + "/task71021");
proc.start("moc", QStringList("../Header"));
@@ -643,7 +639,7 @@ void tst_Moc::inputFileNameWithDotsButNoExtension()
QStringList args;
args << "-c" << "-x" << "c++" << "-I" << ".."
- << "-I" << qgetenv("QTDIR") + "/include" << "-o" << "/dev/null" << "-";
+ << "-I" << qtIncludePath << "-o" << "/dev/null" << "-";
proc.start("gcc", args);
QVERIFY(proc.waitForStarted());
proc.write(mocOut);
@@ -691,22 +687,14 @@ void tst_Moc::supportConstSignals()
void tst_Moc::task87883()
{
-#if QT_VERSION >= 0x040101
QVERIFY(Task87883::staticMetaObject.className());
-#else
- QSKIP("Fixed in >= 4.1.1", SkipAll);
-#endif
}
#include "c-comments.h"
void tst_Moc::multilineComments()
{
-#if QT_VERSION >= 0x040101
QVERIFY(IfdefedClass::staticMetaObject.className());
-#else
- QSKIP("Fixed in >= 4.1.1", SkipAll);
-#endif
}
void tst_Moc::classinfoWithEscapes()
@@ -848,10 +836,11 @@ void tst_Moc::warnOnMultipleInheritance()
QSKIP("Not tested when cross-compiled", SkipAll);
#endif
#if defined(Q_OS_LINUX) && defined(Q_CC_GNU)
- QVERIFY(!qgetenv("QTDIR").isNull());
-
QProcess proc;
- proc.start("moc", QStringList(srcify("warn-on-multiple-qobject-subclasses.h")));
+ QStringList args;
+ args << "-I" << qtIncludePath + "/QtGui"
+ << srcify("warn-on-multiple-qobject-subclasses.h");
+ proc.start("moc", args);
QVERIFY(proc.waitForFinished());
QCOMPARE(proc.exitCode(), 0);
QByteArray mocOut = proc.readAllStandardOutput();
@@ -870,17 +859,18 @@ void tst_Moc::forgottenQInterface()
QSKIP("Not tested when cross-compiled", SkipAll);
#endif
#if defined(Q_OS_LINUX) && defined(Q_CC_GNU)
- QVERIFY(!qgetenv("QTDIR").isNull());
-
QProcess proc;
- proc.start("moc", QStringList(srcify("forgotten-qinterface.h")));
+ QStringList args;
+ args << "-I" << qtIncludePath + "/QtCore"
+ << srcify("forgotten-qinterface.h");
+ proc.start("moc", args);
QVERIFY(proc.waitForFinished());
QCOMPARE(proc.exitCode(), 0);
QByteArray mocOut = proc.readAllStandardOutput();
QVERIFY(!mocOut.isEmpty());
QString mocWarning = QString::fromLocal8Bit(proc.readAllStandardError());
QCOMPARE(mocWarning, QString(SRCDIR) +
- QString("/forgotten-qinterface.h:53: Warning: Class Test implements the interface MyInterface but does not list it in Q_INTERFACES. qobject_cast to MyInterface will not work!\n"));
+ QString("/forgotten-qinterface.h:55: Warning: Class Test implements the interface MyInterface but does not list it in Q_INTERFACES. qobject_cast to MyInterface will not work!\n"));
#else
QSKIP("Only tested on linux/gcc", SkipAll);
#endif
@@ -951,8 +941,6 @@ void tst_Moc::frameworkSearchPath()
QSKIP("Not tested when cross-compiled", SkipAll);
#endif
#if defined(Q_OS_UNIX)
- QVERIFY(!qgetenv("QTDIR").isNull());
-
QStringList args;
args << "-F" << srcify(".")
<< srcify("interface-from-framework.h")
@@ -991,8 +979,6 @@ void tst_Moc::templateGtGt()
QSKIP("Not tested when cross-compiled", SkipAll);
#endif
#if defined(Q_OS_LINUX) && defined(Q_CC_GNU)
- QVERIFY(!qgetenv("QTDIR").isNull());
-
QProcess proc;
proc.start("moc", QStringList(srcify("template-gtgt.h")));
QVERIFY(proc.waitForFinished());
@@ -1009,8 +995,6 @@ void tst_Moc::templateGtGt()
void tst_Moc::defineMacroViaCmdline()
{
#if defined(Q_OS_LINUX) && defined(Q_CC_GNU)
- QVERIFY(!qgetenv("QTDIR").isNull());
-
QProcess proc;
QStringList args;
@@ -1099,8 +1083,6 @@ void tst_Moc::warnOnPropertyWithoutREAD()
QSKIP("Not tested when cross-compiled", SkipAll);
#endif
#if defined(Q_OS_LINUX) && defined(Q_CC_GNU)
- QVERIFY(!qgetenv("QTDIR").isNull());
-
QProcess proc;
proc.start("moc", QStringList(srcify("warn-on-property-without-read.h")));
QVERIFY(proc.waitForFinished());
diff --git a/tests/auto/network-settings.h b/tests/auto/network-settings.h
index b2a449a..5a2f9c3 100644
--- a/tests/auto/network-settings.h
+++ b/tests/auto/network-settings.h
@@ -39,6 +39,7 @@
**
****************************************************************************/
#include <QString>
+#include <QtNetwork/QHostInfo>
class QtNetworkSettings
{
@@ -63,4 +64,12 @@ public:
{
return "qt-test-server.wildcard.dev." + serverDomainName();
}
+
+#ifdef QT_NETWORK_LIB
+ static QHostAddress serverIP()
+ {
+ return QHostInfo::fromName(serverName()).addresses().first();
+ }
+#endif
+
};
diff --git a/tests/auto/q3accel/q3accel.pro b/tests/auto/q3accel/q3accel.pro
index 002033f..61d4f38 100644
--- a/tests/auto/q3accel/q3accel.pro
+++ b/tests/auto/q3accel/q3accel.pro
@@ -3,6 +3,7 @@ HEADERS +=
SOURCES += tst_q3accel.cpp
QT += qt3support
+requires(contains(QT_CONFIG,qt3support))
diff --git a/tests/auto/q3accel/tst_q3accel.cpp b/tests/auto/q3accel/tst_q3accel.cpp
index c2ba9dd..7b1c8ae 100644
--- a/tests/auto/q3accel/tst_q3accel.cpp
+++ b/tests/auto/q3accel/tst_q3accel.cpp
@@ -142,10 +142,8 @@ void tst_Q3Accel::initTestCase()
edit->setObjectName("test_edit");
connect( accel1, SIGNAL(activated(int)), this, SLOT(accelTrig1()) );
connect( accel2, SIGNAL(activated(int)), this, SLOT(accelTrig2()) );
-#if QT_VERSION >= 0x30100
connect( accel1, SIGNAL(activatedAmbiguously(int)), this, SLOT(ambig1()) );
connect( accel2, SIGNAL(activatedAmbiguously(int)), this, SLOT(ambig2()) );
-#endif
mainW->setCentralWidget( edit );
connect( mainW->statusBar(), SIGNAL(messageChanged(const QString&)),
this, SLOT(statusMessage(const QString&)) );
@@ -160,11 +158,9 @@ int tst_Q3Accel::toButtons( int key )
result |= Qt::ShiftModifier;
if ( key & Qt::CTRL )
result |= Qt::ControlModifier;
-#if QT_VERSION >= 0x30100
- if ( key & Qt::META )
+ if ( key & Qt::META )
result |= Qt::MetaModifier;
-#endif
- if ( key & Qt::ALT )
+ if ( key & Qt::ALT )
result |= Qt::AltModifier;
return result;
}
@@ -185,7 +181,6 @@ void tst_Q3Accel::defElements()
QTest::addColumn<int>("theResult");
}
-#if QT_VERSION >= 0x30100
void tst_Q3Accel::number()
{
testElement();
@@ -369,34 +364,17 @@ void tst_Q3Accel::number_data()
int(Qt::Key_Aring)
UNICODE_ACCEL + int(Qt::Key_K)
*/
- /* The #ifdefs for Qt4 are there, because accelerators are always case insensitive in Qt4.
- It was not wise to differentiate between ASCII (where accelerators where case insensitive) and all other
- unicode chars in 3.x.
- */
QTest::newRow( "N06 - sA1" ) << int(SetupAccel) << int(Accel1) << QString("")
<< int(Qt::Key_aring) << 0 << 0 << 0 << 0 << 0 << 0 << 0 << int(NoResult);
-#if QT_VERSION < 0x040000
- QTest::newRow( "N07 - sA2" ) << int(SetupAccel) << int(Accel2) << QString("")
- << int(Qt::Key_Aring) << 0 << 0 << 0 << 0 << 0 << 0 << 0 << int(NoResult);
-#endif
QTest::newRow( "N08 - sA2" ) << int(SetupAccel) << int(Accel1) << QString("")
<< int(Qt::UNICODE_ACCEL) + int(Qt::Key_K) << 0 << 0 << 0 << 0 << 0 << 0 << 0 << int(NoResult);
QTest::newRow( "N:int(Qt::Key_aring)" ) << int(TestAccel) << int(NoWidget) << QString("")
<< int(Qt::Key_aring) << 0 << 0 << 0 << 0 << 0 << 0 << 0 << int(Accel1Triggered);
-#if QT_VERSION < 0x040000
- QTest::newRow( "N:int(Qt::Key_Aring)" ) << int(TestAccel) << int(NoWidget) << QString("")
- << int(Qt::Key_Aring) << 0 << 0 << 0 << 0 << 0 << 0 << 0 << int(Accel2Triggered);
-#endif
QTest::newRow( "N:int(Qt::Key_aring) - Text Form" ) << int(TestAccel) << int(NoWidget) << QString("")
<< int(Qt::Key_unknown) << 0xE5 << 0 << 0 << 0 << 0 << 0 << 0 << int(Accel1Triggered);
-#if QT_VERSION < 0x040000
- QTest::newRow( "N:int(Qt::Key_Aring) - Text Form" ) << int(TestAccel) << int(NoWidget) << QString("")
- << int(Qt::Key_unknown) << 0xC5 << 0 << 0 << 0 << 0 << 0 << 0 << int(Accel2Triggered);
-#else
QTest::newRow( "N:int(Qt::Key_Aring) - Text Form" ) << int(TestAccel) << int(NoWidget) << QString("")
<< int(Qt::Key_unknown) << 0xC5 << 0 << 0 << 0 << 0 << 0 << 0 << int(Accel1Triggered);
-#endif
QTest::newRow( "N:UNICODE_ACCEL + int(Qt::Key_K)" ) << int(TestAccel) << int(NoWidget) << QString("")
<< int(Qt::UNICODE_ACCEL) + int(Qt::Key_K) << int('k') << 0 << 0 << 0 << 0 << 0 << 0 << int(Accel1Triggered);
@@ -615,28 +593,15 @@ void tst_Q3Accel::text_data()
/* see comments above on the #ifdef'ery */
QTest::newRow( "T06 - sA1" ) << int(SetupAccel) << int(Accel1) << QString("\x0E5")
<< 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << int(NoResult);
-#if QT_VERSION < 0x040000
- QTest::newRow( "T07 - sA2" ) << int(SetupAccel) << int(Accel2) << QString("\x0C5")
- << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << int(NoResult);
-#endif
QTest::newRow( "T08 - sA2" ) << int(SetupAccel) << int(Accel1) << QString("K")
<< 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << int(NoResult);
QTest::newRow( "T:int(Qt::Key_aring)" ) << int(TestAccel) << int(NoWidget) << QString("")
<< int(Qt::Key_aring) << 0 << 0 << 0 << 0 << 0 << 0 << 0 << int(Accel1Triggered);
-#if QT_VERSION < 0x040000
- QTest::newRow( "T:int(Qt::Key_Aring)" ) << int(TestAccel) << int(NoWidget) << QString("")
- << int(Qt::Key_Aring) << 0 << 0 << 0 << 0 << 0 << 0 << 0 << int(Accel2Triggered);
-#endif
QTest::newRow( "T:int(Qt::Key_aring) - Text Form" ) << int(TestAccel) << int(NoWidget) << QString("")
<< int(Qt::Key_unknown) << 0xE5 << 0 << 0 << 0 << 0 << 0 << 0 << int(Accel1Triggered);
-#if QT_VERSION < 0x040000
- QTest::newRow( "T:int(Qt::Key_Aring) - Text Form" ) << int(TestAccel) << int(NoWidget) << QString("")
- << int(Qt::Key_unknown) << 0xC5 << 0 << 0 << 0 << 0 << 0 << 0 << int(Accel2Triggered);
-#else
QTest::newRow( "T:int(Qt::Key_Aring) - Text Form" ) << int(TestAccel) << int(NoWidget) << QString("")
<< int(Qt::Key_unknown) << 0xC5 << 0 << 0 << 0 << 0 << 0 << 0 << int(Accel1Triggered);
-#endif
QTest::newRow( "T:UNICODE_ACCEL + int(Qt::Key_K)" ) << int(TestAccel) << int(NoWidget) << QString("")
<< int(Qt::UNICODE_ACCEL) + int(Qt::Key_K) << int('k') << 0 << 0 << 0 << 0 << 0 << 0 << int(Accel1Triggered);
@@ -986,11 +951,7 @@ void tst_Q3Accel::sendKeyEvents( int k1, QChar c1, int k2, QChar c2, int k3, QCh
k2 &= ~Qt::MODIFIER_MASK;
k3 &= ~Qt::MODIFIER_MASK;
k4 &= ~Qt::MODIFIER_MASK;
-#if QT_VERSION < 0x040000
- QKeyEvent ke( QEvent::Accel, k1, k1, b1, QString(c1) );
-#else
QKeyEvent ke( QEvent::Accel, k1, (Qt::KeyboardModifiers)b1, QString(c1) );
-#endif
QApplication::sendEvent( mainW, &ke );
if ( k2 ) {
QKeyEvent ke( QEvent::Accel, k2, k2, b2, QString(c2) );
@@ -1006,48 +967,5 @@ void tst_Q3Accel::sendKeyEvents( int k1, QChar c1, int k2, QChar c2, int k3, QCh
}
}
-// ----------------------------------------------------------------------------
-// ----------------------------------------------------------------------------
-
-#else // For Qt < 3.1
-void tst_Q3Accel::number_data()
-{
- QTest::addColumn<int>("bogus");
- QTest::newRow( "b01" ) << 0;
-}
-
-void tst_Q3Accel::number()
-{
- QSKIP( "Accel test for Qt < 3.1 not implemented", SkipAll);
-}
-
-void tst_Q3Accel::text_data()
-{
- QTest::addColumn<int>("bogus");
- QTest::newRow( "b02" ) << 0;
-}
-
-void tst_Q3Accel::text()
-{
- QSKIP( "Accel test for Qt < 3.1 not implemented", SkipAll);
-}
-void tst_Q3Accel::disabledItems()
-{
- QSKIP( "Accel test for Qt < 3.1 not implemented", SkipAll);
-}
-void tst_Q3Accel::ambiguousItems()
-{
- QSKIP( "Amibguous signals non-existant in Qt < 3.1", SkipAll);
-}
-void tst_Q3Accel::unicodeCompare()
-{
- QSKIP( "Accel test for Qt < 3.1 not implemented", SkipAll);
-}
-void tst_Q3Accel::unicodeCompose()
-{
- QSKIP( "Unicode composing non-existant in Qt < 3.1", SkipAll);
-}
-#endif // QT_VERSION >= 0x30100
-
QTEST_MAIN(tst_Q3Accel)
#include "tst_q3accel.moc"
diff --git a/tests/auto/q3action/q3action.pro b/tests/auto/q3action/q3action.pro
index ee5d780..c85a158 100644
--- a/tests/auto/q3action/q3action.pro
+++ b/tests/auto/q3action/q3action.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
QT += qt3support
+requires(contains(QT_CONFIG,qt3support))
SOURCES += tst_q3action.cpp
diff --git a/tests/auto/q3actiongroup/q3actiongroup.pro b/tests/auto/q3actiongroup/q3actiongroup.pro
index bfe1f68..139e48c 100644
--- a/tests/auto/q3actiongroup/q3actiongroup.pro
+++ b/tests/auto/q3actiongroup/q3actiongroup.pro
@@ -1,5 +1,6 @@
load(qttest_p4)
QT += qt3support
+requires(contains(QT_CONFIG,qt3support))
SOURCES += tst_q3actiongroup.cpp
diff --git a/tests/auto/q3buttongroup/clickLock/clickLock.pro b/tests/auto/q3buttongroup/clickLock/clickLock.pro
index 68f5ed2..a1aa105 100644
--- a/tests/auto/q3buttongroup/clickLock/clickLock.pro
+++ b/tests/auto/q3buttongroup/clickLock/clickLock.pro
@@ -3,7 +3,8 @@ TEMPLATE = app
win32:TARGET = ../clickLock
!win32:TARGET = clickLock
-contains(QT_CONFIG, qt3support): QT += qt3support
+QT += qt3support
+requires(contains(QT_CONFIG,qt3support))
DEPENDPATH += .
INCLUDEPATH += .
CONFIG -= app_bundle
diff --git a/tests/auto/q3buttongroup/tst_q3buttongroup.pro b/tests/auto/q3buttongroup/tst_q3buttongroup.pro
index 8ec25d0..9f1f090 100644
--- a/tests/auto/q3buttongroup/tst_q3buttongroup.pro
+++ b/tests/auto/q3buttongroup/tst_q3buttongroup.pro
@@ -1,5 +1,6 @@
load(qttest_p4)
QT += qt3support
+requires(contains(QT_CONFIG,qt3support))
# Input
SOURCES += tst_q3buttongroup.cpp
diff --git a/tests/auto/q3canvas/q3canvas.pro b/tests/auto/q3canvas/q3canvas.pro
index cac538d..70e9b88 100644
--- a/tests/auto/q3canvas/q3canvas.pro
+++ b/tests/auto/q3canvas/q3canvas.pro
@@ -3,5 +3,6 @@ SOURCES += tst_q3canvas.cpp
QT += qt3support
+requires(contains(QT_CONFIG,qt3support))
diff --git a/tests/auto/q3checklistitem/q3checklistitem.pro b/tests/auto/q3checklistitem/q3checklistitem.pro
index 77d96e8..9ae9c55 100644
--- a/tests/auto/q3checklistitem/q3checklistitem.pro
+++ b/tests/auto/q3checklistitem/q3checklistitem.pro
@@ -3,5 +3,6 @@ SOURCES += tst_q3checklistitem.cpp
QT += qt3support
+requires(contains(QT_CONFIG,qt3support))
diff --git a/tests/auto/q3combobox/q3combobox.pro b/tests/auto/q3combobox/q3combobox.pro
index 2391f6c..7dcde2b 100644
--- a/tests/auto/q3combobox/q3combobox.pro
+++ b/tests/auto/q3combobox/q3combobox.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_q3combobox.cpp
QT += qt3support
+requires(contains(QT_CONFIG,qt3support))
diff --git a/tests/auto/q3cstring/q3cstring.pro b/tests/auto/q3cstring/q3cstring.pro
index 78077b8..1171093 100644
--- a/tests/auto/q3cstring/q3cstring.pro
+++ b/tests/auto/q3cstring/q3cstring.pro
@@ -3,5 +3,6 @@ SOURCES += tst_q3cstring.cpp
QT += qt3support
+requires(contains(QT_CONFIG,qt3support))
diff --git a/tests/auto/q3cstring/tst_q3cstring.cpp b/tests/auto/q3cstring/tst_q3cstring.cpp
index f9bdf6b..60a66a9 100644
--- a/tests/auto/q3cstring/tst_q3cstring.cpp
+++ b/tests/auto/q3cstring/tst_q3cstring.cpp
@@ -69,8 +69,6 @@ private slots:
void replace_uint_uint();
void replace_string_data();
void replace_string();
- void replace_regexp_data();
- void replace_regexp();
void remove_uint_uint_data();
void remove_uint_uint();
void prepend();
@@ -132,11 +130,6 @@ void tst_Q3CString::remove_string_data()
replace_string_data();
}
-void tst_Q3CString::remove_regexp_data()
-{
- replace_regexp_data();
-}
-
void tst_Q3CString::length_data()
{
QTest::addColumn<Q3CString>("s1");
@@ -202,9 +195,6 @@ void tst_Q3CString::replace_string_data()
QTest::newRow( "rem13" ) << Q3CString("") << Q3CString("A") << Q3CString(0) << Q3CString("");
QTest::newRow( "rem14" ) << Q3CString(0) << Q3CString("A") << Q3CString("") << Q3CString(0);
QTest::newRow( "rem15" ) << Q3CString(0) << Q3CString("A") << Q3CString(0) << Q3CString(0);
-#if QT_VERSION < 0x040000
- QTest::newRow( "rem16" ) << Q3CString(0) << Q3CString("") << Q3CString("A") << Q3CString(0);
-#endif
QTest::newRow( "rem17" ) << Q3CString(0) << Q3CString("") << Q3CString("") << Q3CString(0);
// ### how should the one below behave in Q3CString????
// QTest::newRow( "rem18" ) << Q3CString("") << Q3CString(0) << Q3CString("A") << Q3CString("A");
@@ -216,7 +206,7 @@ void tst_Q3CString::replace_string_data()
QTest::newRow( "rep03" ) << Q3CString("") << Q3CString("") << Q3CString("X") << Q3CString("X");
}
-void tst_Q3CString::replace_regexp_data()
+void tst_Q3CString::remove_regexp_data()
{
QTest::addColumn<Q3CString>("string");
QTest::addColumn<Q3CString>("regexp");
@@ -224,20 +214,16 @@ void tst_Q3CString::replace_regexp_data()
QTest::addColumn<Q3CString>("result");
QTest::newRow( "rem00" ) << Q3CString("alpha") << Q3CString("a+") << Q3CString("") << Q3CString("lph");
-#if QT_VERSION >= 0x030100
QTest::newRow( "rem01" ) << Q3CString("banana") << Q3CString("^.a") << Q3CString("") << Q3CString("nana");
-#endif
QTest::newRow( "rem02" ) << Q3CString("") << Q3CString("^.a") << Q3CString("") << Q3CString("");
QTest::newRow( "rem03" ) << Q3CString("") << Q3CString("^.a") << Q3CString(0) << Q3CString("");
QTest::newRow( "rem04" ) << Q3CString(0) << Q3CString("^.a") << Q3CString("") << Q3CString(0);
QTest::newRow( "rem05" ) << Q3CString(0) << Q3CString("^.a") << Q3CString(0) << Q3CString(0);
-#if QT_VERSION >= 0x030100
QTest::newRow( "rep00" ) << Q3CString("A <i>bon mot</i>.") << Q3CString("<i>([^<]*)</i>") << Q3CString("\\emph{\\1}") << Q3CString("A \\emph{bon mot}.");
QTest::newRow( "rep01" ) << Q3CString("banana") << Q3CString("^.a()") << Q3CString("\\1") << Q3CString("nana");
QTest::newRow( "rep02" ) << Q3CString("banana") << Q3CString("(ba)") << Q3CString("\\1X\\1") << Q3CString("baXbanana");
QTest::newRow( "rep03" ) << Q3CString("banana") << Q3CString("(ba)(na)na") << Q3CString("\\2X\\1") << Q3CString("naXba");
-#endif
}
void tst_Q3CString::length()
@@ -364,11 +350,7 @@ void tst_Q3CString::acc_01()
QCOMPARE('X'+a,(Q3CString)"XABC");
a = (const char*)0;
QVERIFY(a.isNull());
-#if QT_VERSION < 0x040000
- QVERIFY((const char*)a==0);
-#else
QVERIFY(*((const char *)a) == 0);
-#endif
{
QFile f("COMPARE.txt");
@@ -420,11 +402,7 @@ void tst_Q3CString::constructor()
QCOMPARE(a,ca);
QVERIFY(a.isNull());
-#if QT_VERSION < 0x040000
- QVERIFY(a != (Q3CString)"");
-#else
QVERIFY(a == Q3CString(""));
-#endif
QCOMPARE(b,cb);
QCOMPARE(c,cc);
QCOMPARE(d,(Q3CString)"String D");
@@ -509,18 +487,6 @@ void tst_Q3CString::find()
//QCOMPARE(a.find('G',-1),14); // -ve does what? Parameter should be uint?
//QCOMPARE(a.find('G',-2),11); // -ve does what? Parameter should be uint?
QCOMPARE(a.find('f'),10);
-#if QT_VERSION < 0x040000
- // case sensitive find has been removed in 4.0
- QCOMPARE(a.find('f',0,FALSE),5);
- QCOMPARE(a.find('g',0,TRUE),-1);
- QCOMPARE(a.find("fgh",0,FALSE),5);
- QCOMPARE(a.find("fgh",0,TRUE),-1);
- QCOMPARE(a.find("EFG",5,TRUE),12);
- QCOMPARE(a.find("EFG",5,FALSE),9);
- QCOMPARE(a.find("EFG",4,TRUE),4);
- QCOMPARE(a.find("EfG",4,FALSE),4);
- QCOMPARE(a.find("EfG",4,TRUE),9);
-#endif
// QCOMPARE(a.find("efg",-1,FALSE),12); // -ve does what? Parameter should be uint?
// QCOMPARE(a.find("efg",-2,FALSE),12); // -ve does what? Parameter should be uint?
// QCOMPARE(a.find("efg",-3,FALSE),12); // -ve does what? Parameter should be uint?
@@ -544,14 +510,6 @@ void tst_Q3CString::findRev()
QCOMPARE(a.findRev('B'),1);
QCOMPARE(a.findRev('B',1),1);
QCOMPARE(a.findRev('B',0),-1);
-#if QT_VERSION < 0x040000
- QCOMPARE(a.findRev("efg",99,FALSE),-1);
-// QCOMPARE(a.findRev("efg",15,FALSE),-1);
- QCOMPARE(a.findRev("efg",16,FALSE),-1);
- QCOMPARE(a.findRev("efg",14,FALSE),12);
- QCOMPARE(a.findRev("efg",12,FALSE),12);
- QCOMPARE(a.findRev("efg",11,FALSE),9);
-#endif
// QCOMPARE(a.findRev(QRegExp("[EFG][EFG]"),14),13);
// QCOMPARE(a.findRev(QRegExp("[EFG][EFG]"),11),11);
}
@@ -560,15 +518,6 @@ void tst_Q3CString::contains()
{
Q3CString a;
a="ABCDEFGHIEfGEFG"; // 15 chars
-#if QT_VERSION < 0x040000
- QCOMPARE(a.contains('A'),1);
- QCOMPARE(a.contains('Z'),0);
- QCOMPARE(a.contains('E'),3);
- QCOMPARE(a.contains('F'),2);
- QCOMPARE(a.contains('F',FALSE),3);
- QCOMPARE(a.contains("FG"),2);
- QCOMPARE(a.contains("FG",FALSE),3);
-#else
QVERIFY(a.contains('A'));
QVERIFY(!a.contains('Z'));
QVERIFY(a.contains('E'));
@@ -579,7 +528,6 @@ void tst_Q3CString::contains()
QCOMPARE(a.count('E'),3);
QCOMPARE(a.count('F'),2);
QCOMPARE(a.count("FG"),2);
-#endif
// QCOMPARE(a.contains(QRegExp("[FG][HI]")),1);
// QCOMPARE(a.contains(QRegExp("[G][HE]")),2);
}
@@ -771,7 +719,6 @@ void tst_Q3CString::replace_uint_uint()
void tst_Q3CString::replace_string()
{
-#if QT_VERSION >= 0x030100
QFETCH( Q3CString, string );
QFETCH( Q3CString, before );
QFETCH( Q3CString, after );
@@ -788,37 +735,6 @@ void tst_Q3CString::replace_string()
Q3CString s3 = string;
s3.replace( before, after );
QCOMPARE( s3, result );
-
-#if QT_VERSION < 0x040000
- if ( !string.isNull() ) {
- /*
- I've changed the isNull() behavior in QString::replace() in
- Qt 3.2, according to the philosophy that null and empty
- should behave mostly the same.
- */
- Q3CString s4 = string;
- s4.replace( QRegExp(QRegExp::escape(before)), after );
- QVERIFY( s4 == result );
- }
-#endif
-#else
- QSKIP( "Not tested with Qt versions < 3.1", SkipAll);
-#endif
-}
-
-void tst_Q3CString::replace_regexp()
-{
-#if QT_VERSION >= 0x040000
- QSKIP("This functionality has been removed in Qt 4.", SkipAll);
-#else
- QFETCH( Q3CString, string );
- QFETCH( Q3CString, regexp );
- QFETCH( Q3CString, after );
- QFETCH( Q3CString, result );
-
- string.replace( QRegExp(regexp), after );
- QVERIFY( string == result );
-#endif
}
void tst_Q3CString::remove_uint_uint()
diff --git a/tests/auto/q3databrowser/q3databrowser.pro b/tests/auto/q3databrowser/q3databrowser.pro
index 09c16b7..d65a5ef 100644
--- a/tests/auto/q3databrowser/q3databrowser.pro
+++ b/tests/auto/q3databrowser/q3databrowser.pro
@@ -2,5 +2,6 @@ load(qttest_p4)
SOURCES += tst_q3databrowser.cpp
QT += qt3support
+requires(contains(QT_CONFIG,qt3support))
diff --git a/tests/auto/q3dateedit/q3dateedit.pro b/tests/auto/q3dateedit/q3dateedit.pro
index ba585ce..85e0ebf 100644
--- a/tests/auto/q3dateedit/q3dateedit.pro
+++ b/tests/auto/q3dateedit/q3dateedit.pro
@@ -1,6 +1,7 @@
load(qttest_p4)
SOURCES += tst_q3dateedit.cpp
QT += qt3support
+requires(contains(QT_CONFIG,qt3support))
diff --git a/tests/auto/q3datetimeedit/q3datetimeedit.pro b/tests/auto/q3datetimeedit/q3datetimeedit.pro
index f2c0097..9c980be 100644
--- a/tests/auto/q3datetimeedit/q3datetimeedit.pro
+++ b/tests/auto/q3datetimeedit/q3datetimeedit.pro
@@ -4,6 +4,7 @@
load(qttest_p4)
QT += qt3support
+requires(contains(QT_CONFIG,qt3support))
SOURCES += tst_q3datetimeedit.cpp
diff --git a/tests/auto/q3deepcopy/q3deepcopy.pro b/tests/auto/q3deepcopy/q3deepcopy.pro
index 04e0690..9ac1a10 100644
--- a/tests/auto/q3deepcopy/q3deepcopy.pro
+++ b/tests/auto/q3deepcopy/q3deepcopy.pro
@@ -3,5 +3,6 @@ SOURCES += tst_q3deepcopy.cpp
QT += qt3support
+requires(contains(QT_CONFIG,qt3support))
diff --git a/tests/auto/q3dict/q3dict.pro b/tests/auto/q3dict/q3dict.pro
index 5ccd875..7bbea61 100644
--- a/tests/auto/q3dict/q3dict.pro
+++ b/tests/auto/q3dict/q3dict.pro
@@ -3,5 +3,6 @@ SOURCES += tst_q3dict.cpp
QT += qt3support
+requires(contains(QT_CONFIG,qt3support))
diff --git a/tests/auto/q3dns/q3dns.pro b/tests/auto/q3dns/q3dns.pro
index 10c24e5..7fd2e4c 100644
--- a/tests/auto/q3dns/q3dns.pro
+++ b/tests/auto/q3dns/q3dns.pro
@@ -3,5 +3,6 @@ SOURCES += tst_q3dns.cpp
QT += network qt3support
+requires(contains(QT_CONFIG,qt3support))
diff --git a/tests/auto/q3dockwindow/q3dockwindow.pro b/tests/auto/q3dockwindow/q3dockwindow.pro
index 5f23c40..1352123 100644
--- a/tests/auto/q3dockwindow/q3dockwindow.pro
+++ b/tests/auto/q3dockwindow/q3dockwindow.pro
@@ -3,6 +3,7 @@ HEADERS +=
SOURCES += tst_q3dockwindow.cpp
QT += qt3support
+requires(contains(QT_CONFIG,qt3support))
diff --git a/tests/auto/q3filedialog/q3filedialog.pro b/tests/auto/q3filedialog/q3filedialog.pro
index 2394111..f57f9c0 100644
--- a/tests/auto/q3filedialog/q3filedialog.pro
+++ b/tests/auto/q3filedialog/q3filedialog.pro
@@ -4,6 +4,7 @@
load(qttest_p4)
QT += qt3support
+requires(contains(QT_CONFIG,qt3support))
SOURCES += tst_q3filedialog.cpp
diff --git a/tests/auto/q3frame/q3frame.pro b/tests/auto/q3frame/q3frame.pro
index 7f0d24f..1d1f5a7 100644
--- a/tests/auto/q3frame/q3frame.pro
+++ b/tests/auto/q3frame/q3frame.pro
@@ -1,4 +1,5 @@
load(qttest_p4)
QT += qt3support
+requires(contains(QT_CONFIG,qt3support))
SOURCES += tst_q3frame.cpp
diff --git a/tests/auto/q3groupbox/q3groupbox.pro b/tests/auto/q3groupbox/q3groupbox.pro
index 5153a25..fd4cced 100644
--- a/tests/auto/q3groupbox/q3groupbox.pro
+++ b/tests/auto/q3groupbox/q3groupbox.pro
@@ -1,5 +1,6 @@
load(qttest_p4)
QT += qt3support
+requires(contains(QT_CONFIG,qt3support))
# Input
SOURCES += tst_q3groupbox.cpp
diff --git a/tests/auto/q3hbox/q3hbox.pro b/tests/auto/q3hbox/q3hbox.pro
index d5b7c65..bbd7f5b 100644
--- a/tests/auto/q3hbox/q3hbox.pro
+++ b/tests/auto/q3hbox/q3hbox.pro
@@ -2,6 +2,7 @@ load(qttest_p4)
SOURCES += tst_q3hbox.cpp
QT += qt3support
+requires(contains(QT_CONFIG,qt3support))
diff --git a/tests/auto/q3header/q3header.pro b/tests/auto/q3header/q3header.pro
index 64ffb0f..d1a913a 100644
--- a/tests/auto/q3header/q3header.pro
+++ b/tests/auto/q3header/q3header.pro
@@ -2,6 +2,7 @@ load(qttest_p4)
SOURCES += tst_q3header.cpp
QT += qt3support
+requires(contains(QT_CONFIG,qt3support))
diff --git a/tests/auto/q3header/tst_q3header.cpp b/tests/auto/q3header/tst_q3header.cpp
index f0ad9d4..fe290e8 100644
--- a/tests/auto/q3header/tst_q3header.cpp
+++ b/tests/auto/q3header/tst_q3header.cpp
@@ -59,9 +59,7 @@ public slots:
void cleanupTestCase();
private slots:
void bug_setOffset();
-#if QT_VERSION >= 0x040101
void nullStringLabel();
-#endif
private:
Q3Header *testW;
@@ -108,7 +106,6 @@ void tst_Q3Header::bug_setOffset()
QCOMPARE( testW->offset(), offs );
}
-#if QT_VERSION >= 0x040101
// Task 95640
void tst_Q3Header::nullStringLabel()
{
@@ -123,7 +120,6 @@ void tst_Q3Header::nullStringLabel()
QCOMPARE(testW->label(testW->addLabel(QString())), QString());
QCOMPARE(testW->label(testW->addLabel(QString(""))), QString(""));
}
-#endif
QTEST_MAIN(tst_Q3Header)
#include "tst_q3header.moc"
diff --git a/tests/auto/q3iconview/q3iconview.pro b/tests/auto/q3iconview/q3iconview.pro
index 37a138b..9416c08 100644
--- a/tests/auto/q3iconview/q3iconview.pro
+++ b/tests/auto/q3iconview/q3iconview.pro
@@ -2,6 +2,7 @@ load(qttest_p4)
SOURCES += tst_q3iconview.cpp
QT += qt3support
+requires(contains(QT_CONFIG,qt3support))
diff --git a/tests/auto/q3listbox/q3listbox.pro b/tests/auto/q3listbox/q3listbox.pro
index d193ace..dc2d197 100644
--- a/tests/auto/q3listbox/q3listbox.pro
+++ b/tests/auto/q3listbox/q3listbox.pro
@@ -2,6 +2,7 @@ load(qttest_p4)
SOURCES += tst_qlistbox.cpp
-contains(QT_CONFIG, qt3support): QT += qt3support
+QT += qt3support
+requires(contains(QT_CONFIG,qt3support))
diff --git a/tests/auto/q3listview/q3listview.pro b/tests/auto/q3listview/q3listview.pro
index 56c62d1..5d72ea6 100644
--- a/tests/auto/q3listview/q3listview.pro
+++ b/tests/auto/q3listview/q3listview.pro
@@ -2,4 +2,5 @@ load(qttest_p4)
SOURCES += tst_q3listview.cpp
QT += qt3support
+requires(contains(QT_CONFIG,qt3support))
diff --git a/tests/auto/q3listviewitemiterator/q3listviewitemiterator.pro b/tests/auto/q3listviewitemiterator/q3listviewitemiterator.pro
index 143e0c0..b50d012 100644
--- a/tests/auto/q3listviewitemiterator/q3listviewitemiterator.pro
+++ b/tests/auto/q3listviewitemiterator/q3listviewitemiterator.pro
@@ -2,6 +2,7 @@ load(qttest_p4)
SOURCES += tst_q3listviewitemiterator.cpp
QT += qt3support
+requires(contains(QT_CONFIG,qt3support))
diff --git a/tests/auto/q3mainwindow/q3mainwindow.pro b/tests/auto/q3mainwindow/q3mainwindow.pro
index 7a198d1..c4cb7c4 100644
--- a/tests/auto/q3mainwindow/q3mainwindow.pro
+++ b/tests/auto/q3mainwindow/q3mainwindow.pro
@@ -2,6 +2,7 @@ load(qttest_p4)
SOURCES += tst_q3mainwindow.cpp
QT += qt3support
+requires(contains(QT_CONFIG,qt3support))
CONFIG += console
diff --git a/tests/auto/q3popupmenu/q3popupmenu.pro b/tests/auto/q3popupmenu/q3popupmenu.pro
index c9c0dd5..216722b 100644
--- a/tests/auto/q3popupmenu/q3popupmenu.pro
+++ b/tests/auto/q3popupmenu/q3popupmenu.pro
@@ -4,5 +4,6 @@
load(qttest_p4)
QT += qt3support
+requires(contains(QT_CONFIG,qt3support))
SOURCES += tst_q3popupmenu.cpp
diff --git a/tests/auto/q3process/q3process.pro b/tests/auto/q3process/q3process.pro
index 8dc3541..a665c2b 100644
--- a/tests/auto/q3process/q3process.pro
+++ b/tests/auto/q3process/q3process.pro
@@ -5,6 +5,7 @@ SUBDIRS = cat \
tst
TARGET = tst_q3process
QT += qt3support
+requires(contains(QT_CONFIG,qt3support))
#no install rule for subdir
INSTALLS =
diff --git a/tests/auto/q3process/tst/tst.pro b/tests/auto/q3process/tst/tst.pro
index 090d76b..359148b 100644
--- a/tests/auto/q3process/tst/tst.pro
+++ b/tests/auto/q3process/tst/tst.pro
@@ -11,6 +11,7 @@ win32 {
}
}
-contains(QT_CONFIG, qt3support): QT += qt3support
+QT += qt3support
+requires(contains(QT_CONFIG,qt3support))
diff --git a/tests/auto/q3progressbar/q3progressbar.pro b/tests/auto/q3progressbar/q3progressbar.pro
index b3c8864..582c39e 100644
--- a/tests/auto/q3progressbar/q3progressbar.pro
+++ b/tests/auto/q3progressbar/q3progressbar.pro
@@ -4,6 +4,7 @@
load(qttest_p4)
QT += qt3support
+requires(contains(QT_CONFIG,qt3support))
SOURCES += tst_q3progressbar.cpp
diff --git a/tests/auto/q3progressdialog/q3progressdialog.pro b/tests/auto/q3progressdialog/q3progressdialog.pro
index 65e24ed..08528db 100644
--- a/tests/auto/q3progressdialog/q3progressdialog.pro
+++ b/tests/auto/q3progressdialog/q3progressdialog.pro
@@ -4,6 +4,7 @@
load(qttest_p4)
QT += qt3support
+requires(contains(QT_CONFIG,qt3support))
SOURCES += tst_q3progressdialog.cpp
diff --git a/tests/auto/q3ptrlist/q3ptrlist.pro b/tests/auto/q3ptrlist/q3ptrlist.pro
index 186a707..d7431f4 100644
--- a/tests/auto/q3ptrlist/q3ptrlist.pro
+++ b/tests/auto/q3ptrlist/q3ptrlist.pro
@@ -2,5 +2,6 @@ load(qttest_p4)
SOURCES += tst_q3ptrlist.cpp
QT += qt3support
+requires(contains(QT_CONFIG,qt3support))
diff --git a/tests/auto/q3ptrlist/tst_q3ptrlist.cpp b/tests/auto/q3ptrlist/tst_q3ptrlist.cpp
index 49b5a3e..c3d8b16 100644
--- a/tests/auto/q3ptrlist/tst_q3ptrlist.cpp
+++ b/tests/auto/q3ptrlist/tst_q3ptrlist.cpp
@@ -92,7 +92,6 @@ void tst_Q3PtrList::cleanup()
void tst_Q3PtrList::replace()
{
-#if QT_VERSION >= 0x030100
Q3PtrList<int> list;
int foo = 4;
list.setAutoDelete( TRUE );
@@ -110,15 +109,10 @@ void tst_Q3PtrList::replace()
int *p = new int(7);
QCOMPARE( list.insert(2, p), (bool)TRUE );
QCOMPARE( list.replace(2, p), (bool)TRUE );
-
-#else
- QSKIP( "Not tested with Qt versions < 3.1", SkipAll);
-#endif
}
void tst_Q3PtrList::replaceStrDeep()
{
-#if QT_VERSION >= 0x030100
Q3StrList list;
const char *str;
@@ -137,14 +131,10 @@ void tst_Q3PtrList::replaceStrDeep()
QCOMPARE( list.insert(2, str), (bool)TRUE );
QCOMPARE( list.replace(2, str), (bool)TRUE );
-#else
- QSKIP( "Not tested with Qt versions < 3.1", SkipAll);
-#endif
}
void tst_Q3PtrList::replaceStrShallow()
{
-#if QT_VERSION >= 0x030100
Q3StrList list( FALSE );
char str1[] = "This is string 1";
char str2[] = "This is string 2";
@@ -166,9 +156,6 @@ void tst_Q3PtrList::replaceStrShallow()
QCOMPARE( list.insert(2, str), (bool)TRUE );
QCOMPARE( list.replace(2, str), (bool)TRUE );
-#else
- QSKIP( "Not tested with Qt versions < 3.1", SkipAll);
-#endif
}
void tst_Q3PtrList::take()
diff --git a/tests/auto/q3richtext/q3richtext.pro b/tests/auto/q3richtext/q3richtext.pro
index 2d4fc5a..e22fa37 100644
--- a/tests/auto/q3richtext/q3richtext.pro
+++ b/tests/auto/q3richtext/q3richtext.pro
@@ -3,6 +3,7 @@ HEADERS +=
SOURCES += tst_q3richtext.cpp
QT += qt3support
+requires(contains(QT_CONFIG,qt3support))
diff --git a/tests/auto/q3scrollview/q3scrollview.pro b/tests/auto/q3scrollview/q3scrollview.pro
index 1750e8b..d98d234 100644
--- a/tests/auto/q3scrollview/q3scrollview.pro
+++ b/tests/auto/q3scrollview/q3scrollview.pro
@@ -2,6 +2,7 @@ load(qttest_p4)
SOURCES += tst_qscrollview.cpp
-contains(QT_CONFIG, qt3support): QT += qt3support
+QT += qt3support
+requires(contains(QT_CONFIG,qt3support))
diff --git a/tests/auto/q3semaphore/q3semaphore.pro b/tests/auto/q3semaphore/q3semaphore.pro
index ad8c154..935917d 100644
--- a/tests/auto/q3semaphore/q3semaphore.pro
+++ b/tests/auto/q3semaphore/q3semaphore.pro
@@ -1,5 +1,6 @@
load(qttest_p4)
SOURCES += tst_q3semaphore.cpp
QT += qt3support
+requires(contains(QT_CONFIG,qt3support))
diff --git a/tests/auto/q3serversocket/q3serversocket.pro b/tests/auto/q3serversocket/q3serversocket.pro
index 4fa9dce..4e5e364 100644
--- a/tests/auto/q3serversocket/q3serversocket.pro
+++ b/tests/auto/q3serversocket/q3serversocket.pro
@@ -3,5 +3,6 @@ SOURCES += tst_q3serversocket.cpp
QT += network qt3support
+requires(contains(QT_CONFIG,qt3support))
diff --git a/tests/auto/q3socket/q3socket.pro b/tests/auto/q3socket/q3socket.pro
index a9bf0c0..a8324e9 100644
--- a/tests/auto/q3socket/q3socket.pro
+++ b/tests/auto/q3socket/q3socket.pro
@@ -2,5 +2,6 @@ load(qttest_p4)
SOURCES += tst_qsocket.cpp
QT += network qt3support
+requires(contains(QT_CONFIG,qt3support))
diff --git a/tests/auto/q3socketdevice/q3socketdevice.pro b/tests/auto/q3socketdevice/q3socketdevice.pro
index c6e9e93..d2cbfb2 100644
--- a/tests/auto/q3socketdevice/q3socketdevice.pro
+++ b/tests/auto/q3socketdevice/q3socketdevice.pro
@@ -2,5 +2,6 @@ load(qttest_p4)
SOURCES += tst_q3socketdevice.cpp
QT += network qt3support
+requires(contains(QT_CONFIG,qt3support))
diff --git a/tests/auto/q3socketdevice/tst_q3socketdevice.cpp b/tests/auto/q3socketdevice/tst_q3socketdevice.cpp
index 2b0c606..6255aee 100644
--- a/tests/auto/q3socketdevice/tst_q3socketdevice.cpp
+++ b/tests/auto/q3socketdevice/tst_q3socketdevice.cpp
@@ -45,6 +45,8 @@
#include <q3socketdevice.h>
+#include "../network-settings.h"
+
//TESTED_CLASS=
//TESTED_FILES=
@@ -97,8 +99,7 @@ void tst_Q3SocketDevice::readNull()
int attempts = 10;
while (attempts--) {
- // connect to imap.troll.no
- if (device.connect(QHostAddress("62.70.27.18"), 143))
+ if (device.connect(QtNetworkSettings::serverIP(), 143))
break;
}
@@ -117,7 +118,7 @@ void tst_Q3SocketDevice::readNull()
#endif
QCOMPARE(device.peerPort(), quint16(143));
QCOMPARE(device.peerAddress().toString(),
- QHostAddress("62.70.27.18").toString());
+ QtNetworkSettings::serverIP().toString());
QCOMPARE(device.error(), Q3SocketDevice::NoError);
// write a logout notice
diff --git a/tests/auto/q3sqlcursor/q3sqlcursor.pro b/tests/auto/q3sqlcursor/q3sqlcursor.pro
index 2844540..2d316fb 100644
--- a/tests/auto/q3sqlcursor/q3sqlcursor.pro
+++ b/tests/auto/q3sqlcursor/q3sqlcursor.pro
@@ -2,6 +2,7 @@ load(qttest_p4)
SOURCES += tst_q3sqlcursor.cpp
QT += sql qt3support
+requires(contains(QT_CONFIG,qt3support))
win32:LIBS += -lws2_32
diff --git a/tests/auto/q3sqlselectcursor/q3sqlselectcursor.pro b/tests/auto/q3sqlselectcursor/q3sqlselectcursor.pro
index 21e311f..59448eb 100644
--- a/tests/auto/q3sqlselectcursor/q3sqlselectcursor.pro
+++ b/tests/auto/q3sqlselectcursor/q3sqlselectcursor.pro
@@ -2,6 +2,7 @@ load(qttest_p4)
SOURCES += tst_q3sqlselectcursor.cpp
QT += sql qt3support
+requires(contains(QT_CONFIG,qt3support))
win32:LIBS += -lws2_32
diff --git a/tests/auto/q3stylesheet/q3stylesheet.pro b/tests/auto/q3stylesheet/q3stylesheet.pro
index a5e8438..f0fcd8b 100644
--- a/tests/auto/q3stylesheet/q3stylesheet.pro
+++ b/tests/auto/q3stylesheet/q3stylesheet.pro
@@ -4,6 +4,7 @@
load(qttest_p4)
QT += qt3support
+requires(contains(QT_CONFIG,qt3support))
SOURCES += tst_q3stylesheet.cpp
diff --git a/tests/auto/q3tabdialog/q3tabdialog.pro b/tests/auto/q3tabdialog/q3tabdialog.pro
index 1ba72f9..815510d 100644
--- a/tests/auto/q3tabdialog/q3tabdialog.pro
+++ b/tests/auto/q3tabdialog/q3tabdialog.pro
@@ -4,6 +4,7 @@
load(qttest_p4)
QT += qt3support
+requires(contains(QT_CONFIG,qt3support))
SOURCES += tst_q3tabdialog.cpp
diff --git a/tests/auto/q3table/q3table.pro b/tests/auto/q3table/q3table.pro
index 6d96a4e..bdda8ba 100644
--- a/tests/auto/q3table/q3table.pro
+++ b/tests/auto/q3table/q3table.pro
@@ -2,5 +2,6 @@ load(qttest_p4)
SOURCES += tst_q3table.cpp
QT += qt3support
+requires(contains(QT_CONFIG,qt3support))
diff --git a/tests/auto/q3table/tst_q3table.cpp b/tests/auto/q3table/tst_q3table.cpp
index 2fab3eb..7db0a40 100644
--- a/tests/auto/q3table/tst_q3table.cpp
+++ b/tests/auto/q3table/tst_q3table.cpp
@@ -387,7 +387,6 @@ public:
void tst_Q3Table::selectComboTableItem()
{
-// #if QT_VERSION >= 0x030100
#if 0
MyTable table(4,4,0,"subclassTestWidget");
// Test for task #25026
diff --git a/tests/auto/q3textbrowser/q3textbrowser.pro b/tests/auto/q3textbrowser/q3textbrowser.pro
index 8ddeaba..4dfd12e 100644
--- a/tests/auto/q3textbrowser/q3textbrowser.pro
+++ b/tests/auto/q3textbrowser/q3textbrowser.pro
@@ -3,6 +3,7 @@ HEADERS +=
SOURCES += tst_q3textbrowser.cpp
QT += qt3support
+requires(contains(QT_CONFIG,qt3support))
diff --git a/tests/auto/q3textedit/q3textedit.pro b/tests/auto/q3textedit/q3textedit.pro
index a4b24a9..ff90c4a 100644
--- a/tests/auto/q3textedit/q3textedit.pro
+++ b/tests/auto/q3textedit/q3textedit.pro
@@ -4,5 +4,6 @@ SOURCES += tst_q3textedit.cpp
QT += qt3support
+requires(contains(QT_CONFIG,qt3support))
diff --git a/tests/auto/q3textedit/tst_q3textedit.cpp b/tests/auto/q3textedit/tst_q3textedit.cpp
index 21bc8b5..1fcce7b 100644
--- a/tests/auto/q3textedit/tst_q3textedit.cpp
+++ b/tests/auto/q3textedit/tst_q3textedit.cpp
@@ -159,12 +159,10 @@ void tst_Q3TextEdit::getSetCheck()
Q3TextDocument *var2 = new Q3TextDocument(0);
obj1.setDocument(var2);
QCOMPARE(obj1.document(), var2);
-#if QT_VERSION >= 0x040200
// Should've done as QTextEdit, and created a new document, if you setDocument(0).
// Unfortunately it doesn't, and we cannot change it.
obj1.setDocument((Q3TextDocument *)0);
QCOMPARE(obj1.document(), var2);
-#endif
// delete var2; // No delete, since Q3TextEdit takes ownership
}
diff --git a/tests/auto/q3textstream/q3textstream.pro b/tests/auto/q3textstream/q3textstream.pro
index 7c80af7..bf2584a 100644
--- a/tests/auto/q3textstream/q3textstream.pro
+++ b/tests/auto/q3textstream/q3textstream.pro
@@ -1,6 +1,7 @@
load(qttest_p4)
SOURCES += tst_q3textstream.cpp
QT += qt3support
+requires(contains(QT_CONFIG,qt3support))
MOC_DIR=tmp
diff --git a/tests/auto/q3textstream/tst_q3textstream.cpp b/tests/auto/q3textstream/tst_q3textstream.cpp
index 7932b79..b13e83f 100644
--- a/tests/auto/q3textstream/tst_q3textstream.cpp
+++ b/tests/auto/q3textstream/tst_q3textstream.cpp
@@ -346,9 +346,6 @@ void tst_Q3TextStream::operator_shiftleft()
QFETCH( QString, device );
QFETCH( QString, encoding );
QFETCH( QByteArray, encoded );
-#if QT_VERSION < 0x040000
- encoded.resize( encoded.size() - 1 );
-#endif
if ( device == "file" ) {
QFile outFile( "qtextstream.out" );
@@ -400,9 +397,6 @@ void tst_Q3TextStream::operator_shiftright()
QFETCH( int, intVal );
QFETCH( QString, stringVal );
QFETCH( QByteArray, encoded );
-#if QT_VERSION < 0x040000
- encoded.resize( encoded.size() - 1 );
-#endif
if ( device == "file" ) {
QFile outFile( "qtextstream.out" );
@@ -1295,7 +1289,6 @@ void tst_Q3TextStream::write_Q3CString( Q3TextStream *s )
void tst_Q3TextStream::task28319()
{
/*
-#if QT_VERSION >= 0x040000
// Specific test for task 28319
QFile f("28319.txt");
if (f.open(IO_WriteOnly)) {
@@ -1324,9 +1317,6 @@ void tst_Q3TextStream::task28319()
} else {
QVERIFY(FALSE);
}
-#else
- QSKIP( "A minor bug we don't want to fix in 3.2.", SkipAll);
-#endif
*/
}
diff --git a/tests/auto/q3timeedit/q3timeedit.pro b/tests/auto/q3timeedit/q3timeedit.pro
index 17b4a84..0f231df 100644
--- a/tests/auto/q3timeedit/q3timeedit.pro
+++ b/tests/auto/q3timeedit/q3timeedit.pro
@@ -1,6 +1,7 @@
load(qttest_p4)
SOURCES += tst_q3timeedit.cpp
QT += qt3support
+requires(contains(QT_CONFIG,qt3support))
diff --git a/tests/auto/q3timeedit/tst_q3timeedit.cpp b/tests/auto/q3timeedit/tst_q3timeedit.cpp
index 967bb51..1cdd87c 100644
--- a/tests/auto/q3timeedit/tst_q3timeedit.cpp
+++ b/tests/auto/q3timeedit/tst_q3timeedit.cpp
@@ -130,10 +130,8 @@ void tst_Q3TimeEdit::init()
QTime maximumTime(23, 59, 59);
testWidget->setMinValue(minimumTime);
testWidget->setMaxValue(maximumTime);
-#if QT_VERSION >= 0x030100
// We don't want the locale impacting on the test
testWidget->setDisplay(Q3TimeEdit::Hours | Q3TimeEdit::Minutes | Q3TimeEdit::Seconds);
-#endif
testWidget->setTime(QTime(11, 0, 0));
// make sure we start with the hour focused
@@ -174,10 +172,8 @@ void tst_Q3TimeEdit::valueRange()
QTime maximumTime(maximumHours, maximumMinutes, maximumSeconds);
testWidget->setMinValue(minimumTime);
testWidget->setMaxValue(maximumTime);
-#if QT_VERSION >= 0x030100
// We don't want the locale impacting on the test
testWidget->setDisplay(Q3TimeEdit::Hours | Q3TimeEdit::Minutes | Q3TimeEdit::Seconds);
-#endif
// When pressing Key_Up we want to check it goes to the minimum time
testWidget->setTime(maximumTime);
diff --git a/tests/auto/q3toolbar/q3toolbar.pro b/tests/auto/q3toolbar/q3toolbar.pro
index 8fcab99..974f14f 100644
--- a/tests/auto/q3toolbar/q3toolbar.pro
+++ b/tests/auto/q3toolbar/q3toolbar.pro
@@ -1,6 +1,7 @@
load(qttest_p4)
SOURCES += tst_q3toolbar.cpp
QT += qt3support
+requires(contains(QT_CONFIG,qt3support))
diff --git a/tests/auto/q3uridrag/q3uridrag.pro b/tests/auto/q3uridrag/q3uridrag.pro
index 526623e..b6e77fc 100644
--- a/tests/auto/q3uridrag/q3uridrag.pro
+++ b/tests/auto/q3uridrag/q3uridrag.pro
@@ -2,6 +2,7 @@ load(qttest_p4)
SOURCES += tst_q3uridrag.cpp
-contains(QT_CONFIG, qt3support): QT += qt3support
+QT += qt3support
+requires(contains(QT_CONFIG,qt3support))
diff --git a/tests/auto/q3urloperator/q3urloperator.pro b/tests/auto/q3urloperator/q3urloperator.pro
index 3364dac..29282eb 100644
--- a/tests/auto/q3urloperator/q3urloperator.pro
+++ b/tests/auto/q3urloperator/q3urloperator.pro
@@ -2,7 +2,8 @@ load(qttest_p4)
SOURCES += tst_q3urloperator.cpp
-contains(QT_CONFIG, qt3support): QT += qt3support
+QT += qt3support
+requires(contains(QT_CONFIG,qt3support))
QT += network
diff --git a/tests/auto/q3valuelist/q3valuelist.pro b/tests/auto/q3valuelist/q3valuelist.pro
index ab82d31..d359779 100644
--- a/tests/auto/q3valuelist/q3valuelist.pro
+++ b/tests/auto/q3valuelist/q3valuelist.pro
@@ -2,6 +2,7 @@ load(qttest_p4)
SOURCES += tst_q3valuelist.cpp
-contains(QT_CONFIG, qt3support): QT += qt3support
+QT += qt3support
+requires(contains(QT_CONFIG,qt3support))
diff --git a/tests/auto/q3valuelist/tst_q3valuelist.cpp b/tests/auto/q3valuelist/tst_q3valuelist.cpp
index 8abeee2..b10664a 100644
--- a/tests/auto/q3valuelist/tst_q3valuelist.cpp
+++ b/tests/auto/q3valuelist/tst_q3valuelist.cpp
@@ -296,7 +296,6 @@ void tst_Q3ValueList::beginEnd()
QCOMPARE( *(cit1), 2 );
QCOMPARE( *(cit2), 200 );
-#if (QT_VERSION >= 0x030200)
Q3ValueList<int> b;
b.append( 1 );
Q3ValueList<int> b2 = b;
@@ -305,7 +304,6 @@ void tst_Q3ValueList::beginEnd()
b2.append( 2 );
QVERIFY( b.constBegin() != b2.constBegin() );
QVERIFY( b2.constBegin() == b2.constBegin() );
-#endif
}
void tst_Q3ValueList::pushing()
@@ -593,11 +591,7 @@ void tst_Q3ValueList::opStreamOut()
class ListVerifier : public Q3ValueList<int>
{
public:
-#if QT_VERSION < 0x040000
- void* pointer() { return sh; }
-#else
const int* pointer() const { return &*begin(); }
-#endif
};
void tst_Q3ValueList::shared()
{
diff --git a/tests/auto/q3valuevector/q3valuevector.pro b/tests/auto/q3valuevector/q3valuevector.pro
index 883fda2..55956cb 100644
--- a/tests/auto/q3valuevector/q3valuevector.pro
+++ b/tests/auto/q3valuevector/q3valuevector.pro
@@ -2,6 +2,7 @@ load(qttest_p4)
SOURCES += tst_q3valuevector.cpp
-contains(QT_CONFIG, qt3support): QT += qt3support
+QT += qt3support
+requires(contains(QT_CONFIG,qt3support))
diff --git a/tests/auto/q3widgetstack/q3widgetstack.pro b/tests/auto/q3widgetstack/q3widgetstack.pro
index 9783f58..1bd6a89 100644
--- a/tests/auto/q3widgetstack/q3widgetstack.pro
+++ b/tests/auto/q3widgetstack/q3widgetstack.pro
@@ -2,6 +2,7 @@ load(qttest_p4)
SOURCES += tst_q3widgetstack.cpp
-contains(QT_CONFIG, qt3support): QT += qt3support
+QT += qt3support
+requires(contains(QT_CONFIG,qt3support))
diff --git a/tests/auto/qabstractitemmodel/tst_qabstractitemmodel.cpp b/tests/auto/qabstractitemmodel/tst_qabstractitemmodel.cpp
index b613b81..c0ffea0 100644
--- a/tests/auto/qabstractitemmodel/tst_qabstractitemmodel.cpp
+++ b/tests/auto/qabstractitemmodel/tst_qabstractitemmodel.cpp
@@ -346,14 +346,11 @@ void tst_QAbstractItemModel::match()
QCOMPARE(res.count(), 2);
res = model.match(start, Qt::DisplayRole, QVariant(".*O.*"), -1, Qt::MatchRegExp | Qt::MatchCaseSensitive);
QCOMPARE(res.count(), 0);
- // MatchFixedString seems new in 4.2
-#if QT_VERSION >= 0x040200
res = model.match(start, Qt::DisplayRole, QVariant("BOAR"), -1, Qt::MatchFixedString);
QCOMPARE(res.count(), 1);
res = model.match(start, Qt::DisplayRole, QVariant("bat"), -1,
Qt::MatchFixedString | Qt::MatchCaseSensitive);
QCOMPARE(res.count(), 1);
-#endif
}
typedef QPair<int, int> Position;
@@ -582,7 +579,6 @@ void tst_QAbstractItemModel::dropMimeData_data()
<< (qStringTableRow("" , "" , "A"))
<< (qStringTableRow("" , "" , "B")));
}
-#if QT_VERSION >= 0x040200
{
QTest::newRow("2x 1x2 dropped at [3, 2] (different rows)")
<< (STRINGTABLE // source table
@@ -624,7 +620,6 @@ void tst_QAbstractItemModel::dropMimeData_data()
<< (qStringTableRow("" , "" , "B"))
<< (qStringTableRow("" , "" , "H")));
}
-#endif
}
void tst_QAbstractItemModel::dropMimeData()
diff --git a/tests/auto/qabstractitemview/tst_qabstractitemview.cpp b/tests/auto/qabstractitemview/tst_qabstractitemview.cpp
index 3337a49..3a845e1 100644
--- a/tests/auto/qabstractitemview/tst_qabstractitemview.cpp
+++ b/tests/auto/qabstractitemview/tst_qabstractitemview.cpp
@@ -53,6 +53,8 @@
#include <qspinbox.h>
#include <qitemdelegate.h>
#include <qpushbutton.h>
+#include <qscrollbar.h>
+#include <qboxlayout.h>
#include "../../shared/util.h"
//TESTED_CLASS=
@@ -209,6 +211,7 @@ private slots:
void setCurrentIndex();
void task221955_selectedEditor();
+ void task250754_fontChange();
};
class MyAbstractItemDelegate : public QAbstractItemDelegate
@@ -231,11 +234,8 @@ void tst_QAbstractItemView::getSetCheck()
MyAbstractItemDelegate *var1 = new MyAbstractItemDelegate;
obj1->setItemDelegate(var1);
QCOMPARE((QAbstractItemDelegate*)var1, obj1->itemDelegate());
-#if QT_VERSION >= 0x040200
- // Itemviews in Qt < 4.2 have asserts for this. Qt >= 4.2 should handle this gracefully
obj1->setItemDelegate((QAbstractItemDelegate *)0);
QCOMPARE((QAbstractItemDelegate *)0, obj1->itemDelegate());
-#endif
delete var1;
// EditTriggers QAbstractItemView::editTriggers()
@@ -276,26 +276,6 @@ void tst_QAbstractItemView::getSetCheck()
obj1->setAlternatingRowColors(true);
QCOMPARE(true, obj1->alternatingRowColors());
-#if QT_VERSION < 0x040200
- // int QAbstractItemView::horizontalStepsPerItem()
- // void QAbstractItemView::setHorizontalStepsPerItem(int)
- obj1->tst_setHorizontalStepsPerItem(0);
- QCOMPARE(0, obj1->tst_horizontalStepsPerItem());
- obj1->tst_setHorizontalStepsPerItem(INT_MIN);
- QCOMPARE(INT_MIN, obj1->tst_horizontalStepsPerItem());
- obj1->tst_setHorizontalStepsPerItem(INT_MAX);
- QCOMPARE(INT_MAX, obj1->tst_horizontalStepsPerItem());
-
- // int QAbstractItemView::verticalStepsPerItem()
- // void QAbstractItemView::setVerticalStepsPerItem(int)
- obj1->tst_setVerticalStepsPerItem(0);
- QCOMPARE(0, obj1->tst_verticalStepsPerItem());
- obj1->tst_setVerticalStepsPerItem(INT_MIN);
- QCOMPARE(INT_MIN, obj1->tst_verticalStepsPerItem());
- obj1->tst_setVerticalStepsPerItem(INT_MAX);
- QCOMPARE(INT_MAX, obj1->tst_verticalStepsPerItem());
-#endif
-
// State QAbstractItemView::state()
// void QAbstractItemView::setState(State)
obj1->tst_setState(TestView::tst_State(TestView::NoState));
@@ -311,13 +291,11 @@ void tst_QAbstractItemView::getSetCheck()
obj1->tst_setState(TestView::tst_State(TestView::CollapsingState));
QCOMPARE(TestView::tst_State(TestView::CollapsingState), obj1->tst_state());
-#if QT_VERSION >= 0x040200
// QWidget QAbstractScrollArea::viewport()
// void setViewport(QWidget*)
QWidget *vp = new QWidget;
obj1->setViewport(vp);
QCOMPARE(vp, obj1->viewport());
-#endif
QCOMPARE(16, obj1->autoScrollMargin());
obj1->setAutoScrollMargin(20);
@@ -1179,8 +1157,46 @@ void tst_QAbstractItemView::task221955_selectedEditor()
button->setFocus();
QTest::qWait(50);
QVERIFY(tree.selectionModel()->selectedIndexes().isEmpty());
+}
+
+void tst_QAbstractItemView::task250754_fontChange()
+{
+ QString app_css = qApp->styleSheet();
+ qApp->setStyleSheet("/* */");
+
+ QWidget w;
+ QTreeView tree(&w);
+ QVBoxLayout *vLayout = new QVBoxLayout(&w);
+ vLayout->addWidget(&tree);
+
+ QStandardItemModel *m = new QStandardItemModel(this);
+ for (int i=0; i<5; ++i) {
+ QStandardItem *item = new QStandardItem(QString("Item number %1").arg(i));
+ for (int j=0; j<5; ++j) {
+ QStandardItem *child = new QStandardItem(QString("Child Item number %1").arg(j));
+ item->setChild(j, 0, child);
+ }
+ m->setItem(i, 0, item);
+ }
+ tree.setModel(m);
+
+ w.show();
+ w.resize(150,150);
+ QTest::qWait(30);
+ QFont font = tree.font();
+ font.setPointSize(5);
+ tree.setFont(font);
+ QTest::qWait(30);
+
+ QVERIFY(!tree.verticalScrollBar()->isVisible());
+
+ font.setPointSize(45);
+ tree.setFont(font);
+ QTest::qWait(30);
+ //now with the huge items, the scrollbar must be visible
+ QVERIFY(tree.verticalScrollBar()->isVisible());
-
+ qApp->setStyleSheet(app_css);
}
QTEST_MAIN(tst_QAbstractItemView)
diff --git a/tests/auto/qabstractslider/tst_qabstractslider.cpp b/tests/auto/qabstractslider/tst_qabstractslider.cpp
index 9e3acb8..dc1c866 100644
--- a/tests/auto/qabstractslider/tst_qabstractslider.cpp
+++ b/tests/auto/qabstractslider/tst_qabstractslider.cpp
@@ -864,11 +864,7 @@ void tst_QAbstractSlider::wheelEvent()
QVERIFY(applicationInstance->sendEvent(slider,&event));
QCOMPARE(slider->sliderPosition(),expectedSliderPosition);
int expectedSignalCount = (initialSliderPosition == expectedSliderPosition) ? 0 : 1;
-#if QT_VERSION >= 0x040200
QCOMPARE(spy1.count(), expectedSignalCount);
-#else
- QCOMPARE(spy1.count(), 0);
-#endif
QCOMPARE(spy2.count(), expectedSignalCount);
if (expectedSignalCount)
QVERIFY(actionTriggeredTimeStamp < valueChangedTimeStamp);
diff --git a/tests/auto/qaccessibility/tst_qaccessibility.cpp b/tests/auto/qaccessibility/tst_qaccessibility.cpp
index d023557..df770b3 100644
--- a/tests/auto/qaccessibility/tst_qaccessibility.cpp
+++ b/tests/auto/qaccessibility/tst_qaccessibility.cpp
@@ -218,8 +218,6 @@ public:
tst_QAccessibility();
virtual ~tst_QAccessibility();
-
-
public slots:
void initTestCase();
void cleanupTestCase();
@@ -275,6 +273,7 @@ private slots:
void accessibleName();
void treeWidgetTest();
void labelTest();
+ void accelerators();
private:
QWidget *createGUI();
@@ -408,15 +407,15 @@ public:
QtTestAccessibleWidgetIface(QtTestAccessibleWidget *w): QAccessibleWidget(w) {}
QString text(Text t, int control) const
{
- if (t == Help)
- return QString::fromLatin1("Help yourself");
- return QAccessibleWidget::text(t, control);
+ if (t == Help)
+ return QString::fromLatin1("Help yourself");
+ return QAccessibleWidget::text(t, control);
}
static QAccessibleInterface *ifaceFactory(const QString &key, QObject *o)
{
- if (key == "QtTestAccessibleWidget")
- return new QtTestAccessibleWidgetIface(static_cast<QtTestAccessibleWidget*>(o));
- return 0;
+ if (key == "QtTestAccessibleWidget")
+ return new QtTestAccessibleWidgetIface(static_cast<QtTestAccessibleWidget*>(o));
+ return 0;
}
};
#endif
@@ -454,15 +453,15 @@ void tst_QAccessibility::cleanup()
#ifdef QTEST_ACCESSIBILITY
const EventList list = QTestAccessibility::events();
if (!list.isEmpty()) {
- qWarning("%d accessibility event(s) were not handled in testfunction '%s':", list.count(),
- QString(QTest::currentTestFunction()).toAscii().constData());
- for (int i = 0; i < list.count(); ++i)
- qWarning(" %d: Object: %p Event: '%s' (%d) Child: %d", i + 1, list.at(i).object,
- eventName(list.at(i).event).toAscii().constData(), list.at(i).event, list.at(i).child);
+ qWarning("%d accessibility event(s) were not handled in testfunction '%s':", list.count(),
+ QString(QTest::currentTestFunction()).toAscii().constData());
+ for (int i = 0; i < list.count(); ++i)
+ qWarning(" %d: Object: %p Event: '%s' (%d) Child: %d", i + 1, list.at(i).object,
+ eventName(list.at(i).event).toAscii().constData(), list.at(i).event, list.at(i).child);
}
QTestAccessibility::clearEvents();
#else
- QSKIP("Test needs Qt >= 0x040000 and accessibility support.", SkipAll);
+ QSKIP("Test needs accessibility support.", SkipAll);
#endif
}
@@ -485,7 +484,7 @@ void tst_QAccessibility::eventTest()
delete button;
#else
- QSKIP("Test needs Qt >= 0x040000 and accessibility support.", SkipAll);
+ QSKIP("Test needs accessibility support.", SkipAll);
#endif
}
@@ -504,7 +503,7 @@ void tst_QAccessibility::customWidget()
delete iface;
delete widget;
#else
- QSKIP("Test needs Qt >= 0x040000 and accessibility support.", SkipAll);
+ QSKIP("Test needs accessibility support.", SkipAll);
#endif
}
@@ -522,7 +521,7 @@ void tst_QAccessibility::deletedWidget()
QVERIFY(!iface->isValid());
delete iface;
#else
- QSKIP("Test needs Qt >= 0x040000 and accessibility support.", SkipAll);
+ QSKIP("Test needs accessibility support.", SkipAll);
#endif
}
@@ -541,52 +540,52 @@ QWidget *tst_QAccessibility::createGUI()
topLeft->setSpacing(2);
grid->addWidget(topLeft, 0, 0);
- Q3VButtonGroup *group1 = new Q3VButtonGroup("Title1:", topLeft, "group1");
- /*QPushButton *pb1 = */ new QPushButton("Button&1", group1, "pb1");
- Q3VButtonGroup *group2 = new Q3VButtonGroup("Title2:", topLeft, "group2");
- /*QPushButton *pb2 = */ new QPushButton("Button2", group2, "pb2");
+ Q3VButtonGroup *group1 = new Q3VButtonGroup("Title1:", topLeft, "group1");
+ /*QPushButton *pb1 = */ new QPushButton("Button&1", group1, "pb1");
+ Q3VButtonGroup *group2 = new Q3VButtonGroup("Title2:", topLeft, "group2");
+ /*QPushButton *pb2 = */ new QPushButton("Button2", group2, "pb2");
- Q3WidgetStack *stack = new Q3WidgetStack(topLeft, "stack");
- QLabel *page1 = new QLabel("Page 1", stack, "page1");
- stack->addWidget(page1);
- QLabel *page2 = new QLabel("Page 2", stack, "page2");
- stack->addWidget(page2);
- QLabel *page3 = new QLabel("Page 3", stack, "page3");
- stack->addWidget(page3);
+ Q3WidgetStack *stack = new Q3WidgetStack(topLeft, "stack");
+ QLabel *page1 = new QLabel("Page 1", stack, "page1");
+ stack->addWidget(page1);
+ QLabel *page2 = new QLabel("Page 2", stack, "page2");
+ stack->addWidget(page2);
+ QLabel *page3 = new QLabel("Page 3", stack, "page3");
+ stack->addWidget(page3);
// topRight - controlling
Q3VBox *topRight= new Q3VBox(toplevel, "topRight");
grid->addWidget(topRight, 0, 1);
- QPushButton *pbOk = new QPushButton("Ok", topRight, "pbOk" );
- pbOk->setDefault(TRUE);
- QSlider *slider = new QSlider(Qt::Horizontal, topRight, "slider");
- QLCDNumber *sliderLcd = new QLCDNumber(topRight, "sliderLcd");
- QSpinBox *spinBox = new QSpinBox(topRight, "spinBox");
+ QPushButton *pbOk = new QPushButton("Ok", topRight, "pbOk" );
+ pbOk->setDefault(TRUE);
+ QSlider *slider = new QSlider(Qt::Horizontal, topRight, "slider");
+ QLCDNumber *sliderLcd = new QLCDNumber(topRight, "sliderLcd");
+ QSpinBox *spinBox = new QSpinBox(topRight, "spinBox");
- connect(pbOk, SIGNAL(clicked()), toplevel, SLOT(close()) );
- connect(slider, SIGNAL(valueChanged(int)), sliderLcd, SLOT(display(int)));
- connect(spinBox, SIGNAL(valueChanged(int)), slider, SLOT(setValue(int)));
+ connect(pbOk, SIGNAL(clicked()), toplevel, SLOT(close()) );
+ connect(slider, SIGNAL(valueChanged(int)), sliderLcd, SLOT(display(int)));
+ connect(spinBox, SIGNAL(valueChanged(int)), slider, SLOT(setValue(int)));
- spinBox->setValue(50);
+ spinBox->setValue(50);
// bottomLeft - labeling and controlling
Q3HBox *bottomLeft = new Q3HBox(toplevel, "bottomLeft");
grid->addWidget(bottomLeft, 1, 0);
- QLabel *label = new QLabel("This is a &lineedit:", bottomLeft, "label");
- QLineEdit *lineedit = new QLineEdit(bottomLeft, "lineedit");
- label->setBuddy(lineedit);
- QLabel *label2 = new QLabel(bottomLeft, "label2");
+ QLabel *label = new QLabel("This is a &lineedit:", bottomLeft, "label");
+ QLineEdit *lineedit = new QLineEdit(bottomLeft, "lineedit");
+ label->setBuddy(lineedit);
+ QLabel *label2 = new QLabel(bottomLeft, "label2");
- connect(lineedit, SIGNAL(textChanged(const QString&)), label2, SLOT(setText(const QString&)));
+ connect(lineedit, SIGNAL(textChanged(const QString&)), label2, SLOT(setText(const QString&)));
- Q3VButtonGroup *radiogroup = new Q3VButtonGroup("Exclusive &choices:", bottomLeft, "radiogroup");
- QLineEdit *frequency = new QLineEdit(radiogroup, "frequency");
- frequency->setText("100 Mhz");
- QRadioButton *radioAM = new QRadioButton("&AM", radiogroup, "radioAM");
- /* QRadioButton *radioFM = */ new QRadioButton("&FM", radiogroup, "radioFM");
- /* QRadioButton *radioSW = */ new QRadioButton("&Shortwave", radiogroup, "radioSW");
+ Q3VButtonGroup *radiogroup = new Q3VButtonGroup("Exclusive &choices:", bottomLeft, "radiogroup");
+ QLineEdit *frequency = new QLineEdit(radiogroup, "frequency");
+ frequency->setText("100 Mhz");
+ QRadioButton *radioAM = new QRadioButton("&AM", radiogroup, "radioAM");
+ /* QRadioButton *radioFM = */ new QRadioButton("&FM", radiogroup, "radioFM");
+ /* QRadioButton *radioSW = */ new QRadioButton("&Shortwave", radiogroup, "radioSW");
// bottomRight - ### empty
Q3HBox *bottomRight = new Q3HBox(toplevel, "bottomRight");
@@ -625,23 +624,23 @@ void tst_QAccessibility::childAt()
QObjectList children = toplevel->queryList("QWidget", 0, 0, 0);
for (int c = 1; c <= children.count(); ++c) {
- QWidget *child = qobject_cast<QWidget*>(children.at(c-1));
- QAccessibleInterface *acc_child = QAccessible::queryAccessibleInterface(child);
- QVERIFY(acc_child);
- QCOMPARE(acc_child->relationTo(0, acc_toplevel, 0) & QAccessible::HierarchyMask, QAccessible::Child);
-
- QPoint center(child->mapToGlobal(child->rect().center()));
- QRect childRect(child->geometry());
- childRect.moveCenter(center);
-
- QCOMPARE(acc_child->rect(0), childRect);
- QCOMPARE(acc_toplevel->childAt(childRect.center().x(), childRect.center().y()), c);
- QCOMPARE(acc_toplevel->childAt(childRect.left(), childRect.top()), c);
- QCOMPARE(acc_toplevel->childAt(childRect.left(), childRect.bottom()), c);
- QCOMPARE(acc_toplevel->childAt(childRect.right(), childRect.top()), c);
- QCOMPARE(acc_toplevel->childAt(childRect.right(), childRect.bottom()), c);
-
- QCOMPARE(acc_toplevel->indexOfChild(acc_child), c);
+ QWidget *child = qobject_cast<QWidget*>(children.at(c-1));
+ QAccessibleInterface *acc_child = QAccessible::queryAccessibleInterface(child);
+ QVERIFY(acc_child);
+ QCOMPARE(acc_child->relationTo(0, acc_toplevel, 0) & QAccessible::HierarchyMask, QAccessible::Child);
+
+ QPoint center(child->mapToGlobal(child->rect().center()));
+ QRect childRect(child->geometry());
+ childRect.moveCenter(center);
+
+ QCOMPARE(acc_child->rect(0), childRect);
+ QCOMPARE(acc_toplevel->childAt(childRect.center().x(), childRect.center().y()), c);
+ QCOMPARE(acc_toplevel->childAt(childRect.left(), childRect.top()), c);
+ QCOMPARE(acc_toplevel->childAt(childRect.left(), childRect.bottom()), c);
+ QCOMPARE(acc_toplevel->childAt(childRect.right(), childRect.top()), c);
+ QCOMPARE(acc_toplevel->childAt(childRect.right(), childRect.bottom()), c);
+
+ QCOMPARE(acc_toplevel->indexOfChild(acc_child), c);
delete acc_child;
}
@@ -649,7 +648,7 @@ void tst_QAccessibility::childAt()
delete toplevel;
QTestAccessibility::clearEvents();
#else
- QSKIP("Test needs Qt >= 0x040000 and accessibility support.", SkipAll);
+ QSKIP("Test needs accessibility support.", SkipAll);
#endif
#endif // !QT3_SUPPORT
}
@@ -693,7 +692,7 @@ void tst_QAccessibility::childCount()
delete toplevel;
QTestAccessibility::clearEvents();
#else
- QSKIP("Test needs Qt >= 0x040000 and accessibility support.", SkipAll);
+ QSKIP("Test needs accessibility support.", SkipAll);
#endif
#endif // !QT3_SUPPORT
}
@@ -715,33 +714,33 @@ void tst_QAccessibility::relationTo()
QAccessibleInterface *acc_toplevel = QAccessible::queryAccessibleInterface(toplevel);
- QAccessibleInterface *acc_topLeft = QAccessible::queryAccessibleInterface(topLeft);
- QAccessibleInterface *acc_group1 = QAccessible::queryAccessibleInterface(topLeft->child("group1"));
- QVERIFY(topLeft->child("group1"));
- QAccessibleInterface *acc_pb1 = QAccessible::queryAccessibleInterface(topLeft->child("group1")->child("pb1"));
- QAccessibleInterface *acc_group2 = QAccessible::queryAccessibleInterface(topLeft->child("group2"));
- QAccessibleInterface *acc_pb2 = 0;
- QAccessibleInterface *acc_stack = QAccessible::queryAccessibleInterface(topLeft->child("stack"));
- QAccessibleInterface *acc_page1 = QAccessible::queryAccessibleInterface(topLeft->child("stack")->child("page1"));
- QAccessibleInterface *acc_page2 = QAccessible::queryAccessibleInterface(topLeft->child("stack")->child("page2"));
- QAccessibleInterface *acc_page3 = QAccessible::queryAccessibleInterface(topLeft->child("stack")->child("page3"));
- QAccessibleInterface *acc_topRight = QAccessible::queryAccessibleInterface(topRight);
- QAccessibleInterface *acc_pbOk = QAccessible::queryAccessibleInterface(topRight->child("pbOk"));
- QAccessibleInterface *acc_slider = QAccessible::queryAccessibleInterface(topRight->child("slider"));
- QAccessibleInterface *acc_spinBox = QAccessible::queryAccessibleInterface(topRight->child("spinBox"));
- QAccessibleInterface *acc_sliderLcd = QAccessible::queryAccessibleInterface(topRight->child("sliderLcd"));
-
- QAccessibleInterface *acc_bottomLeft = QAccessible::queryAccessibleInterface(bottomLeft);
- QAccessibleInterface *acc_label = QAccessible::queryAccessibleInterface(bottomLeft->child("label"));
- QAccessibleInterface *acc_lineedit = QAccessible::queryAccessibleInterface(bottomLeft->child("lineedit"));
- QAccessibleInterface *acc_label2 = QAccessible::queryAccessibleInterface(bottomLeft->child("label2"));
- QAccessibleInterface *acc_radiogroup = QAccessible::queryAccessibleInterface(bottomLeft->child("radiogroup"));
- QAccessibleInterface *acc_radioAM = QAccessible::queryAccessibleInterface(bottomLeft->child("radiogroup")->child("radioAM"));
- QAccessibleInterface *acc_radioFM = QAccessible::queryAccessibleInterface(bottomLeft->child("radiogroup")->child("radioFM"));
- QAccessibleInterface *acc_radioSW = QAccessible::queryAccessibleInterface(bottomLeft->child("radiogroup")->child("radioSW"));
- QAccessibleInterface *acc_frequency = QAccessible::queryAccessibleInterface(bottomLeft->child("radiogroup")->child("frequency"));
-
- QAccessibleInterface *acc_bottomRight = QAccessible::queryAccessibleInterface(bottomRight);
+ QAccessibleInterface *acc_topLeft = QAccessible::queryAccessibleInterface(topLeft);
+ QAccessibleInterface *acc_group1 = QAccessible::queryAccessibleInterface(topLeft->child("group1"));
+ QVERIFY(topLeft->child("group1"));
+ QAccessibleInterface *acc_pb1 = QAccessible::queryAccessibleInterface(topLeft->child("group1")->child("pb1"));
+ QAccessibleInterface *acc_group2 = QAccessible::queryAccessibleInterface(topLeft->child("group2"));
+ QAccessibleInterface *acc_pb2 = 0;
+ QAccessibleInterface *acc_stack = QAccessible::queryAccessibleInterface(topLeft->child("stack"));
+ QAccessibleInterface *acc_page1 = QAccessible::queryAccessibleInterface(topLeft->child("stack")->child("page1"));
+ QAccessibleInterface *acc_page2 = QAccessible::queryAccessibleInterface(topLeft->child("stack")->child("page2"));
+ QAccessibleInterface *acc_page3 = QAccessible::queryAccessibleInterface(topLeft->child("stack")->child("page3"));
+ QAccessibleInterface *acc_topRight = QAccessible::queryAccessibleInterface(topRight);
+ QAccessibleInterface *acc_pbOk = QAccessible::queryAccessibleInterface(topRight->child("pbOk"));
+ QAccessibleInterface *acc_slider = QAccessible::queryAccessibleInterface(topRight->child("slider"));
+ QAccessibleInterface *acc_spinBox = QAccessible::queryAccessibleInterface(topRight->child("spinBox"));
+ QAccessibleInterface *acc_sliderLcd = QAccessible::queryAccessibleInterface(topRight->child("sliderLcd"));
+
+ QAccessibleInterface *acc_bottomLeft = QAccessible::queryAccessibleInterface(bottomLeft);
+ QAccessibleInterface *acc_label = QAccessible::queryAccessibleInterface(bottomLeft->child("label"));
+ QAccessibleInterface *acc_lineedit = QAccessible::queryAccessibleInterface(bottomLeft->child("lineedit"));
+ QAccessibleInterface *acc_label2 = QAccessible::queryAccessibleInterface(bottomLeft->child("label2"));
+ QAccessibleInterface *acc_radiogroup = QAccessible::queryAccessibleInterface(bottomLeft->child("radiogroup"));
+ QAccessibleInterface *acc_radioAM = QAccessible::queryAccessibleInterface(bottomLeft->child("radiogroup")->child("radioAM"));
+ QAccessibleInterface *acc_radioFM = QAccessible::queryAccessibleInterface(bottomLeft->child("radiogroup")->child("radioFM"));
+ QAccessibleInterface *acc_radioSW = QAccessible::queryAccessibleInterface(bottomLeft->child("radiogroup")->child("radioSW"));
+ QAccessibleInterface *acc_frequency = QAccessible::queryAccessibleInterface(bottomLeft->child("radiogroup")->child("frequency"));
+
+ QAccessibleInterface *acc_bottomRight = QAccessible::queryAccessibleInterface(bottomRight);
QVERIFY(acc_toplevel);
QVERIFY(acc_topLeft);
@@ -768,49 +767,49 @@ void tst_QAccessibility::relationTo()
// hierachy relations
QCOMPARE(acc_toplevel->relationTo(0, acc_toplevel, 0) & QAccessible::HierarchyMask,
- QAccessible::Self);
+ QAccessible::Self);
QCOMPARE(acc_toplevel->relationTo(1, acc_toplevel, 0) & QAccessible::HierarchyMask,
- QAccessible::Child);
+ QAccessible::Child);
QCOMPARE(acc_toplevel->relationTo(0, acc_toplevel, 1) & QAccessible::HierarchyMask,
- QAccessible::Ancestor);
+ QAccessible::Ancestor);
QCOMPARE(acc_toplevel->relationTo(0, acc_topLeft, 0) & QAccessible::HierarchyMask,
- QAccessible::Ancestor);
+ QAccessible::Ancestor);
QCOMPARE(acc_toplevel->relationTo(0, acc_topRight, 0) & QAccessible::HierarchyMask,
- QAccessible::Ancestor);
+ QAccessible::Ancestor);
QCOMPARE(acc_toplevel->relationTo(0, acc_bottomLeft, 0) & QAccessible::HierarchyMask,
- QAccessible::Ancestor);
+ QAccessible::Ancestor);
QCOMPARE(acc_toplevel->relationTo(0, acc_bottomRight, 0) & QAccessible::HierarchyMask,
- QAccessible::Ancestor);
+ QAccessible::Ancestor);
QCOMPARE(acc_toplevel->relationTo(0, acc_group1, 0) & QAccessible::HierarchyMask,
- QAccessible::Ancestor);
+ QAccessible::Ancestor);
QCOMPARE(acc_toplevel->relationTo(0, acc_page1, 0) & QAccessible::HierarchyMask,
- QAccessible::Ancestor);
+ QAccessible::Ancestor);
QCOMPARE(acc_group1->relationTo(0, acc_toplevel, 0) & QAccessible::HierarchyMask,
- QAccessible::Descendent);
+ QAccessible::Descendent);
QCOMPARE(acc_stack->relationTo(0, acc_toplevel, 0) & QAccessible::HierarchyMask,
- QAccessible::Descendent);
+ QAccessible::Descendent);
QCOMPARE(acc_page1->relationTo(0, acc_stack, 0) & QAccessible::HierarchyMask,
- QAccessible::Child);
+ QAccessible::Child);
QCOMPARE(acc_page1->relationTo(0, acc_toplevel, 0) & QAccessible::HierarchyMask,
- QAccessible::Descendent);
+ QAccessible::Descendent);
QCOMPARE(acc_topLeft->relationTo(0, acc_toplevel, 0) & QAccessible::HierarchyMask,
- QAccessible::Child);
+ QAccessible::Child);
QCOMPARE(acc_topRight->relationTo(0, acc_toplevel, 0) & QAccessible::HierarchyMask,
- QAccessible::Child);
+ QAccessible::Child);
QCOMPARE(acc_bottomLeft->relationTo(0, acc_toplevel, 0) & QAccessible::HierarchyMask,
- QAccessible::Child);
+ QAccessible::Child);
QCOMPARE(acc_bottomRight->relationTo(0, acc_toplevel, 0) & QAccessible::HierarchyMask,
- QAccessible::Child);
+ QAccessible::Child);
QCOMPARE(acc_topLeft->relationTo(0, acc_topRight, 0) & QAccessible::HierarchyMask,
- QAccessible::Sibling);
+ QAccessible::Sibling);
QCOMPARE(acc_topLeft->relationTo(0, acc_bottomLeft, 0) & QAccessible::HierarchyMask,
- QAccessible::Sibling);
+ QAccessible::Sibling);
QCOMPARE(acc_topLeft->relationTo(0, acc_bottomRight, 0) & QAccessible::HierarchyMask,
- QAccessible::Sibling);
+ QAccessible::Sibling);
QCOMPARE(acc_pb1->relationTo(0, acc_pb2, 0), QAccessible::Unrelated);
@@ -835,25 +834,25 @@ void tst_QAccessibility::relationTo()
// logical relations - focus
QCOMPARE(acc_radioAM->relationTo(0, acc_radioFM, 0) & QAccessible::FocusChild,
- QAccessible::Unrelated);
+ QAccessible::Unrelated);
QCOMPARE(acc_radioAM->relationTo(0, acc_radiogroup, 0) & QAccessible::FocusChild,
- QAccessible::FocusChild);
+ QAccessible::FocusChild);
QCOMPARE(acc_radioAM->relationTo(0, acc_bottomLeft, 0) & QAccessible::FocusChild,
- QAccessible::FocusChild);
+ QAccessible::FocusChild);
QCOMPARE(acc_radioAM->relationTo(0, acc_topLeft, 0) & QAccessible::FocusChild,
- QAccessible::Unrelated);
+ QAccessible::Unrelated);
QCOMPARE(acc_radioAM->relationTo(0, acc_toplevel, 0) & QAccessible::FocusChild,
- QAccessible::FocusChild);
+ QAccessible::FocusChild);
// logical relations - labels
QCOMPARE(acc_label->relationTo(0, acc_lineedit, 0) & QAccessible::LogicalMask,
- QAccessible::Label);
+ QAccessible::Label);
QCOMPARE(acc_lineedit->relationTo(0, acc_label, 0) & QAccessible::LogicalMask,
- QAccessible::Labelled);
+ QAccessible::Labelled);
QCOMPARE(acc_label->relationTo(0, acc_radiogroup, 0) & QAccessible::LogicalMask,
- QAccessible::Unrelated);
+ QAccessible::Unrelated);
QCOMPARE(acc_lineedit->relationTo(0, acc_lineedit, 0) & QAccessible::LogicalMask,
- QAccessible::Unrelated);
+ QAccessible::Unrelated);
QEXPECT_FAIL("", "Make me accessible", Continue);
QCOMPARE(acc_radiogroup->relationTo(0, acc_radioAM, 0) & QAccessible::LogicalMask,
@@ -865,21 +864,21 @@ void tst_QAccessibility::relationTo()
QCOMPARE(acc_radiogroup->relationTo(0, acc_radioSW, 0) & QAccessible::LogicalMask,
QAccessible::Label | QAccessible::Controlled);
QCOMPARE(acc_radiogroup->relationTo(0, acc_frequency, 0) & QAccessible::LogicalMask,
- QAccessible::Label);
+ QAccessible::Label);
QCOMPARE(acc_frequency->relationTo(0, acc_radiogroup, 0) & QAccessible::LogicalMask,
- QAccessible::Labelled);
+ QAccessible::Labelled);
QCOMPARE(acc_radiogroup->relationTo(0, acc_lineedit, 0) & QAccessible::LogicalMask,
- QAccessible::Unrelated);
+ QAccessible::Unrelated);
// logical relations - controller
QCOMPARE(acc_pbOk->relationTo(0, acc_toplevel, 0) & QAccessible::LogicalMask,
- QAccessible::Controller);
+ QAccessible::Controller);
QCOMPARE(acc_slider->relationTo(0, acc_sliderLcd, 0) & QAccessible::LogicalMask,
- QAccessible::Controller);
+ QAccessible::Controller);
QCOMPARE(acc_spinBox->relationTo(0, acc_slider, 0) & QAccessible::LogicalMask,
- QAccessible::Controller);
+ QAccessible::Controller);
QCOMPARE(acc_lineedit->relationTo(0, acc_label2, 0) & QAccessible::LogicalMask,
- QAccessible::Controller);
+ QAccessible::Controller);
delete acc_toplevel;
delete acc_topLeft;
@@ -910,7 +909,7 @@ void tst_QAccessibility::relationTo()
QTestAccessibility::clearEvents();
#else
- QSKIP("Test needs Qt >= 0x040000 and accessibility support.", SkipAll);
+ QSKIP("Test needs accessibility support.", SkipAll);
#endif
#endif // !QT3_SUPPORT
}
@@ -933,8 +932,8 @@ void tst_QAccessibility::navigateGeometric()
QtTestAccessibleWidget *aw = 0;
int i;
for (i = 0; i < 360; i += skip) {
- aw = new QtTestAccessibleWidget(w, QString::number(i).toLatin1());
- aw->move( int(200.0 + 100.0 * sin(step * (double)i)), int(200.0 + 100.0 * cos(step * (double)i)) );
+ aw = new QtTestAccessibleWidget(w, QString::number(i).toLatin1());
+ aw->move( int(200.0 + 100.0 * sin(step * (double)i)), int(200.0 + 100.0 * cos(step * (double)i)) );
}
aw = new QtTestAccessibleWidget(w, "Earth");
@@ -949,25 +948,24 @@ void tst_QAccessibility::navigateGeometric()
QTest::qWait(100);
#endif
-
// let one widget rotate around center
for (i = 0; i < 360; i+=skip) {
- aw->move( int(200.0 + 75.0 * sin(step * (double)i)), int(200.0 + 75.0 * cos(step * (double)i)) );
-
- if (i < 45 || i > 315) {
- QCOMPARE(iface->navigate(QAccessible::Down, 0, &target), 0);
- } else if ( i < 135 ) {
- QCOMPARE(iface->navigate(QAccessible::Right, 0, &target), 0);
- } else if ( i < 225 ) {
- QCOMPARE(iface->navigate(QAccessible::Up, 0, &target), 0);
- } else {
- QCOMPARE(iface->navigate(QAccessible::Left, 0, &target), 0);
+ aw->move( int(200.0 + 75.0 * sin(step * (double)i)), int(200.0 + 75.0 * cos(step * (double)i)) );
+
+ if (i < 45 || i > 315) {
+ QCOMPARE(iface->navigate(QAccessible::Down, 0, &target), 0);
+ } else if ( i < 135 ) {
+ QCOMPARE(iface->navigate(QAccessible::Right, 0, &target), 0);
+ } else if ( i < 225 ) {
+ QCOMPARE(iface->navigate(QAccessible::Up, 0, &target), 0);
+ } else {
+ QCOMPARE(iface->navigate(QAccessible::Left, 0, &target), 0);
}
- QVERIFY(target);
- QVERIFY(target->isValid());
- QVERIFY(target->object());
- QCOMPARE(target->object()->objectName(), aw->objectName());
+ QVERIFY(target);
+ QVERIFY(target->isValid());
+ QVERIFY(target->object());
+ QCOMPARE(target->object()->objectName(), aw->objectName());
delete target; target = 0;
}
@@ -1015,7 +1013,7 @@ void tst_QAccessibility::navigateGeometric()
}
QTestAccessibility::clearEvents();
#else
- QSKIP("Test needs Qt >= 0x040000 and accessibility support.", SkipAll);
+ QSKIP("Test needs accessibility support.", SkipAll);
#endif
}
@@ -1049,7 +1047,7 @@ void tst_QAccessibility::navigateSlider()
}
QTestAccessibility::clearEvents();
#else
- QSKIP("Test needs Qt >= 0x040000 and accessibility support.", SkipAll);
+ QSKIP("Test needs accessibility support.", SkipAll);
#endif
}
@@ -1091,43 +1089,43 @@ void tst_QAccessibility::navigateCovered()
QVERIFY(iface3 == 0);
for (int loop = 0; loop < 2; ++loop) {
- for (int x = 0; x < w->width(); ++x) {
- for (int y = 0; y < w->height(); ++y) {
- w1->move(x, y);
- if (w1->geometry().intersects(w2->geometry())) {
- QVERIFY(iface1->relationTo(0, iface2, 0) & QAccessible::Covers);
- QVERIFY(iface2->relationTo(0, iface1, 0) & QAccessible::Covered);
- QCOMPARE(iface1->navigate(QAccessible::Covered, 1, &iface3), 0);
- QVERIFY(iface3 != 0);
- QVERIFY(iface3->isValid());
- QCOMPARE(iface3->object(), iface2->object());
+ for (int x = 0; x < w->width(); ++x) {
+ for (int y = 0; y < w->height(); ++y) {
+ w1->move(x, y);
+ if (w1->geometry().intersects(w2->geometry())) {
+ QVERIFY(iface1->relationTo(0, iface2, 0) & QAccessible::Covers);
+ QVERIFY(iface2->relationTo(0, iface1, 0) & QAccessible::Covered);
+ QCOMPARE(iface1->navigate(QAccessible::Covered, 1, &iface3), 0);
+ QVERIFY(iface3 != 0);
+ QVERIFY(iface3->isValid());
+ QCOMPARE(iface3->object(), iface2->object());
delete iface3; iface3 = 0;
- QCOMPARE(iface2->navigate(QAccessible::Covers, 1, &iface3), 0);
- QVERIFY(iface3 != 0);
- QVERIFY(iface3->isValid());
- QCOMPARE(iface3->object(), iface1->object());
+ QCOMPARE(iface2->navigate(QAccessible::Covers, 1, &iface3), 0);
+ QVERIFY(iface3 != 0);
+ QVERIFY(iface3->isValid());
+ QCOMPARE(iface3->object(), iface1->object());
delete iface3; iface3 = 0;
- } else {
- QVERIFY(!(iface1->relationTo(0, iface2, 0) & QAccessible::Covers));
- QVERIFY(!(iface2->relationTo(0, iface1, 0) & QAccessible::Covered));
- QCOMPARE(iface1->navigate(QAccessible::Covered, 1, &iface3), -1);
- QVERIFY(iface3 == 0);
- QCOMPARE(iface1->navigate(QAccessible::Covers, 1, &iface3), -1);
- QVERIFY(iface3 == 0);
- QCOMPARE(iface2->navigate(QAccessible::Covered, 1, &iface3), -1);
- QVERIFY(iface3 == 0);
- QCOMPARE(iface2->navigate(QAccessible::Covers, 1, &iface3), -1);
- QVERIFY(iface3 == 0);
- }
- }
- }
- if (!loop) {
- // switch children for second loop
- w2->raise();
- QAccessibleInterface *temp = iface1;
- iface1 = iface2;
- iface2 = temp;
- }
+ } else {
+ QVERIFY(!(iface1->relationTo(0, iface2, 0) & QAccessible::Covers));
+ QVERIFY(!(iface2->relationTo(0, iface1, 0) & QAccessible::Covered));
+ QCOMPARE(iface1->navigate(QAccessible::Covered, 1, &iface3), -1);
+ QVERIFY(iface3 == 0);
+ QCOMPARE(iface1->navigate(QAccessible::Covers, 1, &iface3), -1);
+ QVERIFY(iface3 == 0);
+ QCOMPARE(iface2->navigate(QAccessible::Covered, 1, &iface3), -1);
+ QVERIFY(iface3 == 0);
+ QCOMPARE(iface2->navigate(QAccessible::Covers, 1, &iface3), -1);
+ QVERIFY(iface3 == 0);
+ }
+ }
+ }
+ if (!loop) {
+ // switch children for second loop
+ w2->raise();
+ QAccessibleInterface *temp = iface1;
+ iface1 = iface2;
+ iface2 = temp;
+ }
}
delete iface1; iface1 = 0;
delete iface2; iface2 = 0;
@@ -1159,7 +1157,7 @@ void tst_QAccessibility::navigateCovered()
}
QTestAccessibility::clearEvents();
#else
- QSKIP("Test needs Qt >= 0x040000 and accessibility support.", SkipAll);
+ QSKIP("Test needs accessibility support.", SkipAll);
#endif
}
@@ -1262,7 +1260,7 @@ void tst_QAccessibility::navigateHierarchy()
}
QTestAccessibility::clearEvents();
#else
- QSKIP("Test needs Qt >= 0x040000 and accessibility support.", SkipAll);
+ QSKIP("Test needs accessibility support.", SkipAll);
#endif
}
@@ -1277,11 +1275,11 @@ void tst_QAccessibility::navigateControllers()
#ifdef QTEST_ACCESSIBILITY
{
Q3VBox vbox;
- QSlider slider(&vbox);
- QSpinBox spinBox(&vbox);
- QLCDNumber lcd1(&vbox);
- QLCDNumber lcd2(&vbox);
- QLabel label(&vbox);
+ QSlider slider(&vbox);
+ QSpinBox spinBox(&vbox);
+ QLCDNumber lcd1(&vbox);
+ QLCDNumber lcd2(&vbox);
+ QLabel label(&vbox);
vbox.show();
slider.setObjectName("slider");
@@ -1358,7 +1356,7 @@ void tst_QAccessibility::navigateControllers()
}
QTestAccessibility::clearEvents();
#else
- QSKIP("Test needs Qt >= 0x040000 and accessibility support.", SkipAll);
+ QSKIP("Test needs accessibility support.", SkipAll);
#endif
#endif // !QT3_SUPPORT
}
@@ -1373,24 +1371,24 @@ void tst_QAccessibility::navigateLabels()
Q3VBox vbox;
Q3HBox hbox(&vbox);
- QLabel label(&hbox);
+ QLabel label(&hbox);
label.setText("This is a lineedit:");
- QLineEdit lineedit(&hbox);
+ QLineEdit lineedit(&hbox);
label.setBuddy(&lineedit);
Q3VButtonGroup groupbox(&vbox);
groupbox.setTitle("Be my children!");
QRadioButton radio(&groupbox);
- QLabel label2(&groupbox);
+ QLabel label2(&groupbox);
label2.setText("Another lineedit:");
- QLineEdit lineedit2(&groupbox);
+ QLineEdit lineedit2(&groupbox);
label2.setBuddy(&lineedit2);
Q3GroupBox groupbox2(&groupbox);
groupbox2.setTitle("Some grand-children");
- QLineEdit grandchild(&groupbox2);
+ QLineEdit grandchild(&groupbox2);
Q3GroupBox border(&vbox);
- QLineEdit lineedit3(&border);
+ QLineEdit lineedit3(&border);
vbox.show();
QTestAccessibility::clearEvents();
@@ -1491,7 +1489,7 @@ void tst_QAccessibility::navigateLabels()
}
QTestAccessibility::clearEvents();
#else
- QSKIP("Test needs Qt >= 0x040000 and accessibility support.", SkipAll);
+ QSKIP("Test needs accessibility support.", SkipAll);
#endif
#endif // !QT3_SUPPORT
}
@@ -1570,7 +1568,7 @@ void tst_QAccessibility::accessibleName()
delete toplevel;
QTestAccessibility::clearEvents();
#else
- QSKIP("Test needs Qt >= 0x040000 and accessibility support.", SkipAll);
+ QSKIP("Test needs accessibility support.", SkipAll);
#endif
}
@@ -1677,7 +1675,7 @@ void tst_QAccessibility::text()
QTestAccessibility::clearEvents();
#else
- QSKIP("Test needs Qt >= 0x040000 and accessibility support.", SkipAll);
+ QSKIP("Test needs accessibility support.", SkipAll);
#endif
#endif // !QT3_SUPPORT
}
@@ -1713,7 +1711,7 @@ void tst_QAccessibility::setText()
QTestAccessibility::clearEvents();
#else
- QSKIP("Test needs Qt >= 0x040000 and accessibility support.", SkipAll);
+ QSKIP("Test needs accessibility support.", SkipAll);
#endif
#endif //QT3_SUPPORT
}
@@ -1748,7 +1746,7 @@ void tst_QAccessibility::hideShowTest()
delete window;
QTestAccessibility::clearEvents();
#else
- QSKIP("Test needs Qt >= 0x040000 and accessibility support.", SkipAll);
+ QSKIP("Test needs accessibility support.", SkipAll);
#endif
}
@@ -1785,7 +1783,7 @@ void tst_QAccessibility::userActionCount()
QCOMPARE(test->userActionCount(-1), 0);
delete test; test = 0;
#else
- QSKIP("Test needs Qt >= 0x040000 and accessibility support.", SkipAll);
+ QSKIP("Test needs accessibility support.", SkipAll);
#endif
}
@@ -1810,7 +1808,7 @@ void tst_QAccessibility::actionText()
delete test; test = 0;
#else
- QSKIP("Test needs Qt >= 0x040000 and accessibility support.", SkipAll);
+ QSKIP("Test needs accessibility support.", SkipAll);
#endif
}
@@ -1819,7 +1817,7 @@ void tst_QAccessibility::doAction()
#ifdef QTEST_ACCESSIBILITY
QSKIP("TODO: Implement me", SkipAll);
#else
- QSKIP("Test needs Qt >= 0x040000 and accessibility support.", SkipAll);
+ QSKIP("Test needs accessibility support.", SkipAll);
#endif
}
@@ -2006,7 +2004,7 @@ void tst_QAccessibility::buttonTest()
QTestAccessibility::clearEvents();
#else
-// QSKIP("Test needs Qt >= 0x040000 and accessibility support.", SkipAll);
+// QSKIP("Test needs accessibility support.", SkipAll);
QSKIP("No action interface in Qt 4 yet.", SkipAll);
#endif
}
@@ -2206,7 +2204,7 @@ void tst_QAccessibility::sliderTest()
QTestAccessibility::clearEvents();
#else
- QSKIP("Test needs Qt >= 0x040000 and accessibility support.", SkipAll);
+ QSKIP("Test needs accessibility support.", SkipAll);
#endif
#endif //!QT3_SUPPORT
}
@@ -2304,7 +2302,7 @@ void tst_QAccessibility::scrollBarTest()
QTestAccessibility::clearEvents();
#else
- QSKIP("Test needs Qt >= 0x040000 and accessibility support.", SkipAll);
+ QSKIP("Test needs accessibility support.", SkipAll);
#endif
}
@@ -2348,7 +2346,7 @@ void tst_QAccessibility::tabTest()
delete interface;
QTestAccessibility::clearEvents();
#else
- QSKIP("Test needs Qt >= 0x040000 and accessibility support.", SkipAll);
+ QSKIP("Test needs accessibility support.", SkipAll);
#endif
}
@@ -2536,8 +2534,6 @@ void tst_QAccessibility::menuTest()
}
delete iface;
-
-
// "New" item
entry = interface->navigate(QAccessible::Child, 1, &iface);
QCOMPARE(entry, 0);
@@ -2568,11 +2564,6 @@ void tst_QAccessibility::menuTest()
delete iface;
-
-
-#if QT_VERSION < 0x040102
- QEXPECT_FAIL("", "Submenus don't open, task 99301", Continue);
-#endif
// move mouse pointer away, since that might influence the
// subsequent tests
QTest::mouseMove(&mw, QPoint(-1, -1));
@@ -2582,9 +2573,6 @@ void tst_QAccessibility::menuTest()
interface->doAction(QAccessible::DefaultAction, 1);
QTestEventLoop::instance().enterLoop(2);
-#if defined (Q_OS_WIN) && QT_VERSION < 0x040300 && !defined(Q_OS_WINCE)
- QEXPECT_FAIL("", "Don't expect the File menu to be visible in 4.2", Continue);
-#endif
QVERIFY(file->isVisible());
QVERIFY(fileNew->isVisible());
QVERIFY(!edit->isVisible());
@@ -2592,8 +2580,8 @@ void tst_QAccessibility::menuTest()
QTestAccessibility::clearEvents();
mw.hide();
-
-
+
+
// Do not crash if the menu don't have a parent
QMenu *menu = new QMenu;
menu->addAction(QLatin1String("one"));
@@ -2607,7 +2595,7 @@ void tst_QAccessibility::menuTest()
delete iface2;
delete iface;
delete menu;
-
+
}
QTestAccessibility::clearEvents();
#else
@@ -2638,7 +2626,7 @@ void tst_QAccessibility::spinBoxTest()
delete spinBox;
QTestAccessibility::clearEvents();
#else
- QSKIP("Test needs Qt >= 0x040000 and accessibility support.", SkipAll);
+ QSKIP("Test needs accessibility support.", SkipAll);
#endif
}
@@ -2665,7 +2653,7 @@ void tst_QAccessibility::doubleSpinBoxTest()
delete doubleSpinBox;
QTestAccessibility::clearEvents();
#else
- QSKIP("Test needs Qt >= 0x040000 and accessibility support.", SkipAll);
+ QSKIP("Test needs accessibility support.", SkipAll);
#endif
}
@@ -2687,7 +2675,7 @@ void tst_QAccessibility::textEditTest()
}
QTestAccessibility::clearEvents();
#else
- QSKIP("Test needs Qt >= 0x040000 and accessibility support.", SkipAll);
+ QSKIP("Test needs accessibility support.", SkipAll);
#endif
}
@@ -2711,7 +2699,7 @@ void tst_QAccessibility::textBrowserTest()
}
QTestAccessibility::clearEvents();
#else
- QSKIP("Test needs Qt >= 0x040000 and accessibility support.", SkipAll);
+ QSKIP("Test needs accessibility support.", SkipAll);
#endif
}
@@ -2784,7 +2772,7 @@ void tst_QAccessibility::listViewTest()
}
QTestAccessibility::clearEvents();
#else
- QSKIP("Test needs Qt >= 0x040000 and accessibility support.", SkipAll);
+ QSKIP("Test needs accessibility support.", SkipAll);
#endif
}
@@ -2841,7 +2829,7 @@ void tst_QAccessibility::mdiAreaTest()
}
QTestAccessibility::clearEvents();
#else
- QSKIP("Test needs Qt >= 0x040000 and accessibility support.", SkipAll);
+ QSKIP("Test needs accessibility support.", SkipAll);
#endif
}
@@ -2971,7 +2959,7 @@ void tst_QAccessibility::mdiSubWindowTest()
}
QTestAccessibility::clearEvents();
#else
- QSKIP("Test needs Qt >= 0x040000 and accessibility support.", SkipAll);
+ QSKIP("Test needs accessibility support.", SkipAll);
#endif
}
@@ -3036,7 +3024,7 @@ void tst_QAccessibility::lineEditTest()
delete toplevel;
QTestAccessibility::clearEvents();
#else
- QSKIP("Test needs Qt >= 0x040000 and accessibility support.", SkipAll);
+ QSKIP("Test needs accessibility support.", SkipAll);
#endif
}
@@ -3097,7 +3085,7 @@ void tst_QAccessibility::workspaceTest()
}
QTestAccessibility::clearEvents();
#else
- QSKIP("Test needs Qt >= 0x040000 and accessibility support.", SkipAll);
+ QSKIP("Test needs accessibility support.", SkipAll);
#endif
}
@@ -3217,7 +3205,7 @@ void tst_QAccessibility::dialogButtonBoxTest()
}
QTestAccessibility::clearEvents();
#else
- QSKIP("Test needs Qt >= 0x040000 and accessibility support.", SkipAll);
+ QSKIP("Test needs accessibility support.", SkipAll);
#endif
}
@@ -3266,7 +3254,7 @@ void tst_QAccessibility::dialTest()
}
QTestAccessibility::clearEvents();
#else
- QSKIP("Test needs Qt >= 0x040000 and accessibility support.", SkipAll);
+ QSKIP("Test needs accessibility support.", SkipAll);
#endif
}
@@ -3280,7 +3268,7 @@ void tst_QAccessibility::rubberBandTest()
delete interface;
QTestAccessibility::clearEvents();
#else
- QSKIP("Test needs Qt >= 0x040000 and accessibility support.", SkipAll);
+ QSKIP("Test needs accessibility support.", SkipAll);
#endif
}
@@ -3445,7 +3433,7 @@ void tst_QAccessibility::abstractScrollAreaTest()
QTestAccessibility::clearEvents();
#else
- QSKIP("Test needs Qt >= 0x040000 and accessibility support.", SkipAll);
+ QSKIP("Test needs accessibility support.", SkipAll);
#endif
}
@@ -3466,7 +3454,7 @@ void tst_QAccessibility::scrollAreaTest()
}
QTestAccessibility::clearEvents();
#else
- QSKIP("Test needs Qt >= 0x040000 and accessibility support.", SkipAll);
+ QSKIP("Test needs accessibility support.", SkipAll);
#endif
}
@@ -3511,7 +3499,7 @@ void tst_QAccessibility::tableWidgetTest()
}
QTestAccessibility::clearEvents();
#else
- QSKIP("Test needs Qt >= 0x040000 and accessibility support.", SkipAll);
+ QSKIP("Test needs accessibility support.", SkipAll);
#endif
}
@@ -3629,7 +3617,7 @@ void tst_QAccessibility::tableViewTest()
QCOMPARE(client->role(0), QAccessible::Client);
QRect globalRect = client->rect(0);
QVERIFY(globalRect.isValid());
- // make sure we don't hit the vertical header #####
+ // make sure we don't hit the vertical header #####
QPoint p = globalRect.topLeft() + QPoint(8, 8);
p.ry() += 50 * (y - 1);
p.rx() += 100 * (x - 1);
@@ -3677,7 +3665,7 @@ void tst_QAccessibility::tableViewTest()
}
QTestAccessibility::clearEvents();
#else
- QSKIP("Test needs Qt >= 0x040000 and accessibility support.", SkipAll);
+ QSKIP("Test needs accessibility support.", SkipAll);
#endif
}
@@ -3778,7 +3766,7 @@ void tst_QAccessibility::calendarWidgetTest()
}
QTestAccessibility::clearEvents();
#else
- QSKIP("Test needs Qt >= 0x040000 and accessibility support.", SkipAll);
+ QSKIP("Test needs accessibility support.", SkipAll);
#endif
#endif // QT_NO_CALENDARWIDGET
}
@@ -3856,7 +3844,7 @@ void tst_QAccessibility::dockWidgetTest()
delete mw;
QTestAccessibility::clearEvents();
#else
- QSKIP("Test needs Qt >= 0x040000 and accessibility support.", SkipAll);
+ QSKIP("Test needs accessibility support.", SkipAll);
#endif
#endif // QT_NO_DOCKWIDGET
}
@@ -3902,7 +3890,7 @@ void tst_QAccessibility::pushButtonTest()
delete toplevel;
QTestAccessibility::clearEvents();
#else
- QSKIP("Test needs Qt >= 0x040000 and accessibility support.", SkipAll);
+ QSKIP("Test needs accessibility support.", SkipAll);
#endif
#endif //QT3_SUPPORT
}
@@ -3949,7 +3937,7 @@ void tst_QAccessibility::comboBoxTest()
QTestAccessibility::clearEvents();
#else
- QSKIP("Test needs Qt >= 0x040000 and accessibility support.", SkipAll);
+ QSKIP("Test needs accessibility support.", SkipAll);
#endif
}
@@ -3988,13 +3976,12 @@ void tst_QAccessibility::treeWidgetTest()
QCOMPARE(entry, 0);
QCOMPARE(accTreeItem2->text(QAccessible::Name, 0), QLatin1String("row: 1"));
-
- // test selected/focused state
+ // test selected/focused state
QItemSelectionModel *selModel = tree->selectionModel();
QVERIFY(selModel);
selModel->select(QItemSelection(tree->model()->index(0, 0), tree->model()->index(3, 0)), QItemSelectionModel::Select);
selModel->setCurrentIndex(tree->model()->index(1, 0), QItemSelectionModel::Current);
-
+
for (int i = 1; i < 10 ; ++i) {
QAccessible::State expected;
if (i <= 5 && i >= 2)
@@ -4014,10 +4001,9 @@ void tst_QAccessibility::treeWidgetTest()
delete acc;
delete w;
-
QTestAccessibility::clearEvents();
#else
- QSKIP("Test needs Qt >= 0x040000 and accessibility support.", SkipAll);
+ QSKIP("Test needs accessibility support.", SkipAll);
#endif
}
@@ -4046,6 +4032,45 @@ void tst_QAccessibility::labelTest()
#endif
}
+void tst_QAccessibility::accelerators()
+{
+#ifdef QTEST_ACCESSIBILITY
+ QWidget *window = new QWidget;
+ QHBoxLayout *lay = new QHBoxLayout(window);
+ QLabel *label = new QLabel(tr("&Line edit"), window);
+ QLineEdit *le = new QLineEdit(window);
+ lay->addWidget(label);
+ lay->addWidget(le);
+ label->setBuddy(le);
+
+ window->show();
+
+ QAccessibleInterface *accLineEdit = QAccessible::queryAccessibleInterface(le);
+ QCOMPARE(accLineEdit->text(QAccessible::Accelerator, 0), QKeySequence(Qt::ALT).toString() + QLatin1String("L"));
+ label->setText(tr("Q &"));
+ QCOMPARE(accLineEdit->text(QAccessible::Accelerator, 0), QString());
+ label->setText(tr("Q &&"));
+ QCOMPARE(accLineEdit->text(QAccessible::Accelerator, 0), QString());
+ label->setText(tr("Q && A"));
+ QCOMPARE(accLineEdit->text(QAccessible::Accelerator, 0), QString());
+ label->setText(tr("Q &&&A"));
+ QCOMPARE(accLineEdit->text(QAccessible::Accelerator, 0), QKeySequence(Qt::ALT).toString() + QLatin1String("A"));
+ label->setText(tr("Q &&A"));
+ QCOMPARE(accLineEdit->text(QAccessible::Accelerator, 0), QString());
+ label->setText(tr("Q &A&B"));
+ QCOMPARE(accLineEdit->text(QAccessible::Accelerator, 0), QKeySequence(Qt::ALT).toString() + QLatin1String("A"));
+
+#if defined(Q_WS_X11)
+ qt_x11_wait_for_window_manager(window);
+#endif
+ QTest::qWait(100);
+ delete window;
+ QTestAccessibility::clearEvents();
+#else
+ QSKIP("Test needs Qt >= 0x040000 and accessibility support.", SkipAll);
+#endif
+}
+
QTEST_MAIN(tst_QAccessibility)
diff --git a/tests/auto/qalgorithms/tst_qalgorithms.cpp b/tests/auto/qalgorithms/tst_qalgorithms.cpp
index 9c2fa50..423cf69 100644
--- a/tests/auto/qalgorithms/tst_qalgorithms.cpp
+++ b/tests/auto/qalgorithms/tst_qalgorithms.cpp
@@ -574,10 +574,8 @@ void tst_QAlgorithms::test_qLowerBound()
QCOMPARE(qLowerBound(data.constBegin(), data.constEnd(), resultValue), data.constBegin() + resultIndex);
QCOMPARE(qLowerBound(data.begin(), data.end(), resultValue), data.begin() + resultIndex);
-#if QT_VERSION >= 0x040200
QCOMPARE(qLowerBound(data, resultValue), data.constBegin() + resultIndex);
QCOMPARE(qLowerBound(data.constBegin(), data.constEnd(), resultValue, qLess<int>()), data.constBegin() + resultIndex);
-#endif
}
void tst_QAlgorithms::test_qUpperBound_data()
@@ -597,10 +595,8 @@ void tst_QAlgorithms::test_qUpperBound()
QCOMPARE(qUpperBound(data.constBegin(), data.constEnd(), resultValue), data.constBegin() + resultIndex);
QCOMPARE(qUpperBound(data.begin(), data.end(), resultValue), data.begin() + resultIndex);
-#if QT_VERSION >= 0x040200
QCOMPARE(qUpperBound(data, resultValue), data.constBegin() + resultIndex);
QCOMPARE(qUpperBound(data.constBegin(), data.constEnd(), resultValue, qLess<int>()), data.constBegin() + resultIndex);
-#endif
}
void tst_QAlgorithms::test_qBinaryFind_data()
@@ -618,10 +614,8 @@ void tst_QAlgorithms::test_qBinaryFind()
QCOMPARE(*qBinaryFind(data.constBegin(), data.constEnd(), resultValue), resultValue);
QCOMPARE(*qBinaryFind(data.begin(), data.end(), resultValue), resultValue);
-#if QT_VERSION >= 0x040200
QCOMPARE(*qBinaryFind(data, resultValue), resultValue);
QCOMPARE(*qBinaryFind(data.constBegin(), data.constEnd(), resultValue, qLess<int>()), resultValue);
-#endif
}
void tst_QAlgorithms::qBinaryFindOneEntry()
@@ -802,7 +796,6 @@ void tst_QAlgorithms::stableSortCorrectnessTest()
void tst_QAlgorithms::convenienceAPI()
{
// Compile-test for QAlgorithm convenience functions.
-#if QT_VERSION >= 0x040200
QList<int> list, list2;
qCopy(list.begin(), list.end(), list2.begin());
@@ -844,7 +837,6 @@ void tst_QAlgorithms::convenienceAPI()
QList<int *> pointerList;
qDeleteAll(pointerList);
qDeleteAll(pointerList.begin(), pointerList.end());
-#endif
}
template <typename DataType>
diff --git a/tests/auto/qbitarray/tst_qbitarray.cpp b/tests/auto/qbitarray/tst_qbitarray.cpp
index bbcb087..ecdffda 100644
--- a/tests/auto/qbitarray/tst_qbitarray.cpp
+++ b/tests/auto/qbitarray/tst_qbitarray.cpp
@@ -212,10 +212,8 @@ void tst_QBitArray::countBits()
}
QCOMPARE(bits.count(), numBits);
-#if QT_VERSION >= 0x040100
QCOMPARE(bits.count(true), onBits);
QCOMPARE(bits.count(false), numBits - onBits);
-#endif
}
void tst_QBitArray::countBits2()
@@ -314,7 +312,7 @@ void tst_QBitArray::toggleBit_data()
}
void tst_QBitArray::toggleBit()
-{
+{
QFETCH(int,index);
QFETCH(QBitArray, input);
QFETCH(QBitArray, res);
@@ -322,7 +320,6 @@ void tst_QBitArray::toggleBit()
input.toggleBit(index);
QCOMPARE(input, res);
-
}
void tst_QBitArray::operator_andeq_data()
@@ -331,33 +328,33 @@ void tst_QBitArray::operator_andeq_data()
QTest::addColumn<QBitArray>("input2");
QTest::addColumn<QBitArray>("res");
- QTest::newRow( "data0" ) << QStringToQBitArray(QString("11111111"))
- << QStringToQBitArray(QString("00101100"))
+ QTest::newRow( "data0" ) << QStringToQBitArray(QString("11111111"))
+ << QStringToQBitArray(QString("00101100"))
<< QStringToQBitArray(QString("00101100"));
- QTest::newRow( "data1" ) << QStringToQBitArray(QString("11011011"))
- << QStringToQBitArray(QString("00101100"))
+ QTest::newRow( "data1" ) << QStringToQBitArray(QString("11011011"))
+ << QStringToQBitArray(QString("00101100"))
<< QStringToQBitArray(QString("00001000"));
- QTest::newRow( "data2" ) << QStringToQBitArray(QString("11011011111"))
- << QStringToQBitArray(QString("00101100"))
+ QTest::newRow( "data2" ) << QStringToQBitArray(QString("11011011111"))
+ << QStringToQBitArray(QString("00101100"))
<< QStringToQBitArray(QString("00001000000"));
- QTest::newRow( "data3" ) << QStringToQBitArray(QString("11011011"))
- << QStringToQBitArray(QString("00101100111"))
+ QTest::newRow( "data3" ) << QStringToQBitArray(QString("11011011"))
+ << QStringToQBitArray(QString("00101100111"))
<< QStringToQBitArray(QString("00001000000"));
- QTest::newRow( "data4" ) << QStringToQBitArray(QString())
- << QStringToQBitArray(QString("00101100111"))
+ QTest::newRow( "data4" ) << QStringToQBitArray(QString())
+ << QStringToQBitArray(QString("00101100111"))
<< QStringToQBitArray(QString("00000000000"));
- QTest::newRow( "data5" ) << QStringToQBitArray(QString("00101100111"))
- << QStringToQBitArray(QString())
+ QTest::newRow( "data5" ) << QStringToQBitArray(QString("00101100111"))
+ << QStringToQBitArray(QString())
<< QStringToQBitArray(QString("00000000000"));
- QTest::newRow( "data6" ) << QStringToQBitArray(QString())
- << QStringToQBitArray(QString())
+ QTest::newRow( "data6" ) << QStringToQBitArray(QString())
+ << QStringToQBitArray(QString())
<< QStringToQBitArray(QString());
}
@@ -370,7 +367,6 @@ void tst_QBitArray::operator_andeq()
input1&=input2;
QCOMPARE(input1, res);
-
}
void tst_QBitArray::operator_oreq_data()
@@ -379,37 +375,37 @@ void tst_QBitArray::operator_oreq_data()
QTest::addColumn<QBitArray>("input2");
QTest::addColumn<QBitArray>("res");
- QTest::newRow( "data0" ) << QStringToQBitArray(QString("11111111"))
- << QStringToQBitArray(QString("00101100"))
+ QTest::newRow( "data0" ) << QStringToQBitArray(QString("11111111"))
+ << QStringToQBitArray(QString("00101100"))
<< QStringToQBitArray(QString("11111111"));
- QTest::newRow( "data1" ) << QStringToQBitArray(QString("11011011"))
- << QStringToQBitArray(QString("00101100"))
+ QTest::newRow( "data1" ) << QStringToQBitArray(QString("11011011"))
+ << QStringToQBitArray(QString("00101100"))
<< QStringToQBitArray(QString("11111111"));
- QTest::newRow( "data2" ) << QStringToQBitArray(QString("01000010"))
- << QStringToQBitArray(QString("10100001"))
+ QTest::newRow( "data2" ) << QStringToQBitArray(QString("01000010"))
+ << QStringToQBitArray(QString("10100001"))
<< QStringToQBitArray(QString("11100011"));
- QTest::newRow( "data3" ) << QStringToQBitArray(QString("11011011"))
- << QStringToQBitArray(QString("00101100000"))
+ QTest::newRow( "data3" ) << QStringToQBitArray(QString("11011011"))
+ << QStringToQBitArray(QString("00101100000"))
<< QStringToQBitArray(QString("11111111000"));
- QTest::newRow( "data4" ) << QStringToQBitArray(QString("11011011111"))
- << QStringToQBitArray(QString("00101100"))
+ QTest::newRow( "data4" ) << QStringToQBitArray(QString("11011011111"))
+ << QStringToQBitArray(QString("00101100"))
<< QStringToQBitArray(QString("11111111111"));
- QTest::newRow( "data5" ) << QStringToQBitArray(QString())
- << QStringToQBitArray(QString("00101100111"))
+ QTest::newRow( "data5" ) << QStringToQBitArray(QString())
+ << QStringToQBitArray(QString("00101100111"))
<< QStringToQBitArray(QString("00101100111"));
- QTest::newRow( "data6" ) << QStringToQBitArray(QString("00101100111"))
- << QStringToQBitArray(QString())
+ QTest::newRow( "data6" ) << QStringToQBitArray(QString("00101100111"))
+ << QStringToQBitArray(QString())
<< QStringToQBitArray(QString("00101100111"));
-
- QTest::newRow( "data7" ) << QStringToQBitArray(QString())
- << QStringToQBitArray(QString())
+
+ QTest::newRow( "data7" ) << QStringToQBitArray(QString())
+ << QStringToQBitArray(QString())
<< QStringToQBitArray(QString());
}
@@ -422,7 +418,6 @@ void tst_QBitArray::operator_oreq()
input1|=input2;
QCOMPARE(input1, res);
-
}
void tst_QBitArray::operator_xoreq_data()
@@ -430,36 +425,36 @@ void tst_QBitArray::operator_xoreq_data()
QTest::addColumn<QBitArray>("input1");
QTest::addColumn<QBitArray>("input2");
QTest::addColumn<QBitArray>("res");
- QTest::newRow( "data0" ) << QStringToQBitArray(QString("11111111"))
- << QStringToQBitArray(QString("00101100"))
+ QTest::newRow( "data0" ) << QStringToQBitArray(QString("11111111"))
+ << QStringToQBitArray(QString("00101100"))
<< QStringToQBitArray(QString("11010011"));
- QTest::newRow( "data1" ) << QStringToQBitArray(QString("11011011"))
- << QStringToQBitArray(QString("00101100"))
+ QTest::newRow( "data1" ) << QStringToQBitArray(QString("11011011"))
+ << QStringToQBitArray(QString("00101100"))
<< QStringToQBitArray(QString("11110111"));
- QTest::newRow( "data2" ) << QStringToQBitArray(QString("01000010"))
- << QStringToQBitArray(QString("10100001"))
+ QTest::newRow( "data2" ) << QStringToQBitArray(QString("01000010"))
+ << QStringToQBitArray(QString("10100001"))
<< QStringToQBitArray(QString("11100011"));
- QTest::newRow( "data3" ) << QStringToQBitArray(QString("01000010"))
- << QStringToQBitArray(QString("10100001101"))
+ QTest::newRow( "data3" ) << QStringToQBitArray(QString("01000010"))
+ << QStringToQBitArray(QString("10100001101"))
<< QStringToQBitArray(QString("11100011101"));
- QTest::newRow( "data4" ) << QStringToQBitArray(QString("01000010111"))
- << QStringToQBitArray(QString("101000011"))
+ QTest::newRow( "data4" ) << QStringToQBitArray(QString("01000010111"))
+ << QStringToQBitArray(QString("101000011"))
<< QStringToQBitArray(QString("11100011011"));
- QTest::newRow( "data5" ) << QStringToQBitArray(QString())
- << QStringToQBitArray(QString("00101100111"))
+ QTest::newRow( "data5" ) << QStringToQBitArray(QString())
+ << QStringToQBitArray(QString("00101100111"))
<< QStringToQBitArray(QString("00101100111"));
- QTest::newRow( "data6" ) << QStringToQBitArray(QString("00101100111"))
- << QStringToQBitArray(QString())
+ QTest::newRow( "data6" ) << QStringToQBitArray(QString("00101100111"))
+ << QStringToQBitArray(QString())
<< QStringToQBitArray(QString("00101100111"));
-
- QTest::newRow( "data7" ) << QStringToQBitArray(QString())
- << QStringToQBitArray(QString())
+
+ QTest::newRow( "data7" ) << QStringToQBitArray(QString())
+ << QStringToQBitArray(QString())
<< QStringToQBitArray(QString());
}
@@ -472,7 +467,6 @@ void tst_QBitArray::operator_xoreq()
input1^=input2;
QCOMPARE(input1, res);
-
}
@@ -481,37 +475,37 @@ void tst_QBitArray::operator_neg_data()
QTest::addColumn<QBitArray>("input");
QTest::addColumn<QBitArray>("res");
- QTest::newRow( "data0" ) << QStringToQBitArray(QString("11111111"))
+ QTest::newRow( "data0" ) << QStringToQBitArray(QString("11111111"))
<< QStringToQBitArray(QString("00000000"));
- QTest::newRow( "data1" ) << QStringToQBitArray(QString("11011011"))
+ QTest::newRow( "data1" ) << QStringToQBitArray(QString("11011011"))
<< QStringToQBitArray(QString("00100100"));
- QTest::newRow( "data2" ) << QStringToQBitArray(QString("00000000"))
+ QTest::newRow( "data2" ) << QStringToQBitArray(QString("00000000"))
<< QStringToQBitArray(QString("11111111"));
- QTest::newRow( "data3" ) << QStringToQBitArray(QString())
+ QTest::newRow( "data3" ) << QStringToQBitArray(QString())
<< QStringToQBitArray(QString());
- QTest::newRow( "data4" ) << QStringToQBitArray("1")
+ QTest::newRow( "data4" ) << QStringToQBitArray("1")
<< QStringToQBitArray("0");
- QTest::newRow( "data5" ) << QStringToQBitArray("0")
+ QTest::newRow( "data5" ) << QStringToQBitArray("0")
<< QStringToQBitArray("1");
- QTest::newRow( "data6" ) << QStringToQBitArray("01")
+ QTest::newRow( "data6" ) << QStringToQBitArray("01")
<< QStringToQBitArray("10");
- QTest::newRow( "data7" ) << QStringToQBitArray("1110101")
+ QTest::newRow( "data7" ) << QStringToQBitArray("1110101")
<< QStringToQBitArray("0001010");
- QTest::newRow( "data8" ) << QStringToQBitArray("01110101")
+ QTest::newRow( "data8" ) << QStringToQBitArray("01110101")
<< QStringToQBitArray("10001010");
- QTest::newRow( "data9" ) << QStringToQBitArray("011101010")
+ QTest::newRow( "data9" ) << QStringToQBitArray("011101010")
<< QStringToQBitArray("100010101");
- QTest::newRow( "data10" ) << QStringToQBitArray("0111010101111010")
+ QTest::newRow( "data10" ) << QStringToQBitArray("0111010101111010")
<< QStringToQBitArray("1000101010000101");
}
@@ -521,9 +515,8 @@ void tst_QBitArray::operator_neg()
QFETCH(QBitArray, res);
input = ~input;
-
- QCOMPARE(input, res);
+ QCOMPARE(input, res);
}
void tst_QBitArray::datastream_data()
@@ -554,7 +547,7 @@ void tst_QBitArray::datastream()
QFETCH(QString, bitField);
QFETCH(int, numBits);
QFETCH(int, onBits);
-
+
QBuffer buffer;
QVERIFY(buffer.open(QBuffer::ReadWrite));
QDataStream stream(&buffer);
@@ -566,11 +559,9 @@ void tst_QBitArray::datastream()
}
QCOMPARE(bits.count(), numBits);
-#if QT_VERSION >= 0x040100
QCOMPARE(bits.count(true), onBits);
QCOMPARE(bits.count(false), numBits - onBits);
-#endif
-
+
stream << bits << bits << bits;
buffer.close();
@@ -583,10 +574,8 @@ void tst_QBitArray::datastream()
stream2 >> array1 >> array2 >> array3;
QCOMPARE(array1.count(), numBits);
-#if QT_VERSION >= 0x040100
QCOMPARE(array1.count(true), onBits);
QCOMPARE(array1.count(false), numBits - onBits);
-#endif
QCOMPARE(array1, bits);
QCOMPARE(array2, bits);
@@ -595,7 +584,7 @@ void tst_QBitArray::datastream()
void tst_QBitArray::invertOnNull() const
{
- QBitArray a;
+ QBitArray a;
QCOMPARE(a = ~a, QBitArray());
}
@@ -605,28 +594,28 @@ void tst_QBitArray::operator_noteq_data()
QTest::addColumn<QBitArray>("input2");
QTest::addColumn<bool>("res");
- QTest::newRow("data0") << QStringToQBitArray(QString("11111111"))
- << QStringToQBitArray(QString("00101100"))
+ QTest::newRow("data0") << QStringToQBitArray(QString("11111111"))
+ << QStringToQBitArray(QString("00101100"))
<< true;
- QTest::newRow("data1") << QStringToQBitArray(QString("11011011"))
- << QStringToQBitArray(QString("11011011"))
+ QTest::newRow("data1") << QStringToQBitArray(QString("11011011"))
+ << QStringToQBitArray(QString("11011011"))
<< false;
- QTest::newRow("data2") << QStringToQBitArray(QString())
- << QStringToQBitArray(QString("00101100111"))
+ QTest::newRow("data2") << QStringToQBitArray(QString())
+ << QStringToQBitArray(QString("00101100111"))
<< true;
- QTest::newRow("data3") << QStringToQBitArray(QString())
- << QStringToQBitArray(QString())
+ QTest::newRow("data3") << QStringToQBitArray(QString())
+ << QStringToQBitArray(QString())
<< false;
- QTest::newRow("data4") << QStringToQBitArray(QString("00101100"))
- << QStringToQBitArray(QString("11111111"))
+ QTest::newRow("data4") << QStringToQBitArray(QString("00101100"))
+ << QStringToQBitArray(QString("11111111"))
<< true;
- QTest::newRow("data5") << QStringToQBitArray(QString("00101100111"))
- << QStringToQBitArray(QString())
+ QTest::newRow("data5") << QStringToQBitArray(QString("00101100111"))
+ << QStringToQBitArray(QString())
<< true;
}
diff --git a/tests/auto/qbuttongroup/tst_qbuttongroup.cpp b/tests/auto/qbuttongroup/tst_qbuttongroup.cpp
index c38fb66..15cca56 100644
--- a/tests/auto/qbuttongroup/tst_qbuttongroup.cpp
+++ b/tests/auto/qbuttongroup/tst_qbuttongroup.cpp
@@ -95,10 +95,7 @@ private slots:
void checkedButton();
- // fixed for Qt 4.2.0
-#if QT_VERSION >= 0x040200
void task106609();
-#endif
void task209485_removeFromGroupInEventHandler_data();
void task209485_removeFromGroupInEventHandler();
@@ -211,7 +208,6 @@ void tst_QButtonGroup::arrowKeyNavigation()
void tst_QButtonGroup::exclusiveWithActions()
{
-#if QT_VERSION > 0x040100
QDialog dlg(0);
QHBoxLayout layout(&dlg);
QAction *action1 = new QAction("Action 1", &dlg);
@@ -235,7 +231,7 @@ void tst_QButtonGroup::exclusiveWithActions()
buttonGroup->addButton(toolButton2, 2);
buttonGroup->addButton(toolButton3, 3);
dlg.show();
-
+
QTest::mouseClick(toolButton1, Qt::LeftButton);
QVERIFY(toolButton1->isChecked());
QVERIFY(action1->isChecked());
@@ -251,7 +247,7 @@ void tst_QButtonGroup::exclusiveWithActions()
QVERIFY(!toolButton3->isChecked());
QVERIFY(!action1->isChecked());
QVERIFY(!action3->isChecked());
-
+
QTest::mouseClick(toolButton3, Qt::LeftButton);
QVERIFY(toolButton3->isChecked());
QVERIFY(action3->isChecked());
@@ -259,7 +255,7 @@ void tst_QButtonGroup::exclusiveWithActions()
QVERIFY(!toolButton2->isChecked());
QVERIFY(!action1->isChecked());
QVERIFY(!action2->isChecked());
-
+
QTest::mouseClick(toolButton2, Qt::LeftButton);
QVERIFY(toolButton2->isChecked());
QVERIFY(action2->isChecked());
@@ -267,7 +263,6 @@ void tst_QButtonGroup::exclusiveWithActions()
QVERIFY(!toolButton3->isChecked());
QVERIFY(!action1->isChecked());
QVERIFY(!action3->isChecked());
-#endif
}
void tst_QButtonGroup::exclusive()
@@ -289,7 +284,7 @@ void tst_QButtonGroup::exclusive()
buttonGroup->addButton(pushButton2, 2);
buttonGroup->addButton(pushButton3, 3);
dlg.show();
-
+
QTest::mouseClick(pushButton1, Qt::LeftButton);
QVERIFY(pushButton1->isChecked());
QVERIFY(!pushButton2->isChecked());
@@ -299,12 +294,12 @@ void tst_QButtonGroup::exclusive()
QVERIFY(pushButton2->isChecked());
QVERIFY(!pushButton1->isChecked());
QVERIFY(!pushButton3->isChecked());
-
+
QTest::mouseClick(pushButton3, Qt::LeftButton);
QVERIFY(pushButton3->isChecked());
QVERIFY(!pushButton1->isChecked());
QVERIFY(!pushButton2->isChecked());
-
+
QTest::mouseClick(pushButton2, Qt::LeftButton);
QVERIFY(pushButton2->isChecked());
QVERIFY(!pushButton1->isChecked());
@@ -363,7 +358,6 @@ void tst_QButtonGroup::testSignals()
QVERIFY(releasedIdSpy.takeFirst().at(0).toInt() == 23);
}
-#if QT_VERSION >= 0x040200
void tst_QButtonGroup::task106609()
{
// task is:
@@ -403,7 +397,6 @@ void tst_QButtonGroup::task106609()
QCOMPARE(spy2.count(), 2);
QCOMPARE(spy1.count(), 2);
}
-#endif
void tst_QButtonGroup::checkedButton()
{
diff --git a/tests/auto/qbytearraymatcher/qbytearraymatcher.pro b/tests/auto/qbytearraymatcher/qbytearraymatcher.pro
new file mode 100644
index 0000000..1618c3e
--- /dev/null
+++ b/tests/auto/qbytearraymatcher/qbytearraymatcher.pro
@@ -0,0 +1,4 @@
+load(qttest_p4)
+SOURCES += tst_qbytearraymatcher.cpp
+
+QT = core
diff --git a/tests/auto/qbytearraymatcher/tst_qbytearraymatcher.cpp b/tests/auto/qbytearraymatcher/tst_qbytearraymatcher.cpp
new file mode 100644
index 0000000..c3f2fd9
--- /dev/null
+++ b/tests/auto/qbytearraymatcher/tst_qbytearraymatcher.cpp
@@ -0,0 +1,124 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (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 either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** 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.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+
+#include <qbytearraymatcher.h>
+
+class tst_QByteArrayMatcher : public QObject
+{
+ Q_OBJECT
+
+private slots:
+ void interface();
+ void task251958();
+};
+
+static QByteArrayMatcher matcher1;
+
+void tst_QByteArrayMatcher::interface()
+{
+ const char needle[] = "abc123";
+ QByteArray haystack(500, 'a');
+ haystack.insert(6, "123");
+ haystack.insert(31, "abc");
+ haystack.insert(42, "abc123");
+ haystack.insert(84, "abc123");
+
+ matcher1 = QByteArrayMatcher(QByteArray(needle));
+ QByteArrayMatcher matcher2;
+ matcher2.setPattern(QByteArray(needle));
+
+ QByteArrayMatcher matcher3 = QByteArrayMatcher(QByteArray(needle));
+ QByteArrayMatcher matcher4(needle, sizeof(needle - 1));
+ QByteArrayMatcher matcher5(matcher2);
+ QByteArrayMatcher matcher6;
+ matcher6 = matcher3;
+
+ QCOMPARE(matcher1.indexIn(haystack), 42);
+ QCOMPARE(matcher2.indexIn(haystack), 42);
+ QCOMPARE(matcher3.indexIn(haystack), 42);
+ QCOMPARE(matcher4.indexIn(haystack), 42);
+ QCOMPARE(matcher5.indexIn(haystack), 42);
+ QCOMPARE(matcher6.indexIn(haystack), 42);
+
+ QCOMPARE(matcher1.indexIn(haystack.constData(), haystack.length()), 42);
+
+ QCOMPARE(matcher1.indexIn(haystack, 43), 84);
+ QCOMPARE(matcher1.indexIn(haystack.constData(), haystack.length(), 43), 84);
+ QCOMPARE(matcher1.indexIn(haystack, 85), -1);
+ QCOMPARE(matcher1.indexIn(haystack.constData(), haystack.length(), 85), -1);
+
+ QByteArrayMatcher matcher7(QByteArray("123"));
+ QCOMPARE(matcher7.indexIn(haystack), 6);
+
+ matcher7 = QByteArrayMatcher(QByteArray("abc"));
+ QCOMPARE(matcher7.indexIn(haystack), 31);
+
+ matcher7.setPattern(matcher4.pattern());
+ QCOMPARE(matcher7.indexIn(haystack), 42);
+}
+
+
+static QByteArrayMatcher matcher;
+
+void tst_QByteArrayMatcher::task251958()
+{
+ const char p_data[] = { 0x0, 0x0, 0x1 };
+ QByteArray pattern(p_data, sizeof(p_data));
+
+ QByteArray haystack(8, '\0');
+ haystack[7] = 0x1;
+
+ matcher = QByteArrayMatcher(pattern);
+ QCOMPARE(matcher.indexIn(haystack, 0), 5);
+ QCOMPARE(matcher.indexIn(haystack, 1), 5);
+ QCOMPARE(matcher.indexIn(haystack, 2), 5);
+
+ matcher.setPattern(pattern);
+ QCOMPARE(matcher.indexIn(haystack, 0), 5);
+ QCOMPARE(matcher.indexIn(haystack, 1), 5);
+ QCOMPARE(matcher.indexIn(haystack, 2), 5);
+}
+
+QTEST_APPLESS_MAIN(tst_QByteArrayMatcher)
+#include "tst_qbytearraymatcher.moc"
diff --git a/tests/auto/qcache/tst_qcache.cpp b/tests/auto/qcache/tst_qcache.cpp
index f0d0454..2b61467 100644
--- a/tests/auto/qcache/tst_qcache.cpp
+++ b/tests/auto/qcache/tst_qcache.cpp
@@ -39,10 +39,8 @@
**
****************************************************************************/
-
#include <QtTest/QtTest>
-
#include <qcache.h>
//TESTED_CLASS=
@@ -56,7 +54,6 @@ public:
tst_QCache();
virtual ~tst_QCache();
-
public slots:
void initTestCase();
void cleanupTestCase();
@@ -344,7 +341,7 @@ void tst_QCache::remove()
QCOMPARE(cache.totalCost(), 20);
}
- cache.setMaxCost(1);
+ cache.setMaxCost(1);
QCOMPARE(cache.size(), 0);
cache.remove("beta");
QCOMPARE(cache.size(), 0);
@@ -377,7 +374,7 @@ void tst_QCache::take()
QCOMPARE(cache.size(), 1);
QCOMPARE(cache.totalCost(), 20);
- cache.setMaxCost(1);
+ cache.setMaxCost(1);
QCOMPARE(cache.size(), 0);
QCOMPARE(cache.take("beta"), (Foo*)0);
QCOMPARE(cache.size(), 0);
@@ -389,15 +386,8 @@ struct KeyType
KeyType(int x) : foo(x) {}
- /*
- Qt 4.0 and 4.1 require a default ctor and an operator=().
- */
-#if QT_VERSION < 0x040200
- KeyType() : foo(0) {}
-#else
private:
KeyType &operator=(const KeyType &);
-#endif
};
struct ValueType
diff --git a/tests/auto/qcalendarwidget/tst_qcalendarwidget.cpp b/tests/auto/qcalendarwidget/tst_qcalendarwidget.cpp
index 67a822f..617832b 100644
--- a/tests/auto/qcalendarwidget/tst_qcalendarwidget.cpp
+++ b/tests/auto/qcalendarwidget/tst_qcalendarwidget.cpp
@@ -47,6 +47,8 @@
#include <qspinbox.h>
#include <qmenu.h>
#include <qdebug.h>
+#include <qdatetime.h>
+#include <qtextformat.h>
//TESTED_CLASS=
@@ -68,6 +70,11 @@ public slots:
private slots:
void getSetCheck();
void buttonClickCheck();
+
+ void setTextFormat();
+ void resetTextFormat();
+
+ void setWeekdayFormat();
};
// Testing get/set functions
@@ -215,6 +222,52 @@ void tst_QCalendarWidget::buttonClickCheck()
}
+void tst_QCalendarWidget::setTextFormat()
+{
+ QCalendarWidget calendar;
+ QTextCharFormat format;
+ format.setFontItalic(true);
+ format.setForeground(Qt::green);
+
+ const QDate date(1984, 10, 20);
+ calendar.setDateTextFormat(date, format);
+ QCOMPARE(calendar.dateTextFormat(date), format);
+}
+
+void tst_QCalendarWidget::resetTextFormat()
+{
+ QCalendarWidget calendar;
+ QTextCharFormat format;
+ format.setFontItalic(true);
+ format.setForeground(Qt::green);
+
+ const QDate date(1984, 10, 20);
+ calendar.setDateTextFormat(date, format);
+
+ calendar.setDateTextFormat(QDate(), QTextCharFormat());
+ QCOMPARE(calendar.dateTextFormat(date), QTextCharFormat());
+}
+
+void tst_QCalendarWidget::setWeekdayFormat()
+{
+ QCalendarWidget calendar;
+
+ QTextCharFormat format;
+ format.setFontItalic(true);
+ format.setForeground(Qt::green);
+
+ calendar.setWeekdayTextFormat(Qt::Wednesday, format);
+
+ // check the format of the a given month
+ for (int i = 1; i <= 31; ++i) {
+ const QDate date(1984, 10, i);
+ const Qt::DayOfWeek dayOfWeek = static_cast<Qt::DayOfWeek>(date.dayOfWeek());
+ if (dayOfWeek == Qt::Wednesday)
+ QCOMPARE(calendar.weekdayTextFormat(dayOfWeek), format);
+ else
+ QVERIFY(calendar.weekdayTextFormat(dayOfWeek) != format);
+ }
+}
tst_QCalendarWidget::tst_QCalendarWidget()
{
diff --git a/tests/auto/qcheckbox/tst_qcheckbox.cpp b/tests/auto/qcheckbox/tst_qcheckbox.cpp
index be1095a..9ffeb07 100644
--- a/tests/auto/qcheckbox/tst_qcheckbox.cpp
+++ b/tests/auto/qcheckbox/tst_qcheckbox.cpp
@@ -377,10 +377,8 @@ void tst_QCheckBox::onStateChanged( int state )
void tst_QCheckBox::stateChanged()
{
-#if QT_VERSION > 0x040101
QSignalSpy stateChangedSpy(testWidget, SIGNAL(stateChanged(int)));
-#endif
- connect(testWidget, SIGNAL(stateChanged(int)), this, SLOT(onStateChanged(int)));
+ connect(testWidget, SIGNAL(stateChanged(int)), this, SLOT(onStateChanged(int)));
cur_state = -1;
testWidget->setChecked( TRUE );
qApp->processEvents();
@@ -396,12 +394,10 @@ void tst_QCheckBox::stateChanged()
qApp->processEvents();
QCOMPARE( cur_state, (int)1 );
-#if QT_VERSION > 0x040101
QCOMPARE(stateChangedSpy.count(), 3);
testWidget->setCheckState(Qt::PartiallyChecked);
qApp->processEvents();
QCOMPARE(stateChangedSpy.count(), 3);
-#endif
}
void tst_QCheckBox::isToggleButton()
diff --git a/tests/auto/qcolor/tst_qcolor.cpp b/tests/auto/qcolor/tst_qcolor.cpp
index 7608a15..684d5b5 100644
--- a/tests/auto/qcolor/tst_qcolor.cpp
+++ b/tests/auto/qcolor/tst_qcolor.cpp
@@ -111,12 +111,15 @@ private slots:
void toRgb_data();
void toRgb();
+ void toRgbNonDestructive();
void toHsv_data();
void toHsv();
+ void toHsvNonDestructive();
void toCmyk_data();
void toCmyk();
+ void toCmykNonDestructive();
void convertTo();
@@ -1124,6 +1127,12 @@ void tst_QColor::toHsv_data()
<< QColor::fromCmykF(0., 1., 1., 0.);
}
+void tst_QColor::toRgbNonDestructive()
+{
+ QColor aColor = QColor::fromRgbF(0.11, 0.22, 0.33, 0.44);
+ QCOMPARE(aColor, aColor.toRgb());
+}
+
void tst_QColor::toHsv()
{
// invalid should remain invalid
@@ -1136,6 +1145,12 @@ void tst_QColor::toHsv()
QCOMPARE(cmykColor.toHsv(), expectedColor);
}
+void tst_QColor::toHsvNonDestructive()
+{
+ QColor aColor = QColor::fromHsvF(0.11, 0.22, 0.33, 0.44);
+ QCOMPARE(aColor, aColor.toHsv());
+}
+
void tst_QColor::toCmyk_data()
{
QTest::addColumn<QColor>("expectedColor");
@@ -1165,6 +1180,12 @@ void tst_QColor::toCmyk()
QCOMPARE(hsvColor.toCmyk(), expectedColor);
}
+void tst_QColor::toCmykNonDestructive()
+{
+ QColor aColor = QColor::fromCmykF(0.11, 0.22, 0.33, 0.44);
+ QCOMPARE(aColor, aColor.toCmyk());
+}
+
void tst_QColor::convertTo()
{
QColor color(Qt::black);
diff --git a/tests/auto/qcolordialog/tst_qcolordialog.cpp b/tests/auto/qcolordialog/tst_qcolordialog.cpp
index e51dfcc..1b5babb 100644
--- a/tests/auto/qcolordialog/tst_qcolordialog.cpp
+++ b/tests/auto/qcolordialog/tst_qcolordialog.cpp
@@ -108,7 +108,7 @@ void tst_QColorDialog::native_activeModalWidget()
// color dialog when it is executing, even when using a native
// dialog:
TestNativeDialog d;
- QTimer::singleShot(100, &d, SLOT(hide()));
+ QTimer::singleShot(1000, &d, SLOT(hide()));
d.exec();
QVERIFY(&d == d.m_activeModalWidget);
}
diff --git a/tests/auto/qcombobox/tst_qcombobox.cpp b/tests/auto/qcombobox/tst_qcombobox.cpp
index 70059f2..6a87e3c 100644
--- a/tests/auto/qcombobox/tst_qcombobox.cpp
+++ b/tests/auto/qcombobox/tst_qcombobox.cpp
@@ -283,13 +283,9 @@ void tst_QComboBox::getSetCheck()
QLineEdit *var8 = new QLineEdit(0);
obj1.setLineEdit(var8);
QCOMPARE(var8, obj1.lineEdit());
-#if QT_VERSION >= 0x040200
- // QComboBox in Qt < 4.2 have asserts for this, but handles the situation by ignoring it.
- // Qt >= 4.2 should handle this gracefully (no asserts, but define behavior as keeping current)
QTest::ignoreMessage(QtWarningMsg, "QComboBox::setLineEdit: cannot set a 0 line edit");
obj1.setLineEdit((QLineEdit *)0);
QCOMPARE(var8, obj1.lineEdit());
-#endif
// delete var8; // No delete, since QComboBox takes ownership
// const QValidator * QComboBox::validator()
@@ -306,13 +302,9 @@ void tst_QComboBox::getSetCheck()
MyAbstractItemDelegate *var10 = new MyAbstractItemDelegate;
obj1.setItemDelegate(var10);
QCOMPARE(obj1.itemDelegate(), (QAbstractItemDelegate *)var10);
-#if QT_VERSION >= 0x040200
- // QComboBox in Qt < 4.2 have asserts for this, but handles the situation by ignoring it.
- // Qt >= 4.2 should handle this gracefully (no asserts, but define behavior as keeping current)
QTest::ignoreMessage(QtWarningMsg, "QComboBox::setItemDelegate: cannot set a 0 delegate");
obj1.setItemDelegate((QAbstractItemDelegate *)0);
QCOMPARE(obj1.itemDelegate(), (QAbstractItemDelegate *)var10);
-#endif
// delete var10; // No delete, since QComboBox takes ownership
// QAbstractItemModel * QComboBox::model()
@@ -320,13 +312,9 @@ void tst_QComboBox::getSetCheck()
MyAbstractItemModel *var11 = new MyAbstractItemModel;
obj1.setModel(var11);
QCOMPARE(obj1.model(), (QAbstractItemModel *)var11);
-#if QT_VERSION >= 0x040200
- // QComboBox in Qt < 4.2 have asserts for this, but handles the situation by ignoring it.
- // Qt >= 4.2 should handle this gracefully (no asserts, but define behavior as keeping current)
QTest::ignoreMessage(QtWarningMsg, "QComboBox::setModel: cannot set a 0 model");
obj1.setModel((QAbstractItemModel *)0);
QCOMPARE(obj1.model(), (QAbstractItemModel *)var11);
-#endif
delete var11;
obj1.model();
@@ -345,13 +333,9 @@ void tst_QComboBox::getSetCheck()
MyAbstractItemView *var13 = new MyAbstractItemView;
obj1.setView(var13);
QCOMPARE(obj1.view(), (QAbstractItemView *)var13);
-#if QT_VERSION >= 0x040200
- // QComboBox in Qt < 4.2 have asserts for this
- // Qt >= 4.2 should handle this gracefully (no asserts, but define behavior as keeping current view)
QTest::ignoreMessage(QtWarningMsg, "QComboBox::setView: cannot set a 0 view");
obj1.setView((QAbstractItemView *)0);
QCOMPARE(obj1.view(), (QAbstractItemView *)var13);
-#endif
delete var13;
// int QComboBox::currentIndex()
@@ -512,13 +496,9 @@ void tst_QComboBox::sizeAdjustPolicy()
testWidget->addItem("small");
QCOMPARE(testWidget->sizeHint(), content);
testWidget->addItem("looooooooooooooooooooooong item");
-#if QT_VERSION >= 0x040200
// minimumContentsLength() > sizeof("looooooooooooooooooooooong item"), so the sizeHint()
// stays the same
QCOMPARE(testWidget->sizeHint(), content);
-#else
- QVERIFY(testWidget->sizeHint().width() > content.width());
-#endif
// over 60 characters (cf. setMinimumContentsLength() call above)
testWidget->addItem("loooooooooooooooooooooooooooooooooooooooooooooo"
"ooooooooooooooooooooooooooooooooooooooooooooooo"
@@ -535,10 +515,8 @@ void tst_QComboBox::sizeAdjustPolicy()
content = testWidget->sizeHint();
while (testWidget->count())
testWidget->removeItem(0);
-#if QT_VERSION >= 0x040200
QCOMPARE(testWidget->sizeHint(), content);
testWidget->setMinimumContentsLength(0);
-#endif
QVERIFY(testWidget->sizeHint().width() < content.width());
}
@@ -831,13 +809,9 @@ void tst_QComboBox::autoCompletionCaseSensitivity()
QTest::keyClick(testWidget->lineEdit(), Qt::Key_B);
qApp->processEvents();
-#if QT_VERSION < 0x040200
- // autocompletions are case-preserving in < 4.2
- QCOMPARE(testWidget->currentText(), QString("aBCDEF"));
-#else
// autocompletions preserve userkey-case from 4.2
QCOMPARE(testWidget->currentText(), QString("abCDEF"));
-#endif
+
QTest::keyClick(testWidget->lineEdit(), Qt::Key_Enter);
qApp->processEvents();
QCOMPARE(testWidget->currentText(), QString("aBCDEF")); // case restored to item's case
diff --git a/tests/auto/qcommandlinkbutton/tst_qcommandlinkbutton.cpp b/tests/auto/qcommandlinkbutton/tst_qcommandlinkbutton.cpp
index 5665e6e..45a4301 100644
--- a/tests/auto/qcommandlinkbutton/tst_qcommandlinkbutton.cpp
+++ b/tests/auto/qcommandlinkbutton/tst_qcommandlinkbutton.cpp
@@ -211,11 +211,7 @@ void tst_QCommandLinkButton::setAutoRepeat()
QVERIFY( !testWidget->isCheckable() );
// verify autorepeat is off by default.
-#if QT_VERSION < 0x040000
- QButton tmp( 0 );
-#else
QCommandLinkButton tmp( 0 );
-#endif
tmp.setObjectName("tmp");
QVERIFY( !tmp.autoRepeat() );
diff --git a/tests/auto/qcompleter/tst_qcompleter.cpp b/tests/auto/qcompleter/tst_qcompleter.cpp
index 67b9b67..b71cdc6 100644
--- a/tests/auto/qcompleter/tst_qcompleter.cpp
+++ b/tests/auto/qcompleter/tst_qcompleter.cpp
@@ -141,6 +141,10 @@ private slots:
void task178797_activatedOnReturn();
void task189564_omitNonSelectableItems();
void task246056_setCompletionPrefix();
+ void task250064_lostFocus();
+
+ void task253125_lineEditCompletion_data();
+ void task253125_lineEditCompletion();
private:
void filter();
@@ -1126,5 +1130,105 @@ void tst_QCompleter::task246056_setCompletionPrefix()
QTest::keyPress(comboBox->completer()->popup(), Qt::Key_Enter); // don't crash!
}
+class task250064_TextEdit : public QTextEdit
+{
+public:
+ QCompleter *completer;
+
+ task250064_TextEdit()
+ {
+ completer = new QCompleter;
+ completer->setWidget(this);
+ }
+
+ void keyPressEvent (QKeyEvent *e)
+ {
+ completer->popup();
+ QTextEdit::keyPressEvent(e);
+ }
+};
+
+class task250064_Widget : public QWidget
+{
+ Q_OBJECT
+public:
+ task250064_TextEdit *textEdit;
+
+ task250064_Widget(task250064_TextEdit *textEdit)
+ : textEdit(textEdit)
+ {
+ QTabWidget *tabWidget = new QTabWidget;
+ tabWidget->setFocusPolicy(Qt::ClickFocus);
+ tabWidget->addTab(textEdit, "untitled");
+
+ QVBoxLayout *layout = new QVBoxLayout(this);
+ layout->addWidget(tabWidget);
+
+ textEdit->setPlainText("bla bla bla");
+ textEdit->setFocus();
+ }
+
+ void setCompletionModel()
+ {
+ textEdit->completer->setModel(0);
+ }
+};
+
+void tst_QCompleter::task250064_lostFocus()
+{
+ task250064_TextEdit *textEdit = new task250064_TextEdit;
+ task250064_Widget *widget = new task250064_Widget(textEdit);
+ widget->show();
+ QTest::qWait(100);
+ QTest::keyPress(textEdit, 'a');
+ Qt::FocusPolicy origPolicy = textEdit->focusPolicy();
+ QVERIFY(origPolicy != Qt::NoFocus);
+ widget->setCompletionModel();
+ QCOMPARE(textEdit->focusPolicy(), origPolicy);
+}
+
+void tst_QCompleter::task253125_lineEditCompletion_data()
+{
+ QTest::addColumn<QStringList>("list");
+ QTest::addColumn<int>("completionMode");
+
+ QStringList list = QStringList()
+ << "alpha" << "beta" << "gamma" << "delta" << "epsilon" << "zeta"
+ << "eta" << "theta" << "iota" << "kappa" << "lambda" << "mu"
+ << "nu" << "xi" << "omicron" << "pi" << "rho" << "sigma"
+ << "tau" << "upsilon" << "phi" << "chi" << "psi" << "omega";
+
+ QTest::newRow("Inline") << list << (int)QCompleter::InlineCompletion;
+ QTest::newRow("Filtered") << list << (int)QCompleter::PopupCompletion;
+ QTest::newRow("Unfiltered") << list << (int)QCompleter::UnfilteredPopupCompletion;
+}
+
+void tst_QCompleter::task253125_lineEditCompletion()
+{
+ QFETCH(QStringList, list);
+ QFETCH(int, completionMode);
+
+ QStringListModel *model = new QStringListModel;
+ model->setStringList(list);
+
+ QCompleter *completer = new QCompleter(list);
+ completer->setModel(model);
+ completer->setCompletionMode((QCompleter::CompletionMode)completionMode);
+
+ QLineEdit edit;
+ edit.setCompleter(completer);
+ edit.show();
+ edit.setFocus();
+
+ QTest::qWait(100);
+
+ QTest::keyClick(&edit, 'i');
+ QCOMPARE(edit.completer()->currentCompletion(), QString("iota"));
+ QTest::keyClick(edit.completer()->popup(), Qt::Key_Down);
+ QTest::keyClick(edit.completer()->popup(), Qt::Key_Enter);
+
+ QCOMPARE(edit.text(), QString("iota"));
+}
+
QTEST_MAIN(tst_QCompleter)
#include "tst_qcompleter.moc"
diff --git a/tests/auto/qcssparser/tst_cssparser.cpp b/tests/auto/qcssparser/tst_cssparser.cpp
index 6e277d3..7c4fac1 100644
--- a/tests/auto/qcssparser/tst_cssparser.cpp
+++ b/tests/auto/qcssparser/tst_cssparser.cpp
@@ -44,7 +44,6 @@
//TESTED_CLASS=QCss
//TESTED_FILES=gui/text/qcssparser.cpp gui/text/qcssparser_p.h
-#if QT_VERSION >= 0x040200
#include "private/qcssparser_p.h"
class tst_CssParser : public QObject
@@ -124,7 +123,7 @@ static void debug(const QVector<QCss::Symbol> &symbols, int index = -1)
qDebug() << "failure at index" << index;
}
-static void debug(const QCss::Parser &p) { debug(p.symbols); }
+//static void debug(const QCss::Parser &p) { debug(p.symbols); }
void tst_CssParser::scanner()
{
@@ -272,7 +271,7 @@ void tst_CssParser::term_data()
val.variant = QVariant(QColor("#ffbb00"));
QTest::newRow("hexcolor2") << true << "#fb0" << val;
- QTest::ignoreMessage(QtWarningMsg, "QColor::setNamedColor: Could not parse color '#cafebabe'");
+ QTest::ignoreMessage(QtWarningMsg, "QCssParser::parseHexColor: Unknown color name '#cafebabe'");
QTest::newRow("hexcolor_failure") << false << "#cafebabe" << val;
val.type = QCss::Value::Uri;
@@ -1474,7 +1473,12 @@ void tst_CssParser::extractFontFamily_data()
QTest::newRow("quoted-family-name") << "font-family: 'Times New Roman'" << QString("Times New Roman");
QTest::newRow("unquoted-family-name") << "font-family: Times New Roman" << QString("Times New Roman");
QTest::newRow("unquoted-family-name2") << "font-family: Times New Roman" << QString("Times New Roman");
- QTest::newRow("multiple") << "font-family: Times New Roman , foobar, 'baz'" << QString("Times New Roman");
+ QTest::newRow("multiple") << "font-family: Times New Roman , foobar, 'baz'" << QString("Times New Roman");
+ QTest::newRow("multiple2") << "font-family: invalid, Times New Roman " << QString("Times New Roman");
+ QTest::newRow("invalid") << "font-family: invalid" << QFont().family();
+ QTest::newRow("shorthand") << "font: 12pt Times New Roman" << QString("Times New Roman");
+ QTest::newRow("shorthand multiple quote") << "font: 12pt invalid, \"Times New Roman\" " << QString("Times New Roman");
+ QTest::newRow("shorthand multiple") << "font: 12pt invalid, Times New Roman " << QString("Times New Roman");
}
void tst_CssParser::extractFontFamily()
@@ -1498,8 +1502,8 @@ void tst_CssParser::extractFontFamily()
int adjustment = 0;
QFont fnt;
extractor.extractFont(&fnt, &adjustment);
-
- QTEST(fnt.family(), "expectedFamily");
+ QFontInfo info(fnt);
+ QTEST(info.family(), "expectedFamily");
}
void tst_CssParser::extractBorder_data()
@@ -1592,13 +1596,13 @@ void tst_CssParser::quotedAndUnquotedIdentifiers()
QCss::Parser parser("foo { font-style: \"italic\"; font-weight: bold }");
QCss::StyleSheet sheet;
QVERIFY(parser.parse(&sheet));
-
+
QCOMPARE(sheet.styleRules.count() + sheet.nameIndex.count(), 1);
QCss::StyleRule rule = (!sheet.styleRules.isEmpty()) ?
sheet.styleRules.at(0) : *sheet.nameIndex.begin();
const QVector<QCss::Declaration> decls = rule.declarations;
QCOMPARE(decls.size(), 2);
-
+
QCOMPARE(decls.at(0).d->values.first().type, QCss::Value::String);
QCOMPARE(decls.at(0).d->property, QLatin1String("font-style"));
QCOMPARE(decls.at(0).d->values.first().toString(), QLatin1String("italic"));
@@ -1610,6 +1614,3 @@ void tst_CssParser::quotedAndUnquotedIdentifiers()
QTEST_MAIN(tst_CssParser)
#include "tst_cssparser.moc"
-#else
-QTEST_NOOP_MAIN
-#endif
diff --git a/tests/auto/qdatastream/tst_qdatastream.cpp b/tests/auto/qdatastream/tst_qdatastream.cpp
index a112c10..d7ca7bc 100644
--- a/tests/auto/qdatastream/tst_qdatastream.cpp
+++ b/tests/auto/qdatastream/tst_qdatastream.cpp
@@ -163,10 +163,8 @@ private slots:
void setVersion_data();
void setVersion();
-#if QT_VERSION >= 0x040100
void skipRawData_data();
void skipRawData();
-#endif
void status_qint8_data();
void status_qint8();
@@ -2435,7 +2433,6 @@ private:
int offset;
};
-#if QT_VERSION >= 0x040100
void tst_QDataStream::skipRawData_data()
{
QTest::addColumn<QString>("deviceType");
@@ -2486,7 +2483,6 @@ void tst_QDataStream::skipRawData()
delete dev;
}
-#endif
#define TEST_qint(T, UT) \
void tst_QDataStream::status_##T() \
diff --git a/tests/auto/qdate/tst_qdate.cpp b/tests/auto/qdate/tst_qdate.cpp
index 121167a..d4273d0 100644
--- a/tests/auto/qdate/tst_qdate.cpp
+++ b/tests/auto/qdate/tst_qdate.cpp
@@ -143,10 +143,8 @@ void tst_QDate::isValid_data()
QTest::newRow("century leap") << 2100 << 2 << 29 << 0U << false;
QTest::newRow("400-years leap") << 2000 << 2 << 29 << 2451604U << true;
QTest::newRow("400-years leap 2") << 2400 << 2 << 29 << 2597701U << true;
-#if QT_VERSION >= 0x040200
QTest::newRow("400-years leap 3") << 1600 << 2 << 29 << 2305507U << true;
QTest::newRow("year 0") << 0 << 2 << 27 << 0U << false;
-#endif
// test the number of days in months:
QTest::newRow("jan") << 2000 << 1 << 31 << 2451575U << true;
@@ -177,7 +175,6 @@ void tst_QDate::isValid_data()
QTest::newRow("idec") << 2000 << 12 << 32 << 0U << false;
// the beginning of the Julian Day calendar:
-#if QT_VERSION >= 0x040200
QTest::newRow("jd negative1") << -4714 << 1 << 1 << 0U << false;
QTest::newRow("jd negative2") << -4713 << 1 << 1 << 0U << false;
QTest::newRow("jd negative3") << -4713 << 1 << 2 << 1U << true;
@@ -185,7 +182,6 @@ void tst_QDate::isValid_data()
QTest::newRow("jd 0") << -4713 << 1 << 1 << 0U << false;
QTest::newRow("jd 1") << -4713 << 1 << 2 << 1U << true;
QTest::newRow("imminent overflow") << 11754508 << 12 << 13 << 4294967295U << true;
-#endif
}
void tst_QDate::isValid()
@@ -243,17 +239,12 @@ void tst_QDate::weekNumber_data()
QTest::newRow( "data4" ) << 1 << 2001 << 2001 << 1 << 1;
QTest::newRow( "data5" ) << 53 << 1998 << 1998 << 12 << 31;
QTest::newRow( "data6" ) << 1 << 1985 << 1984 << 12 << 31;
-#if QT_VERSION >= 0x030300
- // This is a bug that was fixed for 3.3
QTest::newRow( "data7" ) << 52 << 2006 << 2006 << 12 << 31;
-#endif
}
void tst_QDate::weekNumber()
{
-#if QT_VERSION >= 0x030100
int yearNumber;
-// int weekNumber;
QFETCH( int, year );
QFETCH( int, month );
QFETCH( int, day );
@@ -262,9 +253,6 @@ void tst_QDate::weekNumber()
QDate dt1( year, month, day );
QCOMPARE( dt1.weekNumber( &yearNumber ), expectedWeekNum );
QCOMPARE( yearNumber, expectedYearNum );
-#else
- QSKIP( "Not tested with Qt versions < 3.1", SkipAll);
-#endif
}
void tst_QDate::weekNumber_invalid_data()
@@ -281,14 +269,9 @@ void tst_QDate::weekNumber_invalid_data()
void tst_QDate::weekNumber_invalid()
{
-#if QT_VERSION >= 0x030100
QDate dt;
int yearNumber;
-// int weekNumber;
QCOMPARE( dt.weekNumber( &yearNumber ), 0 );
-#else
- QSKIP( "Not tested with Qt versions < 3.1", SkipAll);
-#endif
}
void tst_QDate::addDays()
@@ -616,14 +599,12 @@ void tst_QDate::fromString_data()
QDate d( 1999, 11, 14 );
QTest::newRow( "data2" ) << d.toString( Qt::TextDate ) << d.toString( Qt::ISODate ) << d;
-#if QT_VERSION >= 0x040200
QTest::newRow( "data3" ) << QString("xxx Jan 1 0999") << QString("0999-01-01") << QDate(999, 1, 1);
QTest::newRow( "data3b" ) << QString("xxx Jan 1 999") << QString("0999-01-01") << QDate(999, 1, 1);
QTest::newRow( "data4" ) << QString("xxx Jan 1 12345") << QString() << QDate(12345, 1, 1);
QTest::newRow( "data5" ) << QString("xxx Jan 1 -0001") << QString() << QDate(-1, 1, 1);
QTest::newRow( "data6" ) << QString("xxx Jan 1 -4712") << QString() << QDate(-4712, 1, 1);
QTest::newRow( "data7" ) << QString("xxx Nov 25 -4713") << QString() << QDate(-4713, 11, 25);
-#endif
}
void tst_QDate::fromString()
@@ -647,9 +628,7 @@ void tst_QDate::toString_format_data()
QTest::newRow( "data1" ) << QDate(2002,12,17) << QString("dd-MM-yyyy") << QString("17-12-2002");
QTest::newRow( "data2" ) << QDate(1995,5,20) << QString("M-yy") << QString("5-95");
QTest::newRow( "data3" ) << QDate(2002,12,17) << QString("dd") << QString("17");
-#if (QT_VERSION-0 >= 0x030200)
QTest::newRow( "data4" ) << QDate() << QString("dd-mm-yyyy") << QString();
-#endif
}
void tst_QDate::toString_format()
diff --git a/tests/auto/qdatetime/tst_qdatetime.cpp b/tests/auto/qdatetime/tst_qdatetime.cpp
index 9e73d6d..69d8a62 100644
--- a/tests/auto/qdatetime/tst_qdatetime.cpp
+++ b/tests/auto/qdatetime/tst_qdatetime.cpp
@@ -220,18 +220,10 @@ void tst_QDateTime::isNull()
dt1.setDate(QDate(2004, 1, 2));
QVERIFY(!dt1.isNull());
-#if QT_VERSION < 0x040100
- dt1.setDate(QDate());
- QVERIFY(dt1.isNull());
-#endif
dt1.setTime(QTime(12, 34, 56));
QVERIFY(!dt1.isNull());
dt1.setTime(QTime());
-#if QT_VERSION >= 0x040100
QVERIFY(!dt1.isNull());
-#else
- QVERIFY(dt1.isNull());
-#endif
}
void tst_QDateTime::isValid()
@@ -1010,15 +1002,10 @@ void tst_QDateTime::toString_strformat_data()
void tst_QDateTime::toString_strformat()
{
-#if (QT_VERSION-0 >= 0x030200)
QFETCH( QDateTime, dt );
QFETCH( QString, format );
QFETCH( QString, str );
QCOMPARE( dt.toString( format ), str );
-#else
- QSKIP( "No test implemented for < 3.2 yet", SkipAll);
-#endif
-
}
void tst_QDateTime::fromStringTextDate_data()
@@ -1068,7 +1055,6 @@ void tst_QDateTime::fromStringTextDate_data()
<< 28 << 6 << 2005 << 7 << 57 << 30 << 110
<< int(Qt::LocalTime);
-#if QT_VERSION >= 0x040200
QTest::newRow("Year 0999") << QString("Tue Jun 17 08:00:10 0999")
<< int(Qt::TextDate)
<< 17 << 6 << 999 << 8 << 0 << 10 << 0
@@ -1088,7 +1074,6 @@ void tst_QDateTime::fromStringTextDate_data()
<< int(Qt::TextDate)
<< 1 << 1 << -4712 << 0 << 01 << 02 << 0
<< int(Qt::LocalTime);
-#endif
}
void tst_QDateTime::fromStringTextDate()
diff --git a/tests/auto/qdbuspendingcall/tst_qdbuspendingcall.cpp b/tests/auto/qdbuspendingcall/tst_qdbuspendingcall.cpp
index 58707f1..947e8d6 100644
--- a/tests/auto/qdbuspendingcall/tst_qdbuspendingcall.cpp
+++ b/tests/auto/qdbuspendingcall/tst_qdbuspendingcall.cpp
@@ -90,6 +90,8 @@ private Q_SLOTS:
void watcher();
void watcher_error();
void watcher_waitForFinished();
+ void watcher_waitForFinished_alreadyFinished();
+ void watcher_waitForFinished_alreadyFinished_eventLoop();
void watcher_waitForFinished_error();
void callInsideWaitForFinished();
@@ -375,6 +377,77 @@ void tst_QDBusPendingCall::watcher_waitForFinished()
QVERIFY(args2.at(0).toStringList().contains(conn.baseService()));
}
+void tst_QDBusPendingCall::watcher_waitForFinished_alreadyFinished()
+{
+ QDBusPendingCall ac = sendMessage();
+ QVERIFY(!ac.isFinished());
+ QVERIFY(!ac.isError());
+ QVERIFY(ac.reply().type() == QDBusMessage::InvalidMessage);
+
+ ac.waitForFinished();
+ QVERIFY(ac.isFinished());
+ QVERIFY(!ac.isError());
+
+ callCount = 0;
+ watchArgument = 0;
+
+ // create a watcher on an already-finished reply
+ QDBusPendingCallWatcher watch(ac);
+ connect(&watch, SIGNAL(finished(QDBusPendingCallWatcher*)),
+ SLOT(finished(QDBusPendingCallWatcher*)));
+
+ watch.waitForFinished();
+
+ QVERIFY(ac.isFinished());
+ QVERIFY(!ac.isError());
+
+ QCOMPARE(callCount, 1);
+ QCOMPARE(slotCalled, (int)FinishCalled);
+ QCOMPARE(watchArgument, &watch);
+ QVERIFY(!watch.isError());
+
+ const QVariantList args2 = ac.reply().arguments();
+ QVERIFY(!args2.isEmpty());
+ QVERIFY(args2.at(0).toStringList().contains(conn.baseService()));
+}
+
+void tst_QDBusPendingCall::watcher_waitForFinished_alreadyFinished_eventLoop()
+{
+ QDBusPendingCall ac = sendMessage();
+ QVERIFY(!ac.isFinished());
+ QVERIFY(!ac.isError());
+ QVERIFY(ac.reply().type() == QDBusMessage::InvalidMessage);
+
+ ac.waitForFinished();
+ QVERIFY(ac.isFinished());
+ QVERIFY(!ac.isError());
+
+ callCount = 0;
+ watchArgument = 0;
+
+ // create a watcher on an already-finished reply
+ QDBusPendingCallWatcher watch(ac);
+ connect(&watch, SIGNAL(finished(QDBusPendingCallWatcher*)),
+ SLOT(finished(QDBusPendingCallWatcher*)));
+ connect(&watch, SIGNAL(finished(QDBusPendingCallWatcher*)),
+ &QTestEventLoop::instance(), SLOT(exitLoop()));
+
+ QTestEventLoop::instance().enterLoop(1);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+
+ QVERIFY(ac.isFinished());
+ QVERIFY(!ac.isError());
+
+ QCOMPARE(callCount, 1);
+ QCOMPARE(slotCalled, (int)FinishCalled);
+ QCOMPARE(watchArgument, &watch);
+ QVERIFY(!watch.isError());
+
+ const QVariantList args2 = ac.reply().arguments();
+ QVERIFY(!args2.isEmpty());
+ QVERIFY(args2.at(0).toStringList().contains(conn.baseService()));
+}
+
void tst_QDBusPendingCall::watcher_waitForFinished_error()
{
QDBusPendingCall ac = sendError();
diff --git a/tests/auto/qdesktopservices/tst_qdesktopservices.cpp b/tests/auto/qdesktopservices/tst_qdesktopservices.cpp
index 49f8922..81b35ac 100644
--- a/tests/auto/qdesktopservices/tst_qdesktopservices.cpp
+++ b/tests/auto/qdesktopservices/tst_qdesktopservices.cpp
@@ -41,9 +41,6 @@
#include <QtTest/QtTest>
-#if QT_VERSION < 0x040200
-QTEST_NOOP_MAIN
-#else
#include <QStandardItemModel>
#include <qdebug.h>
#include <qdesktopservices.h>
@@ -172,5 +169,3 @@ void tst_qdesktopservices::storageLocationDoesNotEndWithSlash()
QTEST_MAIN(tst_qdesktopservices)
#include "tst_qdesktopservices.moc"
-#endif
-
diff --git a/tests/auto/qdialog/tst_qdialog.cpp b/tests/auto/qdialog/tst_qdialog.cpp
index e77167e..a1cf1c1 100644
--- a/tests/auto/qdialog/tst_qdialog.cpp
+++ b/tests/auto/qdialog/tst_qdialog.cpp
@@ -375,14 +375,11 @@ void tst_QDialog::showAsTool()
testWidget->activateWindow();
dialog.exec();
QTest::qWait(100);
- if (testWidget->style()->styleHint(QStyle::SH_Widget_ShareActivation, 0, testWidget)) {
-#if defined(Q_WS_QWS) && QT_VERSION < 0x040400
- QEXPECT_FAIL(0, "Qtopia Core has messed up WStyle_Tool (task 126435)", Continue);
-#endif
- QCOMPARE(dialog.wasActive(), true);
- } else {
- QCOMPARE(dialog.wasActive(), false);
- }
+ if (testWidget->style()->styleHint(QStyle::SH_Widget_ShareActivation, 0, testWidget)) {
+ QCOMPARE(dialog.wasActive(), true);
+ } else {
+ QCOMPARE(dialog.wasActive(), false);
+ }
}
// Verify that pos() returns the same before and after show()
@@ -392,10 +389,10 @@ void tst_QDialog::toolDialogPosition()
#if defined(Q_OS_WINCE)
QSKIP("No real support for Qt::Tool on WinCE", SkipAll);
#endif
- QDialog dialog(0, Qt::Tool);
- dialog.move(QPoint(100,100));
+ QDialog dialog(0, Qt::Tool);
+ dialog.move(QPoint(100,100));
const QPoint beforeShowPosition = dialog.pos();
- dialog.show();
+ dialog.show();
const QPoint afterShowPosition = dialog.pos();
QCOMPARE(afterShowPosition, beforeShowPosition);
}
@@ -445,7 +442,7 @@ public slots:
void tst_QDialog::throwInExec()
{
#ifdef Q_WS_MAC
- QSKIP("Qt/Mac: Throwing exceptions in excec() is not supported.", SkipAll);
+ QSKIP("Qt/Mac: Throwing exceptions in exec() is not supported.", SkipAll);
#endif
int caughtExceptions = 0;
try {
diff --git a/tests/auto/qdir/tst_qdir.cpp b/tests/auto/qdir/tst_qdir.cpp
index f680f46..91ce5b3 100644
--- a/tests/auto/qdir/tst_qdir.cpp
+++ b/tests/auto/qdir/tst_qdir.cpp
@@ -787,9 +787,7 @@ void tst_QDir::cd_data()
#endif
QTest::newRow("non existant") << "." << "../anonexistingdir" << false << QDir::currentPath();
QTest::newRow("self") << "." << (QString("../") + QFileInfo(QDir::currentPath()).fileName()) << true << QDir::currentPath();
-#if QT_VERSION > 0x040100
QTest::newRow("file") << "." << "qdir.pro" << false << "";
-#endif
}
void tst_QDir::cd()
@@ -827,10 +825,8 @@ void tst_QDir::setNameFilters_data()
<< QString("foo. bar,foo.bar").split(",");
QTest::newRow("files1") << appPath + "testdir/dir" << QString("*r.cpp *.pro").split(" ")
<< QString("qdir.pro,qrc_qdir.cpp,tst_qdir.cpp").split(",");
-#if QT_VERSION >= 0x040000
QTest::newRow("resources1") << QString(":/tst_qdir/resources/entryList") << QStringList("*.data")
<< QString("file1.data,file2.data,file3.data").split(',');
-#endif
}
void tst_QDir::setNameFilters()
diff --git a/tests/auto/qdirmodel/tst_qdirmodel.cpp b/tests/auto/qdirmodel/tst_qdirmodel.cpp
index f6887da..2084535 100644
--- a/tests/auto/qdirmodel/tst_qdirmodel.cpp
+++ b/tests/auto/qdirmodel/tst_qdirmodel.cpp
@@ -614,7 +614,6 @@ void tst_QDirModel::task196768_sorting()
QCOMPARE(index.data(), index2.data());
}
-#if QT_VERSION >= 0x040102
void tst_QDirModel::filter()
{
QDirModel model;
@@ -625,7 +624,6 @@ void tst_QDirModel::filter()
Q_ASSERT(!index2.isValid());
Q_ASSERT(model.rowCount(index) == 0);
}
-#endif
void tst_QDirModel::task244669_remove()
{
diff --git a/tests/auto/qfile/rename-fallback.qrc b/tests/auto/qfile/rename-fallback.qrc
new file mode 100644
index 0000000..c8a894a
--- /dev/null
+++ b/tests/auto/qfile/rename-fallback.qrc
@@ -0,0 +1,5 @@
+<!DOCTYPE RCC><RCC version="1.0">
+<qresource>
+ <file>rename-fallback.qrc</file>
+</qresource>
+</RCC>
diff --git a/tests/auto/qfile/test/test.pro b/tests/auto/qfile/test/test.pro
index 2293bd7..68f4c05 100644
--- a/tests/auto/qfile/test/test.pro
+++ b/tests/auto/qfile/test/test.pro
@@ -17,7 +17,7 @@ QT = core network
DEFINES += SRCDIR=\\\"$$PWD/../\\\"
}
-RESOURCES += ../qfile.qrc
+RESOURCES += ../qfile.qrc ../rename-fallback.qrc
TARGET = ../tst_qfile
diff --git a/tests/auto/qfile/tst_qfile.cpp b/tests/auto/qfile/tst_qfile.cpp
index 48902c7..98e1859 100644
--- a/tests/auto/qfile/tst_qfile.cpp
+++ b/tests/auto/qfile/tst_qfile.cpp
@@ -76,10 +76,6 @@
#include "../network-settings.h"
-#if QT_VERSION < 0x040200
-#define symLinkTarget readLink
-#endif
-
Q_DECLARE_METATYPE(QFile::FileError)
//TESTED_CLASS=
@@ -169,6 +165,8 @@ private slots:
void rename_data();
void rename();
void renameWithAtEndSpecialFile() const;
+ void renameFallback();
+ void renameMultiple();
void appendAndRead();
void miscWithUncPathAsCurrentDir();
void standarderror();
@@ -214,6 +212,14 @@ void tst_QFile::cleanup()
{
// TODO: Add cleanup code here.
// This will be executed immediately after each test is run.
+
+ // for renameFallback()
+ QFile::remove("file-rename-destination.txt");
+
+ // for renameMultiple()
+ QFile::remove("file-to-be-renamed.txt");
+ QFile::remove("file-renamed-once.txt");
+ QFile::remove("file-renamed-twice.txt");
}
void tst_QFile::initTestCase()
@@ -980,12 +986,8 @@ void tst_QFile::link()
#ifdef Q_OS_WIN // on windows links are always absolute
QCOMPARE(info2.symLinkTarget(), info1.absoluteFilePath());
#else
-#if QT_VERSION < 0x040101
- QCOMPARE(info2.symLinkTarget(), info1.filePath());
-#else
QCOMPARE(info2.symLinkTarget(), info1.absoluteFilePath());
#endif
-#endif
#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
QString wd = getWorkingDirectoryForLink(info2.absoluteFilePath());
@@ -1051,19 +1053,12 @@ void tst_QFile::readBrokenLink()
#ifdef Q_OS_WIN // on windows links are alway absolute
QCOMPARE(info2.symLinkTarget(), info1.absoluteFilePath());
#else
-#if QT_VERSION < 0x040101
- QCOMPARE(info2.symLinkTarget(), info1.filePath());
-#else
QCOMPARE(info2.symLinkTarget(), info1.absoluteFilePath());
#endif
-#endif
QVERIFY(QFile::remove(info2.absoluteFilePath()));
-
-#if QT_VERSION >= 0x040101
QVERIFY(QFile::link("ole/..", "myLink2.lnk"));
QCOMPARE(QFileInfo("myLink2.lnk").symLinkTarget(), QDir::currentPath());
-#endif
}
void tst_QFile::readTextFile_data()
@@ -1271,10 +1266,6 @@ void tst_QFile::bufferedRead()
QCOMPARE(file.pos(), qlonglong(2));
}
-#if QT_VERSION <= 0x040100
- QCOMPARE(int(ftell(stdFile)), 2);
-#endif
-
fclose(stdFile);
}
@@ -1594,12 +1585,7 @@ void tst_QFile::longFileName()
}
{
QFile file(fileName);
-#if QT_VERSION < 0x040100
-# ifdef Q_OS_WIN
- QEXPECT_FAIL("244 chars", "Fixed in 4.1", Continue);
- QEXPECT_FAIL("244 chars to absolutepath", "Fixed in 4.1", Continue);
-# endif
-#elif defined(Q_WS_WIN)
+#if defined(Q_WS_WIN)
#if !defined(Q_OS_WINCE)
QT_WA({ if (false) ; }, {
QEXPECT_FAIL("244 chars", "Full pathname must be less than 260 chars", Abort);
@@ -1824,10 +1810,6 @@ void tst_QFile::removeOpenFile()
void tst_QFile::fullDisk()
{
-#if QT_VERSION < 0x040102
- QSKIP("Fixed for 4.1.2", SkipAll);
-#endif
-
QFile file("/dev/full");
if (!file.exists())
QSKIP("/dev/full doesn't exist on this system", SkipAll);
@@ -1971,9 +1953,7 @@ void tst_QFile::virtualFile()
// read all:
data = f.readAll();
QVERIFY(f.pos() != 0);
-#if QT_VERSION >= 0x040200
QVERIFY(!data.isEmpty());
-#endif
// seeking
QVERIFY(f.seek(1));
@@ -2091,6 +2071,42 @@ void tst_QFile::renameWithAtEndSpecialFile() const
QVERIFY(QFile::rename(newName, originalName));
}
+void tst_QFile::renameFallback()
+{
+ // Using a resource file both to trigger QFile::rename's fallback handling
+ // and as a *read-only* source whose move should fail.
+ QFile file(":/rename-fallback.qrc");
+ QVERIFY(file.exists() && "(test-precondition)");
+ QFile::remove("file-rename-destination.txt");
+
+ QVERIFY(!file.rename("file-rename-destination.txt"));
+ QVERIFY(!QFile::exists("file-rename-destination.txt"));
+}
+
+void tst_QFile::renameMultiple()
+{
+ // create the file if it doesn't exist
+ QFile file("file-to-be-renamed.txt");
+ QVERIFY(file.open(QIODevice::ReadWrite) && "(test-precondition)");
+
+ // any stale files from previous test failures?
+ QFile::remove("file-renamed-once.txt");
+ QFile::remove("file-renamed-twice.txt");
+
+ // begin testing
+ QVERIFY(file.rename("file-renamed-once.txt"));
+ QCOMPARE(file.fileName(), QString("file-renamed-once.txt"));
+ QVERIFY(file.rename("file-renamed-twice.txt"));
+ QCOMPARE(file.fileName(), QString("file-renamed-twice.txt"));
+
+ QVERIFY(!QFile::exists("file-to-be-renamed.txt"));
+ QVERIFY(!QFile::exists("file-renamed-once.txt"));
+ QVERIFY(QFile::exists("file-renamed-twice.txt"));
+
+ file.remove();
+ QVERIFY(!QFile::exists("file-renamed-twice.txt"));
+}
+
void tst_QFile::appendAndRead()
{
QFile writeFile(QLatin1String("appendfile.txt"));
diff --git a/tests/auto/qfiledialog/tst_qfiledialog.cpp b/tests/auto/qfiledialog/tst_qfiledialog.cpp
index b03d459..689f73d 100644
--- a/tests/auto/qfiledialog/tst_qfiledialog.cpp
+++ b/tests/auto/qfiledialog/tst_qfiledialog.cpp
@@ -157,6 +157,8 @@ private slots:
void task228844_ensurePreviousSorting();
void task239706_editableFilterCombo();
void task218353_relativePaths();
+ void task251321_sideBarHiddenEntries();
+ void task251341_sideBarRemoveEntries();
private:
QByteArray userSettings;
@@ -681,6 +683,22 @@ void tst_QFiledialog::filters()
for (int i = views.at(0)->currentIndex(); i < views.at(0)->count(); ++i)
views.at(0)->setCurrentIndex(i);
QCOMPARE(spyFilterSelected.count(), 0);
+
+ //Let check if filters with whitespaces
+ QNonNativeFileDialog fd2;
+ QStringList expected;
+ expected << "C++ Source Files(*.cpp)";
+ expected << "Any(*.*)";
+ fd2.setFilter("C++ Source Files(*.cpp);;Any(*.*)");
+ QCOMPARE(expected, fd2.filters());
+ fd2.setFilter("C++ Source Files(*.cpp) ;;Any(*.*)");
+ QCOMPARE(expected, fd2.filters());
+ fd2.setFilter("C++ Source Files(*.cpp);; Any(*.*)");
+ QCOMPARE(expected, fd2.filters());
+ fd2.setFilter(" C++ Source Files(*.cpp);; Any(*.*)");
+ QCOMPARE(expected, fd2.filters());
+ fd2.setFilter("C++ Source Files(*.cpp) ;; Any(*.*)");
+ QCOMPARE(expected, fd2.filters());
}
void tst_QFiledialog::selectFilter()
@@ -1526,6 +1544,42 @@ private:
};
+class sortProxy : public QSortFilterProxyModel
+{
+public:
+ sortProxy(QObject *parent) : QSortFilterProxyModel(parent)
+ {
+ }
+protected:
+ virtual bool lessThan(const QModelIndex &left, const QModelIndex &right) const
+ {
+ QFileSystemModel * const model = qobject_cast<QFileSystemModel *>(sourceModel());
+ const QFileInfo leftInfo(model->fileInfo(left));
+ const QFileInfo rightInfo(model->fileInfo(right));
+
+ if (leftInfo.isDir() == rightInfo.isDir())
+ return(leftInfo.filePath().compare(rightInfo.filePath(),Qt::CaseInsensitive) < 0);
+ else if (leftInfo.isDir())
+ return(false);
+ else
+ return(true);
+ }
+};
+
+class CrashDialog : public QNonNativeFileDialog
+{
+ Q_OBJECT
+
+public:
+ CrashDialog(QWidget *parent, const QString &caption, const
+QString &dir, const QString &filter)
+ : QNonNativeFileDialog(parent, caption, dir, filter)
+ {
+ sortProxy *proxyModel = new sortProxy(this);
+ setProxyModel(proxyModel);
+ }
+};
+
void tst_QFiledialog::task227304_proxyOnFileDialog()
{
QNonNativeFileDialog fd(0, "", QDir::currentPath(), 0);
@@ -1537,6 +1591,30 @@ void tst_QFiledialog::task227304_proxyOnFileDialog()
QTest::keyClick(edit, Qt::Key_S);
QTest::qWait(200);
QTest::keyClick(edit->completer()->popup(), Qt::Key_Down);
+
+ CrashDialog *dialog = new CrashDialog(0, QString("crash dialog test"), QDir::homePath(), QString("*") );
+ dialog->setFileMode(QFileDialog::ExistingFile);
+ dialog->show();
+
+ QListView *list = qFindChild<QListView*>(dialog, "listView");
+ QTest::qWait(200);
+ QTest::keyClick(list, Qt::Key_Down);
+ QTest::keyClick(list, Qt::Key_Return);
+ QTest::qWait(200);
+
+ dialog->close();
+ fd.close();
+
+ QNonNativeFileDialog fd2(0, "I should not crash with a proxy", QDir::tempPath(), 0);
+ QSortFilterProxyModel *pm = new QSortFilterProxyModel;
+ fd2.setProxyModel(pm);
+ fd2.show();
+ QSidebar *sidebar = qFindChild<QSidebar*>(&fd2, "sidebar");
+ sidebar->setFocus();
+ sidebar->selectUrl(QUrl::fromLocalFile(QDir::homePath()));
+ QTest::mouseClick(sidebar->viewport(), Qt::LeftButton, 0, sidebar->visualRect(sidebar->model()->index(1, 0)).center());
+ QTest::qWait(250);
+ //We shouldn't crash
}
void tst_QFiledialog::task227930_correctNavigationKeyboardBehavior()
@@ -1789,5 +1867,119 @@ void tst_QFiledialog::task218353_relativePaths()
appDir.rmdir("test");
}
+void tst_QFiledialog::task251321_sideBarHiddenEntries()
+{
+ QNonNativeFileDialog fd;
+
+ QDir current = QDir::currentPath();
+ current.mkdir(".hidden");
+ QDir hiddenDir = QDir(".hidden");
+ hiddenDir.mkdir("subdir");
+ QDir hiddenSubDir = QDir(".hidden/subdir");
+ hiddenSubDir.mkdir("happy");
+ hiddenSubDir.mkdir("happy2");
+
+ QList<QUrl> urls;
+ urls << QUrl::fromLocalFile(hiddenSubDir.absolutePath());
+ fd.setSidebarUrls(urls);
+ fd.show();
+ QTest::qWait(250);
+
+ QSidebar *sidebar = qFindChild<QSidebar*>(&fd, "sidebar");
+ sidebar->setFocus();
+ sidebar->selectUrl(QUrl::fromLocalFile(hiddenSubDir.absolutePath()));
+ QTest::mouseClick(sidebar->viewport(), Qt::LeftButton, 0, sidebar->visualRect(sidebar->model()->index(0, 0)).center());
+ QTest::qWait(250);
+
+ QFileSystemModel *model = qFindChild<QFileSystemModel*>(&fd, "qt_filesystem_model");
+ QCOMPARE(model->rowCount(model->index(hiddenSubDir.absolutePath())), 2);
+
+ hiddenSubDir.rmdir("happy2");
+ hiddenSubDir.rmdir("happy");
+ hiddenDir.rmdir("subdir");
+ current.rmdir(".hidden");
+}
+
+class MyQSideBar : public QSidebar
+{
+public :
+ MyQSideBar(QWidget *parent = 0) : QSidebar(parent)
+ {}
+
+ void removeSelection() {
+ QList<QModelIndex> idxs = selectionModel()->selectedIndexes();
+ QList<QPersistentModelIndex> indexes;
+ for (int i = 0; i < idxs.count(); i++)
+ indexes.append(idxs.at(i));
+
+ for (int i = 0; i < indexes.count(); ++i)
+ if (!indexes.at(i).data(Qt::UserRole + 1).toUrl().path().isEmpty())
+ model()->removeRow(indexes.at(i).row());
+ }
+};
+
+void tst_QFiledialog::task251341_sideBarRemoveEntries()
+{
+ QNonNativeFileDialog fd;
+
+ QDir current = QDir::currentPath();
+ current.mkdir("testDir");
+ QDir testSubDir = QDir("testDir");
+
+ QList<QUrl> urls;
+ urls << QUrl::fromLocalFile(testSubDir.absolutePath());
+ urls << QUrl::fromLocalFile("NotFound");
+ fd.setSidebarUrls(urls);
+ fd.show();
+ QTest::qWait(250);
+
+ QSidebar *sidebar = qFindChild<QSidebar*>(&fd, "sidebar");
+ sidebar->setFocus();
+ //We enter in the first bookmark
+ sidebar->selectUrl(QUrl::fromLocalFile(testSubDir.absolutePath()));
+ QTest::mouseClick(sidebar->viewport(), Qt::LeftButton, 0, sidebar->visualRect(sidebar->model()->index(0, 0)).center());
+ QTest::qWait(250);
+
+ QFileSystemModel *model = qFindChild<QFileSystemModel*>(&fd, "qt_filesystem_model");
+ //There is no file
+ QCOMPARE(model->rowCount(model->index(testSubDir.absolutePath())), 0);
+ //Icon is not enabled QUrlModel::EnabledRole
+ QVariant value = sidebar->model()->index(0, 0).data(Qt::UserRole + 2);
+ QCOMPARE(qvariant_cast<bool>(value), true);
+
+ sidebar->setFocus();
+ //We enter in the second bookmark which is invalid
+ sidebar->selectUrl(QUrl::fromLocalFile("NotFound"));
+ QTest::mouseClick(sidebar->viewport(), Qt::LeftButton, 0, sidebar->visualRect(sidebar->model()->index(1, 0)).center());
+ QTest::qWait(250);
+
+ //We fallback to root because the entry in the bookmark is invalid
+ QCOMPARE(model->rowCount(model->index("NotFound")), model->rowCount(model->index(model->rootPath())));
+ //Icon is not enabled QUrlModel::EnabledRole
+ value = sidebar->model()->index(1, 0).data(Qt::UserRole + 2);
+ QCOMPARE(qvariant_cast<bool>(value), false);
+
+ MyQSideBar mySideBar;
+ mySideBar.init(model, urls);
+ mySideBar.show();
+ mySideBar.selectUrl(QUrl::fromLocalFile(testSubDir.absolutePath()));
+ QTest::qWait(1000);
+ mySideBar.removeSelection();
+
+ //We remove the first entry
+ QList<QUrl> expected;
+ expected << QUrl::fromLocalFile("NotFound");
+ QCOMPARE(mySideBar.urls(), expected);
+
+ mySideBar.selectUrl(QUrl::fromLocalFile("NotFound"));
+ mySideBar.removeSelection();
+
+ //We remove the second entry
+ expected.clear();
+ QCOMPARE(mySideBar.urls(), expected);
+
+ current.rmdir("testDir");
+}
+
QTEST_MAIN(tst_QFiledialog)
#include "tst_qfiledialog.moc"
diff --git a/tests/auto/qfilesystemmodel/tst_qfilesystemmodel.cpp b/tests/auto/qfilesystemmodel/tst_qfilesystemmodel.cpp
index 826d278..59d57ce 100644
--- a/tests/auto/qfilesystemmodel/tst_qfilesystemmodel.cpp
+++ b/tests/auto/qfilesystemmodel/tst_qfilesystemmodel.cpp
@@ -45,6 +45,7 @@
#include <QFileIconProvider>
#include "../../shared/util.h"
#include <QTime>
+#include <QStyle>
#include <QtGlobal>
//TESTED_CLASS=
@@ -284,6 +285,33 @@ void tst_QFileSystemModel::readOnly()
QVERIFY(model->flags(model->index(file.fileName())) & Qt::ItemIsEditable);
}
+class CustomFileIconProvider : public QFileIconProvider
+{
+public:
+ CustomFileIconProvider() : QFileIconProvider() {
+ mb = qApp->style()->standardIcon(QStyle::SP_MessageBoxCritical);
+ dvd = qApp->style()->standardIcon(QStyle::SP_DriveDVDIcon);
+ }
+
+ virtual QIcon icon(const QFileInfo &info) const
+ {
+ if (info.isDir())
+ return mb;
+
+ return QFileIconProvider::icon(info);
+ }
+ virtual QIcon icon(IconType type) const
+ {
+ if (type == QFileIconProvider::Folder)
+ return dvd;
+
+ return QFileIconProvider::icon(type);
+ }
+private:
+ QIcon mb;
+ QIcon dvd;
+};
+
void tst_QFileSystemModel::iconProvider()
{
QVERIFY(model->iconProvider());
@@ -292,6 +320,19 @@ void tst_QFileSystemModel::iconProvider()
QCOMPARE(model->iconProvider(), p);
model->setIconProvider(0);
delete p;
+
+ QFileSystemModel *myModel = new QFileSystemModel();
+ myModel->setRootPath(QDir::homePath());
+ //Let's wait to populate the model
+ QTest::qWait(250);
+ //We change the provider, icons must me updated
+ CustomFileIconProvider *custom = new CustomFileIconProvider();
+ myModel->setIconProvider(custom);
+
+ QPixmap mb = qApp->style()->standardIcon(QStyle::SP_MessageBoxCritical).pixmap(50, 50);
+ QCOMPARE(myModel->fileIcon(myModel->index(QDir::homePath())).pixmap(50, 50), mb);
+ delete myModel;
+ delete custom;
}
bool tst_QFileSystemModel::createFiles(const QString &test_path, const QStringList &initial_files, int existingFileCount, const QStringList &initial_dirs, const QString &dir)
diff --git a/tests/auto/qfilesystemwatcher/tst_qfilesystemwatcher.cpp b/tests/auto/qfilesystemwatcher/tst_qfilesystemwatcher.cpp
index 87f9ba3..334acce 100644
--- a/tests/auto/qfilesystemwatcher/tst_qfilesystemwatcher.cpp
+++ b/tests/auto/qfilesystemwatcher/tst_qfilesystemwatcher.cpp
@@ -42,10 +42,6 @@
#include <QCoreApplication>
-#if QT_VERSION < 0x040200
-QTEST_NOOP_MAIN
-#else
-
#include <QFileSystemWatcher>
#ifdef Q_OS_LINUX
@@ -403,5 +399,3 @@ void tst_QFileSystemWatcher::removePaths()
QTEST_MAIN(tst_QFileSystemWatcher)
#include "tst_qfilesystemwatcher.moc"
-
-#endif
diff --git a/tests/auto/qfont/tst_qfont.cpp b/tests/auto/qfont/tst_qfont.cpp
index 58e837e..e3a5ffc 100644
--- a/tests/auto/qfont/tst_qfont.cpp
+++ b/tests/auto/qfont/tst_qfont.cpp
@@ -537,9 +537,6 @@ void tst_QFont::insertAndRemoveSubstitutions()
QStringList moreFonts;
moreFonts << "Bar" << "Baz";
QFont::insertSubstitutions("BogusFontFamily", moreFonts);
-#if (QT_VERSION <= 0x040102)
- QEXPECT_FAIL("", "Uppercase/Lowercase issues fixed in 4.1.3 and beyond", Abort);
-#endif
QCOMPARE(QFont::substitutes("BogusFontFamily").count(), 3);
QCOMPARE(QFont::substitutes("bogusfontfamily").count(), 3);
diff --git a/tests/auto/qfontdatabase/tst_qfontdatabase.cpp b/tests/auto/qfontdatabase/tst_qfontdatabase.cpp
index 28f490a..9c42b49 100644
--- a/tests/auto/qfontdatabase/tst_qfontdatabase.cpp
+++ b/tests/auto/qfontdatabase/tst_qfontdatabase.cpp
@@ -149,9 +149,7 @@ void tst_QFontDatabase::fixedPitch()
if (!fdb.families().contains(font))
QSKIP( "Font not installed", SkipSingle);
-#if QT_VERSION >= 0x030200
QCOMPARE(fdb.isFixedPitch(font), fixedPitch);
-#endif
QFont qfont(font);
QFontInfo fi(qfont);
diff --git a/tests/auto/qfuture/tst_qfuture.cpp b/tests/auto/qfuture/tst_qfuture.cpp
index 43fd614..383ecba 100644
--- a/tests/auto/qfuture/tst_qfuture.cpp
+++ b/tests/auto/qfuture/tst_qfuture.cpp
@@ -45,7 +45,7 @@
#include <QtTest/QtTest>
#include <qfuture.h>
-#include <versioncheck.h>
+#include "versioncheck.h"
#include <qfuturewatcher.h>
#include <qtconcurrentresultstore.h>
#include <qtconcurrentexception.h>
diff --git a/tests/auto/qgl/tst_qgl.cpp b/tests/auto/qgl/tst_qgl.cpp
index a64dfc4..69141f3 100644
--- a/tests/auto/qgl/tst_qgl.cpp
+++ b/tests/auto/qgl/tst_qgl.cpp
@@ -66,6 +66,8 @@ private slots:
void getSetCheck();
void openGLVersionCheck();
void graphicsViewClipping();
+ void partialGLWidgetUpdates_data();
+ void partialGLWidgetUpdates();
};
tst_QGL::tst_QGL()
@@ -404,5 +406,68 @@ void tst_QGL::graphicsViewClipping()
#endif
}
+void tst_QGL::partialGLWidgetUpdates_data()
+{
+ QTest::addColumn<bool>("doubleBufferedContext");
+ QTest::addColumn<bool>("autoFillBackground");
+ QTest::addColumn<bool>("supportsPartialUpdates");
+
+ QTest::newRow("Double buffered context") << true << true << false;
+ QTest::newRow("Double buffered context without auto-fill background") << true << false << false;
+ QTest::newRow("Single buffered context") << false << true << false;
+ QTest::newRow("Single buffered context without auto-fill background") << false << false << true;
+}
+
+void tst_QGL::partialGLWidgetUpdates()
+{
+#ifdef QT_NO_OPENGL
+ QSKIP("QGL not yet supported", SkipAll);
+#else
+ if (!QGLFormat::hasOpenGL())
+ QSKIP("QGL not supported on this platform", SkipAll);
+
+ QFETCH(bool, doubleBufferedContext);
+ QFETCH(bool, autoFillBackground);
+ QFETCH(bool, supportsPartialUpdates);
+
+ class MyGLWidget : public QGLWidget
+ {
+ public:
+ QRegion paintEventRegion;
+ void paintEvent(QPaintEvent *e)
+ {
+ paintEventRegion = e->region();
+ }
+ };
+
+ QGLFormat format = QGLFormat::defaultFormat();
+ format.setDoubleBuffer(doubleBufferedContext);
+ QGLFormat::setDefaultFormat(format);
+
+ MyGLWidget widget;
+ widget.setFixedSize(150, 150);
+ widget.setAutoFillBackground(autoFillBackground);
+ widget.show();
+#ifdef Q_WS_X11
+ qt_x11_wait_for_window_manager(&widget);
+#endif
+ QTest::qWait(200);
+
+ if (widget.format().doubleBuffer() != doubleBufferedContext)
+ QSKIP("Platform does not support requested format", SkipAll);
+
+ widget.paintEventRegion = QRegion();
+ widget.repaint(50, 50, 50, 50);
+#ifdef Q_WS_MAC
+ // repaint() is not immediate on the Mac; it has to go through the event loop.
+ QTest::qWait(200);
+#endif
+ if (supportsPartialUpdates)
+ QCOMPARE(widget.paintEventRegion, QRegion(50, 50, 50, 50));
+ else
+ QCOMPARE(widget.paintEventRegion, QRegion(widget.rect()));
+#endif
+}
+
QTEST_MAIN(tst_QGL)
#include "tst_qgl.moc"
diff --git a/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp b/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp
index 0f2d671..58a17ea 100644
--- a/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp
+++ b/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp
@@ -42,10 +42,6 @@
#include <QtTest/QtTest>
-#if QT_VERSION < 0x040200
-QTEST_NOOP_MAIN
-#else
-
#include <private/qtextcontrol_p.h>
#include <private/qgraphicsitem_p.h>
#include <QAbstractTextDocumentLayout>
@@ -82,8 +78,7 @@ Q_DECLARE_METATYPE(QRectF)
class EventTester : public QGraphicsItem
{
public:
- EventTester()
- : repaints(0)
+ EventTester(QGraphicsItem *parent = 0) : QGraphicsItem(parent), repaints(0)
{ br = QRectF(-10, -10, 20, 20); }
void setGeometry(const QRectF &rect)
@@ -162,6 +157,8 @@ private slots:
void mapFromToParent();
void mapFromToScene();
void mapFromToItem();
+ void mapRectFromToParent_data();
+ void mapRectFromToParent();
void isAncestorOf();
void commonAncestorItem();
void data();
@@ -209,6 +206,7 @@ private slots:
void itemTransform_unrelated();
void opacity_data();
void opacity();
+ void opacity2();
void itemStacksBehindParent();
void nestedClipping();
void nestedClippingTransforms();
@@ -216,10 +214,14 @@ private slots:
void tabChangesFocus();
void tabChangesFocus_data();
void cacheMode();
+ void updateCachedItemAfterMove();
+ void deviceTransform_data();
+ void deviceTransform();
// task specific tests below me
void task141694_textItemEnsureVisible();
void task128696_textItemEnsureMovable();
+ void ensureUpdateOnTextItem();
void task177918_lineItemUndetected();
void task240400_clickOnTextItem_data();
void task240400_clickOnTextItem();
@@ -2515,6 +2517,87 @@ void tst_QGraphicsItem::mapFromToItem()
delete item4;
}
+void tst_QGraphicsItem::mapRectFromToParent_data()
+{
+ QTest::addColumn<bool>("parent");
+ QTest::addColumn<QPointF>("parentPos");
+ QTest::addColumn<QTransform>("parentTransform");
+ QTest::addColumn<QPointF>("pos");
+ QTest::addColumn<QTransform>("transform");
+ QTest::addColumn<QRectF>("inputRect");
+ QTest::addColumn<QRectF>("outputRect");
+
+ QTest::newRow("nil") << false << QPointF() << QTransform() << QPointF() << QTransform() << QRectF() << QRectF();
+ QTest::newRow("simple") << false << QPointF() << QTransform() << QPointF() << QTransform()
+ << QRectF(0, 0, 10, 10) << QRectF(0, 0, 10, 10);
+ QTest::newRow("simple w/parent") << true
+ << QPointF() << QTransform()
+ << QPointF() << QTransform()
+ << QRectF(0, 0, 10, 10) << QRectF(0, 0, 10, 10);
+ QTest::newRow("simple w/parent parentPos") << true
+ << QPointF(50, 50) << QTransform()
+ << QPointF() << QTransform()
+ << QRectF(0, 0, 10, 10) << QRectF(0, 0, 10, 10);
+ QTest::newRow("simple w/parent parentPos parentRotation") << true
+ << QPointF(50, 50) << QTransform().rotate(45)
+ << QPointF() << QTransform()
+ << QRectF(0, 0, 10, 10) << QRectF(0, 0, 10, 10);
+ QTest::newRow("pos w/parent") << true
+ << QPointF() << QTransform()
+ << QPointF(50, 50) << QTransform()
+ << QRectF(0, 0, 10, 10) << QRectF(50, 50, 10, 10);
+ QTest::newRow("rotation w/parent") << true
+ << QPointF() << QTransform()
+ << QPointF() << QTransform().rotate(90)
+ << QRectF(0, 0, 10, 10) << QRectF(-10, 0, 10, 10);
+ QTest::newRow("pos rotation w/parent") << true
+ << QPointF() << QTransform()
+ << QPointF(50, 50) << QTransform().rotate(90)
+ << QRectF(0, 0, 10, 10) << QRectF(40, 50, 10, 10);
+ QTest::newRow("pos rotation w/parent parentPos parentRotation") << true
+ << QPointF(-170, -190) << QTransform().rotate(90)
+ << QPointF(50, 50) << QTransform().rotate(90)
+ << QRectF(0, 0, 10, 10) << QRectF(40, 50, 10, 10);
+}
+
+void tst_QGraphicsItem::mapRectFromToParent()
+{
+ QFETCH(bool, parent);
+ QFETCH(QPointF, parentPos);
+ QFETCH(QTransform, parentTransform);
+ QFETCH(QPointF, pos);
+ QFETCH(QTransform, transform);
+ QFETCH(QRectF, inputRect);
+ QFETCH(QRectF, outputRect);
+
+ QGraphicsRectItem *rect = new QGraphicsRectItem;
+ rect->setPos(pos);
+ rect->setTransform(transform);
+
+ if (parent) {
+ QGraphicsRectItem *rectParent = new QGraphicsRectItem;
+ rect->setParentItem(rectParent);
+ rectParent->setPos(parentPos);
+ rectParent->setTransform(parentTransform);
+ }
+
+ // Make sure we use non-destructive transform operations (e.g., 90 degree
+ // rotations).
+ QCOMPARE(rect->mapRectToParent(inputRect), outputRect);
+ QCOMPARE(rect->mapRectFromParent(outputRect), inputRect);
+ QCOMPARE(rect->itemTransform(rect->parentItem()).mapRect(inputRect), outputRect);
+ QCOMPARE(rect->mapToParent(inputRect).boundingRect(), outputRect);
+ QCOMPARE(rect->mapToParent(QPolygonF(inputRect)).boundingRect(), outputRect);
+ QCOMPARE(rect->mapFromParent(outputRect).boundingRect(), inputRect);
+ QCOMPARE(rect->mapFromParent(QPolygonF(outputRect)).boundingRect(), inputRect);
+ QPainterPath inputPath;
+ inputPath.addRect(inputRect);
+ QPainterPath outputPath;
+ outputPath.addRect(outputRect);
+ QCOMPARE(rect->mapToParent(inputPath).boundingRect(), outputPath.boundingRect());
+ QCOMPARE(rect->mapFromParent(outputPath).boundingRect(), inputPath.boundingRect());
+}
+
void tst_QGraphicsItem::isAncestorOf()
{
QGraphicsItem *grandPa = new QGraphicsRectItem;
@@ -3574,6 +3657,8 @@ void tst_QGraphicsItem::defaultItemTest_QGraphicsEllipseItem()
class ItemChangeTester : public QGraphicsRectItem
{
public:
+ ItemChangeTester(){}
+ ItemChangeTester(QGraphicsItem *parent) : QGraphicsRectItem(parent) {}
QVariant itemChangeReturnValue;
QGraphicsScene *itemSceneChangeTargetScene;
@@ -3848,6 +3933,39 @@ void tst_QGraphicsItem::itemChange()
QCOMPARE(tester.changes.size(), ++changeCount);
QCOMPARE(tester.changes.last(), QGraphicsItem::ItemChildRemovedChange);
QCOMPARE(qVariantValue<QGraphicsItem *>(tester.values.last()), (QGraphicsItem *)&testerHelper);
+
+ // ItemChildRemovedChange 1
+ ItemChangeTester *test = new ItemChangeTester;
+ test->itemSceneChangeTargetScene = 0;
+ int count = 0;
+ QGraphicsScene *scene = new QGraphicsScene;
+ scene->addItem(test);
+ count = test->changes.size();
+ //We test here the fact that when a child is deleted the parent receive only one ItemChildRemovedChange
+ QGraphicsRectItem *child = new QGraphicsRectItem(test);
+ //We received ItemChildAddedChange
+ QCOMPARE(test->changes.size(), ++count);
+ QCOMPARE(test->changes.last(), QGraphicsItem::ItemChildAddedChange);
+ delete child;
+ child = 0;
+ QCOMPARE(test->changes.size(), ++count);
+ QCOMPARE(test->changes.last(), QGraphicsItem::ItemChildRemovedChange);
+
+ ItemChangeTester *childTester = new ItemChangeTester(test);
+ //Changes contains all sceneHasChanged and so on, we don't want to test that
+ int childCount = childTester->changes.size();
+ //We received ItemChildAddedChange
+ QCOMPARE(test->changes.size(), ++count);
+ child = new QGraphicsRectItem(childTester);
+ //We received ItemChildAddedChange
+ QCOMPARE(childTester->changes.size(), ++childCount);
+ QCOMPARE(childTester->changes.last(), QGraphicsItem::ItemChildAddedChange);
+ //Delete the child of the top level with all its children
+ delete childTester;
+ //Only one removal
+ QCOMPARE(test->changes.size(), ++count);
+ QCOMPARE(test->changes.last(), QGraphicsItem::ItemChildRemovedChange);
+ delete scene;
}
{
// ItemChildRemovedChange 2
@@ -3934,8 +4052,26 @@ void tst_QGraphicsItem::itemChange()
tester.itemSceneChangeTargetScene = 0;
tester.itemChangeReturnValue = QVariant();
scene.removeItem(&tester);
+ ++changeCount; // ItemSceneChange
+ ++changeCount; // ItemSceneHasChanged
QCOMPARE(tester.scene(), (QGraphicsScene *)0);
}
+ {
+ // ItemToolTipChange/ItemToolTipHasChanged
+ const QString toolTip(QLatin1String("I'm soo cool"));
+ const QString overridenToolTip(QLatin1String("No, you are not soo cool"));
+ tester.itemChangeReturnValue = overridenToolTip;
+ tester.setToolTip(toolTip);
+ ++changeCount; // ItemToolTipChange
+ ++changeCount; // ItemToolTipHasChanged
+ QCOMPARE(tester.changes.size(), changeCount);
+ QCOMPARE(tester.changes.at(changeCount - 2), QGraphicsItem::ItemToolTipChange);
+ QCOMPARE(tester.values.at(changeCount - 2).toString(), toolTip);
+ QCOMPARE(tester.changes.at(changeCount - 1), QGraphicsItem::ItemToolTipHasChanged);
+ QCOMPARE(tester.values.at(changeCount - 1).toString(), overridenToolTip);
+ QCOMPARE(tester.toolTip(), overridenToolTip);
+ tester.itemChangeReturnValue = QVariant();
+ }
}
class EventFilterTesterItem : public QGraphicsLineItem
@@ -4019,6 +4155,25 @@ void tst_QGraphicsItem::sceneEventFilter()
QCOMPARE(tester->filteredEventReceivers.at(6), static_cast<QGraphicsItem *>(text2));
QVERIFY(text2->hasFocus());
+
+ //Let check if the items are correctly removed from the sceneEventFilters array
+ //to avoid stale pointers.
+ QGraphicsView gv;
+ QGraphicsScene *anotherScene = new QGraphicsScene;
+ QGraphicsTextItem *ti = anotherScene->addText("This is a test #1");
+ ti->moveBy(50, 50);
+ QGraphicsTextItem *ti2 = anotherScene->addText("This is a test #2");
+ QGraphicsTextItem *ti3 = anotherScene->addText("This is a test #3");
+ gv.setScene(anotherScene);
+ gv.show();
+ QTest::qWait(250);
+ ti->installSceneEventFilter(ti2);
+ ti3->installSceneEventFilter(ti);
+ delete ti2;
+ //we souldn't crash
+ QTest::mouseMove(gv.viewport(), gv.mapFromScene(ti->scenePos()));
+ QTest::qWait(250);
+ delete ti;
}
class GeometryChanger : public QGraphicsItem
@@ -5152,6 +5307,39 @@ void tst_QGraphicsItem::task240400_clickOnTextItem()
QCOMPARE(item->textCursor().columnNumber(), 0);
}
+class TextItem : public QGraphicsSimpleTextItem
+{
+public:
+ TextItem(const QString& text) : QGraphicsSimpleTextItem(text)
+ {
+ updates = 0;
+ }
+
+ void paint(QPainter * painter, const QStyleOptionGraphicsItem * option, QWidget * widget)
+ {
+ updates++;
+ QGraphicsSimpleTextItem::paint(painter, option, widget);
+ }
+
+ int updates;
+};
+
+void tst_QGraphicsItem::ensureUpdateOnTextItem()
+{
+ QGraphicsScene scene;
+ TextItem *text1 = new TextItem(QLatin1String("123"));
+ scene.addItem(text1);
+ QGraphicsView view(&scene);
+ view.show();
+ QTest::qWait(250);
+ QCOMPARE(text1->updates,1);
+
+ //same bouding rect but we have to update
+ text1->setText(QLatin1String("321"));
+ QTest::qWait(250);
+ QCOMPARE(text1->updates,2);
+}
+
void tst_QGraphicsItem::task243707_addChildBeforeParent()
{
// Task reports that adding the child before the parent leads to an
@@ -5384,6 +5572,91 @@ void tst_QGraphicsItem::opacity()
QCOMPARE(c3->effectiveOpacity(), c3_effectiveOpacity);
}
+void tst_QGraphicsItem::opacity2()
+{
+ EventTester *parent = new EventTester;
+ EventTester *child = new EventTester(parent);
+ EventTester *grandChild = new EventTester(child);
+
+ QGraphicsScene scene;
+ scene.addItem(parent);
+
+ class MyGraphicsView : public QGraphicsView
+ { public:
+ int repaints;
+ MyGraphicsView(QGraphicsScene *scene) : QGraphicsView(scene), repaints(0) {}
+ void paintEvent(QPaintEvent *e) { ++repaints; QGraphicsView::paintEvent(e); }
+ };
+
+ MyGraphicsView view(&scene);
+ view.show();
+#ifdef Q_WS_X11
+ qt_x11_wait_for_window_manager(&view);
+#endif
+ QTest::qWait(250);
+
+#define RESET_REPAINT_COUNTERS \
+ parent->repaints = 0; \
+ child->repaints = 0; \
+ grandChild->repaints = 0; \
+ view.repaints = 0;
+
+ RESET_REPAINT_COUNTERS
+
+ child->setOpacity(0.0);
+ QTest::qWait(100);
+ QCOMPARE(view.repaints, 1);
+ QCOMPARE(parent->repaints, 1);
+ QCOMPARE(child->repaints, 0);
+ QCOMPARE(grandChild->repaints, 0);
+
+ RESET_REPAINT_COUNTERS
+
+ child->setOpacity(1.0);
+ QTest::qWait(100);
+ QCOMPARE(view.repaints, 1);
+ QCOMPARE(parent->repaints, 1);
+ QCOMPARE(child->repaints, 1);
+ QCOMPARE(grandChild->repaints, 1);
+
+ RESET_REPAINT_COUNTERS
+
+ parent->setOpacity(0.0);
+ QTest::qWait(100);
+ QCOMPARE(view.repaints, 1);
+ QCOMPARE(parent->repaints, 0);
+ QCOMPARE(child->repaints, 0);
+ QCOMPARE(grandChild->repaints, 0);
+
+ RESET_REPAINT_COUNTERS
+
+ parent->setOpacity(1.0);
+ QTest::qWait(100);
+ QCOMPARE(view.repaints, 1);
+ QCOMPARE(parent->repaints, 1);
+ QCOMPARE(child->repaints, 1);
+ QCOMPARE(grandChild->repaints, 1);
+
+ grandChild->setFlag(QGraphicsItem::ItemIgnoresParentOpacity);
+ RESET_REPAINT_COUNTERS
+
+ child->setOpacity(0.0);
+ QTest::qWait(100);
+ QCOMPARE(view.repaints, 1);
+ QCOMPARE(parent->repaints, 1);
+ QCOMPARE(child->repaints, 0);
+ QCOMPARE(grandChild->repaints, 1);
+
+ RESET_REPAINT_COUNTERS
+
+ child->setOpacity(0.0); // Already 0.0; no change.
+ QTest::qWait(100);
+ QCOMPARE(view.repaints, 0);
+ QCOMPARE(parent->repaints, 0);
+ QCOMPARE(child->repaints, 0);
+ QCOMPARE(grandChild->repaints, 0);
+}
+
void tst_QGraphicsItem::itemStacksBehindParent()
{
QGraphicsRectItem *parent1 = new QGraphicsRectItem(QRectF(0, 0, 100, 50));
@@ -5888,6 +6161,154 @@ void tst_QGraphicsItem::cacheMode()
QCOMPARE(testerChild2->repaints, 6);
}
+void tst_QGraphicsItem::updateCachedItemAfterMove()
+{
+ // A simple item that uses ItemCoordinateCache
+ EventTester *tester = new EventTester;
+ tester->setCacheMode(QGraphicsItem::ItemCoordinateCache);
+
+ // Add to a scene, show in a view, ensure it's painted and reset its
+ // repaint counter.
+ QGraphicsScene scene;
+ scene.addItem(tester);
+ QGraphicsView view(&scene);
+ view.show();
+#ifdef Q_WS_X11
+ qt_x11_wait_for_window_manager(&view);
+#endif
+ QTest::qWait(125);
+ tester->repaints = 0;
+
+ // Move the item, should not cause repaints
+ tester->setPos(10, 0);
+ QTest::qWait(125);
+ QCOMPARE(tester->repaints, 0);
+
+ // Move then update, should cause one repaint
+ tester->setPos(20, 0);
+ tester->update();
+ QTest::qWait(125);
+ QCOMPARE(tester->repaints, 1);
+
+ // Hiding the item doesn't cause a repaint
+ tester->hide();
+ QTest::qWait(125);
+ QCOMPARE(tester->repaints, 1);
+
+ // Moving a hidden item doesn't cause a repaint
+ tester->setPos(30, 0);
+ tester->update();
+ QTest::qWait(125);
+ QCOMPARE(tester->repaints, 1);
+}
+
+class Track : public QGraphicsRectItem
+{
+public:
+ Track(const QRectF &rect)
+ : QGraphicsRectItem(rect)
+ {
+ setAcceptHoverEvents(true);
+ }
+
+ void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0)
+ {
+ QGraphicsRectItem::paint(painter, option, widget);
+ painter->drawText(boundingRect(), Qt::AlignCenter, QString("%1x%2\n%3x%4").arg(p.x()).arg(p.y()).arg(sp.x()).arg(sp.y()));
+ }
+
+protected:
+ void hoverMoveEvent(QGraphicsSceneHoverEvent *event)
+ {
+ p = event->pos();
+ sp = event->widget()->mapFromGlobal(event->screenPos());
+ update();
+ }
+private:
+ QPointF p;
+ QPoint sp;
+};
+
+void tst_QGraphicsItem::deviceTransform_data()
+{
+ QTest::addColumn<bool>("untransformable1");
+ QTest::addColumn<bool>("untransformable2");
+ QTest::addColumn<bool>("untransformable3");
+ QTest::addColumn<qreal>("rotation1");
+ QTest::addColumn<qreal>("rotation2");
+ QTest::addColumn<qreal>("rotation3");
+ QTest::addColumn<QTransform>("deviceX");
+ QTest::addColumn<QPointF>("mapResult1");
+ QTest::addColumn<QPointF>("mapResult2");
+ QTest::addColumn<QPointF>("mapResult3");
+
+ QTest::newRow("nil") << false << false << false
+ << qreal(0.0) << qreal(0.0) << qreal(0.0)
+ << QTransform()
+ << QPointF(150, 150) << QPointF(250, 250) << QPointF(350, 350);
+ QTest::newRow("deviceX rot 90") << false << false << false
+ << qreal(0.0) << qreal(0.0) << qreal(0.0)
+ << QTransform().rotate(90)
+ << QPointF(-150, 150) << QPointF(-250, 250) << QPointF(-350, 350);
+ QTest::newRow("deviceX rot 90 100") << true << false << false
+ << qreal(0.0) << qreal(0.0) << qreal(0.0)
+ << QTransform().rotate(90)
+ << QPointF(-50, 150) << QPointF(50, 250) << QPointF(150, 350);
+ QTest::newRow("deviceX rot 90 010") << false << true << false
+ << qreal(0.0) << qreal(0.0) << qreal(0.0)
+ << QTransform().rotate(90)
+ << QPointF(-150, 150) << QPointF(-150, 250) << QPointF(-50, 350);
+ QTest::newRow("deviceX rot 90 001") << false << false << true
+ << qreal(0.0) << qreal(0.0) << qreal(0.0)
+ << QTransform().rotate(90)
+ << QPointF(-150, 150) << QPointF(-250, 250) << QPointF(-250, 350);
+ QTest::newRow("deviceX rot 90 111") << true << true << true
+ << qreal(0.0) << qreal(0.0) << qreal(0.0)
+ << QTransform().rotate(90)
+ << QPointF(-50, 150) << QPointF(50, 250) << QPointF(150, 350);
+ QTest::newRow("deviceX rot 90 101") << true << false << true
+ << qreal(0.0) << qreal(0.0) << qreal(0.0)
+ << QTransform().rotate(90)
+ << QPointF(-50, 150) << QPointF(50, 250) << QPointF(150, 350);
+}
+
+void tst_QGraphicsItem::deviceTransform()
+{
+ QFETCH(bool, untransformable1);
+ QFETCH(bool, untransformable2);
+ QFETCH(bool, untransformable3);
+ QFETCH(qreal, rotation1);
+ QFETCH(qreal, rotation2);
+ QFETCH(qreal, rotation3);
+ QFETCH(QTransform, deviceX);
+ QFETCH(QPointF, mapResult1);
+ QFETCH(QPointF, mapResult2);
+ QFETCH(QPointF, mapResult3);
+
+ QGraphicsScene scene;
+ Track *rect1 = new Track(QRectF(0, 0, 100, 100));
+ Track *rect2 = new Track(QRectF(0, 0, 100, 100));
+ Track *rect3 = new Track(QRectF(0, 0, 100, 100));
+ rect2->setParentItem(rect1);
+ rect3->setParentItem(rect2);
+ rect1->setPos(100, 100);
+ rect2->setPos(100, 100);
+ rect3->setPos(100, 100);
+ rect1->rotate(rotation1);
+ rect2->rotate(rotation2);
+ rect3->rotate(rotation3);
+ rect1->setFlag(QGraphicsItem::ItemIgnoresTransformations, untransformable1);
+ rect2->setFlag(QGraphicsItem::ItemIgnoresTransformations, untransformable2);
+ rect3->setFlag(QGraphicsItem::ItemIgnoresTransformations, untransformable3);
+ rect1->setBrush(Qt::red);
+ rect2->setBrush(Qt::green);
+ rect3->setBrush(Qt::blue);
+ scene.addItem(rect1);
+
+ QCOMPARE(rect1->deviceTransform(deviceX).map(QPointF(50, 50)), mapResult1);
+ QCOMPARE(rect2->deviceTransform(deviceX).map(QPointF(50, 50)), mapResult2);
+ QCOMPARE(rect3->deviceTransform(deviceX).map(QPointF(50, 50)), mapResult3);
+}
+
QTEST_MAIN(tst_QGraphicsItem)
#include "tst_qgraphicsitem.moc"
-#endif
diff --git a/tests/auto/qgraphicsitemanimation/tst_qgraphicsitemanimation.cpp b/tests/auto/qgraphicsitemanimation/tst_qgraphicsitemanimation.cpp
index d43d0ae..6d20716 100644
--- a/tests/auto/qgraphicsitemanimation/tst_qgraphicsitemanimation.cpp
+++ b/tests/auto/qgraphicsitemanimation/tst_qgraphicsitemanimation.cpp
@@ -42,12 +42,7 @@
#include <QtTest/QtTest>
-#if QT_VERSION < 0x040200
-QTEST_NOOP_MAIN
-#else
-
#include <qgraphicsitemanimation.h>
-
#include <QtCore/qtimeline.h>
#include <QtGui/qmatrix.h>
@@ -195,4 +190,3 @@ void tst_QGraphicsItemAnimation::setTimeLine()
QTEST_MAIN(tst_QGraphicsItemAnimation)
#include "tst_qgraphicsitemanimation.moc"
-#endif
diff --git a/tests/auto/qgraphicsproxywidget/tst_qgraphicsproxywidget.cpp b/tests/auto/qgraphicsproxywidget/tst_qgraphicsproxywidget.cpp
index d1d1857..b99f111 100644
--- a/tests/auto/qgraphicsproxywidget/tst_qgraphicsproxywidget.cpp
+++ b/tests/auto/qgraphicsproxywidget/tst_qgraphicsproxywidget.cpp
@@ -1475,7 +1475,7 @@ void tst_QGraphicsProxyWidget::scrollUpdate()
view.paintEventRegion = QRegion();
view.npaints = 0;
QTimer::singleShot(0, widget, SLOT(updateScroll()));
- QTest::qWait(500);
+ QTest::qWait(500);
QCOMPARE(view.npaints, 2);
// QRect(0, 0, 200, 12) is the first update, expanded (-2, -2, 2, 2)
// QRect(0, 12, 102, 10) is the scroll update, expanded (-2, -2, 2, 2),
@@ -2582,7 +2582,7 @@ void tst_QGraphicsProxyWidget::childPos()
{
#ifdef Q_OS_IRIX
QSKIP("This test is not reliable on IRIX.", SkipAll);
-#endif
+#endif
QFETCH(bool, moveCombo);
QFETCH(QPoint, comboPos);
QFETCH(QPointF, proxyPos);
@@ -2797,6 +2797,7 @@ void tst_QGraphicsProxyWidget::palettePropagation()
void tst_QGraphicsProxyWidget::fontPropagation()
{
// Construct a font with an unlikely setup
+ QGraphicsScene scene;
QFont lineEditFont = QApplication::font("QLineEdit");
QFont font = lineEditFont;
font.setPointSize(43);
@@ -2805,6 +2806,7 @@ void tst_QGraphicsProxyWidget::fontPropagation()
QGraphicsProxyWidget proxy;
proxy.setWidget(edit);
+ scene.addItem(&proxy);
EventSpy editSpy(edit);
EventSpy proxySpy(&proxy);
@@ -2825,6 +2827,7 @@ void tst_QGraphicsProxyWidget::fontPropagation()
// Proxy to widget
proxy.setFont(font);
+ QApplication::processEvents(); // wait for QEvent::Polish
QVERIFY(proxy.testAttribute(Qt::WA_SetFont));
QCOMPARE(editSpy.counts[QEvent::FontChange], 3);
QCOMPARE(proxySpy.counts[QEvent::FontChange], 1);
@@ -2893,7 +2896,7 @@ void tst_QGraphicsProxyWidget::createProxyForChildWidget()
edit2->setText("QLineEdit 2");
QCheckBox *checkbox = new QCheckBox("QCheckBox");
QVBoxLayout *vlayout = new QVBoxLayout;
-
+
vlayout->addWidget(edit1);
vlayout->addWidget(edit2);
vlayout->addWidget(checkbox);
@@ -2916,7 +2919,7 @@ void tst_QGraphicsProxyWidget::createProxyForChildWidget()
QVERIFY(window.graphicsProxyWidget() == 0);
QVERIFY(checkbox->graphicsProxyWidget() == 0);
-
+
QGraphicsProxyWidget *windowProxy = scene.addWidget(&window);
QGraphicsView view(&scene);
view.show();
@@ -2946,10 +2949,10 @@ void tst_QGraphicsProxyWidget::createProxyForChildWidget()
QVERIFY(boxProxy->size() == box->size());
QTest::qWait(10);
-
+
QSignalSpy spy(checkbox, SIGNAL(clicked()));
-
+
QTest::mousePress(view.viewport(), Qt::LeftButton, 0,
view.mapFromScene(checkboxProxy->mapToScene(QPointF(8,8))));
QTRY_COMPARE(spy.count(), 0);
@@ -2958,7 +2961,7 @@ void tst_QGraphicsProxyWidget::createProxyForChildWidget()
QTRY_COMPARE(spy.count(), 1);
-
+
boxProxy->setWidget(0);
QVERIFY(checkbox->graphicsProxyWidget() == 0);
@@ -3006,10 +3009,10 @@ void tst_QGraphicsProxyWidget::actionsContextMenu()
widget->addAction(new QAction("item 2", widget));
widget->addAction(new QAction("item 3", widget));
widget->setContextMenuPolicy(Qt::ActionsContextMenu);
-
+
QGraphicsScene scene;
scene.addWidget(widget);
-
+
QGraphicsView view(&scene);
view.show();
#ifdef Q_WS_X11
diff --git a/tests/auto/qgraphicsscene/tst_qgraphicsscene.cpp b/tests/auto/qgraphicsscene/tst_qgraphicsscene.cpp
index 91ed851..0c5ebf6 100644
--- a/tests/auto/qgraphicsscene/tst_qgraphicsscene.cpp
+++ b/tests/auto/qgraphicsscene/tst_qgraphicsscene.cpp
@@ -45,12 +45,9 @@
#include <ceconfig.h>
#endif
-#if QT_VERSION < 0x040200
-QTEST_NOOP_MAIN
-#else
-
#include <QtGui>
#include <math.h>
+#include "../../shared/util.h"
#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
#include <windows.h>
@@ -245,6 +242,7 @@ private slots:
void task139782_containsItemBoundingRect();
void task176178_itemIndexMethodBreaksSceneRect();
void task160653_selectionChanged();
+ void task250680_childClip();
};
void tst_QGraphicsScene::initTestCase()
@@ -3384,6 +3382,31 @@ void tst_QGraphicsScene::task160653_selectionChanged()
QCOMPARE(spy.count(), 1);
}
+void tst_QGraphicsScene::task250680_childClip()
+{
+ QGraphicsRectItem *clipper = new QGraphicsRectItem;
+ clipper->setFlag(QGraphicsItem::ItemClipsChildrenToShape);
+ clipper->setPen(QPen(Qt::green));
+ clipper->setRect(200, 200, 640, 480);
+
+ QGraphicsRectItem *rect = new QGraphicsRectItem(clipper);
+ rect->setPen(QPen(Qt::red));
+ rect->setBrush(QBrush(QColor(255, 0, 0, 75)));
+ rect->setPos(320, 240);
+ rect->setRect(-25, -25, 50, 50);
+
+ QGraphicsScene scene;
+ scene.addItem(clipper);
+
+ QPainterPath path;
+ path.addRect(-25, -25, 50, 50);
+ QCOMPARE(rect->clipPath(), path);
+
+ QCOMPARE(scene.items(QRectF(320, 240, 5, 5)).size(), 2);
+ rect->rotate(45);
+ QCOMPARE(scene.items(QRectF(320, 240, 5, 5)).size(), 2);
+}
+
void tst_QGraphicsScene::sorting_data()
{
QTest::addColumn<bool>("cache");
@@ -3515,8 +3538,7 @@ void tst_QGraphicsScene::changedSignal()
scene.addItem(rect);
QCOMPARE(cl.changes.size(), 0);
- qApp->processEvents();
- QCOMPARE(cl.changes.size(), 1);
+ QTRY_COMPARE(cl.changes.size(), 1);
QCOMPARE(cl.changes.at(0).size(), 1);
QCOMPARE(cl.changes.at(0).first(), QRectF(0, 0, 10, 10));
@@ -3563,4 +3585,3 @@ void tst_QGraphicsScene::stickyFocus()
QTEST_MAIN(tst_QGraphicsScene)
#include "tst_qgraphicsscene.moc"
-#endif
diff --git a/tests/auto/qgraphicsview/tst_qgraphicsview.cpp b/tests/auto/qgraphicsview/tst_qgraphicsview.cpp
index 4368e76..db1e4c3 100644
--- a/tests/auto/qgraphicsview/tst_qgraphicsview.cpp
+++ b/tests/auto/qgraphicsview/tst_qgraphicsview.cpp
@@ -42,10 +42,6 @@
#include <QtTest/QtTest>
-#if QT_VERSION < 0x040200
-QTEST_NOOP_MAIN
-#else
-
#include <qgraphicsitem.h>
#include <qgraphicsscene.h>
#include <qgraphicssceneevent.h>
@@ -155,6 +151,8 @@ private slots:
void fitInView();
void itemsAtPoint();
void itemsInRect();
+ void itemsInRect_cosmeticAdjust_data();
+ void itemsInRect_cosmeticAdjust();
void itemsInPoly();
void itemsInPath();
void itemAt();
@@ -202,6 +200,7 @@ private slots:
void task239729_noViewUpdate();
void task239047_fitInViewSmallViewport();
void task245469_itemsAtPointWithClip();
+ void task253415_reconnectUpdateSceneOnSceneChanged();
};
void tst_QGraphicsView::initTestCase()
@@ -1310,6 +1309,65 @@ void tst_QGraphicsView::itemsInRect()
QCOMPARE(items.takeFirst()->zValue(), qreal(3));
}
+class CountPaintItem : public QGraphicsRectItem
+{
+public:
+ int numPaints;
+
+ CountPaintItem(const QRectF &rect)
+ : QGraphicsRectItem(rect), numPaints(0)
+ { }
+
+ void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0)
+ {
+ ++numPaints;
+ QGraphicsRectItem::paint(painter, option, widget);
+ }
+};
+
+void tst_QGraphicsView::itemsInRect_cosmeticAdjust_data()
+{
+ QTest::addColumn<QRect>("updateRect");
+ QTest::addColumn<int>("numPaints");
+
+ QTest::newRow("nil") << QRect() << 1;
+ QTest::newRow("0, 0, 300, 100") << QRect(0, 0, 300, 100) << 1;
+ QTest::newRow("0, 0, 100, 300") << QRect(0, 0, 100, 300) << 1;
+ QTest::newRow("200, 0, 100, 300") << QRect(200, 0, 100, 300) << 1;
+ QTest::newRow("0, 200, 300, 100") << QRect(0, 200, 300, 100) << 1;
+ QTest::newRow("0, 0, 300, 99") << QRect(0, 0, 300, 99) << 0;
+ QTest::newRow("0, 0, 99, 300") << QRect(0, 0, 99, 300) << 0;
+ QTest::newRow("201, 0, 99, 300") << QRect(201, 0, 99, 300) << 0;
+ QTest::newRow("0, 201, 300, 99") << QRect(0, 201, 300, 99) << 0;
+}
+
+void tst_QGraphicsView::itemsInRect_cosmeticAdjust()
+{
+ QFETCH(QRect, updateRect);
+ QFETCH(int, numPaints);
+
+ QGraphicsScene scene(-100, -100, 200, 200);
+ CountPaintItem *rect = new CountPaintItem(QRectF(-50, -50, 100, 100));
+ scene.addItem(rect);
+
+ QGraphicsView view(&scene);
+ view.setFrameStyle(0);
+ view.resize(300, 300);
+ view.show();
+#ifdef Q_WS_X11
+ qt_x11_wait_for_window_manager(&view);
+#endif
+ QTest::qWait(125);
+
+ rect->numPaints = 0;
+ if (updateRect.isNull())
+ view.viewport()->update();
+ else
+ view.viewport()->update(updateRect);
+ qApp->processEvents();
+ QCOMPARE(rect->numPaints, numPaints);
+}
+
void tst_QGraphicsView::itemsInPoly()
{
QGraphicsScene scene;
@@ -2987,6 +3045,28 @@ void tst_QGraphicsView::centerOnDirtyItem()
QCOMPARE(before, after);
}
+void tst_QGraphicsView::task253415_reconnectUpdateSceneOnSceneChanged()
+{
+ QGraphicsView view;
+ QGraphicsView dummyView;
+ view.setWindowFlags(view.windowFlags() | Qt::WindowStaysOnTopHint);
+ view.resize(200, 200);
+
+ QGraphicsScene scene1;
+ QObject::connect(&scene1, SIGNAL(changed(QList<QRectF>)), &dummyView, SLOT(updateScene(QList<QRectF>)));
+ view.setScene(&scene1);
+
+ QTest::qWait(125);
+
+ QGraphicsScene scene2;
+ QObject::connect(&scene2, SIGNAL(changed(QList<QRectF>)), &dummyView, SLOT(updateScene(QList<QRectF>)));
+ view.setScene(&scene2);
+
+ QTest::qWait(125);
+
+ bool wasConnected2 = QObject::disconnect(&scene2, SIGNAL(changed(QList<QRectF>)), &view, 0);
+ QVERIFY(wasConnected2);
+}
+
QTEST_MAIN(tst_QGraphicsView)
#include "tst_qgraphicsview.moc"
-#endif
diff --git a/tests/auto/qgraphicswidget/tst_qgraphicswidget.cpp b/tests/auto/qgraphicswidget/tst_qgraphicswidget.cpp
index f25a079..b85abd3 100644
--- a/tests/auto/qgraphicswidget/tst_qgraphicswidget.cpp
+++ b/tests/auto/qgraphicswidget/tst_qgraphicswidget.cpp
@@ -50,6 +50,7 @@
#include <qcleanlooksstyle.h>
#include <qlineedit.h>
#include <qboxlayout.h>
+#include <qaction.h>
#include "../../shared/util.h"
@@ -150,6 +151,7 @@ private slots:
// Task fixes
void task236127_bspTreeIndexFails();
void task243004_setStyleCrash();
+ void task250119_shortcutContext();
};
@@ -1827,6 +1829,89 @@ void tst_QGraphicsWidget::task243004_setStyleCrash()
delete item2;
}
+class GraphicsWidget_task250119 : public QGraphicsWidget
+{
+public:
+ GraphicsWidget_task250119()
+ : shortcutEvents(0)
+ {
+ setFocusPolicy(Qt::StrongFocus);
+ resize(100, 100);
+ }
+
+ int shortcutEvents;
+
+private:
+ bool event(QEvent *event)
+ {
+ if (event->type() == QEvent::Shortcut)
+ shortcutEvents++;
+ return QGraphicsWidget::event(event);
+ }
+
+ void paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWidget *)
+ {
+ if (hasFocus()) {
+ painter->setPen(QPen(Qt::black, 0, Qt::DashLine));
+ painter->drawRect(rect());
+ }
+ painter->setPen(QPen(Qt::black, 0, Qt::SolidLine));
+ painter->fillRect(rect().adjusted(2, 2, -2, -2), Qt::yellow);
+ painter->drawRect(rect().adjusted(2, 2, -2, -2));
+ }
+};
+
+void tst_QGraphicsWidget::task250119_shortcutContext()
+{
+ QGraphicsScene scene;
+ QGraphicsView view;
+ view.setScene(&scene);
+ view.show();
+ QTest::qWait(100);
+
+
+ // *** Event: ***
+
+ GraphicsWidget_task250119 w_event;
+ scene.addItem(&w_event);
+
+ const int id = w_event.grabShortcut(Qt::Key_A, Qt::WidgetWithChildrenShortcut);
+ w_event.setShortcutEnabled(id, true);
+
+ w_event.setFocus();
+ QTest::keyPress(&view, Qt::Key_A);
+ QCOMPARE(w_event.shortcutEvents, 1);
+
+ w_event.clearFocus();
+ QTest::keyPress(&view, Qt::Key_A);
+ QCOMPARE(w_event.shortcutEvents, 1);
+
+ scene.removeItem(&w_event);
+
+
+ // *** Signal: ***
+
+ GraphicsWidget_task250119 w_signal;
+ scene.addItem(&w_signal);
+
+ QAction action(0);
+ action.setShortcut(Qt::Key_B);
+ action.setShortcutContext(Qt::WidgetWithChildrenShortcut);
+ QSignalSpy spy(&action, SIGNAL(triggered()));
+
+ w_signal.addAction(&action);
+
+ w_signal.setFocus();
+ QTest::keyPress(&view, Qt::Key_B);
+ QCOMPARE(spy.count(), 1);
+
+ w_signal.clearFocus();
+ QTest::keyPress(&view, Qt::Key_B);
+ QCOMPARE(spy.count(), 1);
+
+ scene.removeItem(&w_signal);
+}
+
QTEST_MAIN(tst_QGraphicsWidget)
#include "tst_qgraphicswidget.moc"
diff --git a/tests/auto/qhash/tst_qhash.cpp b/tests/auto/qhash/tst_qhash.cpp
index 9343504..f300eec 100644
--- a/tests/auto/qhash/tst_qhash.cpp
+++ b/tests/auto/qhash/tst_qhash.cpp
@@ -39,16 +39,10 @@
**
****************************************************************************/
-
#include <QtTest/QtTest>
-
-#if QT_VERSION >= 0x040000
#include <qhash.h>
#include <qmap.h>
-#endif
-
-
//TESTED_CLASS=
//TESTED_FILES=
@@ -65,7 +59,7 @@ private slots:
void insert1();
void erase();
void key();
-
+
void count(); // copied from tst_QMap
void clear(); // copied from tst_QMap
void empty(); // copied from tst_QMap
@@ -80,9 +74,7 @@ private slots:
void qmultihash_specific();
void compare();
-#if QT_VERSION > 0x040100
void compare2();
-#endif // QT_VERSION
void iterators(); // sligthly modified from tst_QMap
void keys_values_uniqueKeys(); // slightly modified from tst_QMap
void noNeedlessRehashes();
@@ -799,7 +791,6 @@ void tst_QHash::compare()
QVERIFY(hash1 != hash2);
}
-#if QT_VERSION > 0x040100
void tst_QHash::compare2()
{
QHash<int, int> a;
@@ -838,7 +829,6 @@ void tst_QHash::compare2()
QVERIFY(!(a == b));
QVERIFY(!(b == a));
}
-#endif // QT_VERSION
//sligthly modified from tst_QMap
void tst_QHash::iterators()
@@ -996,9 +986,6 @@ void tst_QHash::rehash_isnt_quadratic()
class Bar
{
public:
-#if QT_VERSION < 0x040100
- Bar() : j(0) {}
-#endif
Bar(int i) : j(i) {}
int j;
@@ -1180,37 +1167,27 @@ QList<T> sorted(const QList<T> &list)
void tst_QHash::keys_values_uniqueKeys()
{
QHash<QString, int> hash;
-#if QT_VERSION >= 0x040200
QVERIFY(hash.uniqueKeys().isEmpty());
-#endif
QVERIFY(hash.keys().isEmpty());
QVERIFY(hash.values().isEmpty());
hash.insertMulti("alpha", 1);
QVERIFY(sorted(hash.keys()) == (QList<QString>() << "alpha"));
-#if QT_VERSION >= 0x040200
QVERIFY(hash.keys() == hash.uniqueKeys());
-#endif
QVERIFY(hash.values() == (QList<int>() << 1));
hash.insertMulti("beta", -2);
QVERIFY(sorted(hash.keys()) == (QList<QString>() << "alpha" << "beta"));
-#if QT_VERSION >= 0x040200
QVERIFY(hash.keys() == hash.uniqueKeys());
-#endif
QVERIFY(sorted(hash.values()) == sorted(QList<int>() << 1 << -2));
hash.insertMulti("alpha", 2);
-#if QT_VERSION >= 0x040200
QVERIFY(sorted(hash.uniqueKeys()) == (QList<QString>() << "alpha" << "beta"));
-#endif
QVERIFY(sorted(hash.keys()) == (QList<QString>() << "alpha" << "alpha" << "beta"));
QVERIFY(sorted(hash.values()) == sorted(QList<int>() << 2 << 1 << -2));
hash.insertMulti("beta", 4);
-#if QT_VERSION >= 0x040200
QVERIFY(sorted(hash.uniqueKeys()) == (QList<QString>() << "alpha" << "beta"));
-#endif
QVERIFY(sorted(hash.keys()) == (QList<QString>() << "alpha" << "alpha" << "beta" << "beta"));
QVERIFY(sorted(hash.values()) == sorted(QList<int>() << 2 << 1 << 4 << -2));
}
diff --git a/tests/auto/qheaderview/tst_qheaderview.cpp b/tests/auto/qheaderview/tst_qheaderview.cpp
index 0867e48..6478854 100644
--- a/tests/auto/qheaderview/tst_qheaderview.cpp
+++ b/tests/auto/qheaderview/tst_qheaderview.cpp
@@ -187,6 +187,7 @@ private slots:
void emptySectionSpan();
void task236450_hidden_data();
void task236450_hidden();
+ void task248050_hideRow();
protected:
QHeaderView *view;
@@ -1919,5 +1920,28 @@ void tst_QHeaderView::task236450_hidden()
}
+void tst_QHeaderView::task248050_hideRow()
+{
+ //this is the sequence of events that make the task fail
+ protected_QHeaderView header(Qt::Vertical);
+ QStandardItemModel model(0, 1);
+ header.setStretchLastSection(false);
+ header.setDefaultSectionSize(17);
+ header.setModel(&model);
+ header.doItemsLayout();
+
+ model.setRowCount(3);
+
+ QCOMPARE(header.sectionPosition(2), 17*2);
+
+ header.hideSection(1);
+ QCOMPARE(header.sectionPosition(2), 17);
+
+ QTest::qWait(100);
+ //the size of the section shouldn't have changed
+ QCOMPARE(header.sectionPosition(2), 17);
+}
+
+
QTEST_MAIN(tst_QHeaderView)
#include "tst_qheaderview.moc"
diff --git a/tests/auto/qhostinfo/tst_qhostinfo.cpp b/tests/auto/qhostinfo/tst_qhostinfo.cpp
index 3a7698b..0c5bc59 100644
--- a/tests/auto/qhostinfo/tst_qhostinfo.cpp
+++ b/tests/auto/qhostinfo/tst_qhostinfo.cpp
@@ -305,7 +305,7 @@ void tst_QHostInfo::reverseLookup_data()
// ### Use internal DNS instead. Discussed with Andreas.
//QTest::newRow("classical.hexago.com") << QString("2001:5c0:0:2::24") << QStringList(QString("classical.hexago.com")) << 0;
- QTest::newRow("www.cisco.com") << QString("198.133.219.25") << QStringList(QString("www.cisco.com")) << 0;
+ QTest::newRow("www.cisco.com") << QString("198.133.219.25") << QStringList(QString("origin-www.cisco.com")) << 0;
QTest::newRow("bogusexample.doenstexist.org") << QString("1::2::3::4") << QStringList() << 1;
}
diff --git a/tests/auto/qhttp/tst_qhttp.cpp b/tests/auto/qhttp/tst_qhttp.cpp
index e4a798e..46bd8cd 100644
--- a/tests/auto/qhttp/tst_qhttp.cpp
+++ b/tests/auto/qhttp/tst_qhttp.cpp
@@ -253,11 +253,9 @@ void tst_QHttp::constructing()
}
-#if QT_VERSION >= 0x040102
{
QHttpResponseHeader header(200);
}
-#endif
}
void tst_QHttp::invalidRequests()
diff --git a/tests/auto/qhttpsocketengine/tst_qhttpsocketengine.cpp b/tests/auto/qhttpsocketengine/tst_qhttpsocketengine.cpp
index 9ef8f9a..7eaf7c7 100644
--- a/tests/auto/qhttpsocketengine/tst_qhttpsocketengine.cpp
+++ b/tests/auto/qhttpsocketengine/tst_qhttpsocketengine.cpp
@@ -137,8 +137,6 @@ public slots:
}
};
-static const char *IMAP_IP = "62.70.27.18";
-
tst_QHttpSocketEngine::tst_QHttpSocketEngine()
{
}
@@ -307,12 +305,11 @@ void tst_QHttpSocketEngine::simpleConnectToIMAP()
socketDevice.setProxy(QNetworkProxy(QNetworkProxy::HttpProxy, QtNetworkSettings::serverName(), 3128));
- // Connect to imap.trolltech.com's IP
- QVERIFY(!socketDevice.connectToHost(QHostAddress(IMAP_IP), 143));
+ QVERIFY(!socketDevice.connectToHost(QtNetworkSettings::serverIP(), 143));
QVERIFY(socketDevice.state() == QAbstractSocket::ConnectingState);
QVERIFY(socketDevice.waitForWrite());
QVERIFY(socketDevice.state() == QAbstractSocket::ConnectedState);
- QVERIFY(socketDevice.peerAddress() == QHostAddress(IMAP_IP));
+ QVERIFY(socketDevice.peerAddress() == QtNetworkSettings::serverIP());
QVERIFY(!socketDevice.localAddress().isNull());
QVERIFY(socketDevice.localPort() > 0);
@@ -328,7 +325,7 @@ void tst_QHttpSocketEngine::simpleConnectToIMAP()
// Check that the greeting is what we expect it to be
QCOMPARE(array.constData(),
- "* OK esparsett Cyrus IMAP4 v2.2.8 server ready\r\n");
+ "* OK [CAPABILITY IMAP4 IMAP4rev1 LITERAL+ ID STARTTLS LOGINDISABLED] qt-test-server.qt-test-net Cyrus IMAP4 v2.3.11-Mandriva-RPM-2.3.11-6mdv2008.1 server ready\r\n");
// Write a logout message
QByteArray array2 = "XXXX LOGOUT\r\n";
@@ -369,7 +366,6 @@ void tst_QHttpSocketEngine::simpleErrorsAndStates()
QVERIFY(!socketDevice.connectToHost(QHostAddress(QtNetworkSettings::serverName()), 8088));
QVERIFY(socketDevice.state() == QAbstractSocket::ConnectingState);
if (socketDevice.waitForWrite(15000)) {
- qDebug() << socketDevice.state();
QVERIFY(socketDevice.state() == QAbstractSocket::ConnectedState ||
socketDevice.state() == QAbstractSocket::UnconnectedState);
} else {
@@ -451,14 +447,14 @@ void tst_QHttpSocketEngine::tcpSocketBlockingTest()
QTcpSocket socket;
// Connect
- socket.connectToHost("imap.troll.no", 143);
+ socket.connectToHost(QtNetworkSettings::serverName(), 143);
QVERIFY(socket.waitForConnected());
QCOMPARE(socket.state(), QTcpSocket::ConnectedState);
// Read greeting
QVERIFY(socket.waitForReadyRead(5000));
QString s = socket.readLine();
- QCOMPARE(s.toLatin1().constData(), "* OK esparsett Cyrus IMAP4 v2.2.8 server ready\r\n");
+ QCOMPARE(s.toLatin1().constData(), "* OK [CAPABILITY IMAP4 IMAP4rev1 LITERAL+ ID STARTTLS LOGINDISABLED] qt-test-server.qt-test-net Cyrus IMAP4 v2.3.11-Mandriva-RPM-2.3.11-6mdv2008.1 server ready\r\n");
// Write NOOP
QCOMPARE((int) socket.write("1 NOOP\r\n", 8), 8);
@@ -508,7 +504,7 @@ void tst_QHttpSocketEngine::tcpSocketNonBlockingTest()
tcpSocketNonBlocking_socket = &socket;
// Connect
- socket.connectToHost("imap.troll.no", 143);
+ socket.connectToHost(QtNetworkSettings::serverName(), 143);
QCOMPARE(socket.state(), QTcpSocket::HostLookupState);
QTestEventLoop::instance().enterLoop(30);
@@ -533,7 +529,7 @@ void tst_QHttpSocketEngine::tcpSocketNonBlockingTest()
// Read greeting
QVERIFY(!tcpSocketNonBlocking_data.isEmpty());
QCOMPARE(tcpSocketNonBlocking_data.at(0).toLatin1().constData(),
- "* OK esparsett Cyrus IMAP4 v2.2.8 server ready\r\n");
+ "* OK [CAPABILITY IMAP4 IMAP4rev1 LITERAL+ ID STARTTLS LOGINDISABLED] qt-test-server.qt-test-net Cyrus IMAP4 v2.3.11-Mandriva-RPM-2.3.11-6mdv2008.1 server ready\r\n");
tcpSocketNonBlocking_data.clear();
tcpSocketNonBlocking_totalWritten = 0;
@@ -696,12 +692,11 @@ void tst_QHttpSocketEngine::passwordAuth()
socketDevice.setProxy(QNetworkProxy(QNetworkProxy::HttpProxy, QtNetworkSettings::serverName(), 3128, "qsockstest", "password"));
- // Connect to imap.trolltech.com's IP
- QVERIFY(!socketDevice.connectToHost(QHostAddress(IMAP_IP), 143));
+ QVERIFY(!socketDevice.connectToHost(QtNetworkSettings::serverIP(), 143));
QVERIFY(socketDevice.state() == QAbstractSocket::ConnectingState);
QVERIFY(socketDevice.waitForWrite());
QVERIFY(socketDevice.state() == QAbstractSocket::ConnectedState);
- QVERIFY(socketDevice.peerAddress() == QHostAddress(IMAP_IP));
+ QVERIFY(socketDevice.peerAddress() == QtNetworkSettings::serverIP());
// Wait for the greeting
QVERIFY(socketDevice.waitForRead());
@@ -715,7 +710,7 @@ void tst_QHttpSocketEngine::passwordAuth()
// Check that the greeting is what we expect it to be
QCOMPARE(array.constData(),
- "* OK esparsett Cyrus IMAP4 v2.2.8 server ready\r\n");
+ "* OK [CAPABILITY IMAP4 IMAP4rev1 LITERAL+ ID STARTTLS LOGINDISABLED] qt-test-server.qt-test-net Cyrus IMAP4 v2.3.11-Mandriva-RPM-2.3.11-6mdv2008.1 server ready\r\n");
// Write a logout message
QByteArray array2 = "XXXX LOGOUT\r\n";
diff --git a/tests/auto/qicoimageformat/tst_qticoimageformat.cpp b/tests/auto/qicoimageformat/tst_qticoimageformat.cpp
index 9fca6df..7d7f4ac 100644
--- a/tests/auto/qicoimageformat/tst_qticoimageformat.cpp
+++ b/tests/auto/qicoimageformat/tst_qticoimageformat.cpp
@@ -264,42 +264,35 @@ void tst_QtIcoImageFormat::nextImageDelay_data()
{
QTest::addColumn<QString>("fileName");
QTest::addColumn<int>("count");
- QTest::addColumn<int>("delay");
-
- QTest::newRow("floppy (16px,32px - 16 colors)") << "valid/35FLOPPY.ICO" << 2 << 0;
- QTest::newRow("16px,32px,48px - 256,16M colors") << "valid/abcardWindow.ico" << 6 << 0;
- QTest::newRow("16px - 16 colors") << "valid/App.ico" << 1 << 0;
- QTest::newRow("16px,32px,48px - 16,256,16M colors") << "valid/Obj_N2_Internal_Mem.ico" << 9 << 0;
- QTest::newRow("16px - 16,256,16M colors") << "valid/Status_Play.ico" << 3 << 0;
- QTest::newRow("16px,32px - 16 colors") << "valid/TIMER01.ICO" << 2 << 0;
- QTest::newRow("16px16c, 32px32c, 32px256c") << "valid/WORLD.ico" << 3 << 0;
- QTest::newRow("16px16c, 32px32c, 32px256c") << "valid/WORLDH.ico" << 3 << 0;
- QTest::newRow("invalid floppy (first 8 bytes = 0xff)") << "invalid/35floppy.ico" << -1 << -1;
- QTest::newRow("includes 32BPP w/alpha") << "valid/semitransparent.ico" << 9 << 0;
+
+ QTest::newRow("floppy (16px,32px - 16 colors)") << "valid/35FLOPPY.ICO" << 2;
+ QTest::newRow("16px,32px,48px - 256,16M colors") << "valid/abcardWindow.ico" << 6;
+ QTest::newRow("16px - 16 colors") << "valid/App.ico" << 1;
+ QTest::newRow("16px,32px,48px - 16,256,16M colors") << "valid/Obj_N2_Internal_Mem.ico" << 9;
+ QTest::newRow("16px - 16,256,16M colors") << "valid/Status_Play.ico" << 3;
+ QTest::newRow("16px,32px - 16 colors") << "valid/TIMER01.ICO" << 2;
+ QTest::newRow("16px16c, 32px32c, 32px256c") << "valid/WORLD.ico" << 3;
+ QTest::newRow("16px16c, 32px32c, 32px256c") << "valid/WORLDH.ico" << 3;
+ QTest::newRow("invalid floppy (first 8 bytes = 0xff)") << "invalid/35floppy.ico" << -1;
+ QTest::newRow("includes 32BPP w/alpha") << "valid/semitransparent.ico" << 9;
}
void tst_QtIcoImageFormat::nextImageDelay()
{
QFETCH(QString, fileName);
QFETCH(int, count);
- QFETCH(int, delay);
-
-#if QT_VERSION > 0x040001
- delay = 0;
-#endif
QImageReader reader(m_IconPath + "/" + fileName);
if (count == -1) {
- QCOMPARE(reader.nextImageDelay(), delay);
-
+ QCOMPARE(reader.nextImageDelay(), 0);
} else {
int i;
for (i = 0; i < count; i++) {
-
QVERIFY(reader.jumpToImage(i));
- QCOMPARE(reader.nextImageDelay(), delay);
+ QCOMPARE(reader.nextImageDelay(), 0);
}
}
}
+
QTEST_MAIN(tst_QtIcoImageFormat)
#include "tst_qticoimageformat.moc"
diff --git a/tests/auto/qicon/tst_qicon.cpp b/tests/auto/qicon/tst_qicon.cpp
index 7e515a5..4e9a880 100644
--- a/tests/auto/qicon/tst_qicon.cpp
+++ b/tests/auto/qicon/tst_qicon.cpp
@@ -186,10 +186,8 @@ void tst_QIcon::actualSize2()
QFETCH(QSize, argument);
QFETCH(QSize, result);
-#if QT_VERSION >= 0x040200
QCOMPARE(icon.actualSize(argument), result);
QCOMPARE(icon.pixmap(argument).size(), result);
-#endif
}
void tst_QIcon::svgActualSize()
diff --git a/tests/auto/qimage/tst_qimage.cpp b/tests/auto/qimage/tst_qimage.cpp
index 132e373..88bbb50 100644
--- a/tests/auto/qimage/tst_qimage.cpp
+++ b/tests/auto/qimage/tst_qimage.cpp
@@ -95,9 +95,8 @@ private slots:
void rotate_data();
void rotate();
-#if QT_VERSION >= 0x040102
void copy();
-#endif
+
void setPixel_data();
void setPixel();
@@ -974,7 +973,6 @@ void tst_QImage::rotate()
QCOMPARE(original, dest);
}
-#if QT_VERSION >= 0x040102
void tst_QImage::copy()
{
// Task 99250
@@ -983,7 +981,6 @@ void tst_QImage::copy()
img.copy(QRect(1000,1,1,1));
}
}
-#endif
void tst_QImage::setPixel_data()
{
@@ -1457,9 +1454,9 @@ void tst_QImage::smoothScale3()
QRgb cb = b.pixel(x, y);
// tolerate a little bit of rounding errors
- QVERIFY(compare(qRed(ca), qRed(cb), 2));
- QVERIFY(compare(qGreen(ca), qGreen(cb), 2));
- QVERIFY(compare(qBlue(ca), qBlue(cb), 2));
+ QVERIFY(compare(qRed(ca), qRed(cb), 3));
+ QVERIFY(compare(qGreen(ca), qGreen(cb), 3));
+ QVERIFY(compare(qBlue(ca), qBlue(cb), 3));
}
}
}
diff --git a/tests/auto/qimagereader/tst_qimagereader.cpp b/tests/auto/qimagereader/tst_qimagereader.cpp
index e256227..3841111 100644
--- a/tests/auto/qimagereader/tst_qimagereader.cpp
+++ b/tests/auto/qimagereader/tst_qimagereader.cpp
@@ -128,30 +128,22 @@ private slots:
void physicalDpi_data();
void physicalDpi();
-#if QT_VERSION > 0x040100
void sizeBeforeRead_data();
void sizeBeforeRead();
-#endif
-#if QT_VERSION > 0x040400
void imageFormatBeforeRead_data();
void imageFormatBeforeRead();
-#endif
#if defined QTEST_HAVE_GIF
void gifHandlerBugs();
#endif
-#if QT_VERSION >= 0x040200
void readCorruptImage_data();
void readCorruptImage();
-#endif
void readCorruptBmp();
-#if QT_VERSION >= 0x040200
void supportsOption_data();
void supportsOption();
-#endif
#if defined QTEST_HAVE_TIFF
void tiffCompression_data();
@@ -210,9 +202,7 @@ void tst_QImageReader::readImage_data()
QTest::newRow("BMP: 4bpp RLE") << QString("4bpp-rle.bmp") << true << QByteArray("bmp");
QTest::newRow("BMP: 4bpp uncompressed") << QString("tst7.bmp") << true << QByteArray("bmp");
QTest::newRow("BMP: 16bpp") << QString("16bpp.bmp") << true << QByteArray("bmp");
-#if QT_VERSION >= 0x040200
QTest::newRow("BMP: negative height") << QString("negativeheight.bmp") << true << QByteArray("bmp");
-#endif
QTest::newRow("XPM: marble") << QString("marble.xpm") << true << QByteArray("xpm");
QTest::newRow("PNG: kollada") << QString("kollada.png") << true << QByteArray("png");
QTest::newRow("PPM: teapot") << QString("teapot.ppm") << true << QByteArray("ppm");
@@ -604,7 +594,6 @@ void tst_QImageReader::supportsAnimation()
QCOMPARE(io.supportsAnimation(), success);
}
-#if QT_VERSION > 0x040100
void tst_QImageReader::sizeBeforeRead_data()
{
imageFormat_data();
@@ -627,9 +616,7 @@ void tst_QImageReader::sizeBeforeRead()
QVERIFY(!image.isNull());
QCOMPARE(size, image.size());
}
-#endif // QT_VERSION
-#if QT_VERSION > 0x040400
void tst_QImageReader::imageFormatBeforeRead_data()
{
imageFormat_data();
@@ -649,7 +636,6 @@ void tst_QImageReader::imageFormatBeforeRead()
QCOMPARE(image.format(), fileFormat);
}
}
-#endif
#if defined QTEST_HAVE_GIF
void tst_QImageReader::gifHandlerBugs()
@@ -662,7 +648,6 @@ void tst_QImageReader::gifHandlerBugs()
QVERIFY(count == 34);
}
-#if QT_VERSION >= 0x040102
// Task 95166
{
QImageReader io1("images/bat1.gif");
@@ -675,9 +660,7 @@ void tst_QImageReader::gifHandlerBugs()
QVERIFY(!im2.isNull());
QCOMPARE(im1, im2);
}
-#endif
-#if QT_VERSION >= 0x040104
// Task 9994
{
QImageReader io1("images/noclearcode.gif");
@@ -687,7 +670,6 @@ void tst_QImageReader::gifHandlerBugs()
QVERIFY(!im1.isNull()); QVERIFY(!im2.isNull());
QCOMPARE(im1.convertToFormat(QImage::Format_ARGB32), im2.convertToFormat(QImage::Format_ARGB32));
}
-#endif
}
#endif
@@ -872,11 +854,7 @@ void tst_QImageReader::readFromFileAfterJunk()
QVERIFY(!imageData.isNull());
int iterations = 10;
-#if QT_VERSION < 0x040200
- if (format == "ppm" || format == "pbm" || format == "pgm" || format == "xpm" || format == "jpeg")
-#else
if (format == "ppm" || format == "pbm" || format == "pgm")
-#endif
iterations = 1;
if (format == "mng" || !QImageWriter::supportedImageFormats().contains(format)) {
@@ -1175,7 +1153,6 @@ void tst_QImageReader::readFromResources()
QCOMPARE(QImageReader(fileName).read(), QImageReader(":/" + fileName).read());
}
-#if QT_VERSION >= 0x040200
void tst_QImageReader::readCorruptImage_data()
{
QTest::addColumn<QString>("fileName");
@@ -1203,6 +1180,7 @@ void tst_QImageReader::readCorruptImage_data()
QTest::newRow("corrupt tiff") << QString("images/corrupt-data.tif") << true << QString("");
#endif
}
+
void tst_QImageReader::readCorruptImage()
{
QFETCH(QString, fileName);
@@ -1214,14 +1192,12 @@ void tst_QImageReader::readCorruptImage()
QVERIFY(reader.canRead());
QCOMPARE(reader.read().isNull(), shouldFail);
}
-#endif // QT_VERSION
void tst_QImageReader::readCorruptBmp()
{
QCOMPARE(QImage("images/tst7.bmp").convertToFormat(QImage::Format_ARGB32_Premultiplied), QImage("images/tst7.png").convertToFormat(QImage::Format_ARGB32_Premultiplied));
}
-#if QT_VERSION >= 0x040200
void tst_QImageReader::supportsOption_data()
{
QTest::addColumn<QString>("fileName");
@@ -1264,7 +1240,6 @@ void tst_QImageReader::supportsOption()
foreach (QImageIOHandler::ImageOption option, allOptions)
QVERIFY(!reader.supportsOption(option));
}
-#endif
#if defined QTEST_HAVE_TIFF
void tst_QImageReader::tiffCompression_data()
diff --git a/tests/auto/qiodevice/tst_qiodevice.cpp b/tests/auto/qiodevice/tst_qiodevice.cpp
index 6a8ff73..367a2e0 100644
--- a/tests/auto/qiodevice/tst_qiodevice.cpp
+++ b/tests/auto/qiodevice/tst_qiodevice.cpp
@@ -67,9 +67,7 @@ private slots:
void constructing_QFile();
void read_QByteArray();
void unget();
-#if QT_VERSION >= 0x040100
void peek();
-#endif // QT_VERSION
void getch();
void putch();
@@ -122,7 +120,7 @@ void tst_QIODevice::constructing_QTcpSocket()
QVERIFY(!device->isOpen());
- socket.connectToHost("imap.troll.no", 143);
+ socket.connectToHost(QtNetworkSettings::serverName(), 143);
QVERIFY(socket.waitForConnected(5000));
QVERIFY(device->isOpen());
@@ -136,7 +134,7 @@ void tst_QIODevice::constructing_QTcpSocket()
QCOMPARE(socket.pos(), qlonglong(0));
socket.close();
- socket.connectToHost("imap.troll.no", 143);
+ socket.connectToHost(QtNetworkSettings::serverName(), 143);
QVERIFY(socket.waitForConnected(5000));
while (!device->canReadLine())
@@ -310,7 +308,6 @@ void tst_QIODevice::unget()
}
//--------------------------------------------------------------------
-#if QT_VERSION >= 0x040100
void tst_QIODevice::peek()
{
QBuffer buffer;
@@ -348,7 +345,6 @@ void tst_QIODevice::peek()
}
QFile::remove("peektestfile");
}
-#endif // QT_VERSION
void tst_QIODevice::getch()
{
@@ -441,7 +437,6 @@ void tst_QIODevice::readLine()
result = buffer.readLine(line.data(), linelen + 1);
QCOMPARE(result, linelen);
-#if QT_VERSION >= 0x0402000
// try with a line length limit
QVERIFY(buffer.seek(0));
line = buffer.readLine(linelen + 100);
@@ -451,7 +446,6 @@ void tst_QIODevice::readLine()
QVERIFY(buffer.seek(0));
line = buffer.readLine();
QCOMPARE(line.size(), linelen);
-#endif
}
QTEST_MAIN(tst_QIODevice)
diff --git a/tests/auto/qitemdelegate/tst_qitemdelegate.cpp b/tests/auto/qitemdelegate/tst_qitemdelegate.cpp
index befe0eb..27741e0 100644
--- a/tests/auto/qitemdelegate/tst_qitemdelegate.cpp
+++ b/tests/auto/qitemdelegate/tst_qitemdelegate.cpp
@@ -777,6 +777,7 @@ void tst_QItemDelegate::dateTimeEditor()
QCOMPARE(timeEditor->time(), time);
widget.clearFocus();
+ qApp->setActiveWindow(&widget);
widget.setFocus();
widget.editItem(item2);
diff --git a/tests/auto/qitemeditorfactory/tst_qitemeditorfactory.cpp b/tests/auto/qitemeditorfactory/tst_qitemeditorfactory.cpp
index c12c583..aa6939d 100644
--- a/tests/auto/qitemeditorfactory/tst_qitemeditorfactory.cpp
+++ b/tests/auto/qitemeditorfactory/tst_qitemeditorfactory.cpp
@@ -61,9 +61,6 @@ void tst_QItemEditorFactory::createEditor()
void tst_QItemEditorFactory::createCustomEditor()
{
-#if QT_VERSION < 0x040200
- QSKIP("Needs Qt >= 4.2", SkipAll);
-#else
QItemEditorFactory editorFactory;
QItemEditorCreatorBase *creator = new QStandardItemEditorCreator<QDoubleSpinBox>();
@@ -76,7 +73,6 @@ void tst_QItemEditorFactory::createCustomEditor()
QCOMPARE(w->metaObject()->userProperty().type(), QVariant::Double);
delete creator;
-#endif
}
QTEST_MAIN(tst_QItemEditorFactory)
diff --git a/tests/auto/qitemmodel/modelstotest.cpp b/tests/auto/qitemmodel/modelstotest.cpp
index 61fc480..2cd6048 100644
--- a/tests/auto/qitemmodel/modelstotest.cpp
+++ b/tests/auto/qitemmodel/modelstotest.cpp
@@ -117,13 +117,8 @@ ModelsToTest::ModelsToTest()
tests.append(test("QTableModel", ReadWrite, HasData));
tests.append(test("QTableModelEmpty", ReadWrite, Empty));
-#if QT_VERSION >= 0x040200
-#define TABLEFEATURE ReadWrite
-#else
-#define TABLEFEATURE ReadOnly
-#endif
- tests.append(test("QTreeModel", TABLEFEATURE, HasData));
- tests.append(test("QTreeModelEmpty", TABLEFEATURE, Empty));
+ tests.append(test("QTreeModel", ReadWrite, HasData));
+ tests.append(test("QTreeModelEmpty", ReadWrite, Empty));
tests.append(test("QSqlQueryModel", ReadOnly, HasData));
tests.append(test("QSqlQueryModelEmpty", ReadOnly, Empty));
diff --git a/tests/auto/qitemmodel/tst_qitemmodel.cpp b/tests/auto/qitemmodel/tst_qitemmodel.cpp
index ea1972e..d29a3e3 100644
--- a/tests/auto/qitemmodel/tst_qitemmodel.cpp
+++ b/tests/auto/qitemmodel/tst_qitemmodel.cpp
@@ -54,7 +54,7 @@
#include <QtTest/QtTest>
#include <QtCore>
#include <qdebug.h>
-#include <modelstotest.cpp>
+#include "modelstotest.cpp"
#include <QMetaType>
Q_DECLARE_METATYPE(QModelIndex)
diff --git a/tests/auto/qitemselectionmodel/tst_qitemselectionmodel.cpp b/tests/auto/qitemselectionmodel/tst_qitemselectionmodel.cpp
index 15b36b8..9bd1ce3 100644
--- a/tests/auto/qitemselectionmodel/tst_qitemselectionmodel.cpp
+++ b/tests/auto/qitemselectionmodel/tst_qitemselectionmodel.cpp
@@ -89,6 +89,7 @@ private slots:
void merge_data();
void merge();
void task119433_isRowSelected();
+ void task252069_rowIntersectsSelection();
private:
QAbstractItemModel *model;
@@ -2140,6 +2141,51 @@ void tst_QItemSelectionModel::task119433_isRowSelected()
QVERIFY(sel.isRowSelected(0, QModelIndex()));
}
+void tst_QItemSelectionModel::task252069_rowIntersectsSelection()
+{
+ QStandardItemModel m;
+ for (int i=0; i<8; ++i) {
+ for (int j=0; j<8; ++j) {
+ QStandardItem *item = new QStandardItem(QString("Item number %1").arg(i));
+ if ((i % 2 == 0 && j == 0) ||
+ (j % 2 == 0 && i == 0) ||
+ j == 5 || i == 5 ) {
+ item->setEnabled(false);
+ //item->setSelectable(false);
+ }
+ m.setItem(i, j, item);
+ }
+ }
+
+ QItemSelectionModel selected(&m);
+ //nothing is selected
+ QVERIFY(!selected.rowIntersectsSelection(0, QModelIndex()));
+ QVERIFY(!selected.rowIntersectsSelection(2, QModelIndex()));
+ QVERIFY(!selected.rowIntersectsSelection(3, QModelIndex()));
+ QVERIFY(!selected.rowIntersectsSelection(5, QModelIndex()));
+ QVERIFY(!selected.columnIntersectsSelection(0, QModelIndex()));
+ QVERIFY(!selected.columnIntersectsSelection(2, QModelIndex()));
+ QVERIFY(!selected.columnIntersectsSelection(3, QModelIndex()));
+ QVERIFY(!selected.columnIntersectsSelection(5, QModelIndex()));
+ selected.select(m.index(2, 0), QItemSelectionModel::Select | QItemSelectionModel::Rows);
+ QVERIFY(!selected.rowIntersectsSelection(0, QModelIndex()));
+ QVERIFY( selected.rowIntersectsSelection(2, QModelIndex()));
+ QVERIFY(!selected.rowIntersectsSelection(3, QModelIndex()));
+ QVERIFY(!selected.rowIntersectsSelection(5, QModelIndex()));
+ QVERIFY(!selected.columnIntersectsSelection(0, QModelIndex()));
+ QVERIFY( selected.columnIntersectsSelection(2, QModelIndex()));
+ QVERIFY( selected.columnIntersectsSelection(3, QModelIndex()));
+ QVERIFY(!selected.columnIntersectsSelection(5, QModelIndex()));
+ selected.select(m.index(0, 5), QItemSelectionModel::Select | QItemSelectionModel::Columns);
+ QVERIFY(!selected.rowIntersectsSelection(0, QModelIndex()));
+ QVERIFY( selected.rowIntersectsSelection(2, QModelIndex()));
+ QVERIFY(!selected.rowIntersectsSelection(3, QModelIndex()));
+ QVERIFY(!selected.rowIntersectsSelection(5, QModelIndex()));
+ QVERIFY(!selected.columnIntersectsSelection(0, QModelIndex()));
+ QVERIFY( selected.columnIntersectsSelection(2, QModelIndex()));
+ QVERIFY( selected.columnIntersectsSelection(3, QModelIndex()));
+ QVERIFY(!selected.columnIntersectsSelection(5, QModelIndex()));
+}
QTEST_MAIN(tst_QItemSelectionModel)
#include "tst_qitemselectionmodel.moc"
diff --git a/tests/auto/qitemview/tst_qitemview.cpp b/tests/auto/qitemview/tst_qitemview.cpp
index b248aa8..3317c1d 100644
--- a/tests/auto/qitemview/tst_qitemview.cpp
+++ b/tests/auto/qitemview/tst_qitemview.cpp
@@ -42,7 +42,7 @@
#include <QtTest/QtTest>
#include <QtCore/QtCore>
-#include <viewstotest.cpp>
+#include "viewstotest.cpp"
#include <stdlib.h>
#if defined(Q_OS_WIN)
@@ -230,19 +230,15 @@ void tst_QItemView::setupWithNoTestData()
ViewsToTest testViews;
QTest::addColumn<QString>("viewType");
QTest::addColumn<bool>("displays");
-#if QT_VERSION >= 0x040200
QTest::addColumn<int>("vscroll");
QTest::addColumn<int>("hscroll");
-#endif
for (int i = 0; i < testViews.tests.size(); ++i) {
QString view = testViews.tests.at(i).viewType;
QString test = view + " ScrollPerPixel";
bool displayIndexes = (testViews.tests.at(i).display == ViewsToTest::DisplayRoot);
QTest::newRow(test.toLatin1().data()) << view << displayIndexes
-#if QT_VERSION >= 0x040200
<< (int)QAbstractItemView::ScrollPerPixel
<< (int)QAbstractItemView::ScrollPerPixel
-#endif
;
}
for (int i = 0; i < testViews.tests.size(); ++i) {
@@ -250,10 +246,8 @@ void tst_QItemView::setupWithNoTestData()
QString test = view + " ScrollPerItem";
bool displayIndexes = (testViews.tests.at(i).display == ViewsToTest::DisplayRoot);
QTest::newRow(test.toLatin1().data()) << view << displayIndexes
-#if QT_VERSION >= 0x040200
<< (int)QAbstractItemView::ScrollPerItem
<< (int)QAbstractItemView::ScrollPerItem
-#endif
;
}
}
@@ -296,19 +290,17 @@ void tst_QItemView::nonDestructiveBasicTest()
#ifdef Q_OS_IRIX
QSKIP("This test takes too long to execute on IRIX", SkipAll);
#endif
-
+
#ifdef Q_OS_WINCE
QTest::qWait(400);
#endif
QFETCH(QString, viewType);
view = testViews->createView(viewType);
-#if QT_VERSION >= 0x040200
QFETCH(int, vscroll);
QFETCH(int, hscroll);
view->setVerticalScrollMode((QAbstractItemView::ScrollMode)vscroll);
view->setHorizontalScrollMode((QAbstractItemView::ScrollMode)hscroll);
-#endif
// setSelectionModel() will assert
//view->setSelectionModel(0);
@@ -461,12 +453,10 @@ void tst_QItemView::spider()
#endif
QFETCH(QString, viewType);
view = testViews->createView(viewType);
-#if QT_VERSION >= 0x040200
QFETCH(int, vscroll);
QFETCH(int, hscroll);
view->setVerticalScrollMode((QAbstractItemView::ScrollMode)vscroll);
view->setHorizontalScrollMode((QAbstractItemView::ScrollMode)hscroll);
-#endif
view->setModel(treeModel);
view->show();
#if defined(Q_OS_WINCE)
@@ -498,12 +488,10 @@ void tst_QItemView::resize()
// doesn't really catch theproblem.
QFETCH(QString, viewType);
view = testViews->createView(viewType);
-#if QT_VERSION >= 0x040200
QFETCH(int, vscroll);
QFETCH(int, hscroll);
view->setVerticalScrollMode((QAbstractItemView::ScrollMode)vscroll);
view->setHorizontalScrollMode((QAbstractItemView::ScrollMode)hscroll);
-#endif
view->setModel(treeModel);
view->show();
@@ -528,12 +516,10 @@ void tst_QItemView::visualRect()
#endif
QFETCH(QString, viewType);
view = testViews->createView(viewType);
-#if QT_VERSION >= 0x040200
QFETCH(int, vscroll);
QFETCH(int, hscroll);
view->setVerticalScrollMode((QAbstractItemView::ScrollMode)vscroll);
view->setHorizontalScrollMode((QAbstractItemView::ScrollMode)hscroll);
-#endif
QCOMPARE(view->visualRect(QModelIndex()), QRect());
// Add model
@@ -664,12 +650,10 @@ void tst_QItemView::indexAt()
#endif
QFETCH(QString, viewType);
view = testViews->createView(viewType);
-#if QT_VERSION >= 0x040200
QFETCH(int, vscroll);
QFETCH(int, hscroll);
view->setVerticalScrollMode((QAbstractItemView::ScrollMode)vscroll);
view->setHorizontalScrollMode((QAbstractItemView::ScrollMode)hscroll);
-#endif
view->show();
view->setModel(treeModel);
#if 0
@@ -700,12 +684,10 @@ void tst_QItemView::scrollTo()
#endif
QFETCH(QString, viewType);
view = testViews->createView(viewType);
-#if QT_VERSION >= 0x040200
QFETCH(int, vscroll);
QFETCH(int, hscroll);
view->setVerticalScrollMode((QAbstractItemView::ScrollMode)vscroll);
view->setHorizontalScrollMode((QAbstractItemView::ScrollMode)hscroll);
-#endif
view->setModel(treeModel);
view->show();
diff --git a/tests/auto/qkeysequence/tst_qkeysequence.cpp b/tests/auto/qkeysequence/tst_qkeysequence.cpp
index 33de82a..8fcee36 100644
--- a/tests/auto/qkeysequence/tst_qkeysequence.cpp
+++ b/tests/auto/qkeysequence/tst_qkeysequence.cpp
@@ -181,9 +181,7 @@ void tst_QKeySequence::operatorQString_data()
#ifndef Q_WS_MAC
QTest::newRow( "Ctrl+Left" ) << int(Qt::CTRL) << int(Qt::Key_Left) << QString( "Ctrl+Left" );
-#if QT_VERSION > 0x040100
QTest::newRow( "Ctrl+," ) << int(Qt::CTRL) << int(Qt::Key_Comma) << QString( "Ctrl+," );
-#endif
QTest::newRow( "Alt+Left" ) << int(Qt::ALT) << int(Qt::Key_Left) << QString( "Alt+Left" );
QTest::newRow( "Alt+Shift+Left" ) << int(Qt::ALT | Qt::SHIFT) << int(Qt::Key_Left) << QString( "Alt+Shift+Left" );
QTest::newRow( "Ctrl" ) << int(Qt::CTRL) << int(Qt::Key_Aring | Qt::UNICODE_ACCEL) << QString( "Ctrl+\x0c5" );
@@ -192,9 +190,7 @@ void tst_QKeySequence::operatorQString_data()
QTest::newRow( "Meta" ) << int(Qt::META) << int(Qt::Key_Aring | Qt::UNICODE_ACCEL) << QString( "Meta+\x0c5" );
#else
QTest::newRow( "Ctrl+Left" ) << int(Qt::CTRL) << int(Qt::Key_Left) << MacCtrl + macSymbolForQtKey(Qt::Key_Left);
-#if QT_VERSION > 0x040100
QTest::newRow( "Ctrl+," ) << int(Qt::CTRL) << int(Qt::Key_Comma) << MacCtrl + ",";
-#endif
QTest::newRow( "Alt+Left" ) << int(Qt::ALT) << int(Qt::Key_Left) << MacAlt + macSymbolForQtKey(Qt::Key_Left);
QTest::newRow( "Alt+Shift+Left" ) << int(Qt::ALT | Qt::SHIFT) << int(Qt::Key_Left) << MacAlt + MacShift + macSymbolForQtKey(Qt::Key_Left);
QTest::newRow( "Ctrl" ) << int(Qt::CTRL) << int(Qt::Key_Aring | Qt::UNICODE_ACCEL) << MacCtrl + "\x0c5";
@@ -385,10 +381,8 @@ void tst_QKeySequence::toString_data()
QTest::newRow("Shift") << QString("Shift+\x0c5") << QString("Shift+\x0c5") << QString("Shift+\x0c5");
QTest::newRow("Meta") << QString("Meta+\x0c5") << QString("Meta+\x0c5") << QString("Meta+\x0c5");
QTest::newRow("Ctrl+Plus") << QString("Ctrl++") << QString("Ctrl++") << QString("Ctrl++");
-#if QT_VERSION > 0x040100
QTest::newRow("Ctrl+,") << QString("Ctrl+,") << QString("Ctrl+,") << QString("Ctrl+,");
QTest::newRow("Ctrl+,,Ctrl+,") << QString("Ctrl+,,Ctrl+,") << QString("Ctrl+,, Ctrl+,") << QString("Ctrl+,, Ctrl+,");
-#endif
QTest::newRow("MultiKey") << QString("Alt+X, Ctrl+Y, Z") << QString("Alt+X, Ctrl+Y, Z")
<< QString("Alt+X, Ctrl+Y, Z");
@@ -406,10 +400,8 @@ void tst_QKeySequence::toString_data()
QTest::newRow("Shift") << MacShift + "\x0c5" << QString("Shift+\x0c5") << MacShift + "\x0c5";
QTest::newRow("Meta") << MacMeta + "\x0c5" << QString("Meta+\x0c5") << MacMeta + "\x0c5";
QTest::newRow("Ctrl+Plus") << MacCtrl + "+" << QString("Ctrl++") << MacCtrl + "+";
-#if QT_VERSION > 0x040100
QTest::newRow("Ctrl+,") << MacCtrl + "," << QString("Ctrl+,") << MacCtrl + ",";
QTest::newRow("Ctrl+,,Ctrl+,") << MacCtrl + ",, " + MacCtrl + "," << QString("Ctrl+,, Ctrl+,") << MacCtrl + ",, " + MacCtrl + ",";
-#endif
QTest::newRow("MultiKey") << MacAlt + "X, " + MacCtrl + "Y, Z" << QString("Alt+X, Ctrl+Y, Z")
<< MacAlt + "X, " + MacCtrl + "Y, Z";
QTest::newRow("Invalid") << QString("Ctrly") << QString("") << QString("");
diff --git a/tests/auto/qlabel/tst_qlabel.cpp b/tests/auto/qlabel/tst_qlabel.cpp
index 1783a3d..4580236 100644
--- a/tests/auto/qlabel/tst_qlabel.cpp
+++ b/tests/auto/qlabel/tst_qlabel.cpp
@@ -263,10 +263,8 @@ void tst_QLabel::setTextFormat()
testWidget->setTextFormat( Qt::RichText );
QVERIFY( testWidget->textFormat() == Qt::RichText );
-#if QT_VERSION >= 0x030100
testWidget->setTextFormat( Qt::LogText );
QVERIFY( testWidget->textFormat() == Qt::LogText );
-#endif
testWidget->setTextFormat( Qt::AutoText );
QVERIFY( testWidget->textFormat() == Qt::AutoText );
diff --git a/tests/auto/qlibrary/tst_qlibrary.cpp b/tests/auto/qlibrary/tst_qlibrary.cpp
index dea0c54e..3e7e3f3 100644
--- a/tests/auto/qlibrary/tst_qlibrary.cpp
+++ b/tests/auto/qlibrary/tst_qlibrary.cpp
@@ -187,7 +187,7 @@ void tst_QLibrary::version()
QFETCH( int, loadversion );
QFETCH( int, resultversion );
-#if QT_VERSION >= 0x040200 && !defined(Q_OS_AIX) && !defined(Q_OS_WIN)
+#if !defined(Q_OS_AIX) && !defined(Q_OS_WIN)
QString currDir = QDir::currentPath();
QLibrary library( currDir + QLatin1Char('/') + lib, loadversion );
bool ok = library.load();
@@ -218,7 +218,6 @@ void tst_QLibrary::load_data()
QTest::newRow("ok (libmylib ver. 1)") << currDir + "/libmylib" <<(bool)true;
#endif
-#if QT_VERSION >= 0x040103
# if defined(Q_OS_WIN32) || defined(Q_OS_WINCE)
QTest::newRow( "ok01 (with suffix)" ) << currDir + "/mylib.dll" << (bool)true;
QTest::newRow( "ok02 (with non-standard suffix)" ) << currDir + "/mylib.dl2" << (bool)true;
@@ -228,7 +227,6 @@ void tst_QLibrary::load_data()
QTest::newRow( "ok02 (with non-standard suffix)" ) << currDir + "/libmylib.so2" << (bool)true;
QTest::newRow( "ok03 (with non-standard suffix)" ) << currDir + "/system.trolltech.test.mylib.so" << (bool)true;
# endif // Q_OS_UNIX
-#endif // QT_VERSION
}
void tst_QLibrary::load()
@@ -438,7 +436,7 @@ void tst_QLibrary::loadHints_data()
QTest::addColumn<bool>("result");
QLibrary::LoadHints lh;
-#if QT_VERSION >= 0x040300 && defined(Q_OS_AIX)
+#if defined(Q_OS_AIX)
if (QFile::exists("/usr/lib/libGL.a") || QFile::exists("/usr/X11R6/lib/libGL.a")) {
# if QT_POINTER_SIZE == 4
QTest::newRow( "ok03 (Archive member)" ) << "libGL.a(shr.o)" << int(QLibrary::LoadArchiveMemberHint) << (bool)TRUE;
@@ -446,9 +444,8 @@ void tst_QLibrary::loadHints_data()
QTest::newRow( "ok03 (Archive member)" ) << "libGL.a(shr_64.o)" << int(QLibrary::LoadArchiveMemberHint) << (bool)TRUE;
#endif
}
-#endif // QT_VERSION
+#endif
-#if QT_VERSION >= 0x040103
QString currDir = QDir::currentPath();
lh |= QLibrary::ResolveAllSymbolsHint;
# if defined(Q_OS_WIN32) || defined(Q_OS_WINCE)
@@ -460,8 +457,6 @@ void tst_QLibrary::loadHints_data()
QTest::newRow( "ok02 (with non-standard suffix)" ) << currDir + "/libmylib.so2" << int(lh) << (bool)TRUE;
QTest::newRow( "ok03 (with many dots)" ) << currDir + "/system.trolltech.test.mylib.so" << int(lh) << (bool)TRUE;
# endif // Q_OS_UNIX
-#endif // QT_VERSION
-
}
void tst_QLibrary::loadHints()
diff --git a/tests/auto/qline/tst_qline.cpp b/tests/auto/qline/tst_qline.cpp
index 932ec8e..ab0bd9b 100644
--- a/tests/auto/qline/tst_qline.cpp
+++ b/tests/auto/qline/tst_qline.cpp
@@ -201,8 +201,8 @@ void tst_QLine::testIntersection_data()
b = b.translated(1, 1);
QTest::newRow(qPrintable(QString::fromLatin1("rotation-%0").arg(i)))
- << a.x1() << a.y1() << a.x2() << a.y2()
- << b.x1() << b.y1() << b.x2() << b.y2()
+ << (double)a.x1() << (double)a.y1() << (double)a.x2() << (double)a.y2()
+ << (double)b.x1() << (double)b.y1() << (double)b.x2() << (double)b.y2()
<< int(QLineF::BoundedIntersection)
<< 1.0
<< 1.0;
@@ -232,8 +232,8 @@ void tst_QLine::testIntersection()
QCOMPARE(int(itype), type);
if (type != QLineF::NoIntersection) {
- QCOMPARE(ip.x(), qreal(ix));
- QCOMPARE(ip.y(), qreal(iy));
+ QVERIFY(qAbs(ip.x() - ix) < epsilon);
+ QVERIFY(qAbs(ip.y() - iy) < epsilon);
}
}
diff --git a/tests/auto/qlineedit/tst_qlineedit.cpp b/tests/auto/qlineedit/tst_qlineedit.cpp
index 87e966f..34a64c8 100644
--- a/tests/auto/qlineedit/tst_qlineedit.cpp
+++ b/tests/auto/qlineedit/tst_qlineedit.cpp
@@ -1465,14 +1465,10 @@ void tst_QLineEdit::textMask_data()
void tst_QLineEdit::textMask()
{
-#if (QT_VERSION-0 >= 0x030303)
QFETCH( QString, insertString );
testWidget->setInputMask( "#" );
testWidget->setText( insertString );
QCOMPARE( testWidget->text(), insertString );
-#else
- QSKIP( "This test function tests a problem with masks that was fixed in 3.3", SkipAll);
-#endif
}
void tst_QLineEdit::setText()
diff --git a/tests/auto/qlistview/tst_qlistview.cpp b/tests/auto/qlistview/tst_qlistview.cpp
index 2e7f412..c372475 100644
--- a/tests/auto/qlistview/tst_qlistview.cpp
+++ b/tests/auto/qlistview/tst_qlistview.cpp
@@ -105,6 +105,7 @@ private slots:
void task203585_selectAll();
void task228566_infiniteRelayout();
void task248430_crashWith0SizedItem();
+ void task250446_scrollChanged();
};
// Testing get/set functions
@@ -1528,5 +1529,32 @@ void tst_QListView::task248430_crashWith0SizedItem()
QTest::qWait(100);
}
+void tst_QListView::task250446_scrollChanged()
+{
+ QStandardItemModel model(200, 1);
+ QListView view;
+ view.setModel(&model);
+ QModelIndex index = model.index(0, 0);
+ QVERIFY(index.isValid());
+ view.setCurrentIndex(index);
+ view.show();
+ QTest::qWait(100);
+ const int scrollValue = view.verticalScrollBar()->maximum();
+ view.verticalScrollBar()->setValue(scrollValue);
+ QCOMPARE(view.verticalScrollBar()->value(), scrollValue);
+ QCOMPARE(view.currentIndex(), index);
+
+ view.showMinimized();
+ QTest::qWait(100);
+ QCOMPARE(view.verticalScrollBar()->value(), scrollValue);
+ QCOMPARE(view.currentIndex(), index);
+
+ view.showNormal();
+ QTest::qWait(100);
+ QCOMPARE(view.verticalScrollBar()->value(), scrollValue);
+ QCOMPARE(view.currentIndex(), index);
+}
+
+
QTEST_MAIN(tst_QListView)
#include "tst_qlistview.moc"
diff --git a/tests/auto/qlocalsocket/test/test.pro b/tests/auto/qlocalsocket/test/test.pro
index 8ce7c50..7befdf9 100644
--- a/tests/auto/qlocalsocket/test/test.pro
+++ b/tests/auto/qlocalsocket/test/test.pro
@@ -1,7 +1,5 @@
load(qttest_p4)
-include(../src/src.pri)
-
DEFINES += QLOCALSERVER_DEBUG
DEFINES += QLOCALSOCKET_DEBUG
!wince*: {
@@ -14,14 +12,16 @@ DEFINES += QLOCALSOCKET_DEBUG
QT = core network
SOURCES += ../tst_qlocalsocket.cpp
-TARGET = ../tst_qlocalsocket
-win32 {
+TARGET = tst_qlocalsocket
+CONFIG(debug_and_release) {
CONFIG(debug, debug|release) {
- TARGET = ../../debug/tst_qlocalsocket
-} else {
- TARGET = ../../release/tst_qlocalsocket
+ DESTDIR = ../debug
+ } else {
+ DESTDIR = ../release
}
+} else {
+ DESTDIR = ..
}
wince* {
diff --git a/tests/auto/qlocalsocket/tst_qlocalsocket.cpp b/tests/auto/qlocalsocket/tst_qlocalsocket.cpp
index f741b96..deabda6 100644
--- a/tests/auto/qlocalsocket/tst_qlocalsocket.cpp
+++ b/tests/auto/qlocalsocket/tst_qlocalsocket.cpp
@@ -95,6 +95,7 @@ private slots:
void longPath();
void waitForDisconnect();
+ void waitForDisconnectByServer();
void removeServer();
@@ -112,6 +113,8 @@ tst_QLocalSocket::tst_QLocalSocket()
#endif
))
qWarning() << "lackey executable doesn't exists!";
+
+ QLocalServer::removeServer("tst_localsocket");
}
tst_QLocalSocket::~tst_QLocalSocket()
@@ -783,6 +786,25 @@ void tst_QLocalSocket::waitForDisconnect()
QVERIFY(timer.elapsed() < 2000);
}
+void tst_QLocalSocket::waitForDisconnectByServer()
+{
+ QString name = "tst_localsocket";
+ LocalServer server;
+ QVERIFY(server.listen(name));
+ LocalSocket socket;
+ QSignalSpy spy(&socket, SIGNAL(disconnected()));
+ QVERIFY(spy.isValid());
+ socket.connectToServer(name);
+ QVERIFY(socket.waitForConnected(3000));
+ QVERIFY(server.waitForNewConnection(3000));
+ QLocalSocket *serverSocket = server.nextPendingConnection();
+ QVERIFY(serverSocket);
+ serverSocket->close();
+ QVERIFY(serverSocket->state() == QLocalSocket::UnconnectedState);
+ QVERIFY(socket.waitForDisconnected(3000));
+ QCOMPARE(spy.count(), 1);
+}
+
void tst_QLocalSocket::removeServer()
{
// this is a hostile takeover, but recovering from a crash results in the same
diff --git a/tests/auto/qmainwindow/tst_qmainwindow.cpp b/tests/auto/qmainwindow/tst_qmainwindow.cpp
index 4529bd5..b16a62a 100644
--- a/tests/auto/qmainwindow/tst_qmainwindow.cpp
+++ b/tests/auto/qmainwindow/tst_qmainwindow.cpp
@@ -1039,11 +1039,6 @@ void tst_QMainWindow::toolBarArea()
QMainWindow mw;
QToolBar tb(&mw);
-#if QT_VERSION <= 0x040103
- // this would assert in previous versions
- QCOMPARE(mw.toolBarArea(&tb), Qt::ToolBarArea(0));
-#endif
-
for (int j = 0; j < areaCount; ++j) {
Qt::ToolBarArea otherArea = areas[j];
@@ -1205,11 +1200,6 @@ void tst_QMainWindow::dockWidgetArea()
QMainWindow mw;
QDockWidget dw(&mw);
-#if QT_VERSION <= 0x040103
- // this would assert in previous versions
- QCOMPARE(mw.dockWidgetArea(&dw), Qt::DockWidgetArea(0));
-#endif
-
for (int j = 0; j < areaCount; ++j) {
Qt::DockWidgetArea otherArea = areas[i];
diff --git a/tests/auto/qmake/qmake.pro b/tests/auto/qmake/qmake.pro
index 59cc2be..8cae6be 100644
--- a/tests/auto/qmake/qmake.pro
+++ b/tests/auto/qmake/qmake.pro
@@ -2,8 +2,6 @@ load(qttest_p4)
HEADERS += testcompiler.h
SOURCES += tst_qmake.cpp testcompiler.cpp
-contains(QT_CONFIG, qt3support): QT += qt3support
-
cross_compile: DEFINES += QMAKE_CROSS_COMPILED
diff --git a/tests/auto/qmake/testcompiler.cpp b/tests/auto/qmake/testcompiler.cpp
index bfc8905..7255d93 100644
--- a/tests/auto/qmake/testcompiler.cpp
+++ b/tests/auto/qmake/testcompiler.cpp
@@ -39,49 +39,35 @@
**
****************************************************************************/
-
#include "testcompiler.h"
-#include <stdlib.h>
-#include <qapplication.h>
-
-#ifdef QT3_SUPPORT
-
-#include <q3process.h>
-#include <qtimer.h>
-#ifdef Q_OS_WIN32
-# include <windows.h>
-#endif
-#include <QtTest/QtTest>
+#include <QProcess>
+#include <QDir>
-#undef SHOW_QDEBUG
-#undef SHOW_COMPLETENESS
-
-QString targetName( BuildType buildMode, const QString& target, const QString& version )
+static QString targetName( BuildType buildMode, const QString& target, const QString& version )
{
+ Q_UNUSED(version);
QString targetName = target;
#if defined (Q_OS_WIN32)
switch (buildMode)
{
case Exe: // app
- targetName.append(".exe");
- break;
+ targetName.append(".exe");
+ break;
case Dll: // dll
- if (version != "") {
- QStringList ver = QStringList::split(".", version);
- targetName.append(ver.first());
- }
+ if (!version.empty())
+ targetName.append(version.section(".", 0, 0));
targetName.append(".dll");
- break;
+ break;
case Lib: // lib
#ifdef Q_CC_GNU
targetName.prepend("lib");
targetName.append(".a");
#else
- targetName.append(".lib");
+ targetName.append(".lib");
#endif
- break;
+ break;
case Plain:
// no conversion
break;
@@ -90,16 +76,16 @@ QString targetName( BuildType buildMode, const QString& target, const QString& v
switch (buildMode)
{
case Exe: // app
- targetName += ".app/Contents/MacOS/" + target.section('/', -1);
- break;
+ targetName += ".app/Contents/MacOS/" + target.section('/', -1);
+ break;
case Dll: // dll
- targetName.prepend("lib");
+ targetName.prepend("lib");
targetName.append("." + version + ".dylib");
- break;
+ break;
case Lib: // lib
- targetName.prepend("lib");
- targetName.append(".a");
- break;
+ targetName.prepend("lib");
+ targetName.append(".a");
+ break;
case Plain:
// no conversion
break;
@@ -108,9 +94,9 @@ QString targetName( BuildType buildMode, const QString& target, const QString& v
switch (buildMode)
{
case Exe: // app
- break;
+ break;
case Dll: // dll
- targetName.prepend("lib");
+ targetName.prepend("lib");
#if defined (Q_OS_HPUX) && !defined (__ia64)
targetName.append(".sl");
#elif defined (Q_OS_AIX)
@@ -118,11 +104,11 @@ QString targetName( BuildType buildMode, const QString& target, const QString& v
#else
targetName.append(".so");
#endif
- break;
+ break;
case Lib: // lib
- targetName.prepend("lib");
- targetName.append(".a");
- break;
+ targetName.prepend("lib");
+ targetName.append(".a");
+ break;
case Plain:
// no conversion
break;
@@ -131,223 +117,119 @@ QString targetName( BuildType buildMode, const QString& target, const QString& v
return targetName;
}
-
-
TestCompiler::TestCompiler()
{
- exit_ok = FALSE;
- childProc = 0;
- setBaseCommands( "", "", FALSE );
+ setBaseCommands( "", "" );
}
TestCompiler::~TestCompiler()
{
- if (childProc)
- delete childProc;
}
-bool TestCompiler::runChild( bool showOutput, QStringList argList, QStringList *envList )
+bool TestCompiler::runCommand( QString cmdline )
{
- //qDebug() << "executing" << argList;
- exit_ok = FALSE;
- if (childProc)
- delete childProc;
+ testOutput_.append("Running command: " + cmdline);
- child_show = showOutput;
- if ( showOutput ) {
+ QProcess child;
+ if (!environment_.empty())
+ child.setEnvironment(QProcess::systemEnvironment() + environment_);
- QString S = argList.join(" ");
- addMakeResult( S );
+ child.start(cmdline);
+ if (!child.waitForStarted(-1)) {
+ testOutput_.append( "Unable to start child process." );
+ return false;
}
- childProc = new Q3Process(argList, this, argList.join(" ").latin1());
- Q_ASSERT(childProc);
-
- connect(childProc,SIGNAL(readyReadStdout()),this,SLOT(childHasData()));
- connect(childProc,SIGNAL(processExited()),this,SLOT(childReady()));
-
- if (!childProc->start( envList )) {
-
- addMakeResult( "Error executing '" + argList[0] + "'." );
- childReady();
- return FALSE;
+ bool failed = false;
+ child.setReadChannel(QProcess::StandardError);
+ while (QProcess::Running == child.state()) {
+ if (child.waitForReadyRead(1000)) {
+ QString output = child.readAllStandardError();
+ testOutput_.append(output);
+
+ output.prepend('\n');
+ if (output.contains("\nProject MESSAGE: FAILED"))
+ failed = true;
+ }
}
- while (childProc != 0 && childProc->isRunning()) {
- qApp->processEvents();
- }
-
- childReady();
-
- return exit_ok;
-}
+ child.waitForFinished(-1);
-void TestCompiler::childReady()
-{
- if (childProc != 0) {
- childHasData();
-
- QString S;
- int pos;
- while (childProc->canReadLineStderr()) {
- S = childProc->readLineStderr();
- do {
- pos = S.find("\t");
- if (pos >= 0) {
- S.remove(pos,1);
- S.insert(pos," ");
- }
- } while (pos >= 0);
-
- if (child_show)
- addMakeResult( S );
- }
-
- exit_ok = childProc->normalExit() && childProc->exitStatus() == 0;
- delete childProc;
- }
- childProc = 0;
+ return failed
+ ? false
+ : (child.exitStatus() == QProcess::NormalExit)
+ && (child.exitCode() == 0);
}
-void TestCompiler::childHasData()
+void TestCompiler::setBaseCommands( QString makeCmd, QString qmakeCmd )
{
- QString S;
- int pos;
- while (childProc->canReadLineStderr()) {
-
- S = childProc->readLineStderr();
- do {
- pos = S.find("\t");
- if (pos >= 0) {
- S.remove(pos,1);
- S.insert(pos," ");
- }
-
- } while (pos >= 0);
-
- if ( S.startsWith("Project MESSAGE: FAILED") )
- QTest::qFail( S, __FILE__, __LINE__ );
- else if ( S.startsWith("Project MESSAGE: SKIPPED") )
- QTest::qSkip( S, QTest::SkipSingle, __FILE__, __LINE__ );
- else if (child_show)
- addMakeResult( S );
- }
+ makeCmd_ = makeCmd;
+ qmakeCmd_ = qmakeCmd;
}
-void TestCompiler::setBaseCommands( QString makeCmd, QString qmakeCmd, bool qwsMode )
+void TestCompiler::resetEnvironment()
{
- qws_mode = qwsMode;
- make_cmd = makeCmd;
-
- // not sure if i need this, but it doesn't hurt
- if (make_cmd.startsWith("\""))
- make_cmd = make_cmd.remove(0,1);
- if (make_cmd.endsWith("\""))
- make_cmd = make_cmd.remove(make_cmd.length()-1,1);
-
- qmake_cmd = qmakeCmd;
- // also not sure if i need this, but it doesn't hurt...
- if(qmake_cmd.length() >= 2 && (qmake_cmd.at(0) == '"' || qmake_cmd.at(0) == '\'') && qmake_cmd.at(qmake_cmd.length()-1) == qmake_cmd.at(0))
- qmake_cmd = qmake_cmd.mid(1, qmake_cmd.length()-2);
+ environment_.clear();
}
-bool TestCompiler::cleanAll( const QString &workPath, const QString &destPath, const QString &exeName, const QString &exeExt )
+void TestCompiler::addToEnvironment( QString varAssignment )
{
- QDir D(workPath);
- if (!D.exists()) {
-
- addMakeResult( "Directory '" + workPath + "' doesn't exist" );
- return FALSE;
- }
-
- D.setCurrent(workPath);
- // must delete at least the executable file to be able to easily and safely
- // verify that the compilation was a success.
- D.remove( destPath + "/" + exeName + exeExt );
- D.remove( workPath + "/Makefile");
- QFileInfo Fi( workPath + "/Makefile");
- if (Fi.exists()) {
-
- // Run make clean
- QStringList args;
- args = QStringList::split( " ", make_cmd );
- args.append("clean");
-
- return runChild( FALSE, args, 0 );
- }
-
- return TRUE;
+ environment_.push_back(varAssignment);
}
bool TestCompiler::makeClean( const QString &workPath )
{
QDir D;
if (!D.exists(workPath)) {
-
- addMakeResult( "Directory '" + workPath + "' doesn't exist" );
- return FALSE;
+ testOutput_.append( "Directory '" + workPath + "' doesn't exist" );
+ return false;
}
D.setCurrent(workPath);
QFileInfo Fi( workPath + "/Makefile");
- if (Fi.exists()) {
-
- // Run make clean
- QStringList args;
- args = QStringList::split( " ", make_cmd );
- args.append("clean");
+ if (Fi.exists())
+ // Run make clean
+ return runCommand( makeCmd_ + " clean" );
- return runChild( FALSE, args, 0 );
- }
-
- return TRUE;
+ return true;
}
bool TestCompiler::makeDistClean( const QString &workPath )
{
QDir D;
if (!D.exists(workPath)) {
- addMakeResult( "Directory '" + workPath + "' doesn't exist" );
- return FALSE;
+ testOutput_.append( "Directory '" + workPath + "' doesn't exist" );
+ return false;
}
D.setCurrent(workPath);
QFileInfo Fi( workPath + "/Makefile");
- if (Fi.exists()) {
- // Run make distclean
- QStringList args;
- args = QStringList::split( " ", make_cmd );
- args.append("distclean");
-
- return runChild( FALSE, args, 0 );
- }
+ if (Fi.exists())
+ // Run make distclean
+ return runCommand( makeCmd_ + " distclean" );
- return TRUE;
+ return true;
}
bool TestCompiler::qmake( const QString &workDir, const QString &proName, const QString &buildDir )
{
- // Now start qmake and generate the makefile
-
- QDir D( workDir );
- // Make sure we start in the right directory
+ QDir D;
D.setCurrent( workDir );
if (D.exists("Makefile"))
- D.remove("Makefile");
-
- QStringList args;
- args = QStringList::split( " ", qmake_cmd );
+ D.remove("Makefile");
- QString project_fname = workDir + "/" + proName + ".pro";
- QString makefile_fname = (buildDir.isNull()?QString():(buildDir + "/")) + "Makefile";
+ QString projectFile = proName;
+ QString makeFile = buildDir;
+ if (!projectFile.endsWith(".pro"))
+ projectFile += ".pro";
+ if (!makeFile.isEmpty() && !makeFile.endsWith('/'))
+ makeFile += '/';
+ makeFile += "Makefile";
- args.append( project_fname );
- args.append( "-o" );
- args.append( makefile_fname );
-
- return runChild( TRUE, args, 0 );
+ // Now start qmake and generate the makefile
+ return runCommand( qmakeCmd_ + " " + projectFile + " -o " + makeFile );
}
bool TestCompiler::make( const QString &workPath, const QString &target )
@@ -355,14 +237,13 @@ bool TestCompiler::make( const QString &workPath, const QString &target )
QDir D;
D.setCurrent( workPath );
- QStringList args;
- args = QStringList::split( " ", make_cmd );
- if ( make_cmd.lower().find("nmake") >= 0)
- args.append("/NOLOGO");
- if ( !target.isNull() )
- args.append(target);
+ QString cmdline = makeCmd_;
+ if ( cmdline.contains("nmake", Qt::CaseInsensitive) )
+ cmdline.append(" /NOLOGO");
+ if ( !target.isEmpty() )
+ cmdline += " " + target;
- return runChild( TRUE, args, 0 );
+ return runCommand( cmdline );
}
bool TestCompiler::exists( const QString &destDir, const QString &exeName, BuildType buildType, const QString &version )
@@ -371,20 +252,12 @@ bool TestCompiler::exists( const QString &destDir, const QString &exeName, Build
return f.exists();
}
-void TestCompiler::addMakeResult( const QString &result )
-{
- make_result.append( result );
-}
-
bool TestCompiler::removeMakefile( const QString &workPath )
{
QDir D;
D.setCurrent( workPath );
if ( D.exists( "Makefile" ) )
- return D.remove( "Makefile" );
+ return D.remove( "Makefile" );
else
- return TRUE;
+ return true;
}
-
-#endif //QT3_SUPPORT
-
diff --git a/tests/auto/qmake/testcompiler.h b/tests/auto/qmake/testcompiler.h
index 597d440..41e5177 100644
--- a/tests/auto/qmake/testcompiler.h
+++ b/tests/auto/qmake/testcompiler.h
@@ -41,33 +41,22 @@
#ifndef TESTCOMPILER_H
#define TESTCOMPILER_H
-
-#ifdef QT3_SUPPORT
-
-#include <qobject.h>
-#include <qstringlist.h>
-
-QT_FORWARD_DECLARE_CLASS(Q3Process)
-
-#define COMPILE_ERROR "Compile error"
-#define COMPILE_SUCCESS "Compile successfull"
-#define COMPILE_NOT_AVAIL "Binary not available for testing"
-#define SELF_TEST "self-test"
+#include <QObject>
+#include <QStringList>
enum BuildType { Exe, Dll, Lib, Plain };
class TestCompiler : public QObject
{
-Q_OBJECT
+ Q_OBJECT
public:
TestCompiler();
virtual ~TestCompiler();
- void setBaseCommands( QString makeCmd, QString qmakeCmd, bool qwsMode );
-
- // builds a complete project, e.g. qmake, make clean, make and exists.
- bool buildProject( const QString &project, BuildType buildType, const QString &targetName, const QString &destPath, const QString &version );
+ void setBaseCommands( QString makeCmd, QString qmakeCmd );
+ void resetEnvironment();
+ void addToEnvironment( QString varAssignment );
// executes a make clean in the specified workPath
bool makeClean( const QString &workPath );
@@ -77,34 +66,20 @@ public:
bool qmake( const QString &workDir, const QString &proName, const QString &buildDir = QString() );
// executes a make in the specified workPath, with an optional target (eg. install)
bool make( const QString &workPath, const QString &target = QString() );
- // executes a make clean and then deletes the makefile in workpath + deletes the executable
- // in destPath.
- bool cleanAll( const QString &workPath, const QString &destPath, const QString &exeName, const QString &exeExt );
// checks if the executable exists in destDir
bool exists( const QString &destDir, const QString &exeName, BuildType buildType, const QString &version );
// removes the makefile
bool removeMakefile( const QString &workPath );
private:
- QString make_cmd;
- QString qmake_cmd;
-
- Q3Process *childProc;
- QStringList env_list;
+ bool runCommand( QString cmdLine );
- bool child_show;
- bool qws_mode;
- bool exit_ok;
-
-private:
- bool runChild( bool showOutput, QStringList argList, QStringList *envList );
- void addMakeResult( const QString &result );
- QStringList make_result;
+ QString makeCmd_;
+ QString qmakeCmd_;
+ QStringList environment_;
-private slots:
- void childReady();
- void childHasData();
+ // need to make this available somewhere
+ QStringList testOutput_;
};
-#endif // QT3_SUPPORT
#endif // TESTCOMPILER_H
diff --git a/tests/auto/qmake/testdata/functions/functions.pro b/tests/auto/qmake/testdata/functions/functions.pro
index 5ee5f51..9ed92f96 100644
--- a/tests/auto/qmake/testdata/functions/functions.pro
+++ b/tests/auto/qmake/testdata/functions/functions.pro
@@ -51,15 +51,11 @@ include( infiletest.pro )
message( "FAILED: include function: $$DEFINES" )
}
-lessThan(QT_VERSION, 40200) {
- message( "SKIPPED: replace function only in 4.2" )
-} else {
- #replace
- VERSION=1.0.0
- VERSION_replaced=$$replace(VERSION,\.,_)
- !isEqual(VERSION_replaced, 1_0_0) {
- message( "FAILED: replace function: $$VERSION_replaced" )
- }
+#replace
+VERSION=1.0.0
+VERSION_replaced=$$replace(VERSION,\.,_)
+!isEqual(VERSION_replaced, 1_0_0) {
+ message( "FAILED: replace function: $$VERSION_replaced" )
}
#test functions
diff --git a/tests/auto/qmake/testdata/shadow_files_build/README b/tests/auto/qmake/testdata/shadow_files_build/README
index 46017fc..15e48c0 100644
--- a/tests/auto/qmake/testdata/shadow_files_build/README
+++ b/tests/auto/qmake/testdata/shadow_files_build/README
@@ -1 +1 @@
-Here to ensure include_dir_build exists
+Here to ensure shadow_files_build exists, used by the shadow_files test.
diff --git a/tests/auto/qmake/tst_qmake.cpp b/tests/auto/qmake/tst_qmake.cpp
index facf0bb..70f1f3c 100644
--- a/tests/auto/qmake/tst_qmake.cpp
+++ b/tests/auto/qmake/tst_qmake.cpp
@@ -39,21 +39,13 @@
**
****************************************************************************/
-
-#include <QtTest/QtTest>
-
-#if !defined(QMAKE_CROSS_COMPILED) && defined(QT3_SUPPORT)
-
-#include <qdir.h>
-#include <qprocess.h>
-
+#if !defined(QMAKE_CROSS_COMPILED)
#include "testcompiler.h"
-#include <stdlib.h>
-
-//TESTED_CLASS=
-//TESTED_FILES=corelib/tools/qlocale.h corelib/tools/qlocale.cpp
+#include <QObject>
+#include <QDir>
+#include <QtTest/QtTest>
class tst_qmake : public QObject
{
@@ -63,12 +55,12 @@ public:
tst_qmake();
virtual ~tst_qmake();
-
public slots:
void initTestCase();
void cleanupTestCase();
void init();
void cleanup();
+
private slots:
void simple_app();
void simple_lib();
@@ -104,16 +96,16 @@ tst_qmake::tst_qmake()
{
QString cmd = QString("qmake \"QT_VERSION=%1\"").arg(QT_VERSION);
#ifdef Q_CC_MSVC
- test_compiler.setBaseCommands( "nmake", cmd, FALSE );
+ test_compiler.setBaseCommands( "nmake", cmd );
#elif defined(Q_CC_MINGW)
- test_compiler.setBaseCommands( "mingw32-make", cmd, FALSE );
+ test_compiler.setBaseCommands( "mingw32-make", cmd );
#elif defined(Q_OS_WIN) && defined(Q_CC_GNU)
- test_compiler.setBaseCommands( "mmmake", cmd, FALSE );
+ test_compiler.setBaseCommands( "mmmake", cmd );
#else
- test_compiler.setBaseCommands( "make", cmd, FALSE );
+ test_compiler.setBaseCommands( "make", cmd );
#endif
QDir dir;
- base_path = dir.currentDirPath();
+ base_path = dir.currentPath();
}
tst_qmake::~tst_qmake()
@@ -255,10 +247,10 @@ void tst_qmake::duplicateLibraryEntries()
void tst_qmake::export_across_file_boundaries()
{
// This relies on features so we need to set the QMAKEFEATURES environment variable
- putenv("QMAKEFEATURES=.");
+ test_compiler.addToEnvironment("QMAKEFEATURES=.");
QString workDir = base_path + "/testdata/export_across_file_boundaries";
QVERIFY( test_compiler.qmake( workDir, "foo" ));
- putenv("QMAKEFEATURES=");
+ test_compiler.resetEnvironment();
}
void tst_qmake::include_dir()
@@ -406,7 +398,7 @@ void tst_qmake::bundle_spaces()
// make (-n).
TestCompiler local_tc;
- local_tc.setBaseCommands("make -n", "qmake -macx -spec macx-g++", FALSE);
+ local_tc.setBaseCommands("make -n", "qmake -macx -spec macx-g++");
QVERIFY( local_tc.qmake(workDir, "bundle-spaces") );
diff --git a/tests/auto/qmap/tst_qmap.cpp b/tests/auto/qmap/tst_qmap.cpp
index ce413c5..99efc80 100644
--- a/tests/auto/qmap/tst_qmap.cpp
+++ b/tests/auto/qmap/tst_qmap.cpp
@@ -728,37 +728,27 @@ void tst_QMap::iterators()
void tst_QMap::keys_values_uniqueKeys()
{
QMap<QString, int> map;
-#if QT_VERSION >= 0x040200
QVERIFY(map.uniqueKeys().isEmpty());
-#endif
QVERIFY(map.keys().isEmpty());
QVERIFY(map.values().isEmpty());
map.insertMulti("alpha", 1);
QVERIFY(map.keys() == (QList<QString>() << "alpha"));
-#if QT_VERSION >= 0x040200
QVERIFY(map.uniqueKeys() == map.keys());
-#endif
QVERIFY(map.values() == (QList<int>() << 1));
map.insertMulti("beta", -2);
QVERIFY(map.keys() == (QList<QString>() << "alpha" << "beta"));
-#if QT_VERSION >= 0x040200
QVERIFY(map.keys() == map.uniqueKeys());
-#endif
QVERIFY(map.values() == (QList<int>() << 1 << -2));
map.insertMulti("alpha", 2);
-#if QT_VERSION >= 0x040200
QVERIFY(map.uniqueKeys() == (QList<QString>() << "alpha" << "beta"));
-#endif
QVERIFY(map.keys() == (QList<QString>() << "alpha" << "alpha" << "beta"));
QVERIFY(map.values() == (QList<int>() << 2 << 1 << -2));
map.insertMulti("beta", 4);
-#if QT_VERSION >= 0x040200
QVERIFY(map.uniqueKeys() == (QList<QString>() << "alpha" << "beta"));
-#endif
QVERIFY(map.keys() == (QList<QString>() << "alpha" << "alpha" << "beta" << "beta"));
QVERIFY(map.values() == (QList<int>() << 2 << 1 << 4 << -2));
}
diff --git a/tests/auto/qmenu/tst_qmenu.cpp b/tests/auto/qmenu/tst_qmenu.cpp
index 7607838..5b6e54c 100644
--- a/tests/auto/qmenu/tst_qmenu.cpp
+++ b/tests/auto/qmenu/tst_qmenu.cpp
@@ -92,6 +92,7 @@ private slots:
void activeSubMenuPosition();
void task242454_sizeHint();
void task176201_clear();
+ void task250673_activeMutliColumnSubMenuPosition();
protected slots:
void onActivated(QAction*);
void onHighlighted(QAction*);
@@ -678,6 +679,39 @@ void tst_QMenu::task176201_clear()
QTest::mouseClick(&menu, Qt::LeftButton, 0, menu.rect().center());
}
+void tst_QMenu::task250673_activeMutliColumnSubMenuPosition()
+{
+ class MyMenu : public QMenu
+ {
+ public:
+ int columnCount() const { return QMenu::columnCount(); }
+ };
+
+ QMenu sub;
+ sub.addAction("Sub-Item1");
+ QAction *subAction = sub.addAction("Sub-Item2");
+
+ MyMenu main;
+ main.addAction("Item 1");
+ QAction *menuAction = main.addMenu(&sub);
+ main.popup(QPoint(200,200));
+
+ uint i = 2;
+ while (main.columnCount() < 2) {
+ main.addAction(QString("Item %1").arg(i));
+ ++i;
+ Q_ASSERT(i<1000);
+ }
+ main.setActiveAction(menuAction);
+ sub.setActiveAction(subAction);
+ QVERIFY(main.isVisible());
+ QCOMPARE(main.activeAction(), menuAction);
+ QVERIFY(sub.isVisible());
+ QVERIFY(sub.pos().x() > main.pos().x());
+
+ const int subMenuOffset = main.style()->pixelMetric(QStyle::PM_SubMenuOverlap, 0, &main);
+ QVERIFY((sub.geometry().left() - subMenuOffset + 5) < main.geometry().right());
+}
QTEST_MAIN(tst_QMenu)
#include "tst_qmenu.moc"
diff --git a/tests/auto/qmenubar/tst_qmenubar.cpp b/tests/auto/qmenubar/tst_qmenubar.cpp
index 277e15c..538e443 100644
--- a/tests/auto/qmenubar/tst_qmenubar.cpp
+++ b/tests/auto/qmenubar/tst_qmenubar.cpp
@@ -457,8 +457,8 @@ void tst_QMenuBar::accel()
void tst_QMenuBar::accel_noQt3()
{
-#ifdef Q_WS_MAC
- QSKIP("On Mac, native key events are needed to test menu action activation", SkipAll);
+#if defined(Q_WS_MAC) || defined(Q_OS_WINCE_WM)
+ QSKIP("On Mac/WinCE, native key events are needed to test menu action activation", SkipAll);
#endif
// create a popup menu with menu items set the accelerators later...
initSimpleMenubar_noQt3();
@@ -486,8 +486,8 @@ void tst_QMenuBar::activatedCount()
void tst_QMenuBar::activatedCount_noQt3()
{
-#ifdef Q_WS_MAC
- QSKIP("On Mac, native key events are needed to test menu action activation", SkipAll);
+#if defined(Q_WS_MAC) || defined(Q_OS_WINCE_WM)
+ QSKIP("On Mac/WinCE, native key events are needed to test menu action activation", SkipAll);
#endif
// create a popup menu with menu items set the accelerators later...
initSimpleMenubar_noQt3();
@@ -888,8 +888,8 @@ void tst_QMenuBar::insertItem_QString_QObject_noQt3()
void tst_QMenuBar::check_accelKeys()
{
-#ifdef Q_WS_MAC
- QSKIP("On Mac, native key events are needed to test menu action activation", SkipAll);
+#if defined(Q_WS_MAC) || defined(Q_OS_WINCE_WM)
+ QSKIP("On Mac/WinCE, native key events are needed to test menu action activation", SkipAll);
#endif
#ifdef QT3_SUPPORT
initComplexMenubar();
@@ -961,8 +961,8 @@ void tst_QMenuBar::check_accelKeys()
void tst_QMenuBar::check_cursorKeys1()
{
-#ifdef Q_WS_MAC
- QSKIP("Qt/Mac does not use the native popups/menubar", SkipAll);
+#if defined(Q_WS_MAC) || defined(Q_OS_WINCE_WM)
+ QSKIP("Qt/Mac,WinCE does not use the native popups/menubar", SkipAll);
#endif
#ifdef QT3_SUPPORT
@@ -996,8 +996,8 @@ void tst_QMenuBar::check_cursorKeys1()
void tst_QMenuBar::check_cursorKeys2()
{
-#ifdef Q_WS_MAC
- QSKIP("Qt/Mac does not use the native popups/menubar", SkipAll);
+#if defined(Q_WS_MAC) || defined(Q_OS_WINCE_WM)
+ QSKIP("Qt/Mac,WinCE does not use the native popups/menubar", SkipAll);
#endif
#ifdef QT3_SUPPORT
@@ -1030,8 +1030,8 @@ void tst_QMenuBar::check_cursorKeys2()
*/
void tst_QMenuBar::check_cursorKeys3()
{
-#ifdef Q_WS_MAC
- QSKIP("Qt/Mac does not use the native popups/menubar", SkipAll);
+#if defined(Q_WS_MAC) || defined(Q_OS_WINCE_WM)
+ QSKIP("Qt/Mac,WinCE does not use the native popups/menubar", SkipAll);
#endif
#ifdef QT3_SUPPORT
@@ -1186,8 +1186,8 @@ void tst_QMenuBar::check_escKey()
void tst_QMenuBar::check_escKey_noQt3()
{
-#ifdef Q_WS_MAC
- QSKIP("Qt/Mac does not use the native popups/menubar", SkipAll);
+#if defined(Q_WS_MAC) || defined(Q_OS_WINCE_WM)
+ QSKIP("Qt/Mac,WinCE does not use the native popups/menubar", SkipAll);
#endif
initComplexMenubar_noQt3();
@@ -1329,7 +1329,7 @@ void tst_QMenuBar::check_escKey_noQt3()
void
tst_QMenuBar::allowActiveAndDisabled()
{
-#ifndef Q_WS_MAC
+#if !defined(Q_WS_MAC) && !defined(Q_OS_WINCE_WM)
mb->hide();
mb->clear();
@@ -1337,7 +1337,6 @@ tst_QMenuBar::allowActiveAndDisabled()
// disabled menu items are added
QMenu fileMenu("&File");
- QAction disabledAction() ;
// Task 241043 : check that second menu is activated
// if all items are disabled
QAction *act = fileMenu.addAction("Disabled");
@@ -1394,8 +1393,8 @@ void tst_QMenuBar::check_altPress()
void tst_QMenuBar::check_shortcutPress()
{
-#ifdef Q_WS_MAC
- QSKIP("Qt/Mac does not use the native popups/menubar", SkipAll);
+#if defined(Q_WS_MAC) || defined(Q_OS_WINCE_WM)
+ QSKIP("Qt/Mac,WinCE does not use the native popups/menubar", SkipAll);
#endif
#ifdef QT3_SUPPORT
@@ -1430,7 +1429,7 @@ void tst_QMenuBar::check_menuPosition()
#ifdef Q_WS_MAC
QSKIP("Qt/Mac does not use the native popups/menubar", SkipAll);
#endif
-#ifdef Q_OS_WINCE
+#ifdef Q_OS_WINCE_WM
QSKIP("Qt/CE uses native menubar", SkipAll);
#endif
QMenu menu;
diff --git a/tests/auto/qmetaobject/tst_qmetaobject.cpp b/tests/auto/qmetaobject/tst_qmetaobject.cpp
index b3b7f33..3d04a0f 100644
--- a/tests/auto/qmetaobject/tst_qmetaobject.cpp
+++ b/tests/auto/qmetaobject/tst_qmetaobject.cpp
@@ -257,11 +257,7 @@ private slots:
void on_child1_destroyed() { ++invokeCount2; }
};
-#if QT_VERSION >= 0x040200
#define FUNCTION(x) "QMetaObject::" x ": "
-#else
-#define FUNCTION(x) "QMetaObject::" x "(): "
-#endif
void tst_QMetaObject::connectSlotsByName()
{
diff --git a/tests/auto/qmetatype/tst_qmetatype.cpp b/tests/auto/qmetatype/tst_qmetatype.cpp
index eccf7e6..d71f470 100644
--- a/tests/auto/qmetatype/tst_qmetatype.cpp
+++ b/tests/auto/qmetatype/tst_qmetatype.cpp
@@ -127,7 +127,6 @@ protected:
void tst_QMetaType::threadSafety()
{
-#if QT_VERSION >= 0x040100
MetaTypeTorturer t1;
MetaTypeTorturer t2;
MetaTypeTorturer t3;
@@ -139,7 +138,6 @@ void tst_QMetaType::threadSafety()
QVERIFY(t1.wait());
QVERIFY(t2.wait());
QVERIFY(t3.wait());
-#endif
}
namespace TestSpace
diff --git a/tests/auto/qmovie/tst_qmovie.cpp b/tests/auto/qmovie/tst_qmovie.cpp
index dd24f97..23b057b 100644
--- a/tests/auto/qmovie/tst_qmovie.cpp
+++ b/tests/auto/qmovie/tst_qmovie.cpp
@@ -71,9 +71,7 @@ private slots:
void playMovie();
void jumpToFrame_data();
void jumpToFrame();
-#if QT_VERSION >= 0x040101
void changeMovieFile();
-#endif // QT_VERSION
};
// Testing get/set functions
@@ -201,7 +199,6 @@ void tst_QMovie::jumpToFrame()
QVERIFY(movie.currentFrameNumber() == 0);
}
-#if QT_VERSION >= 0x040101
void tst_QMovie::changeMovieFile()
{
QMovie movie("animations/comicsecard.gif");
@@ -211,7 +208,5 @@ void tst_QMovie::changeMovieFile()
QVERIFY(movie.currentFrameNumber() == -1);
}
-#endif // QT_VERSION
-
QTEST_MAIN(tst_QMovie)
#include "tst_qmovie.moc"
diff --git a/tests/auto/qmutexlocker/tst_qmutexlocker.cpp b/tests/auto/qmutexlocker/tst_qmutexlocker.cpp
index cb5112d..cc3e144 100644
--- a/tests/auto/qmutexlocker/tst_qmutexlocker.cpp
+++ b/tests/auto/qmutexlocker/tst_qmutexlocker.cpp
@@ -194,9 +194,6 @@ void tst_QMutexLocker::unlockAndRelockTest()
void tst_QMutexLocker::lockerStateTest()
{
-#if QT_VERSION < 0x040200
- QSKIP("QMutexLocker doesn't keep state in Qt < 4.2", SkipAll);
-#else
class LockerStateThread : public tst_QMutexLockerThread
{
public:
@@ -233,7 +230,6 @@ void tst_QMutexLocker::lockerStateTest()
delete thread;
thread = 0;
-#endif
}
QTEST_MAIN(tst_QMutexLocker)
diff --git a/tests/auto/qnativesocketengine/tst_qnativesocketengine.cpp b/tests/auto/qnativesocketengine/tst_qnativesocketengine.cpp
index a28c49a..90276f2 100644
--- a/tests/auto/qnativesocketengine/tst_qnativesocketengine.cpp
+++ b/tests/auto/qnativesocketengine/tst_qnativesocketengine.cpp
@@ -42,8 +42,6 @@
#include <QtTest/QtTest>
-#if QT_VERSION >= 0x040100
-
#ifdef Q_OS_WIN
#include <winsock2.h>
#endif
@@ -102,8 +100,6 @@ private slots:
void receiveUrgentData();
};
-static const char *IMAP_IP = "62.70.27.18";
-
tst_QNativeSocketEngine::tst_QNativeSocketEngine()
{
}
@@ -157,15 +153,14 @@ void tst_QNativeSocketEngine::simpleConnectToIMAP()
QVERIFY(socketDevice.initialize(QAbstractSocket::TcpSocket, QAbstractSocket::IPv4Protocol));
QVERIFY(socketDevice.state() == QAbstractSocket::UnconnectedState);
- // Connect to imap.trolltech.com's IP
- bool connected = socketDevice.connectToHost(QHostAddress(IMAP_IP), 143);
- if (!connected) {
+ const bool isConnected = socketDevice.connectToHost(QtNetworkSettings::serverIP(), 143);
+ if (!isConnected) {
QVERIFY(socketDevice.state() == QAbstractSocket::ConnectingState);
QVERIFY(socketDevice.waitForWrite());
QVERIFY(socketDevice.state() == QAbstractSocket::ConnectedState);
}
QVERIFY(socketDevice.state() == QAbstractSocket::ConnectedState);
- QVERIFY(socketDevice.peerAddress() == QHostAddress(IMAP_IP));
+ QVERIFY(socketDevice.peerAddress() == QtNetworkSettings::serverIP());
// Wait for the greeting
QVERIFY(socketDevice.waitForRead());
@@ -178,7 +173,7 @@ void tst_QNativeSocketEngine::simpleConnectToIMAP()
QVERIFY(socketDevice.read(array.data(), array.size()) == available);
// Check that the greeting is what we expect it to be
- QCOMPARE(array.constData(), "* OK esparsett Cyrus IMAP4 v2.2.8 server ready\r\n");
+ QCOMPARE(array.constData(), "* OK [CAPABILITY IMAP4 IMAP4rev1 LITERAL+ ID STARTTLS LOGINDISABLED] qt-test-server.qt-test-net Cyrus IMAP4 v2.3.11-Mandriva-RPM-2.3.11-6mdv2008.1 server ready\r\n");
// Write a logout message
QByteArray array2 = "ZZZ LOGOUT\r\n";
@@ -582,9 +577,8 @@ void tst_QNativeSocketEngine::networkError()
QVERIFY(client.initialize(QAbstractSocket::TcpSocket, QAbstractSocket::IPv4Protocol));
- // Connect to imap.trolltech.com's IP
- bool connected = client.connectToHost(QHostAddress(IMAP_IP), 143);
- if (!connected) {
+ const bool isConnected = client.connectToHost(QHostAddress(QtNetworkSettings::serverIP()), 143);
+ if (!isConnected) {
QVERIFY(client.state() == QAbstractSocket::ConnectingState);
QVERIFY(client.waitForWrite());
QVERIFY(client.state() == QAbstractSocket::ConnectedState);
@@ -694,7 +688,3 @@ void tst_QNativeSocketEngine::receiveUrgentData()
QTEST_MAIN(tst_QNativeSocketEngine)
#include "tst_qnativesocketengine.moc"
-
-#else // QT_VERSION
-QTEST_NOOP_MAIN
-#endif
diff --git a/tests/auto/qnetworkcookie/tst_qnetworkcookie.cpp b/tests/auto/qnetworkcookie/tst_qnetworkcookie.cpp
index 36a4b45..4ee5b9f 100644
--- a/tests/auto/qnetworkcookie/tst_qnetworkcookie.cpp
+++ b/tests/auto/qnetworkcookie/tst_qnetworkcookie.cpp
@@ -234,7 +234,7 @@ void tst_QNetworkCookie::parseSingleCookie_data()
QTest::newRow("path-with-utf8-2") << "a=b;path=/R%C3%A9sum%C3%A9" << cookie;
cookie.setPath(QString());
- cookie.setDomain("trolltech.com");
+ cookie.setDomain(".trolltech.com");
QTest::newRow("plain-domain1") << "a=b;domain=trolltech.com" << cookie;
QTest::newRow("plain-domain2") << "a=b; domain=trolltech.com " << cookie;
QTest::newRow("plain-domain3") << "a=b;domain=TROLLTECH.COM" << cookie;
@@ -246,7 +246,7 @@ void tst_QNetworkCookie::parseSingleCookie_data()
QTest::newRow("dot-domain3") << "a=b; domain=.TROLLTECH.COM" << cookie;
QTest::newRow("dot-domain4") << "a=b; Domain = .TROLLTECH.COM" << cookie;
- cookie.setDomain(QString::fromUtf8("d\303\270gn\303\245pent.troll.no"));
+ cookie.setDomain(QString::fromUtf8(".d\303\270gn\303\245pent.troll.no"));
QTest::newRow("idn-domain1") << "a=b;domain=xn--dgnpent-gxa2o.troll.no" << cookie;
QTest::newRow("idn-domain2") << "a=b;domain=d\303\270gn\303\245pent.troll.no" << cookie;
QTest::newRow("idn-domain3") << "a=b;domain=XN--DGNPENT-GXA2O.TROLL.NO" << cookie;
@@ -259,7 +259,7 @@ void tst_QNetworkCookie::parseSingleCookie_data()
QTest::newRow("dot-idn-domain3") << "a=b;domain=.XN--DGNPENT-GXA2O.TROLL.NO" << cookie;
QTest::newRow("dot-idn-domain4") << "a=b;domain=.D\303\230GN\303\205PENT.troll.NO" << cookie;
- cookie.setDomain("trolltech.com");
+ cookie.setDomain(".trolltech.com");
cookie.setPath("/");
QTest::newRow("two-fields") << "a=b;domain=trolltech.com;path=/" << cookie;
QTest::newRow("two-fields2") << "a=b; domain=trolltech.com; path=/" << cookie;
@@ -662,7 +662,7 @@ void tst_QNetworkCookie::parseMultipleCookies_data()
QTest::newRow("complex-1") << "c=d, a=, foo=bar; path=/" << list;
cookie.setName("baz");
- cookie.setDomain("trolltech.com");
+ cookie.setDomain(".trolltech.com");
list.prepend(cookie);
QTest::newRow("complex-2") << "baz=bar; path=/; domain=trolltech.com, c=d,a=,foo=bar; path=/" << list;
diff --git a/tests/auto/qnetworkcookiejar/tst_qnetworkcookiejar.cpp b/tests/auto/qnetworkcookiejar/tst_qnetworkcookiejar.cpp
index e87a3bf..7aa1d24 100644
--- a/tests/auto/qnetworkcookiejar/tst_qnetworkcookiejar.cpp
+++ b/tests/auto/qnetworkcookiejar/tst_qnetworkcookiejar.cpp
@@ -171,6 +171,17 @@ void tst_QNetworkCookieJar::setCookiesFromUrl_data()
result.clear();
result += finalCookie;
QTest::newRow("defaults-2") << preset << cookie << "http://www.foo.tld" << result << true;
+
+ // security test: do not accept cookie domains like ".com" nor ".com." (see RFC 2109 section 4.3.2)
+ result.clear();
+ preset.clear();
+ cookie.setDomain(".com");
+ QTest::newRow("rfc2109-4.3.2-ex3") << preset << cookie << "http://x.foo.com" << result << false;
+
+ result.clear();
+ preset.clear();
+ cookie.setDomain(".com.");
+ QTest::newRow("rfc2109-4.3.2-ex3-2") << preset << cookie << "http://x.foo.com" << result << false;
}
void tst_QNetworkCookieJar::setCookiesFromUrl()
diff --git a/tests/auto/qnetworkdiskcache/tst_qnetworkdiskcache.cpp b/tests/auto/qnetworkdiskcache/tst_qnetworkdiskcache.cpp
index fc15437..2383767 100644
--- a/tests/auto/qnetworkdiskcache/tst_qnetworkdiskcache.cpp
+++ b/tests/auto/qnetworkdiskcache/tst_qnetworkdiskcache.cpp
@@ -389,7 +389,8 @@ void tst_QNetworkDiskCache::expire()
qint64 max = cache.maximumCacheSize();
QCOMPARE(max, limit);
for (int i = 0; i < 10; ++i) {
- QTest::qWait(2000);
+ if (i % 3 == 0)
+ QTest::qWait(2000);
QNetworkCacheMetaData m;
m.setUrl(QUrl("http://www.foo.com/" + QString::number(i)));
QIODevice *d = cache.prepare(m);
diff --git a/tests/auto/qnetworkinterface/tst_qnetworkinterface.cpp b/tests/auto/qnetworkinterface/tst_qnetworkinterface.cpp
index 6e5afd2..a246b04 100644
--- a/tests/auto/qnetworkinterface/tst_qnetworkinterface.cpp
+++ b/tests/auto/qnetworkinterface/tst_qnetworkinterface.cpp
@@ -42,10 +42,6 @@
#include <QtTest/QtTest>
-#if QT_VERSION < 0x040200
-QTEST_NOOP_MAIN
-#else
-
#include <qcoreapplication.h>
#include <qnetworkinterface.h>
#include <qtcpsocket.h>
@@ -210,5 +206,3 @@ void tst_QNetworkInterface::copyInvalidInterface()
QTEST_MAIN(tst_QNetworkInterface)
#include "tst_qnetworkinterface.moc"
-
-#endif
diff --git a/tests/auto/qnetworkproxy/tst_qnetworkproxy.cpp b/tests/auto/qnetworkproxy/tst_qnetworkproxy.cpp
index 31a5391..0760ce8 100644
--- a/tests/auto/qnetworkproxy/tst_qnetworkproxy.cpp
+++ b/tests/auto/qnetworkproxy/tst_qnetworkproxy.cpp
@@ -59,6 +59,7 @@ public:
private slots:
void getSetCheck();
+ void capabilitiesPerType();
};
tst_QNetworkProxy::tst_QNetworkProxy()
@@ -79,6 +80,38 @@ void tst_QNetworkProxy::getSetCheck()
QCOMPARE(quint16(0), obj1.port());
obj1.setPort(quint16(0xffff));
QCOMPARE(quint16(0xffff), obj1.port());
+
+ obj1.setType(QNetworkProxy::DefaultProxy);
+ QCOMPARE(obj1.type(), QNetworkProxy::DefaultProxy);
+ obj1.setType(QNetworkProxy::HttpProxy);
+ QCOMPARE(obj1.type(), QNetworkProxy::HttpProxy);
+ obj1.setType(QNetworkProxy::Socks5Proxy);
+ QCOMPARE(obj1.type(), QNetworkProxy::Socks5Proxy);
+}
+
+void tst_QNetworkProxy::capabilitiesPerType()
+{
+ QNetworkProxy proxy(QNetworkProxy::Socks5Proxy);
+ QVERIFY(proxy.capabilities() & QNetworkProxy::TunnelingCapability);
+ QVERIFY(proxy.capabilities() & QNetworkProxy::HostNameLookupCapability);
+ QVERIFY(proxy.capabilities() & QNetworkProxy::UdpTunnelingCapability);
+
+ proxy.setType(QNetworkProxy::NoProxy);
+ // verify that the capabilities changed
+ QVERIFY(!(proxy.capabilities() & QNetworkProxy::HostNameLookupCapability));
+ QVERIFY(proxy.capabilities() & QNetworkProxy::UdpTunnelingCapability);
+
+ proxy.setType(QNetworkProxy::HttpProxy);
+ QVERIFY(proxy.capabilities() & QNetworkProxy::HostNameLookupCapability);
+ QVERIFY(!(proxy.capabilities() & QNetworkProxy::UdpTunnelingCapability));
+
+ // now set the capabilities on stone:
+ proxy.setCapabilities(QNetworkProxy::TunnelingCapability | QNetworkProxy::UdpTunnelingCapability);
+ QCOMPARE(proxy.capabilities(), QNetworkProxy::TunnelingCapability | QNetworkProxy::UdpTunnelingCapability);
+
+ // changing the type shouldn't change the capabilities any more
+ proxy.setType(QNetworkProxy::Socks5Proxy);
+ QCOMPARE(proxy.capabilities(), QNetworkProxy::TunnelingCapability | QNetworkProxy::UdpTunnelingCapability);
}
QTEST_MAIN(tst_QNetworkProxy)
diff --git a/tests/auto/qnetworkreply/tst_qnetworkreply.cpp b/tests/auto/qnetworkreply/tst_qnetworkreply.cpp
index 503118a..d651ce5 100644
--- a/tests/auto/qnetworkreply/tst_qnetworkreply.cpp
+++ b/tests/auto/qnetworkreply/tst_qnetworkreply.cpp
@@ -172,6 +172,8 @@ private Q_SLOTS:
void ioGetFromHttpsWithIgnoreSslErrors();
void ioGetFromHttpsWithSslHandshakeError();
#endif
+ void ioGetFromHttpBrokenServer_data();
+ void ioGetFromHttpBrokenServer();
void ioGetWithManyProxies_data();
void ioGetWithManyProxies();
@@ -215,6 +217,8 @@ private Q_SLOTS:
void httpProxyCommands_data();
void httpProxyCommands();
void proxyChange();
+ void authorizationError_data();
+ void authorizationError();
};
QT_BEGIN_NAMESPACE
@@ -1887,6 +1891,53 @@ void tst_QNetworkReply::ioGetFromHttpsWithSslHandshakeError()
}
#endif
+void tst_QNetworkReply::ioGetFromHttpBrokenServer_data()
+{
+ QTest::addColumn<QByteArray>("dataToSend");
+ QTest::addColumn<bool>("doDisconnect");
+
+ QTest::newRow("no-newline") << QByteArray("Hello World") << false;
+ QTest::newRow("just-newline") << QByteArray("\r\n") << false;
+ QTest::newRow("just-2newline") << QByteArray("\r\n\r\n") << false;
+ QTest::newRow("with-newlines") << QByteArray("Long first line\r\nLong second line") << false;
+ QTest::newRow("with-newlines2") << QByteArray("\r\nSecond line") << false;
+ QTest::newRow("with-newlines3") << QByteArray("ICY\r\nSecond line") << false;
+ QTest::newRow("invalid-version") << QByteArray("HTTP/123 200 \r\n") << false;
+ QTest::newRow("invalid-version2") << QByteArray("HTTP/a.\033 200 \r\n") << false;
+ QTest::newRow("invalid-reply-code") << QByteArray("HTTP/1.0 fuu \r\n") << false;
+
+ QTest::newRow("empty+disconnect") << QByteArray() << true;
+
+ QTest::newRow("no-newline+disconnect") << QByteArray("Hello World") << true;
+ QTest::newRow("just-newline+disconnect") << QByteArray("\r\n") << true;
+ QTest::newRow("just-2newline+disconnect") << QByteArray("\r\n\r\n") << true;
+ QTest::newRow("with-newlines+disconnect") << QByteArray("Long first line\r\nLong second line") << true;
+ QTest::newRow("with-newlines2+disconnect") << QByteArray("\r\nSecond line") << true;
+ QTest::newRow("with-newlines3+disconnect") << QByteArray("ICY\r\nSecond line") << true;
+
+ QTest::newRow("invalid-version+disconnect") << QByteArray("HTTP/123 200 ") << true;
+ QTest::newRow("invalid-version2+disconnect") << QByteArray("HTTP/a.\033 200 ") << true;
+ QTest::newRow("invalid-reply-code+disconnect") << QByteArray("HTTP/1.0 fuu ") << true;
+}
+
+void tst_QNetworkReply::ioGetFromHttpBrokenServer()
+{
+ QFETCH(QByteArray, dataToSend);
+ QFETCH(bool, doDisconnect);
+ MiniHttpServer server(dataToSend);
+ server.doClose = doDisconnect;
+
+ QNetworkRequest request(QUrl("http://localhost:" + QString::number(server.serverPort())));
+ QNetworkReplyPtr reply = manager.get(request);
+
+ connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QTestEventLoop::instance().enterLoop(10);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+
+ QCOMPARE(reply->url(), request.url());
+ QVERIFY(reply->error() != QNetworkReply::NoError);
+}
+
void tst_QNetworkReply::ioGetWithManyProxies_data()
{
QTest::addColumn<QList<QNetworkProxy> >("proxyList");
@@ -2236,9 +2287,6 @@ void tst_QNetworkReply::ioPutToFileFromLocalSocket_data()
void tst_QNetworkReply::ioPutToFileFromLocalSocket()
{
-#if defined(Q_OS_WINCE) && QT_VERSION < 0x040500
- QSKIP("No local sockets on Windows CE for Qt 4.4", SkipAll);
-#else
QString socketname = "networkreplytest";
QLocalServer server;
if (!server.listen(socketname)) {
@@ -2276,7 +2324,6 @@ void tst_QNetworkReply::ioPutToFileFromLocalSocket()
QCOMPARE(file.size(), qint64(data.size()));
QByteArray contents = file.readAll();
QCOMPARE(contents, data);
-#endif
}
void tst_QNetworkReply::ioPutToFileFromProcess_data()
@@ -2590,7 +2637,8 @@ void tst_QNetworkReply::downloadProgress()
QVERIFY(spy.isValid());
QCoreApplication::instance()->processEvents();
- server.waitForNewConnection(0); // ignore result, since processEvents may have got it
+ if (!server.hasPendingConnections())
+ server.waitForNewConnection(1000);
QVERIFY(server.hasPendingConnections());
QCOMPARE(spy.count(), 0);
@@ -2644,7 +2692,8 @@ void tst_QNetworkReply::uploadProgress()
QVERIFY(finished.isValid());
QCoreApplication::instance()->processEvents();
- server.waitForNewConnection(0); // ignore result, since processEvents may have got it
+ if (!server.hasPendingConnections())
+ server.waitForNewConnection(1000);
QVERIFY(server.hasPendingConnections());
QTcpSocket *receiver = server.nextPendingConnection();
@@ -2967,5 +3016,55 @@ void tst_QNetworkReply::proxyChange()
QVERIFY(int(reply3->error()) > 0);
}
+void tst_QNetworkReply::authorizationError_data()
+{
+
+ QTest::addColumn<QString>("url");
+ QTest::addColumn<int>("errorSignalCount");
+ QTest::addColumn<int>("finishedSignalCount");
+ QTest::addColumn<int>("error");
+ QTest::addColumn<int>("httpStatusCode");
+ QTest::addColumn<QString>("httpBody");
+
+ QTest::newRow("unknown-authorization-method") << "http://" + QtNetworkSettings::serverName() +
+ "/cgi-bin/http-unknown-authentication-method.cgi?401-authorization-required" << 1 << 1
+ << int(QNetworkReply::AuthenticationRequiredError) << 401 << "authorization required";
+ QTest::newRow("unknown-proxy-authorization-method") << "http://" + QtNetworkSettings::serverName() +
+ "/cgi-bin/http-unknown-authentication-method.cgi?407-proxy-authorization-required" << 1 << 1
+ << int(QNetworkReply::ProxyAuthenticationRequiredError) << 407
+ << "authorization required";
+}
+
+void tst_QNetworkReply::authorizationError()
+{
+ QFETCH(QString, url);
+ QNetworkRequest request(url);
+ QNetworkReplyPtr reply = manager.get(request);
+
+ QCOMPARE(reply->error(), QNetworkReply::NoError);
+
+ qRegisterMetaType<QNetworkReply::NetworkError>("QNetworkReply::NetworkError");
+ QSignalSpy errorSpy(reply, SIGNAL(error(QNetworkReply::NetworkError)));
+ QSignalSpy finishedSpy(reply, SIGNAL(finished()));
+ // now run the request:
+ connect(reply, SIGNAL(finished()),
+ &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QTestEventLoop::instance().enterLoop(10);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+
+ QFETCH(int, errorSignalCount);
+ QCOMPARE(errorSpy.count(), errorSignalCount);
+ QFETCH(int, finishedSignalCount);
+ QCOMPARE(finishedSpy.count(), finishedSignalCount);
+ QFETCH(int, error);
+ QCOMPARE(reply->error(), QNetworkReply::NetworkError(error));
+
+ QFETCH(int, httpStatusCode);
+ QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), httpStatusCode);
+
+ QFETCH(QString, httpBody);
+ QCOMPARE(QString(reply->readAll()), httpBody);
+}
+
QTEST_MAIN(tst_QNetworkReply)
#include "tst_qnetworkreply.moc"
diff --git a/tests/auto/qobject/tst_qobject.cpp b/tests/auto/qobject/tst_qobject.cpp
index 096f1c5..fb46073 100644
--- a/tests/auto/qobject/tst_qobject.cpp
+++ b/tests/auto/qobject/tst_qobject.cpp
@@ -264,13 +264,9 @@ void tst_QObject::disconnect()
QCOMPARE( r1->called(1), FALSE );
r1->reset();
-#if QT_VERSION >= 0x030100
QCOMPARE( ret, TRUE );
-#endif
ret = QObject::disconnect( s, SIGNAL( signal1() ), r1, SLOT( slot1() ) );
-#if QT_VERSION >= 0x030100
QCOMPARE( ret, FALSE );
-#endif
// disconnect all signals from s from all slots from r1
QObject::disconnect( s, 0, r1, 0 );
@@ -702,12 +698,10 @@ void tst_QObject::connectDisconnectNotify()
QCOMPARE( s->org_signal, s->nw_signal );
QCOMPARE( s->org_signal.toLatin1(), QMetaObject::normalizedSignature(a_signal.toLatin1().constData()) );
-#if QT_VERSION > 0x040101
// Reconnect
connect( (SenderObject*)s, a_signal.toLatin1(), (ReceiverObject*)r, a_slot.toLatin1() );
// Test disconnectNotify for a complete disconnect
((SenderObject*)s)->disconnect((ReceiverObject*)r);
-#endif
delete s;
delete r;
diff --git a/tests/auto/qobjectrace/tst_qobjectrace.cpp b/tests/auto/qobjectrace/tst_qobjectrace.cpp
index 0c88f29..fcfd528 100644
--- a/tests/auto/qobjectrace/tst_qobjectrace.cpp
+++ b/tests/auto/qobjectrace/tst_qobjectrace.cpp
@@ -50,6 +50,7 @@ class tst_QObjectRace: public QObject
Q_OBJECT
private slots:
void moveToThreadRace();
+ void destroyRace();
};
class RaceObject : public QObject
@@ -147,5 +148,93 @@ void tst_QObjectRace::moveToThreadRace()
delete object;
}
+
+class MyObject : public QObject
+{ Q_OBJECT
+ public slots:
+ void slot1() { emit signal1(); }
+ void slot2() { emit signal2(); }
+ void slot3() { emit signal3(); }
+ void slot4() { emit signal4(); }
+ void slot5() { emit signal5(); }
+ void slot6() { emit signal6(); }
+ void slot7() { emit signal7(); }
+ signals:
+ void signal1();
+ void signal2();
+ void signal3();
+ void signal4();
+ void signal5();
+ void signal6();
+ void signal7();
+};
+
+
+
+class DestroyThread : public QThread
+{
+ Q_OBJECT
+ QObject **objects;
+ int number;
+
+public:
+ void setObjects(QObject **o, int n)
+ {
+ objects = o;
+ number = n;
+ for(int i = 0; i < number; i++)
+ objects[i]->moveToThread(this);
+ }
+
+ void run() {
+ for(int i = 0; i < number; i++)
+ delete objects[i];
+ }
+};
+
+void tst_QObjectRace::destroyRace()
+{
+ enum { ThreadCount = 10, ObjectCountPerThread = 733,
+ ObjectCount = ThreadCount * ObjectCountPerThread };
+
+ const char *_slots[] = { SLOT(slot1()) , SLOT(slot2()) , SLOT(slot3()),
+ SLOT(slot4()) , SLOT(slot5()) , SLOT(slot6()),
+ SLOT(slot7()) };
+
+ const char *_signals[] = { SIGNAL(signal1()), SIGNAL(signal2()), SIGNAL(signal3()),
+ SIGNAL(signal4()), SIGNAL(signal5()), SIGNAL(signal6()),
+ SIGNAL(signal7()) };
+
+ QObject *objects[ObjectCount];
+ for (int i = 0; i < ObjectCount; ++i)
+ objects[i] = new MyObject;
+
+
+ for (int i = 0; i < ObjectCount * 11; ++i) {
+ connect(objects[(i*13) % ObjectCount], _signals[(2*i)%7],
+ objects[((i+2)*17) % ObjectCount], _slots[(3*i+2)%7] );
+ connect(objects[((i+6)*23) % ObjectCount], _signals[(5*i+4)%7],
+ objects[((i+8)*41) % ObjectCount], _slots[(i+6)%7] );
+ }
+
+ DestroyThread *threads[ThreadCount];
+ for (int i = 0; i < ThreadCount; ++i) {
+ threads[i] = new DestroyThread;
+ threads[i]->setObjects(objects + i*ObjectCountPerThread, ObjectCountPerThread);
+ }
+
+ for (int i = 0; i < ThreadCount; ++i)
+ threads[i]->start();
+
+ QVERIFY(threads[0]->wait(TwoMinutes));
+ // the other threads should finish pretty quickly now
+ for (int i = 1; i < ThreadCount; ++i)
+ QVERIFY(threads[i]->wait(3000));
+
+ for (int i = 0; i < ThreadCount; ++i)
+ delete threads[i];
+}
+
+
QTEST_MAIN(tst_QObjectRace)
#include "tst_qobjectrace.moc"
diff --git a/tests/auto/qpainter/tst_qpainter.cpp b/tests/auto/qpainter/tst_qpainter.cpp
index a4c768d..87f9c13 100644
--- a/tests/auto/qpainter/tst_qpainter.cpp
+++ b/tests/auto/qpainter/tst_qpainter.cpp
@@ -225,6 +225,8 @@ private slots:
void extendedBlendModes();
+ void zeroOpacity();
+
private:
void fillData();
QColor baseColor( int k, int intensity=255 );
@@ -2573,23 +2575,6 @@ void tst_QPainter::setOpacity()
p.fillRect(imageRect, QColor(127, 127, 127));
p.end();
-#if defined(Q_WS_QWS) && (QT_VERSION < 0x040500)
- // embedded has an optimized implementation in 4.4
- if ((dest.format() == QImage::Format_ARGB8555_Premultiplied ||
- dest.format() == QImage::Format_RGB555 ||
- dest.format() == QImage::Format_RGB666 ||
- dest.format() == QImage::Format_RGB888 ||
- dest.format() == QImage::Format_ARGB8565_Premultiplied) &&
- src.format() != QImage::Format_RGB32)
- {
- QColor c1 = expected.pixel(1, 1);
- QColor c2 = dest.pixel(1, 1);
- QVERIFY(qAbs(c1.red() - c2.red()) < 2);
- QVERIFY(qAbs(c1.green() - c2.green()) < 2);
- QVERIFY(qAbs(c1.blue() - c2.blue()) < 2);
- QVERIFY(qAbs(c1.alpha() - c2.alpha()) < 2);
- } else
-#endif
QCOMPARE(dest, expected);
}
@@ -3629,7 +3614,7 @@ void tst_QPainter::drawImage_data()
QString("srcFormat %1, dstFormat %2, odd x: %3, odd width: %4")
.arg(srcFormat).arg(dstFormat).arg(odd_x).arg(odd_width);
- QTest::newRow(description) << (10 + odd_x) << 10 << (20 + odd_width) << 20
+ QTest::newRow(qPrintable(description)) << (10 + odd_x) << 10 << (20 + odd_width) << 20
<< QImage::Format(srcFormat)
<< QImage::Format(dstFormat);
}
@@ -3809,8 +3794,11 @@ void tst_QPainter::imageBlending()
void tst_QPainter::paintOnNullPixmap()
{
+ QPixmap pix(16, 16);
+
QPixmap textPixmap;
QPainter p(&textPixmap);
+ p.drawPixmap(10, 10, pix);
p.end();
QPixmap textPixmap2(16,16);
@@ -4164,5 +4152,21 @@ void tst_QPainter::extendedBlendModes()
QVERIFY(testCompositionMode(191, 191, 96, QPainter::CompositionMode_Exclusion));
}
+void tst_QPainter::zeroOpacity()
+{
+ QImage source(1, 1, QImage::Format_ARGB32_Premultiplied);
+ source.fill(0xffffffff);
+
+ QImage target(1, 1, QImage::Format_RGB32);
+ target.fill(0xff000000);
+
+ QPainter p(&target);
+ p.setOpacity(0.0);
+ p.drawImage(0, 0, source);
+ p.end();
+
+ QCOMPARE(target.pixel(0, 0), 0xff000000);
+}
+
QTEST_MAIN(tst_QPainter)
#include "tst_qpainter.moc"
diff --git a/tests/auto/qpainterpath/tst_qpainterpath.cpp b/tests/auto/qpainterpath/tst_qpainterpath.cpp
index cff84e9..3d77f5e 100644
--- a/tests/auto/qpainterpath/tst_qpainterpath.cpp
+++ b/tests/auto/qpainterpath/tst_qpainterpath.cpp
@@ -84,11 +84,9 @@ private slots:
void testOperatorEquals_fuzzy();
void testOperatorDatastream();
-#if QT_VERSION >= 0x040200
void testArcMoveTo_data();
void testArcMoveTo();
void setElementPositionAt();
-#endif
void testOnPath_data();
void testOnPath();
@@ -819,7 +817,6 @@ void tst_QPainterPath::closing()
}
}
-#if QT_VERSION >= 0x040200
void tst_QPainterPath::testArcMoveTo_data()
{
QTest::addColumn<QRectF>("rect");
@@ -1170,8 +1167,6 @@ void tst_QPainterPath::connectPathDuplicatePoint()
QCOMPARE(c, a);
}
-#endif
-
QTEST_APPLESS_MAIN(tst_QPainterPath)
#include "tst_qpainterpath.moc"
diff --git a/tests/auto/qpicture/tst_qpicture.cpp b/tests/auto/qpicture/tst_qpicture.cpp
index 43559e5..954be23 100644
--- a/tests/auto/qpicture/tst_qpicture.cpp
+++ b/tests/auto/qpicture/tst_qpicture.cpp
@@ -121,12 +121,10 @@ void tst_QPicture::boundingRect()
// default value
QVERIFY( !p1.boundingRect().isValid() );
-#if QT_VERSION >= 0x030100
QRect r1( 20, 30, 5, 15 );
p1.setBoundingRect( r1 );
QCOMPARE( p1.boundingRect(), r1 );
p1.setBoundingRect(QRect());
-#endif
QPainter pt( &p1 );
pt.drawLine( 10, 20, 110, 80 );
diff --git a/tests/auto/qpixmapcache/tst_qpixmapcache.cpp b/tests/auto/qpixmapcache/tst_qpixmapcache.cpp
index c163b52..1f515ff 100644
--- a/tests/auto/qpixmapcache/tst_qpixmapcache.cpp
+++ b/tests/auto/qpixmapcache/tst_qpixmapcache.cpp
@@ -166,6 +166,16 @@ void tst_QPixmapCache::insert()
QVERIFY(estimatedNum - 1 <= num <= estimatedNum + 1);
QPixmap p3;
QPixmapCache::insert("null", p3);
+
+ QPixmap c1(10, 10);
+ c1.fill(Qt::yellow);
+ QPixmapCache::insert("custom", c1);
+ QVERIFY(!c1.isDetached());
+ QPixmap c2(10, 10);
+ c2.fill(Qt::red);
+ QPixmapCache::insert("custom", c2);
+ //We have deleted the old pixmap in the cache for the same key
+ QVERIFY(c1.isDetached());
}
void tst_QPixmapCache::remove()
diff --git a/tests/auto/qprinter/tst_qprinter.cpp b/tests/auto/qprinter/tst_qprinter.cpp
index 0febb87..221e3b0 100644
--- a/tests/auto/qprinter/tst_qprinter.cpp
+++ b/tests/auto/qprinter/tst_qprinter.cpp
@@ -103,6 +103,7 @@ private slots:
void valuePreservation();
void errorReporting();
void testCustomPageSizes();
+ void printDialogCompleter();
private:
};
@@ -121,9 +122,6 @@ void tst_QPrinter::getSetCheck()
obj1.setCollateCopies(false);
QCOMPARE(false, obj1.collateCopies());
obj1.setCollateCopies(true);
-#if !defined(Q_OS_UNIX) && QT_VERSION < 0x040200
- QEXPECT_FAIL("", "Apparently only the Unix (ps) printer supports collate at the moment", Continue);
-#endif
QCOMPARE(true, obj1.collateCopies());
obj1.setColorMode(QPrinter::GrayScale);
@@ -185,9 +183,6 @@ void tst_QPrinter::getSetCheck()
obj1.setFontEmbeddingEnabled(false);
QCOMPARE(false, obj1.fontEmbeddingEnabled());
obj1.setFontEmbeddingEnabled(true);
-#if !defined(Q_OS_UNIX) && QT_VERSION < 0x040200
- QEXPECT_FAIL("", "Apparently only the Unix (ps) printer supports font embedding at the moment", Continue);
-#endif
QCOMPARE(true, obj1.fontEmbeddingEnabled());
// PageSize QPrinter::pageSize()
@@ -255,20 +250,13 @@ void tst_QPrinter::cleanup()
void tst_QPrinter::testPageSetupDialog()
{
-#if QT_VERSION < 0x040102
- QSKIP("QPrinter::OutputFormat doesn't exist in Qt 4.0.x and test crashes on < 4.1.2");
-#else
-
// Make sure this doesn't crash at least
{
QPrinter printer;
QPageSetupDialog dialog(&printer);
}
-#endif
}
-
-
void tst_QPrinter::testPageSize()
{
#if defined (Q_WS_WIN)
@@ -332,10 +320,6 @@ void tst_QPrinter::testPageRectAndPaperRect_data()
void tst_QPrinter::testPageRectAndPaperRect()
{
-#if QT_VERSION <= 0x040100
- QEXPECT_FAIL("", "Fixed in Qt 4.1.1", Continue);
-#endif
-
QFETCH(bool, withPainter);
QFETCH(int, orientation);
QFETCH(int, resolution);
@@ -529,9 +513,6 @@ void tst_QPrinter::testMulitpleSets()
QPrinter::PageSize printerPageSize = QPrinter::PageSize(pageSize);
QPrinter printer(mode);
printer.setFullPage(true);
-#if QT_VERSION < 0x040103
- QEXPECT_FAIL("", "Fixed in Qt 4.1.3", SkipAll);
-#endif
int paperWidth, paperHeight;
//const int Tolerance = 2;
@@ -960,5 +941,23 @@ void tst_QPrinter::testCustomPageSizes()
QCOMPARE(paperSize, customSize);
}
+void tst_QPrinter::printDialogCompleter()
+{
+#if defined(QT_NO_COMPLETER) || defined(QT_NO_FILEDIALOG)
+ QSKIP("QT_NO_COMPLETER || QT_NO_FILEDIALOG: Auto-complete turned off in QPrinterDialog.", QTest::SkipAll);
+#else
+ QPrintDialog dialog;
+ dialog.printer()->setOutputFileName("file.pdf");
+ dialog.setEnabledOptions(QAbstractPrintDialog::PrintToFile);
+ dialog.show();
+
+ QTest::qWait(100);
+
+ QTest::keyClick(&dialog, Qt::Key_Tab);
+ QTest::keyClick(&dialog, 'P');
+ // The test passes if it doesn't crash.
+#endif
+}
+
QTEST_MAIN(tst_QPrinter)
#include "tst_qprinter.moc"
diff --git a/tests/auto/qprocess/tst_qprocess.cpp b/tests/auto/qprocess/tst_qprocess.cpp
index cb2b1bf..801cce8 100644
--- a/tests/auto/qprocess/tst_qprocess.cpp
+++ b/tests/auto/qprocess/tst_qprocess.cpp
@@ -265,11 +265,9 @@ void tst_QProcess::simpleStart()
//-----------------------------------------------------------------------------
void tst_QProcess::startDetached()
{
-#if QT_VERSION >= 0x040200
QProcess proc;
QVERIFY(proc.startDetached("testProcessNormal/testProcessNormal",
QStringList() << "arg1" << "arg2"));
-#endif
QCOMPARE(QProcess::startDetached("nonexistingexe"), false);
}
diff --git a/tests/auto/qpushbutton/tst_qpushbutton.cpp b/tests/auto/qpushbutton/tst_qpushbutton.cpp
index 34dd313..27dec9d 100644
--- a/tests/auto/qpushbutton/tst_qpushbutton.cpp
+++ b/tests/auto/qpushbutton/tst_qpushbutton.cpp
@@ -206,11 +206,7 @@ void tst_QPushButton::setAutoRepeat()
QVERIFY( !testWidget->isCheckable() );
// verify autorepeat is off by default.
-#if QT_VERSION < 0x040000
- QButton tmp( 0 );
-#else
QPushButton tmp( 0 );
-#endif
tmp.setObjectName("tmp");
QVERIFY( !tmp.autoRepeat() );
diff --git a/tests/auto/qreadlocker/tst_qreadlocker.cpp b/tests/auto/qreadlocker/tst_qreadlocker.cpp
index c650ff5..a37f93c 100644
--- a/tests/auto/qreadlocker/tst_qreadlocker.cpp
+++ b/tests/auto/qreadlocker/tst_qreadlocker.cpp
@@ -189,9 +189,6 @@ void tst_QReadLocker::unlockAndRelockTest()
void tst_QReadLocker::lockerStateTest()
{
-#if QT_VERSION < 0x040200
- QSKIP("QReadLocker doesn't keep state in Qt < 4.2", SkipAll);
-#else
class LockerStateThread : public tst_QReadLockerThread
{
public:
@@ -228,7 +225,6 @@ void tst_QReadLocker::lockerStateTest()
delete thread;
thread = 0;
-#endif
}
QTEST_MAIN(tst_QReadLocker)
diff --git a/tests/auto/qrect/tst_qrect.cpp b/tests/auto/qrect/tst_qrect.cpp
index ed605a3..7e8d9c3 100644
--- a/tests/auto/qrect/tst_qrect.cpp
+++ b/tests/auto/qrect/tst_qrect.cpp
@@ -432,14 +432,12 @@ void tst_QRect::normalized_data()
QTest::newRow( "NegativePointQRect" ) << getQRectCase( NegativePointQRect ) << QRect( -10, -10, 5, 5 );
QTest::newRow( "NullQRect" ) << getQRectCase( NullQRect ) << getQRectCase( NullQRect );
QTest::newRow( "EmptyQRect" ) << getQRectCase( EmptyQRect ) << getQRectCase( EmptyQRect );
-#if QT_VERSION > 0x040001
QTest::newRow( "Task80908") << QRect(100, 200, 100, 0) << QRect(100, 200, 100, 0);
// Since "NegativeSizeQRect passes, I expect both of these to pass too.
// This passes, since height() returns -1 before normalization
QTest::newRow( "Task85023") << QRect(QPoint(100,201), QPoint(199,199)) << QRect(QPoint(100,199), QPoint(199,201));
// This, on the other hand height() returns 0 before normalization.
QTest::newRow( "Task85023.1") << QRect(QPoint(100,200), QPoint(199,199)) << QRect(QPoint(100,199), QPoint(199,200));
-#endif
QTest::newRow( "Task188109" ) << QRect(QPoint(263, 113), QPoint(136, 112)) << QRect(QPoint(136, 113), QPoint(263, 112));
}
@@ -1733,14 +1731,12 @@ void tst_QRect::newSetTopLeft_data()
void tst_QRect::newSetTopLeft()
{
-#if QT_VERSION >= 0x030100
QFETCH( QRect, r );
QFETCH( QPoint, topLeft );
QFETCH( QRect, nr );
r.setTopLeft( topLeft );
QCOMPARE( r, nr );
-#endif
}
void tst_QRect::newSetBottomRight_data()
@@ -1961,7 +1957,6 @@ void tst_QRect::newSetBottomRight_data()
void tst_QRect::newSetBottomRight()
{
-#if QT_VERSION >= 0x030100
QFETCH( QRect, r );
QFETCH( QPoint, bottomRight );
QFETCH( QRect, nr );
@@ -1969,7 +1964,6 @@ void tst_QRect::newSetBottomRight()
r.setBottomRight( bottomRight );
QCOMPARE( r, nr );
-#endif
}
void tst_QRect::newSetTopRight_data()
@@ -2190,7 +2184,6 @@ void tst_QRect::newSetTopRight_data()
void tst_QRect::newSetTopRight()
{
-#if QT_VERSION >= 0x030100
QFETCH( QRect, r );
QFETCH( QPoint, topRight );
QFETCH( QRect, nr );
@@ -2198,7 +2191,6 @@ void tst_QRect::newSetTopRight()
r.setTopRight( topRight );
QCOMPARE( r, nr );
-#endif
}
void tst_QRect::newSetBottomLeft_data()
@@ -2419,7 +2411,6 @@ void tst_QRect::newSetBottomLeft_data()
void tst_QRect::newSetBottomLeft()
{
-#if QT_VERSION >= 0x030100
QFETCH( QRect, r );
QFETCH( QPoint, bottomLeft );
QFETCH( QRect, nr );
@@ -2427,7 +2418,6 @@ void tst_QRect::newSetBottomLeft()
r.setBottomLeft( bottomLeft );
QCOMPARE( r, nr );
-#endif
}
void tst_QRect::topLeft_data()
@@ -2787,7 +2777,6 @@ void tst_QRect::newMoveLeft_data()
void tst_QRect::newMoveLeft()
{
-#if QT_VERSION >= 0x030100
QFETCH( QRect, r );
QFETCH( int, left );
QFETCH( QRect, nr );
@@ -2795,7 +2784,6 @@ void tst_QRect::newMoveLeft()
r.moveLeft( left );
QCOMPARE( r, nr );
-#endif
}
void tst_QRect::newMoveTop_data()
@@ -2958,7 +2946,6 @@ void tst_QRect::newMoveTop_data()
void tst_QRect::newMoveTop()
{
-#if QT_VERSION >= 0x030100
QFETCH( QRect, r );
QFETCH( int, top );
QFETCH( QRect, nr );
@@ -2966,7 +2953,6 @@ void tst_QRect::newMoveTop()
r.moveTop( top );
QCOMPARE( r, nr );
-#endif
}
void tst_QRect::newMoveRight_data()
@@ -3114,7 +3100,6 @@ void tst_QRect::newMoveRight_data()
void tst_QRect::newMoveRight()
{
-#if QT_VERSION >= 0x030100
QFETCH( QRect, r );
QFETCH( int, right );
QFETCH( QRect, nr );
@@ -3122,7 +3107,6 @@ void tst_QRect::newMoveRight()
r.moveRight( right );
QCOMPARE( r, nr );
-#endif
}
void tst_QRect::newMoveBottom_data()
@@ -3270,7 +3254,6 @@ void tst_QRect::newMoveBottom_data()
void tst_QRect::newMoveBottom()
{
-#if QT_VERSION >= 0x030100
QFETCH( QRect, r );
QFETCH( int, bottom );
QFETCH( QRect, nr );
@@ -3278,7 +3261,6 @@ void tst_QRect::newMoveBottom()
r.moveBottom( bottom );
QCOMPARE( r, nr );
-#endif
}
void tst_QRect::newMoveTopLeft_data()
@@ -3468,7 +3450,6 @@ void tst_QRect::newMoveTopLeft_data()
void tst_QRect::newMoveTopLeft()
{
-#if QT_VERSION >= 0x030100
QFETCH(QRect,r);
QFETCH(QPoint,topLeft);
QFETCH(QRect,nr);
@@ -3476,7 +3457,6 @@ void tst_QRect::newMoveTopLeft()
r.moveTopLeft(topLeft);
QCOMPARE(r,nr);
-#endif
}
void tst_QRect::newMoveBottomRight_data()
@@ -3666,7 +3646,6 @@ void tst_QRect::newMoveBottomRight_data()
void tst_QRect::newMoveBottomRight()
{
-#if QT_VERSION >= 0x030100
QFETCH(QRect,r);
QFETCH(QPoint,bottomRight);
QFETCH(QRect,nr);
@@ -3674,11 +3653,9 @@ void tst_QRect::newMoveBottomRight()
r.moveBottomRight(bottomRight);
QCOMPARE(r,nr);
-#endif
}
-
void tst_QRect::translate_data()
{
QTest::addColumn<QRect>("r");
@@ -3720,10 +3697,8 @@ void tst_QRect::translate()
}
-
void tst_QRect::moveTop()
{
-#if QT_VERSION >= 0x030100
{
QRect r( 10, 10, 100, 100 );
r.moveTop( 3 );
@@ -3742,12 +3717,10 @@ void tst_QRect::moveTop()
r.moveTop( -22 );
QCOMPARE( r, QRectF(10, -22, 100, 100) );
}
-#endif
}
void tst_QRect::moveBottom()
{
-#if QT_VERSION >= 0x030100
{
QRect r( 10, -22, 100, 100 );
r.moveBottom( 104 );
@@ -3758,12 +3731,10 @@ void tst_QRect::moveBottom()
r.moveBottom( 104 );
QCOMPARE( r, QRectF(10, 4, 100, 100) );
}
-#endif
}
void tst_QRect::moveLeft()
{
-#if QT_VERSION >= 0x030100
{
QRect r( 10, 5, 100, 100 );
r.moveLeft( 11 );
@@ -3774,12 +3745,10 @@ void tst_QRect::moveLeft()
r.moveLeft( 11 );
QCOMPARE( r, QRectF(11, 5, 100, 100) );
}
-#endif
}
void tst_QRect::moveRight()
{
-#if QT_VERSION >= 0x030100
{
QRect r( 11, 5, 100, 100 );
r.moveRight( 106 );
@@ -3790,7 +3759,6 @@ void tst_QRect::moveRight()
r.moveRight( 106 );
QCOMPARE( r, QRectF(6, 5, 100, 100) );
}
-#endif
}
void tst_QRect::moveTopLeft()
@@ -3851,7 +3819,6 @@ void tst_QRect::moveBottomRight()
void tst_QRect::setTopLeft()
{
-#if QT_VERSION >= 0x030100
{
QRect r( 20, 10, 200, 100 );
r.setTopLeft( QPoint(5, 7) );
@@ -3862,12 +3829,10 @@ void tst_QRect::setTopLeft()
r.setTopLeft( QPoint(5, 7) );
QCOMPARE( r, QRectF(5, 7, 215, 103) );
}
-#endif
}
void tst_QRect::setTopRight()
{
-#if QT_VERSION >= 0x030100
{
QRect r( 20, 10, 200, 100 );
r.setTopRight( QPoint(225, 7) );
@@ -3878,12 +3843,10 @@ void tst_QRect::setTopRight()
r.setTopRight( QPoint(225, 7) );
QCOMPARE( r, QRectF(20, 7, 205, 103) );
}
-#endif
}
void tst_QRect::setBottomLeft()
{
-#if QT_VERSION >= 0x030100
{
QRect r( 20, 10, 200, 100 );
r.setBottomLeft( QPoint(5, 117) );
@@ -3894,12 +3857,10 @@ void tst_QRect::setBottomLeft()
r.setBottomLeft( QPoint(5, 117) );
QCOMPARE( r, QRectF(5, 10, 215, 107) );
}
-#endif
}
void tst_QRect::setBottomRight()
{
-#if QT_VERSION >= 0x030100
{
QRect r( 20, 10, 200, 100 );
r.setBottomRight( QPoint(225, 117) );
@@ -3910,7 +3871,6 @@ void tst_QRect::setBottomRight()
r.setBottomRight( QPoint(225, 117) );
QCOMPARE( r, QRectF(20, 10, 205, 107) );
}
-#endif
}
void tst_QRect::operator_amp()
diff --git a/tests/auto/qregexp/tst_qregexp.cpp b/tests/auto/qregexp/tst_qregexp.cpp
index 2968a8e..999166e 100644
--- a/tests/auto/qregexp/tst_qregexp.cpp
+++ b/tests/auto/qregexp/tst_qregexp.cpp
@@ -557,7 +557,6 @@ void tst_QRegExp::setMinimal()
void tst_QRegExp::exactMatch()
{
-#if QT_VERSION >= 0x030100
QRegExp rx_d( "\\d" );
QRegExp rx_s( "\\s" );
QRegExp rx_w( "\\w" );
@@ -570,9 +569,7 @@ void tst_QRegExp::exactMatch()
bool is_d = ( ch.category() == QChar::Number_DecimalDigit );
bool is_s = ch.isSpace();
bool is_w = ( ch.isLetterOrNumber()
-#if QT_VERSION >= 0x040200
|| ch.isMark()
-#endif
|| ch == '_' );
QVERIFY( rx_d.exactMatch(QString(ch)) == is_d );
@@ -582,7 +579,6 @@ void tst_QRegExp::exactMatch()
QVERIFY( rx_S.exactMatch(QString(ch)) != is_s );
QVERIFY( rx_W.exactMatch(QString(ch)) != is_w );
}
-#endif
}
void tst_QRegExp::capturedTexts()
@@ -593,13 +589,11 @@ void tst_QRegExp::capturedTexts()
QCOMPARE(rx1.cap(0), QString("aaa"));
QCOMPARE(rx1.cap(1), QString("aaa"));
-#if QT_VERSION >= 0x040200
QRegExp rx2("a*(a*)", Qt::CaseSensitive, QRegExp::RegExp2);
rx2.exactMatch("aaa");
QCOMPARE(rx2.matchedLength(), 3);
QCOMPARE(rx2.cap(0), QString("aaa"));
QCOMPARE(rx2.cap(1), QString(""));
-#endif
QRegExp rx3("(?:a|aa)(a*)", Qt::CaseSensitive, QRegExp::RegExp);
rx3.exactMatch("aaa");
@@ -607,13 +601,11 @@ void tst_QRegExp::capturedTexts()
QCOMPARE(rx3.cap(0), QString("aaa"));
QCOMPARE(rx3.cap(1), QString("aa"));
-#if QT_VERSION >= 0x040200
QRegExp rx4("(?:a|aa)(a*)", Qt::CaseSensitive, QRegExp::RegExp2);
rx4.exactMatch("aaa");
QCOMPARE(rx4.matchedLength(), 3);
QCOMPARE(rx4.cap(0), QString("aaa"));
QCOMPARE(rx4.cap(1), QString("a"));
-#endif
QRegExp rx5("(a)*(a*)", Qt::CaseSensitive, QRegExp::RegExp);
rx5.exactMatch("aaa");
@@ -622,14 +614,12 @@ void tst_QRegExp::capturedTexts()
QCOMPARE(rx5.cap(1), QString("a"));
QCOMPARE(rx5.cap(2), QString("aa"));
-#if QT_VERSION >= 0x040200
QRegExp rx6("(a)*(a*)", Qt::CaseSensitive, QRegExp::RegExp2);
rx6.exactMatch("aaa");
QCOMPARE(rx6.matchedLength(), 3);
QCOMPARE(rx6.cap(0), QString("aaa"));
QCOMPARE(rx6.cap(1), QString("a"));
QCOMPARE(rx6.cap(2), QString(""));
-#endif
QRegExp rx7("([A-Za-z_])([A-Za-z_0-9]*)");
rx7.setCaseSensitivity(Qt::CaseSensitive);
@@ -689,7 +679,6 @@ void tst_QRegExp::indexIn()
}
}
-#if QT_VERSION >= 0x040200
// same as above, but with RegExp2
{
QRegExp rx( regexpStr, Qt::CaseSensitive, QRegExp::RegExp2 );
@@ -707,7 +696,6 @@ void tst_QRegExp::indexIn()
QCOMPARE( mycaps[i], caps[i] );
}
}
-#endif
}
void tst_QRegExp::lastIndexIn()
@@ -746,7 +734,6 @@ void tst_QRegExp::lastIndexIn()
}
}
-#if QT_VERSION >= 0x040200
{
QRegExp rx( regexpStr, Qt::CaseSensitive, QRegExp::RegExp2 );
QVERIFY( rx.isValid() );
@@ -766,7 +753,6 @@ void tst_QRegExp::lastIndexIn()
}
}
}
-#endif
}
void tst_QRegExp::matchedLength()
@@ -1161,10 +1147,8 @@ void tst_QRegExp::prepareEngineOptimization()
QRegExp rx4("foo", Qt::CaseInsensitive, QRegExp::RegExp);
QVERIFY(rx4.isValid());
-#if QT_VERSION >= 0x040200
QRegExp rx5("foo", Qt::CaseInsensitive, QRegExp::RegExp2);
QVERIFY(rx5.isValid());
-#endif
QRegExp rx6("foo", Qt::CaseInsensitive, QRegExp::FixedString);
QVERIFY(rx6.isValid());
@@ -1175,10 +1159,8 @@ void tst_QRegExp::prepareEngineOptimization()
QRegExp rx8("][", Qt::CaseInsensitive, QRegExp::RegExp);
QVERIFY(!rx8.isValid());
-#if QT_VERSION >= 0x040200
QRegExp rx9("][", Qt::CaseInsensitive, QRegExp::RegExp2);
QVERIFY(!rx9.isValid());
-#endif
QRegExp rx10("][", Qt::CaseInsensitive, QRegExp::Wildcard);
QVERIFY(!rx10.isValid());
diff --git a/tests/auto/qregion/tst_qregion.cpp b/tests/auto/qregion/tst_qregion.cpp
index 8ec4c28..eba07f2 100644
--- a/tests/auto/qregion/tst_qregion.cpp
+++ b/tests/auto/qregion/tst_qregion.cpp
@@ -145,12 +145,7 @@ void tst_QRegion::rects()
{
QRect rect( 10, -20, 30, 40 );
QRegion region( rect );
-#if QT_VERSION < 0x040000
- QCOMPARE( region.rects().count(), (uint)1 );
-#else
QCOMPARE( region.rects().count(), 1 );
-#endif
-
QCOMPARE( region.rects()[0], rect );
}
{
@@ -200,11 +195,7 @@ void tst_QRegion::setRects()
QRegion region;
QRect rect( 10, -20, 30, 40 );
region.setRects( &rect, 1 );
-#if QT_VERSION < 0x040000
- QCOMPARE( region.rects().count(), (uint)1 );
-#else
QCOMPARE( region.rects().count(), 1 );
-#endif
QCOMPARE( region.rects()[0], rect );
}
}
@@ -374,9 +365,7 @@ void tst_QRegion::bitmapRegion()
QVERIFY( region.contains( QPoint( 0, 10 ) ) ); // Mid-left
QVERIFY( region.contains( QPoint( 10, 0 ) ) ); // Mid-top
-#if ( QT_VERSION >= 0x030100 )
QVERIFY( region.contains( QPoint( 19, 10 ) ) ); // Mid-right
-#endif
QVERIFY( region.contains( QPoint( 10, 19 ) ) ); // Mid-bottom
}
}
@@ -627,11 +616,9 @@ void tst_QRegion::operator_minus_data()
QTest::addColumn<QRegion>("subtract");
QTest::addColumn<QRegion>("expected");
-#if !defined(Q_WS_X11) || QT_VERSION >= 0x040300
QTest::newRow("empty 0") << QRegion() << QRegion() << QRegion();
QTest::newRow("empty 1") << QRegion() << QRegion(QRect(10, 10, 10, 10))
<< QRegion();
-#endif
QTest::newRow("empty 2") << QRegion(QRect(10, 10, 10, 10)) << QRegion()
<< QRegion(QRect(10, 10, 10, 10));
diff --git a/tests/auto/qscriptvalueiterator/tst_qscriptvalueiterator.cpp b/tests/auto/qscriptvalueiterator/tst_qscriptvalueiterator.cpp
index 1413b0d..257ec0b 100644
--- a/tests/auto/qscriptvalueiterator/tst_qscriptvalueiterator.cpp
+++ b/tests/auto/qscriptvalueiterator/tst_qscriptvalueiterator.cpp
@@ -68,6 +68,7 @@ private slots:
void iterateString();
void iterateGetterSetter();
void iterateArgumentsObject();
+ void assignObjectToIterator();
void undefinedBehavior();
};
@@ -562,5 +563,37 @@ void tst_QScriptValueIterator::undefinedBehavior()
QVERIFY(it.value().isNumber());
}
+void tst_QScriptValueIterator::assignObjectToIterator()
+{
+ QScriptEngine eng;
+ QScriptValue obj1 = eng.newObject();
+ obj1.setProperty("foo", 123);
+ QScriptValue obj2 = eng.newObject();
+ obj2.setProperty("bar", 456);
+
+ QScriptValueIterator it(obj1);
+ QVERIFY(it.hasNext());
+ it.next();
+ it = obj2;
+ QVERIFY(it.hasNext());
+ it.next();
+ QCOMPARE(it.name(), QString::fromLatin1("bar"));
+
+ it = obj1;
+ QVERIFY(it.hasNext());
+ it.next();
+ QCOMPARE(it.name(), QString::fromLatin1("foo"));
+
+ it = obj2;
+ QVERIFY(it.hasNext());
+ it.next();
+ QCOMPARE(it.name(), QString::fromLatin1("bar"));
+
+ it = obj2;
+ QVERIFY(it.hasNext());
+ it.next();
+ QCOMPARE(it.name(), QString::fromLatin1("bar"));
+}
+
QTEST_MAIN(tst_QScriptValueIterator)
#include "tst_qscriptvalueiterator.moc"
diff --git a/tests/auto/qset/tst_qset.cpp b/tests/auto/qset/tst_qset.cpp
index 7afcd84..5601656 100644
--- a/tests/auto/qset/tst_qset.cpp
+++ b/tests/auto/qset/tst_qset.cpp
@@ -619,9 +619,6 @@ void tst_QSet::stlIterator()
void tst_QSet::stlMutableIterator()
{
-#if QT_VERSION < 0x040200
- QSKIP("Needs Qt >= 4.2", SkipAll);
-#else
QSet<QString> set1;
for (int i = 0; i < 25000; ++i)
set1.insert(QString::number(i));
@@ -679,7 +676,6 @@ void tst_QSet::stlMutableIterator()
#endif
QVERIFY(*i == "foo");
}
-#endif
}
void tst_QSet::javaIterator()
@@ -768,9 +764,6 @@ void tst_QSet::javaIterator()
void tst_QSet::javaMutableIterator()
{
-#if QT_VERSION < 0x040200
- QSKIP("Needs Qt >= 4.2", SkipAll);
-#else
QSet<QString> set1;
for (int k = 0; k < 25000; ++k)
set1.insert(QString::number(k));
@@ -856,7 +849,6 @@ void tst_QSet::javaMutableIterator()
QVERIFY(set2.isEmpty());
QVERIFY(set3.isEmpty());
}
-#endif
}
void tst_QSet::makeSureTheComfortFunctionsCompile()
diff --git a/tests/auto/qsettings/tst_qsettings.cpp b/tests/auto/qsettings/tst_qsettings.cpp
index 9524eb3..c478c63 100644
--- a/tests/auto/qsettings/tst_qsettings.cpp
+++ b/tests/auto/qsettings/tst_qsettings.cpp
@@ -240,7 +240,6 @@ static QString settingsPath(const char *path = "")
return QDir::toNativeSeparators(tempPath + "/tst_QSettings/" + QLatin1String(path));
}
-#if QT_VERSION >= 0x040100
static bool readCustom1File(QIODevice &device, QSettings::SettingsMap &map)
{
QDataStream in(&device);
@@ -297,7 +296,6 @@ static bool writeCustom3File(QIODevice &device, const QSettings::SettingsMap &ma
out << "OK";
return true;
}
-#endif
static void populateWithFormats()
{
@@ -305,15 +303,12 @@ static void populateWithFormats()
QTest::newRow("native") << QSettings::NativeFormat;
QTest::newRow("ini") << QSettings::IniFormat;
-#if QT_VERSION >= 0x040100
QTest::newRow("custom1") << QSettings::CustomFormat1;
QTest::newRow("custom2") << QSettings::CustomFormat2;
-#endif
}
tst_QSettings::tst_QSettings()
{
-#if QT_VERSION >= 0x040100
QSettings::Format custom1 = QSettings::registerFormat("custom1", readCustom1File, writeCustom1File);
QSettings::Format custom2 = QSettings::registerFormat("custom2", readCustom2File, writeCustom2File
#ifndef QT_QSETTINGS_ALWAYS_CASE_SENSITIVE_AND_FORGET_ORIGINAL_KEY_ORDER
@@ -322,7 +317,6 @@ tst_QSettings::tst_QSettings()
);
QVERIFY(custom1 == QSettings::CustomFormat1);
QVERIFY(custom2 == QSettings::CustomFormat2);
-#endif
}
void tst_QSettings::init()
@@ -1138,9 +1132,9 @@ void tst_QSettings::testVariantTypes()
l4 << QVariant(m2) << QVariant(l2) << QVariant(l3);
testVal("key13", l4, QVariantList, List);
- // With Qt 4.2 we store key sequences as strings instead of binary variant blob, for improved
+ // We store key sequences as strings instead of binary variant blob, for improved
// readability in the resulting format.
- if (format >= QSettings::InvalidFormat || QT_VERSION < 0x040200) {
+ if (format >= QSettings::InvalidFormat) {
testVal("keysequence", QKeySequence(Qt::ControlModifier + Qt::Key_F1), QKeySequence, KeySequence);
} else {
testVal("keysequence", QKeySequence(Qt::ControlModifier + Qt::Key_F1), QString, String);
@@ -2637,14 +2631,12 @@ void tst_QSettings::testCaseSensitivity()
case QSettings::IniFormat:
cs = false;
break;
-#if QT_VERSION >= 0x040100
case QSettings::CustomFormat1:
cs = true;
break;
case QSettings::CustomFormat2:
cs = false;
break;
-#endif
default:
;
}
@@ -3543,7 +3535,6 @@ void tst_QSettings::allKeys()
}
}
-#if QT_VERSION >= 0x040100
void tst_QSettings::registerFormat()
{
QSettings settings1(QSettings::IniFormat, QSettings::UserScope, "software.org", "KillerAPP");
@@ -3641,7 +3632,6 @@ void tst_QSettings::setPath()
TEST_PATH(i == 0, "custom2", CustomFormat2, SystemScope, "iota")
}
}
-#endif
void tst_QSettings::setDefaultFormat()
{
diff --git a/tests/auto/qsharedpointer/tst_qsharedpointer.cpp b/tests/auto/qsharedpointer/tst_qsharedpointer.cpp
index 64439fb..a52bb3e 100644
--- a/tests/auto/qsharedpointer/tst_qsharedpointer.cpp
+++ b/tests/auto/qsharedpointer/tst_qsharedpointer.cpp
@@ -57,8 +57,11 @@ private slots:
void downCast();
void upCast();
void differentPointers();
+ void virtualBaseDifferentPointers();
#ifndef QTEST_NO_RTTI
void dynamicCast();
+ void dynamicCastDifferentPointers();
+ void dynamicCastVirtualBase();
void dynamicCastFailure();
#endif
void customDeleter();
@@ -321,6 +324,10 @@ class DiffPtrDerivedData: public Stuffing, public Data
{
};
+class VirtualDerived: virtual public Data
+{
+};
+
void tst_QSharedPointer::downCast()
{
{
@@ -439,7 +446,7 @@ void tst_QSharedPointer::differentPointers()
DiffPtrDerivedData *aData = new DiffPtrDerivedData;
Data *aBase = aData;
Q_ASSERT(aData == aBase);
- Q_ASSERT(quintptr(&aData) != quintptr(&aBase));
+ Q_ASSERT(*reinterpret_cast<quintptr *>(&aData) != *reinterpret_cast<quintptr *>(&aBase));
QSharedPointer<Data> baseptr = QSharedPointer<Data>(aData);
QSharedPointer<DiffPtrDerivedData> ptr = qSharedPointerCast<DiffPtrDerivedData>(baseptr);
@@ -453,7 +460,7 @@ void tst_QSharedPointer::differentPointers()
DiffPtrDerivedData *aData = new DiffPtrDerivedData;
Data *aBase = aData;
Q_ASSERT(aData == aBase);
- Q_ASSERT(quintptr(&aData) != quintptr(&aBase));
+ Q_ASSERT(*reinterpret_cast<quintptr *>(&aData) != *reinterpret_cast<quintptr *>(&aBase));
QSharedPointer<DiffPtrDerivedData> ptr = QSharedPointer<DiffPtrDerivedData>(aData);
QSharedPointer<Data> baseptr = ptr;
@@ -464,23 +471,53 @@ void tst_QSharedPointer::differentPointers()
QVERIFY(baseptr == aData);
QVERIFY(baseptr == aBase);
}
+}
+
+void tst_QSharedPointer::virtualBaseDifferentPointers()
+{
+ {
+ VirtualDerived *aData = new VirtualDerived;
+ Data *aBase = aData;
+ Q_ASSERT(aData == aBase);
+ Q_ASSERT(*reinterpret_cast<quintptr *>(&aData) != *reinterpret_cast<quintptr *>(&aBase));
+
+ QSharedPointer<VirtualDerived> ptr = QSharedPointer<VirtualDerived>(aData);
+ QSharedPointer<Data> baseptr = qSharedPointerCast<Data>(ptr);
+ QVERIFY(ptr == baseptr);
+ QVERIFY(ptr.data() == baseptr.data());
+ QVERIFY(ptr == aBase);
+ QVERIFY(ptr == aData);
+ QVERIFY(baseptr == aData);
+ QVERIFY(baseptr == aBase);
+ }
+
+ {
+ VirtualDerived *aData = new VirtualDerived;
+ Data *aBase = aData;
+ Q_ASSERT(aData == aBase);
+ Q_ASSERT(*reinterpret_cast<quintptr *>(&aData) != *reinterpret_cast<quintptr *>(&aBase));
- // there is no possibility for different pointers in
- // internal reference counting right now
- //
- // to do that, it's necessary to first implement the ability to
- // call (virtual) functions, so that the two differing bases have
- // the same reference counter
+ QSharedPointer<VirtualDerived> ptr = QSharedPointer<VirtualDerived>(aData);
+ QSharedPointer<Data> baseptr = ptr;
+ QVERIFY(ptr == baseptr);
+ QVERIFY(ptr.data() == baseptr.data());
+ QVERIFY(ptr == aBase);
+ QVERIFY(ptr == aData);
+ QVERIFY(baseptr == aData);
+ QVERIFY(baseptr == aBase);
+ }
}
#ifndef QTEST_NO_RTTI
void tst_QSharedPointer::dynamicCast()
{
- QSharedPointer<Data> baseptr = QSharedPointer<Data>(new DerivedData);
+ DerivedData *aData = new DerivedData;
+ QSharedPointer<Data> baseptr = QSharedPointer<Data>(aData);
{
QSharedPointer<DerivedData> derivedptr = qSharedPointerDynamicCast<DerivedData>(baseptr);
QVERIFY(baseptr == derivedptr);
+ QCOMPARE(derivedptr.data(), aData);
QCOMPARE(static_cast<Data *>(derivedptr.data()), baseptr.data());
}
QCOMPARE(int(baseptr.d->weakref), 1);
@@ -490,6 +527,7 @@ void tst_QSharedPointer::dynamicCast()
QWeakPointer<Data> weakptr = baseptr;
QSharedPointer<DerivedData> derivedptr = qSharedPointerDynamicCast<DerivedData>(weakptr);
QVERIFY(baseptr == derivedptr);
+ QCOMPARE(derivedptr.data(), aData);
QCOMPARE(static_cast<Data *>(derivedptr.data()), baseptr.data());
}
QCOMPARE(int(baseptr.d->weakref), 1);
@@ -498,6 +536,87 @@ void tst_QSharedPointer::dynamicCast()
{
QSharedPointer<DerivedData> derivedptr = baseptr.dynamicCast<DerivedData>();
QVERIFY(baseptr == derivedptr);
+ QCOMPARE(derivedptr.data(), aData);
+ QCOMPARE(static_cast<Data *>(derivedptr.data()), baseptr.data());
+ }
+ QCOMPARE(int(baseptr.d->weakref), 1);
+ QCOMPARE(int(baseptr.d->strongref), 1);
+}
+
+void tst_QSharedPointer::dynamicCastDifferentPointers()
+{
+ // DiffPtrDerivedData derives from both Data and Stuffing
+ DiffPtrDerivedData *aData = new DiffPtrDerivedData;
+ QSharedPointer<Data> baseptr = QSharedPointer<Data>(aData);
+
+ {
+ QSharedPointer<DiffPtrDerivedData> derivedptr = qSharedPointerDynamicCast<DiffPtrDerivedData>(baseptr);
+ QVERIFY(baseptr == derivedptr);
+ QCOMPARE(derivedptr.data(), aData);
+ QCOMPARE(static_cast<Data *>(derivedptr.data()), baseptr.data());
+ }
+ QCOMPARE(int(baseptr.d->weakref), 1);
+ QCOMPARE(int(baseptr.d->strongref), 1);
+
+ {
+ QWeakPointer<Data> weakptr = baseptr;
+ QSharedPointer<DiffPtrDerivedData> derivedptr = qSharedPointerDynamicCast<DiffPtrDerivedData>(weakptr);
+ QVERIFY(baseptr == derivedptr);
+ QCOMPARE(derivedptr.data(), aData);
+ QCOMPARE(static_cast<Data *>(derivedptr.data()), baseptr.data());
+ }
+ QCOMPARE(int(baseptr.d->weakref), 1);
+ QCOMPARE(int(baseptr.d->strongref), 1);
+
+ {
+ QSharedPointer<DiffPtrDerivedData> derivedptr = baseptr.dynamicCast<DiffPtrDerivedData>();
+ QVERIFY(baseptr == derivedptr);
+ QCOMPARE(derivedptr.data(), aData);
+ QCOMPARE(static_cast<Data *>(derivedptr.data()), baseptr.data());
+ }
+ QCOMPARE(int(baseptr.d->weakref), 1);
+ QCOMPARE(int(baseptr.d->strongref), 1);
+
+ {
+ Stuffing *nakedptr = dynamic_cast<Stuffing *>(baseptr.data());
+ QVERIFY(nakedptr);
+
+ QSharedPointer<Stuffing> otherbaseptr = qSharedPointerDynamicCast<Stuffing>(baseptr);
+ QVERIFY(!otherbaseptr.isNull());
+ QVERIFY(otherbaseptr == nakedptr);
+ QCOMPARE(otherbaseptr.data(), nakedptr);
+ QCOMPARE(static_cast<DiffPtrDerivedData*>(otherbaseptr.data()), aData);
+ }
+}
+
+void tst_QSharedPointer::dynamicCastVirtualBase()
+{
+ VirtualDerived *aData = new VirtualDerived;
+ QSharedPointer<Data> baseptr = QSharedPointer<Data>(aData);
+
+ {
+ QSharedPointer<VirtualDerived> derivedptr = qSharedPointerDynamicCast<VirtualDerived>(baseptr);
+ QVERIFY(baseptr == derivedptr);
+ QCOMPARE(derivedptr.data(), aData);
+ QCOMPARE(static_cast<Data *>(derivedptr.data()), baseptr.data());
+ }
+ QCOMPARE(int(baseptr.d->weakref), 1);
+ QCOMPARE(int(baseptr.d->strongref), 1);
+
+ {
+ QWeakPointer<Data> weakptr = baseptr;
+ QSharedPointer<VirtualDerived> derivedptr = qSharedPointerDynamicCast<VirtualDerived>(weakptr);
+ QVERIFY(baseptr == derivedptr);
+ QCOMPARE(derivedptr.data(), aData);
+ QCOMPARE(static_cast<Data *>(derivedptr.data()), baseptr.data());
+ }
+ QCOMPARE(int(baseptr.d->weakref), 1);
+ QCOMPARE(int(baseptr.d->strongref), 1);
+
+ {
+ QSharedPointer<VirtualDerived> derivedptr = baseptr.dynamicCast<VirtualDerived>();
+ QVERIFY(baseptr == derivedptr);
+ QCOMPARE(derivedptr.data(), aData);
QCOMPARE(static_cast<Data *>(derivedptr.data()), baseptr.data());
}
QCOMPARE(int(baseptr.d->weakref), 1);
diff --git a/tests/auto/qsidebar/tst_qsidebar.cpp b/tests/auto/qsidebar/tst_qsidebar.cpp
index 7a262e6..1384391 100644
--- a/tests/auto/qsidebar/tst_qsidebar.cpp
+++ b/tests/auto/qsidebar/tst_qsidebar.cpp
@@ -176,6 +176,37 @@ void tst_QSidebar::addUrls()
qsidebar.addUrls(urls, -1);
qsidebar.addUrls(moreUrls, -1);
QCOMPARE(qsidebar.urls()[0], urls[0]);
+
+ QList<QUrl> doubleUrls;
+ //tow exact same paths, we have only one entry
+ doubleUrls << QUrl::fromLocalFile(QDir::home().absolutePath());
+ doubleUrls << QUrl::fromLocalFile(QDir::home().absolutePath());
+ qsidebar.setUrls(emptyUrls);
+ qsidebar.addUrls(doubleUrls, 1);
+ QCOMPARE(qsidebar.urls().size(), 1);
+
+ // Two paths that are effectively pointing to the same location
+ doubleUrls << QUrl::fromLocalFile(QDir::home().absolutePath());
+ doubleUrls << QUrl::fromLocalFile(QDir::home().absolutePath() + "/.");
+ qsidebar.setUrls(emptyUrls);
+ qsidebar.addUrls(doubleUrls, 1);
+ QCOMPARE(qsidebar.urls().size(), 1);
+
+#if defined(Q_OS_WIN)
+ //Windows is case insensitive so no duplicate entries in that case
+ doubleUrls << QUrl::fromLocalFile(QDir::home().absolutePath());
+ doubleUrls << QUrl::fromLocalFile(QDir::home().absolutePath().toUpper());
+ qsidebar.setUrls(emptyUrls);
+ qsidebar.addUrls(doubleUrls, 1);
+ QCOMPARE(qsidebar.urls().size(), 1);
+#else
+ //Two different paths we should have two entries
+ doubleUrls << QUrl::fromLocalFile(QDir::home().absolutePath());
+ doubleUrls << QUrl::fromLocalFile(QDir::home().absolutePath().toUpper());
+ qsidebar.setUrls(emptyUrls);
+ qsidebar.addUrls(doubleUrls, 1);
+ QCOMPARE(qsidebar.urls().size(), 2);
+#endif
}
void tst_QSidebar::goToUrl()
diff --git a/tests/auto/qsizef/tst_qsizef.cpp b/tests/auto/qsizef/tst_qsizef.cpp
index 7668491..c1a827b 100644
--- a/tests/auto/qsizef/tst_qsizef.cpp
+++ b/tests/auto/qsizef/tst_qsizef.cpp
@@ -72,29 +72,6 @@ private slots:
void transpose();
};
-#if QT_VERSION < 0x040100
-namespace QTest
-{
- // Qt < 4.1 didn't do fuzzy comparisons
- template<>
- inline bool compare(QSizeF const &t1, QSizeF const &t2, const char *file, int line)
- {
- char msg[1024];
- msg[0] = '\0';
- bool isOk = true;
- if ((qAbs(t1.width() - t2.width()) > 0.000000000001) || (qAbs(t1.height() - t2.height()) > 0.000000000001)) {
- qt_snprintf(msg, 1024, "Compared values of type QSizeF are not the same (fuzzy compare).\n"
- " Actual : w: %lf h: %lf \n"
- " Expected: w: %lf h: %lf", t1.width(), t1.height(), t2.width(), t2.height());
- isOk = false;
- } else {
- qt_snprintf(msg, 1024, "QCOMPARE('%lf %lf', QSizeF)", t1.width(), t1.height());
- }
- return compare_helper(isOk, msg, file, line);
- }
-}
-#endif
-
tst_QSizeF::tst_QSizeF() {
}
diff --git a/tests/auto/qsocks5socketengine/tst_qsocks5socketengine.cpp b/tests/auto/qsocks5socketengine/tst_qsocks5socketengine.cpp
index 86333e0..f501e78 100644
--- a/tests/auto/qsocks5socketengine/tst_qsocks5socketengine.cpp
+++ b/tests/auto/qsocks5socketengine/tst_qsocks5socketengine.cpp
@@ -145,8 +145,6 @@ private slots:
}
};
-static const char *IMAP_IP = "62.70.27.18";
-
tst_QSocks5SocketEngine::tst_QSocks5SocketEngine()
{
}
@@ -321,12 +319,11 @@ void tst_QSocks5SocketEngine::simpleConnectToIMAP()
socketDevice.setProxy(QNetworkProxy(QNetworkProxy::Socks5Proxy, QtNetworkSettings::serverName(), 1080));
- // Connect to imap.trolltech.com's IP
- QVERIFY(!socketDevice.connectToHost(QHostAddress(IMAP_IP), 143));
+ QVERIFY(!socketDevice.connectToHost(QtNetworkSettings::serverIP(), 143));
QVERIFY(socketDevice.state() == QAbstractSocket::ConnectingState);
QVERIFY(socketDevice.waitForWrite());
QVERIFY(socketDevice.state() == QAbstractSocket::ConnectedState);
- QVERIFY(socketDevice.peerAddress() == QHostAddress(IMAP_IP));
+ QVERIFY(socketDevice.peerAddress() == QtNetworkSettings::serverIP());
// Wait for the greeting
QVERIFY(socketDevice.waitForRead());
@@ -340,7 +337,7 @@ void tst_QSocks5SocketEngine::simpleConnectToIMAP()
// Check that the greeting is what we expect it to be
QCOMPARE(array.constData(),
- "* OK esparsett Cyrus IMAP4 v2.2.8 server ready\r\n");
+ "* OK [CAPABILITY IMAP4 IMAP4rev1 LITERAL+ ID STARTTLS LOGINDISABLED] qt-test-server.qt-test-net Cyrus IMAP4 v2.3.11-Mandriva-RPM-2.3.11-6mdv2008.1 server ready\r\n");
// Write a logout message
QByteArray array2 = "XXXX LOGOUT\r\n";
@@ -589,14 +586,14 @@ void tst_QSocks5SocketEngine::tcpSocketBlockingTest()
QTcpSocket socket;
// Connect
- socket.connectToHost("imap.troll.no", 143);
+ socket.connectToHost(QtNetworkSettings::serverName(), 143);
QVERIFY(socket.waitForConnected());
QCOMPARE(socket.state(), QTcpSocket::ConnectedState);
// Read greeting
QVERIFY(socket.waitForReadyRead(5000));
QString s = socket.readLine();
- QCOMPARE(s.toLatin1().constData(), "* OK esparsett Cyrus IMAP4 v2.2.8 server ready\r\n");
+ QCOMPARE(s.toLatin1().constData(), "* OK [CAPABILITY IMAP4 IMAP4rev1 LITERAL+ ID STARTTLS LOGINDISABLED] qt-test-server.qt-test-net Cyrus IMAP4 v2.3.11-Mandriva-RPM-2.3.11-6mdv2008.1 server ready\r\n");
// Write NOOP
QCOMPARE((int) socket.write("1 NOOP\r\n", 8), 8);
@@ -646,7 +643,7 @@ void tst_QSocks5SocketEngine::tcpSocketNonBlockingTest()
tcpSocketNonBlocking_socket = &socket;
// Connect
- socket.connectToHost("imap.troll.no", 143);
+ socket.connectToHost(QtNetworkSettings::serverName(), 143);
QCOMPARE(socket.state(), QTcpSocket::HostLookupState);
QTestEventLoop::instance().enterLoop(30);
@@ -671,7 +668,7 @@ void tst_QSocks5SocketEngine::tcpSocketNonBlockingTest()
// Read greeting
QVERIFY(!tcpSocketNonBlocking_data.isEmpty());
QCOMPARE(tcpSocketNonBlocking_data.at(0).toLatin1().constData(),
- "* OK esparsett Cyrus IMAP4 v2.2.8 server ready\r\n");
+ "* OK [CAPABILITY IMAP4 IMAP4rev1 LITERAL+ ID STARTTLS LOGINDISABLED] qt-test-server.qt-test-net Cyrus IMAP4 v2.3.11-Mandriva-RPM-2.3.11-6mdv2008.1 server ready\r\n");
tcpSocketNonBlocking_data.clear();
tcpSocketNonBlocking_totalWritten = 0;
@@ -834,15 +831,14 @@ void tst_QSocks5SocketEngine::passwordAuth()
socketDevice.setProxy(QNetworkProxy(QNetworkProxy::Socks5Proxy, QtNetworkSettings::serverName(), 1080, "qsockstest", "password"));
- // Connect to imap.trolltech.com's IP
- QVERIFY(!socketDevice.connectToHost(QHostAddress(IMAP_IP), 143));
+ QVERIFY(!socketDevice.connectToHost(QtNetworkSettings::serverIP(), 143));
QVERIFY(socketDevice.state() == QAbstractSocket::ConnectingState);
QVERIFY(socketDevice.waitForWrite());
- if (!socketDevice.connectToHost(QHostAddress(IMAP_IP), 143)) {
+ if (!socketDevice.connectToHost(QtNetworkSettings::serverIP(), 143)) {
qDebug("%d, %s", socketDevice.error(), socketDevice.errorString().toLatin1().constData());
}
QVERIFY(socketDevice.state() == QAbstractSocket::ConnectedState);
- QVERIFY(socketDevice.peerAddress() == QHostAddress(IMAP_IP));
+ QVERIFY(socketDevice.peerAddress() == QtNetworkSettings::serverIP());
// Wait for the greeting
QVERIFY(socketDevice.waitForRead());
@@ -856,7 +852,7 @@ void tst_QSocks5SocketEngine::passwordAuth()
// Check that the greeting is what we expect it to be
QCOMPARE(array.constData(),
- "* OK esparsett Cyrus IMAP4 v2.2.8 server ready\r\n");
+ "* OK [CAPABILITY IMAP4 IMAP4rev1 LITERAL+ ID STARTTLS LOGINDISABLED] qt-test-server.qt-test-net Cyrus IMAP4 v2.3.11-Mandriva-RPM-2.3.11-6mdv2008.1 server ready\r\n");
// Write a logout message
QByteArray array2 = "XXXX LOGOUT\r\n";
@@ -902,17 +898,16 @@ void tst_QSocks5SocketEngine::passwordAuth2()
socketDevice.setProxy(QNetworkProxy(QNetworkProxy::Socks5Proxy, QtNetworkSettings::serverName(), 1081));
socketDevice.setReceiver(this);
- // Connect to imap.trolltech.com's IP
- QVERIFY(!socketDevice.connectToHost(QHostAddress(IMAP_IP), 143));
+ QVERIFY(!socketDevice.connectToHost(QtNetworkSettings::serverIP(), 143));
QVERIFY(socketDevice.state() == QAbstractSocket::ConnectingState);
while (socketDevice.state() == QAbstractSocket::ConnectingState) {
QVERIFY(socketDevice.waitForWrite());
- socketDevice.connectToHost(QHostAddress(IMAP_IP), 143);
+ socketDevice.connectToHost(QtNetworkSettings::serverIP(), 143);
}
if (socketDevice.state() != QAbstractSocket::ConnectedState)
qDebug("%d, %s", socketDevice.error(), socketDevice.errorString().toLatin1().constData());
QVERIFY(socketDevice.state() == QAbstractSocket::ConnectedState);
- QVERIFY(socketDevice.peerAddress() == QHostAddress(IMAP_IP));
+ QVERIFY(socketDevice.peerAddress() == QtNetworkSettings::serverIP());
// Wait for the greeting
QVERIFY(socketDevice.waitForRead());
@@ -926,7 +921,7 @@ void tst_QSocks5SocketEngine::passwordAuth2()
// Check that the greeting is what we expect it to be
QCOMPARE(array.constData(),
- "* OK esparsett Cyrus IMAP4 v2.2.8 server ready\r\n");
+ "* OK [CAPABILITY IMAP4 IMAP4rev1 LITERAL+ ID STARTTLS LOGINDISABLED] qt-test-server.qt-test-net Cyrus IMAP4 v2.3.11-Mandriva-RPM-2.3.11-6mdv2008.1 server ready\r\n");
// Write a logout message
QByteArray array2 = "XXXX LOGOUT\r\n";
diff --git a/tests/auto/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp b/tests/auto/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp
index 0a48066..bd66fdf 100644
--- a/tests/auto/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp
+++ b/tests/auto/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp
@@ -131,6 +131,9 @@ private slots:
void task247867_insertRowsSort();
void task248868_staticSorting();
void task248868_dynamicSorting();
+ void task250023_fetchMore();
+ void task251296_hiddenChildren();
+ void task252507_mapFromToSource();
protected:
void buildHierarchy(const QStringList &data, QAbstractItemModel *model);
@@ -1507,9 +1510,6 @@ void tst_QSortFilterProxyModel::insertAfterSelect()
QTest::mouseClick(view.viewport(), Qt::LeftButton, Qt::NoModifier, p);
QVERIFY(view.selectionModel()->selectedIndexes().size() > 0);
model.insertRows(5, 1, QModelIndex());
-#if QT_VERSION < 0x040200
- QEXPECT_FAIL("", "Selections are not kept in versions < 4.2", Abort);
-#endif
QVERIFY(view.selectionModel()->selectedIndexes().size() > 0); // Should still have a selection
}
@@ -1531,9 +1531,6 @@ void tst_QSortFilterProxyModel::removeAfterSelect()
QTest::mouseClick(view.viewport(), Qt::LeftButton, Qt::NoModifier, p);
QVERIFY(view.selectionModel()->selectedIndexes().size() > 0);
model.removeRows(5, 1, QModelIndex());
-#if QT_VERSION < 0x040200
- QEXPECT_FAIL("", "Selections are not kept in versions < 4.2", Abort);
-#endif
QVERIFY(view.selectionModel()->selectedIndexes().size() > 0); // Should still have a selection
}
@@ -2590,6 +2587,154 @@ void tst_QSortFilterProxyModel::task248868_dynamicSorting()
}
}
+class QtTestModel: public QAbstractItemModel
+{
+ public:
+ QtTestModel(int _rows, int _cols, QObject *parent = 0): QAbstractItemModel(parent),
+ rows(_rows), cols(_cols), wrongIndex(false) { }
+
+ bool canFetchMore(const QModelIndex &idx) const {
+ return !fetched.contains(idx);
+ }
+
+ void fetchMore(const QModelIndex &idx) {
+ if (fetched.contains(idx))
+ return;
+ beginInsertRows(idx, 0, rows-1);
+ fetched.insert(idx);
+ endInsertRows();
+ }
+
+ bool hasChildren(const QModelIndex & = QModelIndex()) const {
+ return true;
+ }
+
+ int rowCount(const QModelIndex& parent = QModelIndex()) const {
+ return fetched.contains(parent) ? rows : 0;
+ }
+ int columnCount(const QModelIndex& parent = QModelIndex()) const {
+ Q_UNUSED(parent);
+ return cols;
+ }
+
+ QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const
+ {
+ if (row < 0 || column < 0 || column >= cols || row >= rows) {
+ return QModelIndex();
+ }
+ QModelIndex i = createIndex(row, column, int(parent.internalId() + 1));
+ parentHash[i] = parent;
+ return i;
+ }
+
+ QModelIndex parent(const QModelIndex &index) const
+ {
+ if (!parentHash.contains(index))
+ return QModelIndex();
+ return parentHash[index];
+ }
+
+ QVariant data(const QModelIndex &idx, int role) const
+ {
+ if (!idx.isValid())
+ return QVariant();
+
+ if (role == Qt::DisplayRole) {
+ if (idx.row() < 0 || idx.column() < 0 || idx.column() >= cols || idx.row() >= rows) {
+ wrongIndex = true;
+ qWarning("Invalid modelIndex [%d,%d,%p]", idx.row(), idx.column(),
+ idx.internalPointer());
+ }
+ return QString("[%1,%2]").arg(idx.row()).arg(idx.column());
+ }
+ return QVariant();
+ }
+
+ QSet<QModelIndex> fetched;
+ int rows, cols;
+ mutable bool wrongIndex;
+ mutable QMap<QModelIndex,QModelIndex> parentHash;
+};
+
+void tst_QSortFilterProxyModel::task250023_fetchMore()
+{
+ QtTestModel model(10,10);
+ QSortFilterProxyModel proxy;
+ proxy.setSourceModel(&model);
+ QVERIFY(proxy.canFetchMore(QModelIndex()));
+ QVERIFY(proxy.hasChildren());
+ while (proxy.canFetchMore(QModelIndex()))
+ proxy.fetchMore(QModelIndex());
+ QCOMPARE(proxy.rowCount(), 10);
+ QCOMPARE(proxy.columnCount(), 10);
+
+ QModelIndex idx = proxy.index(1,1);
+ QVERIFY(idx.isValid());
+ QVERIFY(proxy.canFetchMore(idx));
+ QVERIFY(proxy.hasChildren(idx));
+ while (proxy.canFetchMore(idx))
+ proxy.fetchMore(idx);
+ QCOMPARE(proxy.rowCount(idx), 10);
+ QCOMPARE(proxy.columnCount(idx), 10);
+}
+
+void tst_QSortFilterProxyModel::task251296_hiddenChildren()
+{
+ QStandardItemModel model;
+ QSortFilterProxyModel proxy;
+ proxy.setSourceModel(&model);
+ proxy.setDynamicSortFilter(true);
+
+ QStandardItem *itemA = new QStandardItem("A VISIBLE");
+ model.appendRow(itemA);
+ QStandardItem *itemB = new QStandardItem("B VISIBLE");
+ itemA->appendRow(itemB);
+ QStandardItem *itemC = new QStandardItem("C");
+ itemA->appendRow(itemC);
+ proxy.setFilterRegExp("VISIBLE");
+
+ QCOMPARE(proxy.rowCount(QModelIndex()) , 1);
+ QPersistentModelIndex indexA = proxy.index(0,0);
+ QCOMPARE(proxy.data(indexA).toString(), QString::fromLatin1("A VISIBLE"));
+
+ QCOMPARE(proxy.rowCount(indexA) , 1);
+ QPersistentModelIndex indexB = proxy.index(0, 0, indexA);
+ QCOMPARE(proxy.data(indexB).toString(), QString::fromLatin1("B VISIBLE"));
+
+ itemA->setText("A");
+ QCOMPARE(proxy.rowCount(QModelIndex()), 0);
+ QVERIFY(!indexA.isValid());
+ QVERIFY(!indexB.isValid());
+
+ itemB->setText("B");
+ itemA->setText("A VISIBLE");
+ itemC->setText("C VISIBLE");
+
+ QCOMPARE(proxy.rowCount(QModelIndex()), 1);
+ indexA = proxy.index(0,0);
+ QCOMPARE(proxy.data(indexA).toString(), QString::fromLatin1("A VISIBLE"));
+
+ QCOMPARE(proxy.rowCount(indexA) , 1);
+ QModelIndex indexC = proxy.index(0, 0, indexA);
+ QCOMPARE(proxy.data(indexC).toString(), QString::fromLatin1("C VISIBLE"));
+}
+
+void tst_QSortFilterProxyModel::task252507_mapFromToSource()
+{
+ QtTestModel source(10,10);
+ source.fetchMore(QModelIndex());
+ QSortFilterProxyModel proxy;
+ proxy.setSourceModel(&source);
+ QCOMPARE(proxy.mapFromSource(source.index(5, 4)), proxy.index(5, 4));
+ QCOMPARE(proxy.mapToSource(proxy.index(3, 2)), source.index(3, 2));
+ QCOMPARE(proxy.mapFromSource(QModelIndex()), QModelIndex());
+ QCOMPARE(proxy.mapToSource(QModelIndex()), QModelIndex());
+
+ QTest::ignoreMessage(QtWarningMsg, "QSortFilterProxyModel: index from wrong model passed to mapToSource ");
+ QCOMPARE(proxy.mapToSource(source.index(2, 3)), QModelIndex());
+ QTest::ignoreMessage(QtWarningMsg, "QSortFilterProxyModel: index from wrong model passed to mapFromSource ");
+ QCOMPARE(proxy.mapFromSource(proxy.index(6, 2)), QModelIndex());
+}
QTEST_MAIN(tst_QSortFilterProxyModel)
#include "tst_qsortfilterproxymodel.moc"
diff --git a/tests/auto/qsplitter/tst_qsplitter.cpp b/tests/auto/qsplitter/tst_qsplitter.cpp
index b463f7f..51bd99f 100644
--- a/tests/auto/qsplitter/tst_qsplitter.cpp
+++ b/tests/auto/qsplitter/tst_qsplitter.cpp
@@ -55,6 +55,7 @@
#include <qtreeview.h>
#include <qlabel.h>
#include <qdebug.h> // for file error messages
+#include "../../shared/util.h"
//TESTED_CLASS=
//TESTED_FILES=
@@ -1341,9 +1342,7 @@ void tst_QSplitter::task187373_addAbstractScrollAreas()
if (addOutsideConstructor)
splitter->addWidget(w);
- qApp->processEvents();
-
- QVERIFY(w->isVisible());
+ QTRY_VERIFY(w->isVisible());
QVERIFY(!w->isHidden());
QVERIFY(w->viewport()->isVisible());
QVERIFY(!w->viewport()->isHidden());
diff --git a/tests/auto/qsqldatabase/tst_databases.h b/tests/auto/qsqldatabase/tst_databases.h
index b529b7e..ef51285 100644
--- a/tests/auto/qsqldatabase/tst_databases.h
+++ b/tests/auto/qsqldatabase/tst_databases.h
@@ -105,10 +105,7 @@ inline static QString qTableName( const QString& prefix, QSqlDriver* driver = 0
inline static bool testWhiteSpaceNames( const QString &name )
{
- return name.startsWith( "QPSQL" )
- || name.startsWith( "QODBC" )
- || name.startsWith( "QSQLITE" )
- || name.startsWith( "QMYSQL" );
+ return name != QLatin1String("QTDS7");
}
inline static QString toHex( const QString& binary )
@@ -203,7 +200,7 @@ public:
{
// addDb( "QOCI8", "//horsehead.nokia.troll.no:1521/pony.troll.no", "scott", "tiger" ); // Oracle 9i on horsehead
// addDb( "QOCI8", "//horsehead.nokia.troll.no:1521/ustest.troll.no", "scott", "tiger", "" ); // Oracle 9i on horsehead
-// addDb( "QOCI8", "ICE", "scott", "tiger", "" ); // Oracle 8 on iceblink
+// addDb( "QOCI8", "//iceblink.nokia.troll.no:1521/ice.troll.no", "scott", "tiger", "" ); // Oracle 8 on iceblink (not currently working)
// addDb( "QOCI", "//silence.nokia.troll.no:1521/testdb", "scott", "tiger" ); // Oracle 10g on silence
// addDb( "QOCI", "//oracle10g-nokia.trolltech.com.au:1521/XE", "scott", "tiger" ); // Oracle 10gexpress on xen
@@ -231,7 +228,7 @@ public:
// addDb( "QPSQL7", "testdb", "testuser", "Ee4Gabf6_", "postgres74-nokia.trolltech.com.au" ); // Version 7.4.19-1.el4_6.1
// addDb( "QPSQL7", "testdb", "testuser", "Ee4Gabf6_", "postgres81-nokia.trolltech.com.au" ); // Version 8.1.11-1.el5_1.1
-// addDb( "QDB2", "testdb", "troll", "trond", "silence" ); // DB2 v9.1 on silence
+// addDb( "QDB2", "testdb", "troll", "trond", "silence.nokia.troll.no" ); // DB2 v9.1 on silence
// yes - interbase really wants the physical path on the host machine.
// addDb( "QIBASE", "/opt/interbase/qttest.gdb", "SYSDBA", "masterkey", "horsehead.nokia.troll.no" );
@@ -240,10 +237,6 @@ public:
// addDb( "QIBASE", "/opt/firebird/databases/testdb.fdb", "testuser", "Ee4Gabf6_", "firebird1-nokia.trolltech.com.au" ); // Firebird 1.5.5
// addDb( "QIBASE", "/opt/firebird/databases/testdb.fdb", "testuser", "Ee4Gabf6_", "firebird2-nokia.trolltech.com.au" ); // Firebird 2.1.1
-// Anders' local Firebird and InterBase test databases
-// addDb("QIBASE", "localhost:c:\\Firebird\\Firebird_2_0\\TESTDB.FDB", "SYSDBA", "masterkey", ""); // FireBird 2.0
-// addDb("QIBASE", "localhost:c:\\Borland\\InterBase\\TESTDB_UTF8.IB", "SYSDBA", "masterkey", ""); // InterBase 2007 Developer
-
// use in-memory database to prevent local files
// addDb("QSQLITE", ":memory:");
addDb( "QSQLITE", QDir::toNativeSeparators(QDir::tempPath()+"/foo.db") );
@@ -251,6 +244,10 @@ public:
// addDb( "QODBC3", "DRIVER={SQL SERVER};SERVER=iceblink.nokia.troll.no\\ICEBLINK", "troll", "trond", "" );
// addDb( "QODBC3", "DRIVER={SQL Native Client};SERVER=silence.nokia.troll.no\\SQLEXPRESS", "troll", "trond", "" );
+// addDb( "QODBC", "DRIVER={MySQL ODBC 3.51 Driver};SERVER=mysql5-nokia.trolltech.com.au;DATABASE=testdb", "testuser", "Ee4Gabf6_", "" );
+// addDb( "QODBC", "DRIVER={FreeTDS};SERVER=horsehead.nokia.troll.no;DATABASE=testdb;PORT=4101;UID=troll;PWD=trondk", "troll", "trondk", "" );
+// addDb( "QODBC", "DRIVER={FreeTDS};SERVER=silence.nokia.troll.no;DATABASE=testdb;PORT=2392;UID=troll;PWD=trond", "troll", "trond", "" );
+
}
void open()
@@ -312,20 +309,28 @@ public:
// drop a table only if it exists to prevent warnings
static void safeDropTables( QSqlDatabase db, const QStringList& tableNames )
{
- int wasDropped = true;
+ bool wasDropped;
QSqlQuery q( db );
QStringList dbtables=db.tables();
- foreach(QString tableName, tableNames)
+ foreach(const QString &tableName, tableNames)
{
-
- if ( dbtables.contains( tableName, Qt::CaseSensitive ) )
- wasDropped = q.exec( "drop table " + db.driver()->escapeIdentifier( tableName, QSqlDriver::TableName ) );
- else if ( dbtables.contains( tableName, Qt::CaseInsensitive ) )
- wasDropped = q.exec( "drop table " + tableName );
+ wasDropped = true;
+ QString table=tableName;
+ if ( db.driver()->isIdentifierEscaped(table, QSqlDriver::TableName))
+ table = db.driver()->stripDelimiters(table, QSqlDriver::TableName);
+
+ foreach(const QString dbtablesName, dbtables) {
+ if(dbtablesName.toUpper() == table.toUpper()) {
+ dbtables.removeAll(dbtablesName);
+ wasDropped = q.exec("drop table " + db.driver()->escapeIdentifier( dbtablesName, QSqlDriver::TableName ));
+ if(!wasDropped)
+ wasDropped = q.exec("drop table " + dbtablesName);
+ }
+ }
if ( !wasDropped )
- qWarning() << "unable to drop table" << tableName << ':' << q.lastError().text();
+ qWarning() << dbToString(db) << "unable to drop table" << tableName << ':' << q.lastError().text() << "tables:" << dbtables;
}
}
@@ -396,12 +401,26 @@ public:
static QByteArray printError( const QSqlError& err )
{
- return QString( "'" + err.driverText() + "' || '" + err.databaseText() + "'" ).toLocal8Bit();
+ QString result;
+ if(err.number() > 0)
+ result += '(' + QString::number(err.number()) + ") ";
+ result += '\'';
+ if(!err.driverText().isEmpty())
+ result += err.driverText() + "' || '";
+ result += err.databaseText() + "'";
+ return result.toLocal8Bit();
}
static QByteArray printError( const QSqlError& err, const QSqlDatabase& db )
{
- return QString( db.driverName() + ": '" + err.driverText() + "' || '" + err.databaseText() + "'" ).toLocal8Bit();
+ QString result(dbToString(db) + ": ");
+ if(err.number() > 0)
+ result += '(' + QString::number(err.number()) + ") ";
+ result += '\'';
+ if(!err.driverText().isEmpty())
+ result += err.driverText() + "' || '";
+ result += err.databaseText() + "'";
+ return result.toLocal8Bit();
}
static bool isSqlServer( QSqlDatabase db )
diff --git a/tests/auto/qsqldatabase/tst_qsqldatabase.cpp b/tests/auto/qsqldatabase/tst_qsqldatabase.cpp
index e10a0ca..4fa3dc4 100644
--- a/tests/auto/qsqldatabase/tst_qsqldatabase.cpp
+++ b/tests/auto/qsqldatabase/tst_qsqldatabase.cpp
@@ -191,6 +191,10 @@ private slots:
void sqlite_bindAndFetchUInt_data() { generic_data("QSQLITE3"); }
void sqlite_bindAndFetchUInt();
+ void sqlStatementUseIsNull_189093_data() { generic_data(); }
+ void sqlStatementUseIsNull_189093();
+
+
private:
void createTestTables(QSqlDatabase db);
void dropTestTables(QSqlDatabase db);
@@ -363,6 +367,7 @@ void tst_QSqlDatabase::populateTestTables(QSqlDatabase db)
QVERIFY_SQL(q, exec("insert into " + qTableName("qtest") + " (id, t_varchar, t_char, t_numeric) values (1, 'VarChar1', 'Char1', 2.2)"));
QVERIFY_SQL(q, exec("insert into " + qTableName("qtest") + " (id, t_varchar, t_char, t_numeric) values (2, 'VarChar2', 'Char2', 3.3)"));
QVERIFY_SQL(q, exec("insert into " + qTableName("qtest") + " (id, t_varchar, t_char, t_numeric) values (3, 'VarChar3', 'Char3', 4.4)"));
+ QVERIFY_SQL(q, exec("insert into " + qTableName("qtest") + " (id, t_varchar, t_char, t_numeric) values (4, 'VarChar4', NULL, NULL)"));
}
void tst_QSqlDatabase::initTestCase()
@@ -512,6 +517,8 @@ void tst_QSqlDatabase::tables()
// MySQL doesn't give back anything when calling QSqlDatabase::tables() with QSql::Views
// May be fixable by doing a select on informational_schema.views instead of using the client library api
QEXPECT_FAIL("", "MySQL driver thinks that views are tables", Continue);
+ if(!tables.contains(qTableName("qtest_view"), Qt::CaseInsensitive))
+ qDebug() << "failed to find" << qTableName("qtest_view") << "in" << tables;
QVERIFY(tables.contains(qTableName("qtest_view"), Qt::CaseInsensitive));
}
if (tempTables)
@@ -1045,6 +1052,7 @@ void tst_QSqlDatabase::recordMySQL()
int minor = tst_Databases::getMySqlVersion( db ).section( QChar('.'), 1, 1 ).toInt();
int revision = tst_Databases::getMySqlVersion( db ).section( QChar('.'), 2, 2 ).toInt();
+#ifdef QT3_SUPPORT
/* The below is broken in mysql below 5.0.15
see http://dev.mysql.com/doc/refman/5.0/en/binary-varbinary.html
specifically: Before MySQL 5.0.15, the pad value is space. Values are right-padded
@@ -1054,6 +1062,7 @@ void tst_QSqlDatabase::recordMySQL()
bin10 = FieldDef("binary(10)", QVariant::ByteArray, QByteArray(Q3CString("123abc ")));
varbin10 = FieldDef("varbinary(10)", QVariant::ByteArray, QByteArray(Q3CString("123abcv ")));
}
+#endif
static QDateTime dt(QDate::currentDate(), QTime(1, 2, 3, 0));
static const FieldDef fieldDefs[] = {
@@ -1873,17 +1882,26 @@ void tst_QSqlDatabase::ibase_procWithReturnValues()
"\nRESULT INTEGER)"
"\nAS"
"\nbegin"
- "\nRESULT = 10;"
+ "\nRESULT = 10 * ABC;"
"\nsuspend;"
"\nend"));
// Interbase procedures can be executed in two ways: EXECUTE PROCEDURE or SELECT
QVERIFY_SQL(q, exec(QString("execute procedure %1(123)").arg(procName)));
QVERIFY_SQL(q, next());
- QCOMPARE(q.value(0).toInt(), 10);
+ QCOMPARE(q.value(0).toInt(), 1230);
QVERIFY_SQL(q, exec(QString("select result from %1(456)").arg(procName)));
QVERIFY_SQL(q, next());
- QCOMPARE(q.value(0).toInt(), 10);
+ QCOMPARE(q.value(0).toInt(), 4560);
+ QVERIFY_SQL(q, prepare(QLatin1String("execute procedure ")+procName+QLatin1String("(?)")));
+ q.bindValue(0, 123);
+ QVERIFY_SQL(q, exec());
+ QVERIFY_SQL(q, next());
+ QCOMPARE(q.value(0).toInt(), 1230);
+ q.bindValue(0, 456);
+ QVERIFY_SQL(q, exec());
+ QVERIFY_SQL(q, next());
+ QCOMPARE(q.value(0).toInt(), 4560);
q.exec(QString("drop procedure %1").arg(procName));
}
@@ -2267,5 +2285,28 @@ void tst_QSqlDatabase::db2_valueCacheUpdate()
QCOMPARE(c1.toString(), q.value(0).toString());
}
+void tst_QSqlDatabase::sqlStatementUseIsNull_189093()
+{
+ // NULL = NULL is unknown, the sqlStatment must use IS NULL
+ QFETCH(QString, dbName);
+ QSqlDatabase db = QSqlDatabase::database(dbName);
+ CHECK_DATABASE(db);
+
+ // select a record with NULL value
+ QSqlQuery q(QString::null, db);
+ QVERIFY_SQL(q, exec("select * from " + qTableName("qtest") + " where id = 4"));
+ QVERIFY_SQL(q, next());
+
+ QSqlDriver *driver = db.driver();
+ QVERIFY(driver);
+
+ QString preparedStatment = driver->sqlStatement(QSqlDriver::WhereStatement, QString("qtest"), q.record(), true);
+ QCOMPARE(preparedStatment.count("IS NULL", Qt::CaseInsensitive), 2);
+
+ QString statment = driver->sqlStatement(QSqlDriver::WhereStatement, QString("qtest"), q.record(), false);
+ QCOMPARE(statment.count("IS NULL", Qt::CaseInsensitive), 2);
+}
+
+
QTEST_MAIN(tst_QSqlDatabase)
#include "tst_qsqldatabase.moc"
diff --git a/tests/auto/qsqldriver/qsqldriver.pro b/tests/auto/qsqldriver/qsqldriver.pro
new file mode 100644
index 0000000..0024841
--- /dev/null
+++ b/tests/auto/qsqldriver/qsqldriver.pro
@@ -0,0 +1,16 @@
+load(qttest_p4)
+SOURCES += tst_qsqldriver.cpp
+
+QT += sql
+
+wince*: {
+ plugFiles.sources = ../../../plugins/sqldrivers
+ plugFiles.path = .
+ DEPLOYMENT += plugFiles
+} else {
+ win32-g++ {
+ LIBS += -lws2_32
+ } else:win32 {
+ LIBS += ws2_32.lib
+ }
+}
diff --git a/tests/auto/qsqldriver/tst_qsqldriver.cpp b/tests/auto/qsqldriver/tst_qsqldriver.cpp
new file mode 100644
index 0000000..bbd7483
--- /dev/null
+++ b/tests/auto/qsqldriver/tst_qsqldriver.cpp
@@ -0,0 +1,218 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (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 either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** 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.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+#include <QtSql/QtSql>
+
+#include "../qsqldatabase/tst_databases.h"
+
+
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+class tst_QSqlDriver : public QObject
+{
+ Q_OBJECT
+
+public:
+ void recreateTestTables(QSqlDatabase);
+
+ tst_Databases dbs;
+
+public slots:
+ void initTestCase_data();
+ void initTestCase();
+ void cleanupTestCase();
+ void init();
+ void cleanup();
+
+private slots:
+ void record();
+ void primaryIndex();
+};
+
+
+void tst_QSqlDriver::initTestCase_data()
+{
+ dbs.open();
+ if (dbs.fillTestTable() == 0) {
+ qWarning("NO DATABASES");
+ QSKIP("No database drivers are available in this Qt configuration", SkipAll);
+ }
+}
+
+void tst_QSqlDriver::recreateTestTables(QSqlDatabase db)
+{
+ QSqlQuery q(db);
+
+ QStringList tableNames;
+ tableNames << qTableName( "relTEST1" );
+ tst_Databases::safeDropTables( db, tableNames );
+
+ QVERIFY_SQL( q, exec("create table " + qTableName("relTEST1") +
+ " (id int not null primary key, name varchar(20), title_key int, another_title_key int)"));
+ QVERIFY_SQL( q, exec("insert into " + qTableName("relTEST1") + " values(1, 'harry', 1, 2)"));
+ QVERIFY_SQL( q, exec("insert into " + qTableName("relTEST1") + " values(2, 'trond', 2, 1)"));
+ QVERIFY_SQL( q, exec("insert into " + qTableName("relTEST1") + " values(3, 'vohi', 1, 2)"));
+ QVERIFY_SQL( q, exec("insert into " + qTableName("relTEST1") + " values(4, 'boris', 2, 2)"));
+}
+
+void tst_QSqlDriver::initTestCase()
+{
+ foreach (const QString &dbname, dbs.dbNames)
+ recreateTestTables(QSqlDatabase::database(dbname));
+}
+
+void tst_QSqlDriver::cleanupTestCase()
+{
+ QStringList tableNames;
+ tableNames << qTableName( "relTEST1" );
+ foreach (const QString &dbName, dbs.dbNames) {
+ QSqlDatabase db = QSqlDatabase::database(dbName);
+ tst_Databases::safeDropTables( db, tableNames );
+ }
+ dbs.close();
+}
+
+void tst_QSqlDriver::init()
+{
+}
+
+void tst_QSqlDriver::cleanup()
+{
+}
+
+void tst_QSqlDriver::record()
+{
+ QFETCH_GLOBAL(QString, dbName);
+ QSqlDatabase db = QSqlDatabase::database(dbName);
+ CHECK_DATABASE(db);
+
+ QString tablename = qTableName("relTEST1");
+ QStringList fields;
+ fields << "id" << "name" << "title_key" << "another_title_key";
+
+ //check we can get records using an unquoted mixed case table name
+ QSqlRecord rec = db.driver()->record(tablename);
+ QCOMPARE(rec.count(), 4);
+
+ if (db.driverName().startsWith("QIBASE")|| db.driverName().startsWith("QOCI") || db.driverName().startsWith("QDB2"))
+ for(int i = 0; i < fields.count(); ++i)
+ fields[i] = fields[i].toUpper();
+
+ for (int i = 0; i < fields.count(); ++i)
+ QCOMPARE(rec.fieldName(i), fields[i]);
+
+ if (db.driverName().startsWith("QIBASE") || db.driverName().startsWith("QOCI") || db.driverName().startsWith("QDB2"))
+ tablename = tablename.toUpper();
+ else if (db.driverName().startsWith("QPSQL"))
+ tablename = tablename.toLower();
+
+ //check we can get records using a properly quoted table name
+ rec = db.driver()->record(db.driver()->escapeIdentifier(tablename,QSqlDriver::TableName));
+ QCOMPARE(rec.count(), 4);
+
+ for (int i = 0; i < fields.count(); ++i)
+ QCOMPARE(rec.fieldName(i), fields[i]);
+
+ if( db.driverName().startsWith("QIBASE") || db.driverName().startsWith("QOCI") || db.driverName().startsWith("QDB2"))
+ tablename = tablename.toLower();
+ else if (db.driverName().startsWith("QPSQL"))
+ tablename = tablename.toUpper();
+
+ //check that we can't get records using incorrect tablename casing that's been quoted
+ rec = db.driver()->record(db.driver()->escapeIdentifier(tablename,QSqlDriver::TableName));
+ if (db.driverName().startsWith("QMYSQL") || db.driverName().startsWith("QSQLITE") || db.driverName().startsWith("QTDS"))
+ QCOMPARE(rec.count(), 4); //mysql, sqlite and tds will match
+ else
+ QCOMPARE(rec.count(), 0);
+
+}
+
+void tst_QSqlDriver::primaryIndex()
+{
+ QFETCH_GLOBAL(QString, dbName);
+ QSqlDatabase db = QSqlDatabase::database(dbName);
+ CHECK_DATABASE(db);
+
+ QString tablename = qTableName("relTEST1");
+ //check that we can get primary index using unquoted mixed case table name
+ QSqlIndex index = db.driver()->primaryIndex(tablename);
+ QCOMPARE(index.count(), 1);
+
+ if( db.driverName().startsWith("QIBASE") || db.driverName().startsWith("QOCI") || db.driverName().startsWith("QDB2"))
+ QCOMPARE(index.fieldName(0), QString::fromLatin1("ID"));
+ else
+ QCOMPARE(index.fieldName(0), QString::fromLatin1("id"));
+
+
+ //check that we can get the primary index using a quoted tablename
+ if( db.driverName().startsWith("QIBASE") || db.driverName().startsWith("QOCI") || db.driverName().startsWith("QDB2"))
+ tablename = tablename.toUpper();
+ else if (db.driverName().startsWith("QPSQL"))
+ tablename = tablename.toLower();
+
+ index = db.driver()->primaryIndex(db.driver()->escapeIdentifier(tablename, QSqlDriver::TableName));
+ QCOMPARE(index.count(), 1);
+ if( db.driverName().startsWith("QIBASE") || db.driverName().startsWith("QOCI") || db.driverName().startsWith("QDB2"))
+ QCOMPARE(index.fieldName(0), QString::fromLatin1("ID"));
+ else
+ QCOMPARE(index.fieldName(0), QString::fromLatin1("id"));
+
+
+
+ //check that we can not get the primary index using a quoted but incorrect table name casing
+ if( db.driverName().startsWith("QIBASE") || db.driverName().startsWith("QOCI") || db.driverName().startsWith("QDB2"))
+ tablename = tablename.toLower();
+ else if (db.driverName().startsWith("QPSQL"))
+ tablename = tablename.toUpper();
+
+ index = db.driver()->primaryIndex(db.driver()->escapeIdentifier(tablename, QSqlDriver::TableName));
+ if (db.driverName().startsWith("QMYSQL") || db.driverName().startsWith("QSQLITE") || db.driverName().startsWith("QTDS"))
+ QCOMPARE(index.count(), 1); //mysql will always find the table name regardless of casing
+ else
+ QCOMPARE(index.count(), 0);
+}
+
+QTEST_MAIN(tst_QSqlDriver)
+#include "tst_qsqldriver.moc"
diff --git a/tests/auto/qsqlquery/tst_qsqlquery.cpp b/tests/auto/qsqlquery/tst_qsqlquery.cpp
index 8d77589..7f97972 100644
--- a/tests/auto/qsqlquery/tst_qsqlquery.cpp
+++ b/tests/auto/qsqlquery/tst_qsqlquery.cpp
@@ -178,6 +178,12 @@ private slots:
void task_217003_data() { generic_data(); }
void task_217003();
#endif
+ void task_250026_data() { generic_data("QODBC"); }
+ void task_250026();
+ void task_205701_data() { generic_data("QMYSQL"); }
+ void task_205701();
+
+
private:
// returns all database connections
@@ -293,6 +299,7 @@ void tst_QSqlQuery::dropTestTables( QSqlDatabase db )
#ifdef NOT_READY_YET
tablenames << qTableName( "Planet" );
#endif
+ tablenames << qTableName( "task_250026" );
tst_Databases::safeDropTables( db, tablenames );
}
@@ -2677,5 +2684,50 @@ void tst_QSqlQuery::task_217003()
}
#endif
+void tst_QSqlQuery::task_250026()
+{
+ QString data258, data1026;
+ QFETCH( QString, dbName );
+ QSqlDatabase db = QSqlDatabase::database( dbName );
+ CHECK_DATABASE( db );
+ QSqlQuery q( db );
+
+ QString tableName = qTableName( "task_250026" );
+
+ if ( !q.exec( "create table " + tableName + " (longfield varchar(1100))" ) ) {
+ qDebug() << "Error" << q.lastError();
+ QSKIP( "Db doesn't support \"1100\" as a size for fields", SkipSingle );
+ }
+
+ data258.fill( 'A', 258 );
+ data1026.fill( 'A', 1026 );
+ QVERIFY_SQL( q, prepare( "insert into " + tableName + "(longfield) VALUES (:longfield)" ) );
+ q.bindValue( "longfield", data258 );
+ QVERIFY_SQL( q, exec() );
+ q.bindValue( "longfield", data1026 );
+ QVERIFY_SQL( q, exec() );
+ QVERIFY_SQL( q, exec( "select * from " + tableName ) );
+ QVERIFY_SQL( q, next() );
+ QCOMPARE( q.value( 0 ).toString().length(), data258.length() );
+ QVERIFY_SQL( q, next() );
+ QCOMPARE( q.value( 0 ).toString().length(), data1026.length() );
+}
+
+void tst_QSqlQuery::task_205701()
+{
+ QSqlDatabase qsdb = QSqlDatabase::addDatabase("QMYSQL", "atest");
+ qsdb.setHostName("test");
+ qsdb.setDatabaseName("test");
+ qsdb.setUserName("test");
+ qsdb.setPassword("test");
+ qsdb.open();
+
+// {
+ QSqlQuery query(qsdb);
+// }
+ QSqlDatabase::removeDatabase("atest");
+}
+
+
QTEST_MAIN( tst_QSqlQuery )
#include "tst_qsqlquery.moc"
diff --git a/tests/auto/qsqlrelationaltablemodel/tst_qsqlrelationaltablemodel.cpp b/tests/auto/qsqlrelationaltablemodel/tst_qsqlrelationaltablemodel.cpp
index 76785c3..bb2cddd 100644
--- a/tests/auto/qsqlrelationaltablemodel/tst_qsqlrelationaltablemodel.cpp
+++ b/tests/auto/qsqlrelationaltablemodel/tst_qsqlrelationaltablemodel.cpp
@@ -82,6 +82,10 @@ private slots:
void insertRecordDuplicateFieldNames();
void invalidData();
void relationModel();
+ void casing();
+ void escapedRelations();
+ void escapedTableName();
+ void whiteSpaceInIdentifiers();
};
@@ -103,7 +107,9 @@ void tst_QSqlRelationalTableModel::recreateTestTables(QSqlDatabase db)
<< qTableName( "reltest2" )
<< qTableName( "reltest3" )
<< qTableName( "reltest4" )
- << qTableName( "reltest5" );
+ << qTableName( "reltest5" )
+ << db.driver()->escapeIdentifier(qTableName( "rel test6" ), QSqlDriver::TableName)
+ << db.driver()->escapeIdentifier(qTableName( "rel test7" ), QSqlDriver::TableName);
tst_Databases::safeDropTables( db, tableNames );
QVERIFY_SQL( q, exec("create table " + qTableName("reltest1") +
@@ -128,6 +134,19 @@ void tst_QSqlRelationalTableModel::recreateTestTables(QSqlDatabase db)
QVERIFY_SQL( q, exec("create table " + qTableName("reltest5") + " (title varchar(20) not null primary key, abbrev varchar(20))"));
QVERIFY_SQL( q, exec("insert into " + qTableName("reltest5") + " values('herr', 'Hr')"));
QVERIFY_SQL( q, exec("insert into " + qTableName("reltest5") + " values('mister', 'Mr')"));
+
+ if (testWhiteSpaceNames(db.driverName())) {
+ QString reltest6 = db.driver()->escapeIdentifier(qTableName("rel test6"), QSqlDriver::TableName);
+ QVERIFY_SQL( q, exec("create table " + reltest6 + " (id int not null primary key, " + db.driver()->escapeIdentifier("city key", QSqlDriver::FieldName) +
+ " int, " + db.driver()->escapeIdentifier("extra field", QSqlDriver::FieldName) + " int)"));
+ QVERIFY_SQL( q, exec("insert into " + reltest6 + " values(1, 1,9)"));
+ QVERIFY_SQL( q, exec("insert into " + reltest6 + " values(2, 2,8)"));
+
+ QString reltest7 = db.driver()->escapeIdentifier(qTableName("rel test7"), QSqlDriver::TableName);
+ QVERIFY_SQL( q, exec("create table " + reltest7 + " (" + db.driver()->escapeIdentifier("city id", QSqlDriver::TableName) + " int not null primary key, " + db.driver()->escapeIdentifier("city name", QSqlDriver::FieldName) + " varchar(20))"));
+ QVERIFY_SQL( q, exec("insert into " + reltest7 + " values(1, 'New York')"));
+ QVERIFY_SQL( q, exec("insert into " + reltest7 + " values(2, 'Washington')"));
+ }
}
void tst_QSqlRelationalTableModel::initTestCase()
@@ -142,10 +161,14 @@ void tst_QSqlRelationalTableModel::cleanupTestCase()
tableNames << qTableName( "reltest1" )
<< qTableName( "reltest2" )
<< qTableName( "reltest3" )
- << qTableName( "reltest4" );
+ << qTableName( "reltest4" )
+ << qTableName( "reltest5" );
foreach (const QString &dbName, dbs.dbNames) {
QSqlDatabase db = QSqlDatabase::database(dbName);
- tst_Databases::safeDropTables( db, tableNames );
+ QStringList tables = tableNames;
+ tables << db.driver()->escapeIdentifier(qTableName( "rel test6" ), QSqlDriver::TableName)
+ << db.driver()->escapeIdentifier(qTableName( "rel test7" ), QSqlDriver::TableName);
+ tst_Databases::safeDropTables( db, tables );
}
dbs.close();
}
@@ -273,7 +296,12 @@ void tst_QSqlRelationalTableModel::setData()
model.setTable(qTableName("reltest1"));
model.setRelation(2, QSqlRelation(qTableName("reltest2"), "tid", "title"));
- model.setRelation(3, QSqlRelation(qTableName("reltest2"), "tid", "title"));
+
+ //sybase doesn't allow tables with the same alias used twice as col names
+ //so don't set up an identical relation when using the tds driver
+ if (!db.driverName().startsWith("QTDS"))
+ model.setRelation(3, QSqlRelation(qTableName("reltest2"), "tid", "title"));
+
model.setEditStrategy(QSqlTableModel::OnManualSubmit);
model.setSort(0, Qt::AscendingOrder);
QVERIFY_SQL(model, select());
@@ -284,7 +312,10 @@ void tst_QSqlRelationalTableModel::setData()
QCOMPARE(model.data(model.index(2, 1)).toString(), QString("vohi2"));
QCOMPARE(model.data(model.index(3, 2)).toString(), QString("herr"));
- QCOMPARE(model.data(model.index(0, 3)).toString(), QString("herr"));
+ if (!db.driverName().startsWith("QTDS"))
+ QCOMPARE(model.data(model.index(0, 3)).toString(), QString("herr"));
+ else
+ QCOMPARE(model.data(model.index(0, 3)).toInt(), 1);
QVERIFY_SQL(model, submitAll());
}
@@ -299,10 +330,15 @@ void tst_QSqlRelationalTableModel::setData()
QCOMPARE(model.data(model.index(0, 3)).toInt(), 1);
model.setRelation(2, QSqlRelation(qTableName("reltest2"), "tid", "title"));
- model.setRelation(3, QSqlRelation(qTableName("reltest2"), "tid", "title"));
+ if (!db.driverName().startsWith("QTDS"))
+ model.setRelation(3, QSqlRelation(qTableName("reltest2"), "tid", "title"));
QVERIFY_SQL(model, select());
QCOMPARE(model.data(model.index(3, 2)).toString(), QString("herr"));
- QCOMPARE(model.data(model.index(0, 3)).toString(), QString("herr"));
+
+ if (!db.driverName().startsWith("QTDS"))
+ QCOMPARE(model.data(model.index(0, 3)).toString(), QString("herr"));
+ else
+ QCOMPARE(model.data(model.index(0, 3)).toInt(), 1);
}
//check setting of data when the relational key is a non-integer type
@@ -336,7 +372,8 @@ void tst_QSqlRelationalTableModel::multipleRelation()
model.setTable(qTableName("reltest1"));
model.setRelation(2, QSqlRelation(qTableName("reltest2"), "tid", "title"));
- model.setRelation(3, QSqlRelation(qTableName("reltest2"), "tid", "title"));
+ model.setRelation(3, QSqlRelation(qTableName("reltest4"), "id", "name"));
+ model.setSort(0, Qt::AscendingOrder);
QVERIFY_SQL(model, select());
QCOMPARE(model.data(model.index(2, 0)).toInt(), 3);
@@ -344,7 +381,7 @@ void tst_QSqlRelationalTableModel::multipleRelation()
QCOMPARE(model.data(model.index(0, 0)).toInt(), 1);
QCOMPARE(model.data(model.index(0, 1)).toString(), QString("harry"));
QCOMPARE(model.data(model.index(0, 2)).toString(), QString("herr"));
- QCOMPARE(model.data(model.index(0, 3)).toString(), QString("mister"));
+ QCOMPARE(model.data(model.index(0, 3)).toString(), QString("Trondheim"));
}
void tst_QSqlRelationalTableModel::insertRecord()
@@ -357,6 +394,7 @@ void tst_QSqlRelationalTableModel::insertRecord()
model.setTable(qTableName("reltest1"));
model.setRelation(2, QSqlRelation(qTableName("reltest2"), "tid", "title"));
+ model.setSort(0, Qt::AscendingOrder);
QVERIFY_SQL(model, select());
QSqlRecord rec;
@@ -398,6 +436,7 @@ void tst_QSqlRelationalTableModel::setRecord()
model.setTable(qTableName("reltest1"));
model.setRelation(2, QSqlRelation(qTableName("reltest2"), "tid", "title"));
+ model.setSort(0, Qt::AscendingOrder);
QVERIFY_SQL(model, select());
QSqlRecord rec;
@@ -450,13 +489,18 @@ void tst_QSqlRelationalTableModel::insertWithStrategies()
model.setTable(qTableName("reltest1"));
model.setRelation(2, QSqlRelation(qTableName("reltest2"), "tid", "title"));
- model.setRelation(3, QSqlRelation(qTableName("reltest2"), "tid", "title"));
+
+ if (!db.driverName().startsWith("QTDS"))
+ model.setRelation(3, QSqlRelation(qTableName("reltest2"), "tid", "title"));
QVERIFY_SQL(model, select());
QCOMPARE(model.data(model.index(0,0)).toInt(), 1);
QCOMPARE(model.data(model.index(0,1)).toString(), QString("harry"));
QCOMPARE(model.data(model.index(0,2)).toString(), QString("herr"));
- QCOMPARE(model.data(model.index(0,3)).toString(), QString("mister"));
+ if (!db.driverName().startsWith("QTDS"))
+ QCOMPARE(model.data(model.index(0,3)).toString(), QString("mister"));
+ else
+ QCOMPARE(model.data(model.index(0,3)).toInt(), 2);
model.insertRows(0, 1);
model.setData(model.index(0, 0), 1011);
@@ -467,12 +511,20 @@ void tst_QSqlRelationalTableModel::insertWithStrategies()
QCOMPARE(model.data(model.index(0,0)).toInt(), 1011);
QCOMPARE(model.data(model.index(0,1)).toString(), QString("test"));
QCOMPARE(model.data(model.index(0,2)).toString(), QString("mister"));
- QCOMPARE(model.data(model.index(0,3)).toString(), QString("herr"));
+ if (!db.driverName().startsWith("QTDS"))
+ QCOMPARE(model.data(model.index(0,3)).toString(), QString("herr"));
+ else
+ QCOMPARE(model.data(model.index(0,3)).toInt(), 1);
QCOMPARE(model.data(model.index(1,0)).toInt(), 1);
QCOMPARE(model.data(model.index(1,1)).toString(), QString("harry"));
QCOMPARE(model.data(model.index(1,2)).toString(), QString("herr"));
- QCOMPARE(model.data(model.index(1,3)).toString(), QString("mister"));
+ if (!db.driverName().startsWith("QTDS"))
+ QCOMPARE(model.data(model.index(1,3)).toString(), QString("mister"));
+ else
+ QCOMPARE(model.data(model.index(1,3)).toInt(), 2);
+
+
QVERIFY_SQL(model, submitAll());
@@ -481,9 +533,16 @@ void tst_QSqlRelationalTableModel::insertWithStrategies()
QCOMPARE(model.data(model.index(0,0)).toInt(), 1);
QCOMPARE(model.data(model.index(0,1)).toString(), QString("harry"));
QCOMPARE(model.data(model.index(0,2)).toString(), QString("herr"));
- QCOMPARE(model.data(model.index(0,3)).toString(), QString("mister"));
- model.setData(model.index(0,3),1);
- QCOMPARE(model.data(model.index(0,3)).toString(), QString("herr"));
+
+ if (!db.driverName().startsWith("QTDS")) {
+ QCOMPARE(model.data(model.index(0,3)).toString(), QString("mister"));
+ model.setData(model.index(0,3),1);
+ QCOMPARE(model.data(model.index(0,3)).toString(), QString("herr"));
+ } else {
+ QCOMPARE(model.data(model.index(0,3)).toInt(), 2);
+ model.setData(model.index(0,3),1);
+ QCOMPARE(model.data(model.index(0,3)).toInt(), 1);
+ }
model.insertRows(0, 2);
model.setData(model.index(0, 0), 1012);
@@ -499,17 +558,27 @@ void tst_QSqlRelationalTableModel::insertWithStrategies()
QCOMPARE(model.data(model.index(0,0)).toInt(),1012);
QCOMPARE(model.data(model.index(0,1)).toString(), QString("george"));
QCOMPARE(model.data(model.index(0,2)).toString(), QString("mister"));
- QCOMPARE(model.data(model.index(0,3)).toString(), QString("mister"));
+ if (!db.driverName().startsWith("QTDS"))
+ QCOMPARE(model.data(model.index(0,3)).toString(), QString("mister"));
+ else
+ QCOMPARE(model.data(model.index(0,3)).toInt(), 2);
+
QCOMPARE(model.data(model.index(1,0)).toInt(),1013);
QCOMPARE(model.data(model.index(1,1)).toString(), QString("kramer"));
QCOMPARE(model.data(model.index(1,2)).toString(), QString("mister"));
- QCOMPARE(model.data(model.index(1,3)).toString(), QString("herr"));
+ if (!db.driverName().startsWith("QTDS"))
+ QCOMPARE(model.data(model.index(1,3)).toString(), QString("herr"));
+ else
+ QCOMPARE(model.data(model.index(1,3)).toInt(), 1);
QCOMPARE(model.data(model.index(2,0)).toInt(), 1);
QCOMPARE(model.data(model.index(2,1)).toString(), QString("harry"));
QCOMPARE(model.data(model.index(2,2)).toString(), QString("herr"));
- QCOMPARE(model.data(model.index(2,3)).toString(), QString("herr"));
+ if (!db.driverName().startsWith("QTDS"))
+ QCOMPARE(model.data(model.index(2,3)).toString(), QString("herr"));
+ else
+ QCOMPARE(model.data(model.index(2,3)).toInt(), 1);
QVERIFY_SQL(model, submitAll());
}
@@ -574,7 +643,8 @@ void tst_QSqlRelationalTableModel::sort()
model.setTable(qTableName("reltest1"));
model.setRelation(2, QSqlRelation(qTableName("reltest2"), "tid", "title"));
- model.setRelation(3, QSqlRelation(qTableName("reltest2"), "tid", "title"));
+ if (!db.driverName().startsWith("QTDS"))
+ model.setRelation(3, QSqlRelation(qTableName("reltest2"), "tid", "title"));
model.setSort(2, Qt::DescendingOrder);
QVERIFY_SQL(model, select());
@@ -589,11 +659,19 @@ void tst_QSqlRelationalTableModel::sort()
model.setSort(3, Qt::AscendingOrder);
QVERIFY_SQL(model, select());
- QCOMPARE(model.rowCount(), 4);
- QCOMPARE(model.data(model.index(0, 3)).toString(), QString("herr"));
- QCOMPARE(model.data(model.index(1, 3)).toString(), QString("mister"));
- QCOMPARE(model.data(model.index(2, 3)).toString(), QString("mister"));
- QCOMPARE(model.data(model.index(3, 3)).toString(), QString("mister"));
+ if (!db.driverName().startsWith("QTDS")) {
+ QCOMPARE(model.rowCount(), 4);
+ QCOMPARE(model.data(model.index(0, 3)).toString(), QString("herr"));
+ QCOMPARE(model.data(model.index(1, 3)).toString(), QString("mister"));
+ QCOMPARE(model.data(model.index(2, 3)).toString(), QString("mister"));
+ QCOMPARE(model.data(model.index(3, 3)).toString(), QString("mister"));
+ } else {
+ QCOMPARE(model.data(model.index(0, 3)).toInt(), 1);
+ QCOMPARE(model.data(model.index(1, 3)).toInt(), 2);
+ QCOMPARE(model.data(model.index(2, 3)).toInt(), 2);
+ QCOMPARE(model.data(model.index(3, 3)).toInt(), 2);
+ }
+
}
static void testRevert(QSqlRelationalTableModel &model)
@@ -663,7 +741,7 @@ void tst_QSqlRelationalTableModel::revert()
model.setTable(qTableName("reltest1"));
model.setRelation(2, QSqlRelation(qTableName("reltest2"), "tid", "title"));
- model.setRelation(3, QSqlRelation(qTableName("reltest2"), "tid", "title"));
+ model.setRelation(3, QSqlRelation(qTableName("reltest4"), "id", "name"));
model.setSort(0, Qt::AscendingOrder);
@@ -689,7 +767,9 @@ void tst_QSqlRelationalTableModel::clearDisplayValuesCache()
model.setTable(qTableName("reltest1"));
model.setRelation(2, QSqlRelation(qTableName("reltest2"), "tid", "title"));
- model.setRelation(3, QSqlRelation(qTableName("reltest2"), "tid", "title"));
+
+ if (!db.driverName().startsWith("QTDS"))
+ model.setRelation(3, QSqlRelation(qTableName("reltest2"), "tid", "title"));
model.setSort(1, Qt::AscendingOrder);
model.setEditStrategy(QSqlTableModel::OnManualSubmit);
@@ -698,7 +778,10 @@ void tst_QSqlRelationalTableModel::clearDisplayValuesCache()
QCOMPARE(model.data(model.index(3, 0)).toInt(), 3);
QCOMPARE(model.data(model.index(3, 1)).toString(), QString("vohi"));
QCOMPARE(model.data(model.index(3, 2)).toString(), QString("herr"));
- QCOMPARE(model.data(model.index(3, 3)).toString(), QString("mister"));
+ if (!db.driverName().startsWith("QTDS"))
+ QCOMPARE(model.data(model.index(3, 3)).toString(), QString("mister"));
+ else
+ QCOMPARE(model.data(model.index(3, 3)).toInt(), 2 );
model.insertRow(model.rowCount());
QVERIFY(model.setData(model.index(4, 0), 5, Qt::EditRole));
@@ -710,11 +793,18 @@ void tst_QSqlRelationalTableModel::clearDisplayValuesCache()
QCOMPARE(model.data(model.index(0, 0)).toInt(), 5);
QCOMPARE(model.data(model.index(0, 1)).toString(), QString("anders"));
QCOMPARE(model.data(model.index(0, 2)).toString(), QString("herr"));
- QCOMPARE(model.data(model.index(0, 3)).toString(), QString("herr"));
+ if (!db.driverName().startsWith("QTDS"))
+ QCOMPARE(model.data(model.index(0, 3)).toString(), QString("herr"));
+ else
+ QCOMPARE(model.data(model.index(0, 3)).toInt(), 1);
+
QCOMPARE(model.data(model.index(4, 0)).toInt(), 3);
QCOMPARE(model.data(model.index(4, 1)).toString(), QString("vohi"));
QCOMPARE(model.data(model.index(4, 2)).toString(), QString("herr"));
- QCOMPARE(model.data(model.index(4, 3)).toString(), QString("mister"));
+ if (!db.driverName().startsWith("QTDS"))
+ QCOMPARE(model.data(model.index(4, 3)).toString(), QString("mister"));
+ else
+ QCOMPARE(model.data(model.index(4, 3)).toInt(), 2);
}
// For task 140782 and 176374: If the main table and the the related tables uses the same
@@ -729,27 +819,38 @@ void tst_QSqlRelationalTableModel::insertRecordDuplicateFieldNames()
QSqlRelationalTableModel model(0, db);
model.setTable(qTableName("reltest3"));
model.setEditStrategy(QSqlTableModel::OnManualSubmit);
+ model.setSort(0, Qt::AscendingOrder);
// Duplication of "name", used in both reltest3 and reltest4.
model.setRelation(2, QSqlRelation(qTableName("reltest4"), "id", "name"));
QVERIFY_SQL(model, select());
- QCOMPARE(model.record(1).value(qTableName("reltest4").append(QLatin1String("_name"))).toString(),
+ if (db.driverName().startsWith("QIBASE") || db.driverName().startsWith("QOCI") || db.driverName().startsWith("QDB2")) {
+ QCOMPARE(model.record(1).value(qTableName("reltest4").append(QLatin1String("_name")).toUpper()).toString(),
+ QString("Trondheim"));
+ } else {
+ QCOMPARE(model.record(1).value(qTableName("reltest4").append(QLatin1String("_name"))).toString(),
QString("Trondheim"));
+ }
QSqlRecord rec = model.record();
rec.setValue(0, 3);
rec.setValue(1, "Berge");
rec.setValue(2, 1); // Must insert the key value
- QCOMPARE(rec.fieldName(0), QLatin1String("id"));
- QCOMPARE(rec.fieldName(1), QLatin1String("name")); // This comes from main table
+ if (db.driverName().startsWith("QIBASE") || db.driverName().startsWith("QOCI") || db.driverName().startsWith("QDB2")) {
+ QCOMPARE(rec.fieldName(0), QLatin1String("ID"));
+ QCOMPARE(rec.fieldName(1), QLatin1String("NAME")); // This comes from main table
+ } else {
+ QCOMPARE(rec.fieldName(0), QLatin1String("id"));
+ QCOMPARE(rec.fieldName(1), QLatin1String("name"));
+ }
// The duplicate field names is aliased because it's comes from the relation's display column.
- if(!db.driverName().startsWith("QIBASE"))
- QCOMPARE(rec.fieldName(2), qTableName("reltest4").append(QLatin1String("_name")));
- else
+ if(db.driverName().startsWith("QIBASE") || db.driverName().startsWith("QOCI") || db.driverName().startsWith("QDB2"))
QCOMPARE(rec.fieldName(2), (qTableName("reltest4").append(QLatin1String("_name"))).toUpper());
+ else
+ QCOMPARE(rec.fieldName(2), qTableName("reltest4").append(QLatin1String("_name")));
QVERIFY(model.insertRecord(-1, rec));
QCOMPARE(model.data(model.index(2, 2)).toString(), QString("Oslo"));
@@ -793,7 +894,7 @@ void tst_QSqlRelationalTableModel::relationModel()
QVERIFY(model.relationModel(3) == NULL);
QVERIFY(model.relationModel(4) == NULL);
- model.setRelation(3, QSqlRelation(qTableName("reltest2"), "tid", "title"));
+ model.setRelation(3, QSqlRelation(qTableName("reltest4"), "id", "name"));
QVERIFY_SQL(model, select());
QVERIFY(model.relationModel(0) == NULL);
@@ -806,5 +907,285 @@ void tst_QSqlRelationalTableModel::relationModel()
QCOMPARE(rel_model->data(rel_model->index(0,1)).toString(), QString("herr"));
}
+void tst_QSqlRelationalTableModel::casing()
+{
+ QFETCH_GLOBAL(QString, dbName);
+ QSqlDatabase db = QSqlDatabase::database(dbName);
+ CHECK_DATABASE(db);
+
+ if (db.driverName().startsWith("QSQLITE"))
+ QSKIP("The casing test for SQLITE is irrelevant since SQLITE is case insensitive", SkipAll);
+
+ QStringList tableNames;
+ tableNames << qTableName("CASETEST1", db.driver()).toUpper();
+ tableNames << qTableName("casetest1", db.driver());
+ tst_Databases::safeDropTables(db, tableNames);
+
+ QSqlQuery q(db);
+ QVERIFY_SQL( q, exec("create table " + qTableName("CASETEST1", db.driver()).toUpper() +
+ " (id int not null primary key, name varchar(20), title_key int, another_title_key int)"));
+ QVERIFY_SQL( q, exec("insert into " + qTableName("CASETEST1", db.driver()).toUpper() + " values(1, 'harry', 1, 2)"));
+ QVERIFY_SQL( q, exec("insert into " + qTableName("CASETEST1", db.driver()).toUpper() + " values(2, 'trond', 2, 1)"));
+ QVERIFY_SQL( q, exec("insert into " + qTableName("CASETEST1", db.driver()).toUpper() + " values(3, 'vohi', 1, 2)"));
+ QVERIFY_SQL( q, exec("insert into " + qTableName("CASETEST1", db.driver()).toUpper() + " values(4, 'boris', 2, 2)"));
+
+ QVERIFY_SQL( q, exec("create table " + qTableName("casetest1", db.driver()) +
+ " (ident int not null primary key, name varchar(20), title_key int)"));
+ QVERIFY_SQL( q, exec("insert into " + qTableName("casetest1", db.driver()) + " values(1, 'jerry', 1)"));
+ QVERIFY_SQL( q, exec("insert into " + qTableName("casetest1", db.driver()) + " values(2, 'george', 2)"));
+ QVERIFY_SQL( q, exec("insert into " + qTableName("casetest1", db.driver()) + " values(4, 'kramer', 2)"));
+
+ if (db.driverName().startsWith("QOCI")) {
+ //try an owner that doesn't exist
+ QSqlRecord rec = db.driver()->record("doug." + qTableName("CASETEST1", db.driver()).toUpper());
+ QCOMPARE( rec.count(), 0);
+
+ //try an owner that does exist
+ rec = db.driver()->record(db.userName() + "." + qTableName("CASETEST1", db.driver()).toUpper());
+ QCOMPARE( rec.count(), 4);
+ }
+ QSqlRecord rec = db.driver()->record(qTableName("CASETEST1", db.driver()).toUpper());
+ QCOMPARE( rec.count(), 4);
+
+ rec = db.driver()->record(qTableName("casetest1", db.driver()));
+ QCOMPARE( rec.count(), 3);
+
+ QSqlTableModel upperCaseModel(0, db);
+ upperCaseModel.setTable(qTableName("CASETEST1", db.driver()).toUpper());
+
+ QCOMPARE(upperCaseModel.tableName(),qTableName("CASETEST1",db.driver()).toUpper());
+
+ QVERIFY_SQL(upperCaseModel, select());
+
+ QCOMPARE(upperCaseModel.rowCount(), 4);
+
+ QSqlTableModel lowerCaseModel(0, db);
+ lowerCaseModel.setTable(qTableName("casetest1", db.driver()));
+ QCOMPARE(lowerCaseModel.tableName(), qTableName("casetest1",db.driver()));
+ QVERIFY_SQL(lowerCaseModel, select());
+
+ QCOMPARE(lowerCaseModel.rowCount(), 3);
+
+ QSqlRelationalTableModel model(0, db);
+ model.setTable(qTableName("CASETEST1", db.driver()).toUpper());
+ model.setRelation(2, QSqlRelation(qTableName("reltest2"), "tid", "title"));
+ QVERIFY_SQL(model, select());
+
+ QCOMPARE(model.data(model.index(0, 0)).toInt(), 1);
+ QCOMPARE(model.data(model.index(0, 1)).toString(), QString("harry"));
+ QCOMPARE(model.data(model.index(0, 2)).toString(), QString("herr"));
+
+ tst_Databases::safeDropTables(db, tableNames);
+}
+
+void tst_QSqlRelationalTableModel::escapedRelations()
+{
+ QFETCH_GLOBAL(QString, dbName);
+ QSqlDatabase db = QSqlDatabase::database(dbName);
+ CHECK_DATABASE(db);
+ recreateTestTables(db);
+
+ QSqlRelationalTableModel model(0, db);
+ model.setTable(qTableName("reltest1"));
+
+ //try with relation table name quoted
+ if (db.driverName().startsWith("QIBASE") || db.driverName().startsWith("QOCI") || db.driverName().startsWith("QDB2")) {
+ model.setRelation(2, QSqlRelation(db.driver()->escapeIdentifier(qTableName("reltest2").toUpper(),QSqlDriver::TableName),
+ "tid",
+ "title"));
+ } else {
+ model.setRelation(2, QSqlRelation(db.driver()->escapeIdentifier(qTableName("reltest2"),QSqlDriver::TableName),
+ "tid",
+ "title"));
+
+ }
+ QVERIFY_SQL(model, select());
+
+ QCOMPARE(model.data(model.index(0, 0)).toInt(), 1);
+ QCOMPARE(model.data(model.index(0, 1)).toString(), QString("harry"));
+ QCOMPARE(model.data(model.index(0, 2)).toString(), QString("herr"));
+
+ //try with index column quoted
+ if (db.driverName().startsWith("QIBASE") || db.driverName().startsWith("QOCI") || db.driverName().startsWith("QDB2")) {
+ model.setRelation(2, QSqlRelation(qTableName("reltest2"),
+ db.driver()->escapeIdentifier("tid", QSqlDriver::FieldName).toUpper(),
+ "title"));
+ } else {
+ model.setRelation(2, QSqlRelation(qTableName("reltest2"),
+ db.driver()->escapeIdentifier("tid", QSqlDriver::FieldName),
+ "title"));
+ }
+ QVERIFY_SQL(model, select());
+
+ QCOMPARE(model.data(model.index(0, 0)).toInt(), 1);
+ QCOMPARE(model.data(model.index(0, 1)).toString(), QString("harry"));
+ QCOMPARE(model.data(model.index(0, 2)).toString(), QString("herr"));
+
+ //try with display column quoted
+
+ if (db.driverName().startsWith("QIBASE") || db.driverName().startsWith("QOCI") || db.driverName().startsWith("QDB2")) {
+
+ model.setRelation(2, QSqlRelation(qTableName("reltest2"),
+ "tid",
+ db.driver()->escapeIdentifier("title", QSqlDriver::FieldName).toUpper()));
+ } else {
+ model.setRelation(2, QSqlRelation(qTableName("reltest2"),
+ "tid",
+ db.driver()->escapeIdentifier("title", QSqlDriver::FieldName)));
+ }
+
+ QVERIFY_SQL(model, select());
+
+ QCOMPARE(model.data(model.index(0, 0)).toInt(), 1);
+ QCOMPARE(model.data(model.index(0, 1)).toString(), QString("harry"));
+ QCOMPARE(model.data(model.index(0, 2)).toString(), QString("herr"));
+
+ //try with tablename and index and display columns quoted in the relation
+
+ if (db.driverName().startsWith("QIBASE") || db.driverName().startsWith("QOCI") || db.driverName().startsWith("QDB2")) {
+ model.setRelation(2, QSqlRelation(qTableName("reltest2"),
+ "tid",
+ db.driver()->escapeIdentifier("title", QSqlDriver::FieldName).toUpper()));
+ } else {
+ model.setRelation(2, QSqlRelation(qTableName("reltest2"),
+ "tid",
+ db.driver()->escapeIdentifier("title", QSqlDriver::FieldName)));
+ }
+ QVERIFY_SQL(model, select());
+
+ QCOMPARE(model.data(model.index(0, 0)).toInt(), 1);
+ QCOMPARE(model.data(model.index(0, 1)).toString(), QString("harry"));
+ QCOMPARE(model.data(model.index(0, 2)).toString(), QString("herr"));
+}
+
+void tst_QSqlRelationalTableModel::escapedTableName()
+{
+ QFETCH_GLOBAL(QString, dbName);
+ QSqlDatabase db = QSqlDatabase::database(dbName);
+ CHECK_DATABASE(db);
+
+ // set the values using OnRowChange Strategy with an escaped tablename
+ {
+ QSqlRelationalTableModel model(0, db);
+
+ if (db.driverName().startsWith("QIBASE") || db.driverName().startsWith("QOCI") || db.driverName().startsWith("QDB2")) {
+ model.setTable(db.driver()->escapeIdentifier(qTableName("reltest1").toUpper(), QSqlDriver::TableName));
+ } else {
+ model.setTable(db.driver()->escapeIdentifier(qTableName("reltest1"), QSqlDriver::TableName));
+ }
+ model.setSort(0, Qt::AscendingOrder);
+ model.setRelation(2, QSqlRelation(qTableName("reltest2"), "tid", "title"));
+ QVERIFY_SQL(model, select());
+
+ QVERIFY(model.setData(model.index(0, 1), QString("harry2")));
+ QVERIFY(model.setData(model.index(0, 2), 2));
+
+ QCOMPARE(model.data(model.index(0, 1)).toString(), QString("harry2"));
+ QCOMPARE(model.data(model.index(0, 2)).toString(), QString("mister"));
+
+ model.submit();
+
+ QVERIFY(model.setData(model.index(3,1), QString("boris2")));
+ QVERIFY(model.setData(model.index(3, 2), 1));
+
+ QCOMPARE(model.data(model.index(3,1)).toString(), QString("boris2"));
+ QCOMPARE(model.data(model.index(3, 2)).toString(), QString("herr"));
+
+ model.submit();
+ }
+ { //verify values
+ QSqlRelationalTableModel model(0, db);
+ model.setTable(qTableName("reltest1"));
+ model.setSort(0, Qt::AscendingOrder);
+ QVERIFY_SQL(model, select());
+
+ QCOMPARE(model.data(model.index(0, 1)).toString(), QString("harry2"));
+ QCOMPARE(model.data(model.index(0, 2)).toInt(), 2);
+ QCOMPARE(model.data(model.index(3, 1)).toString(), QString("boris2"));
+ QCOMPARE(model.data(model.index(3, 2)).toInt(), 1);
+
+ model.setRelation(2, QSqlRelation(qTableName("reltest2"), "tid", "title"));
+ QVERIFY_SQL(model, select());
+ QCOMPARE(model.data(model.index(0, 2)).toString(), QString("mister"));
+ QCOMPARE(model.data(model.index(3,2)).toString(), QString("herr"));
+
+ }
+}
+
+void tst_QSqlRelationalTableModel::whiteSpaceInIdentifiers() {
+
+ QFETCH_GLOBAL(QString, dbName);
+ QSqlDatabase db = QSqlDatabase::database(dbName);
+ CHECK_DATABASE(db);
+
+ if (!testWhiteSpaceNames(db.driverName()))
+ QSKIP("White space test irrelevant for driver", SkipAll);
+ QSqlRelationalTableModel model(0, db);
+ model.setTable(db.driver()->escapeIdentifier(qTableName("rel test6"), QSqlDriver::TableName));
+ model.setSort(0, Qt::DescendingOrder);
+ model.setRelation(1, QSqlRelation(db.driver()->escapeIdentifier(qTableName("rel test7"), QSqlDriver::TableName),
+ db.driver()->escapeIdentifier("city id", QSqlDriver::FieldName),
+ db.driver()->escapeIdentifier("city name", QSqlDriver::FieldName)));
+ QVERIFY_SQL(model, select());
+
+ QCOMPARE(model.data(model.index(0,1)).toString(), QString("Washington"));
+ QCOMPARE(model.data(model.index(1,1)).toString(), QString("New York"));
+
+ QSqlRecord rec;
+ QSqlField f1("id", QVariant::Int);
+ QSqlField f2(db.driver()->escapeIdentifier("city key", QSqlDriver::FieldName), QVariant::Int);
+ QSqlField f3(db.driver()->escapeIdentifier("extra field", QSqlDriver::FieldName), QVariant::Int);
+
+ f1.setValue(3);
+ f2.setValue(2);
+ f3.setValue(7);
+
+ f1.setGenerated(true);
+ f2.setGenerated(true);
+ f3.setGenerated(true);
+
+ rec.append(f1);
+ rec.append(f2);
+ rec.append(f3);
+
+ QVERIFY_SQL(model, insertRecord(-1, rec));
+ model.submitAll();
+
+ QCOMPARE(model.data(model.index(0, 0)).toInt(), 3);
+ QCOMPARE(model.data(model.index(0, 1)).toString(), QString("Washington"));
+ QCOMPARE(model.data(model.index(0, 2)).toInt(), 7);
+
+ //TODO: For some reson setting a record using manual submit fails
+ //model.setEditStrategy(QSqlTableModel::OnManualSubmit);
+
+ QSqlRecord recNew;
+ QSqlField f1New("id", QVariant::Int);
+ QSqlField f2New(db.driver()->escapeIdentifier("city key", QSqlDriver::FieldName), QVariant::Int);
+ QSqlField f3New(db.driver()->escapeIdentifier("extra field", QSqlDriver::FieldName), QVariant::Int);
+
+ f1New.setValue(4);
+ f2New.setValue(1);
+ f3New.setValue(6);
+
+ f1New.setGenerated(true);
+ f2New.setGenerated(true);
+ f3New.setGenerated(true);
+
+ recNew.append(f1New);
+ recNew.append(f2New);
+ recNew.append(f3New);
+
+ QVERIFY_SQL(model, setRecord(0, recNew));
+
+ QCOMPARE(model.data(model.index(0, 0)).toInt(), 4);
+ QCOMPARE(model.data(model.index(0, 1)).toString(), QString("New York"));
+ QCOMPARE(model.data(model.index(0, 2)).toInt(), 6);
+
+ QVERIFY_SQL(model, submitAll());
+ QCOMPARE(model.data(model.index(0, 0)).toInt(), 4);
+ QCOMPARE(model.data(model.index(0, 1)).toString(), QString("New York"));
+ QCOMPARE(model.data(model.index(0, 2)).toInt(), 6);
+}
+
QTEST_MAIN(tst_QSqlRelationalTableModel)
#include "tst_qsqlrelationaltablemodel.moc"
diff --git a/tests/auto/qsqltablemodel/tst_qsqltablemodel.cpp b/tests/auto/qsqltablemodel/tst_qsqltablemodel.cpp
index d4affe4..0e7355e 100644
--- a/tests/auto/qsqltablemodel/tst_qsqltablemodel.cpp
+++ b/tests/auto/qsqltablemodel/tst_qsqltablemodel.cpp
@@ -145,7 +145,7 @@ void tst_QSqlTableModel::dropTestTables()
<< qTableName("bigtable")
<< qTableName("foo");
if (testWhiteSpaceNames(db.driverName()))
- tableNames << qTableName("qtestw hitespace");
+ tableNames << qTableName("qtestw hitespace", db.driver());
tst_Databases::safeDropTables(db, tableNames);
@@ -277,6 +277,7 @@ void tst_QSqlTableModel::setRecord()
QList<QSqlTableModel::EditStrategy> policies = QList<QSqlTableModel::EditStrategy>() << QSqlTableModel::OnFieldChange << QSqlTableModel::OnRowChange << QSqlTableModel::OnManualSubmit;
+ QString Xsuffix;
foreach( QSqlTableModel::EditStrategy submitpolicy, policies) {
QSqlTableModel model(0, db);
@@ -295,6 +296,8 @@ void tst_QSqlTableModel::setRecord()
if ((QSqlTableModel::EditStrategy)submitpolicy == QSqlTableModel::OnManualSubmit)
QVERIFY(model.submitAll());
+ else if ((QSqlTableModel::EditStrategy)submitpolicy == QSqlTableModel::OnRowChange && i == model.rowCount() -1)
+ model.submit();
else {
// dataChanged() is not emitted when submitAll() is called
QCOMPARE(spy.count(), 2);
@@ -304,10 +307,12 @@ void tst_QSqlTableModel::setRecord()
}
}
- QCOMPARE(model.data(model.index(0, 1)).toString(), QString("fooX"));
- QCOMPARE(model.data(model.index(0, 2)).toString(), QString("barX"));
- QCOMPARE(model.data(model.index(1, 1)).toString(), QString("bazX"));
- QCOMPARE(model.data(model.index(1, 2)).toString(), QString("joeX"));
+ Xsuffix.append('X');
+
+ QCOMPARE(model.data(model.index(0, 1)).toString(), QString("foo").append(Xsuffix));
+ QCOMPARE(model.data(model.index(0, 2)).toString(), QString("bar").append(Xsuffix));
+ QCOMPARE(model.data(model.index(1, 1)).toString(), QString("baz").append(Xsuffix));
+ QCOMPARE(model.data(model.index(1, 2)).toString(), QString("joe").append(Xsuffix));
}
}
diff --git a/tests/auto/qsqlthread/tst_qsqlthread.cpp b/tests/auto/qsqlthread/tst_qsqlthread.cpp
index d871be4..8b8fc65 100644
--- a/tests/auto/qsqlthread/tst_qsqlthread.cpp
+++ b/tests/auto/qsqlthread/tst_qsqlthread.cpp
@@ -70,7 +70,7 @@ public:
void recreateTestTables();
void repopulateTestTables();
- void generic_data();
+ void generic_data(const QString &engine=QString());
tst_Databases dbs;
public slots:
diff --git a/tests/auto/qsslsocket/tst_qsslsocket.cpp b/tests/auto/qsslsocket/tst_qsslsocket.cpp
index 4f98624..5c99164 100644
--- a/tests/auto/qsslsocket/tst_qsslsocket.cpp
+++ b/tests/auto/qsslsocket/tst_qsslsocket.cpp
@@ -415,7 +415,7 @@ void tst_QSslSocket::simpleConnect()
connect(&socket, SIGNAL(sslErrors(const QList<QSslError> &)), this, SLOT(exitLoop()));
// Start connecting
- socket.connectToHost("imap.troll.no", 993);
+ socket.connectToHost(QtNetworkSettings::serverName(), 993);
QCOMPARE(socket.state(), QAbstractSocket::HostLookupState);
enterLoop(10);
@@ -470,7 +470,7 @@ void tst_QSslSocket::simpleConnectWithIgnore()
connect(&socket, SIGNAL(sslErrors(const QList<QSslError> &)), this, SLOT(exitLoop()));
// Start connecting
- socket.connectToHost("imap.troll.no", 993);
+ socket.connectToHost(QtNetworkSettings::serverName(), 993);
QCOMPARE(socket.state(), QAbstractSocket::HostLookupState);
enterLoop(10);
@@ -489,7 +489,7 @@ void tst_QSslSocket::simpleConnectWithIgnore()
if (!socket.canReadLine())
enterLoop(10);
- QCOMPARE(socket.readAll(), QByteArray("* OK esparsett Cyrus IMAP4 v2.2.8 server ready\r\n"));
+ QCOMPARE(socket.readAll(), QByteArray("* OK [CAPABILITY IMAP4 IMAP4rev1 LITERAL+ ID AUTH=PLAIN SASL-IR] qt-test-server.qt-test-net Cyrus IMAP4 v2.3.11-Mandriva-RPM-2.3.11-6mdv2008.1 server ready\r\n"));
socket.disconnectFromHost();
}
@@ -498,36 +498,39 @@ void tst_QSslSocket::sslErrors_data()
{
QTest::addColumn<QString>("host");
QTest::addColumn<int>("port");
- QTest::addColumn<SslErrorList>("errors");
-
- QTest::newRow("imap.troll.no") << "imap.troll.no" << 993
- << (SslErrorList()
- << QSslError::HostNameMismatch
- << QSslError::SelfSignedCertificateInChain);
- QTest::newRow("imap.trolltech.com") << "imap.trolltech.com" << 993
- << (SslErrorList()
- << QSslError::SelfSignedCertificateInChain);
+ QTest::addColumn<SslErrorList>("expected");
+
+ QTest::newRow(qPrintable(QtNetworkSettings::serverLocalName()))
+ << QtNetworkSettings::serverLocalName()
+ << 993
+ << (SslErrorList() << QSslError::HostNameMismatch
+ << QSslError::SelfSignedCertificate);
+
+ QTest::newRow("imap.trolltech.com")
+ << "imap.trolltech.com"
+ << 993
+ << (SslErrorList() << QSslError::SelfSignedCertificateInChain);
}
void tst_QSslSocket::sslErrors()
{
QFETCH(QString, host);
QFETCH(int, port);
- QFETCH(SslErrorList, errors);
+ QFETCH(SslErrorList, expected);
QSslSocketPtr socket = newSocket();
socket->connectToHostEncrypted(host, port);
socket->waitForEncrypted(5000);
- SslErrorList list;
+ SslErrorList output;
foreach (QSslError error, socket->sslErrors())
- list << error.error();
+ output << error.error();
#ifdef QSSLSOCKET_CERTUNTRUSTED_WORKAROUND
- if (list.last() == QSslError::CertificateUntrusted)
- list.takeLast();
+ if (output.last() == QSslError::CertificateUntrusted)
+ output.takeLast();
#endif
- QCOMPARE(list, errors);
+ QCOMPARE(output, expected);
}
void tst_QSslSocket::addCaCertificate()
diff --git a/tests/auto/qstandarditemmodel/tst_qstandarditemmodel.cpp b/tests/auto/qstandarditemmodel/tst_qstandarditemmodel.cpp
index a3322ab..84bda92 100644
--- a/tests/auto/qstandarditemmodel/tst_qstandarditemmodel.cpp
+++ b/tests/auto/qstandarditemmodel/tst_qstandarditemmodel.cpp
@@ -115,7 +115,6 @@ private slots:
void checkChildren();
void data();
void clear();
-#if QT_VERSION >= 0x040200
void sort_data();
void sort();
void sortRole_data();
@@ -133,10 +132,9 @@ private slots:
void useCase1();
void useCase2();
void useCase3();
-#endif
void rootItemFlags();
- void treeDragAndDrop();
+ void treeDragAndDrop();
private:
QAbstractItemModel *m_model;
@@ -144,7 +142,7 @@ private:
QVector<QModelIndex> rcParent;
QVector<int> rcFirst;
QVector<int> rcLast;
-
+
//return true if models have the same structure, and all child have the same text
bool compareModels(QStandardItemModel *model1, QStandardItemModel *model2);
//return true if models have the same structure, and all child have the same text
@@ -154,9 +152,7 @@ private:
static const int defaultSize = 3;
Q_DECLARE_METATYPE(QModelIndex)
-#if QT_VERSION >= 0x040200
Q_DECLARE_METATYPE(QStandardItem*)
-#endif
Q_DECLARE_METATYPE(Qt::Orientation)
Q_DECLARE_METATYPE(QVariantList)
@@ -181,9 +177,7 @@ tst_QStandardItemModel::~tst_QStandardItemModel()
void tst_QStandardItemModel::init()
{
qRegisterMetaType<QModelIndex>("QModelIndex");
-#if QT_VERSION >= 0x040200
qRegisterMetaType<QStandardItem*>("QStandardItem*");
-#endif
qRegisterMetaType<Qt::Orientation>("Qt::Orientation");
m_model = new QStandardItemModel(defaultSize, defaultSize);
@@ -768,7 +762,6 @@ void tst_QStandardItemModel::clear()
QCOMPARE(model.hasChildren(), false);
}
-#if QT_VERSION >= 0x040200
void tst_QStandardItemModel::sort_data()
{
QTest::addColumn<int>("sortOrder");
@@ -1383,8 +1376,6 @@ void tst_QStandardItemModel::useCase3()
delete childItem;
}
-#endif // QT_VERSION >= 0x040200
-
void tst_QStandardItemModel::rootItemFlags()
{
QStandardItemModel model(6, 4);
@@ -1426,7 +1417,7 @@ bool tst_QStandardItemModel::compareItems(QStandardItem *item1, QStandardItem *i
}
for (int row = 0; row < item1->columnCount(); row++)
for (int col = 0; col < item1->columnCount(); col++) {
-
+
if (!compareItems(item1->child(row, col), item2->child(row, col)))
return false;
}
@@ -1438,19 +1429,19 @@ static QStandardItem *itemFromText(QStandardItem *parent, const QString &text)
QStandardItem *item = 0;
for(int i = 0; i < parent->columnCount(); i++)
for(int j = 0; j < parent->rowCount(); j++) {
-
+
QStandardItem *child = parent->child(j, i);
-
+
if(!child)
continue;
-
+
if (child->text() == text) {
if (item) {
return 0;
}
item = child;
}
-
+
QStandardItem *candidate = itemFromText(child, text);
if(candidate) {
if (item) {
@@ -1470,9 +1461,9 @@ static QModelIndex indexFromText(QStandardItemModel *model, const QString &text)
}
-struct FriendlyTreeView : public QTreeView
+struct FriendlyTreeView : public QTreeView
{
- friend class tst_QStandardItemModel;
+ friend class tst_QStandardItemModel;
Q_DECLARE_PRIVATE(QTreeView)
};
@@ -1480,7 +1471,7 @@ void tst_QStandardItemModel::treeDragAndDrop()
{
const int nRow = 5;
const int nCol = 3;
-
+
QStandardItemModel model;
QStandardItemModel checkModel;
@@ -1489,13 +1480,13 @@ void tst_QStandardItemModel::treeDragAndDrop()
for (int c = 0 ; c < nCol; c ++)
colItems1 << new QStandardItem(QString("item %1 - %0").arg(c).arg(i));
model.appendRow(colItems1);
-
+
for (int j = 0; j < nRow; ++j) {
QList<QStandardItem *> colItems2;
for (int c = 0 ; c < nCol; c ++)
colItems2 << new QStandardItem(QString("item %1/%2 - %0").arg(c).arg(i).arg(j));
colItems1.at(0)->appendRow(colItems2);
-
+
for (int k = 0; k < nRow; ++k) {
QList<QStandardItem *> colItems3;
for (int c = 0 ; c < nCol; c ++)
@@ -1504,21 +1495,19 @@ void tst_QStandardItemModel::treeDragAndDrop()
}
}
}
-
-
-
+
for (int i = 0; i < nRow; ++i) {
QList<QStandardItem *> colItems1;
for (int c = 0 ; c < nCol; c ++)
colItems1 << new QStandardItem(QString("item %1 - %0").arg(c).arg(i));
checkModel.appendRow(colItems1);
-
+
for (int j = 0; j < nRow; ++j) {
QList<QStandardItem *> colItems2;
for (int c = 0 ; c < nCol; c ++)
colItems2 << new QStandardItem(QString("item %1/%2 - %0").arg(c).arg(i).arg(j));
colItems1.at(0)->appendRow(colItems2);
-
+
for (int k = 0; k < nRow; ++k) {
QList<QStandardItem *> colItems3;
for (int c = 0 ; c < nCol; c ++)
@@ -1527,9 +1516,9 @@ void tst_QStandardItemModel::treeDragAndDrop()
}
}
}
-
+
QVERIFY(compareModels(&model, &checkModel));
-
+
FriendlyTreeView view;
view.setModel(&model);
view.expandAll();
@@ -1556,7 +1545,7 @@ void tst_QStandardItemModel::treeDragAndDrop()
if(model.dropMimeData(data, Qt::MoveAction, 0, 0, indexFromText(&model, "item 4 - 0")))
view.d_func()->clearOrRemove();
delete data;
-
+
QVERIFY(!compareModels(&model, &checkModel)); //the model must be different at this point
QStandardItem *item4 = itemFromText(checkModel.invisibleRootItem(), "item 4 - 0");
item4->insertRow(0, checkModel.takeRow(1));
@@ -1564,7 +1553,6 @@ void tst_QStandardItemModel::treeDragAndDrop()
QVERIFY(compareModels(&model, &checkModel));
}
-
//
// step2 drag "item 3" and "item 3/0" into "item 4"
//
@@ -1572,10 +1560,10 @@ void tst_QStandardItemModel::treeDragAndDrop()
selection->clear();
selection->select(QItemSelection(indexFromText(&model, QString("item 3 - 0")),
indexFromText(&model, QString("item 3 - %0").arg(nCol-1))), QItemSelectionModel::Select);
-
+
selection->select(QItemSelection(indexFromText(&model, QString("item 3/0 - 0")),
indexFromText(&model, QString("item 3/0 - %0").arg(nCol-1))), QItemSelectionModel::Select);
-
+
//code based from QAbstractItemView::startDrag and QAbstractItemView::dropEvent
QModelIndexList indexes = view.selectedIndexes();
QMimeData *data = model.mimeData(indexes);
diff --git a/tests/auto/qstring/tst_qstring.cpp b/tests/auto/qstring/tst_qstring.cpp
index f786965..1263a41 100644
--- a/tests/auto/qstring/tst_qstring.cpp
+++ b/tests/auto/qstring/tst_qstring.cpp
@@ -432,6 +432,10 @@ void tst_QString::replace_uint_uint_data()
QTest::newRow( "rep09" ) << QString("ACABCAB") << 4 << 2 << QString("XX") << QString("ACABXXB");
QTest::newRow( "rep10" ) << QString("ACABCAB") << 5 << 2 << QString("XX") << QString("ACABCXX");
QTest::newRow( "rep10" ) << QString("ACABCAB") << 6 << 2 << QString("XX") << QString("ACABCAXX");
+ QTest::newRow( "rep12" ) << QString() << 0 << 10 << QString("X") << QString("X");
+ QTest::newRow( "rep13" ) << QString("short") << 0 << 10 << QString("X") << QString("X");
+ QTest::newRow( "rep14" ) << QString() << 0 << 10 << QString("XX") << QString("XX");
+ QTest::newRow( "rep15" ) << QString("short") << 0 << 10 << QString("XX") << QString("XX");
}
void tst_QString::replace_string_data()
diff --git a/tests/auto/qstyle/tst_qstyle.cpp b/tests/auto/qstyle/tst_qstyle.cpp
index e31e0db..cb30f83 100644
--- a/tests/auto/qstyle/tst_qstyle.cpp
+++ b/tests/auto/qstyle/tst_qstyle.cpp
@@ -70,10 +70,7 @@
#include <qlineedit.h>
#include <qmdiarea.h>
-
-#if QT_VERSION >= 0x040200
#include <QCleanlooksStyle>
-#endif
#ifdef Q_WS_MAC
#include <QMacStyle>
@@ -343,7 +340,7 @@ void tst_QStyle::testPlastiqueStyle()
void tst_QStyle::testCleanlooksStyle()
{
-#if QT_VERSION >= 0x040200 && !defined(QT_NO_STYLE_CLEANLOOKS)
+#if !defined(QT_NO_STYLE_CLEANLOOKS)
QCleanlooksStyle cstyle;
testAllFunctions(&cstyle);
lineUpLayoutTest(&cstyle);
@@ -365,7 +362,7 @@ void tst_QStyle::testWindowsXPStyle()
QWindowsXPStyle xpstyle;
testAllFunctions(&xpstyle);
lineUpLayoutTest(&xpstyle);
-#else
+#else
QSKIP("No WindowsXP style", SkipAll);
#endif
}
diff --git a/tests/auto/qstylesheetstyle/tst_qstylesheetstyle.cpp b/tests/auto/qstylesheetstyle/tst_qstylesheetstyle.cpp
index aa63753..24ccecf 100644
--- a/tests/auto/qstylesheetstyle/tst_qstylesheetstyle.cpp
+++ b/tests/auto/qstylesheetstyle/tst_qstylesheetstyle.cpp
@@ -605,8 +605,9 @@ void tst_QStyleSheetStyle::palettePropagation()
QVERIFY(COLOR(gb) == Qt::red);
QVERIFY(COLOR(pb) == APPCOLOR(pb)); // palette shouldn't propagate
gb.setStyleSheet("QGroupBox * { color: red }");
+
QVERIFY(COLOR(pb) == Qt::red);
- QVERIFY(COLOR(gb) == APPCOLOR(pb));
+ QVERIFY(COLOR(gb) == APPCOLOR(gb));
QWidget window;
window.setStyleSheet("* { color: white; }");
diff --git a/tests/auto/qsvgdevice/tst_qsvgdevice.cpp b/tests/auto/qsvgdevice/tst_qsvgdevice.cpp
index 713b3fa..4f16e7e 100644
--- a/tests/auto/qsvgdevice/tst_qsvgdevice.cpp
+++ b/tests/auto/qsvgdevice/tst_qsvgdevice.cpp
@@ -332,11 +332,7 @@ void tst_QSvgDevice::playPaint( QPainter *p, const QString &type )
qDrawShadePanel(p,4000,5000,4000,2000,palette.active(),false,200,&br);
qDrawShadeRect(p,2000,2000,4000,2000,palette.active(),true,100,0,&br);
}
- }
-#if !defined (Q_WS_WIN) && (QT_VERSION < 0x030200)
- // This will fail on X11 with 3.1, fixed in 3.2
-#else
- else if (type=="clipRect") {
+ } else if (type=="clipRect") {
p->setClipRect(15,25,10,10);
p->drawEllipse(10,20,50,70);
} else if (type=="multipleClipRects") {
@@ -344,9 +340,7 @@ void tst_QSvgDevice::playPaint( QPainter *p, const QString &type )
p->drawEllipse(10,20,50,70);
p->setClipRect(100,200,20,20);
p->drawEllipse(110,220,50,70);
- }
-#endif
- else if (type == "qsimplerichtext") {
+ } else if (type == "qsimplerichtext") {
p->setPen(QColor(0,0,0));
p->setBrush(Qt::NoBrush);
QRect rect1(10, 10, 100, 50);
diff --git a/tests/auto/qsvgrenderer/tst_qsvgrenderer.cpp b/tests/auto/qsvgrenderer/tst_qsvgrenderer.cpp
index 4a17031..4da99da 100644
--- a/tests/auto/qsvgrenderer/tst_qsvgrenderer.cpp
+++ b/tests/auto/qsvgrenderer/tst_qsvgrenderer.cpp
@@ -534,16 +534,42 @@ void tst_QSvgRenderer::gradientStops() const
QCOMPARE(image, refImage);
}
+ const char *svgs[] = {
+ "<svg>"
+ "<defs>"
+ "<linearGradient id=\"gradient\">"
+ "<stop offset=\"0\" stop-color=\"red\" stop-opacity=\"0\"/>"
+ "<stop offset=\"1\" stop-color=\"blue\"/>"
+ "</linearGradient>"
+ "</defs>"
+ "<rect fill=\"url(#gradient)\" height=\"8\" width=\"256\" x=\"0\" y=\"0\"/>"
+ "</svg>",
+ "<svg>"
+ "<defs>"
+ "<linearGradient id=\"gradient\" xlink:href=\"#gradient0\">"
+ "</linearGradient>"
+ "<linearGradient id=\"gradient0\">"
+ "<stop offset=\"0\" stop-color=\"red\" stop-opacity=\"0\"/>"
+ "<stop offset=\"1\" stop-color=\"blue\"/>"
+ "</linearGradient>"
+ "</defs>"
+ "<rect fill=\"url(#gradient)\" height=\"8\" width=\"256\" x=\"0\" y=\"0\"/>"
+ "</svg>",
+ "<svg>"
+ "<defs>"
+ "<linearGradient id=\"gradient0\">"
+ "<stop offset=\"0\" stop-color=\"red\" stop-opacity=\"0\"/>"
+ "<stop offset=\"1\" stop-color=\"blue\"/>"
+ "</linearGradient>"
+ "<linearGradient id=\"gradient\" xlink:href=\"#gradient0\">"
+ "</linearGradient>"
+ "</defs>"
+ "<rect fill=\"url(#gradient)\" height=\"8\" width=\"256\" x=\"0\" y=\"0\"/>"
+ "</svg>"
+ };
+ for (int i = 0 ; i < sizeof(svgs) / sizeof(svgs[0]) ; ++i)
{
- QByteArray data("<svg>"
- "<defs>"
- "<linearGradient id=\"gradient\">"
- "<stop offset=\"0\" stop-color=\"red\" stop-opacity=\"0\"/>"
- "<stop offset=\"1\" stop-color=\"blue\"/>"
- "</linearGradient>"
- "</defs>"
- "<rect fill=\"url(#gradient)\" height=\"8\" width=\"256\" x=\"0\" y=\"0\"/>"
- "</svg>");
+ QByteArray data = svgs[i];
QSvgRenderer renderer(data);
QImage image(256, 8, QImage::Format_ARGB32_Premultiplied);
diff --git a/tests/auto/qsystemtrayicon/tst_qsystemtrayicon.cpp b/tests/auto/qsystemtrayicon/tst_qsystemtrayicon.cpp
index 7ce30aa..8c5da7b 100644
--- a/tests/auto/qsystemtrayicon/tst_qsystemtrayicon.cpp
+++ b/tests/auto/qsystemtrayicon/tst_qsystemtrayicon.cpp
@@ -42,10 +42,6 @@
#include <QtTest/QtTest>
-#if QT_VERSION < 0x040200
-QTEST_NOOP_MAIN
-#else
-
#include <qcoreapplication.h>
#include <qdebug.h>
#include <qsystemtrayicon.h>
@@ -150,4 +146,3 @@ void tst_QSystemTrayIcon::lastWindowClosed()
QTEST_MAIN(tst_QSystemTrayIcon)
#include "tst_qsystemtrayicon.moc"
-#endif
diff --git a/tests/auto/qtabbar/tst_qtabbar.cpp b/tests/auto/qtabbar/tst_qtabbar.cpp
index 433eb86..31722de 100644
--- a/tests/auto/qtabbar/tst_qtabbar.cpp
+++ b/tests/auto/qtabbar/tst_qtabbar.cpp
@@ -92,6 +92,8 @@ private slots:
void moveTab_data();
void moveTab();
+
+ void task251184_removeTab();
};
// Testing get/set functions
@@ -503,5 +505,35 @@ void tst_QTabBar::moveTab()
bar.callMoveTab(from, to);
}
+
+class MyTabBar : public QTabBar
+{
+ Q_OBJECT
+public slots:
+ void onCurrentChanged()
+ {
+ //we just want this to be done once
+ disconnect(this, SIGNAL(currentChanged(int)), this, SLOT(onCurrentChanged()));
+ removeTab(0);
+ }
+};
+
+void tst_QTabBar::task251184_removeTab()
+{
+ MyTabBar bar;
+ bar.addTab("bar1");
+ bar.addTab("bar2");
+ QCOMPARE(bar.count(), 2);
+ QCOMPARE(bar.currentIndex(), 0);
+
+ bar.connect(&bar, SIGNAL(currentChanged(int)), SLOT(onCurrentChanged()));
+ bar.setCurrentIndex(1);
+
+ QCOMPARE(bar.count(), 1);
+ QCOMPARE(bar.currentIndex(), 0);
+ QCOMPARE(bar.tabText(bar.currentIndex()), QString("bar2"));
+}
+
+
QTEST_MAIN(tst_QTabBar)
#include "tst_qtabbar.moc"
diff --git a/tests/auto/qtconcurrentmap/tst_qtconcurrentmap.cpp b/tests/auto/qtconcurrentmap/tst_qtconcurrentmap.cpp
index 139eb6e..116f46e 100644
--- a/tests/auto/qtconcurrentmap/tst_qtconcurrentmap.cpp
+++ b/tests/auto/qtconcurrentmap/tst_qtconcurrentmap.cpp
@@ -74,6 +74,7 @@ private slots:
void incrementalResults();
void noDetatch();
void stlContainers();
+ void qFutureAssignmentLeak();
void stressTest();
public slots:
void throttling();
@@ -2323,6 +2324,36 @@ void tst_map::stlContainers()
#endif
}
+InstanceCounter ic_fn(const InstanceCounter & ic)
+{
+ return InstanceCounter(ic);
+};
+
+// Verify that held results are deleted when a future is
+// assigned over with operator ==
+void tst_map::qFutureAssignmentLeak()
+{
+ currentInstanceCount = 0;
+ peakInstanceCount = 0;
+ QFuture<InstanceCounter> future;
+ {
+ QList<InstanceCounter> list;
+ for (int i=0;i<1000;++i)
+ list += InstanceCounter();
+ future = QtConcurrent::mapped(list, ic_fn);
+ future.waitForFinished();
+
+ future = QtConcurrent::mapped(list, ic_fn);
+ future.waitForFinished();
+
+ future = QtConcurrent::mapped(list, ic_fn);
+ future.waitForFinished();
+ }
+
+ QCOMPARE(int(currentInstanceCount), 1000);
+ future = QFuture<InstanceCounter>();
+ QCOMPARE(int(currentInstanceCount), 0);
+}
inline void increment(int &num)
{
diff --git a/tests/auto/qtcpserver/tst_qtcpserver.cpp b/tests/auto/qtcpserver/tst_qtcpserver.cpp
index 50b293d..4fd1827 100644
--- a/tests/auto/qtcpserver/tst_qtcpserver.cpp
+++ b/tests/auto/qtcpserver/tst_qtcpserver.cpp
@@ -364,7 +364,7 @@ void tst_QTcpServer::ipv6LoopbackPerformanceTest()
void tst_QTcpServer::ipv4PerformanceTest()
{
QTcpSocket probeSocket;
- probeSocket.connectToHost("imap.troll.no", 143);
+ probeSocket.connectToHost(QtNetworkSettings::serverName(), 143);
QVERIFY(probeSocket.waitForConnected(5000));
QTcpServer server;
diff --git a/tests/auto/qtemporaryfile/qtemporaryfile.pro b/tests/auto/qtemporaryfile/qtemporaryfile.pro
index 0c90994..bde990a 100644
--- a/tests/auto/qtemporaryfile/qtemporaryfile.pro
+++ b/tests/auto/qtemporaryfile/qtemporaryfile.pro
@@ -2,5 +2,4 @@ load(qttest_p4)
SOURCES += tst_qtemporaryfile.cpp
QT = core
-
-
+DEFINES += SRCDIR=\\\"$$PWD/\\\"
diff --git a/tests/auto/qtemporaryfile/tst_qtemporaryfile.cpp b/tests/auto/qtemporaryfile/tst_qtemporaryfile.cpp
index d2a2546..2daa0f6 100644
--- a/tests/auto/qtemporaryfile/tst_qtemporaryfile.cpp
+++ b/tests/auto/qtemporaryfile/tst_qtemporaryfile.cpp
@@ -51,6 +51,13 @@
#if defined(Q_OS_WIN)
# include <windows.h>
#endif
+#if defined(Q_OS_UNIX)
+# include <sys/types.h>
+# include <sys/stat.h>
+# include <errno.h>
+# include <fcntl.h> // open(2)
+# include <unistd.h> // close(2)
+#endif
//TESTED_CLASS=
//TESTED_FILES=
@@ -77,6 +84,8 @@ private slots:
void resize();
void openOnRootDrives();
void stressTest();
+ void rename();
+ void renameFdLeak();
public:
};
@@ -143,7 +152,6 @@ void tst_QTemporaryFile::fileTemplate_data()
void tst_QTemporaryFile::fileTemplate()
{
-#if QT_VERSION >= 0x040200
QFETCH(QString, constructorTemplate);
QFETCH(QString, suffix);
QFETCH(QString, fileTemplate);
@@ -156,7 +164,6 @@ void tst_QTemporaryFile::fileTemplate()
QCOMPARE(file.fileName().right(suffix.length()), suffix);
file.close();
-#endif
}
@@ -233,9 +240,6 @@ void tst_QTemporaryFile::write()
void tst_QTemporaryFile::openCloseOpenClose()
{
-#if QT_VERSION < 0x040101
- QSKIP("Until Qt 4.1.1, QTemporaryFile would create a new name every time open() was called.", SkipSingle);
-#endif
QString fileName;
{
// Create a temp file
@@ -247,7 +251,7 @@ void tst_QTemporaryFile::openCloseOpenClose()
QVERIFY(QFile::exists(fileName));
file.close();
- // Check that it still exists after being closed
+ // Check that it still exists after being closed
QVERIFY(QFile::exists(fileName));
QVERIFY(!file.isOpen());
QVERIFY(file.open());
@@ -335,5 +339,67 @@ void tst_QTemporaryFile::stressTest()
}
}
+void tst_QTemporaryFile::rename()
+{
+ // This test checks that the temporary file is deleted, even after a
+ // rename.
+
+ QDir dir;
+ QVERIFY(!dir.exists("temporary-file.txt"));
+
+ QString tempname;
+ {
+ QTemporaryFile file(dir.filePath("temporary-file.XXXXXX"));
+
+ QVERIFY(file.open());
+ tempname = file.fileName();
+ QVERIFY(dir.exists(tempname));
+
+ QVERIFY(file.rename("temporary-file.txt"));
+ QVERIFY(!dir.exists(tempname));
+ QVERIFY(dir.exists("temporary-file.txt"));
+ }
+
+ QVERIFY(!dir.exists(tempname));
+ QVERIFY(!dir.exists("temporary-file.txt"));
+}
+
+void tst_QTemporaryFile::renameFdLeak()
+{
+#ifdef Q_OS_UNIX
+ // Test this on Unix only
+
+ // Open a bunch of files to force the fd count to go up
+ static const int count = 10;
+ int bunch_of_files[count];
+ for (int i = 0; i < count; ++i) {
+ bunch_of_files[i] = ::open(SRCDIR "tst_qtemporaryfile.cpp", O_RDONLY);
+ QVERIFY(bunch_of_files[i] != -1);
+ }
+
+ int fd;
+ {
+ QTemporaryFile file;
+ file.setAutoRemove(false);
+ QVERIFY(file.open());
+
+ // close the bunch of files
+ for (int i = 0; i < count; ++i)
+ ::close(bunch_of_files[i]);
+
+ // save the file descriptor for later
+ fd = file.handle();
+
+ // rename the file to something
+ QString newPath = QDir::tempPath() + "/tst_qtemporaryfile-renameFdLeak-" + QString::number(getpid());
+ file.rename(newPath);
+ QFile::remove(newPath);
+ }
+
+ // check if QTemporaryFile closed the file
+ QVERIFY(::close(fd) == -1 && errno == EBADF);
+#endif
+}
+
QTEST_MAIN(tst_QTemporaryFile)
#include "tst_qtemporaryfile.moc"
diff --git a/tests/auto/qtessellator/testtessellator.cpp b/tests/auto/qtessellator/testtessellator.cpp
index bd2795c..423c1e8 100644
--- a/tests/auto/qtessellator/testtessellator.cpp
+++ b/tests/auto/qtessellator/testtessellator.cpp
@@ -38,7 +38,7 @@
** $QT_END_LICENSE$
**
****************************************************************************/
-#include <testtessellator.h>
+#include "testtessellator.h"
#include <private/qtessellator_p.h>
#include "math.h"
diff --git a/tests/auto/qtessellator/tst_tessellator.cpp b/tests/auto/qtessellator/tst_tessellator.cpp
index 8958ac3..8899285 100644
--- a/tests/auto/qtessellator/tst_tessellator.cpp
+++ b/tests/auto/qtessellator/tst_tessellator.cpp
@@ -218,8 +218,8 @@ void tst_QTessellator::testArc()
const int stop = 1000;
#endif
for (int i = 0; i < stop; ++i) {
- mat.rotate(.01);
- mat.scale(.99, .99);
+ mat.rotate(qreal(.01));
+ mat.scale(qreal(.99), qreal(.99));
QPolygonF poly = arc.at(0);
QPolygonF vec = poly * mat;
QVERIFY(test_arc(vec, true));
@@ -361,11 +361,11 @@ void tst_QTessellator::testRects()
QVector<QPointF> v(5);
for (int i = 0; i < 5; ++i)
v[i] = vec[5 * rect + i];
- if (!test(v.data(), v.size(), false, test_tessellate_polygon_rect, 0.05)) {
+ if (!test(v.data(), v.size(), false, test_tessellate_polygon_rect, qreal(0.05))) {
simplifyTestFailure(v, false);
++failures;
}
- if (!test(v.data(), v.size(), true, test_tessellate_polygon_rect, 0.05)) {
+ if (!test(v.data(), v.size(), true, test_tessellate_polygon_rect, qreal(0.05))) {
simplifyTestFailure(v, true);
++failures;
}
diff --git a/tests/auto/qtessellator/utils.cpp b/tests/auto/qtessellator/utils.cpp
index 8a9dc1e..d408193 100644
--- a/tests/auto/qtessellator/utils.cpp
+++ b/tests/auto/qtessellator/utils.cpp
@@ -43,7 +43,7 @@
#include <assert.h>
#include <qglobal.h>
-#include <qnum.h>
+#include "qnum.h"
#define FloatToXFixed(i) (int)((i) * 65536)
#define IntToXFixed(i) ((i) << 16)
diff --git a/tests/auto/qtextcodec/test/test.pro b/tests/auto/qtextcodec/test/test.pro
index ed2ade3..e52bb7a 100644
--- a/tests/auto/qtextcodec/test/test.pro
+++ b/tests/auto/qtextcodec/test/test.pro
@@ -5,6 +5,7 @@ wince*: {
addFiles.sources = ../*.txt
addFiles.path = .
DEPLOYMENT += addFiles
+ DEPLOYMENT_PLUGIN += qcncodecs qjpcodecs qkrcodecs qtwcodecs
}
diff --git a/tests/auto/qtextcodec/tst_qtextcodec.cpp b/tests/auto/qtextcodec/tst_qtextcodec.cpp
index b1bfb86..cf4135b 100644
--- a/tests/auto/qtextcodec/tst_qtextcodec.cpp
+++ b/tests/auto/qtextcodec/tst_qtextcodec.cpp
@@ -68,6 +68,8 @@ private slots:
void flagEFBFBF() const;
void decode0D() const;
void codecForIndex() const;
+ void aliasForUTF16() const;
+ void mibForTSCII() const;
void utf8Codec_data();
void utf8Codec();
@@ -453,6 +455,16 @@ void tst_QTextCodec::codecForIndex() const
{
}
+void tst_QTextCodec::aliasForUTF16() const
+{
+ QVERIFY(QTextCodec::codecForName("UTF-16")->aliases().isEmpty());
+}
+
+void tst_QTextCodec::mibForTSCII() const
+{
+ QCOMPARE(QTextCodec::codecForName("TSCII")->mibEnum(), 2107);
+}
+
static QString fromInvalidUtf8Sequence(const QByteArray &ba)
{
return QString().fill(QChar::ReplacementCharacter, ba.size());
diff --git a/tests/auto/qtextcursor/tst_qtextcursor.cpp b/tests/auto/qtextcursor/tst_qtextcursor.cpp
index 48212a4..86b253f 100644
--- a/tests/auto/qtextcursor/tst_qtextcursor.cpp
+++ b/tests/auto/qtextcursor/tst_qtextcursor.cpp
@@ -124,9 +124,7 @@ private slots:
void selectWordWithSeparators_data();
void selectWordWithSeparators();
void startOfWord();
-#if QT_VERSION >= 0x040100
void selectBlock();
-#endif
void selectVisually();
void insertText();
@@ -1228,13 +1226,9 @@ void tst_QTextCursor::selectWord()
cursor.movePosition(QTextCursor::EndOfBlock);
cursor.select(QTextCursor::WordUnderCursor);
-#if QT_VERSION < 0x040200
- QVERIFY(!cursor.hasSelection());
-#else
QVERIFY(cursor.hasSelection());
QCOMPARE(cursor.selectionStart(), 17);
QCOMPARE(cursor.selectionEnd(), 22);
-#endif
}
void tst_QTextCursor::selectWordWithSeparators_data()
@@ -1269,7 +1263,6 @@ void tst_QTextCursor::startOfWord()
QCOMPARE(cursor.position(), 0);
}
-#if QT_VERSION >= 0x040100
void tst_QTextCursor::selectBlock()
{
cursor.insertText("foobar");
@@ -1295,7 +1288,6 @@ void tst_QTextCursor::selectBlock()
QVERIFY(cursor.blockFormat().alignment() == Qt::AlignHCenter);
QCOMPARE(cursor.block().text(), QString("blah"));
}
-#endif
void tst_QTextCursor::selectVisually()
{
@@ -1551,7 +1543,6 @@ void tst_QTextCursor::update()
void tst_QTextCursor::disallowSettingObjectIndicesOnCharFormats()
{
-#if QT_VERSION >= 0x040200
QTextCharFormat fmt;
fmt.setObjectIndex(42);
cursor.insertText("Hey", fmt);
@@ -1581,7 +1572,6 @@ void tst_QTextCursor::disallowSettingObjectIndicesOnCharFormats()
cursor = table->cellAt(0, 0).firstCursorPosition();
QVERIFY(!cursor.isNull());
QCOMPARE(cursor.blockCharFormat().objectIndex(), table->objectIndex());
-#endif
}
void tst_QTextCursor::blockAndColumnNumber()
diff --git a/tests/auto/qtextdocument/tst_qtextdocument.cpp b/tests/auto/qtextdocument/tst_qtextdocument.cpp
index 58cc019..4ef5299 100644
--- a/tests/auto/qtextdocument/tst_qtextdocument.cpp
+++ b/tests/auto/qtextdocument/tst_qtextdocument.cpp
@@ -193,14 +193,9 @@ void tst_QTextDocument::getSetCheck()
QPointer<MyAbstractTextDocumentLayout> var1 = new MyAbstractTextDocumentLayout(0);
obj1.setDocumentLayout(var1);
QCOMPARE(static_cast<QAbstractTextDocumentLayout *>(var1), obj1.documentLayout());
-#if QT_VERSION >= 0x040200
- // QTextDocument in Qt < 4.2 crashes on this. Qt >= 4.2 should handle this gracefully
obj1.setDocumentLayout((QAbstractTextDocumentLayout *)0);
QVERIFY(var1.isNull());
QVERIFY(obj1.documentLayout());
-#else
- delete var1;
-#endif
// bool QTextDocument::useDesignMetrics()
// void QTextDocument::setUseDesignMetrics(bool)
@@ -672,18 +667,6 @@ void tst_QTextDocument::toHtml_data()
<< QString("<p DEFAULTBLOCKSTYLE><span style=\" font-size:40pt;\">Blah</span></p>");
}
-#if QT_VERSION < 0x040200
- {
- CREATE_DOC_AND_CURSOR();
-
- QTextCharFormat fmt;
- fmt.setProperty(QTextFormat::FontSizeIncrement, 2);
- cursor.insertText("Blah", fmt);
-
- QTest::newRow("logical-font-size") << QTextDocumentFragment(&doc)
- << QString("<p DEFAULTBLOCKSTYLE><font size=\"5\">Blah</font></p>");
- }
-#else
{
CREATE_DOC_AND_CURSOR();
@@ -694,7 +677,6 @@ void tst_QTextDocument::toHtml_data()
QTest::newRow("logical-font-size") << QTextDocumentFragment(&doc)
<< QString("<p DEFAULTBLOCKSTYLE><span style=\" font-size:x-large;\">Blah</span></p>");
}
-#endif
{
CREATE_DOC_AND_CURSOR();
@@ -892,13 +874,8 @@ void tst_QTextDocument::toHtml_data()
QTest::newRow("simpletable") << QTextDocumentFragment(&doc)
<< QString("<table border=\"1\" cellspacing=\"2\">"
-#if QT_VERSION >= 0x040200
"\n<tr>\n<td></td>\n<td></td></tr>"
"\n<tr>\n<td></td>\n<td></td></tr>"
-#else
- "<tr><td></td><td></td></tr>"
- "<tr><td></td><td></td></tr>"
-#endif
"</table>");
}
@@ -911,11 +888,7 @@ void tst_QTextDocument::toHtml_data()
QTest::newRow("tablespans") << QTextDocumentFragment(&doc)
<< QString("<table border=\"1\" cellspacing=\"2\">"
-#if QT_VERSION >= 0x040200
"\n<tr>\n<td colspan=\"2\"></td>\n<td colspan=\"2\"></td></tr>"
-#else
- "<tr><td colspan=\"2\"></td><td colspan=\"2\"></td></tr>"
-#endif
"</table>");
}
@@ -961,7 +934,6 @@ void tst_QTextDocument::toHtml_data()
"</table>");
}
-#if QT_VERSION >= 0x040200
{
CREATE_DOC_AND_CURSOR();
@@ -977,7 +949,6 @@ void tst_QTextDocument::toHtml_data()
"\n<tr>\n<td></td>\n<td></td></tr>"
"</table>");
}
-#endif
{
CREATE_DOC_AND_CURSOR();
@@ -988,13 +959,8 @@ void tst_QTextDocument::toHtml_data()
QTest::newRow("nestedtable") << QTextDocumentFragment(&doc)
<< QString("<table border=\"1\" cellspacing=\"2\">"
-#if QT_VERSION >= 0x040200
"\n<tr>\n<td></td>\n<td>\n<table border=\"1\" cellspacing=\"2\">\n<tr>\n<td>\n<p DEFAULTBLOCKSTYLE>Hey</p></td></tr></table></td></tr>"
"\n<tr>\n<td></td>\n<td></td></tr>"
-#else
- "<tr><td></td><td><table border=\"1\" cellspacing=\"2\"><tr><td><p DEFAULTBLOCKSTYLE>Hey</p></td></tr></table></td></tr>"
- "<tr><td></td><td></td></tr>"
-#endif
"</table>");
}
@@ -1011,11 +977,7 @@ void tst_QTextDocument::toHtml_data()
QTest::newRow("colwidths") << QTextDocumentFragment(&doc)
<< QString("<table border=\"1\" cellspacing=\"2\">"
-#if QT_VERSION >= 0x040200
"\n<tr>\n<td></td>\n<td width=\"30%\"></td>\n<td width=\"40\"></td></tr>"
-#else
- "<tr><td></td><td width=\"30%\"></td><td width=\"40\"></td></tr>"
-#endif
"</table>");
}
@@ -1032,11 +994,7 @@ void tst_QTextDocument::toHtml_data()
QTest::newRow("cellproperties") << QTextDocumentFragment(&doc)
<< QString("<table border=\"1\" cellspacing=\"2\">"
-#if QT_VERSION >= 0x040200
"\n<tr>\n<td bgcolor=\"#ffffff\"></td></tr>"
-#else
- "<tr><td bgcolor=\"#ffffff\"></td></tr>"
-#endif
"</table>");
}
@@ -1111,9 +1069,7 @@ void tst_QTextDocument::toHtml_data()
QTest::newRow("blockmargins") << QTextDocumentFragment(&doc)
<<
-#if QT_VERSION >= 0x040100
QString("EMPTYBLOCK") +
-#endif
QString("<p style=\" margin-top:10px; margin-bottom:20px; margin-left:30px; margin-right:40px; -qt-block-indent:0; text-indent:0px;\">Blah</p>");
}
@@ -1129,11 +1085,7 @@ void tst_QTextDocument::toHtml_data()
QTest::newRow("lists") << QTextDocumentFragment(&doc)
<<
QString("EMPTYBLOCK") +
-#if QT_VERSION >= 0x040200
QString("<ul style=\"-qt-list-indent: 1;\"><li DEFAULTBLOCKSTYLE>Blubb</li>\n<li DEFAULTBLOCKSTYLE>Blah</li></ul>");
-#else
- QString("<ul style=\"-qt-list-indent: 1;\"><li DEFAULTBLOCKSTYLE>Blubb<li DEFAULTBLOCKSTYLE>Blah</ul>");
-#endif
}
{
@@ -1156,11 +1108,7 @@ void tst_QTextDocument::toHtml_data()
QTest::newRow("charfmt-for-list-item") << QTextDocumentFragment(&doc)
<<
QString("EMPTYBLOCK") +
-#if QT_VERSION >= 0x040200
QString("<ul style=\"-qt-list-indent: 1;\"><li DEFAULTBLOCKSTYLE>Blubb</li>\n<li style=\" color:#0000ff;\" DEFAULTBLOCKSTYLE><span style=\" color:#ff0000;\">Blah</span></li></ul>");
-#else
- QString("<ul style=\"-qt-list-indent: 1;\"><li DEFAULTBLOCKSTYLE>Blubb<li style=\" color:#0000ff;\" DEFAULTBLOCKSTYLE><span style=\" color:#ff0000;\">Blah</span></ul>");
-#endif
}
{
@@ -1174,9 +1122,7 @@ void tst_QTextDocument::toHtml_data()
QTest::newRow("block-indent") << QTextDocumentFragment(&doc)
<<
-#if QT_VERSION >= 0x040100
QString("EMPTYBLOCK") +
-#endif
QString("<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:3; text-indent:30px;\">Test</p>");
}
@@ -1192,11 +1138,7 @@ void tst_QTextDocument::toHtml_data()
QTest::newRow("list-indent") << QTextDocumentFragment(&doc)
<<
QString("EMPTYBLOCK") +
-#if QT_VERSION >= 0x040200
QString("<ul style=\"-qt-list-indent: 4;\"><li DEFAULTBLOCKSTYLE>Blah</li></ul>");
-#else
- QString("<ul style=\"-qt-list-indent: 4;\"><li DEFAULTBLOCKSTYLE>Blah</ul>");
-#endif
}
{
@@ -1217,11 +1159,7 @@ void tst_QTextDocument::toHtml_data()
// if you press enter twice in an empty textedit and then insert 'Test'
// you actually get three visible paragraphs, two empty leading ones and
// a third with the actual text. the corresponding html representation
- // therefore should also contain three paragraphs. that only works in >= 4.1,
- // 4.0.x needs this additional block.
-#if QT_VERSION < 0x040100
- cursor.insertBlock();
-#endif
+ // therefore should also contain three paragraphs.
cursor.insertBlock();
QTextCharFormat fmt;
@@ -1232,16 +1170,10 @@ void tst_QTextDocument::toHtml_data()
fmt.setProperty(QTextFormat::FontSizeIncrement, 2);
cursor.insertText("Test", fmt);
-#if QT_VERSION < 0x040200
- QTest::newRow("blockcharfmt") << QTextDocumentFragment(&doc)
- << QString("EMPTYBLOCK<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; color:#00ff00;\"><font size=\"4\"><font size=\"5\">Test</font></font></p>");
-#else
QTest::newRow("blockcharfmt") << QTextDocumentFragment(&doc)
<< QString("EMPTYBLOCK<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-size:x-large; color:#00ff00;\">Test</span></p>");
-#endif
}
-#if QT_VERSION >= 0x040100
{
CREATE_DOC_AND_CURSOR();
@@ -1254,7 +1186,6 @@ void tst_QTextDocument::toHtml_data()
QTest::newRow("blockcharfmt2") << QTextDocumentFragment(&doc)
<< QString("<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" color:#0000ff;\">Test</span></p>");
}
-#endif
{
QTest::newRow("horizontal-ruler") << QTextDocumentFragment::fromHtml("<hr />")
@@ -1285,11 +1216,7 @@ void tst_QTextDocument::toHtml_data()
cursor = mainFrame->lastCursorPosition();
QTest::newRow("frame") << QTextDocumentFragment(&doc)
-#if QT_VERSION >= 0x040200
<< QString("<table border=\"1\" style=\"-qt-table-type: frame; float: right; margin-top:2px; margin-bottom:2px; margin-left:2px; margin-right:2px;\" width=\"100\" height=\"50\" bgcolor=\"#00ff00\">\n<tr>\n<td style=\"border: none;\">\n<p DEFAULTBLOCKSTYLE>Hello World</p></td></tr></table>");
-#else
- << QString("<table border=\"1\" style=\"-qt-table-type: frame; float: right; margin-top:2px; margin-bottom:2px; margin-left:2px; margin-right:2px;\" width=\"100\" height=\"50\" bgcolor=\"#00ff00\"><tr><td style=\"border: none;\"><p DEFAULTBLOCKSTYLE>Hello World</p></td></tr></table>");
-#endif
}
{
@@ -1993,11 +1920,7 @@ void tst_QTextDocument::resolvedFontInEmptyFormat()
void tst_QTextDocument::defaultRootFrameMargin()
{
-#if QT_VERSION >= 0x040200 && QT_VERSION <= 0x040400
- QCOMPARE(doc->rootFrame()->frameFormat().margin(), 2.0);
-#else
QCOMPARE(doc->rootFrame()->frameFormat().margin(), 4.0);
-#endif
}
class TestDocument : public QTextDocument
@@ -2415,7 +2338,6 @@ void tst_QTextDocument::documentCleanup()
void tst_QTextDocument::characterAt()
{
-#if QT_VERSION >= 0x040500
QTextDocument doc;
QTextCursor cursor(&doc);
QString text("12345\n67890");
@@ -2432,7 +2354,6 @@ void tst_QTextDocument::characterAt()
c = QChar(QChar::ParagraphSeparator);
QCOMPARE(doc.characterAt(i), c);
}
-#endif
}
void tst_QTextDocument::revisions()
diff --git a/tests/auto/qtextdocumentfragment/tst_qtextdocumentfragment.cpp b/tests/auto/qtextdocumentfragment/tst_qtextdocumentfragment.cpp
index bace7b4..46f5f0c 100644
--- a/tests/auto/qtextdocumentfragment/tst_qtextdocumentfragment.cpp
+++ b/tests/auto/qtextdocumentfragment/tst_qtextdocumentfragment.cpp
@@ -2217,9 +2217,6 @@ void tst_QTextDocumentFragment::defaultFont()
void tst_QTextDocumentFragment::html_spanBackgroundColor()
{
setHtml("<span style=\"background-color: blue\">Foo</span>");
-#if QT_VERSION <= 0x040100
- QEXPECT_FAIL("", "Fixed in >= 4.1.1", Continue);
-#endif
QVERIFY(doc->begin().begin().fragment().charFormat().background().color() == QColor(Qt::blue));
}
@@ -2251,9 +2248,6 @@ void tst_QTextDocumentFragment::html_brokenTitle()
void tst_QTextDocumentFragment::html_blockVsInline()
{
-#if QT_VERSION <= 0x040100
- QEXPECT_FAIL("", "Fixed in >= 4.1.1", Abort);
-#endif
{
setHtml("<html><body><div><b>Foo<div>Bar");
QVERIFY(cursor.charFormat().fontWeight() == QFont::Bold);
@@ -2314,15 +2308,8 @@ void tst_QTextDocumentFragment::html_tbody()
QTextTable *table = cursor.currentTable();
QVERIFY(table);
QCOMPARE(table->columns(), 1);
-#if QT_VERSION <= 0x040100
- QEXPECT_FAIL("", "Fixed in >= 4.1.1", Abort);
-#endif
QCOMPARE(table->rows(), 2);
-
-#if QT_VERISON >= 0x040200
- QVERIFY(table->format().headerRowCount(), 1);
-#endif
-
+ QCOMPARE(table->format().headerRowCount(), 1);
QCOMPARE(table->cellAt(0, 0).firstCursorPosition().block().text(), QString("First Cell"));
QCOMPARE(table->cellAt(1, 0).firstCursorPosition().block().text(), QString("Second Cell"));
}
@@ -2380,7 +2367,6 @@ void tst_QTextDocumentFragment::html_nestedTables()
void tst_QTextDocumentFragment::html_rowSpans()
{
-#if QT_VERSION > 0x040100
setHtml(""
"<table border=\"1\" width=\"100%\">"
" <tr>"
@@ -2413,7 +2399,6 @@ void tst_QTextDocumentFragment::html_rowSpans()
QCOMPARE(table->cellAt(3, 0).firstCursorPosition().block().text(), QString("blubb"));
QCOMPARE(table->cellAt(3, 1).firstCursorPosition().block().text(), QString("baz"));
-#endif
}
void tst_QTextDocumentFragment::html_rowSpans2()
diff --git a/tests/auto/qtextlayout/tst_qtextlayout.cpp b/tests/auto/qtextlayout/tst_qtextlayout.cpp
index 534c7b0..4ea3e2f 100644
--- a/tests/auto/qtextlayout/tst_qtextlayout.cpp
+++ b/tests/auto/qtextlayout/tst_qtextlayout.cpp
@@ -182,9 +182,6 @@ void tst_QTextLayout::init()
testFont.setFamily("__Qt__Box__Engine__");
testFont.setPixelSize(TESTFONT_SIZE);
testFont.setWeight(QFont::Normal);
-#if defined(Q_WS_MAC) && QT_VERSION < 0x040200
- QSKIP("QTestFontEngine is not supported on the mac right now", SkipAll);
-#endif
QCOMPARE(QFontMetrics(testFont).width('a'), testFont.pixelSize());
}
diff --git a/tests/auto/qtextscriptengine/tst_qtextscriptengine.cpp b/tests/auto/qtextscriptengine/tst_qtextscriptengine.cpp
index f70082d..c60e0bf 100644
--- a/tests/auto/qtextscriptengine/tst_qtextscriptengine.cpp
+++ b/tests/auto/qtextscriptengine/tst_qtextscriptengine.cpp
@@ -533,7 +533,7 @@ void tst_QScriptEngine::bengali()
void tst_QScriptEngine::gurmukhi()
{
-#if QT_VERSION >= 0x040001 && defined(Q_WS_X11)
+#if defined(Q_WS_X11)
{
if (QFontDatabase().families(QFontDatabase::Gurmukhi).contains("Lohit Punjabi")) {
QFont f("Lohit Punjabi");
diff --git a/tests/auto/qtextstream/tst_qtextstream.cpp b/tests/auto/qtextstream/tst_qtextstream.cpp
index 5a6cce8..358b4b6 100644
--- a/tests/auto/qtextstream/tst_qtextstream.cpp
+++ b/tests/auto/qtextstream/tst_qtextstream.cpp
@@ -100,10 +100,8 @@ private slots:
void readLineFromTextDevice_data();
void readLineFromTextDevice();
void readLineUntilNull();
-#if QT_VERSION >= 0x040103
void readLineMaxlen_data();
void readLineMaxlen();
-#endif
void readLinesFromBufferCRCR();
// all
@@ -220,13 +218,11 @@ private slots:
void utf8IncompleteAtBufferBoundary_data();
void utf8IncompleteAtBufferBoundary();
-#if QT_VERSION >= 0x040100
// status
void status_real_read_data();
void status_real_read();
void status_integer_read();
void status_word_read();
-#endif
// use case tests
void useCase1();
diff --git a/tests/auto/qthread/tst_qthread.cpp b/tests/auto/qthread/tst_qthread.cpp
index 6b6197a..235d63b 100644
--- a/tests/auto/qthread/tst_qthread.cpp
+++ b/tests/auto/qthread/tst_qthread.cpp
@@ -326,10 +326,6 @@ void tst_QThread::isRunning()
void tst_QThread::setPriority()
{
-#if QT_VERSION < 0x040100
- QSKIP("QThread::setPriority() was introduced in 4.1.0, you are testing " QT_VERSION_STR,
- SkipAll);
-#else
Simple_Thread thread;
// cannot change the priority, since the thread is not running
@@ -401,7 +397,6 @@ void tst_QThread::setPriority()
QTest::ignoreMessage(QtWarningMsg, "QThread::setPriority: Cannot set priority, thread is not running");
thread.setPriority(QThread::TimeCriticalPriority);
QCOMPARE(thread.priority(), QThread::InheritPriority);
-#endif
}
void tst_QThread::priority()
diff --git a/tests/auto/qthreadonce/tst_qthreadonce.cpp b/tests/auto/qthreadonce/tst_qthreadonce.cpp
index 7e67dc3..f20788a 100644
--- a/tests/auto/qthreadonce/tst_qthreadonce.cpp
+++ b/tests/auto/qthreadonce/tst_qthreadonce.cpp
@@ -46,7 +46,7 @@
#include <qmutex.h>
#include <qthread.h>
#include <qwaitcondition.h>
-#include <qthreadonce.h>
+#include "qthreadonce.h"
//TESTED_CLASS=
//TESTED_FILES=corelib/thread/qthreadonce.h corelib/thread/qthreadonce.cpp
diff --git a/tests/auto/qtime/tst_qtime.cpp b/tests/auto/qtime/tst_qtime.cpp
index ea4700d..cc91e9d 100644
--- a/tests/auto/qtime/tst_qtime.cpp
+++ b/tests/auto/qtime/tst_qtime.cpp
@@ -254,11 +254,7 @@ void tst_QTime::isNull()
QTime t1;
QVERIFY( t1.isNull() );
QTime t2(0,0,0);
-#if QT_VERSION >= 0x040100
QVERIFY( !t2.isNull() );
-#else
- QVERIFY( t2.isNull() );
-#endif
QTime t3(0,0,1);
QVERIFY( !t3.isNull() );
QTime t4(0,0,0,1);
@@ -270,11 +266,7 @@ void tst_QTime::isNull()
void tst_QTime::isValid()
{
QTime t1;
-#if QT_VERSION >= 0x040100
QVERIFY( !t1.isValid() );
-#else
- QVERIFY( t1.isValid() );
-#endif
QTime t2(24,0,0,0);
QVERIFY( !t2.isValid() );
QTime t3(23,60,0,0);
@@ -599,11 +591,7 @@ void tst_QTime::fromString_data()
QTest::newRow( "data0" ) << QString("00:00:00") << QTime(0,0,0,0) << QTime(0,0,0,0);
QTest::newRow( "data1" ) << QString("10:12:34") << QTime(10,12,34,0) << QTime(10,12,34,0);
QTest::newRow( "data2" ) << QString("19:03:54.998601") << QTime(19, 3, 54, 999) << QTime(19, 3, 54, 999);
-#if QT_VERSION >= 0x040200
QTest::newRow( "data3" ) << QString("19:03:54.999601") << QTime(19, 3, 54, 999) << QTime(19, 3, 54, 999);
-#else
- QTest::newRow( "data3" ) << QString("19:03:54.999601") << QTime() << QTime();
-#endif
}
void tst_QTime::fromString()
@@ -671,9 +659,7 @@ void tst_QTime::toString_format_data()
QTest::newRow( "data2" ) << QTime(10,12,34,45) << QString("hh:m:ss:z") << QString("10:12:34:45");
QTest::newRow( "data3" ) << QTime(10,12,34,45) << QString("hh:ss ap") << QString("10:34 am");
QTest::newRow( "data4" ) << QTime(22,12,34,45) << QString("hh:zzz AP") << QString("10:045 PM");
-#if (QT_VERSION-0 >= 0x030200)
QTest::newRow( "data5" ) << QTime(230,230,230,230) << QString("hh:mm:ss") << QString();
-#endif
}
void tst_QTime::toString_format()
diff --git a/tests/auto/qtimeline/tst_qtimeline.cpp b/tests/auto/qtimeline/tst_qtimeline.cpp
index e35f406..9576193 100644
--- a/tests/auto/qtimeline/tst_qtimeline.cpp
+++ b/tests/auto/qtimeline/tst_qtimeline.cpp
@@ -42,10 +42,6 @@
#include <QtTest/QtTest>
-#if QT_VERSION < 0x040200
-QTEST_NOOP_MAIN
-#else
-
#include <qtimeline.h>
//TESTED_CLASS=
@@ -705,5 +701,3 @@ void tst_QTimeLine::resume()
QTEST_MAIN(tst_QTimeLine)
#include "tst_qtimeline.moc"
-
-#endif //QT_VERSION
diff --git a/tests/auto/qtimer/tst_qtimer.cpp b/tests/auto/qtimer/tst_qtimer.cpp
index 527628c..bffb4f2 100644
--- a/tests/auto/qtimer/tst_qtimer.cpp
+++ b/tests/auto/qtimer/tst_qtimer.cpp
@@ -83,6 +83,7 @@ private slots:
void recurringTimer();
void deleteLaterOnQTimer(); // long name, don't want to shadow QObject::deleteLater()
void moveToThread();
+ void restartedTimerFiresTooSoon();
};
class TimerHelper : public QObject
@@ -416,5 +417,69 @@ void tst_QTimer::moveToThread()
QVERIFY((ti3.timerId() & 0xffffff) != (ti1.timerId() & 0xffffff));
}
+class RestartedTimerFiresTooSoonObject : public QObject
+{
+ Q_OBJECT
+
+public:
+ QBasicTimer m_timer;
+
+ int m_interval;
+ QTime m_startedTime;
+ QEventLoop eventLoop;
+
+ inline RestartedTimerFiresTooSoonObject()
+ : QObject(), m_interval(0)
+ { }
+
+ void timerFired()
+ {
+ static int interval = 1000;
+
+ m_interval = interval;
+ m_startedTime.start();
+ m_timer.start(interval, this);
+
+ // alternate between single-shot and 1 sec
+ interval = interval ? 0 : 1000;
+ }
+
+ void timerEvent(QTimerEvent* ev)
+ {
+ if (ev->timerId() != m_timer.timerId())
+ return;
+
+ m_timer.stop();
+
+ QTime now = QTime::currentTime();
+ int elapsed = m_startedTime.elapsed();
+
+ if (elapsed < m_interval / 2) {
+ // severely too early!
+ m_timer.stop();
+ eventLoop.exit(-1);
+ return;
+ }
+
+ timerFired();
+
+ // don't do this forever
+ static int count = 0;
+ if (count++ > 20) {
+ m_timer.stop();
+ eventLoop.quit();
+ return;
+ }
+ }
+};
+
+void tst_QTimer::restartedTimerFiresTooSoon()
+{
+ RestartedTimerFiresTooSoonObject object;
+ object.timerFired();
+ QVERIFY(object.eventLoop.exec() == 0);
+}
+
QTEST_MAIN(tst_QTimer)
#include "tst_qtimer.moc"
+\
diff --git a/tests/auto/qtransform/tst_qtransform.cpp b/tests/auto/qtransform/tst_qtransform.cpp
index 8516ddb..74c405e 100644
--- a/tests/auto/qtransform/tst_qtransform.cpp
+++ b/tests/auto/qtransform/tst_qtransform.cpp
@@ -593,6 +593,16 @@ void tst_QTransform::types()
m3.translate(5.0f, 5.0f);
QCOMPARE(m3.type(), QTransform::TxScale);
QCOMPARE(m3.inverted().type(), QTransform::TxScale);
+
+ m3.setMatrix(1.0f, 0.0f, 0.0f,
+ 0.0f, 1.0f, 0.0f,
+ 0.0f, 0.0f, 2.0f);
+ QCOMPARE(m3.type(), QTransform::TxProject);
+
+ m3.setMatrix(0.0f, 2.0f, 0.0f,
+ 1.0f, 0.0f, 0.0f,
+ 0.0f, 0.0f, 2.0f);
+ QCOMPARE(m3.type(), QTransform::TxProject);
}
diff --git a/tests/auto/qtranslator/qtranslator.pro b/tests/auto/qtranslator/qtranslator.pro
index e4ad22a..0d67f70 100644
--- a/tests/auto/qtranslator/qtranslator.pro
+++ b/tests/auto/qtranslator/qtranslator.pro
@@ -3,7 +3,7 @@ SOURCES += tst_qtranslator.cpp
wince*: {
- addFiles.sources = hellotr_la.qm
+ addFiles.sources = hellotr_la.qm msgfmt_from_po.qm
addFiles.path = .
DEPLOYMENT += addFiles
}
diff --git a/tests/auto/qtreeview/tst_qtreeview.cpp b/tests/auto/qtreeview/tst_qtreeview.cpp
index e1d405d..655ea4e 100644
--- a/tests/auto/qtreeview/tst_qtreeview.cpp
+++ b/tests/auto/qtreeview/tst_qtreeview.cpp
@@ -209,6 +209,8 @@ private slots:
void indexRowSizeHint();
void addRowsWhileSectionsAreHidden();
+ void filterProxyModelCrash();
+
// task-specific tests:
void task174627_moveLeftToRoot();
void task171902_expandWith1stColHidden();
@@ -472,11 +474,7 @@ void tst_QTreeView::construction()
QCOMPARE(view.iconSize(), QSize());
QCOMPARE(view.indexAt(QPoint()), QModelIndex());
QVERIFY(!view.indexWidget(QModelIndex()));
-#if QT_VERSION >= 0x040400
QVERIFY(qobject_cast<QStyledItemDelegate *>(view.itemDelegate()));
-#else
- QVERIFY(qobject_cast<QItemDelegate *>(view.itemDelegate()));
-#endif
QVERIFY(!view.itemDelegateForColumn(-1));
QVERIFY(!view.itemDelegateForColumn(0));
QVERIFY(!view.itemDelegateForColumn(1));
@@ -1001,11 +999,7 @@ void tst_QTreeView::itemDelegate()
{
QTreeView view;
-#if QT_VERSION >= 0x040400
QVERIFY(qobject_cast<QStyledItemDelegate *>(view.itemDelegate()));
-#else
- QVERIFY(qobject_cast<QItemDelegate *>(view.itemDelegate()));
-#endif
QPointer<QAbstractItemDelegate> oldDelegate = view.itemDelegate();
otherItemDelegate = new QItemDelegate;
@@ -1680,9 +1674,16 @@ void tst_QTreeView::moveCursor()
view.setColumnHidden(0, true);
QVERIFY(view.isColumnHidden(0));
view.show();
+ qApp->setActiveWindow(&view);
- QModelIndex actual = view.moveCursor(PublicView::MoveDown, Qt::NoModifier);
+ //here the first visible index should be selected
+ //because the view got the focus
QModelIndex expected = model.index(1, 1, QModelIndex());
+ QCOMPARE(view.currentIndex(), expected);
+
+ //then pressing down should go to the next line
+ QModelIndex actual = view.moveCursor(PublicView::MoveDown, Qt::NoModifier);
+ expected = model.index(2, 1, QModelIndex());
QCOMPARE(actual, expected);
view.setRowHidden(0, QModelIndex(), false);
@@ -1862,14 +1863,8 @@ void tst_QTreeView::indexBelow()
i = view.indexBelow(i);
QVERIFY(i.isValid());
QCOMPARE(i.row(), 1);
-#if QT_VERSION >= 0x040100
i = view.indexBelow(i);
QVERIFY(!i.isValid());
-#else
- // Qt 4.0.x returns the bottom index
- i = view.indexBelow(i);
- QVERIFY(i.isValid());
-#endif
}
void tst_QTreeView::clicked()
@@ -2829,6 +2824,29 @@ void tst_QTreeView::indexRowSizeHint()
QCOMPARE(view.indexRowSizeHint(index), w->sizeHint().height());
}
+void tst_QTreeView::filterProxyModelCrash()
+{
+ QStandardItemModel model;
+ QList<QStandardItem *> items;
+ for (int i = 0; i < 100; i++)
+ items << new QStandardItem(QString::fromLatin1("item %1").arg(i));
+ model.appendColumn(items);
+
+ QSortFilterProxyModel proxy;
+ proxy.setSourceModel(&model);
+
+ QTreeView view;
+ view.setModel(&proxy);
+ view.show();
+ QTest::qWait(30);
+ proxy.invalidate();
+ view.verticalScrollBar()->setValue(15);
+ QTest::qWait(20);
+
+ proxy.invalidate();
+ view.repaint(); //used to crash
+}
+
class task174627_TreeView : public QTreeView
{
Q_OBJECT
@@ -3254,6 +3272,5 @@ void tst_QTreeView::task246536_scrollbarsNotWorking()
QVERIFY(o.count > 0);
}
-
QTEST_MAIN(tst_QTreeView)
#include "tst_qtreeview.moc"
diff --git a/tests/auto/qtreewidget/tst_qtreewidget.cpp b/tests/auto/qtreewidget/tst_qtreewidget.cpp
index b21b240..c3595c2 100644
--- a/tests/auto/qtreewidget/tst_qtreewidget.cpp
+++ b/tests/auto/qtreewidget/tst_qtreewidget.cpp
@@ -1555,9 +1555,6 @@ void tst_QTreeWidget::keyboardNavigation()
void tst_QTreeWidget::scrollToItem()
{
-#if QT_VERSION < 0x040100
- QSKIP("This behaviour will be merged from main in 4.1.0.", SkipAll);
-#else
// Check if all parent nodes of the item found are expanded.
// Reported in task #78761
QTreeWidgetItem *bar;
@@ -1586,7 +1583,6 @@ void tst_QTreeWidget::scrollToItem()
QVERIFY(testWidget->isItemExpanded(bar));
bar = bar->parent();
QVERIFY(testWidget->isItemExpanded(bar));
-#endif
}
// From task #85413
@@ -2087,7 +2083,6 @@ void tst_QTreeWidget::itemWidget()
}
}
-#if QT_VERSION >= 0x040200
void tst_QTreeWidget::insertItemsWithSorting_data()
{
QTest::addColumn<int>("sortOrder");
@@ -2259,8 +2254,6 @@ void tst_QTreeWidget::insertExpandedItemsWithSorting_data()
<< (QStringList() << "h" << "g" << "f" << "e");
}
-
-
// From Task 134978
void tst_QTreeWidget::insertExpandedItemsWithSorting()
{
@@ -2421,7 +2414,6 @@ void tst_QTreeWidget::changeDataWithSorting()
QCOMPARE(dataChangedSpy.count(), 1);
QCOMPARE(layoutChangedSpy.count(), reorderingExpected ? 1 : 0);
}
-#endif // QT_VERSION
void tst_QTreeWidget::itemOperatorLessThan()
{
@@ -2599,7 +2591,6 @@ void tst_QTreeWidget::removeSelectedItem()
QCOMPARE(selModel->isSelected(w->model()->index(0,0)), false);
delete w;
-
}
class AnotherTreeWidget : public QTreeWidget
diff --git a/tests/auto/qtreewidgetitemiterator/tst_qtreewidgetitemiterator.cpp b/tests/auto/qtreewidgetitemiterator/tst_qtreewidgetitemiterator.cpp
index 49abc6d..e4572c0 100644
--- a/tests/auto/qtreewidgetitemiterator/tst_qtreewidgetitemiterator.cpp
+++ b/tests/auto/qtreewidgetitemiterator/tst_qtreewidgetitemiterator.cpp
@@ -42,8 +42,6 @@
#include <QtTest/QtTest>
-#if QT_VERSION >= 0x040100
-
#include <qtreewidget.h>
#include <qtreewidgetitemiterator.h>
#include <qapplication.h>
@@ -61,7 +59,6 @@ public:
tst_QTreeWidgetItemIterator();
~tst_QTreeWidgetItemIterator();
-
public slots:
void initTestCase();
void cleanupTestCase();
@@ -136,7 +133,7 @@ void tst_QTreeWidgetItemIterator::initTestCase()
case 9: top->setFlags(Qt::ItemIsEnabled);break;
case 10: top->setFlags(Qt::ItemIsEnabled);break;
- case 11:
+ case 11:
top->setFlags(0);
break;
@@ -982,7 +979,6 @@ void tst_QTreeWidgetItemIterator::postdecrement()
}
-
void tst_QTreeWidgetItemIterator::plus_eq_data()
{
QTest::addColumn<int>("start");
@@ -1146,9 +1142,9 @@ void tst_QTreeWidgetItemIterator::updateIteratorAfterDeletedItem_and_ContinueIte
QTest::addColumn<int>("grandChildItems"); // Populate the tree data
// we have one iterator pointing to an item in the tree.
// This iterator will be updated if we delete the item it is pointing to.
- //
+ //
QTest::addColumn<int>("removeindex"); // The index of the node we want to remove
- QTest::addColumn<int>("iterator_initial_index"); // The new expected index of
+ QTest::addColumn<int>("iterator_initial_index"); // The new expected index of
QTest::addColumn<int>("iterator_advance_after_removal");
QTest::addColumn<QString>("iterator_new_value"); // The new current item value of the iterator
QTest::newRow("Remove 13, it points to 25, it-=1. We should get top0,child2,grandchild2") << 3 << 3 << 3 << 13 << 25 << -1 << QString("top0,child2,grandchild2");
@@ -1245,7 +1241,3 @@ void tst_QTreeWidgetItemIterator::initializeIterator()
QTEST_MAIN(tst_QTreeWidgetItemIterator)
#include "tst_qtreewidgetitemiterator.moc"
-
-#else
-QTEST_NOOP_MAIN
-#endif
diff --git a/tests/auto/qudpsocket/tst_qudpsocket.cpp b/tests/auto/qudpsocket/tst_qudpsocket.cpp
index 57e779c..e79be38 100644
--- a/tests/auto/qudpsocket/tst_qudpsocket.cpp
+++ b/tests/auto/qudpsocket/tst_qudpsocket.cpp
@@ -522,9 +522,6 @@ void tst_QUdpSocket::bindMode()
#endif
}
-#if QT_VERSION < 0x040100
- QSKIP("QUdpSocket::BindMode was added in Qt 4.1.", SkipAll);
-#else
QUdpSocket socket;
QVERIFY2(socket.bind(), socket.errorString().toLatin1().constData());
QUdpSocket socket2;
@@ -550,7 +547,6 @@ void tst_QUdpSocket::bindMode()
QVERIFY(!socket2.bind(socket.localPort()));
QVERIFY(!socket2.bind(socket.localPort(), QUdpSocket::ReuseAddressHint));
#endif
-#endif
}
void tst_QUdpSocket::writeDatagramToNonExistingPeer_data()
diff --git a/tests/auto/qurl/tst_qurl.cpp b/tests/auto/qurl/tst_qurl.cpp
index 3b938f2..5a79792 100644
--- a/tests/auto/qurl/tst_qurl.cpp
+++ b/tests/auto/qurl/tst_qurl.cpp
@@ -1129,11 +1129,7 @@ void tst_QUrl::setUrl()
check("host",ulong.host(),"swww.gad.de");
check("path",ulong.path(),"/servlet/CookieAccepted");
-#if QT_VERSION < 300
- qt_set_locale_codec( KGlobal::charsets()->codecForName( "iso-8859-1" ) );
-#else
QTextCodec::setCodecForLocale( KGlobal::charsets()->codecForName( "iso-8859-1" ) );
-#endif
// UTF8 tests
KURL uloc("/home/dfaure/konqtests/Matériel");
check("locale8bit",uloc.url().latin1(),"file:/home/dfaure/konqtests/Mat%E9riel"); // escaping the letter would be correct too
@@ -1155,11 +1151,7 @@ void tst_QUrl::setUrl()
uloc = KURL::fromPathOrURL( "" );
check("fromPathOrURL url", uloc.isValid()?"valid":"malformed", "malformed");
-#if QT_VERSION < 300
- qt_set_locale_codec( KGlobal::charsets()->codecForName( "koi8-r" ) );
-#else
QTextCodec::setCodecForLocale( KGlobal::charsets()->codecForName( "koi8-r" ) );
-#endif
baseURL = "file:/home/coolo";
KURL russian = baseURL.directory(false, true) + QString::fromLocal8Bit( "ÆÇÎ7" );
check( "russian", russian.url(), "file:/home/%C6%C7%CE7" );
diff --git a/tests/auto/qvariant/tst_qvariant.cpp b/tests/auto/qvariant/tst_qvariant.cpp
index 78d597e..d15f9c8 100644
--- a/tests/auto/qvariant/tst_qvariant.cpp
+++ b/tests/auto/qvariant/tst_qvariant.cpp
@@ -2414,13 +2414,9 @@ void tst_QVariant::url()
void tst_QVariant::globalColor()
{
-#if QT_VERSION >= 0x040200
QVariant variant(Qt::blue);
QVERIFY(variant.type() == QVariant::Color);
QVERIFY(qVariantValue<QColor>(variant) == QColor(Qt::blue));
-#else
- QSKIP("Implemented/fixed in 4.2", SkipSingle);
-#endif
}
void tst_QVariant::variantMap()
diff --git a/tests/auto/qwaitcondition/tst_qwaitcondition.cpp b/tests/auto/qwaitcondition/tst_qwaitcondition.cpp
index b2305cb..1e0136f 100644
--- a/tests/auto/qwaitcondition/tst_qwaitcondition.cpp
+++ b/tests/auto/qwaitcondition/tst_qwaitcondition.cpp
@@ -161,9 +161,6 @@ public:
void tst_QWaitCondition::wait_QMutex()
{
-#if defined(Q_OS_WIN32) && QT_VERSION < 0x030200
- QSKIP("Known race-conditions cause sporadic failures", SkipAll);
-#else
int x;
for (int i = 0; i < iterations; ++i) {
{
@@ -240,7 +237,6 @@ void tst_QWaitCondition::wait_QMutex()
}
}
}
-#endif
}
void tst_QWaitCondition::wait_QReadWriteLock()
@@ -446,9 +442,6 @@ int wake_Thread_2::count = 0;
void tst_QWaitCondition::wakeOne()
{
-#if defined(Q_OS_WIN32) && QT_VERSION < 0x030200
- QSKIP("Known race-conditions cause sporadic failures", SkipAll);
-#else
int x;
// wake up threads, one at a time
for (int i = 0; i < iterations; ++i) {
@@ -597,7 +590,7 @@ void tst_QWaitCondition::wakeOne()
// QReadWriteLock
QReadWriteLock readWriteLock;
- wake_Thread_2 rwthread[ThreadCount];
+ wake_Thread_2 rwthread[ThreadCount];
readWriteLock.lockForWrite();
for (x = 0; x < ThreadCount; ++x) {
@@ -641,14 +634,10 @@ void tst_QWaitCondition::wakeOne()
QCOMPARE(wake_Thread_2::count, 0);
}
-#endif
}
void tst_QWaitCondition::wakeAll()
{
-#if defined(Q_OS_WIN32) && QT_VERSION < 0x030200
- QSKIP("Known race-conditions cause sporadic failures", SkipAll);
-#else
int x;
for (int i = 0; i < iterations; ++i) {
QMutex mutex;
@@ -715,7 +704,6 @@ void tst_QWaitCondition::wakeAll()
QCOMPARE(exited, ThreadCount);
QCOMPARE(wake_Thread_2::count, 0);
}
-#endif
}
class wait_RaceConditionThread : public QThread
diff --git a/tests/auto/qwidget/tst_qwidget.cpp b/tests/auto/qwidget/tst_qwidget.cpp
index dfd0792..5afaebf 100644
--- a/tests/auto/qwidget/tst_qwidget.cpp
+++ b/tests/auto/qwidget/tst_qwidget.cpp
@@ -283,6 +283,11 @@ private slots:
void render_task217815();
void render_windowOpacity();
void render_systemClip();
+ void render_systemClip2_data();
+ void render_systemClip2();
+ void render_systemClip3_data();
+ void render_systemClip3();
+ void render_task252837();
void setContentsMargins();
@@ -2564,9 +2569,6 @@ void tst_QWidget::setGeometry()
void tst_QWidget::windowOpacity()
{
-#if defined(Q_WS_X11) && QT_VERSION < 0x040200
- QSKIP("QWidget::windowOpacity is broken in Qt < 4.2 on X11", SkipAll);
-#else
#ifdef Q_OS_WINCE
QSKIP( "Windows CE does not support windowOpacity", SkipAll);
#endif
@@ -2576,43 +2578,27 @@ void tst_QWidget::windowOpacity()
// Initial value should be 1.0
QCOMPARE(widget.windowOpacity(), 1.0);
// children should always return 1.0
-#if QT_VERSION < 0x040200
- QEXPECT_FAIL("", "Prior to 4.2, all children widgets returned 0.0", Continue);
-#endif
QCOMPARE(child.windowOpacity(), 1.0);
widget.setWindowOpacity(0.0);
QCOMPARE(widget.windowOpacity(), 0.0);
child.setWindowOpacity(0.0);
-#if QT_VERSION < 0x040200
- QEXPECT_FAIL("", "Prior to 4.2, all children widgets returned 0.0", Continue);
-#endif
QCOMPARE(child.windowOpacity(), 1.0);
widget.setWindowOpacity(1.0);
QCOMPARE(widget.windowOpacity(), 1.0);
child.setWindowOpacity(1.0);
-#if QT_VERSION < 0x040200
- QEXPECT_FAIL("", "Prior to 4.2, all children widgets returned 0.0", Continue);
-#endif
QCOMPARE(child.windowOpacity(), 1.0);
widget.setWindowOpacity(2.0);
QCOMPARE(widget.windowOpacity(), 1.0);
child.setWindowOpacity(2.0);
-#if QT_VERSION < 0x040200
- QEXPECT_FAIL("", "Prior to 4.2, all children widgets returned 0.0", Continue);
-#endif
QCOMPARE(child.windowOpacity(), 1.0);
widget.setWindowOpacity(-1.0);
QCOMPARE(widget.windowOpacity(), 0.0);
child.setWindowOpacity(-1.0);
-#if QT_VERSION < 0x040200
- QEXPECT_FAIL("", "Prior to 4.2, all children widgets returned 0.0", Continue);
-#endif
QCOMPARE(child.windowOpacity(), 1.0);
-#endif
}
class UpdateWidget : public QWidget
@@ -5321,7 +5307,7 @@ void tst_QWidget::subtractOpaqueSiblings()
{
#ifdef QT_MAC_USE_COCOA
QSKIP("Cocoa only has rect granularity.", SkipAll);
-#elif defined(Q_WIDGET_USE_DIRTYLIST) || (QT_VERSION >= 0x040400)
+#else
QWidget w;
w.setGeometry(50, 50, 300, 300);
@@ -6916,6 +6902,212 @@ void tst_QWidget::render_systemClip()
#endif
}
+void tst_QWidget::render_systemClip2_data()
+{
+ QTest::addColumn<bool>("autoFillBackground");
+ QTest::addColumn<bool>("usePaintEvent");
+ QTest::addColumn<QColor>("expectedColor");
+
+ QTest::newRow("Only auto-fill background") << true << false << QColor(Qt::blue);
+ QTest::newRow("Only draw in paintEvent") << false << true << QColor(Qt::green);
+ QTest::newRow("Auto-fill background and draw in paintEvent") << true << true << QColor(Qt::green);
+}
+
+void tst_QWidget::render_systemClip2()
+{
+ QFETCH(bool, autoFillBackground);
+ QFETCH(bool, usePaintEvent);
+ QFETCH(QColor, expectedColor);
+
+ Q_ASSERT_X(expectedColor != QColor(Qt::red), Q_FUNC_INFO,
+ "Qt::red is the reference color for the image, pick another color");
+
+ class MyWidget : public QWidget
+ {
+ public:
+ bool usePaintEvent;
+ void paintEvent(QPaintEvent *)
+ {
+ if (usePaintEvent)
+ QPainter(this).fillRect(rect(), Qt::green);
+ }
+ };
+
+ MyWidget widget;
+ widget.usePaintEvent = usePaintEvent;
+ widget.setPalette(Qt::blue);
+ // NB! widget.setAutoFillBackground(autoFillBackground) won't do the
+ // trick here since the widget is a top-level. The background is filled
+ // regardless, unless Qt::WA_OpaquePaintEvent or Qt::WA_NoSystemBackground
+ // is set. We therefore use the opaque attribute to turn off auto-fill.
+ if (!autoFillBackground)
+ widget.setAttribute(Qt::WA_OpaquePaintEvent);
+ widget.resize(100, 100);
+
+ QImage image(widget.size(), QImage::Format_RGB32);
+ image.fill(QColor(Qt::red).rgb());
+
+ QPaintEngine *paintEngine = image.paintEngine();
+ QVERIFY(paintEngine);
+
+ QRegion systemClip(QRegion(50, 0, 50, 10));
+ systemClip += QRegion(90, 10, 10, 40);
+ paintEngine->setSystemClip(systemClip);
+
+ // Render entire widget directly onto device.
+ widget.render(&image);
+
+#ifdef RENDER_DEBUG
+ image.save("systemclip_with_device.png");
+#endif
+ // All pixels within the system clip should now be
+ // the expectedColor, and the rest should be red.
+ for (int i = 0; i < image.height(); ++i) {
+ for (int j = 0; j < image.width(); ++j) {
+ if (systemClip.contains(QPoint(j, i)))
+ QCOMPARE(image.pixel(j, i), expectedColor.rgb());
+ else
+ QCOMPARE(image.pixel(j, i), QColor(Qt::red).rgb());
+ }
+ }
+
+ // Refill image with red.
+ image.fill(QColor(Qt::red).rgb());
+ paintEngine->setSystemClip(systemClip);
+
+ // Do the same with an untransformed painter.
+ QPainter painter(&image);
+ //Make sure we're using the same paint engine and has the right clip set.
+ QCOMPARE(painter.paintEngine(), paintEngine);
+ QCOMPARE(paintEngine->systemClip(), systemClip);
+
+ widget.render(&painter);
+
+#ifdef RENDER_DEBUG
+ image.save("systemclip_with_untransformed_painter.png");
+#endif
+ // All pixels within the system clip should now be
+ // the expectedColor, and the rest should be red.
+ for (int i = 0; i < image.height(); ++i) {
+ for (int j = 0; j < image.width(); ++j) {
+ if (systemClip.contains(QPoint(j, i)))
+ QCOMPARE(image.pixel(j, i), expectedColor.rgb());
+ else
+ QCOMPARE(image.pixel(j, i), QColor(Qt::red).rgb());
+ }
+ }
+}
+
+void tst_QWidget::render_systemClip3_data()
+{
+ QTest::addColumn<QSize>("size");
+ QTest::addColumn<bool>("useSystemClip");
+
+ // Reference: http://en.wikipedia.org/wiki/Flag_of_Norway
+ QTest::newRow("Norwegian Civil Flag") << QSize(220, 160) << false;
+ QTest::newRow("Norwegian War Flag") << QSize(270, 160) << true;
+}
+
+// This test ensures that the current engine clip (systemClip + painter clip)
+// is preserved after QPainter::setClipRegion(..., Qt::ReplaceClip);
+void tst_QWidget::render_systemClip3()
+{
+ QFETCH(QSize, size);
+ QFETCH(bool, useSystemClip);
+
+ // Calculate the inner/outer cross of the flag.
+ QRegion outerCross(0, 0, size.width(), size.height());
+ outerCross -= QRect(0, 0, 60, 60);
+ outerCross -= QRect(100, 0, size.width() - 100, 60);
+ outerCross -= QRect(0, 100, 60, 60);
+ outerCross -= QRect(100, 100, size.width() - 100, 60);
+
+ QRegion innerCross(0, 0, size.width(), size.height());
+ innerCross -= QRect(0, 0, 70, 70);
+ innerCross -= QRect(90, 0, size.width() - 90, 70);
+ innerCross -= QRect(0, 90, 70, 70);
+ innerCross -= QRect(90, 90, size.width() - 90, 70);
+
+ const QRegion redArea(QRegion(0, 0, size.width(), size.height()) - outerCross);
+ const QRegion whiteArea(outerCross - innerCross);
+ const QRegion blueArea(innerCross);
+ QRegion systemClip;
+
+ // Okay, here's the image that should look like a Norwegian civil/war flag in the end.
+ QImage flag(size, QImage::Format_ARGB32);
+ flag.fill(QColor(Qt::transparent).rgba());
+
+ if (useSystemClip) {
+ QPainterPath warClip(QPoint(size.width(), 0));
+ warClip.lineTo(size.width() - 110, 60);
+ warClip.lineTo(size.width(), 80);
+ warClip.lineTo(size.width() - 110, 100);
+ warClip.lineTo(size.width(), 160);
+ warClip.closeSubpath();
+ systemClip = QRegion(0, 0, size.width(), size.height()) - QRegion(warClip.toFillPolygon().toPolygon());
+ flag.paintEngine()->setSystemClip(systemClip);
+ }
+
+ QPainter painter(&flag);
+ painter.fillRect(QRect(QPoint(), size), Qt::red); // Fill image background with red.
+ painter.setClipRegion(outerCross); // Limit widget painting to inside the outer cross.
+
+ // Here's the widget that's supposed to draw the inner/outer cross of the flag.
+ // The outer cross (white) should be drawn when the background is auto-filled, and
+ // the inner cross (blue) should be drawn in the paintEvent.
+ class MyWidget : public QWidget
+ { public:
+ void paintEvent(QPaintEvent *)
+ {
+ QPainter painter(this);
+ // Be evil and try to paint outside the outer cross. This should not be
+ // possible since the shared painter is clipped to the outer cross.
+ painter.setClipRect(0, 0, 60, 60, Qt::ReplaceClip);
+ painter.fillRect(rect(), Qt::green);
+ painter.setClipRegion(clip, Qt::ReplaceClip);
+ painter.fillRect(rect(), Qt::blue);
+ }
+ QRegion clip;
+ };
+
+ MyWidget widget;
+ widget.clip = innerCross;
+ widget.setFixedSize(size);
+ widget.setPalette(Qt::white);
+ widget.setAutoFillBackground(true);
+ widget.render(&painter);
+
+#ifdef RENDER_DEBUG
+ flag.save("flag.png");
+#endif
+
+ // Let's make sure we got a Norwegian flag.
+ for (int i = 0; i < flag.height(); ++i) {
+ for (int j = 0; j < flag.width(); ++j) {
+ const QPoint pixel(j, i);
+ const QRgb pixelValue = flag.pixel(pixel);
+ if (useSystemClip && !systemClip.contains(pixel))
+ QCOMPARE(pixelValue, QColor(Qt::transparent).rgba());
+ else if (redArea.contains(pixel))
+ QCOMPARE(pixelValue, QColor(Qt::red).rgba());
+ else if (whiteArea.contains(pixel))
+ QCOMPARE(pixelValue, QColor(Qt::white).rgba());
+ else
+ QCOMPARE(pixelValue, QColor(Qt::blue).rgba());
+ }
+ }
+}
+
+void tst_QWidget::render_task252837()
+{
+ QWidget widget;
+ widget.resize(200, 200);
+
+ QPixmap pixmap(widget.size());
+ QPainter painter(&pixmap);
+ // Please do not crash.
+ widget.render(&painter);
+}
void tst_QWidget::setContentsMargins()
{
QLabel label("why does it always rain on me?");
@@ -8179,6 +8371,7 @@ void tst_QWidget::translucentWidget()
ColorRedWidget label;
label.setFixedSize(16,16);
label.setAttribute(Qt::WA_TranslucentBackground);
+ label.move(qApp->desktop()->availableGeometry().topLeft());
label.show();
#ifdef Q_WS_X11
qt_x11_wait_for_window_manager(&label);
@@ -8734,7 +8927,9 @@ void tst_QWidget::toplevelLineEditFocus()
QLineEdit w;
w.show();
+#ifdef Q_WS_X11
qt_x11_wait_for_window_manager(&w);
+#endif
QTest::qWait(200);
QCOMPARE(QApplication::activeWindow(), &w);
diff --git a/tests/auto/qwmatrix/tst_qwmatrix.cpp b/tests/auto/qwmatrix/tst_qwmatrix.cpp
index 47fd41f..4a816a8 100644
--- a/tests/auto/qwmatrix/tst_qwmatrix.cpp
+++ b/tests/auto/qwmatrix/tst_qwmatrix.cpp
@@ -299,16 +299,12 @@ void tst_QWMatrix::mapping_data()
void tst_QWMatrix::mapRect()
{
-#if QT_VERSION >= 0x030100
QFETCH( QMatrix, matrix );
QFETCH( QRect, src );
// qDebug( "got src: %d/%d (%d/%d), matrix=[ %f %f %f %f %f %f ]",
-// src.x(), src.y(), src.width(), src.height(),
-// matrix.m11(), matrix.m12(), matrix.m21(), matrix.m22(), matrix.dx(), matrix.dy() );
+// src.x(), src.y(), src.width(), src.height(),
+// matrix.m11(), matrix.m12(), matrix.m21(), matrix.m22(), matrix.dx(), matrix.dy() );
QTEST( QPolygon( matrix.mapRect(src) ), "res" );
-#else
- QSKIP( "Not tested with Qt versions < 3.1", SkipAll);
-#endif
}
void tst_QWMatrix::operator_star_qrect()
@@ -349,7 +345,6 @@ void tst_QWMatrix::operator_star_qwmatrix()
void tst_QWMatrix::assignments()
{
-#if QT_VERSION >= 0x040000
QMatrix m;
m.scale(2, 3);
m.rotate(45);
@@ -371,24 +366,16 @@ void tst_QWMatrix::assignments()
QCOMPARE(m.m22(), c2.m22());
QCOMPARE(m.dx(), c2.dx());
QCOMPARE(m.dy(), c2.dy());
-#else
- QSKIP( "Not tested with Qt versions < 4.0", SkipAll);
-#endif
}
void tst_QWMatrix::mapToPolygon()
{
-#if QT_VERSION >= 0x030100
QFETCH( QMatrix, matrix );
QFETCH( QRect, src );
QFETCH( QPolygon, res );
QCOMPARE( matrix.mapToPolygon( src ), res );
-#else
- QSKIP( "Not tested with Qt versions < 3.1", SkipAll);
-// qDebug("passing test; transformations are broken in 3.0.x" );
-#endif
}
diff --git a/tests/auto/qwritelocker/tst_qwritelocker.cpp b/tests/auto/qwritelocker/tst_qwritelocker.cpp
index 21bfa8a..258309d 100644
--- a/tests/auto/qwritelocker/tst_qwritelocker.cpp
+++ b/tests/auto/qwritelocker/tst_qwritelocker.cpp
@@ -189,9 +189,6 @@ void tst_QWriteLocker::unlockAndRelockTest()
void tst_QWriteLocker::lockerStateTest()
{
-#if QT_VERSION < 0x040200
- QSKIP("QWriteLocker doesn't keep state in Qt < 4.2", SkipAll);
-#else
class LockerStateThread : public tst_QWriteLockerThread
{
public:
@@ -228,7 +225,6 @@ void tst_QWriteLocker::lockerStateTest()
delete thread;
thread = 0;
-#endif
}
QTEST_MAIN(tst_QWriteLocker)
diff --git a/tests/auto/qxmlstream/XML-Test-Suite-LICENSE.txt b/tests/auto/qxmlstream/XML-Test-Suite-LICENSE.txt
new file mode 100644
index 0000000..bd84fae
--- /dev/null
+++ b/tests/auto/qxmlstream/XML-Test-Suite-LICENSE.txt
@@ -0,0 +1,59 @@
+The XML testsuite available here is a copy of the Extensible Markup
+Language (XML) Conformance Test Suites provided by W3C. Please see
+http://www.w3.org/XML/Test/ for updates and other information.
+
+These files are licensed under the W3C Software License (19980720),
+reproduced below:
+
+---
+W3C® SOFTWARE NOTICE AND LICENSE
+
+Copyright © 1994-2002 World Wide Web Consortium, (Massachusetts
+Institute of Technology, Institut National de Recherche en
+Informatique et en Automatique, Keio University). All Rights
+Reserved. http://www.w3.org/Consortium/Legal/
+
+This W3C work (including software, documents, or other related items)
+is being provided by the copyright holders under the following
+license. By obtaining, using and/or copying this work, you (the
+licensee) agree that you have read, understood, and will comply with
+the following terms and conditions:
+
+Permission to use, copy, modify, and distribute this software and its
+documentation, with or without modification, for any purpose and
+without fee or royalty is hereby granted, provided that you include
+the following on ALL copies of the software and documentation or
+portions thereof, including modifications, that you make:
+
+ 1. The full text of this NOTICE in a location viewable to users of
+ the redistributed or derivative work.
+
+ 2. Any pre-existing intellectual property disclaimers, notices, or
+ terms and conditions. If none exist, a short notice of the
+ following form (hypertext is preferred, text is permitted) should
+ be used within the body of any redistributed or derivative code:
+ "Copyright © [$date-of-software] World Wide Web Consortium,
+ (Massachusetts Institute of Technology, Institut National de
+ Recherche en Informatique et en Automatique, Keio University). All
+ Rights Reserved. http://www.w3.org/Consortium/Legal/"
+
+ 3. Notice of any changes or modifications to the W3C files, including
+ the date changes were made. (We recommend you provide URIs to the
+ location from which the code is derived.)
+
+THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND COPYRIGHT
+HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED,
+INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY OR FITNESS
+FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE OR
+DOCUMENTATION WILL NOT INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS,
+TRADEMARKS OR OTHER RIGHTS.
+
+COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL
+OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR
+DOCUMENTATION.
+
+The name and trademarks of copyright holders may NOT be used in
+advertising or publicity pertaining to the software without specific,
+written prior permission. Title to copyright in this software and any
+associated documentation will at all times remain with copyright
+holders.
diff --git a/tests/auto/rcc/tst_rcc.cpp b/tests/auto/rcc/tst_rcc.cpp
index 3297b2b..57649b4 100644
--- a/tests/auto/rcc/tst_rcc.cpp
+++ b/tests/auto/rcc/tst_rcc.cpp
@@ -59,8 +59,6 @@ public:
private slots:
void rcc_data();
void rcc();
-
-private:
};
@@ -68,18 +66,9 @@ QString findExpectedFile(const QString &base)
{
QString expectedrccfile = base;
- if (QT_VERSION >= 0x040500 && QFileInfo(expectedrccfile + QLatin1String(".450")).exists())
+ // Must be updated with each minor release.
+ if (QFileInfo(expectedrccfile + QLatin1String(".450")).exists())
expectedrccfile += QLatin1String(".450");
- else if (QT_VERSION >= 0x040400 && QFileInfo(expectedrccfile + QLatin1String(".440")).exists())
- expectedrccfile += QLatin1String(".440");
- else if (QT_VERSION >= 0x040300 && QFileInfo(expectedrccfile + QLatin1String(".430")).exists())
- expectedrccfile += QLatin1String(".430");
- else if (QT_VERSION >= 0x040200 && QFileInfo(expectedrccfile + QLatin1String(".420")).exists())
- expectedrccfile += QLatin1String(".420");
- else if (QT_VERSION >= 0x040100 && QFileInfo(expectedrccfile + QLatin1String(".410")).exists())
- expectedrccfile += QLatin1String(".410");
- else if (QT_VERSION >= 0x040000 && QFileInfo(expectedrccfile + QLatin1String(".400")).exists())
- expectedrccfile += QLatin1String(".400");
return expectedrccfile;
}
diff --git a/tests/auto/uic/baseline/languagesdialog.ui.h b/tests/auto/uic/baseline/languagesdialog.ui.h
index a0b9cae..fbe57ca 100644
--- a/tests/auto/uic/baseline/languagesdialog.ui.h
+++ b/tests/auto/uic/baseline/languagesdialog.ui.h
@@ -1,8 +1,8 @@
/********************************************************************************
** Form generated from reading ui file 'languagesdialog.ui'
**
-** Created: Mon Jun 16 17:57:32 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Fri May 15 16:58:03 2009
+** by: Qt User Interface Compiler version 4.5.2
**
** WARNING! All changes made in this file will be lost when recompiling ui file!
********************************************************************************/
@@ -57,7 +57,7 @@ public:
upButton->setObjectName(QString::fromUtf8("upButton"));
upButton->setEnabled(false);
QIcon icon;
- icon.addPixmap(QPixmap(QString::fromUtf8(":/images/up.png")), QIcon::Normal, QIcon::Off);
+ icon.addFile(QString::fromUtf8(":/images/up.png"), QSize(), QIcon::Normal, QIcon::Off);
upButton->setIcon(icon);
hboxLayout->addWidget(upButton);
@@ -66,7 +66,7 @@ public:
downButton->setObjectName(QString::fromUtf8("downButton"));
downButton->setEnabled(false);
QIcon icon1;
- icon1.addPixmap(QPixmap(QString::fromUtf8(":/images/down.png")), QIcon::Normal, QIcon::Off);
+ icon1.addFile(QString::fromUtf8(":/images/down.png"), QSize(), QIcon::Normal, QIcon::Off);
downButton->setIcon(icon1);
hboxLayout->addWidget(downButton);
@@ -75,7 +75,7 @@ public:
removeButton->setObjectName(QString::fromUtf8("removeButton"));
removeButton->setEnabled(false);
QIcon icon2;
- icon2.addPixmap(QPixmap(QString::fromUtf8(":/images/editdelete.png")), QIcon::Normal, QIcon::Off);
+ icon2.addFile(QString::fromUtf8(":/images/editdelete.png"), QSize(), QIcon::Normal, QIcon::Off);
removeButton->setIcon(icon2);
hboxLayout->addWidget(removeButton);
@@ -84,7 +84,7 @@ public:
openFileButton->setObjectName(QString::fromUtf8("openFileButton"));
openFileButton->setEnabled(true);
QIcon icon3;
- icon3.addPixmap(QPixmap(QString::fromUtf8(":/images/mac/fileopen.png")), QIcon::Normal, QIcon::Off);
+ icon3.addFile(QString::fromUtf8(":/images/mac/fileopen.png"), QSize(), QIcon::Normal, QIcon::Off);
openFileButton->setIcon(icon3);
hboxLayout->addWidget(openFileButton);
diff --git a/tests/auto/utf8/tst_utf8.cpp b/tests/auto/utf8/tst_utf8.cpp
new file mode 100644
index 0000000..3aef69f
--- /dev/null
+++ b/tests/auto/utf8/tst_utf8.cpp
@@ -0,0 +1,309 @@
+/****************************************************************************
+**
+** Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (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 either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** 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.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <QtTest/QtTest>
+
+#include <qtextcodec.h>
+#include <qsharedpointer.h>
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+static const char utf8bom[] = "\xEF\xBB\xBF";
+
+class tst_Utf8 : public QObject
+{
+ Q_OBJECT
+
+public:
+ // test data:
+ QTextCodec *codec;
+ QString (*from8BitPtr)(const char *, int);
+ QByteArray (QString:: *to8Bit)() const;
+
+ inline QString from8Bit(const QByteArray &ba)
+ { return from8BitPtr(ba.constData(), ba.length()); }
+public slots:
+ void initTestCase();
+ void init();
+
+private slots:
+ void roundTrip_data();
+ void roundTrip();
+
+ void charByChar_data();
+ void charByChar();
+
+ void invalidUtf8_data();
+ void invalidUtf8();
+};
+
+void tst_Utf8::initTestCase()
+{
+ QTest::addColumn<bool>("useLocale");
+ QTest::newRow("utf8codec") << false;
+
+ // is the locale UTF-8?
+ if (QString(QChar(QChar::ReplacementCharacter)).toLocal8Bit() == "\xEF\xBF\xBD") {
+ QTest::newRow("localecodec") << true;
+ qDebug() << "locale is utf8";
+ }
+}
+
+void tst_Utf8::init()
+{
+ QFETCH_GLOBAL(bool, useLocale);
+ if (useLocale) {
+ codec = QTextCodec::codecForLocale();
+ from8BitPtr = &QString::fromLocal8Bit;
+ to8Bit = &QString::toLocal8Bit;
+ } else {
+ codec = QTextCodec::codecForMib(106);
+ from8BitPtr = &QString::fromUtf8;
+ to8Bit = &QString::toUtf8;
+ }
+}
+
+void tst_Utf8::roundTrip_data()
+{
+ QTest::addColumn<QByteArray>("utf8");
+ QTest::addColumn<QString>("utf16");
+
+ QTest::newRow("empty") << QByteArray() << QString();
+ QTest::newRow("nul") << QByteArray("", 1) << QString(QChar(QChar::Null));
+
+ static const char ascii[] = "This is a standard US-ASCII message";
+ QTest::newRow("ascii") << QByteArray(ascii) << ascii;
+
+ static const char ascii2[] = "\1This\2is\3an\4US-ASCII\020 message interspersed with control chars";
+ QTest::newRow("ascii2") << QByteArray(ascii2) << ascii2;
+
+ static const char utf8_1[] = "\302\240"; // NBSP
+ QTest::newRow("utf8_1") << QByteArray(utf8_1) << QString(QChar(QChar::Nbsp));
+
+ static const char utf8_2[] = "\342\202\254"; // Euro symbol
+ QTest::newRow("utf8_2") << QByteArray(utf8_2) << QString(QChar(0x20AC));
+
+#if 0
+ // Can't test this because QString::fromUtf8 consumes it
+ static const char utf8_3[] = "\357\273\277"; // byte order mark
+ QTest::newRow("utf8_3") << QByteArray(utf8_3) << QString(QChar(QChar::ByteOrderMark));
+#endif
+
+ static const char utf8_4[] = "\357\277\275"; // replacement char
+ QTest::newRow("utf8_4") << QByteArray(utf8_4) << QString(QChar(QChar::ReplacementCharacter));
+
+ static const char utf8_5[] = "\360\220\210\203"; // U+010203
+ static const uint utf32_5[] = { 0x010203 };
+ QTest::newRow("utf8_5") << QByteArray(utf8_5) << QString::fromUcs4(utf32_5, 1);
+
+ static const char utf8_6[] = "\364\217\277\277"; // U+10FFFF
+ static const uint utf32_6[] = { 0x10FFFF };
+ QTest::newRow("utf8_6") << QByteArray(utf8_6) << QString::fromUcs4(utf32_6, 1);
+
+ static const char utf8_7[] = "abc\302\240\303\241\303\251\307\275 \342\202\254def";
+ static const ushort utf16_7[] = { 'a', 'b', 'c', 0x00A0,
+ 0x00E1, 0x00E9, 0x01FD,
+ ' ', 0x20AC, 'd', 'e', 'f', 0 };
+ QTest::newRow("utf8_7") << QByteArray(utf8_7) << QString::fromUtf16(utf16_7);
+
+ static const char utf8_8[] = "abc\302\240\303\241\303\251\307\275 \364\217\277\277 \342\202\254def";
+ static const uint utf32_8[] = { 'a', 'b', 'c', 0x00A0,
+ 0x00E1, 0x00E9, 0x01FD,
+ ' ', 0x10FFFF, ' ',
+ 0x20AC, 'd', 'e', 'f', 0 };
+ QTest::newRow("utf8_8") << QByteArray(utf8_8) << QString::fromUcs4(utf32_8);
+}
+
+void tst_Utf8::roundTrip()
+{
+ QFETCH(QByteArray, utf8);
+ QFETCH(QString, utf16);
+
+ QCOMPARE((utf16.*to8Bit)(), utf8);
+ QCOMPARE(from8Bit(utf8), utf16);
+
+ QCOMPARE((from8Bit(utf8).*to8Bit)(), utf8);
+ QCOMPARE(from8Bit((utf16.*to8Bit)()), utf16);
+}
+
+void tst_Utf8::charByChar_data()
+{
+ roundTrip_data();
+}
+
+void tst_Utf8::charByChar()
+{
+ QFETCH(QByteArray, utf8);
+ QFETCH(QString, utf16);
+
+ {
+ // from utf16 to utf8 char by char:
+ QSharedPointer<QTextEncoder> encoder = QSharedPointer<QTextEncoder>(codec->makeEncoder());
+ QByteArray encoded;
+
+ for (int i = 0; i < utf16.length(); ++i) {
+ encoded += encoder->fromUnicode(utf16.constData() + i, 1);
+ QVERIFY(!encoder->hasFailure());
+ }
+
+ if (encoded.startsWith(utf8bom))
+ encoded = encoded.mid(strlen(utf8bom));
+ QCOMPARE(encoded, utf8);
+ }
+ {
+ // from utf8 to utf16 char by char:
+ QSharedPointer<QTextDecoder> decoder = QSharedPointer<QTextDecoder>(codec->makeDecoder());
+ QString decoded;
+
+ for (int i = 0; i < utf8.length(); ++i) {
+ decoded += decoder->toUnicode(utf8.constData() + i, 1);
+ QVERIFY(!decoder->hasFailure());
+ }
+
+ QCOMPARE(decoded, utf16);
+ }
+}
+
+void tst_Utf8::invalidUtf8_data()
+{
+ QTest::addColumn<QByteArray>("utf8");
+
+ QTest::newRow("1char") << QByteArray("\x80");
+ QTest::newRow("2chars") << QByteArray("\xC2\xC0");
+ QTest::newRow("3chars-1") << QByteArray("\xE0\xA0\xC0");
+ QTest::newRow("3chars-2") << QByteArray("\xE0\xC0\xA0");
+ QTest::newRow("4chars-1") << QByteArray("\xF0\x90\x80\xC0");
+ QTest::newRow("4chars-2") << QByteArray("\xF0\x90\xC0\x80");
+ QTest::newRow("4chars-3") << QByteArray("\xF0\xC0\x80\x80");
+
+ // U+FFFE and U+FFFF are non-characters and must not be present
+ // U+FFFE: 1111 11 1111 11 1110
+ // encoding: xxxz:1111 xz11:1111 xz11:1110
+ QTest::newRow("fffe") << QByteArray("\xEF\xBF\xBE");
+ // U+FFFF: 1111 11 1111 11 1111
+ // encoding: xxxz:1111 xz11:1111 xz11:1111
+ QTest::newRow("ffff") << QByteArray("\xEF\xBF\xBF");
+
+ // Surrogate pairs must now be present either
+ // U+D800: 1101 10 0000 00 0000
+ // encoding: xxxz:1101 xz10:0000 xz00:0000
+ QTest::newRow("hi-surrogate") << QByteArray("\xED\xA0\x80");
+ // U+DC00: 1101 11 0000 00 0000
+ // encoding: xxxz:1101 xz11:0000 xz00:0000
+ QTest::newRow("lo-surrogate") << QByteArray("\xED\xB0\x80");
+
+ // not even in pair:
+ QTest::newRow("surrogate-pair") << QByteArray("\xED\xA0\x80\xED\xB0\x80");
+
+ // Characters outside the Unicode range:
+ // 0x110000: 00 0100 01 0000 00 0000 00 0000
+ // encoding: xxxx:z100 xz01:0000 xz00:0000 xz00:0000
+ QTest::newRow("non-unicode-1") << QByteArray("\xF4\x90\x80\x80");
+ // 0x200000: 00 1000 00 0000 00 0000 00 0000
+ // encoding: xxxx:xz00 xz00:1000 xz00:0000 xz00:0000 xz00:0000
+ QTest::newRow("non-unicode-2") << QByteArray("\xF8\x88\x80\x80\x80");
+ // 0x04000000: 0100 00 0000 00 0000 00 0000 00 0000
+ // encoding: xxxx:xxz0 xz00:0100 xz00:0000 xz00:0000 xz00:0001 xz00:0001
+ QTest::newRow("non-unicode-3") << QByteArray("\xFC\x84\x80\x80\x80\x80");
+ // 0x7fffffff: 1 11 1111 11 1111 11 1111 11 1111 11 1111
+ // encoding: xxxx:xxz0 xz00:0100 xz00:0000 xz00:0000 xz00:0001 xz00:0001
+ QTest::newRow("non-unicode-3") << QByteArray("\xFD\xBF\xBF\xBF\xBF\xBF");
+
+ // As seen above, 0xFE and 0xFF never appear:
+ QTest::newRow("fe") << QByteArray("\xFE");
+ QTest::newRow("fe-bis") << QByteArray("\xFE\xBF\xBF\xBF\xBF\xBF\xBF");
+ QTest::newRow("ff") << QByteArray("\xFF");
+ QTest::newRow("ff-bis") << QByteArray("\xFF\xBF\xBF\xBF\xBF\xBF\xBF\xBF");
+
+ // some combinations in UTF-8 are invalid even though they have the proper bits set
+ // these are known as overlong sequences
+
+ // "A": U+0041: 01 00 0001
+ // overlong 2: xxz0:0001 xz00:0001
+ QTest::newRow("overlong-1-2") << QByteArray("\xC1\x81");
+ // overlong 3: xxxz:0000 xz00:0001 xz00:0001
+ QTest::newRow("overlong-1-3") << QByteArray("\xE0\x81\x81");
+ // overlong 4: xxxx:z000 xz00:0000 xz00:0001 xz00:0001
+ QTest::newRow("overlong-1-4") << QByteArray("\xF0\x80\x81\x81");
+ // overlong 5: xxxx:xz00 xz00:0000 xz00:0000 xz00:0001 xz00:0001
+ QTest::newRow("overlong-1-5") << QByteArray("\xF8\x80\x80\x81\x81");
+ // overlong 6: xxxx:xxz0 xz00:0000 xz00:0000 xz00:0000 xz00:0001 xz00:0001
+ QTest::newRow("overlong-1-6") << QByteArray("\xFC\x80\x80\x80\x81\x81");
+
+ // NBSP: U+00A0: 10 00 0000
+ // proper encoding: xxz0:0010 xz00:0000
+ // overlong 3: xxxz:0000 xz00:0010 xz00:0000
+ QTest::newRow("overlong-2-3") << QByteArray("\xC0\x82\x80");
+ // overlong 4: xxxx:z000 xz00:0000 xz00:0010 xz00:0000
+ QTest::newRow("overlong-2-4") << QByteArray("\xF0\x80\x82\x80");
+ // overlong 5: xxxx:xz00 xz00:0000 xz00:0000 xz00:0010 xz00:0000
+ QTest::newRow("overlong-2-4") << QByteArray("\xF8\x80\x80\x82\x80");
+ // overlong 6: xxxx:xxz0 xz00:0000 xz00:0000 xz00:0000 xz00:0010 xz00:0000
+ QTest::newRow("overlong-2-4") << QByteArray("\xFC\x80\x80\x80\x82\x80");
+
+ // U+0800: 10 0000 00 0000
+ // proper encoding: xxxz:0000 xz10:0000 xz00:0000
+ // overlong 4: xxxx:z000 xz00:0000 xz10:0000 xz00:0000
+ QTest::newRow("overlong-3-4") << QByteArray("\xF0\x80\xA0\x80");
+ // overlong 5: xxxx:xz00 xz00:0000 xz00:0000 xz10:0000 xz00:0000
+ QTest::newRow("overlong-3-5") << QByteArray("\xF8\x80\x80\xA0\x80");
+ // overlong 6: xxxx:xxz0 xz00:0000 xz00:0000 xz00:0000 xz10:0000 xz00:0000
+ QTest::newRow("overlong-3-6") << QByteArray("\xFC\x80\x80\x80\xA0\x80");
+
+ // U+010000: 00 0100 00 0000 00 0000
+ // proper encoding: xxxx:z000 xz00:0100 xz00:0000 xz00:0000
+ // overlong 5: xxxx:xz00 xz00:0000 xz00:0100 xz00:0000 xz00:0000
+ QTest::newRow("overlong-4-5") << QByteArray("\xF8\x80\x84\x80\x80");
+ // overlong 6: xxxx:xxz0 xz00:0000 xz00:0000 xz00:0100 xz00:0000 xz00:0000
+ QTest::newRow("overlong-4-6") << QByteArray("\xFC\x80\x80\x84\x80\x80");
+}
+
+void tst_Utf8::invalidUtf8()
+{
+ QFETCH(QByteArray, utf8);
+
+ QSharedPointer<QTextDecoder> decoder = QSharedPointer<QTextDecoder>(codec->makeDecoder());
+ QString decoded = decoder->toUnicode(utf8);
+ QVERIFY(decoder->hasFailure());
+}
+
+QTEST_MAIN(tst_Utf8)
+#include "tst_utf8.moc"
diff --git a/tests/auto/utf8/utf8.pro b/tests/auto/utf8/utf8.pro
new file mode 100644
index 0000000..4ec6851
--- /dev/null
+++ b/tests/auto/utf8/utf8.pro
@@ -0,0 +1,3 @@
+load(qttest_p4)
+QT -= gui
+SOURCES += tst_utf8.cpp
diff --git a/tests/auto/windowsmobile/test/ddhelper.cpp b/tests/auto/windowsmobile/test/ddhelper.cpp
new file mode 100644
index 0000000..5955cd3
--- /dev/null
+++ b/tests/auto/windowsmobile/test/ddhelper.cpp
@@ -0,0 +1,121 @@
+
+#ifdef Q_OS_WINCE_WM
+
+#include <Ddraw.h>
+#include <QDebug>
+
+static LPDIRECTDRAW g_pDD = NULL; // DirectDraw object
+static LPDIRECTDRAWSURFACE g_pDDSSurface = NULL; // DirectDraw primary surface
+
+static DDSCAPS ddsCaps;
+static DDSURFACEDESC ddsSurfaceDesc;
+static void *buffer = NULL;
+
+static int width = 0;
+static int height = 0;
+static int pitch = 0;
+static int bitCount = 0;
+static int windowId = 0;
+
+static bool initialized = false;
+static bool locked = false;
+
+void q_lock()
+{
+ if (locked) {
+ qWarning("Direct Painter already locked (QDirectPainter::lock())");
+ return;
+ }
+ locked = true;
+
+
+ memset(&ddsSurfaceDesc, 0, sizeof(ddsSurfaceDesc));
+ ddsSurfaceDesc.dwSize = sizeof(ddsSurfaceDesc);
+
+ HRESULT h = g_pDDSSurface->Lock(0, &ddsSurfaceDesc, DDLOCK_WRITEONLY, 0);
+ if (h != DD_OK)
+ qDebug() << "GetSurfaceDesc failed!";
+
+ width = ddsSurfaceDesc.dwWidth;
+ height = ddsSurfaceDesc.dwHeight;
+ bitCount = ddsSurfaceDesc.ddpfPixelFormat.dwRGBBitCount;
+ pitch = ddsSurfaceDesc.lPitch;
+ buffer = ddsSurfaceDesc.lpSurface;
+}
+
+void q_unlock()
+{
+ if( !locked) {
+ qWarning("Direct Painter not locked (QDirectPainter::unlock()");
+ return;
+ }
+ g_pDDSSurface->Unlock(0);
+ locked = false;
+}
+
+void q_initDD()
+{
+ if (initialized)
+ return;
+
+ DirectDrawCreate(NULL, &g_pDD, NULL);
+
+ HRESULT h;
+ h = g_pDD->SetCooperativeLevel(0, DDSCL_NORMAL);
+
+ if (h != DD_OK)
+ qDebug() << "cooperation level failed";
+
+ h = g_pDD->TestCooperativeLevel();
+ if (h != DD_OK)
+ qDebug() << "cooperation level failed test";
+
+ DDSURFACEDESC ddsd;
+ memset(&ddsd, 0, sizeof(ddsd));
+ ddsd.dwSize = sizeof(ddsd);
+
+ ddsd.dwFlags = DDSD_CAPS;
+
+ ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE;
+
+ h = g_pDD->CreateSurface(&ddsd, &g_pDDSSurface, NULL);
+
+ if (h != DD_OK)
+ qDebug() << "CreateSurface failed!";
+
+ if (g_pDDSSurface->GetCaps(&ddsCaps) != DD_OK)
+ qDebug() << "GetCaps failed";
+
+ q_lock();
+ q_unlock();
+ initialized = true;
+}
+
+uchar* q_frameBuffer()
+{
+ return (uchar*) buffer;
+}
+
+int q_screenDepth()
+{
+ return bitCount;
+}
+
+int q_screenWidth()
+{
+ return width;
+}
+
+int q_screenHeight()
+{
+ return height;
+}
+
+int q_linestep()
+{
+ return pitch;
+}
+
+#endif //Q_OS_WINCE_WM
+
+
diff --git a/tests/auto/windowsmobile/test/ddhelper.h b/tests/auto/windowsmobile/test/ddhelper.h
new file mode 100644
index 0000000..3dfa9e6
--- /dev/null
+++ b/tests/auto/windowsmobile/test/ddhelper.h
@@ -0,0 +1,21 @@
+#ifndef __DDHELPER__
+#define __DDHELPER__
+
+extern uchar* q_frameBuffer();
+
+extern int q_screenDepth();
+
+extern int q_screenWidth();
+
+extern int q_screenHeight();
+
+extern int q_linestep();
+
+extern void q_initDD();
+
+extern void q_unlock();
+
+extern void q_lock();
+
+#endif //__DDHELPER__
+
diff --git a/tests/auto/windowsmobile/test/test.pro b/tests/auto/windowsmobile/test/test.pro
new file mode 100644
index 0000000..2420bf1
--- /dev/null
+++ b/tests/auto/windowsmobile/test/test.pro
@@ -0,0 +1,24 @@
+
+load(qttest_p4)
+
+HEADERS += ddhelper.h
+SOURCES += tst_windowsmobile.cpp ddhelper.cpp
+RESOURCES += windowsmobile.qrc
+
+TARGET = tst_windowsmobile
+
+wincewm*: {
+ addFiles.sources = \
+ ../testQMenuBar/*.exe
+
+
+ addFiles.path = "\Program Files\tst_windowsmobile"
+ DEPLOYMENT += addFiles
+}
+
+wincewm*: {
+ LIBS += Ddraw.lib
+}
+
+
+
diff --git a/tests/auto/windowsmobile/test/testQMenuBar_current.png b/tests/auto/windowsmobile/test/testQMenuBar_current.png
new file mode 100644
index 0000000..d03e69a
--- /dev/null
+++ b/tests/auto/windowsmobile/test/testQMenuBar_current.png
Binary files differ
diff --git a/tests/auto/windowsmobile/test/testSimpleWidget_current.png b/tests/auto/windowsmobile/test/testSimpleWidget_current.png
new file mode 100644
index 0000000..5cbc2bb
--- /dev/null
+++ b/tests/auto/windowsmobile/test/testSimpleWidget_current.png
Binary files differ
diff --git a/tests/auto/windowsmobile/test/tst_windowsmobile.cpp b/tests/auto/windowsmobile/test/tst_windowsmobile.cpp
new file mode 100644
index 0000000..391e206
--- /dev/null
+++ b/tests/auto/windowsmobile/test/tst_windowsmobile.cpp
@@ -0,0 +1,191 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (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 either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** 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.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtTest/QtTest>
+#include <QtCore/QDate>
+#include <QtCore/QDebug>
+#include <QtCore/QObject>
+#include <QtGui>
+#include <windows.h>
+#include <ddhelper.h>
+
+
+
+class tst_WindowsMobile : public QObject
+{
+ Q_OBJECT
+public:
+ tst_WindowsMobile()
+ {
+#ifdef Q_OS_WINCE_WM
+ q_initDD();
+#endif
+ }
+
+#ifdef Q_OS_WINCE_WM
+ private slots:
+ void testMainWindowAndMenuBar();
+ void testSimpleWidget();
+#endif
+};
+
+#ifdef Q_OS_WINCE_WM
+
+bool qt_wince_is_platform(const QString &platformString) {
+ TCHAR tszPlatform[64];
+ if (SystemParametersInfo(SPI_GETPLATFORMTYPE,
+ sizeof(tszPlatform)/sizeof(*tszPlatform),tszPlatform,0))
+ if (0 == _tcsicmp(reinterpret_cast<const wchar_t *> (platformString.utf16()), tszPlatform))
+ return true;
+ return false;
+}
+
+bool qt_wince_is_smartphone() {
+ return qt_wince_is_platform(QString::fromLatin1("Smartphone"));
+}
+
+void openMenu()
+{
+ ::mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_ABSOLUTE,450,630,0,0);
+ ::mouse_event(MOUSEEVENTF_LEFTUP | MOUSEEVENTF_ABSOLUTE,450,630,0,0);
+ QTest::qWait(2000);
+ ::mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_ABSOLUTE,65535,65535,0,0);
+ ::mouse_event(MOUSEEVENTF_LEFTUP | MOUSEEVENTF_ABSOLUTE,65535,65535,0,0);
+ QTest::qWait(2000);
+ ::mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_ABSOLUTE,55535,55535,0,0);
+ ::mouse_event(MOUSEEVENTF_LEFTUP | MOUSEEVENTF_ABSOLUTE,55535,55535,0,0);
+ QTest::qWait(2000);
+ ::mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_ABSOLUTE,55535,58535,0,0);
+ ::mouse_event(MOUSEEVENTF_LEFTUP | MOUSEEVENTF_ABSOLUTE,55535,58535,0,0);
+ QTest::qWait(2000);
+ ::mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_ABSOLUTE,40535,55535,0,0);
+ ::mouse_event(MOUSEEVENTF_LEFTUP | MOUSEEVENTF_ABSOLUTE,40535,55535,0,0);
+ QTest::qWait(2000);
+ ::mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_ABSOLUTE,32535,55535,0,0);
+ ::mouse_event(MOUSEEVENTF_LEFTUP | MOUSEEVENTF_ABSOLUTE,32535,55535,0,0);
+ QTest::qWait(2000);
+ ::mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_ABSOLUTE,65535,65535,0,0);
+ ::mouse_event(MOUSEEVENTF_LEFTUP | MOUSEEVENTF_ABSOLUTE,65535,65535,0,0);
+ QTest::qWait(2000);
+ ::mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_ABSOLUTE,55535,50535,0,0);
+ ::mouse_event(MOUSEEVENTF_LEFTUP | MOUSEEVENTF_ABSOLUTE,55535,50535,0,0);
+ QTest::qWait(2000);
+ ::mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_ABSOLUTE,55535,40535,0,0);
+ ::mouse_event(MOUSEEVENTF_LEFTUP | MOUSEEVENTF_ABSOLUTE,55535,40535,0,0);
+ QTest::qWait(2000);
+ ::mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_ABSOLUTE,48535,45535,0,0);
+ QTest::qWait(2000);
+ ::mouse_event(MOUSEEVENTF_LEFTUP | MOUSEEVENTF_ABSOLUTE,48535,45535,0,0);
+}
+
+void compareScreenshots(const QString &image1, const QString &image2)
+{
+ if (qt_wince_is_smartphone())
+ QSKIP("This test is only for Windows Mobile", SkipAll);
+ QImage screenShot(image1);
+ QImage original(image2);
+
+ //ignore the clock
+ QPainter p1(&screenShot);
+ QPainter p2(&original);
+ p1.fillRect(310, 6, 400, 34, Qt::black);
+ p2.fillRect(310, 6, 400, 34, Qt::black);
+
+ QVERIFY(original == screenShot);
+}
+
+void takeScreenShot(const QString filename)
+{
+ q_lock();
+ QImage image = QImage(( uchar *) q_frameBuffer(), q_screenWidth(),
+ q_screenHeight(), q_screenWidth() * q_screenDepth() / 8, QImage::Format_RGB16);
+ image.save(filename, "PNG");
+ q_unlock();
+}
+
+void tst_WindowsMobile::testMainWindowAndMenuBar()
+{
+ QProcess process;
+ process.start("testQMenuBar.exe");
+ QCOMPARE(process.state(), QProcess::Running);
+ QTest::qWait(6000);
+ openMenu();
+ QTest::qWait(1000);
+ takeScreenShot("testQMenuBar_current.png");
+ process.close();
+ compareScreenshots("testQMenuBar_current.png", ":/testQMenuBar_current.png");
+}
+
+void tst_WindowsMobile::testSimpleWidget()
+{
+ QMenuBar menubar;
+ menubar.show();
+ QWidget maximized;
+ QPalette pal = maximized.palette();
+ pal.setColor(QPalette::Background, Qt::red);
+ maximized.setPalette(pal);
+ maximized.showMaximized();
+ QWidget widget;
+ widget.setGeometry(100, 100, 200, 200);
+ widget.setWindowTitle("Widget");
+ widget.show();
+ qApp->processEvents();
+ QTest::qWait(1000);
+
+ QWidget widget2;
+ widget2.setGeometry(100, 380, 300, 200);
+ widget2.setWindowTitle("Widget 2");
+ widget2.setWindowFlags(Qt::Popup);
+ widget2.show();
+
+ qApp->processEvents();
+ QTest::qWait(1000);
+ takeScreenShot("testSimpleWidget_current.png");
+ compareScreenshots("testSimpleWidget_current.png", ":/testSimpleWidget_current.png");
+}
+
+
+#endif //Q_OS_WINCE_WM
+
+
+QTEST_MAIN(tst_WindowsMobile)
+#include "tst_windowsmobile.moc"
+
diff --git a/tests/auto/windowsmobile/test/windowsmobile.qrc b/tests/auto/windowsmobile/test/windowsmobile.qrc
new file mode 100644
index 0000000..5d6f614
--- /dev/null
+++ b/tests/auto/windowsmobile/test/windowsmobile.qrc
@@ -0,0 +1,6 @@
+<!DOCTYPE RCC><RCC version="1.0">
+<qresource>
+ <file>testQMenuBar_current.png</file>
+ <file>testSimpleWidget_current.png</file>
+</qresource>
+</RCC>
diff --git a/tests/auto/windowsmobile/testQMenuBar/main.cpp b/tests/auto/windowsmobile/testQMenuBar/main.cpp
new file mode 100644
index 0000000..4a3b3b2
--- /dev/null
+++ b/tests/auto/windowsmobile/testQMenuBar/main.cpp
@@ -0,0 +1,72 @@
+#include <QtTest/QtTest>
+#include <QtCore/QDate>
+#include <QtCore/QDebug>
+#include <QtCore/QObject>
+#include <QtGui>
+#include <windows.h>
+
+int main(int argc, char * argv[])
+{
+ int widgetNum = 20;
+
+ QList<QWidget*> widgets;
+ QApplication app(argc, argv);
+
+ QMainWindow mainWindow;
+ mainWindow.setWindowTitle("Test");
+ QMenu *fileMenu = mainWindow.menuBar()->addMenu("File");
+ QMenu *editMenu = mainWindow.menuBar()->addMenu("Edit");
+ QMenu *viewMenu = mainWindow.menuBar()->addMenu("View");
+ QMenu *toolsMenu = mainWindow.menuBar()->addMenu("Tools");
+ QMenu *optionsMenu = mainWindow.menuBar()->addMenu("Options");
+ QMenu *helpMenu = mainWindow.menuBar()->addMenu("Help");
+
+ qApp->processEvents();
+
+ fileMenu->addAction("Open");
+ QAction *close = fileMenu->addAction("Close");
+ fileMenu->addSeparator();
+ fileMenu->addAction("Exit");
+
+ close->setEnabled(false);
+
+ editMenu->addAction("Cut");
+ editMenu->addAction("Pase");
+ editMenu->addAction("Copy");
+ editMenu->addSeparator();
+ editMenu->addAction("Find");
+
+ viewMenu->addAction("Hide");
+ viewMenu->addAction("Show");
+ viewMenu->addAction("Explore");
+ QAction *visible = viewMenu->addAction("Visible");
+ visible->setCheckable(true);
+ visible->setChecked(true);
+
+ toolsMenu->addMenu("Hammer");
+ toolsMenu->addMenu("Caliper");
+ toolsMenu->addMenu("Helm");
+
+ optionsMenu->addMenu("Settings");
+ optionsMenu->addMenu("Standard");
+ optionsMenu->addMenu("Extended");
+
+ QMenu *subMenu = helpMenu->addMenu("Help");
+ subMenu->addAction("Index");
+ subMenu->addSeparator();
+ subMenu->addAction("Vodoo Help");
+ helpMenu->addAction("Contens");
+ helpMenu->addSeparator();
+ helpMenu->addAction("About");
+
+ QToolBar toolbar;
+ mainWindow.addToolBar(&toolbar);
+ toolbar.addAction(QIcon(qApp->style()->standardPixmap(QStyle::SP_FileIcon)), QString("textAction"));
+
+ QTextEdit textEdit;
+ mainWindow.setCentralWidget(&textEdit);
+
+ mainWindow.showMaximized();
+
+ app.exec();
+}
diff --git a/tests/auto/windowsmobile/testQMenuBar/testQMenuBar.pro b/tests/auto/windowsmobile/testQMenuBar/testQMenuBar.pro
new file mode 100644
index 0000000..6dd288b
--- /dev/null
+++ b/tests/auto/windowsmobile/testQMenuBar/testQMenuBar.pro
@@ -0,0 +1,2 @@
+SOURCES += main.cpp
+DESTDIR = ./
diff --git a/tests/auto/windowsmobile/windowsmobile.pro b/tests/auto/windowsmobile/windowsmobile.pro
new file mode 100644
index 0000000..2e6b444
--- /dev/null
+++ b/tests/auto/windowsmobile/windowsmobile.pro
@@ -0,0 +1,9 @@
+
+TEMPLATE = subdirs
+
+wincewm* {
+ SUBDIRS = testQMenuBar
+}
+ SUBDIRS += test
+
+
diff --git a/tests/benchmarks/qgraphicswidget/qgraphicswidget.pro b/tests/benchmarks/qgraphicswidget/qgraphicswidget.pro
new file mode 100644
index 0000000..f1ec54e
--- /dev/null
+++ b/tests/benchmarks/qgraphicswidget/qgraphicswidget.pro
@@ -0,0 +1,6 @@
+load(qttest_p4)
+TEMPLATE = app
+TARGET = tst_qgraphicswidget
+TEMPLATE = app
+# Input
+SOURCES += tst_qgraphicswidget.cpp
diff --git a/tests/benchmarks/qgraphicswidget/tst_qgraphicswidget.cpp b/tests/benchmarks/qgraphicswidget/tst_qgraphicswidget.cpp
new file mode 100644
index 0000000..97837e2
--- /dev/null
+++ b/tests/benchmarks/qgraphicswidget/tst_qgraphicswidget.cpp
@@ -0,0 +1,60 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+****************************************************************************/
+
+#include <qtest.h>
+#include <QGraphicsItem>
+#include <QGraphicsScene>
+#include <QGraphicsView>
+#include <QGraphicsWidget>
+//TESTED_FILES=
+
+class tst_QGraphicsWidget : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_QGraphicsWidget();
+ virtual ~tst_QGraphicsWidget();
+
+public slots:
+ void init();
+ void cleanup();
+
+private slots:
+ void move();
+};
+
+tst_QGraphicsWidget::tst_QGraphicsWidget()
+{
+}
+
+tst_QGraphicsWidget::~tst_QGraphicsWidget()
+{
+}
+
+void tst_QGraphicsWidget::init()
+{
+}
+
+void tst_QGraphicsWidget::cleanup()
+{
+}
+
+void tst_QGraphicsWidget::move()
+{
+ QGraphicsScene scene;
+ QGraphicsWidget *widget = new QGraphicsWidget();
+ scene.addItem(widget);
+ QGraphicsView view(&scene);
+ view.show();
+ QBENCHMARK {
+ widget->setPos(qrand(),qrand());
+ }
+}
+
+QTEST_MAIN(tst_QGraphicsWidget)
+#include "tst_qgraphicswidget.moc"
diff --git a/tests/benchmarks/qimagereader/tst_qimagereader.cpp b/tests/benchmarks/qimagereader/tst_qimagereader.cpp
index ae7ecb2..1b5acb4 100644
--- a/tests/benchmarks/qimagereader/tst_qimagereader.cpp
+++ b/tests/benchmarks/qimagereader/tst_qimagereader.cpp
@@ -102,9 +102,7 @@ tst_QImageReader::tst_QImageReader()
images << QPair<QString, QByteArray>(QLatin1String("4bpp-rle.bmp"), QByteArray("bmp"));
images << QPair<QString, QByteArray>(QLatin1String("tst7.bmp"), QByteArray("bmp"));
images << QPair<QString, QByteArray>(QLatin1String("16bpp.bmp"), QByteArray("bmp"));
-#if QT_VERSION >= 0x040200
images << QPair<QString, QByteArray>(QLatin1String("negativeheight.bmp"), QByteArray("bmp"));
-#endif
images << QPair<QString, QByteArray>(QLatin1String("marble.xpm"), QByteArray("xpm"));
images << QPair<QString, QByteArray>(QLatin1String("kollada.png"), QByteArray("png"));
images << QPair<QString, QByteArray>(QLatin1String("teapot.ppm"), QByteArray("ppm"));
diff --git a/tests/benchmarks/qobject/main.cpp b/tests/benchmarks/qobject/main.cpp
index cd8b142..65833b8 100644
--- a/tests/benchmarks/qobject/main.cpp
+++ b/tests/benchmarks/qobject/main.cpp
@@ -42,12 +42,7 @@
#include <QtGui>
#include <qtest.h>
#include "object.h"
-
-#if QT_VERSION >= 0x040000
-# include <qcoreapplication.h>
-#else
-# include <qapplication.h>
-#endif
+#include <qcoreapplication.h>
#include <qdatetime.h>
enum {
@@ -58,7 +53,7 @@ enum {
class QObjectBenchmark : public QObject
{
Q_OBJECT
-private slots:
+private slots:
void signal_slot_benchmark();
void signal_slot_benchmark_data();
void qproperty_benchmark_data();
@@ -82,13 +77,8 @@ void QObjectBenchmark::signal_slot_benchmark()
Object singleObject;
Object multiObject;
-#if QT_VERSION >= 0x040000
singleObject.setObjectName("single");
multiObject.setObjectName("multi");
-#else
- singleObject.setName("single");
- multiObject.setName("double");
-#endif
singleObject.connect(&singleObject, SIGNAL(signal0()), SLOT(slot0()));
diff --git a/tests/benchmarks/qpainter/tst_qpainter.cpp b/tests/benchmarks/qpainter/tst_qpainter.cpp
index af2c412..60c099b 100644
--- a/tests/benchmarks/qpainter/tst_qpainter.cpp
+++ b/tests/benchmarks/qpainter/tst_qpainter.cpp
@@ -700,11 +700,7 @@ void tst_QPainter::compositionModes_data()
QTest::addColumn<QSize>("size");
QTest::addColumn<QColor>("color");
-#if QT_VERSION >= 0x040500
const int n = QPainter::RasterOp_SourceAndNotDestination;
-#else
- const int n = QPainter::CompositionMode_Exclusion;
-#endif
for (int i = 0; i <= n; ++i) {
QString title("%1:%2");
QTest::newRow(qPrintable(title.arg(i).arg("10x10:opaque")))
@@ -732,9 +728,7 @@ void tst_QPainter::compositionModes()
src.fill(color);
QPixmap dest(size);
-#if QT_VERSION >= 0x040500
if (mode < QPainter::RasterOp_SourceOrDestination)
-#endif
color.setAlpha(127); // porter-duff needs an alpha channel
dest.fill(color);
diff --git a/tools/activeqt/activeqt.pro b/tools/activeqt/activeqt.pro
index a0e7de3..c50010c 100644
--- a/tools/activeqt/activeqt.pro
+++ b/tools/activeqt/activeqt.pro
@@ -2,10 +2,7 @@ TEMPLATE = subdirs
CONFIG += ordered
-contains(QT_EDITION, OpenSource|Console) {
- message("You are not licensed to use ActiveQt.")
-} else {
- SUBDIRS = dumpdoc \
- dumpcpp \
- testcon
-}
+SUBDIRS = dumpdoc \
+ dumpcpp \
+ testcon
+
diff --git a/tools/assistant/compat/mainwindow.cpp b/tools/assistant/compat/mainwindow.cpp
index 65759ad..9f91f9b 100644
--- a/tools/assistant/compat/mainwindow.cpp
+++ b/tools/assistant/compat/mainwindow.cpp
@@ -311,29 +311,11 @@ void MainWindow::closeEvent(QCloseEvent *e)
void MainWindow::about()
{
QMessageBox box(this);
-#if QT_EDITION == QT_EDITION_OPENSOURCE
- QString edition = tr("Open Source Edition");
- QString info = tr("This version of Qt Assistant is part of the Qt Open Source Edition, for use "
- "in the development of Open Source applications. "
- "Qt is a comprehensive C++ framework for cross-platform application "
- "development.");
- QString moreInfo = tr("You need a commercial Qt license for development of proprietary (closed "
- "source) applications. Please see <a href=\"http://qtsoftware.com/company/model"
- "\">qtsoftware.com/company/model</a> for an overview of Qt licensing.");
-#elif defined(QT_PRODUCT_LICENSE)
- QString edition;
- QString info;
- QString moreInfo(tr("This program is licensed to you under the terms of the "
- "Qt %1 License Agreement. For details, see the license file "
- "that came with this software distribution.").arg(QLatin1String(QT_PRODUCT_LICENSE)));
-#else
+
+ // TODO: Remove these variables for 4.6.0. Must keep this way for 4.5.x due to string freeze.
QString edition;
QString info;
- QString moreInfo(tr("This program is licensed to you under the terms of the "
- "Qt Commercial License Agreement. For details, see the file LICENSE "
- "that came with this software distribution."));
-
-#endif
+ QString moreInfo;
box.setText(QString::fromLatin1("<center><img src=\":/trolltech/assistant/images/assistant-128.png\">"
"<h3>%1</h3>"
diff --git a/tools/assistant/tools/assistant/assistant.qch b/tools/assistant/tools/assistant/assistant.qch
index 550cd89..99687ed 100644
--- a/tools/assistant/tools/assistant/assistant.qch
+++ b/tools/assistant/tools/assistant/assistant.qch
Binary files differ
diff --git a/tools/assistant/tools/assistant/bookmarkmanager.cpp b/tools/assistant/tools/assistant/bookmarkmanager.cpp
index 6f5732f..66475a4 100644
--- a/tools/assistant/tools/assistant/bookmarkmanager.cpp
+++ b/tools/assistant/tools/assistant/bookmarkmanager.cpp
@@ -536,58 +536,57 @@ void BookmarkWidget::focusInEvent(QFocusEvent *e)
bool BookmarkWidget::eventFilter(QObject *object, QEvent *e)
{
- if (object == this && e->type() == QEvent::KeyPress) {
- QKeyEvent *ke = static_cast<QKeyEvent*>(e);
+ if ((object == this) || (object == treeView->viewport())) {
QModelIndex index = treeView->currentIndex();
- switch (ke->key()) {
+ if (e->type() == QEvent::KeyPress) {
+ QKeyEvent *ke = static_cast<QKeyEvent*>(e);
if (index.isValid() && searchField->text().isEmpty()) {
- case Qt::Key_F2: {
- const QModelIndex& source = filterBookmarkModel->mapToSource(index);
- QStandardItem *item =
- bookmarkManager->treeBookmarkModel()->itemFromIndex(source);
+ if (ke->key() == Qt::Key_F2) {
+ QStandardItem *item = bookmarkManager->treeBookmarkModel()
+ ->itemFromIndex(filterBookmarkModel->mapToSource(index));
if (item) {
item->setEditable(true);
treeView->edit(index);
item->setEditable(false);
}
- } break;
-
- case Qt::Key_Delete: {
+ } else if (ke->key() == Qt::Key_Delete) {
bookmarkManager->removeBookmarkItem(treeView,
filterBookmarkModel->mapToSource(index));
- } break;
+ }
}
- case Qt::Key_Up:
- case Qt::Key_Down:
- treeView->subclassKeyPressEvent(ke);
- break;
-
- case Qt::Key_Enter: {
- case Qt::Key_Return:
- index = treeView->selectionModel()->currentIndex();
- if (index.isValid()) {
- QString data = index.data(Qt::UserRole + 10).toString();
- if (!data.isEmpty() && data != QLatin1String("Folder"))
- emit requestShowLink(data);
- }
- } break;
+ switch (ke->key()) {
+ default: break;
+ case Qt::Key_Up: {
+ case Qt::Key_Down:
+ treeView->subclassKeyPressEvent(ke);
+ } break;
- case Qt::Key_Escape:
- emit escapePressed();
- break;
+ case Qt::Key_Enter: {
+ case Qt::Key_Return:
+ index = treeView->selectionModel()->currentIndex();
+ if (index.isValid()) {
+ QString data = index.data(Qt::UserRole + 10).toString();
+ if (!data.isEmpty() && data != QLatin1String("Folder"))
+ emit requestShowLink(data);
+ }
+ } break;
- default:
- break;
- }
- }
- else if (object == treeView->viewport() && e->type() == QEvent::MouseButtonRelease) {
- const QModelIndex& index = treeView->currentIndex();
- QMouseEvent *me = static_cast<QMouseEvent*>(e);
- if (index.isValid() && (me->button() == Qt::MidButton)) {
- QString data = index.data(Qt::UserRole + 10).toString();
- if (!data.isEmpty() && data != QLatin1String("Folder"))
- CentralWidget::instance()->setSourceInNewTab(data);
+ case Qt::Key_Escape: {
+ emit escapePressed();
+ } break;
+ }
+ } else if (e->type() == QEvent::MouseButtonRelease) {
+ if (index.isValid()) {
+ QMouseEvent *me = static_cast<QMouseEvent*>(e);
+ bool controlPressed = me->modifiers() & Qt::ControlModifier;
+ if(((me->button() == Qt::LeftButton) && controlPressed)
+ || (me->button() == Qt::MidButton)) {
+ QString data = index.data(Qt::UserRole + 10).toString();
+ if (!data.isEmpty() && data != QLatin1String("Folder"))
+ CentralWidget::instance()->setSourceInNewTab(data);
+ }
+ }
}
}
return QWidget::eventFilter(object, e);
diff --git a/tools/assistant/tools/assistant/centralwidget.cpp b/tools/assistant/tools/assistant/centralwidget.cpp
index 1b0e671..b78f346 100644
--- a/tools/assistant/tools/assistant/centralwidget.cpp
+++ b/tools/assistant/tools/assistant/centralwidget.cpp
@@ -72,7 +72,8 @@
QT_BEGIN_NAMESPACE
namespace {
- HelpViewer* helpViewerFromTabPosition(const QTabWidget *widget, const QPoint &point)
+ HelpViewer* helpViewerFromTabPosition(const QTabWidget *widget,
+ const QPoint &point)
{
QTabBar *tabBar = qFindChild<QTabBar*>(widget);
for (int i = 0; i < tabBar->count(); ++i) {
@@ -87,38 +88,32 @@ namespace {
FindWidget::FindWidget(QWidget *parent)
: QWidget(parent)
{
- QString system = QLatin1String("win");
QHBoxLayout *hboxLayout = new QHBoxLayout(this);
-#ifdef Q_OS_MAC
- system = QLatin1String("mac");
-#else
- hboxLayout->setSpacing(6);
+ QString resourcePath = QLatin1String(":/trolltech/assistant/images/");
+
+#ifndef Q_OS_MAC
hboxLayout->setMargin(0);
+ hboxLayout->setSpacing(6);
+ resourcePath.append(QLatin1String("win"));
+#else
+ resourcePath.append(QLatin1String("mac"));
#endif
- toolClose = new QToolButton(this);
- toolClose->setIcon(QIcon(QString::fromUtf8(":/trolltech/assistant/images/%1/closetab.png").arg(system)));
- toolClose->setAutoRaise(true);
+ toolClose = setupToolButton(QLatin1String(""),
+ resourcePath + QLatin1String("/closetab.png"));
hboxLayout->addWidget(toolClose);
editFind = new QLineEdit(this);
- editFind->setMinimumSize(QSize(150, 0));
- connect(editFind, SIGNAL(textChanged(const QString&)),
- this, SLOT(updateButtons()));
hboxLayout->addWidget(editFind);
+ editFind->setMinimumSize(QSize(150, 0));
+ connect(editFind, SIGNAL(textChanged(QString)), this, SLOT(updateButtons()));
- toolPrevious = new QToolButton(this);
- toolPrevious->setAutoRaise(true);
- toolPrevious->setText(tr("Previous"));
- toolPrevious->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
- toolPrevious->setIcon(QIcon(QString::fromUtf8(":/trolltech/assistant/images/%1/previous.png").arg(system)));
+ toolPrevious = setupToolButton(tr("Previous"),
+ resourcePath + QLatin1String("/previous.png"));
hboxLayout->addWidget(toolPrevious);
- toolNext = new QToolButton(this);
- toolNext->setAutoRaise(true);
- toolNext->setText(tr("Next"));
- toolNext->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
- toolNext->setIcon(QIcon(QString::fromUtf8(":/trolltech/assistant/images/%1/next.png").arg(system)));
+ toolNext = setupToolButton(tr("Next"),
+ resourcePath + QLatin1String("/next.png"));
hboxLayout->addWidget(toolNext);
checkCase = new QCheckBox(tr("Case Sensitive"), this);
@@ -131,15 +126,17 @@ FindWidget::FindWidget(QWidget *parent)
#endif
labelWrapped = new QLabel(this);
+ labelWrapped->setScaledContents(true);
+ labelWrapped->setTextFormat(Qt::RichText);
labelWrapped->setMinimumSize(QSize(0, 20));
labelWrapped->setMaximumSize(QSize(105, 20));
- labelWrapped->setTextFormat(Qt::RichText);
- labelWrapped->setScaledContents(true);
- labelWrapped->setAlignment(Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter);
- labelWrapped->setText(tr("<img src=\":/trolltech/assistant/images/wrap.png\">&nbsp;Search wrapped"));
+ labelWrapped->setAlignment(Qt::AlignLeading | Qt::AlignLeft | Qt::AlignVCenter);
+ labelWrapped->setText(tr("<img src=\":/trolltech/assistant/images/wrap.png\""
+ ">&nbsp;Search wrapped"));
hboxLayout->addWidget(labelWrapped);
- QSpacerItem *spacerItem = new QSpacerItem(20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);
+ QSpacerItem *spacerItem = new QSpacerItem(20, 20, QSizePolicy::Expanding,
+ QSizePolicy::Minimum);
hboxLayout->addItem(spacerItem);
setMinimumWidth(minimumSizeHint().width());
labelWrapped->hide();
@@ -162,38 +159,54 @@ void FindWidget::updateButtons()
}
}
+QToolButton* FindWidget::setupToolButton(const QString &text, const QString &icon)
+{
+ QToolButton *toolButton = new QToolButton(this);
+
+ toolButton->setText(text);
+ toolButton->setAutoRaise(true);
+ toolButton->setIcon(QIcon(icon));
+ toolButton->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
+
+ return toolButton;
+}
+
+
+// --
+
CentralWidget::CentralWidget(QHelpEngine *engine, MainWindow *parent)
: QWidget(parent)
+ , lastTabPage(0)
+ , collectionFile(engine->collectionFile())
, findBar(0)
, tabWidget(0)
+ , findWidget(0)
, helpEngine(engine)
, printer(0)
+ , usesDefaultCollection(parent->usesDefaultCollection())
, m_searchWidget(0)
{
- staticCentralWidget = this;
-
- lastTabPage = 0;
globalActionList.clear();
- collectionFile = helpEngine->collectionFile();
- usesDefaultCollection = parent->usesDefaultCollection();
-
- QString system = QLatin1String("win");
+ staticCentralWidget = this;
QVBoxLayout *vboxLayout = new QVBoxLayout(this);
+ QString resourcePath = QLatin1String(":/trolltech/assistant/images/");
-#ifdef Q_OS_MAC
- system = QLatin1String("mac");
-#else
+#ifndef Q_OS_MAC
vboxLayout->setMargin(0);
+ resourcePath.append(QLatin1String("win"));
+#else
+ resourcePath.append(QLatin1String("mac"));
#endif
tabWidget = new QTabWidget(this);
- connect(tabWidget, SIGNAL(currentChanged(int)), this, SLOT(currentPageChanged(int)));
+ connect(tabWidget, SIGNAL(currentChanged(int)), this,
+ SLOT(currentPageChanged(int)));
QToolButton *newTabButton = new QToolButton(this);
newTabButton->setAutoRaise(true);
newTabButton->setToolTip(tr("Add new page"));
- newTabButton->setIcon(QIcon(QString::fromUtf8(":/trolltech/assistant/images/%1/addtab.png").arg(system)));
+ newTabButton->setIcon(QIcon(resourcePath + QLatin1String("/addtab.png")));
tabWidget->setCornerWidget(newTabButton, Qt::TopLeftCorner);
connect(newTabButton, SIGNAL(clicked()), this, SLOT(newTab()));
@@ -202,7 +215,7 @@ CentralWidget::CentralWidget(QHelpEngine *engine, MainWindow *parent)
closeTabButton->setEnabled(false);
closeTabButton->setAutoRaise(true);
closeTabButton->setToolTip(tr("Close current page"));
- closeTabButton->setIcon(QIcon(QString::fromUtf8(":/trolltech/assistant/images/%1/closetab.png").arg(system)));
+ closeTabButton->setIcon(QIcon(resourcePath + QLatin1String("/closetab.png")));
tabWidget->setCornerWidget(closeTabButton, Qt::TopRightCorner);
connect(closeTabButton, SIGNAL(clicked()), this, SLOT(closeTab()));
@@ -216,19 +229,20 @@ CentralWidget::CentralWidget(QHelpEngine *engine, MainWindow *parent)
vboxLayout->addWidget(findBar);
findBar->hide();
findWidget->editFind->installEventFilter(this);
- connect(findWidget->toolClose, SIGNAL(clicked()), findBar, SLOT(hide()));
+ connect(findWidget->toolClose, SIGNAL(clicked()), findBar, SLOT(hide()));
connect(findWidget->toolNext, SIGNAL(clicked()), this, SLOT(findNext()));
connect(findWidget->editFind, SIGNAL(returnPressed()), this, SLOT(findNext()));
- connect(findWidget->editFind, SIGNAL(textChanged(const QString&)), this, SLOT(findCurrentText(const QString&)));
+ connect(findWidget->editFind, SIGNAL(textChanged(QString)), this,
+ SLOT(findCurrentText(QString)));
connect(findWidget->toolPrevious, SIGNAL(clicked()), this, SLOT(findPrevious()));
QTabBar *tabBar = qFindChild<QTabBar*>(tabWidget);
if (tabBar) {
tabBar->installEventFilter(this);
tabBar->setContextMenuPolicy(Qt::CustomContextMenu);
- connect(tabBar, SIGNAL(customContextMenuRequested(const QPoint&)),
- this, SLOT(showTabBarContextMenu(const QPoint&)));
+ connect(tabBar, SIGNAL(customContextMenuRequested(QPoint)), this,
+ SLOT(showTabBarContextMenu(QPoint)));
}
QPalette p = qApp->palette();
@@ -247,21 +261,21 @@ CentralWidget::~CentralWidget()
QString zoomCount;
QString currentPages;
- QLatin1Char sep('|');
- for (int i = 1; i < tabWidget->count(); ++i) {
+ QLatin1Char separator('|');
+ bool searchAttached = m_searchWidget->isAttached();
+
+ int i = searchAttached ? 1 : 0;
+ for (; i < tabWidget->count(); ++i) {
HelpViewer *viewer = qobject_cast<HelpViewer*>(tabWidget->widget(i));
if (viewer && viewer->source().isValid()) {
- currentPages.append(viewer->source().toString()).append(sep);
-#if !defined(QT_NO_WEBKIT)
- zoomCount.append(QString::number(viewer->textSizeMultiplier())).
- append(sep);
-#else
- zoomCount.append(QString::number(viewer->zoom())).append(sep);
-#endif
+ currentPages += viewer->source().toString() + separator;
+ zoomCount += QString::number(viewer->zoom()) + separator;
}
}
+
engine.setCustomValue(QLatin1String("LastTabPage"), lastTabPage);
engine.setCustomValue(QLatin1String("LastShownPages"), currentPages);
+ engine.setCustomValue(QLatin1String("SearchWasAttached"), searchAttached);
#if !defined(QT_NO_WEBKIT)
engine.setCustomValue(QLatin1String("LastPagesZoomWebView"), zoomCount);
#else
@@ -276,14 +290,18 @@ CentralWidget *CentralWidget::instance()
void CentralWidget::newTab()
{
- HelpViewer* viewer = currentHelpViewer();
+ HelpViewer *viewer = currentHelpViewer();
+#if !defined(QT_NO_WEBKIT)
+ if (viewer && viewer->hasLoadFinished())
+#else
if (viewer)
+#endif
setSourceInNewTab(viewer->source());
}
void CentralWidget::zoomIn()
{
- HelpViewer* viewer = currentHelpViewer();
+ HelpViewer *viewer = currentHelpViewer();
if (viewer)
viewer->zoomIn();
@@ -293,7 +311,7 @@ void CentralWidget::zoomIn()
void CentralWidget::zoomOut()
{
- HelpViewer* viewer = currentHelpViewer();
+ HelpViewer *viewer = currentHelpViewer();
if (viewer)
viewer->zoomOut();
@@ -316,7 +334,7 @@ void CentralWidget::nextPage()
void CentralWidget::resetZoom()
{
- HelpViewer* viewer = currentHelpViewer();
+ HelpViewer *viewer = currentHelpViewer();
if (viewer)
viewer->resetZoom();
@@ -340,7 +358,7 @@ void CentralWidget::findPrevious()
void CentralWidget::closeTab()
{
- HelpViewer* viewer = currentHelpViewer();
+ HelpViewer *viewer = currentHelpViewer();
if (!viewer|| tabWidget->count() == 1)
return;
@@ -350,8 +368,8 @@ void CentralWidget::closeTab()
void CentralWidget::setSource(const QUrl &url)
{
- HelpViewer* viewer = currentHelpViewer();
- HelpViewer* lastViewer = qobject_cast<HelpViewer*>(tabWidget->widget(lastTabPage));
+ HelpViewer *viewer = currentHelpViewer();
+ HelpViewer *lastViewer = qobject_cast<HelpViewer*>(tabWidget->widget(lastTabPage));
if (!viewer && !lastViewer) {
viewer = new HelpViewer(helpEngine, this);
@@ -359,8 +377,9 @@ void CentralWidget::setSource(const QUrl &url)
lastTabPage = tabWidget->addTab(viewer, QString());
tabWidget->setCurrentIndex(lastTabPage);
connectSignals();
- } else
+ } else {
viewer = lastViewer;
+ }
viewer->setSource(url);
currentPageChanged(lastTabPage);
@@ -371,48 +390,59 @@ void CentralWidget::setSource(const QUrl &url)
void CentralWidget::setLastShownPages()
{
+ const QLatin1String key("LastShownPages");
+ QString value = helpEngine->customValue(key, QString()).toString();
+ const QStringList lastShownPageList = value.split(QLatin1Char('|'),
+ QString::SkipEmptyParts);
+
+ const int pageCount = lastShownPageList.count();
+ if (pageCount == 0 && usesDefaultCollection) {
+ setSource(QUrl(QLatin1String("help")));
+ return;
+ }
+
#if !defined(QT_NO_WEBKIT)
- QLatin1String zoom("LastPagesZoomWebView");
+ const QLatin1String zoom("LastPagesZoomWebView");
#else
- QLatin1String zoom("LastPagesZoomTextBrowser");
+ const QLatin1String zoom("LastPagesZoomTextBrowser");
#endif
- const QStringList lastShownPageList =
- helpEngine->customValue(QLatin1String("LastShownPages")).toString().
- split(QLatin1Char('|'), QString::SkipEmptyParts);
-
- if (!lastShownPageList.isEmpty()) {
- QVector<QString>zoomList = helpEngine->customValue(zoom).toString().
- split(QLatin1Char('|'), QString::SkipEmptyParts).toVector();
- if (zoomList.isEmpty())
- zoomList.fill(QLatin1String("0.0"), lastShownPageList.size());
- else if(zoomList.count() < lastShownPageList.count()) {
- zoomList.insert(zoomList.count(),
- lastShownPageList.count() - zoomList.count(), QLatin1String("0.0"));
- }
+ value = helpEngine->customValue(zoom, QString()).toString();
+ QVector<QString> zoomVector = value.split(QLatin1Char('|'),
+ QString::SkipEmptyParts).toVector();
- QVector<QString>::const_iterator zIt = zoomList.constBegin();
- QStringList::const_iterator it = lastShownPageList.constBegin();
- for (; it != lastShownPageList.constEnd(); ++it, ++zIt)
- setSourceInNewTab((*it), (*zIt).toFloat());
+ const int zoomCount = zoomVector.count();
+ zoomVector.insert(zoomCount, pageCount - zoomCount, QLatin1String("0.0"));
- tabWidget->setCurrentIndex(helpEngine->customValue(
- QLatin1String("LastTabPage"), 1).toInt());
- } else {
- if (usesDefaultCollection)
- setSource(QUrl(QLatin1String("help")));
- }
+ QVector<QString>::const_iterator zIt = zoomVector.constBegin();
+ QStringList::const_iterator it = lastShownPageList.constBegin();
+ for (; it != lastShownPageList.constEnd(); ++it, ++zIt)
+ setSourceInNewTab((*it), (*zIt).toFloat());
+
+ const QLatin1String lastTab("LastTabPage");
+ int tab = helpEngine->customValue(lastTab, 1).toInt();
+
+ const QLatin1String searchKey("SearchWasAttached");
+ const bool searchIsAttached = m_searchWidget->isAttached();
+ const bool searchWasAttached = helpEngine->customValue(searchKey).toBool();
+
+ if (searchWasAttached && !searchIsAttached)
+ tabWidget->setCurrentIndex(--tab);
+ else if (!searchWasAttached && searchIsAttached)
+ tabWidget->setCurrentIndex(++tab);
+ else
+ tabWidget->setCurrentIndex(tab);
}
bool CentralWidget::hasSelection() const
{
- const HelpViewer* viewer = currentHelpViewer();
+ const HelpViewer *viewer = currentHelpViewer();
return viewer ? viewer->hasSelection() : false;
}
QUrl CentralWidget::currentSource() const
{
- const HelpViewer* viewer = currentHelpViewer();
+ const HelpViewer *viewer = currentHelpViewer();
if (viewer)
return viewer->source();
@@ -421,7 +451,7 @@ QUrl CentralWidget::currentSource() const
QString CentralWidget::currentTitle() const
{
- const HelpViewer* viewer = currentHelpViewer();
+ const HelpViewer *viewer = currentHelpViewer();
if (viewer)
return viewer->documentTitle();
@@ -430,7 +460,7 @@ QString CentralWidget::currentTitle() const
void CentralWidget::copySelection()
{
- HelpViewer* viewer = currentHelpViewer();
+ HelpViewer *viewer = currentHelpViewer();
if (viewer)
viewer->copy();
}
@@ -453,7 +483,7 @@ void CentralWidget::initPrinter()
void CentralWidget::print()
{
#ifndef QT_NO_PRINTER
- HelpViewer* viewer = currentHelpViewer();
+ HelpViewer *viewer = currentHelpViewer();
if (!viewer)
return;
@@ -479,7 +509,8 @@ void CentralWidget::printPreview()
#ifndef QT_NO_PRINTER
initPrinter();
QPrintPreviewDialog preview(printer, this);
- connect(&preview, SIGNAL(paintRequested(QPrinter *)), SLOT(printPreview(QPrinter *)));
+ connect(&preview, SIGNAL(paintRequested(QPrinter*)),
+ SLOT(printPreview(QPrinter*)));
preview.exec();
#endif
}
@@ -509,14 +540,14 @@ bool CentralWidget::isHomeAvailable() const
void CentralWidget::home()
{
- HelpViewer* viewer = currentHelpViewer();
+ HelpViewer *viewer = currentHelpViewer();
if (viewer)
viewer->home();
}
bool CentralWidget::isForwardAvailable() const
{
- const HelpViewer* viewer = currentHelpViewer();
+ const HelpViewer *viewer = currentHelpViewer();
if (viewer)
return viewer->isForwardAvailable();
@@ -525,14 +556,14 @@ bool CentralWidget::isForwardAvailable() const
void CentralWidget::forward()
{
- HelpViewer* viewer = currentHelpViewer();
+ HelpViewer *viewer = currentHelpViewer();
if (viewer)
viewer->forward();
}
bool CentralWidget::isBackwardAvailable() const
{
- const HelpViewer* viewer = currentHelpViewer();
+ const HelpViewer *viewer = currentHelpViewer();
if (viewer)
return viewer->isBackwardAvailable();
@@ -541,7 +572,7 @@ bool CentralWidget::isBackwardAvailable() const
void CentralWidget::backward()
{
- HelpViewer* viewer = currentHelpViewer();
+ HelpViewer *viewer = currentHelpViewer();
if (viewer)
viewer->backward();
}
@@ -559,7 +590,7 @@ void CentralWidget::setGlobalActions(const QList<QAction*> &actions)
void CentralWidget::setSourceInNewTab(const QUrl &url, qreal zoom)
{
- HelpViewer* viewer;
+ HelpViewer *viewer;
#if defined(QT_NO_WEBKIT)
viewer = currentHelpViewer();
@@ -582,20 +613,20 @@ void CentralWidget::setSourceInNewTab(const QUrl &url, qreal zoom)
}
#if !defined(QT_NO_WEBKIT)
- QWebSettings* settings = QWebSettings::globalSettings();
+ QWebSettings *settings = QWebSettings::globalSettings();
if (!userFont) {
int fontSize = settings->fontSize(QWebSettings::DefaultFontSize);
QString fontFamily = settings->fontFamily(QWebSettings::StandardFont);
font = QFont(fontFamily, fontSize);
}
- QWebView* view = qobject_cast<QWebView*> (viewer);
+ QWebView *view = qobject_cast<QWebView*> (viewer);
if (view) {
settings = view->settings();
settings->setFontFamily(QWebSettings::StandardFont, font.family());
settings->setFontSize(QWebSettings::DefaultFontSize, font.pointSize());
} else if (viewer) {
- viewer->setFont(font);
+ viewer->setFont(font);
}
viewer->setTextSizeMultiplier(zoom == 0.0 ? 1.0 : zoom);
#else
@@ -609,7 +640,7 @@ void CentralWidget::setSourceInNewTab(const QUrl &url, qreal zoom)
HelpViewer *CentralWidget::newEmptyTab()
{
- HelpViewer* viewer = new HelpViewer(helpEngine, this);
+ HelpViewer *viewer = new HelpViewer(helpEngine, this);
viewer->installEventFilter(this);
viewer->setFocus(Qt::OtherFocusReason);
#if defined(QT_NO_WEBKIT)
@@ -628,15 +659,20 @@ void CentralWidget::findCurrentText(const QString &text)
void CentralWidget::connectSignals()
{
- const HelpViewer* viewer = currentHelpViewer();
+ const HelpViewer *viewer = currentHelpViewer();
if (viewer) {
- connect(viewer, SIGNAL(copyAvailable(bool)), this, SIGNAL(copyAvailable(bool)));
- connect(viewer, SIGNAL(forwardAvailable(bool)), this, SIGNAL(forwardAvailable(bool)));
- connect(viewer, SIGNAL(backwardAvailable(bool)), this, SIGNAL(backwardAvailable(bool)));
- connect(viewer, SIGNAL(sourceChanged(const QUrl&)), this, SIGNAL(sourceChanged(const QUrl&)));
- connect(viewer, SIGNAL(highlighted(const QString&)), this, SIGNAL(highlighted(const QString&)));
-
- connect(viewer, SIGNAL(sourceChanged(const QUrl&)), this, SLOT(setTabTitle(const QUrl&)));
+ connect(viewer, SIGNAL(copyAvailable(bool)), this,
+ SIGNAL(copyAvailable(bool)));
+ connect(viewer, SIGNAL(forwardAvailable(bool)), this,
+ SIGNAL(forwardAvailable(bool)));
+ connect(viewer, SIGNAL(backwardAvailable(bool)), this,
+ SIGNAL(backwardAvailable(bool)));
+ connect(viewer, SIGNAL(sourceChanged(QUrl)), this,
+ SIGNAL(sourceChanged(QUrl)));
+ connect(viewer, SIGNAL(highlighted(QString)), this,
+ SIGNAL(highlighted(QString)));
+ connect(viewer, SIGNAL(sourceChanged(QUrl)), this,
+ SLOT(setTabTitle(QUrl)));
}
}
@@ -658,85 +694,72 @@ void CentralWidget::activateTab(bool onlyHelpViewer)
}
}
-void CentralWidget::setTabTitle(const QUrl& url)
+void CentralWidget::setTabTitle(const QUrl &url)
{
- int tab = lastTabPage;
- HelpViewer* viewer = currentHelpViewer();
-
+ Q_UNUSED(url)
#if !defined(QT_NO_WEBKIT)
- if (!viewer || viewer->source() != url) {
- QTabBar *tabBar = qFindChild<QTabBar*>(tabWidget);
- for (tab = 0; tab < tabBar->count(); ++tab) {
- viewer = qobject_cast<HelpViewer*>(tabWidget->widget(tab));
- if (viewer && viewer->source() == url)
- break;
- }
+ QTabBar *tabBar = qFindChild<QTabBar*>(tabWidget);
+ for (int tab = 0; tab < tabBar->count(); ++tab) {
+ HelpViewer *viewer = qobject_cast<HelpViewer*>(tabWidget->widget(tab));
+ if (viewer)
+ tabWidget->setTabText(tab, viewer->documentTitle().trimmed());
}
#else
- Q_UNUSED(url)
-#endif
-
+ HelpViewer *viewer = currentHelpViewer();
if (viewer) {
- tabWidget->setTabText(tab,
+ tabWidget->setTabText(lastTabPage,
quoteTabTitle(viewer->documentTitle().trimmed()));
}
+#endif
}
void CentralWidget::currentPageChanged(int index)
{
const HelpViewer *viewer = currentHelpViewer();
-
- if (viewer || tabWidget->count() == 1)
+ if (viewer)
lastTabPage = index;
- bool enabled = false;
- if (viewer) {
- enabled = true;
- if (!m_searchWidget)
- enabled = tabWidget->count() > 1;
- }
+ QWidget *widget = tabWidget->cornerWidget(Qt::TopRightCorner);
+ widget->setEnabled(viewer && enableTabCloseAction());
- tabWidget->cornerWidget(Qt::TopRightCorner)->setEnabled(enabled);
- tabWidget->cornerWidget(Qt::TopLeftCorner)->setEnabled(m_searchWidget ? enabled : true);
+ widget = tabWidget->cornerWidget(Qt::TopLeftCorner);
+ widget->setEnabled(viewer ? true : false);
- emit currentViewerChanged();
+ emit currentViewerChanged();
}
void CentralWidget::showTabBarContextMenu(const QPoint &point)
{
- HelpViewer* viewer = helpViewerFromTabPosition(tabWidget, point);
+ HelpViewer *viewer = helpViewerFromTabPosition(tabWidget, point);
if (!viewer)
return;
QTabBar *tabBar = qFindChild<QTabBar*>(tabWidget);
QMenu menu(QLatin1String(""), tabBar);
- QAction *new_page = menu.addAction(tr("Add New Page"));
- QAction *close_page = menu.addAction(tr("Close This Page"));
- QAction *close_pages = menu.addAction(tr("Close Other Pages"));
- menu.addSeparator();
- QAction *newBookmark = menu.addAction(tr("Add Bookmark for this Page..."));
+ QAction *newPage = menu.addAction(tr("Add New Page"));
- if (tabBar->count() == 1) {
- close_page->setEnabled(false);
- close_pages->setEnabled(false);
- } else if (m_searchWidget && tabBar->count() == 2) {
- close_pages->setEnabled(false);
- }
+ bool enableAction = enableTabCloseAction();
+ QAction *closePage = menu.addAction(tr("Close This Page"));
+ closePage->setEnabled(enableAction);
- QAction *picked_action = menu.exec(tabBar->mapToGlobal(point));
- if (!picked_action)
- return;
+ QAction *closePages = menu.addAction(tr("Close Other Pages"));
+ closePages->setEnabled(enableAction);
- if (picked_action == new_page)
+ menu.addSeparator();
+
+ QAction *newBookmark = menu.addAction(tr("Add Bookmark for this Page..."));
+
+ QAction *pickedAction = menu.exec(tabBar->mapToGlobal(point));
+ if (pickedAction == newPage)
setSourceInNewTab(viewer->source());
- if (picked_action == close_page) {
+ if (pickedAction == closePage) {
tabWidget->removeTab(tabWidget->indexOf(viewer));
QTimer::singleShot(0, viewer, SLOT(deleteLater()));
}
- if (picked_action == close_pages) {
+ if (pickedAction == closePages) {
int currentPage = tabWidget->indexOf(viewer);
for (int i = tabBar->count() -1; i >= 0; --i) {
viewer = qobject_cast<HelpViewer*>(tabWidget->widget(i));
@@ -750,58 +773,68 @@ void CentralWidget::showTabBarContextMenu(const QPoint &point)
}
}
- if (picked_action == newBookmark)
+ if (pickedAction == newBookmark)
emit addNewBookmark(viewer->documentTitle(), viewer->source().toString());
}
bool CentralWidget::eventFilter(QObject *object, QEvent *e)
{
- if (currentHelpViewer() == object && e->type() == QEvent::KeyPress){
+ if (e->type() == QEvent::KeyPress) {
QKeyEvent *ke = static_cast<QKeyEvent*>(e);
- if (ke->key() == Qt::Key_Backspace) {
- HelpViewer *viewer = currentHelpViewer();
+ switch (ke->key()) {
+ default: {
+ return QWidget::eventFilter(object, e);
+ } break;
+
+ case Qt::Key_Escape: {
+ if (findWidget->editFind == object) {
+ findBar->hide();
+ if (HelpViewer *viewer = currentHelpViewer())
+ viewer->setFocus();
+ }
+ } break;
+
+ case Qt::Key_Backspace: {
+ HelpViewer *viewer = currentHelpViewer();
+ if (viewer == object) {
#if defined(QT_NO_WEBKIT)
- if (viewer && viewer->isBackwardAvailable()) {
+ if (viewer->isBackwardAvailable()) {
#else
- if (viewer && viewer->isBackwardAvailable() && !viewer->hasFocus()) {
+ if (viewer->isBackwardAvailable() && !viewer->hasFocus()) {
#endif
- viewer->backward();
- return true;
- }
+ viewer->backward();
+ return true;
+ }
+ }
+ } break;
}
}
- QTabBar *tabBar = qobject_cast<QTabBar*>(object);
- bool mousRel = e->type() == QEvent::MouseButtonRelease;
- bool dblClick = e->type() == QEvent::MouseButtonDblClick;
-
- if (tabBar && (mousRel || dblClick)) {
- QMouseEvent *mouseEvent = static_cast<QMouseEvent *>(e);
- HelpViewer *viewer = helpViewerFromTabPosition(tabWidget, mouseEvent->pos());
- if (!m_searchWidget && tabWidget->count() <= 1)
- return QWidget::eventFilter(object, e);
-
- if (viewer && (mouseEvent->button() == Qt::MidButton || dblClick)) {
- tabWidget->removeTab(tabWidget->indexOf(viewer));
- QTimer::singleShot(0, viewer, SLOT(deleteLater()));
- currentPageChanged(tabWidget->currentIndex());
- return true;
- }
- } else if (object == findWidget->editFind && e->type() == QEvent::KeyPress) {
- QKeyEvent *ke = static_cast<QKeyEvent*>(e);
- if (ke->key() == Qt::Key_Escape) {
- findBar->hide();
- HelpViewer *hv = currentHelpViewer();
- if (hv)
- hv->setFocus();
+ if (qobject_cast<QTabBar*>(object)) {
+ const bool dblClick = e->type() == QEvent::MouseButtonDblClick;
+ if ((e->type() == QEvent::MouseButtonRelease) || dblClick) {
+ QMouseEvent *mouseEvent = static_cast<QMouseEvent *>(e);
+ HelpViewer *viewer = helpViewerFromTabPosition(tabWidget,
+ mouseEvent->pos());
+ if (viewer) {
+ if ((mouseEvent->button() == Qt::MidButton) || dblClick) {
+ if (availableHelpViewer() > 1) {
+ tabWidget->removeTab(tabWidget->indexOf(viewer));
+ QTimer::singleShot(0, viewer, SLOT(deleteLater()));
+ currentPageChanged(tabWidget->currentIndex());
+ return true;
+ }
+ }
+ }
}
}
+
return QWidget::eventFilter(object, e);
}
void CentralWidget::keyPressEvent(QKeyEvent *e)
{
- QString text = e->text();
+ const QString &text = e->text();
if (text.startsWith(QLatin1Char('/'))) {
if (!findBar->isVisible()) {
findBar->show();
@@ -821,7 +854,7 @@ void CentralWidget::find(QString ttf, bool forward, bool backward)
QTextDocument *doc = 0;
QTextBrowser *browser = 0;
- HelpViewer* viewer = currentHelpViewer();
+ HelpViewer *viewer = currentHelpViewer();
QPalette p = findWidget->editFind->palette();
p.setColor(QPalette::Active, QPalette::Base, Qt::white);
@@ -860,7 +893,7 @@ void CentralWidget::find(QString ttf, bool forward, bool backward)
}
if (tabWidget->currentWidget() == m_searchWidget) {
- QTextBrowser* browser = qFindChild<QTextBrowser*>(m_searchWidget);
+ QTextBrowser *browser = qFindChild<QTextBrowser*>(m_searchWidget);
if (browser) {
doc = browser->document();
cursor = browser->textCursor();
@@ -872,8 +905,10 @@ void CentralWidget::find(QString ttf, bool forward, bool backward)
QTextDocument::FindFlags options;
- if (cursor.hasSelection())
- cursor.setPosition(forward ? cursor.position() : cursor.anchor(), QTextCursor::MoveAnchor);
+ if (cursor.hasSelection()) {
+ cursor.setPosition(forward ? cursor.position() : cursor.anchor(),
+ QTextCursor::MoveAnchor);
+ }
QTextCursor newCursor = cursor;
@@ -915,15 +950,6 @@ void CentralWidget::find(QString ttf, bool forward, bool backward)
findWidget->editFind->setPalette(p);
}
-void CentralWidget::activateSearch()
-{
- if (tabWidget->widget(0) != m_searchWidget)
- createSearchWidget(helpEngine->searchEngine());
-
- tabWidget->setCurrentWidget(m_searchWidget);
- m_searchWidget->setFocus();
-}
-
void CentralWidget::updateBrowserFont()
{
QFont font = qApp->font();
@@ -934,7 +960,7 @@ void CentralWidget::updateBrowserFont()
}
#if !defined(QT_NO_WEBKIT)
- QWebSettings* settings = QWebSettings::globalSettings();
+ QWebSettings *settings = QWebSettings::globalSettings();
if (!userFont) {
int fontSize = settings->fontSize(QWebSettings::DefaultFontSize);
QString fontFamily = settings->fontFamily(QWebSettings::StandardFont);
@@ -942,11 +968,11 @@ void CentralWidget::updateBrowserFont()
}
#endif
- QWidget* widget = 0;
+ QWidget *widget = 0;
for (int i = 0; i < tabWidget->count(); ++i) {
widget = tabWidget->widget(i);
#if !defined(QT_NO_WEBKIT)
- QWebView* view = qobject_cast<QWebView*> (widget);
+ QWebView *view = qobject_cast<QWebView*> (widget);
if (view) {
settings = view->settings();
settings->setFontFamily(QWebSettings::StandardFont, font.family());
@@ -965,19 +991,56 @@ void CentralWidget::updateBrowserFont()
void CentralWidget::createSearchWidget(QHelpSearchEngine *searchEngine)
{
- if (!m_searchWidget) {
- m_searchWidget = new SearchWidget(searchEngine, this);
- connect(m_searchWidget, SIGNAL(requestShowLink(const QUrl&)), this,
- SLOT(setSourceFromSearch(const QUrl&)));
- connect(m_searchWidget, SIGNAL(requestShowLinkInNewTab(const QUrl&)), this,
- SLOT(setSourceFromSearchInNewTab(const QUrl&)));
+ if (m_searchWidget)
+ return;
+
+ m_searchWidget = new SearchWidget(searchEngine, this);
+ connect(m_searchWidget, SIGNAL(requestShowLink(QUrl)), this,
+ SLOT(setSourceFromSearch(QUrl)));
+ connect(m_searchWidget, SIGNAL(requestShowLinkInNewTab(QUrl)), this,
+ SLOT(setSourceFromSearchInNewTab(QUrl)));
+}
+
+void CentralWidget::activateSearchWidget(bool updateLastTabPage)
+{
+ if (!m_searchWidget)
+ createSearchWidget(helpEngine->searchEngine());
+
+ if (!m_searchWidget->isAttached()) {
+ tabWidget->insertTab(0, m_searchWidget, tr("Search"));
+ m_searchWidget->setAttached(true);
+
+ if (updateLastTabPage)
+ lastTabPage++;
}
- tabWidget->insertTab(0, m_searchWidget, tr("Search"));
+
+ tabWidget->setCurrentWidget(m_searchWidget);
+ m_searchWidget->setFocus();
}
void CentralWidget::removeSearchWidget()
{
- tabWidget->removeTab(0);
+ if (m_searchWidget && m_searchWidget->isAttached()) {
+ tabWidget->removeTab(0);
+ m_searchWidget->setAttached(false);
+ }
+}
+
+int CentralWidget::availableHelpViewer() const
+{
+ int count = tabWidget->count();
+ if (m_searchWidget && m_searchWidget->isAttached())
+ count--;
+ return count;
+}
+
+bool CentralWidget::enableTabCloseAction() const
+{
+ int minTabCount = 1;
+ if (m_searchWidget && m_searchWidget->isAttached())
+ minTabCount = 2;
+
+ return (tabWidget->count() > minTabCount);
}
QString CentralWidget::quoteTabTitle(const QString &title) const
@@ -1008,7 +1071,7 @@ CentralWidget::highlightSearchTerms()
if (!viewer)
return;
- QHelpSearchEngine* searchEngine = helpEngine->searchEngine();
+ QHelpSearchEngine *searchEngine = helpEngine->searchEngine();
QList<QHelpSearchQuery> queryList = searchEngine->query();
QStringList terms;
diff --git a/tools/assistant/tools/assistant/centralwidget.h b/tools/assistant/tools/assistant/centralwidget.h
index 75bd8be..e3ce200 100644
--- a/tools/assistant/tools/assistant/centralwidget.h
+++ b/tools/assistant/tools/assistant/centralwidget.h
@@ -83,6 +83,9 @@ private slots:
void updateButtons();
private:
+ QToolButton* setupToolButton(const QString &text, const QString &icon);
+
+private:
QLineEdit *editFind;
QCheckBox *checkCase;
QLabel *labelWrapped;
@@ -113,10 +116,14 @@ public:
void setGlobalActions(const QList<QAction*> &actions);
HelpViewer *currentHelpViewer() const;
void activateTab(bool onlyHelpViewer = false);
- void activateSearch();
+
void createSearchWidget(QHelpSearchEngine *searchEngine);
+ void activateSearchWidget(bool updateLastTabPage = false);
void removeSearchWidget();
+ int availableHelpViewer() const;
+ bool enableTabCloseAction() const;
+
void closeTabAt(int index);
QMap<int, QString> currentSourceFileList() const;
@@ -167,7 +174,7 @@ private slots:
void setSourceFromSearchInNewTab(const QUrl &url);
private:
- void connectSignals();
+ void connectSignals();
bool eventFilter(QObject *object, QEvent *e);
void find(QString ttf, bool forward, bool backward);
void initPrinter();
@@ -180,13 +187,13 @@ private:
QList<QAction*> globalActionList;
QWidget *findBar;
- QTabWidget* tabWidget;
+ QTabWidget *tabWidget;
FindWidget *findWidget;
QHelpEngine *helpEngine;
QPrinter *printer;
bool usesDefaultCollection;
-
- SearchWidget* m_searchWidget;
+
+ SearchWidget *m_searchWidget;
};
QT_END_NAMESPACE
diff --git a/tools/assistant/tools/assistant/cmdlineparser.cpp b/tools/assistant/tools/assistant/cmdlineparser.cpp
index 0dae785..67eaa44 100644
--- a/tools/assistant/tools/assistant/cmdlineparser.cpp
+++ b/tools/assistant/tools/assistant/cmdlineparser.cpp
@@ -56,6 +56,7 @@ CmdLineParser::CmdLineParser()
m_bookmarks(Untouched),
m_search(Untouched),
m_register(None),
+ m_removeSearchIndex(false),
m_copy(false),
m_quiet(false)
{
@@ -83,6 +84,7 @@ CmdLineParser::CmdLineParser()
" (.qch) from the give collection\n"
" file.\n"
"-setCurrentFilter filter Set the filter as the active filter.\n"
+ "-remove-search-index Removes the full text search index.\n"
"-quiet Does not display any error or\n"
" status message.\n"
"-help Displays this help.\n"
@@ -217,6 +219,8 @@ CmdLineParser::Result CmdLineParser::parse(const QStringList &arguments)
error = QObject::tr("Missing filter argument!");
break;
}
+ } else if (arg == QLatin1String("-remove-search-index")) {
+ m_removeSearchIndex = true;
} else if (arg == QLatin1String("-quiet")) {
continue;
} else if (arg == QLatin1String("-help")) {
@@ -307,6 +311,11 @@ QString CmdLineParser::currentFilter() const
return m_currentFilter;
}
+bool CmdLineParser::removeSearchIndex() const
+{
+ return m_removeSearchIndex;
+}
+
CmdLineParser::RegisterState CmdLineParser::registerRequest() const
{
return m_register;
diff --git a/tools/assistant/tools/assistant/cmdlineparser.h b/tools/assistant/tools/assistant/cmdlineparser.h
index 332d464..263138b 100644
--- a/tools/assistant/tools/assistant/cmdlineparser.h
+++ b/tools/assistant/tools/assistant/cmdlineparser.h
@@ -67,6 +67,7 @@ public:
ShowState bookmarks() const;
ShowState search() const;
QString currentFilter() const;
+ bool removeSearchIndex() const;
RegisterState registerRequest() const;
QString helpFile() const;
@@ -90,6 +91,7 @@ private:
ShowState m_search;
RegisterState m_register;
QString m_currentFilter;
+ bool m_removeSearchIndex;
bool m_copy;
bool m_quiet;
};
diff --git a/tools/assistant/tools/assistant/contentwindow.cpp b/tools/assistant/tools/assistant/contentwindow.cpp
index ef272e8..9f39de5 100644
--- a/tools/assistant/tools/assistant/contentwindow.cpp
+++ b/tools/assistant/tools/assistant/contentwindow.cpp
@@ -118,39 +118,50 @@ void ContentWindow::keyPressEvent(QKeyEvent *e)
bool ContentWindow::eventFilter(QObject *o, QEvent *e)
{
- if (m_contentWidget && o == m_contentWidget->viewport() && e->type()
- == QEvent::MouseButtonRelease) {
+ if (m_contentWidget && o == m_contentWidget->viewport()
+ && e->type() == QEvent::MouseButtonRelease) {
QMouseEvent *me = static_cast<QMouseEvent*>(e);
- if (m_contentWidget->indexAt(me->pos()).isValid()
- && me->button() == Qt::LeftButton) {
- itemClicked(m_contentWidget->currentIndex());
- } else if (m_contentWidget->indexAt(me->pos()).isValid()
- && me->button() == Qt::MidButton) {
- QHelpContentModel *contentModel =
- qobject_cast<QHelpContentModel*>(m_contentWidget->model());
- QHelpContentItem *itm =
- contentModel->contentItemAt(m_contentWidget->currentIndex());
- CentralWidget::instance()->setSourceInNewTab(itm->url());
+ QModelIndex index = m_contentWidget->indexAt(me->pos());
+ QItemSelectionModel *sm = m_contentWidget->selectionModel();
+
+ Qt::MouseButtons button = me->button();
+ if (index.isValid() && (sm && sm->isSelected(index))) {
+ if ((button == Qt::LeftButton && (me->modifiers() & Qt::ControlModifier))
+ || (button == Qt::MidButton)) {
+ QHelpContentModel *contentModel =
+ qobject_cast<QHelpContentModel*>(m_contentWidget->model());
+ if (contentModel) {
+ QHelpContentItem *itm = contentModel->contentItemAt(index);
+ if (itm && !isPdfFile(itm))
+ CentralWidget::instance()->setSourceInNewTab(itm->url());
+ }
+ } else if (button == Qt::LeftButton) {
+ itemClicked(index);
+ }
}
}
return QWidget::eventFilter(o, e);
}
+
void ContentWindow::showContextMenu(const QPoint &pos)
{
if (!m_contentWidget->indexAt(pos).isValid())
return;
- QMenu menu;
- QAction *curTab = menu.addAction(tr("Open Link"));
- QAction *newTab = menu.addAction(tr("Open Link in New Tab"));
- menu.move(m_contentWidget->mapToGlobal(pos));
-
QHelpContentModel *contentModel =
qobject_cast<QHelpContentModel*>(m_contentWidget->model());
QHelpContentItem *itm =
contentModel->contentItemAt(m_contentWidget->currentIndex());
+ QMenu menu;
+ QAction *curTab = menu.addAction(tr("Open Link"));
+ QAction *newTab = menu.addAction(tr("Open Link in New Tab"));
+ if (isPdfFile(itm))
+ newTab->setEnabled(false);
+
+ menu.move(m_contentWidget->mapToGlobal(pos));
+
QAction *action = menu.exec();
if (curTab == action)
emit linkActivated(itm->url());
@@ -160,14 +171,20 @@ void ContentWindow::showContextMenu(const QPoint &pos)
void ContentWindow::itemClicked(const QModelIndex &index)
{
- if (!index.isValid())
- return;
QHelpContentModel *contentModel =
qobject_cast<QHelpContentModel*>(m_contentWidget->model());
- QHelpContentItem *itm =
- contentModel->contentItemAt(index);
- if (itm)
- emit linkActivated(itm->url());
+
+ if (contentModel) {
+ QHelpContentItem *itm = contentModel->contentItemAt(index);
+ if (itm)
+ emit linkActivated(itm->url());
+ }
+}
+
+bool ContentWindow::isPdfFile(QHelpContentItem *item) const
+{
+ const QString &path = item->url().path();
+ return path.endsWith(QLatin1String(".pdf"), Qt::CaseInsensitive);
}
QT_END_NAMESPACE
diff --git a/tools/assistant/tools/assistant/contentwindow.h b/tools/assistant/tools/assistant/contentwindow.h
index ab8f8dd..ddc3e7c 100644
--- a/tools/assistant/tools/assistant/contentwindow.h
+++ b/tools/assistant/tools/assistant/contentwindow.h
@@ -49,6 +49,7 @@
QT_BEGIN_NAMESPACE
class QHelpEngine;
+class QHelpContentItem;
class QHelpContentWidget;
class ContentWindow : public QWidget
@@ -75,6 +76,7 @@ private:
void focusInEvent(QFocusEvent *e);
void keyPressEvent(QKeyEvent *e);
bool eventFilter(QObject *o, QEvent *e);
+ bool isPdfFile(QHelpContentItem *item) const;
QHelpEngine *m_helpEngine;
QHelpContentWidget *m_contentWidget;
diff --git a/tools/assistant/tools/assistant/doc/HOWTO b/tools/assistant/tools/assistant/doc/HOWTO
index 0e5b67b..a014347 100644
--- a/tools/assistant/tools/assistant/doc/HOWTO
+++ b/tools/assistant/tools/assistant/doc/HOWTO
@@ -1,9 +1,8 @@
How to build/ update a new assistant.qch for Assistant internal help
-- in case of update:
+- update:
- open assistant.qdocconf, update year and qt version
-- all other cases:
- ..\..\..\..\qdoc3\debug\qdoc3.exe assistant.qdocconf
will generate an folder html containing all required stuff
@@ -12,6 +11,6 @@ How to build/ update a new assistant.qch for Assistant internal help
- rebuild assistant
-- to test you changes:
+- to test your changes:
- remove assistant.qch in your cache directory
- restart assistant
diff --git a/tools/assistant/tools/assistant/doc/assistant.qdocconf b/tools/assistant/tools/assistant/doc/assistant.qdocconf
index 50f18c0..aca97ed 100644
--- a/tools/assistant/tools/assistant/doc/assistant.qdocconf
+++ b/tools/assistant/tools/assistant/doc/assistant.qdocconf
@@ -10,8 +10,7 @@ description = "Qt Assistant"
HTML.{postheader,address} = ""
HTML.footer = "<p /><address><hr /><div align=\"center\">\n" \
"<table width=\"100%\" cellspacing=\"0\" border=\"0\"><tr class=\"address\">\n" \
- "<td width=\"30%\" align=\"left\">Copyright &copy; 2008 Nokia Corporation " \
- "and/or its subsidiary(-ies)</td>\n" \
+ "<td width=\"30%\" align=\"left\">Copyright &copy; 2009 Nokia Corporation and/or its subsidiary(-ies)</td>\n" \
"<td width=\"40%\" align=\"center\">Trademarks</td>\n" \
- "<td width=\"30%\" align=\"right\"><div align=\"right\">Qt 4.5.0</div></td>\n" \
+ "<td width=\"30%\" align=\"right\"><div align=\"right\">Qt 4.5.2</div></td>\n" \
"</tr></table></div></address>"
diff --git a/tools/assistant/tools/assistant/helpviewer.cpp b/tools/assistant/tools/assistant/helpviewer.cpp
index 6b049e8..5726136 100644
--- a/tools/assistant/tools/assistant/helpviewer.cpp
+++ b/tools/assistant/tools/assistant/helpviewer.cpp
@@ -164,6 +164,7 @@ public:
protected:
virtual QWebPage *createWindow(QWebPage::WebWindowType);
+ virtual void triggerAction(WebAction action, bool checked = false);
virtual bool acceptNavigationRequest(QWebFrame *frame,
const QNetworkRequest &request, NavigationType type);
@@ -171,16 +172,30 @@ protected:
private:
CentralWidget *centralWidget;
QHelpEngine *helpEngine;
+ bool closeNewTabIfNeeded;
+
+ friend class HelpViewer;
+ Qt::MouseButtons m_pressedButtons;
+ Qt::KeyboardModifiers m_keyboardModifiers;
};
HelpPage::HelpPage(CentralWidget *central, QHelpEngine *engine, QObject *parent)
- : QWebPage(parent), centralWidget(central), helpEngine(engine)
+ : QWebPage(parent)
+ , centralWidget(central)
+ , helpEngine(engine)
+ , closeNewTabIfNeeded(false)
+ , m_pressedButtons(Qt::NoButton)
+ , m_keyboardModifiers(Qt::NoModifier)
{
}
QWebPage *HelpPage::createWindow(QWebPage::WebWindowType)
{
- return centralWidget->newEmptyTab()->page();
+ HelpPage* newPage = static_cast<HelpPage*>(centralWidget->newEmptyTab()->page());
+ if (newPage)
+ newPage->closeNewTabIfNeeded = closeNewTabIfNeeded;
+ closeNewTabIfNeeded = false;
+ return newPage;
}
static bool isLocalUrl(const QUrl &url)
@@ -196,10 +211,24 @@ static bool isLocalUrl(const QUrl &url)
return false;
}
+void HelpPage::triggerAction(WebAction action, bool checked)
+{
+ switch (action) {
+ case OpenLinkInNewWindow:
+ closeNewTabIfNeeded = true;
+ default: // fall through
+ QWebPage::triggerAction(action, checked);
+ break;
+ }
+}
+
bool HelpPage::acceptNavigationRequest(QWebFrame *,
- const QNetworkRequest &request, QWebPage::NavigationType)
+ const QNetworkRequest &request, QWebPage::NavigationType type)
{
const QUrl &url = request.url();
+ const bool closeNewTab = closeNewTabIfNeeded;
+ closeNewTabIfNeeded = false;
+
if (isLocalUrl(url)) {
const QString& path = url.path();
if (path.endsWith(QLatin1String(".pdf"))) {
@@ -216,8 +245,22 @@ bool HelpPage::acceptNavigationRequest(QWebFrame *,
tmpFile.close();
}
QDesktopServices::openUrl(QUrl(tmpFile.fileName()));
+
+ if (closeNewTab)
+ QMetaObject::invokeMethod(CentralWidget::instance(), "closeTab");
return false;
}
+
+ if (type == QWebPage::NavigationTypeLinkClicked
+ && (m_keyboardModifiers & Qt::ControlModifier
+ || m_pressedButtons == Qt::MidButton)) {
+ HelpViewer* viewer = centralWidget->newEmptyTab();
+ if (viewer)
+ CentralWidget::instance()->setSource(url);
+ m_pressedButtons = Qt::NoButton;
+ m_keyboardModifiers = Qt::NoModifier;
+ return false;
+ }
return true;
}
@@ -226,7 +269,10 @@ bool HelpPage::acceptNavigationRequest(QWebFrame *,
}
HelpViewer::HelpViewer(QHelpEngine *engine, CentralWidget *parent)
- : QWebView(parent), helpEngine(engine), parentWidget(parent)
+ : QWebView(parent)
+ , helpEngine(engine)
+ , parentWidget(parent)
+ , loadFinished(false)
{
setAcceptDrops(false);
@@ -252,10 +298,12 @@ HelpViewer::HelpViewer(QHelpEngine *engine, CentralWidget *parent)
connect(page(), SIGNAL(linkHovered(QString, QString, QString)), this,
SIGNAL(highlighted(QString)));
connect(this, SIGNAL(urlChanged(QUrl)), this, SIGNAL(sourceChanged(QUrl)));
+ connect(this, SIGNAL(loadFinished(bool)), this, SLOT(setLoadFinished(bool)));
}
void HelpViewer::setSource(const QUrl &url)
{
+ loadFinished = false;
if (url.toString() == QLatin1String("help")) {
load(QUrl(QLatin1String("qthelp://com.trolltech.com."
"assistantinternal_1.0.0/assistant/assistant.html")));
@@ -332,6 +380,22 @@ void HelpViewer::actionChanged()
emit forwardAvailable(a->isEnabled());
}
+void HelpViewer::mousePressEvent(QMouseEvent *event)
+{
+ HelpPage *currentPage = static_cast<HelpPage*>(page());
+ if (currentPage) {
+ currentPage->m_pressedButtons = event->buttons();
+ currentPage->m_keyboardModifiers = event->modifiers();
+ }
+ QWebView::mousePressEvent(event);
+}
+
+void HelpViewer::setLoadFinished(bool ok)
+{
+ loadFinished = ok;
+ emit sourceChanged(url());
+}
+
#else // !defined(QT_NO_WEBKIT)
HelpViewer::HelpViewer(QHelpEngine *engine, CentralWidget *parent)
diff --git a/tools/assistant/tools/assistant/helpviewer.h b/tools/assistant/tools/assistant/helpviewer.h
index af5c197..37545c7 100644
--- a/tools/assistant/tools/assistant/helpviewer.h
+++ b/tools/assistant/tools/assistant/helpviewer.h
@@ -92,6 +92,10 @@ public:
{ return pageAction(QWebPage::Forward)->isEnabled(); }
inline bool isBackwardAvailable() const
{ return pageAction(QWebPage::Back)->isEnabled(); }
+ inline bool hasLoadFinished() const
+ { return loadFinished; }
+ inline qreal zoom() const
+ { return textSizeMultiplier(); }
public Q_SLOTS:
void home();
@@ -107,13 +111,16 @@ Q_SIGNALS:
protected:
virtual void wheelEvent(QWheelEvent *);
void mouseReleaseEvent(QMouseEvent *e);
+ void mousePressEvent(QMouseEvent *event);
private Q_SLOTS:
void actionChanged();
+ void setLoadFinished(bool ok);
private:
QHelpEngine *helpEngine;
CentralWidget* parentWidget;
+ bool loadFinished;
};
#else
diff --git a/tools/assistant/tools/assistant/indexwindow.cpp b/tools/assistant/tools/assistant/indexwindow.cpp
index e7575fa..1117ae0 100644
--- a/tools/assistant/tools/assistant/indexwindow.cpp
+++ b/tools/assistant/tools/assistant/indexwindow.cpp
@@ -122,10 +122,9 @@ bool IndexWindow::eventFilter(QObject *obj, QEvent *e)
m_indexWidget->setCurrentIndex(idx);
break;
case Qt::Key_Escape:
- emit escapePressed();
+ emit escapePressed();
break;
- default:
- ;
+ default: ; // stop complaining
}
} else if (obj == m_indexWidget && e->type() == QEvent::ContextMenu) {
QContextMenuEvent *ctxtEvent = static_cast<QContextMenuEvent*>(e);
@@ -140,42 +139,18 @@ bool IndexWindow::eventFilter(QObject *obj, QEvent *e)
if (curTab == action)
m_indexWidget->activateCurrentItem();
else if (newTab == action) {
- QHelpIndexModel *model =
- qobject_cast<QHelpIndexModel*>(m_indexWidget->model());
- QString keyword = model->data(idx, Qt::DisplayRole).toString();
- if (model) {
- QMap<QString, QUrl> links = model->linksForKeyword(keyword);
- if (links.count() == 1) {
- CentralWidget::instance()->
- setSourceInNewTab(links.constBegin().value());
- } else {
- TopicChooser tc(this, keyword, links);
- if (tc.exec() == QDialog::Accepted) {
- CentralWidget::instance()->setSourceInNewTab(tc.link());
- }
- }
- }
+ open(m_indexWidget, idx);
}
}
} else if (m_indexWidget && obj == m_indexWidget->viewport()
&& e->type() == QEvent::MouseButtonRelease) {
QMouseEvent *mouseEvent = static_cast<QMouseEvent*>(e);
QModelIndex idx = m_indexWidget->indexAt(mouseEvent->pos());
- if (idx.isValid() && mouseEvent->button()==Qt::MidButton) {
- QHelpIndexModel *model =
- qobject_cast<QHelpIndexModel*>(m_indexWidget->model());
- QString keyword = model->data(idx, Qt::DisplayRole).toString();
- if (model) {
- QMap<QString, QUrl> links = model->linksForKeyword(keyword);
- if (links.count() > 1) {
- TopicChooser tc(this, keyword, links);
- if (tc.exec() == QDialog::Accepted) {
- CentralWidget::instance()->setSourceInNewTab(tc.link());
- }
- } else if (links.count() == 1) {
- CentralWidget::instance()->
- setSourceInNewTab(links.constBegin().value());
- }
+ if (idx.isValid()) {
+ Qt::MouseButtons button = mouseEvent->button();
+ if (((button == Qt::LeftButton) && (mouseEvent->modifiers() & Qt::ControlModifier))
+ || (button == Qt::MidButton)) {
+ open(m_indexWidget, idx);
}
}
}
@@ -213,4 +188,29 @@ void IndexWindow::focusInEvent(QFocusEvent *e)
}
}
+void IndexWindow::open(QHelpIndexWidget* indexWidget, const QModelIndex &index)
+{
+ QHelpIndexModel *model = qobject_cast<QHelpIndexModel*>(indexWidget->model());
+ if (model) {
+ QString keyword = model->data(index, Qt::DisplayRole).toString();
+ QMap<QString, QUrl> links = model->linksForKeyword(keyword);
+
+ QUrl url;
+ if (links.count() > 1) {
+ TopicChooser tc(this, keyword, links);
+ if (tc.exec() == QDialog::Accepted)
+ url = tc.link();
+ } else if (links.count() == 1) {
+ url = links.constBegin().value();
+ } else {
+ return;
+ }
+
+ if (url.path().endsWith(QLatin1String(".pdf"), Qt::CaseInsensitive))
+ CentralWidget::instance()->setSource(url);
+ else
+ CentralWidget::instance()->setSourceInNewTab(url);
+ }
+}
+
QT_END_NAMESPACE
diff --git a/tools/assistant/tools/assistant/indexwindow.h b/tools/assistant/tools/assistant/indexwindow.h
index f1f57f9..14ed83c 100644
--- a/tools/assistant/tools/assistant/indexwindow.h
+++ b/tools/assistant/tools/assistant/indexwindow.h
@@ -50,6 +50,7 @@ QT_BEGIN_NAMESPACE
class QHelpIndexWidget;
class QHelpEngine;
+class QModelIndex;
class IndexWindow : public QWidget
{
@@ -79,6 +80,7 @@ private slots:
private:
bool eventFilter(QObject *obj, QEvent *e);
void focusInEvent(QFocusEvent *e);
+ void open(QHelpIndexWidget *indexWidget, const QModelIndex &index);
QLineEdit *m_searchLineEdit;
QHelpIndexWidget *m_indexWidget;
diff --git a/tools/assistant/tools/assistant/main.cpp b/tools/assistant/tools/assistant/main.cpp
index 794be02..75955ec 100644
--- a/tools/assistant/tools/assistant/main.cpp
+++ b/tools/assistant/tools/assistant/main.cpp
@@ -52,6 +52,8 @@
#include <QtHelp/QHelpEngineCore>
+#include <QtNetwork/QLocalSocket>
+
#include <QtSql/QSqlDatabase>
#include "mainwindow.h"
@@ -166,6 +168,17 @@ referencedHelpFilesExistAll(QHelpEngineCore& user, QStringList& nameSpaces)
return (counter != nameSpaces.count()) ? false : true;
}
+QString indexFilesFolder(const QString &collectionFile)
+{
+ QString indexFilesFolder = QLatin1String(".fulltextsearch");
+ if (!collectionFile.isEmpty()) {
+ QFileInfo fi(collectionFile);
+ indexFilesFolder = QLatin1Char('.') +
+ fi.fileName().left(fi.fileName().lastIndexOf(QLatin1String(".qhc")));
+ }
+ return indexFilesFolder;
+}
+
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
@@ -212,6 +225,28 @@ int main(int argc, char *argv[])
return 0;
}
+ if (cmd.removeSearchIndex()) {
+ QString file = cmdCollectionFile;
+ if (file.isEmpty())
+ file = MainWindow::defaultHelpCollectionFileName();
+ QString path = QFileInfo(file).path();
+ path += QLatin1String("/") + indexFilesFolder(file);
+
+ QLocalSocket localSocket;
+ localSocket.connectToServer(QString(QLatin1String("QtAssistant%1"))
+ .arg(QLatin1String(QT_VERSION_STR)));
+
+ QDir dir(path); // check if there is no other instance ruinning
+ if (!localSocket.waitForConnected() && dir.exists()) {
+ QStringList lst = dir.entryList(QDir::Files | QDir::Hidden);
+ foreach (const QString &item, lst)
+ dir.remove(item);
+ return 0;
+ } else {
+ return -1;
+ }
+ }
+
{
QSqlDatabase db;
QStringList sqlDrivers(db.drivers());
diff --git a/tools/assistant/tools/assistant/mainwindow.cpp b/tools/assistant/tools/assistant/mainwindow.cpp
index df39650..582eef3 100644
--- a/tools/assistant/tools/assistant/mainwindow.cpp
+++ b/tools/assistant/tools/assistant/mainwindow.cpp
@@ -86,9 +86,9 @@ QT_BEGIN_NAMESPACE
MainWindow::MainWindow(CmdLineParser *cmdLine, QWidget *parent)
: QMainWindow(parent)
+ , m_filterCombo(0)
, m_toolBarMenu(0)
, m_cmdLine(cmdLine)
- , m_searchWidget(0)
, m_progressWidget(0)
, m_qtDocInstaller(0)
, m_connectedInitSignals(false)
@@ -125,20 +125,8 @@ MainWindow::MainWindow(CmdLineParser *cmdLine, QWidget *parent)
connect(searchEngine, SIGNAL(indexingStarted()), this, SLOT(indexingStarted()));
connect(searchEngine, SIGNAL(indexingFinished()), this, SLOT(indexingFinished()));
-#ifdef QT_CLUCENE_SUPPORT
m_centralWidget->createSearchWidget(searchEngine);
-#else
- QDockWidget *dock = new QDockWidget(tr("Search"), this);
- dock->setObjectName(QLatin1String("SearchWindow"));
- m_searchWidget = new SearchWidget(searchEngine, this);
- dock->setWidget(m_searchWidget);
- addDockWidget(Qt::LeftDockWidgetArea, dock);
-
- connect(m_searchWidget, SIGNAL(requestShowLink(const QUrl&)),
- m_centralWidget, SLOT(setSource(const QUrl&)));
- connect(m_searchWidget, SIGNAL(requestShowLinkInNewTab(const QUrl&)),
- m_centralWidget, SLOT(setSourceInNewTab(const QUrl&)));
-#endif
+ m_centralWidget->activateSearchWidget();
QString defWindowTitle = tr("Qt Assistant");
setWindowTitle(defWindowTitle);
@@ -228,11 +216,26 @@ MainWindow::MainWindow(CmdLineParser *cmdLine, QWidget *parent)
else if (m_cmdLine->bookmarks() == CmdLineParser::Activate)
showBookmarks();
+ if (!m_cmdLine->currentFilter().isEmpty()) {
+ const QString &curFilter = m_cmdLine->currentFilter();
+ m_helpEngine->setCurrentFilter(curFilter);
+ if (m_filterCombo) {
+ int idx = m_filterCombo->findText(curFilter);
+ if (idx >= 0) {
+ bool blocked = m_filterCombo->signalsBlocked();
+ m_filterCombo->blockSignals(true);
+ m_filterCombo->setCurrentIndex(idx);
+ m_filterCombo->blockSignals(blocked);
+ }
+ }
+ }
+
if (usesDefaultCollection())
QTimer::singleShot(0, this, SLOT(lookForNewQtDocumentation()));
else
checkInitState();
}
+ setTabPosition(Qt::AllDockWidgetAreas, QTabWidget::North);
}
MainWindow::~MainWindow()
@@ -304,6 +307,7 @@ bool MainWindow::initHelpDB()
hc.addCustomFilter(tr("Unfiltered"), QStringList());
hc.setCustomValue(unfiltered, 1);
}
+
m_helpEngine->blockSignals(true);
m_helpEngine->setCurrentFilter(tr("Unfiltered"));
m_helpEngine->blockSignals(false);
@@ -318,10 +322,10 @@ bool MainWindow::initHelpDB()
void MainWindow::lookForNewQtDocumentation()
{
m_qtDocInstaller = new QtDocInstaller(m_helpEngine->collectionFile());
- connect(m_qtDocInstaller, SIGNAL(errorMessage(const QString&)),
- this, SLOT(displayInstallationError(const QString&)));
- connect(m_qtDocInstaller, SIGNAL(docsInstalled(bool)),
- this, SLOT(qtDocumentationInstalled(bool)));
+ connect(m_qtDocInstaller, SIGNAL(errorMessage(QString)), this,
+ SLOT(displayInstallationError(QString)));
+ connect(m_qtDocInstaller, SIGNAL(docsInstalled(bool)), this,
+ SLOT(qtDocumentationInstalled(bool)));
QString versionKey = QString(QLatin1String("qtVersion%1$$$qt")).
arg(QLatin1String(QT_VERSION_STR));
@@ -353,8 +357,8 @@ void MainWindow::checkInitState()
if (!m_connectedInitSignals) {
connect(m_helpEngine->contentModel(), SIGNAL(contentsCreated()),
this, SLOT(checkInitState()));
- connect(m_helpEngine->indexModel(), SIGNAL(indexCreated()),
- this, SLOT(checkInitState()));
+ connect(m_helpEngine->indexModel(), SIGNAL(indexCreated()), this,
+ SLOT(checkInitState()));
m_connectedInitSignals = true;
}
} else {
@@ -459,7 +463,7 @@ void MainWindow::setupActions()
QKeySequence(tr("ALT+I")));
m_viewMenu->addAction(tr("Bookmarks"), this, SLOT(showBookmarks()),
QKeySequence(tr("ALT+O")));
- m_viewMenu->addAction(tr("Search"), this, SLOT(showSearch()),
+ m_viewMenu->addAction(tr("Search"), this, SLOT(showSearchWidget()),
QKeySequence(tr("ALT+S")));
menu = menuBar()->addMenu(tr("&Go"));
@@ -533,6 +537,8 @@ void MainWindow::setupActions()
SLOT(copyAvailable(bool)));
connect(m_centralWidget, SIGNAL(currentViewerChanged()), this,
SLOT(updateNavigationItems()));
+ connect(m_centralWidget, SIGNAL(currentViewerChanged()), this,
+ SLOT(updateTabCloseAction()));
connect(m_centralWidget, SIGNAL(forwardAvailable(bool)), this,
SLOT(updateNavigationItems()));
connect(m_centralWidget, SIGNAL(backwardAvailable(bool)), this,
@@ -601,8 +607,8 @@ void MainWindow::setupFilterToolbar()
connect(m_helpEngine, SIGNAL(setupFinished()), this,
SLOT(setupFilterCombo()));
- connect(m_filterCombo, SIGNAL(activated(const QString&)), this,
- SLOT(filterDocumentation(const QString&)));
+ connect(m_filterCombo, SIGNAL(activated(QString)), this,
+ SLOT(filterDocumentation(QString)));
setupFilterCombo();
}
@@ -626,12 +632,12 @@ void MainWindow::setupAddressToolbar()
toolBarMenu()->addAction(addressToolBar->toggleViewAction());
// address lineedit
- connect(m_addressLineEdit, SIGNAL(returnPressed()),
- this, SLOT(gotoAddress()));
- connect(m_centralWidget, SIGNAL(currentViewerChanged()),
- this, SLOT(showNewAddress()));
- connect(m_centralWidget, SIGNAL(sourceChanged(const QUrl&)),
- this, SLOT(showNewAddress(const QUrl&)));
+ connect(m_addressLineEdit, SIGNAL(returnPressed()), this,
+ SLOT(gotoAddress()));
+ connect(m_centralWidget, SIGNAL(currentViewerChanged()), this,
+ SLOT(showNewAddress()));
+ connect(m_centralWidget, SIGNAL(sourceChanged(QUrl)), this,
+ SLOT(showNewAddress(QUrl)));
}
void MainWindow::updateAboutMenuText()
@@ -695,10 +701,14 @@ void MainWindow::updateNavigationItems()
m_printAction->setEnabled(hasCurrentViewer);
m_nextAction->setEnabled(m_centralWidget->isForwardAvailable());
m_backAction->setEnabled(m_centralWidget->isBackwardAvailable());
- m_closeTabAction->setEnabled(hasCurrentViewer);
m_newTabAction->setEnabled(hasCurrentViewer);
}
+void MainWindow::updateTabCloseAction()
+{
+ m_closeTabAction->setEnabled(m_centralWidget->enableTabCloseAction());
+}
+
void MainWindow::showTopicChooser(const QMap<QString, QUrl> &links,
const QString &keyword)
{
@@ -712,10 +722,10 @@ void MainWindow::showPreferences()
{
PreferencesDialog dia(m_helpEngine, this);
- connect(&dia, SIGNAL(updateApplicationFont()),
- this, SLOT(updateApplicationFont()));
- connect(&dia, SIGNAL(updateBrowserFont()),
- m_centralWidget, SLOT(updateBrowserFont()));
+ connect(&dia, SIGNAL(updateApplicationFont()), this,
+ SLOT(updateApplicationFont()));
+ connect(&dia, SIGNAL(updateBrowserFont()), m_centralWidget,
+ SLOT(updateBrowserFont()));
dia.showDialog();
}
@@ -787,26 +797,11 @@ void MainWindow::showAboutDialog()
aboutDia.setPixmap(pix);
aboutDia.setWindowTitle(aboutDia.documentTitle());
} else {
-#if QT_EDITION == QT_EDITION_OPENSOURCE
- QString edition = tr("Open Source Edition");
- QString info = tr("This version of Qt Assistant is part of the Qt Open "
- "Source Edition, for use "
- "in the development of Open Source applications. "
- "Qt is a comprehensive C++ framework for cross-platform application "
- "development.");
- QString moreInfo = tr("You need a commercial Qt license for development "
- "of proprietary (closed source) applications. Please see "
- "<a href=\"http://qtsoftware.com/company/about/businessmodel"
- "\">http://qtsoftware.com/company/about/businessmodel</a> for an "
- "overview of Qt licensing.");
-#else
+ // TODO: Remove these variables for 4.6.0. Must keep this way for 4.5.x due to string freeze.
QString edition;
QString info;
- QString moreInfo(tr("This program is licensed to you under the terms of the "
- "Qt Commercial License Agreement. For details, see the file LICENSE "
- "that came with this software distribution."));
+ QString moreInfo;
-#endif
QByteArray resources;
aboutDia.setText(QString::fromLatin1("<center>"
"<h3>%1</h3>"
@@ -884,19 +879,17 @@ void MainWindow::activateCurrentCentralWidgetTab()
void MainWindow::showSearch()
{
- if (m_searchWidget)
- activateDockWidget(m_searchWidget);
- else
- m_centralWidget->activateSearch();
+ m_centralWidget->activateSearchWidget();
+}
+
+void MainWindow::showSearchWidget()
+{
+ m_centralWidget->activateSearchWidget(true);
}
void MainWindow::hideSearch()
{
- if (m_searchWidget) {
- m_searchWidget->parentWidget()->parentWidget()->hide();
- } else {
- m_centralWidget->removeSearchWidget();
- }
+ m_centralWidget->removeSearchWidget();
}
void MainWindow::updateApplicationFont()
@@ -933,25 +926,27 @@ void MainWindow::expandTOC(int depth)
void MainWindow::indexingStarted()
{
- m_progressWidget = new QWidget();
- QLayout* hlayout = new QHBoxLayout(m_progressWidget);
+ if (!m_progressWidget) {
+ m_progressWidget = new QWidget();
+ QLayout* hlayout = new QHBoxLayout(m_progressWidget);
- QSizePolicy sizePolicy(QSizePolicy::Preferred, QSizePolicy::Maximum);
+ QSizePolicy sizePolicy(QSizePolicy::Preferred, QSizePolicy::Maximum);
- QLabel *label = new QLabel(tr("Updating search index"));
- label->setSizePolicy(sizePolicy);
- hlayout->addWidget(label);
+ QLabel *label = new QLabel(tr("Updating search index"));
+ label->setSizePolicy(sizePolicy);
+ hlayout->addWidget(label);
- QProgressBar *progressBar = new QProgressBar();
- progressBar->setRange(0, 0);
- progressBar->setTextVisible(false);
- progressBar->setSizePolicy(sizePolicy);
+ QProgressBar *progressBar = new QProgressBar();
+ progressBar->setRange(0, 0);
+ progressBar->setTextVisible(false);
+ progressBar->setSizePolicy(sizePolicy);
- hlayout->setSpacing(6);
- hlayout->setMargin(0);
- hlayout->addWidget(progressBar);
+ hlayout->setSpacing(6);
+ hlayout->setMargin(0);
+ hlayout->addWidget(progressBar);
- statusBar()->addPermanentWidget(m_progressWidget);
+ statusBar()->addPermanentWidget(m_progressWidget);
+ }
}
void MainWindow::indexingFinished()
@@ -965,8 +960,7 @@ QWidget* MainWindow::setupBookmarkWidget()
{
m_bookmarkManager = new BookmarkManager(m_helpEngine);
m_bookmarkWidget = new BookmarkWidget(m_bookmarkManager, this);
- connect(m_bookmarkWidget, SIGNAL(addBookmark()),
- this, SLOT(addBookmark()));
+ connect(m_bookmarkWidget, SIGNAL(addBookmark()), this, SLOT(addBookmark()));
return m_bookmarkWidget;
}
diff --git a/tools/assistant/tools/assistant/mainwindow.h b/tools/assistant/tools/assistant/mainwindow.h
index c716b1c..d7f5c69 100644
--- a/tools/assistant/tools/assistant/mainwindow.h
+++ b/tools/assistant/tools/assistant/mainwindow.h
@@ -62,8 +62,6 @@ class BookmarkWidget;
class CmdLineParser;
class QtDocInstaller;
-class SearchWidget;
-
class MainWindow : public QMainWindow
{
Q_OBJECT
@@ -94,6 +92,7 @@ public slots:
void showIndex();
void showBookmarks();
void showSearch();
+ void showSearchWidget();
void syncContents();
void activateCurrentCentralWidgetTab();
@@ -106,6 +105,7 @@ private slots:
void showAboutDialog();
void copyAvailable(bool yes);
void updateNavigationItems();
+ void updateTabCloseAction();
void showNewAddress(const QUrl &url);
void addNewBookmark(const QString &title, const QString &url);
void showTopicChooser(const QMap<QString, QUrl> &links, const QString &keyword);
@@ -159,7 +159,6 @@ private:
QMenu *m_toolBarMenu;
CmdLineParser *m_cmdLine;
- SearchWidget *m_searchWidget;
QWidget *m_progressWidget;
QtDocInstaller *m_qtDocInstaller;
diff --git a/tools/assistant/tools/assistant/preferencesdialog.cpp b/tools/assistant/tools/assistant/preferencesdialog.cpp
index 094bd9c..74f7ba8 100644
--- a/tools/assistant/tools/assistant/preferencesdialog.cpp
+++ b/tools/assistant/tools/assistant/preferencesdialog.cpp
@@ -44,6 +44,7 @@
#include "installdialog.h"
#include "fontpanel.h"
#include "centralwidget.h"
+#include "aboutdialog.h"
#include <QtAlgorithms>
@@ -52,6 +53,8 @@
#include <QtGui/QMessageBox>
#include <QtGui/QMenu>
#include <QtGui/QFontDatabase>
+#include <QtGui/QApplication>
+#include <QtGui/QDesktopWidget>
#include <QtHelp/QHelpEngineCore>
@@ -59,36 +62,38 @@ QT_BEGIN_NAMESPACE
PreferencesDialog::PreferencesDialog(QHelpEngineCore *helpEngine, QWidget *parent)
: QDialog(parent)
+ , m_helpEngine(helpEngine)
, m_appFontChanged(false)
, m_browserFontChanged(false)
{
- m_helpEngine = helpEngine;
m_ui.setupUi(this);
- connect(m_ui.buttonBox->button(QDialogButtonBox::Ok),
- SIGNAL(clicked()), this, SLOT(applyChanges()));
- connect(m_ui.buttonBox->button(QDialogButtonBox::Cancel),
- SIGNAL(clicked()), this, SLOT(reject()));
+ connect(m_ui.buttonBox->button(QDialogButtonBox::Ok), SIGNAL(clicked()),
+ this, SLOT(applyChanges()));
+ connect(m_ui.buttonBox->button(QDialogButtonBox::Cancel), SIGNAL(clicked()),
+ this, SLOT(reject()));
- m_hideFiltersTab = !m_helpEngine->customValue(QLatin1String("EnableFilterFunctionality"),
- true).toBool();
- m_hideDocsTab = !m_helpEngine->customValue(QLatin1String("EnableDocumentationManager"),
- true).toBool();
+ QLatin1String key("EnableFilterFunctionality");
+ m_hideFiltersTab = !m_helpEngine->customValue(key, true).toBool();
+
+ key = QLatin1String("EnableDocumentationManager");
+ m_hideDocsTab = !m_helpEngine->customValue(key, true).toBool();
if (!m_hideFiltersTab) {
m_ui.attributeWidget->header()->hide();
m_ui.attributeWidget->setRootIsDecorated(false);
+
connect(m_ui.attributeWidget, SIGNAL(itemChanged(QTreeWidgetItem*, int)),
this, SLOT(updateFilterMap()));
connect(m_ui.filterWidget,
- SIGNAL(currentItemChanged(QListWidgetItem*, QListWidgetItem*)),
- this, SLOT(updateAttributes(QListWidgetItem*)));
+ SIGNAL(currentItemChanged(QListWidgetItem*, QListWidgetItem*)), this,
+ SLOT(updateAttributes(QListWidgetItem*)));
- connect(m_ui.filterAddButton, SIGNAL(clicked()),
- this, SLOT(addFilter()));
- connect(m_ui.filterRemoveButton, SIGNAL(clicked()),
- this, SLOT(removeFilter()));
+ connect(m_ui.filterAddButton, SIGNAL(clicked()), this,
+ SLOT(addFilter()));
+ connect(m_ui.filterRemoveButton, SIGNAL(clicked()), this,
+ SLOT(removeFilter()));
updateFilterPage();
} else {
@@ -106,22 +111,34 @@ PreferencesDialog::PreferencesDialog(QHelpEngineCore *helpEngine, QWidget *paren
} else {
m_ui.tabWidget->removeTab(m_ui.tabWidget->indexOf(m_ui.docsTab));
}
+
updateFontSettingsPage();
updateOptionsPage();
}
PreferencesDialog::~PreferencesDialog()
{
+ QLatin1String key("");
if (m_appFontChanged) {
- m_helpEngine->setCustomValue(QLatin1String("appFont"), m_appFontPanel->selectedFont());
- m_helpEngine->setCustomValue(QLatin1String("useAppFont"), m_appFontPanel->isChecked());
- m_helpEngine->setCustomValue(QLatin1String("appWritingSystem"), m_appFontPanel->writingSystem());
+ key = QLatin1String("appFont");
+ m_helpEngine->setCustomValue(key, m_appFontPanel->selectedFont());
+
+ key = QLatin1String("useAppFont");
+ m_helpEngine->setCustomValue(key, m_appFontPanel->isChecked());
+
+ key = QLatin1String("appWritingSystem");
+ m_helpEngine->setCustomValue(key, m_appFontPanel->writingSystem());
}
if (m_browserFontChanged) {
- m_helpEngine->setCustomValue(QLatin1String("browserFont"), m_browserFontPanel->selectedFont());
- m_helpEngine->setCustomValue(QLatin1String("useBrowserFont"), m_browserFontPanel->isChecked());
- m_helpEngine->setCustomValue(QLatin1String("browserWritingSystem"), m_browserFontPanel->writingSystem());
+ key = QLatin1String("browserFont");
+ m_helpEngine->setCustomValue(key, m_browserFontPanel->selectedFont());
+
+ key = QLatin1String("useBrowserFont");
+ m_helpEngine->setCustomValue(key, m_browserFontPanel->isChecked());
+
+ key = QLatin1String("browserWritingSystem");
+ m_helpEngine->setCustomValue(key, m_browserFontPanel->writingSystem());
}
if (m_appFontChanged || m_browserFontChanged) {
@@ -129,8 +146,10 @@ PreferencesDialog::~PreferencesDialog()
emit updateBrowserFont();
}
- if (!m_ui.homePageLineEdit->text().isEmpty())
- m_helpEngine->setCustomValue(QLatin1String("homepage"), m_ui.homePageLineEdit->text());
+ if (!m_ui.homePageLineEdit->text().isEmpty()) {
+ key = QLatin1String("homepage");
+ m_helpEngine->setCustomValue(key, m_ui.homePageLineEdit->text());
+ }
}
void PreferencesDialog::showDialog()
@@ -173,7 +192,7 @@ void PreferencesDialog::updateAttributes(QListWidgetItem *item)
if (item)
checkedList = m_filterMap.value(item->text());
QTreeWidgetItem *itm;
- for (int i=0; i<m_ui.attributeWidget->topLevelItemCount(); ++i) {
+ for (int i = 0; i < m_ui.attributeWidget->topLevelItemCount(); ++i) {
itm = m_ui.attributeWidget->topLevelItem(i);
if (checkedList.contains(itm->text(0)))
itm->setCheckState(0, Qt::Checked);
@@ -192,7 +211,7 @@ void PreferencesDialog::updateFilterMap()
QStringList newAtts;
QTreeWidgetItem *itm = 0;
- for (int i=0; i<m_ui.attributeWidget->topLevelItemCount(); ++i) {
+ for (int i = 0; i < m_ui.attributeWidget->topLevelItemCount(); ++i) {
itm = m_ui.attributeWidget->topLevelItem(i);
if (itm->checkState(0) == Qt::Checked)
newAtts.append(itm->text(0));
@@ -219,8 +238,8 @@ void PreferencesDialog::addFilter()
void PreferencesDialog::removeFilter()
{
- QListWidgetItem *item = m_ui.filterWidget
- ->takeItem(m_ui.filterWidget->currentRow());
+ QListWidgetItem *item =
+ m_ui.filterWidget ->takeItem(m_ui.filterWidget->currentRow());
if (!item)
return;
@@ -238,25 +257,48 @@ void PreferencesDialog::addDocumentationLocal()
if (fileNames.isEmpty())
return;
+ QStringList invalidFiles;
+ QStringList alreadyRegistered;
foreach (const QString &fileName, fileNames) {
- const QString ns = QHelpEngineCore::namespaceName(fileName);
- if (ns.isEmpty()) {
- QMessageBox::warning(this, tr("Add Documentation"),
- tr("The specified file is not a valid Qt Help File!"));
+ const QString nameSpace = QHelpEngineCore::namespaceName(fileName);
+ if (nameSpace.isEmpty()) {
+ invalidFiles.append(fileName);
continue;
}
- if (m_ui.registeredDocsListWidget->findItems(ns, Qt::MatchFixedString).count()) {
- QMessageBox::warning(this, tr("Add Documentation"),
- tr("The namespace %1 is already registered!").arg(ns));
- continue;
+ if (m_ui.registeredDocsListWidget->findItems(nameSpace,
+ Qt::MatchFixedString).count()) {
+ alreadyRegistered.append(nameSpace);
+ continue;
}
m_helpEngine->registerDocumentation(fileName);
- m_ui.registeredDocsListWidget->addItem(ns);
- m_regDocs.append(ns);
- m_unregDocs.removeAll(ns);
+ m_ui.registeredDocsListWidget->addItem(nameSpace);
+ m_regDocs.append(nameSpace);
+ m_unregDocs.removeAll(nameSpace);
+ }
+
+ if (!invalidFiles.isEmpty() || !alreadyRegistered.isEmpty()) {
+ QString message;
+ if (!alreadyRegistered.isEmpty()) {
+ foreach (const QString &ns, alreadyRegistered) {
+ message += tr("The namespace %1 is already registered!")
+ .arg(QString("<b>%1</b>").arg(ns)) + QLatin1String("<br>");
+ }
+ if (!invalidFiles.isEmpty())
+ message.append(QLatin1String("<br>"));
+ }
+
+ if (!invalidFiles.isEmpty()) {
+ message += tr("The specified file is not a valid Qt Help File!");
+ message.append(QLatin1String("<ul>"));
+ foreach (const QString &file, invalidFiles)
+ message += QLatin1String("<li>") + file + QLatin1String("</li>");
+ message.append(QLatin1String("</ul>"));
+ }
+ QMessageBox::warning(this, tr("Add Documentation"), message);
}
+
updateFilterPage();
}
@@ -362,35 +404,50 @@ void PreferencesDialog::updateFontSettingsPage()
m_ui.stackedWidget_2->setCurrentIndex(0);
const QString customSettings(tr("Use custom settings"));
- QFont font = qVariantValue<QFont>(m_helpEngine->customValue(QLatin1String("appFont")));
- QFontDatabase::WritingSystem writingSystem = static_cast<QFontDatabase::WritingSystem>
- (m_helpEngine->customValue(QLatin1String("appWritingSystem")).toInt());
-
m_appFontPanel->setTitle(customSettings);
+
+ QLatin1String key = QLatin1String("appFont");
+ QFont font = qVariantValue<QFont>(m_helpEngine->customValue(key));
m_appFontPanel->setSelectedFont(font);
- m_appFontPanel->setWritingSystem(writingSystem);
- m_appFontPanel->setChecked(m_helpEngine->customValue(QLatin1String("useAppFont")).toBool());
- QFont font2 = qVariantValue<QFont>(m_helpEngine->customValue(QLatin1String("browserFont")));
- writingSystem = static_cast<QFontDatabase::WritingSystem>
- (m_helpEngine->customValue(QLatin1String("browserWritingSystem")).toInt());
+ key = QLatin1String("appWritingSystem");
+ QFontDatabase::WritingSystem system = static_cast<QFontDatabase::WritingSystem>
+ (m_helpEngine->customValue(key).toInt());
+ m_appFontPanel->setWritingSystem(system);
+
+ key = QLatin1String("useAppFont");
+ m_appFontPanel->setChecked(m_helpEngine->customValue(key).toBool());
m_browserFontPanel->setTitle(customSettings);
- m_browserFontPanel->setSelectedFont(font2);
- m_browserFontPanel->setWritingSystem(writingSystem);
- m_browserFontPanel->setChecked(m_helpEngine->customValue(QLatin1String("useBrowserFont")).toBool());
- connect(m_appFontPanel, SIGNAL(toggled(bool)), this, SLOT(appFontSettingToggled(bool)));
- connect(m_browserFontPanel, SIGNAL(toggled(bool)), this, SLOT(browserFontSettingToggled(bool)));
+ key = QLatin1String("browserFont");
+ font = qVariantValue<QFont>(m_helpEngine->customValue(key));
+ m_browserFontPanel->setSelectedFont(font);
+
+ key = QLatin1String("browserWritingSystem");
+ system = static_cast<QFontDatabase::WritingSystem>
+ (m_helpEngine->customValue(key).toInt());
+ m_browserFontPanel->setWritingSystem(system);
+
+ key = QLatin1String("useBrowserFont");
+ m_browserFontPanel->setChecked(m_helpEngine->customValue(key).toBool());
+
+ connect(m_appFontPanel, SIGNAL(toggled(bool)), this,
+ SLOT(appFontSettingToggled(bool)));
+ connect(m_browserFontPanel, SIGNAL(toggled(bool)), this,
+ SLOT(browserFontSettingToggled(bool)));
QList<QComboBox*> allCombos = qFindChildren<QComboBox*>(m_appFontPanel);
- foreach (QComboBox* box, allCombos)
- connect(box, SIGNAL(currentIndexChanged(int)), this, SLOT(appFontSettingChanged(int)));
+ foreach (QComboBox* box, allCombos) {
+ connect(box, SIGNAL(currentIndexChanged(int)), this,
+ SLOT(appFontSettingChanged(int)));
+ }
- allCombos.clear();
allCombos = qFindChildren<QComboBox*>(m_browserFontPanel);
- foreach (QComboBox* box, allCombos)
- connect(box, SIGNAL(currentIndexChanged(int)), this, SLOT(browserFontSettingChanged(int)));
+ foreach (QComboBox* box, allCombos) {
+ connect(box, SIGNAL(currentIndexChanged(int)), this,
+ SLOT(browserFontSettingChanged(int)));
+ }
}
void PreferencesDialog::appFontSettingToggled(bool on)
@@ -436,8 +493,8 @@ void PreferencesDialog::updateOptionsPage()
void PreferencesDialog::restoreDefaultHomepage()
{
- QString homepage = m_helpEngine->customValue(
- QLatin1String("defaultHomepage"), QLatin1String("help")).toString();
+ QString homepage = m_helpEngine->customValue(QLatin1String("defaultHomepage"),
+ QLatin1String("help")).toString();
m_ui.homePageLineEdit->setText(homepage);
}
diff --git a/tools/assistant/tools/assistant/searchwidget.cpp b/tools/assistant/tools/assistant/searchwidget.cpp
index 000c73d..c40a9c4 100644
--- a/tools/assistant/tools/assistant/searchwidget.cpp
+++ b/tools/assistant/tools/assistant/searchwidget.cpp
@@ -62,6 +62,7 @@ QT_BEGIN_NAMESPACE
SearchWidget::SearchWidget(QHelpSearchEngine *engine, QWidget *parent)
: QWidget(parent)
, zoomCount(0)
+ , attached(false)
, searchEngine(engine)
{
QVBoxLayout *vLayout = new QVBoxLayout(this);
@@ -70,16 +71,18 @@ SearchWidget::SearchWidget(QHelpSearchEngine *engine, QWidget *parent)
QHelpSearchQueryWidget *queryWidget = searchEngine->queryWidget();
vLayout->addWidget(queryWidget);
- vLayout->addWidget(resultWidget);
-
+ vLayout->addWidget(resultWidget);
+
setFocusProxy(queryWidget);
connect(queryWidget, SIGNAL(search()), this, SLOT(search()));
- connect(resultWidget, SIGNAL(requestShowLink(const QUrl&)),
- this, SIGNAL(requestShowLink(const QUrl&)));
+ connect(resultWidget, SIGNAL(requestShowLink(QUrl)), this,
+ SIGNAL(requestShowLink(QUrl)));
- connect(searchEngine, SIGNAL(searchingStarted()), this, SLOT(searchingStarted()));
- connect(searchEngine, SIGNAL(searchingFinished(int)), this, SLOT(searchingFinished(int)));
+ connect(searchEngine, SIGNAL(searchingStarted()), this,
+ SLOT(searchingStarted()));
+ connect(searchEngine, SIGNAL(searchingFinished(int)), this,
+ SLOT(searchingFinished(int)));
QTextBrowser* browser = qFindChild<QTextBrowser*>(resultWidget);
browser->viewport()->installEventFilter(this);
@@ -92,10 +95,6 @@ SearchWidget::~SearchWidget()
void SearchWidget::zoomIn()
{
-#ifndef QT_CLUCENE_SUPPORT
- return;
-#endif
-
QTextBrowser* browser = qFindChild<QTextBrowser*>(resultWidget);
if (browser && zoomCount != 10) {
zoomCount++;
@@ -105,10 +104,6 @@ void SearchWidget::zoomIn()
void SearchWidget::zoomOut()
{
-#ifndef QT_CLUCENE_SUPPORT
- return;
-#endif
-
QTextBrowser* browser = qFindChild<QTextBrowser*>(resultWidget);
if (browser && zoomCount != -5) {
zoomCount--;
@@ -118,10 +113,6 @@ void SearchWidget::zoomOut()
void SearchWidget::resetZoom()
{
-#ifndef QT_CLUCENE_SUPPORT
- return;
-#endif
-
if (zoomCount == 0)
return;
@@ -132,6 +123,16 @@ void SearchWidget::resetZoom()
}
}
+bool SearchWidget::isAttached() const
+{
+ return attached;
+}
+
+void SearchWidget::setAttached(bool state)
+{
+ attached = state;
+}
+
void SearchWidget::search() const
{
QList<QHelpSearchQuery> query = searchEngine->queryWidget()->query();
@@ -152,7 +153,8 @@ void SearchWidget::searchingFinished(int hits)
bool SearchWidget::eventFilter(QObject* o, QEvent *e)
{
QTextBrowser* browser = qFindChild<QTextBrowser*>(resultWidget);
- if (browser && o == browser->viewport() && e->type() == QEvent::MouseButtonRelease){
+ if (browser && o == browser->viewport()
+ && e->type() == QEvent::MouseButtonRelease){
QMouseEvent *me = static_cast<QMouseEvent*>(e);
QUrl link = resultWidget->linkAt(me->pos());
if (!link.isEmpty() || link.isValid()) {
@@ -179,7 +181,6 @@ void SearchWidget::contextMenuEvent(QContextMenuEvent *contextMenuEvent)
QMenu menu;
QPoint point = contextMenuEvent->globalPos();
-#ifdef QT_CLUCENE_SUPPORT
QTextBrowser* browser = qFindChild<QTextBrowser*>(resultWidget);
if (!browser)
return;
@@ -190,22 +191,25 @@ void SearchWidget::contextMenuEvent(QContextMenuEvent *contextMenuEvent)
QUrl link = browser->anchorAt(point);
- QAction *copyAction = menu.addAction(tr("&Copy") +
- QString(QLatin1String("\t") + QString(QKeySequence(Qt::CTRL | Qt::Key_C))));
+ QKeySequence keySeq(QKeySequence::Copy);
+ QAction *copyAction = menu.addAction(tr("&Copy") + QLatin1String("\t") +
+ keySeq.toString(QKeySequence::NativeText));
copyAction->setEnabled(QTextCursor(browser->textCursor()).hasSelection());
QAction *copyAnchorAction = menu.addAction(tr("Copy &Link Location"));
copyAnchorAction->setEnabled(!link.isEmpty() && link.isValid());
- QAction *newTabAction = menu.addAction(tr("Open Link in New Tab") +
- QString(QLatin1String("\t") + QString(QKeySequence(Qt::CTRL))) +
+ keySeq = QKeySequence(Qt::CTRL);
+ QAction *newTabAction = menu.addAction(tr("Open Link in New Tab") +
+ QLatin1String("\t") + keySeq.toString(QKeySequence::NativeText) +
QLatin1String("LMB"));
newTabAction->setEnabled(!link.isEmpty() && link.isValid());
menu.addSeparator();
- QAction *selectAllAction = menu.addAction(tr("Select All") +
- QString(QLatin1String("\t") + QString(QKeySequence(Qt::CTRL | Qt::Key_A))));
+ keySeq = QKeySequence::SelectAll;
+ QAction *selectAllAction = menu.addAction(tr("Select All") +
+ QLatin1String("\t") + keySeq.toString(QKeySequence::NativeText));
QAction *usedAction = menu.exec(mapToGlobal(contextMenuEvent->pos()));
if (usedAction == copyAction) {
@@ -222,25 +226,10 @@ void SearchWidget::contextMenuEvent(QContextMenuEvent *contextMenuEvent)
}
else if (usedAction == newTabAction) {
emit requestShowLinkInNewTab(link);
- }
+ }
else if (usedAction == selectAllAction) {
browser->selectAll();
}
-#else
- point = resultWidget->mapFromGlobal(point);
- QUrl link = resultWidget->linkAt(point);
- if (link.isEmpty() || !link.isValid())
- return;
-
- QAction *curTab = menu.addAction(tr("Open Link"));
- QAction *newTab = menu.addAction(tr("Open Link in New Tab"));
-
- QAction *action = menu.exec(mapToGlobal(contextMenuEvent->pos()));
- if (curTab == action)
- emit requestShowLink(link);
- else if (newTab == action)
- emit requestShowLinkInNewTab(link);
-#endif
}
QT_END_NAMESPACE
diff --git a/tools/assistant/tools/assistant/searchwidget.h b/tools/assistant/tools/assistant/searchwidget.h
index 22fe80d..34eb86f 100644
--- a/tools/assistant/tools/assistant/searchwidget.h
+++ b/tools/assistant/tools/assistant/searchwidget.h
@@ -65,6 +65,9 @@ public:
void zoomOut();
void resetZoom();
+ bool isAttached() const;
+ void setAttached(bool state);
+
signals:
void requestShowLink(const QUrl &url);
void requestShowLinkInNewTab(const QUrl &url);
@@ -81,6 +84,7 @@ private:
private:
int zoomCount;
+ bool attached;
QHelpSearchEngine *searchEngine;
QHelpSearchResultWidget *resultWidget;
};
diff --git a/tools/assistant/translations/qt_help.pro b/tools/assistant/translations/qt_help.pro
index 1684ac5..efad6bf 100644
--- a/tools/assistant/translations/qt_help.pro
+++ b/tools/assistant/translations/qt_help.pro
@@ -43,7 +43,6 @@ TRANSLATIONS=$$[QT_INSTALL_TRANSLATIONS]/qt_help_de.ts \
$$[QT_INSTALL_TRANSLATIONS]/qt_help_ja.ts \
$$[QT_INSTALL_TRANSLATIONS]/qt_help_pl.ts \
$$[QT_INSTALL_TRANSLATIONS]/qt_help_untranslated.ts \
- $$[QT_INSTALL_TRANSLATIONS]/qt_help_tr_TR.ts \
$$[QT_INSTALL_TRANSLATIONS]/qt_help_zh_CN.ts \
$$[QT_INSTALL_TRANSLATIONS]/qt_help_zh_TW.ts
error("This is a dummy profile to be used for translations ONLY.")
diff --git a/tools/assistant/translations/translations.pro b/tools/assistant/translations/translations.pro
index 84bde8c..58de554 100644
--- a/tools/assistant/translations/translations.pro
+++ b/tools/assistant/translations/translations.pro
@@ -44,6 +44,5 @@ TRANSLATIONS=$$[QT_INSTALL_TRANSLATIONS]/assistant_de.ts \
$$[QT_INSTALL_TRANSLATIONS]/assistant_ja.ts \
$$[QT_INSTALL_TRANSLATIONS]/assistant_pl.ts \
$$[QT_INSTALL_TRANSLATIONS]/assistant_untranslated.ts \
- $$[QT_INSTALL_TRANSLATIONS]/assistant_tr_TR.ts \
$$[QT_INSTALL_TRANSLATIONS]/assistant_zh_CN.ts \
$$[QT_INSTALL_TRANSLATIONS]/assistant_zh_TW.ts
diff --git a/tools/assistant/translations/translations_adp.pro b/tools/assistant/translations/translations_adp.pro
index f6ab62e..e3edca4 100644
--- a/tools/assistant/translations/translations_adp.pro
+++ b/tools/assistant/translations/translations_adp.pro
@@ -35,7 +35,6 @@ TRANSLATIONS=$$[QT_INSTALL_TRANSLATIONS]/assistant_adp_de.ts \
$$[QT_INSTALL_TRANSLATIONS]/assistant_adp_ja.ts \
$$[QT_INSTALL_TRANSLATIONS]/assistant_adp_pl.ts \
$$[QT_INSTALL_TRANSLATIONS]/assistant_adp_untranslated.ts \
- $$[QT_INSTALL_TRANSLATIONS]/assistant_adp_tr_TR.ts \
$$[QT_INSTALL_TRANSLATIONS]/assistant_adp_zh_CN.ts \
$$[QT_INSTALL_TRANSLATIONS]/assistant_adp_zh_TW.ts
error("This is a dummy profile to be used for translations ONLY.")
diff --git a/tools/checksdk/main.cpp b/tools/checksdk/main.cpp
index 1d4b616..717f5c9 100644
--- a/tools/checksdk/main.cpp
+++ b/tools/checksdk/main.cpp
@@ -97,12 +97,6 @@ int main(int argc, char **argv)
}
}
- // Check for SDK Name, otherwise use Windows Mobile as default
- if (sdkName.isEmpty()) {
- qWarning("No SDK specified: Defaulting to Windows Mobile 5.0 Pocket PC SDK");
- sdkName = QString::fromLatin1("Windows Mobile 5.0 Pocket PC SDK (ARMV4I)");
- }
-
CeSdkHandler handler;
if (!handler.parse()) {
qWarning("Could not find any installed SDK, aborting!");
@@ -118,6 +112,12 @@ int main(int argc, char **argv)
return 0;
}
+ // Check for SDK Name, otherwise use Windows Mobile as default
+ if (sdkName.isEmpty()) {
+ qWarning("No SDK specified: Defaulting to Windows Mobile 5.0 Pocket PC SDK");
+ sdkName = QString::fromLatin1("Windows Mobile 5.0 Pocket PC SDK (ARMV4I)");
+ }
+
// finally find the given SDK and prompt out the environment to be set
for (QList<CeSdkInfo>::iterator it = list.begin(); it != list.end(); ++it ) {
if (sdkName == it->name()) {
diff --git a/tools/configure/configureapp.cpp b/tools/configure/configureapp.cpp
index 8c0dc39..91344c8 100644
--- a/tools/configure/configureapp.cpp
+++ b/tools/configure/configureapp.cpp
@@ -351,6 +351,7 @@ Configure::Configure( int& argc, char** argv )
dictionary[ "QMAKESPEC" ] = tmp;
dictionary[ "INCREDIBUILD_XGE" ] = "auto";
+ dictionary[ "LTCG" ] = "no";
}
Configure::~Configure()
@@ -474,6 +475,9 @@ void Configure::parseCmdLine()
else if( configCmdLine.at(i) == "-developer-build" )
dictionary[ "BUILDDEV" ] = "yes";
else if( configCmdLine.at(i) == "-nokia-developer" ) {
+ cout << "Detected -nokia-developer option" << endl;
+ cout << "Nokia employees and agents are allowed to use this software under" << endl;
+ cout << "the authority of Nokia Corporation and/or its subsidiary(-ies)" << endl;
dictionary[ "BUILDNOKIA" ] = "yes";
dictionary[ "BUILDDEV" ] = "yes";
dictionary["LICENSE_CONFIRMED"] = "yes";
@@ -484,6 +488,12 @@ void Configure::parseCmdLine()
else if( configCmdLine.at(i) == "-commercial" ) {
dictionary[ "BUILDTYPE" ] = "commercial";
}
+ else if( configCmdLine.at(i) == "-ltcg" ) {
+ dictionary[ "LTCG" ] = "yes";
+ }
+ else if( configCmdLine.at(i) == "-no-ltcg" ) {
+ dictionary[ "LTCG" ] = "no";
+ }
#endif
else if( configCmdLine.at(i) == "-platform" ) {
@@ -675,6 +685,9 @@ void Configure::parseCmdLine()
} else if ( configCmdLine.at(i) == "-opengl-es-cl" ) {
dictionary[ "OPENGL" ] = "yes";
dictionary[ "OPENGL_ES_CL" ] = "yes";
+ } else if ( configCmdLine.at(i) == "-opengl-es-2" ) {
+ dictionary[ "OPENGL" ] = "yes";
+ dictionary[ "OPENGL_ES_2" ] = "yes";
}
// Databases ------------------------------------------------
else if( configCmdLine.at(i) == "-qt-sql-mysql" )
@@ -1459,6 +1472,9 @@ bool Configure::displayHelp()
desc("SHARED", "yes", "-shared", "Create and use shared Qt libraries.");
desc("SHARED", "no", "-static", "Create and use static Qt libraries.\n");
+ desc("LTCG", "yes", "-ltcg", "Use Link Time Code Generation. (Release builds only)");
+ desc("LTCG", "no", "-no-ltcg", "Do not use Link Time Code Generation.\n");
+
desc("FAST", "no", "-no-fast", "Configure Qt normally by generating Makefiles for all project files.");
desc("FAST", "yes", "-fast", "Configure Qt quickly by generating Makefiles only for library and "
"subdirectory targets. All other Makefiles are created as wrappers "
@@ -1632,6 +1648,7 @@ bool Configure::displayHelp()
desc( "-signature <file>", "Use file for signing the target project");
desc("OPENGL_ES_CM", "no", "-opengl-es-cm", "Enable support for OpenGL ES Common");
desc("OPENGL_ES_CL", "no", "-opengl-es-cl", "Enable support for OpenGL ES Common Lite");
+ desc("OPENGL_ES_2", "no", "-opengl-es-2", "Enable support for OpenGL ES 2.0");
desc("DIRECTSHOW", "no", "-phonon-wince-ds9", "Enable Phonon Direct Show 9 backend for Windows CE");
return true;
@@ -1785,6 +1802,8 @@ bool Configure::checkAvailability(const QString &part)
available = (dictionary[ "ARCHITECTURE" ] == "windowsce");
else if (part == "OPENGL_ES_CL")
available = (dictionary[ "ARCHITECTURE" ] == "windowsce");
+ else if (part == "OPENGL_ES_2")
+ available = (dictionary[ "ARCHITECTURE" ] == "windowsce");
else if (part == "DIRECTSHOW")
available = (dictionary[ "ARCHITECTURE" ] == "windowsce");
else if (part == "SSE2")
@@ -2264,6 +2283,10 @@ void Configure::generateOutputVars()
qtConfig += "opengles1";
}
+ if ( dictionary["OPENGL_ES_2"] == "yes" ) {
+ qtConfig += "opengles2";
+ }
+
if ( dictionary["OPENGL_ES_CL"] == "yes" ) {
qtConfig += "opengles1cl";
}
@@ -2481,6 +2504,8 @@ void Configure::generateCachefile()
else
configStream << " static";
+ if( dictionary[ "LTCG" ] == "yes" )
+ configStream << " ltcg";
if( dictionary[ "STL" ] == "yes" )
configStream << " stl";
if ( dictionary[ "EXCEPTIONS" ] == "yes" )
@@ -2664,9 +2689,11 @@ void Configure::generateConfigfiles()
if(dictionary["SCRIPTTOOLS"] == "no") qconfigList += "QT_NO_SCRIPTTOOLS";
if(dictionary["OPENGL_ES_CM"] == "yes" ||
- dictionary["OPENGL_ES_CL"] == "yes") qconfigList += "QT_OPENGL_ES";
+ dictionary["OPENGL_ES_CL"] == "yes" ||
+ dictionary["OPENGL_ES_2"] == "yes") qconfigList += "QT_OPENGL_ES";
if(dictionary["OPENGL_ES_CM"] == "yes") qconfigList += "QT_OPENGL_ES_1";
+ if(dictionary["OPENGL_ES_2"] == "yes") qconfigList += "QT_OPENGL_ES_2";
if(dictionary["OPENGL_ES_CL"] == "yes") qconfigList += "QT_OPENGL_ES_1_CL";
if(dictionary["SQL_MYSQL"] == "yes") qconfigList += "QT_SQL_MYSQL";
@@ -2901,6 +2928,7 @@ void Configure::displayConfig()
cout << "Architecture................" << dictionary[ "ARCHITECTURE" ] << endl;
cout << "Maketool...................." << dictionary[ "MAKE" ] << endl;
cout << "Debug symbols..............." << (dictionary[ "BUILD" ] == "debug" ? "yes" : "no") << endl;
+ cout << "Link Time Code Generation..." << dictionary[ "LTCG" ] << endl;
cout << "Accessibility support......." << dictionary[ "ACCESSIBILITY" ] << endl;
cout << "STL support................." << dictionary[ "STL" ] << endl;
cout << "Exception support..........." << dictionary[ "EXCEPTIONS" ] << endl;
@@ -3500,7 +3528,7 @@ void Configure::readLicense()
#else
} else {
Tools::checkLicense(dictionary, licenseInfo, firstLicensePath());
- if (dictionary["DONE"] != "error") {
+ if (dictionary["DONE"] != "error" && dictionary["BUILDNOKIA"] != "yes") {
// give the user some feedback, and prompt for license acceptance
cout << endl << "This is the " << dictionary["PLATFORM NAME"] << " " << dictionary["EDITION"] << " Edition."<< endl << endl;
if (!showLicense(dictionary["LICENSE FILE"])) {
diff --git a/tools/configure/tools.cpp b/tools/configure/tools.cpp
index 5d12ea5..2649d44 100644
--- a/tools/configure/tools.cpp
+++ b/tools/configure/tools.cpp
@@ -58,6 +58,13 @@ using namespace std;
void Tools::checkLicense(QMap<QString,QString> &dictionary, QMap<QString,QString> &licenseInfo,
const QString &path)
{
+ if (dictionary[ "BUILDNOKIA" ] == "yes") {
+ dictionary["EDITION"] = "NokiaInternalBuild";
+ dictionary["LICENSE_FILE"] = ""; // No License for nokia developers
+ dictionary["QT_EDITION"] = "QT_EDITION_OPENSOURCE";
+ return; // No license key checking in internal builds
+ }
+
QString tpLicense = dictionary["QT_SOURCE_TREE"] + "/LICENSE.PREVIEW.OPENSOURCE";
if (QFile::exists(tpLicense)) {
dictionary["EDITION"] = "Preview";
@@ -142,25 +149,28 @@ void Tools::checkLicense(QMap<QString,QString> &dictionary, QMap<QString,QString
dictionary["EDITION"] = "GUIFramework";
dictionary["QT_EDITION"] = "QT_EDITION_DESKTOPLIGHT";
}
+
+ if (platforms == 'X') {
+ dictionary["LICENSE_EXTENSION"] = "-ALLOS";
+ } else if (strchr("3679ACDEHJKMSUWX", platforms)) {
+ dictionary["LICENSE_EXTENSION"] = "-EMBEDDED";
+ } else if (strchr("4BFPQRTY", platforms)) {
+ dictionary["LICENSE_EXTENSION"] = "-DESKTOP";
+ }
} else if (strcmp(licenseSchema,"Z4M") == 0 || strcmp(licenseSchema,"R4M") == 0 || strcmp(licenseSchema,"Q4M") == 0) {
if (products == 'B') {
dictionary["EDITION"] = "Evaluation";
dictionary["QT_EDITION"] = "QT_EDITION_EVALUATION";
+ dictionary["LICENSE_EXTENSION"] = "-EVALUATION";
}
}
- // Determine license extension -----------------------------------------------------------------
if (QFile::exists(dictionary["QT_SOURCE_TREE"] + "/.LICENSE")) {
// Generic, no-suffix license
dictionary["LICENSE_EXTENSION"] = QString();
- } else if (platforms == 'X') {
- dictionary["LICENSE_EXTENSION"] = "-ALLOS";
- } else if (/*Windows CE */platforms == '6' || /*Embedded */ platforms == '8' || /*Embedded + Windows CE*/platforms == 'K' || /*Windows + Windows CE*/ platforms == 'H') {
- dictionary["LICENSE_EXTENSION"] = "-EMBEDDED";
- } else if (/*Windows*/ platforms == 'R' || /*Mac+X11+Windows*/ platforms == 'F') {
- dictionary["LICENSE_EXTENSION"] = "-DESKTOP";
- } else if (dictionary["EDITION"] == "Evaluation") {
- dictionary["LICENSE_EXTENSION"] = "-EVALUATION";
+ } else if (dictionary["LICENSE_EXTENSION"].isEmpty()) {
+ cout << "License file does not contain proper license key." << endl;
+ dictionary["DONE"] = "error";
}
if (licenseType.isEmpty()
|| dictionary["EDITION"].isEmpty()
@@ -170,19 +180,9 @@ void Tools::checkLicense(QMap<QString,QString> &dictionary, QMap<QString,QString
return;
}
- // verify that we are licensed to use Qt for Windows
if (dictionary["PLATFORM NAME"].contains("Windows CE")) {
- // verify that we are licensed to use Qt for Windows AND Qt for Windows CE
- if (platforms != 'H') {
- cout << "You are not licensed for the " << dictionary["PLATFORM NAME"] << " platform." << endl << endl;
- cout << "Please contact sales@trolltech.com to upgrade your license" << endl;
- cout << "to include the " << dictionary["PLATFORM NAME"] << " platform, or install the" << endl;
- cout << "Qt Open Source Edition if you intend to develop free software." << endl;
- dictionary["DONE"] = "error";
- return;
- }
- } else {
- if (!( platforms == 'R' || ( platforms == '6' )|| platforms == '8' )) {
+ // verify that we are licensed to use Qt for Windows CE
+ if (dictionary["LICENSE_EXTENSION"] != "-EMBEDDED" && dictionary["LICENSE_EXTENSION"] != "-ALLOS") {
cout << "You are not licensed for the " << dictionary["PLATFORM NAME"] << " platform." << endl << endl;
cout << "Please contact sales@trolltech.com to upgrade your license" << endl;
cout << "to include the " << dictionary["PLATFORM NAME"] << " platform, or install the" << endl;
diff --git a/tools/designer/src/components/formeditor/formwindow_widgetstack.cpp b/tools/designer/src/components/formeditor/formwindow_widgetstack.cpp
index 7270628..58127b0 100644
--- a/tools/designer/src/components/formeditor/formwindow_widgetstack.cpp
+++ b/tools/designer/src/components/formeditor/formwindow_widgetstack.cpp
@@ -57,16 +57,20 @@ using namespace qdesigner_internal;
FormWindowWidgetStack::FormWindowWidgetStack(QObject *parent) :
QObject(parent),
m_formContainer(new QWidget),
- m_formContainerLayout(new QVBoxLayout),
+ m_formContainerLayout(new QStackedLayout),
m_layout(new QStackedLayout)
{
m_layout->setMargin(0);
m_layout->setSpacing(0);
m_layout->setStackingMode(QStackedLayout::StackAll);
+ // We choose a QStackedLayout as immediate layout for
+ // the form windows as it ignores the sizePolicy of
+ // its child (for example, Fixed would cause undesired side effects).
m_formContainerLayout->setMargin(0);
m_formContainer->setObjectName(QLatin1String("formContainer"));
m_formContainer->setLayout(m_formContainerLayout);
+ m_formContainerLayout->setStackingMode(QStackedLayout::StackAll);
// System settings might have different background colors, autofill them
// (affects for example mainwindow status bars)
m_formContainer->setAutoFillBackground(true);
diff --git a/tools/designer/src/components/formeditor/formwindow_widgetstack.h b/tools/designer/src/components/formeditor/formwindow_widgetstack.h
index 92323c5..f21c4f0 100644
--- a/tools/designer/src/components/formeditor/formwindow_widgetstack.h
+++ b/tools/designer/src/components/formeditor/formwindow_widgetstack.h
@@ -51,7 +51,6 @@ QT_BEGIN_NAMESPACE
class QDesignerFormWindowToolInterface;
class QStackedLayout;
-class QVBoxLayout;
class QWidget;
namespace qdesigner_internal {
@@ -92,7 +91,7 @@ protected:
private:
QList<QDesignerFormWindowToolInterface*> m_tools;
QWidget *m_formContainer;
- QVBoxLayout *m_formContainerLayout;
+ QStackedLayout *m_formContainerLayout;
QStackedLayout *m_layout;
};
diff --git a/tools/designer/src/components/propertyeditor/designerpropertymanager.cpp b/tools/designer/src/components/propertyeditor/designerpropertymanager.cpp
index 1b267aa..346da18 100644
--- a/tools/designer/src/components/propertyeditor/designerpropertymanager.cpp
+++ b/tools/designer/src/components/propertyeditor/designerpropertymanager.cpp
@@ -271,7 +271,7 @@ void TextEditor::fileActionActivated()
const QString newPath = m_core->dialogGui()->getOpenFileName(this, tr("Choose a File"), oldPath);
if (newPath.isEmpty() || newPath == oldPath)
return;
- const QString newText = QLatin1String("file:") + newPath;
+ const QString newText = QUrl::fromLocalFile(newPath).toString();
m_editor->setText(newText);
emit textChanged(newText);
}
diff --git a/tools/designer/src/components/propertyeditor/propertyeditor.cpp b/tools/designer/src/components/propertyeditor/propertyeditor.cpp
index 63b57d8..806e1dd 100644
--- a/tools/designer/src/components/propertyeditor/propertyeditor.cpp
+++ b/tools/designer/src/components/propertyeditor/propertyeditor.cpp
@@ -205,14 +205,15 @@ PropertyEditor::PropertyEditor(QDesignerFormEditorInterface *core, QWidget *pare
colors.push_back(QColor(234, 191, 255));
colors.push_back(QColor(255, 191, 239));
m_colors.reserve(colors.count());
+ const int darknessFactor = 250;
for (int i = 0; i < colors.count(); i++) {
QColor c = colors.at(i);
- m_colors.push_back(qMakePair(c, c.darker(150)));
+ m_colors.push_back(qMakePair(c, c.darker(darknessFactor)));
}
QColor dynamicColor(191, 207, 255);
QColor layoutColor(255, 191, 191);
- m_dynamicColor = qMakePair(dynamicColor, dynamicColor.darker(150));
- m_layoutColor = qMakePair(layoutColor, layoutColor.darker(150));
+ m_dynamicColor = qMakePair(dynamicColor, dynamicColor.darker(darknessFactor));
+ m_layoutColor = qMakePair(layoutColor, layoutColor.darker(darknessFactor));
updateForegroundBrightness();
diff --git a/tools/designer/src/designer/versiondialog.cpp b/tools/designer/src/designer/versiondialog.cpp
index a129a4d..c21912b 100644
--- a/tools/designer/src/designer/versiondialog.cpp
+++ b/tools/designer/src/designer/versiondialog.cpp
@@ -169,31 +169,11 @@ VersionDialog::VersionDialog(QWidget *parent)
VersionLabel *label = new VersionLabel;
QLabel *lbl = new QLabel;
QString version = tr("<h3>%1</h3><br/><br/>Version %2");
-#if QT_EDITION == QT_EDITION_OPENSOURCE
- QString open = tr(" Open Source Edition");
- version.append(open);
-#endif
version = version.arg(tr("Qt Designer")).arg(QLatin1String(QT_VERSION_STR));
version.append(tr("<br/>Qt Designer is a graphical user interface designer for Qt applications.<br/>"));
- QString edition =
-#if QT_EDITION == QT_EDITION_OPENSOURCE
- tr("This version of Qt Designer is part of the Qt Open Source Edition, for use "
- "in the development of Open Source applications. "
- "Qt is a comprehensive C++ framework for cross-platform application "
- "development.<br/><br/>"
- "You need a commercial Qt license for development of proprietary (closed "
- "source) applications. Please see <a href=\"http://qtsoftware.com/company/about/businessmodel\">http://qtsoftware.com/company/about/businessmodel"
- ".html</a> for an overview of Qt licensing.<br/>");
-#elif defined(QT_PRODUCT_LICENSE)
- tr("This program is licensed to you under the terms of the "
- "Qt %1 License Agreement. For details, see the license file "
- "that came with this software distribution.<br/>").arg(QT_PRODUCT_LICENSE);
-#else
- tr("This program is licensed to you under the terms of the "
- "Qt Commercial License Agreement. For details, see the file LICENSE "
- "that came with this software distribution.<br/>");
-#endif
+ // TODO: Remove this variable for 4.6.0. Must keep this way for 4.5.x due to string freeze
+ QString edition;
lbl->setText(tr("%1"
"<br/>%2"
diff --git a/tools/designer/src/lib/shared/actioneditor.cpp b/tools/designer/src/lib/shared/actioneditor.cpp
index 6a66442..7f96a15 100644
--- a/tools/designer/src/lib/shared/actioneditor.cpp
+++ b/tools/designer/src/lib/shared/actioneditor.cpp
@@ -456,7 +456,7 @@ void ActionEditor::slotNewAction()
if (actionData.checkable)
setInitialProperty(sheet, QLatin1String(checkablePropertyC), QVariant(true));
- if (!actionData.keysequence.isEmpty())
+ if (!actionData.keysequence.value().isEmpty())
setInitialProperty(sheet, QLatin1String(shortcutPropertyC), qVariantFromValue(actionData.keysequence));
sheet->setProperty(sheet->indexOf(QLatin1String(iconPropertyC)), qVariantFromValue(actionData.icon));
@@ -491,10 +491,10 @@ static QDesignerFormWindowCommand *setIconPropertyCommand(const PropertySheetIco
// return a FormWindow command to apply a QKeySequence or a reset command
// in case it is empty.
-static QDesignerFormWindowCommand *setKeySequencePropertyCommand(const QKeySequence &ks, QAction *action, QDesignerFormWindowInterface *fw)
+static QDesignerFormWindowCommand *setKeySequencePropertyCommand(const PropertySheetKeySequenceValue &ks, QAction *action, QDesignerFormWindowInterface *fw)
{
const QString shortcutProperty = QLatin1String(shortcutPropertyC);
- if (ks.isEmpty()) {
+ if (ks.value().isEmpty()) {
ResetPropertyCommand *cmd = new ResetPropertyCommand(fw);
cmd->init(action, shortcutProperty);
return cmd;
@@ -544,7 +544,7 @@ void ActionEditor::editAction(QAction *action)
oldActionData.text = action->text();
oldActionData.toolTip = textPropertyValue(sheet, QLatin1String(toolTipPropertyC));
oldActionData.icon = qVariantValue<PropertySheetIconValue>(sheet->property(sheet->indexOf(QLatin1String(iconPropertyC))));
- oldActionData.keysequence = qVariantValue<QKeySequence>(sheet->property(sheet->indexOf(QLatin1String(shortcutPropertyC))));
+ oldActionData.keysequence = ActionModel::actionShortCut(sheet);
oldActionData.checkable = action->isCheckable();
dlg.setActionData(oldActionData);
diff --git a/tools/designer/src/lib/shared/actionrepository.cpp b/tools/designer/src/lib/shared/actionrepository.cpp
index 941a9ba..1b638c3 100644
--- a/tools/designer/src/lib/shared/actionrepository.cpp
+++ b/tools/designer/src/lib/shared/actionrepository.cpp
@@ -42,6 +42,7 @@
#include "actionrepository_p.h"
#include "qtresourceview_p.h"
#include "iconloader_p.h"
+#include "qdesigner_utils_p.h"
#include <QtDesigner/QDesignerFormEditorInterface>
#include <QtDesigner/QDesignerPropertySheetExtension>
@@ -168,16 +169,20 @@ QWidgetList ActionModel::associatedWidgets(const QAction *action)
}
// shortcut is a fake property, need to retrieve it via property sheet.
-static QString actionShortCut(QDesignerFormEditorInterface *core, QAction *action)
+PropertySheetKeySequenceValue ActionModel::actionShortCut(QDesignerFormEditorInterface *core, QAction *action)
{
QDesignerPropertySheetExtension *sheet = qt_extension<QDesignerPropertySheetExtension*>(core->extensionManager(), action);
if (!sheet)
- return QString();
+ return PropertySheetKeySequenceValue();
+ return actionShortCut(sheet);
+}
+
+PropertySheetKeySequenceValue ActionModel::actionShortCut(const QDesignerPropertySheetExtension *sheet)
+{
const int index = sheet->indexOf(QLatin1String("shortcut"));
if (index == -1)
- return QString();
- const QKeySequence keysequence = qvariant_cast<QKeySequence>(sheet->property(index));
- return keysequence.toString();
+ return PropertySheetKeySequenceValue();
+ return qvariant_cast<PropertySheetKeySequenceValue>(sheet->property(index));
}
void ActionModel::setItems(QDesignerFormEditorInterface *core, QAction *action, QStandardItemList &sl)
@@ -221,7 +226,7 @@ void ActionModel::setItems(QDesignerFormEditorInterface *core, QAction *action,
item->setText(action->text());
item->setToolTip(action->text());
// shortcut
- const QString shortcut = actionShortCut(core, action);
+ const QString shortcut = actionShortCut(core, action).value().toString();
item = sl[ShortCutColumn];
item->setText(shortcut);
item->setToolTip(shortcut);
diff --git a/tools/designer/src/lib/shared/actionrepository_p.h b/tools/designer/src/lib/shared/actionrepository_p.h
index 9d1af5a..66d77ce 100644
--- a/tools/designer/src/lib/shared/actionrepository_p.h
+++ b/tools/designer/src/lib/shared/actionrepository_p.h
@@ -65,9 +65,12 @@ QT_BEGIN_NAMESPACE
class QPixmap;
class QDesignerFormEditorInterface;
+class QDesignerPropertySheetExtension;
namespace qdesigner_internal {
+class PropertySheetKeySequenceValue;
+
// Shared model of actions, to be used for several views (detailed/icon view).
class QDESIGNER_SHARED_EXPORT ActionModel: public QStandardItemModel
{
@@ -99,6 +102,10 @@ public:
// Find the associated menus and toolbars, ignore toolbuttons
static QWidgetList associatedWidgets(const QAction *action);
+ // Retrieve shortcut via property sheet as it is a fake property
+ static PropertySheetKeySequenceValue actionShortCut(QDesignerFormEditorInterface *core, QAction *action);
+ static PropertySheetKeySequenceValue actionShortCut(const QDesignerPropertySheetExtension *ps);
+
signals:
void resourceImageDropped(const QString &path, QAction *action);
diff --git a/tools/designer/src/lib/shared/formwindowbase.cpp b/tools/designer/src/lib/shared/formwindowbase.cpp
index 3e7e17b..b569b51 100644
--- a/tools/designer/src/lib/shared/formwindowbase.cpp
+++ b/tools/designer/src/lib/shared/formwindowbase.cpp
@@ -55,7 +55,7 @@ TRANSLATOR qdesigner_internal::FormWindowBase
#include "deviceprofile_p.h"
#include "qdesigner_utils_p.h"
-#include <abstractformbuilder.h>
+#include "qsimpleresource_p.h"
#include <QtDesigner/QDesignerFormEditorInterface>
#include <QtDesigner/QDesignerContainerExtension>
@@ -482,6 +482,14 @@ void FormWindowBase::setupDefaultAction(QDesignerFormWindowInterface *fw)
QObject::connect(fw, SIGNAL(activated(QWidget*)), fw, SLOT(triggerDefaultAction(QWidget*)));
}
+QString FormWindowBase::fileContents() const
+{
+ const bool oldValue = QSimpleResource::setWarningsEnabled(false);
+ const QString rc = contents();
+ QSimpleResource::setWarningsEnabled(oldValue);
+ return rc;
+}
+
} // namespace qdesigner_internal
QT_END_NAMESPACE
diff --git a/tools/designer/src/lib/shared/formwindowbase_p.h b/tools/designer/src/lib/shared/formwindowbase_p.h
index 68e977e..0891f6e 100644
--- a/tools/designer/src/lib/shared/formwindowbase_p.h
+++ b/tools/designer/src/lib/shared/formwindowbase_p.h
@@ -90,6 +90,9 @@ public:
QVariantMap formData();
void setFormData(const QVariantMap &vm);
+ // Return contents without warnings. Should be 'contents(bool quiet)'
+ QString fileContents() const;
+
// Return the widget containing the form. This is used to
// apply embedded design settings to that are inherited (for example font).
// These are meant to be applied to the form only and not to the other editors
diff --git a/tools/designer/src/lib/shared/newactiondialog.cpp b/tools/designer/src/lib/shared/newactiondialog.cpp
index 53aec4b..bb163d6 100644
--- a/tools/designer/src/lib/shared/newactiondialog.cpp
+++ b/tools/designer/src/lib/shared/newactiondialog.cpp
@@ -134,7 +134,7 @@ ActionData NewActionDialog::actionData() const
rc.toolTip = m_ui->tooltipEditor->text();
rc.icon = m_ui->iconSelector->icon();
rc.checkable = m_ui->checkableCheckBox->checkState() == Qt::Checked;
- rc.keysequence = m_ui->keySequenceEdit->keySequence();
+ rc.keysequence = PropertySheetKeySequenceValue(m_ui->keySequenceEdit->keySequence());
return rc;
}
@@ -144,7 +144,7 @@ void NewActionDialog::setActionData(const ActionData &d)
m_ui->editObjectName->setText(d.name);
m_ui->iconSelector->setIcon(d.icon);
m_ui->tooltipEditor->setText(d.toolTip);
- m_ui->keySequenceEdit->setKeySequence(d.keysequence);
+ m_ui->keySequenceEdit->setKeySequence(d.keysequence.value());
m_ui->checkableCheckBox->setCheckState(d.checkable ? Qt::Checked : Qt::Unchecked);
m_auto_update_object_name = false;
diff --git a/tools/designer/src/lib/shared/newactiondialog_p.h b/tools/designer/src/lib/shared/newactiondialog_p.h
index c8bd34c..d4e9b5b 100644
--- a/tools/designer/src/lib/shared/newactiondialog_p.h
+++ b/tools/designer/src/lib/shared/newactiondialog_p.h
@@ -84,7 +84,7 @@ struct ActionData {
QString toolTip;
PropertySheetIconValue icon;
bool checkable;
- QKeySequence keysequence;
+ PropertySheetKeySequenceValue keysequence;
};
inline bool operator==(const ActionData &a1, const ActionData &a2) { return a1.compare(a2) == 0u; }
diff --git a/tools/designer/src/lib/shared/qdesigner_propertycommand.cpp b/tools/designer/src/lib/shared/qdesigner_propertycommand.cpp
index ff3b50b..94e8044 100644
--- a/tools/designer/src/lib/shared/qdesigner_propertycommand.cpp
+++ b/tools/designer/src/lib/shared/qdesigner_propertycommand.cpp
@@ -316,6 +316,10 @@ Qt::Alignment variantToAlignment(const QVariant & q)
// find changed subproperties of a variant
unsigned compareSubProperties(const QVariant & q1, const QVariant & q2, qdesigner_internal::SpecialProperty specialProperty)
{
+ // Do not clobber new value in the comparison function in
+ // case someone sets a QString on a PropertySheetStringValue.
+ if (q1.type() != q2.type())
+ return SubPropertyAll;
switch (q1.type()) {
case QVariant::Rect:
return compareSubProperties(q1.toRect(), q2.toRect());
diff --git a/tools/designer/src/lib/shared/qdesigner_utils.cpp b/tools/designer/src/lib/shared/qdesigner_utils.cpp
index d2f092e..75fa180 100644
--- a/tools/designer/src/lib/shared/qdesigner_utils.cpp
+++ b/tools/designer/src/lib/shared/qdesigner_utils.cpp
@@ -397,7 +397,7 @@ namespace qdesigner_internal
QMapIterator<QPair<QIcon::Mode, QIcon::State>, PropertySheetPixmapValue> itPath(paths);
while (itPath.hasNext()) {
QPair<QIcon::Mode, QIcon::State> pair = itPath.next().key();
- icon.addPixmap(m_pixmapCache->pixmap(itPath.value()), pair.first, pair.second);
+ icon.addFile(itPath.value().path(), QSize(), pair.first, pair.second);
}
m_cache.insert(value, icon);
return icon;
diff --git a/tools/designer/src/lib/uilib/resourcebuilder.cpp b/tools/designer/src/lib/uilib/resourcebuilder.cpp
index 3679f92..5df10e9 100644
--- a/tools/designer/src/lib/uilib/resourcebuilder.cpp
+++ b/tools/designer/src/lib/uilib/resourcebuilder.cpp
@@ -98,21 +98,21 @@ QVariant QResourceBuilder::loadResource(const QDir &workingDirectory, const DomP
if (const int flags = iconStateFlags(dpi)) { // new, post 4.4 format
QIcon icon;
if (flags & NormalOff)
- icon.addPixmap(QFileInfo(workingDirectory, dpi->elementNormalOff()->text()).absoluteFilePath(), QIcon::Normal, QIcon::Off);
+ icon.addFile(QFileInfo(workingDirectory, dpi->elementNormalOff()->text()).absoluteFilePath(), QSize(), QIcon::Normal, QIcon::Off);
if (flags & NormalOn)
- icon.addPixmap(QFileInfo(workingDirectory, dpi->elementNormalOn()->text()).absoluteFilePath(), QIcon::Normal, QIcon::On);
+ icon.addFile(QFileInfo(workingDirectory, dpi->elementNormalOn()->text()).absoluteFilePath(), QSize(), QIcon::Normal, QIcon::On);
if (flags & DisabledOff)
- icon.addPixmap(QFileInfo(workingDirectory, dpi->elementDisabledOff()->text()).absoluteFilePath(), QIcon::Disabled, QIcon::Off);
+ icon.addFile(QFileInfo(workingDirectory, dpi->elementDisabledOff()->text()).absoluteFilePath(), QSize(), QIcon::Disabled, QIcon::Off);
if (flags & DisabledOn)
- icon.addPixmap(QFileInfo(workingDirectory, dpi->elementDisabledOn()->text()).absoluteFilePath(), QIcon::Disabled, QIcon::On);
+ icon.addFile(QFileInfo(workingDirectory, dpi->elementDisabledOn()->text()).absoluteFilePath(), QSize(), QIcon::Disabled, QIcon::On);
if (flags & ActiveOff)
- icon.addPixmap(QFileInfo(workingDirectory, dpi->elementActiveOff()->text()).absoluteFilePath(), QIcon::Active, QIcon::Off);
+ icon.addFile(QFileInfo(workingDirectory, dpi->elementActiveOff()->text()).absoluteFilePath(), QSize(), QIcon::Active, QIcon::Off);
if (flags & ActiveOn)
- icon.addPixmap(QFileInfo(workingDirectory, dpi->elementActiveOn()->text()).absoluteFilePath(), QIcon::Active, QIcon::On);
+ icon.addFile(QFileInfo(workingDirectory, dpi->elementActiveOn()->text()).absoluteFilePath(), QSize(), QIcon::Active, QIcon::On);
if (flags & SelectedOff)
- icon.addPixmap(QFileInfo(workingDirectory, dpi->elementSelectedOff()->text()).absoluteFilePath(), QIcon::Selected, QIcon::Off);
+ icon.addFile(QFileInfo(workingDirectory, dpi->elementSelectedOff()->text()).absoluteFilePath(), QSize(), QIcon::Selected, QIcon::Off);
if (flags & SelectedOn)
- icon.addPixmap(QFileInfo(workingDirectory, dpi->elementSelectedOn()->text()).absoluteFilePath(), QIcon::Selected, QIcon::On);
+ icon.addFile(QFileInfo(workingDirectory, dpi->elementSelectedOn()->text()).absoluteFilePath(), QSize(), QIcon::Selected, QIcon::On);
return qVariantFromValue(icon);
} else { // 4.3 legacy
const QIcon icon(QFileInfo(workingDirectory, dpi->text()).absoluteFilePath());
diff --git a/tools/designer/src/uitools/quiloader.cpp b/tools/designer/src/uitools/quiloader.cpp
index d3d1d54..2a66095 100644
--- a/tools/designer/src/uitools/quiloader.cpp
+++ b/tools/designer/src/uitools/quiloader.cpp
@@ -259,9 +259,9 @@ public:
const int row_cnt = tablew->rowCount();
const int col_cnt = tablew->columnCount();
for (int j = 0; j < col_cnt; ++j)
- reTranslateTableItem(tablew->verticalHeaderItem(j), m_className);
+ reTranslateTableItem(tablew->horizontalHeaderItem(j), m_className);
for (int i = 0; i < row_cnt; ++i) {
- reTranslateTableItem(tablew->horizontalHeaderItem(i), m_className);
+ reTranslateTableItem(tablew->verticalHeaderItem(i), m_className);
for (int j = 0; j < col_cnt; ++j)
reTranslateTableItem(tablew->item(i, j), m_className);
}
@@ -572,53 +572,52 @@ void QUiLoaderPrivate::setupWidgetMap() const
\class QUiLoader
\inmodule QtUiTools
- \brief The QUiLoader class allows standalone applications dynamically
- create user interfaces at run-time using the information stored in
- .ui files or specified plugin paths.
+ \brief The QUiLoader class enables standalone applications to
+ dynamically create user interfaces at run-time using the
+ information stored in .ui files or specified in plugin paths.
- In addition, you can customize of creating an user interface by
+ In addition, you can customize or create your own user interface by
deriving your own loader class.
- If you have a custom component or an application that embeds Qt
- Designer, you can also use the QFormBuilder class provided by the
- QtDesigner module to create user interfaces from .ui files.
+ If you have a custom component or an application that embeds \QD, you can
+ also use the QFormBuilder class provided by the QtDesigner module to create
+ user interfaces from \c{.ui} files.
- The QUiLoader class provides a collection of functions that allows
- you to create widgets based on the information stored in \c .ui
- files (created with Qt Designer) or available in the specified
- plugin paths. The specified plugin paths can be retrieved using
- the pluginPaths() function. You can retrieve the contents of an \c
- .ui file using the load() function. For example:
+ The QUiLoader class provides a collection of functions allowing you to
+ create widgets based on the information stored in \c .ui files (created
+ with \QD) or available in the specified plugin paths. The specified plugin
+ paths can be retrieved using the pluginPaths() function. Similarly, the
+ contents of a \c{.ui} file can be retrieved using the load() function. For
+ example:
\snippet doc/src/snippets/quiloader/mywidget.cpp 0
- By including the user interface in the form's resources (\c myform.qrc),
- we ensure that it will be present at run-time:
+ By including the user interface in the form's resources (\c myform.qrc), we
+ ensure that it will be present at run-time:
\quotefile doc/src/snippets/quiloader/mywidget.qrc
- The availableWidgets() function returns a QStringList with the
- class names of the widgets available in the specified plugin
- paths. You can create any of these widgets using the
- createWidget() function. For example:
+ The availableWidgets() function returns a QStringList with the class names
+ of the widgets available in the specified plugin paths. To create these
+ widgets, simply use the createWidget() function. For example:
\snippet doc/src/snippets/quiloader/main.cpp 0
- You can make a custom widget available to the loader using the
- addPluginPath() function, and you can remove all the available widgets
- by calling the clearPluginPaths() function.
+ To make a custom widget available to the loader, you can use the
+ addPluginPath() function; to remove all available widgets, you can call
+ the clearPluginPaths() function.
- The createAction(), createActionGroup(), createLayout() and
- createWidget() functions are used internally by the QUiLoader class
- whenever it has to create an action, action group, layout or
- widget respectively. For that reason, you can subclass the QUiLoader
- class and reimplement these functions to intervene the process of
- constructing an user interface. For example, you might want to
- create a list of the actions created when loading a form or
- creating a custom widget.
+ The createAction(), createActionGroup(), createLayout(), and createWidget()
+ functions are used internally by the QUiLoader class whenever it has to
+ create an action, action group, layout, or widget respectively. For that
+ reason, you can subclass the QUiLoader class and reimplement these
+ functions to intervene the process of constructing a user interface. For
+ example, you might want to have a list of the actions created when loading
+ a form or creating a custom widget. However, in your reimplementation, you
+ must call QUiLoader's original implementation of these functions first.
- For a complete example using the QUiLoader class, see the \l
- {designer/calculatorbuilder}{Calculator Builder} example.
+ For a complete example using the QUiLoader class, see the
+ \l{Calculator Builder Example}.
\sa QtUiTools, QFormBuilder
*/
@@ -653,8 +652,8 @@ QUiLoader::~QUiLoader()
}
/*!
- Loads a form from the given \a device and creates a new widget with the given
- \a parentWidget to hold its contents.
+ Loads a form from the given \a device and creates a new widget with the
+ given \a parentWidget to hold its contents.
\sa createWidget()
*/
@@ -668,8 +667,8 @@ QWidget *QUiLoader::load(QIODevice *device, QWidget *parentWidget)
}
/*!
- Returns a list naming the paths the loader searches when locating
- custom widget plugins.
+ Returns a list naming the paths in which the loader will search when
+ locating custom widget plugins.
\sa addPluginPath(), clearPluginPaths()
*/
@@ -680,7 +679,7 @@ QStringList QUiLoader::pluginPaths() const
}
/*!
- Clears the list of paths the loader searches when locating
+ Clears the list of paths in which the loader will search when locating
plugins.
\sa addPluginPath(), pluginPaths()
@@ -692,7 +691,7 @@ void QUiLoader::clearPluginPaths()
}
/*!
- Adds the given \a path to the list of paths the loader searches
+ Adds the given \a path to the list of paths in which the loader will search
when locating plugins.
\sa pluginPaths(), clearPluginPaths()
@@ -704,17 +703,17 @@ void QUiLoader::addPluginPath(const QString &path)
}
/*!
- Creates a new widget with the given \a parent and \a name
- using the class specified by \a className. You can use this
- function to create any of the widgets returned by the
- availableWidgets() function.
+ Creates a new widget with the given \a parent and \a name using the class
+ specified by \a className. You can use this function to create any of the
+ widgets returned by the availableWidgets() function.
- The function is also used internally by the QUiLoader class whenever
- it has to create a widget. For that reason, you can subclass the
- QUiLoader class and reimplement this function to intervene in the
- process of constructing a user interface or widget.
+ The function is also used internally by the QUiLoader class whenever it
+ creates a widget. Hence, you can subclass QUiLoader and reimplement this
+ function to intervene process of constructing a user interface or widget.
+ However, in your implementation, ensure that you call QUiLoader's version
+ first.
- \sa availableWidgets(), load()
+ \sa availableWidgets(), load()
*/
QWidget *QUiLoader::createWidget(const QString &className, QWidget *parent, const QString &name)
{
@@ -723,13 +722,14 @@ QWidget *QUiLoader::createWidget(const QString &className, QWidget *parent, cons
}
/*!
- Creates a new layout with the given \a parent and \a name
- using the class specified by \a className.
+ Creates a new layout with the given \a parent and \a name using the class
+ specified by \a className.
- The function is used internally by the QUiLoader class whenever it
- has to create a layout. For that reason, you can subclass the
- QUiLoader class and reimplement this function to intervene the
- process of constructing an user interface or widget.
+ The function is also used internally by the QUiLoader class whenever it
+ creates a widget. Hence, you can subclass QUiLoader and reimplement this
+ function to intervene process of constructing a user interface or widget.
+ However, in your implementation, ensure that you call QUiLoader's version
+ first.
\sa createWidget(), load()
*/
@@ -742,10 +742,11 @@ QLayout *QUiLoader::createLayout(const QString &className, QObject *parent, cons
/*!
Creates a new action group with the given \a parent and \a name.
- The function is used internally by the QUiLoader class whenever it
- has to create an action group. For that reason, you can subclass
- the QUiLoader class and reimplement this function to intervene the
- process of constructing an user interface or widget.
+ The function is also used internally by the QUiLoader class whenever it
+ creates a widget. Hence, you can subclass QUiLoader and reimplement this
+ function to intervene process of constructing a user interface or widget.
+ However, in your implementation, ensure that you call QUiLoader's version
+ first.
\sa createAction(), createWidget(), load()
*/
@@ -758,10 +759,11 @@ QActionGroup *QUiLoader::createActionGroup(QObject *parent, const QString &name)
/*!
Creates a new action with the given \a parent and \a name.
- The function is used internally by the QUiLoader class whenever it
- has to create an action. For that reason, you can subclass the
- QUiLoader class and reimplement this function to intervene the
- process of constructing an user interface or widget.
+ The function is also used internally by the QUiLoader class whenever it
+ creates a widget. Hence, you can subclass QUiLoader and reimplement this
+ function to intervene process of constructing a user interface or widget.
+ However, in your implementation, ensure that you call QUiLoader's version
+ first.
\sa createActionGroup(), createWidget(), load()
*/
@@ -772,9 +774,9 @@ QAction *QUiLoader::createAction(QObject *parent, const QString &name)
}
/*!
- Returns a list naming the available widgets that can be built
- using the createWidget() function, i.e all the widgets specified
- within the given plugin paths.
+ Returns a list naming all available widgets that can be built using the
+ createWidget() function, i.e all the widgets specified within the given
+ plugin paths.
\sa pluginPaths(), createWidget()
@@ -795,11 +797,11 @@ QStringList QUiLoader::availableWidgets() const
/*!
- Returns a list naming the available layouts that can be built
- using the createLayout() function
+ \since 4.5
+ Returns a list naming all available layouts that can be built using the
+ createLayout() function
\sa createLayout()
- \since 4.5
*/
QStringList QUiLoader::availableLayouts() const
@@ -816,9 +818,9 @@ QStringList QUiLoader::availableLayouts() const
}
/*!
- Sets the working directory of the loader to \a dir. The loader
- looks for other resources, such as icons and resource files,
- in paths relative to this directory.
+ Sets the working directory of the loader to \a dir. The loader will look
+ for other resources, such as icons and resource files, in paths relative to
+ this directory.
\sa workingDirectory()
*/
@@ -842,9 +844,13 @@ QDir QUiLoader::workingDirectory() const
}
/*!
- Sets whether the execution of scripts is enabled to \a enabled.
- \since 4.3
\internal
+ \since 4.3
+
+ If \a enabled is true, the loader will be able to execute scripts.
+ Otherwise, execution of scripts will be disabled.
+
+ \sa isScriptingEnabled()
*/
void QUiLoader::setScriptingEnabled(bool enabled)
@@ -854,10 +860,12 @@ void QUiLoader::setScriptingEnabled(bool enabled)
}
/*!
- Returns whether the execution of scripts is enabled.
- \sa setScriptingEnabled()
- \since 4.3
- \internal
+ \internal
+ \since 4.3
+
+ Returns true if execution of scripts is enabled; returns false otherwise.
+
+ \sa setScriptingEnabled()
*/
bool QUiLoader::isScriptingEnabled() const
@@ -867,11 +875,13 @@ bool QUiLoader::isScriptingEnabled() const
}
/*!
- Sets whether user interfaces loaded by this loader automatically
- retranslate themselves upon receiving a language change event or not,
- depending on \a enabled.
-
\since 4.5
+
+ If \a enabled is true, user interfaces loaded by this loader will
+ automatically retranslate themselves upon receiving a language change
+ event. Otherwise, the user interfaces will not be retranslated.
+
+ \sa isLanguageChangeEnabled()
*/
void QUiLoader::setLanguageChangeEnabled(bool enabled)
@@ -881,9 +891,12 @@ void QUiLoader::setLanguageChangeEnabled(bool enabled)
}
/*!
- Returns whether dynamic retranslation on language change is enabled.
- \sa setLanguageChangeEnabled()
- \since 4.5
+ \since 4.5
+
+ Returns true if dynamic retranslation on language change is enabled;
+ returns false otherwise.
+
+ \sa setLanguageChangeEnabled()
*/
bool QUiLoader::isLanguageChangeEnabled() const
@@ -894,11 +907,14 @@ bool QUiLoader::isLanguageChangeEnabled() const
/*!
\internal
+ \since 4.5
- Sets whether user interfaces loaded by this loader are translated
- at all. Note that this is orthogonal to languageChangeEnabled.
+ If \a enabled is true, user interfaces loaded by this loader will be
+ translated. Otherwise, the user interfaces will not be translated.
- \since 4.5
+ \note This is orthogonal to languageChangeEnabled.
+
+ \sa isLanguageChangeEnabled(), setLanguageChangeEnabled()
*/
void QUiLoader::setTranslationEnabled(bool enabled)
@@ -909,11 +925,11 @@ void QUiLoader::setTranslationEnabled(bool enabled)
/*!
\internal
+ \since 4.5
- Returns whether translation is enabled.
- \sa setTranslationEnabled()
+ Returns true if translation is enabled; returns false otherwise.
- \since 4.5
+ \sa setTranslationEnabled()
*/
bool QUiLoader::isTranslationEnabled() const
diff --git a/tools/designer/translations/translations.pro b/tools/designer/translations/translations.pro
index 7294956..8395259 100644
--- a/tools/designer/translations/translations.pro
+++ b/tools/designer/translations/translations.pro
@@ -133,7 +133,6 @@ HEADERS += ../../shared/findwidget/abstractfindwidget.h \
TRANSLATIONS=$$[QT_INSTALL_TRANSLATIONS]/designer_de.ts \
$$[QT_INSTALL_TRANSLATIONS]/designer_ja.ts \
$$[QT_INSTALL_TRANSLATIONS]/designer_pl.ts \
- $$[QT_INSTALL_TRANSLATIONS]/designer_tr_TR.ts \
$$[QT_INSTALL_TRANSLATIONS]/designer_zh_CN.ts \
$$[QT_INSTALL_TRANSLATIONS]/designer_zh_TW.ts \
$$[QT_INSTALL_TRANSLATIONS]/designer_untranslated.ts
diff --git a/tools/linguist/lconvert/main.cpp b/tools/linguist/lconvert/main.cpp
index 2842bc7..9ccc60e 100644
--- a/tools/linguist/lconvert/main.cpp
+++ b/tools/linguist/lconvert/main.cpp
@@ -210,6 +210,7 @@ int main(int argc, char *argv[])
qWarning() << qPrintable(cd.error());
return 2;
}
+ Translator::reportDuplicates(tr.resolveDuplicates(), inFiles[0].name, verbose);
for (int i = 1; i < inFiles.size(); ++i) {
Translator tr2;
@@ -217,6 +218,7 @@ int main(int argc, char *argv[])
qWarning() << qPrintable(cd.error());
return 2;
}
+ Translator::reportDuplicates(tr2.resolveDuplicates(), inFiles[i].name, verbose);
for (int j = 0; j < tr2.messageCount(); ++j)
tr.replaceSorted(tr2.message(j));
}
diff --git a/tools/linguist/linguist/linguist.pro b/tools/linguist/linguist/linguist.pro
index 417ef67..968293a 100644
--- a/tools/linguist/linguist/linguist.pro
+++ b/tools/linguist/linguist/linguist.pro
@@ -100,7 +100,6 @@ RESOURCES += linguist.qrc
TRANSLATIONS=$$[QT_INSTALL_TRANSLATIONS]/linguist_ja.ts \
$$[QT_INSTALL_TRANSLATIONS]/linguist_pl.ts \
$$[QT_INSTALL_TRANSLATIONS]/linguist_untranslated.ts \
- $$[QT_INSTALL_TRANSLATIONS]/linguist_tr_TR.ts \
$$[QT_INSTALL_TRANSLATIONS]/linguist_zh_CN.ts \
$$[QT_INSTALL_TRANSLATIONS]/linguist_zh_TW.ts \
$$[QT_INSTALL_TRANSLATIONS]/linguist_de.ts \
diff --git a/tools/linguist/linguist/mainwindow.cpp b/tools/linguist/linguist/mainwindow.cpp
index 84200d4..5157fbe 100644
--- a/tools/linguist/linguist/mainwindow.cpp
+++ b/tools/linguist/linguist/mainwindow.cpp
@@ -1340,30 +1340,10 @@ void MainWindow::about()
QMessageBox box(this);
box.setTextFormat(Qt::RichText);
QString version = tr("Version %1");
-#if QT_EDITION == QT_EDITION_OPENSOURCE
- QString open = tr(" Open Source Edition");
- version.append(open);
-#endif
version = version.arg(QLatin1String(QT_VERSION_STR));
- QString edition =
-#if QT_EDITION == QT_EDITION_OPENSOURCE
- tr("This version of Qt Linguist is part of the Qt Open Source Edition, for use "
- "in the development of Open Source applications. "
- "Qt is a comprehensive C++ framework for cross-platform application "
- "development.<br/><br/>"
- "You need a commercial Qt license for development of proprietary (closed "
- "source) applications. Please see <tt>http://qtsoftware.com/company/model"
- ".html</tt> for an overview of Qt licensing.");
-#elif defined(QT_PRODUCT_LICENSE)
- tr("This program is licensed to you under the terms of the "
- "Qt %1 License Agreement. For details, see the license file "
- "that came with this software distribution.").arg(QLatin1String(QT_PRODUCT_LICENSE));
-#else
- tr("This program is licensed to you under the terms of the "
- "Qt Commercial License Agreement. For details, see the file LICENSE "
- "that came with this software distribution.");
-#endif
+ // TODO: Remove this variable for 4.6.0. Must keep this way for 4.5.x due to string freeze.
+ QString edition;
box.setText(tr("<center><img src=\":/images/splash.png\"/></img><p>%1</p></center>"
"<p>Qt Linguist is a tool for adding translations to Qt "
diff --git a/tools/linguist/linguist/messageeditor.cpp b/tools/linguist/linguist/messageeditor.cpp
index dc8b8e4..53cbbea 100644
--- a/tools/linguist/linguist/messageeditor.cpp
+++ b/tools/linguist/linguist/messageeditor.cpp
@@ -133,19 +133,12 @@ void MessageEditor::setupEditorPage()
QFrame *editorPage = new QFrame;
editorPage->setObjectName(QLatin1String("editorPage"));
- // Due to CSS being rather broken on the Mac style at the moment, only
- // use the border-image on non-Mac systems.
editorPage->setStyleSheet(QLatin1String(
-#ifndef Q_WS_MAC
"QFrame#editorPage { border-image: url(:/images/transbox.png) 12 16 16 12 repeat;"
" border-width: 12px 16px 16px 12px; }"
-#endif
"QFrame#editorPage { background-color: white; }"
"QLabel { font-weight: bold; }"
));
-#ifdef Q_WS_MAC
- editorPage->setFrameStyle(QFrame::StyledPanel | QFrame::Raised);
-#endif
editorPage->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed));
m_source = new FormWidget(tr("Source text"), false);
diff --git a/tools/linguist/linguist/messagemodel.cpp b/tools/linguist/linguist/messagemodel.cpp
index b049ab9..7a8063b 100644
--- a/tools/linguist/linguist/messagemodel.cpp
+++ b/tools/linguist/linguist/messagemodel.cpp
@@ -209,19 +209,19 @@ bool DataModel::load(const QString &fileName, bool *langGuessed, QWidget *parent
return false;
}
- QList<TranslatorMessage> dupes = tor.findDuplicates();
+ QSet<TranslatorMessagePtr> dupes = tor.resolveDuplicates();
if (!dupes.isEmpty()) {
QString err = tr("<qt>Duplicate messages found in '%1':").arg(Qt::escape(fileName));
int numdups = 0;
- foreach (const TranslatorMessage &msg, dupes) {
+ foreach (const TranslatorMessagePtr &msg, dupes) {
if (++numdups >= 5) {
err += tr("<p>[more duplicates omitted]");
break;
}
err += tr("<p>* Context: %1<br>* Source: %2")
- .arg(Qt::escape(msg.context()), Qt::escape(msg.sourceText()));
- if (!msg.comment().isEmpty())
- err += tr("<br>* Comment: %3").arg(Qt::escape(msg.comment()));
+ .arg(Qt::escape(msg->context()), Qt::escape(msg->sourceText()));
+ if (!msg->comment().isEmpty())
+ err += tr("<br>* Comment: %3").arg(Qt::escape(msg->comment()));
}
QMessageBox::warning(parent, QObject::tr("Qt Linguist"), err);
}
diff --git a/tools/linguist/lrelease/main.cpp b/tools/linguist/lrelease/main.cpp
index f1fdb3a..3bcc998 100644
--- a/tools/linguist/lrelease/main.cpp
+++ b/tools/linguist/lrelease/main.cpp
@@ -94,19 +94,6 @@ static bool loadTsFile(Translator &tor, const QString &tsFileName, bool /* verbo
} else {
if (!cd.errors().isEmpty())
printOut(cd.error());
- const QList<TranslatorMessage> dupes = tor.findDuplicates();
- if (!dupes.isEmpty()) {
- qWarning("lrelease error: duplicate messages found in '%s':",
- qPrintable(tsFileName));
- foreach (const TranslatorMessage &msg, dupes) {
- qWarning("\n* Context: %s\n* Source: %s",
- qPrintable(msg.context()),
- qPrintable(msg.sourceText()));
- if (!msg.comment().isEmpty())
- qWarning("\n* Comment: %s", qPrintable(msg.comment()));
- }
- ok = false;
- }
}
return ok;
}
@@ -115,6 +102,8 @@ static bool releaseTranslator(Translator &tor, const QString &qmFileName,
bool verbose, bool ignoreUnfinished,
bool removeIdentical, TranslatorSaveMode mode)
{
+ Translator::reportDuplicates(tor.resolveDuplicates(), qmFileName, verbose);
+
if (verbose)
printOut(QCoreApplication::tr( "Updating '%1'...\n").arg(qmFileName));
if (removeIdentical) {
diff --git a/tools/linguist/lupdate/main.cpp b/tools/linguist/lupdate/main.cpp
index 5869838..b537b6e 100644
--- a/tools/linguist/lupdate/main.cpp
+++ b/tools/linguist/lupdate/main.cpp
@@ -146,6 +146,7 @@ static void updateTsFiles(const Translator &fetchedTor, const QStringList &tsFil
*fail = true;
continue;
}
+ tor.resolveDuplicates();
cd.clearErrors();
if (!codecForTr.isEmpty() && codecForTr != tor.codecName())
qWarning("lupdate warning: Codec for tr() '%s' disagrees with "
diff --git a/tools/linguist/shared/profileevaluator.cpp b/tools/linguist/shared/profileevaluator.cpp
index aa529c1..5440752 100644
--- a/tools/linguist/shared/profileevaluator.cpp
+++ b/tools/linguist/shared/profileevaluator.cpp
@@ -157,11 +157,6 @@ ProFileEvaluator::Private::Private(ProFileEvaluator *q_)
m_prevLineNo = 0;
m_prevProFile = 0;
m_verbose = true;
- m_block = 0;
- m_commentItem = 0;
- m_syntaxError = 0;
- m_lineNo = 0;
- m_contNextLine = false;
}
bool ProFileEvaluator::Private::read(ProFile *pro)
@@ -172,8 +167,12 @@ bool ProFileEvaluator::Private::read(ProFile *pro)
return false;
}
+ m_block = 0;
+ m_commentItem = 0;
+ m_contNextLine = false;
m_syntaxError = false;
m_lineNo = 1;
+ m_blockstack.clear();
m_blockstack.push(pro);
QTextStream ts(&file);
@@ -276,6 +275,9 @@ void ProFileEvaluator::Private::insertVariable(const QString &line, int *i)
{
ProVariable::VariableOperator opkind;
+ if (m_proitem.isEmpty()) // Line starting with '=', like a conflict marker
+ return;
+
switch (m_proitem.at(m_proitem.length() - 1).unicode()) {
case '+':
m_proitem.chop(1);
@@ -1002,9 +1004,10 @@ bool ProFileEvaluator::Private::isActiveConfig(const QString &config, bool regex
QStringList ProFileEvaluator::Private::evaluateExpandFunction(const QString &func, const QString &arguments)
{
QStringList argumentsList = split_arg_list(arguments);
+
QStringList args;
for (int i = 0; i < argumentsList.count(); ++i)
- args += expandVariableReferences(argumentsList[i]);
+ args += expandVariableReferences(argumentsList[i]).join(Option::field_sep);
enum ExpandFunc { E_MEMBER=1, E_FIRST, E_LAST, E_CAT, E_FROMFILE, E_EVAL, E_LIST,
E_SPRINTF, E_JOIN, E_SPLIT, E_BASENAME, E_DIRNAME, E_SECTION,
@@ -1265,10 +1268,11 @@ bool ProFileEvaluator::Private::evaluateConditionalFunction(const QString &funct
for (int mut = 0; mut < mutuals.count(); mut++) {
if (configs[i] == mutuals[mut].trimmed()) {
cond = (configs[i] == args[0]);
- break;
+ goto done_T_CONFIG;
}
}
}
+ done_T_CONFIG:
break;
}
case CF_CONTAINS: {
@@ -1295,12 +1299,12 @@ bool ProFileEvaluator::Private::evaluateConditionalFunction(const QString &funct
for (int mut = 0; mut < mutuals.count(); mut++) {
if (val == mutuals[mut].trimmed()) {
cond = (regx.exactMatch(val) || val == args[1]);
- break;
+ goto done_T_CONTAINS;
}
}
}
}
-
+ done_T_CONTAINS:
break;
}
case CF_COUNT: {
@@ -1472,7 +1476,13 @@ ProFile *ProFileEvaluator::parsedProFile(const QString &fileName)
{
QFileInfo fi(fileName);
if (fi.exists()) {
- ProFile *pro = new ProFile(fi.absoluteFilePath());
+ QString fn = QDir::cleanPath(fi.absoluteFilePath());
+ foreach (const ProFile *pf, d->m_profileStack)
+ if (pf->fileName() == fn) {
+ errorMessage(d->format("circular inclusion of %1").arg(fn));
+ return 0;
+ }
+ ProFile *pro = new ProFile(fn);
if (d->read(pro))
return pro;
delete pro;
diff --git a/tools/linguist/shared/qm.cpp b/tools/linguist/shared/qm.cpp
index d19b519..5563ac5 100644
--- a/tools/linguist/shared/qm.cpp
+++ b/tools/linguist/shared/qm.cpp
@@ -659,7 +659,6 @@ bool loadQM(Translator &translator, QIODevice &dev, ConversionData &cd)
msg.setComment(comment);
translator.append(msg);
}
- translator.resolveDualEncoded();
return ok;
}
diff --git a/tools/linguist/shared/translator.cpp b/tools/linguist/shared/translator.cpp
index 3721204..312bb71 100644
--- a/tools/linguist/shared/translator.cpp
+++ b/tools/linguist/shared/translator.cpp
@@ -416,38 +416,52 @@ void Translator::dropTranslations()
}
}
-QList<TranslatorMessage> Translator::findDuplicates() const
+QSet<TranslatorMessagePtr> Translator::resolveDuplicates()
{
- QHash<TranslatorMessage, int> dups;
- foreach (const TranslatorMessage &msg, m_messages)
- dups[msg]++;
- QList<TranslatorMessage> ret;
- QHash<TranslatorMessage, int>::ConstIterator it = dups.constBegin(), end = dups.constEnd();
- for (; it != end; ++it)
- if (it.value() > 1)
- ret.append(it.key());
- return ret;
-}
-
-void Translator::resolveDualEncoded()
-{
- QHash<TranslatorMessage, int> dups;
+ QSet<TranslatorMessagePtr> dups;
+ QHash<TranslatorMessagePtr, int> refs;
for (int i = 0; i < m_messages.count();) {
const TranslatorMessage &msg = m_messages.at(i);
- QHash<TranslatorMessage, int>::ConstIterator it = dups.constFind(msg);
- if (it != dups.constEnd()) {
+ QHash<TranslatorMessagePtr, int>::ConstIterator it = refs.constFind(msg);
+ if (it != refs.constEnd()) {
TranslatorMessage &omsg = m_messages[*it];
if (omsg.isUtf8() != msg.isUtf8() && !omsg.isNonUtf8()) {
+ // Dual-encoded message
omsg.setUtf8(true);
omsg.setNonUtf8(true);
- m_messages.removeAt(i);
- continue;
+ } else {
+ // Duplicate
+ dups.insert(omsg);
}
- // Regular dupe; will complain later
+ if (!omsg.isTranslated() && msg.isTranslated())
+ omsg.setTranslations(msg.translations());
+ m_messages.removeAt(i);
} else {
- dups[msg] = i;
+ refs[msg] = i;
+ ++i;
+ }
+ }
+ return dups;
+}
+
+void Translator::reportDuplicates(const QSet<TranslatorMessagePtr> &dupes,
+ const QString &fileName, bool verbose)
+{
+ if (!dupes.isEmpty()) {
+ if (!verbose) {
+ qWarning("Warning: dropping duplicate messages in '%s'\n(try -verbose for more info).",
+ qPrintable(fileName));
+ } else {
+ qWarning("Warning: dropping duplicate messages in '%s':", qPrintable(fileName));
+ foreach (const TranslatorMessagePtr &msg, dupes) {
+ qWarning("\n* Context: %s\n* Source: %s",
+ qPrintable(msg->context()),
+ qPrintable(msg->sourceText()));
+ if (!msg->comment().isEmpty())
+ qWarning("* Comment: %s", qPrintable(msg->comment()));
+ }
+ qWarning();
}
- ++i;
}
}
diff --git a/tools/linguist/shared/translator.h b/tools/linguist/shared/translator.h
index 8908305..6b88b23 100644
--- a/tools/linguist/shared/translator.h
+++ b/tools/linguist/shared/translator.h
@@ -127,9 +127,10 @@ public:
void stripNonPluralForms();
void stripIdenticalSourceTranslations();
void dropTranslations();
- QList<TranslatorMessage> findDuplicates() const;
- void resolveDualEncoded();
void makeFileNamesAbsolute(const QDir &originalPath);
+ QSet<TranslatorMessagePtr> resolveDuplicates();
+ static void reportDuplicates(const QSet<TranslatorMessagePtr> &dupes,
+ const QString &fileName, bool verbose);
void setCodecName(const QByteArray &name);
QByteArray codecName() const { return m_codecName; }
diff --git a/tools/linguist/shared/translatormessage.h b/tools/linguist/shared/translatormessage.h
index 363019e..9f847b0 100644
--- a/tools/linguist/shared/translatormessage.h
+++ b/tools/linguist/shared/translatormessage.h
@@ -179,6 +179,32 @@ Q_DECLARE_TYPEINFO(TranslatorMessage, Q_MOVABLE_TYPE);
int qHash(const TranslatorMessage &msg);
+struct TranslatorMessagePtr {
+ TranslatorMessagePtr(const TranslatorMessage &tm)
+ {
+ ptr = &tm;
+ }
+
+ inline const TranslatorMessage *operator->() const
+ {
+ return ptr;
+ }
+
+ const TranslatorMessage *ptr;
+};
+
+Q_DECLARE_TYPEINFO(TranslatorMessagePtr, Q_MOVABLE_TYPE);
+
+inline int qHash(TranslatorMessagePtr tmp)
+{
+ return qHash(*tmp.ptr);
+}
+
+inline bool operator==(TranslatorMessagePtr tmp1, TranslatorMessagePtr tmp2)
+{
+ return *tmp1.ptr == *tmp2.ptr;
+}
+
QT_END_NAMESPACE
#endif // QT_NO_TRANSLATION
diff --git a/tools/linguist/shared/ts.cpp b/tools/linguist/shared/ts.cpp
index 8a6d365..22f2a1b 100644
--- a/tools/linguist/shared/ts.cpp
+++ b/tools/linguist/shared/ts.cpp
@@ -242,7 +242,7 @@ bool TSReader::read(Translator &translator)
STRING(userdata);
STRING(utf8);
STRING(value);
- STRING(version);
+ //STRING(version);
STRING(yes);
static const QString strextrans(QLatin1String("extra-"));
@@ -266,15 +266,13 @@ bool TSReader::read(Translator &translator)
QString currentFile;
QXmlStreamAttributes atts = attributes();
- QString version = atts.value(strversion).toString();
+ //QString version = atts.value(strversion).toString();
translator.setLanguageCode(atts.value(strlanguage).toString());
translator.setSourceLanguageCode(atts.value(strsourcelanguage).toString());
while (!atEnd()) {
readNext();
if (isEndElement()) {
// </TS> found, finish local loop
- if (version == QLatin1String("1.1"))
- translator.resolveDualEncoded();
break;
} else if (isWhiteSpace()) {
// ignore these, just whitespace
diff --git a/tools/linguist/shared/ui.cpp b/tools/linguist/shared/ui.cpp
index 23a73e7..ff98a90 100644
--- a/tools/linguist/shared/ui.cpp
+++ b/tools/linguist/shared/ui.cpp
@@ -60,7 +60,7 @@ class UiReader : public QXmlDefaultHandler
{
public:
UiReader(Translator &translator, ConversionData &cd)
- : m_translator(translator), m_cd(cd), m_lineNumber(-1),
+ : m_translator(translator), m_cd(cd), m_lineNumber(-1), m_isTrString(false),
m_needUtf8(translator.codecName() != "UTF-8")
{}
@@ -81,6 +81,7 @@ private:
QString m_context;
QString m_source;
QString m_comment;
+ QString m_extracomment;
QXmlLocator *m_locator;
QString m_accum;
@@ -95,22 +96,27 @@ bool UiReader::startElement(const QString &namespaceURI,
Q_UNUSED(namespaceURI);
Q_UNUSED(localName);
- if (qName == QLatin1String("item")) {
+ if (qName == QLatin1String("item")) { // UI3 menu entries
flush();
- if (!atts.value(QLatin1String("text")).isEmpty())
+ if (!atts.value(QLatin1String("text")).isEmpty()) {
m_source = atts.value(QLatin1String("text"));
+ m_isTrString = true;
+ if (!m_cd.m_noUiLines)
+ m_lineNumber = m_locator->lineNumber();
+ }
} else if (qName == QLatin1String("string")) {
flush();
if (atts.value(QLatin1String("notr")).isEmpty() ||
atts.value(QLatin1String("notr")) != QLatin1String("true")) {
m_isTrString = true;
m_comment = atts.value(QLatin1String("comment"));
+ m_extracomment = atts.value(QLatin1String("extracomment"));
+ if (!m_cd.m_noUiLines)
+ m_lineNumber = m_locator->lineNumber();
} else {
m_isTrString = false;
}
}
- if (m_isTrString && !m_cd.m_noUiLines)
- m_lineNumber = m_locator->lineNumber();
m_accum.clear();
return true;
}
@@ -123,15 +129,15 @@ bool UiReader::endElement(const QString &namespaceURI,
m_accum.replace(QLatin1String("\r\n"), QLatin1String("\n"));
- if (qName == QLatin1String("class")) {
+ if (qName == QLatin1String("class")) { // UI "header"
if (m_context.isEmpty())
m_context = m_accum;
} else if (qName == QLatin1String("string") && m_isTrString) {
m_source = m_accum;
- } else if (qName == QLatin1String("comment")) {
+ } else if (qName == QLatin1String("comment")) { // FIXME: what's that?
m_comment = m_accum;
flush();
- } else if (qName == QLatin1String("function")) {
+ } else if (qName == QLatin1String("function")) { // UI3 embedded code
fetchtrInlinedCpp(m_accum, m_translator, m_context);
} else {
flush();
@@ -161,12 +167,14 @@ void UiReader::flush()
TranslatorMessage msg(m_context, m_source,
m_comment, QString(), m_cd.m_sourceFileName,
m_lineNumber, QStringList());
+ msg.setExtraComment(m_extracomment);
if (m_needUtf8 && msg.needs8Bit())
msg.setUtf8(true);
m_translator.extend(msg);
}
m_source.clear();
m_comment.clear();
+ m_extracomment.clear();
}
bool loadUI(Translator &translator, QIODevice &dev, ConversionData &cd)
diff --git a/tools/macdeployqt/macdeployqt/main.cpp b/tools/macdeployqt/macdeployqt/main.cpp
index d6f7e5f..0026c40 100644
--- a/tools/macdeployqt/macdeployqt/main.cpp
+++ b/tools/macdeployqt/macdeployqt/main.cpp
@@ -63,7 +63,7 @@ int main(int argc, char **argv)
qDebug() << "framework. The accessibilty, image formats, and text codec";
qDebug() << "plugins are always copied, unless \"-no-plugins\" is specified.";
qDebug() << "";
- qDebug() << "See the \"Deploying an Application on Qt/Mac\" typic in the";
+ qDebug() << "See the \"Deploying an Application on Qt/Mac\" topic in the";
qDebug() << "documentation for more information about deployment on Mac OS X.";
return 0;
diff --git a/tools/macdeployqt/shared/shared.cpp b/tools/macdeployqt/shared/shared.cpp
index db76ef2..1faa63a 100644
--- a/tools/macdeployqt/shared/shared.cpp
+++ b/tools/macdeployqt/shared/shared.cpp
@@ -343,7 +343,7 @@ DeploymentInfo deployQtFrameworks(QList<FrameworkInfo> frameworks, const QString
copiedFrameworks.append(framework.frameworkName);
// Get the qt path from one of the Qt frameworks;
- if (deploymenInfo.qtPath == QString() && framework.frameworkName.contains("Qt")
+ if (deploymenInfo.qtPath.isNull() && framework.frameworkName.contains("Qt")
&& framework.frameworkDirectory.contains("/lib"))
{
deploymenInfo.qtPath = framework.frameworkDirectory;
@@ -364,7 +364,7 @@ DeploymentInfo deployQtFrameworks(QList<FrameworkInfo> frameworks, const QString
// Copy farmework to app bundle.
const QString deployedBinaryPath = copyFramework(framework, bundlePath);
// Skip the rest if already was deployed.
- if (deployedBinaryPath == QString())
+ if (deployedBinaryPath.isNull())
continue;
runStrip(deployedBinaryPath);
diff --git a/tools/porting/src/portingrules.cpp b/tools/porting/src/portingrules.cpp
index 4931064..cd29403 100644
--- a/tools/porting/src/portingrules.cpp
+++ b/tools/porting/src/portingrules.cpp
@@ -189,7 +189,7 @@ void PortingRules::parseXml(QString fileName)
QString includeFile = xml[QLatin1String("Rules")][QLatin1String("Include")].text();
- if(includeFile != QString()) {
+ if(!includeFile.isNull()) {
QString resolvedIncludeFile = resolveFileName(fileName, includeFile);
if (!resolvedIncludeFile.isEmpty())
parseXml(resolvedIncludeFile);
diff --git a/tools/qdbus/qdbusviewer/qdbusviewer.cpp b/tools/qdbus/qdbusviewer/qdbusviewer.cpp
index e8ac3a6..9c25a89 100644
--- a/tools/qdbus/qdbusviewer/qdbusviewer.cpp
+++ b/tools/qdbus/qdbusviewer/qdbusviewer.cpp
@@ -440,22 +440,11 @@ void QDBusViewer::refreshChildren()
void QDBusViewer::about()
{
QMessageBox box(this);
-#if QT_EDITION == QT_EDITION_OPENSOURCE
- QString edition = tr("Open Source Edition");
- QString info = tr("This version of Qt's D-Bus Viewer is part of the Qt Open Source Edition. "
- "Qt is a comprehensive C++ framework for cross-platform application "
- "development.");
- QString moreInfo = tr("You need a commercial Qt license for development of proprietary (closed "
- "source) applications. Please see <a href=\"http://qtsoftware.com/company/model"
- ".html\">qtsoftware.com/company/model.html</a> for an overview of Qt licensing.");
-#else
+
+ // TODO: Remove these variables for 4.6.0. Must keep this way for 4.5.x due to string freeze.
QString edition;
QString info;
- QString moreInfo(tr("This program is licensed to you under the terms of the "
- "Qt Commercial License Agreement. For details, see the file LICENSE "
- "that came with this software distribution."));
-
-#endif
+ QString moreInfo;
box.setText(QString::fromLatin1("<center><img src=\":/trolltech/qdbusviewer/images/qdbusviewer-128.png\">"
"<h3>%1</h3>"
diff --git a/tools/qdbus/qdbusxml2cpp/qdbusxml2cpp.cpp b/tools/qdbus/qdbusxml2cpp/qdbusxml2cpp.cpp
index a871fe4..d7dab0b 100644
--- a/tools/qdbus/qdbusxml2cpp/qdbusxml2cpp.cpp
+++ b/tools/qdbus/qdbusxml2cpp/qdbusxml2cpp.cpp
@@ -82,7 +82,6 @@ static QStringList wantedInterfaces;
static const char help[] =
"Usage: " PROGRAMNAME " [options...] [xml-or-xml-file] [interfaces...]\n"
"Produces the C++ code to implement the interfaces defined in the input file.\n"
- "If no options are given, the code is written to the standard output.\n"
"\n"
"Options:\n"
" -a <filename> Write the adaptor code to <filename>\n"
@@ -99,7 +98,10 @@ static const char help[] =
"If the file name given to the options -a and -p does not end in .cpp or .h, the\n"
"program will automatically append the suffixes and produce both files.\n"
"You can also use a colon (:) to separate the header name from the source file\n"
- "name, as in '-a filename_p.h:filename.cpp'.\n";
+ "name, as in '-a filename_p.h:filename.cpp'.\n"
+ "\n"
+ "If you pass a dash (-) as the argument to either -p or -a, the output is written\n"
+ "to the standard output\n";
static const char includeList[] =
"#include <QtCore/QByteArray>\n"
diff --git a/tools/qdoc3/htmlgenerator.cpp b/tools/qdoc3/htmlgenerator.cpp
index 13d52bf..7702628 100644
--- a/tools/qdoc3/htmlgenerator.cpp
+++ b/tools/qdoc3/htmlgenerator.cpp
@@ -2079,17 +2079,7 @@ void HtmlGenerator::generateSectionList(const Section& section, const Node *rela
CodeMarker *marker, CodeMarker::SynopsisStyle style)
{
if (!section.members.isEmpty()) {
- bool twoColumn = false;
- if (style == CodeMarker::SeparateList) {
- twoColumn = (section.members.count() >= 16);
- } else if (section.members.first()->type() == Node::Property) {
- twoColumn = (section.members.count() >= 5);
- }
- if (twoColumn)
- out() << "<p><table width=\"100%\" border=\"0\" cellpadding=\"0\""
- " cellspacing=\"0\">\n"
- << "<tr><td width=\"45%\" valign=\"top\">";
- out() << "<ul>\n";
+ out() << "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\n";
int i = 0;
NodeList::ConstIterator m = section.members.begin();
@@ -2099,22 +2089,17 @@ void HtmlGenerator::generateSectionList(const Section& section, const Node *rela
continue;
}
- if (twoColumn && i == (int) (section.members.count() + 1) / 2)
- out() << "</ul></td><td valign=\"top\"><ul>\n";
-
- out() << "<li><div class=\"fn\"></div>";
+ out() << "<tr><td class=\"memItemLeft\" nowrap align=\"right\" valign=\"top\">";
if (style == CodeMarker::Accessors)
out() << "<b>";
generateSynopsis(*m, relative, marker, style);
if (style == CodeMarker::Accessors)
out() << "</b>";
- out() << "</li>\n";
+ out() << "</td></tr>\n";
i++;
++m;
}
- out() << "</ul>\n";
- if (twoColumn)
- out() << "</td></tr>\n</table></p>\n";
+ out() << "</table>\n";
}
if (style == CodeMarker::Summary && !section.inherited.isEmpty()) {
@@ -2129,7 +2114,7 @@ void HtmlGenerator::generateSectionInheritedList(const Section& section, const N
{
QList<QPair<ClassNode *, int> >::ConstIterator p = section.inherited.begin();
while (p != section.inherited.end()) {
- out() << "<li><div class=\"fn\"></div>";
+ out() << "<li><div bar=2 class=\"fn\"></div>";
out() << (*p).second << " ";
if ((*p).second == 1) {
out() << section.singularMember;
@@ -2425,7 +2410,9 @@ QString HtmlGenerator::highlightedCode(const QString& markedCode,
// replace all <@link> tags: "(<@link node=\"([^\"]+)\">).*(</@link>)"
static const QString linkTag("link");
for (int i = 0, n = src.size(); i < n;) {
- if (src.at(i) == charLangle && src.at(i + 1) == charAt) {
+ if (src.at(i) == charLangle && src.at(i + 1).unicode() == '@') {
+ if (i != 0)
+ html += "&nbsp;</td><td class=\"memItemRight\" valign=\"bottom\">";
i += 2;
if (parseArg(src, linkTag, &i, n, &arg, &par1)) {
QString link = linkForNode(
diff --git a/tools/qdoc3/qdoc3.pro b/tools/qdoc3/qdoc3.pro
index 3268585..2bba8fb 100644
--- a/tools/qdoc3/qdoc3.pro
+++ b/tools/qdoc3/qdoc3.pro
@@ -99,10 +99,3 @@ SOURCES += apigenerator.cpp \
webxmlgenerator.cpp \
yyindent.cpp
-
-win32 {
- QT_WINCONFIG = release
- CONFIG(debug, debug|release) {
- QT_WINCONFIG = debug
- }
-}
diff --git a/tools/qdoc3/test/assistant.qdocconf b/tools/qdoc3/test/assistant.qdocconf
index 7bb6bbf..b6313fa 100644
--- a/tools/qdoc3/test/assistant.qdocconf
+++ b/tools/qdoc3/test/assistant.qdocconf
@@ -6,18 +6,18 @@ include(qt-defines.qdocconf)
project = Qt Assistant
description = Qt Assistant Manual
-url = http://doc.trolltech.com/4.5
+url = http://doc.qtsoftware.com/4.5
indexes = $QT_BUILD_TREE/doc-build/html-qt/qt.index
qhp.projects = Assistant
qhp.Assistant.file = assistant.qhp
-qhp.Assistant.namespace = com.trolltech.assistant.450
+qhp.Assistant.namespace = com.trolltech.assistant.452
qhp.Assistant.virtualFolder = qdoc
qhp.Assistant.indexTitle = Qt Assistant Manual
qhp.Assistant.extraFiles = classic.css images/qt-logo.png images/trolltech-logo.png
-qhp.Assistant.filterAttributes = qt 4.5.0 tools assistant
+qhp.Assistant.filterAttributes = qt 4.5.2 tools assistant
qhp.Assistant.customFilters.Assistant.name = Qt Assistant Manual
qhp.Assistant.customFilters.Assistant.filterAttributes = qt tools assistant
qhp.Assistant.subprojects = manual examples
diff --git a/tools/qdoc3/test/carbide-eclipse-integration.qdocconf b/tools/qdoc3/test/carbide-eclipse-integration.qdocconf
index 683048d..aee5e17 100644
--- a/tools/qdoc3/test/carbide-eclipse-integration.qdocconf
+++ b/tools/qdoc3/test/carbide-eclipse-integration.qdocconf
@@ -6,7 +6,7 @@ macro.TheEclipseIntegration = Carbide.c++
HTML.footer = "<p /><address><hr /><div align=\"center\">\n" \
"<table width=\"100%\" cellspacing=\"0\" border=\"0\"><tr class=\"address\">\n" \
- "<td width=\"40%\" align="left">Copyright &copy; 2009 <a href=\"http://doc.trolltech.com/trolltech.html\">Nokia Corporation</a></td>\n" \
- "<td width=\"30%\" align=\"center\"><a href=\"http://doc.trolltech.com\">Trademarks</a></td>\n" \
- "<td width=\"40%\" align=\"right\"><div align=\"right\">Carbide.c++</div></td>\n" \
+ "<td width=\"30%\" align=\"left\">Copyright &copy; 2009 Nokia Corporation and/or its subsidiary(-ies)</td>\n" \
+ "<td width=\"40%\" align=\"center\"><a href=\"http://doc.qtsoftware.com\">Trademarks</a></td>\n" \
+ "<td width=\"30%\" align=\"right\"><div align=\"right\">Carbide.c++</div></td>\n" \
"</tr></table></div></address>"
diff --git a/tools/qdoc3/test/designer.qdocconf b/tools/qdoc3/test/designer.qdocconf
index 26636cd..8d9a49e 100644
--- a/tools/qdoc3/test/designer.qdocconf
+++ b/tools/qdoc3/test/designer.qdocconf
@@ -6,18 +6,18 @@ include(qt-defines.qdocconf)
project = Qt Designer
description = Qt Designer Manual
-url = http://doc.trolltech.com/4.5
+url = http://doc.qtsoftware.com/4.5
indexes = $QT_BUILD_TREE/doc-build/html-qt/qt.index
qhp.projects = Designer
qhp.Designer.file = designer.qhp
-qhp.Designer.namespace = com.trolltech.designer.450
+qhp.Designer.namespace = com.trolltech.designer.452
qhp.Designer.virtualFolder = qdoc
qhp.Designer.indexTitle = Qt Designer Manual
qhp.Designer.extraFiles = classic.css images/qt-logo.png images/trolltech-logo.png
-qhp.Designer.filterAttributes = qt 4.5.0 tools designer
+qhp.Designer.filterAttributes = qt 4.5.2 tools designer
qhp.Designer.customFilters.Designer.name = Qt Designer Manual
qhp.Designer.customFilters.Designer.filterAttributes = qt tools designer
qhp.Designer.subprojects = manual examples
diff --git a/tools/qdoc3/test/eclipse-integration.qdocconf b/tools/qdoc3/test/eclipse-integration.qdocconf
index 1fdaa1b..d9e4ac7 100644
--- a/tools/qdoc3/test/eclipse-integration.qdocconf
+++ b/tools/qdoc3/test/eclipse-integration.qdocconf
@@ -8,6 +8,6 @@ outputdir = $QTDIR/../qteclipsetools/main/doc/html
project = Qt Eclipse Integration
description = "Qt Eclipse Integration"
-url = http://doc.trolltech.com/eclipse-integration-4.4
+url = http://doc.qtsoftware.com/qt-eclipse-1.5
HTML.{postheader,address} = ""
diff --git a/tools/qdoc3/test/jambi.qdocconf b/tools/qdoc3/test/jambi.qdocconf
index 3644b69..101b33a 100644
--- a/tools/qdoc3/test/jambi.qdocconf
+++ b/tools/qdoc3/test/jambi.qdocconf
@@ -3,7 +3,7 @@ include(macros.qdocconf)
project = Qt Jambi
description = Qt Jambi Reference Documentation
-url = http://doc.trolltech.com/qtjambi
+url = http://doc.qtsoftware.com/qtjambi
version = 4.4.0_01
@@ -41,7 +41,7 @@ HTML.postheader = "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0
HTML.footer = "<p /><address><hr /><div align=\"center\">\n" \
"<table width=\"100%\" cellspacing=\"0\" border=\"0\"><tr class=\"address\">\n" \
- "<td width=\"30%\">Copyright &copy; \$THISYEAR\$ <a href=\"trolltech.html\">Trolltech</a></td>\n" \
+ "<td width=\"30%\" align=\"left\">Copyright &copy; 2009 Nokia Corporation and/or its subsidiary(-ies)</td>\n" \
"<td width=\"40%\" align=\"center\"><a href=\"trademarks.html\">Trademarks</a></td>\n" \
"<td width=\"30%\" align=\"right\"><div align=\"right\">Qt Jambi \\version</div></td>\n" \
"</tr></table></div></address>"
diff --git a/tools/qdoc3/test/linguist.qdocconf b/tools/qdoc3/test/linguist.qdocconf
index 5e889a8..177a54c 100644
--- a/tools/qdoc3/test/linguist.qdocconf
+++ b/tools/qdoc3/test/linguist.qdocconf
@@ -6,18 +6,18 @@ include(qt-defines.qdocconf)
project = Qt Linguist
description = Qt Linguist Manual
-url = http://doc.trolltech.com/4.5
+url = http://doc.qtsoftware.com/4.5
indexes = $QT_BUILD_TREE/doc-build/html-qt/qt.index
qhp.projects = Linguist
qhp.Linguist.file = linguist.qhp
-qhp.Linguist.namespace = com.trolltech.linguist.450
+qhp.Linguist.namespace = com.trolltech.linguist.452
qhp.Linguist.virtualFolder = qdoc
qhp.Linguist.indexTitle = Qt Linguist Manual
qhp.Linguist.extraFiles = classic.css images/qt-logo.png images/trolltech-logo.png
-qhp.Linguist.filterAttributes = qt 4.5.0 tools linguist
+qhp.Linguist.filterAttributes = qt 4.5.2 tools linguist
qhp.Linguist.customFilters.Linguist.name = Qt Linguist Manual
qhp.Linguist.customFilters.Linguist.filterAttributes = qt tools linguist
qhp.Linguist.subprojects = manual examples
diff --git a/tools/qdoc3/test/qmake.qdocconf b/tools/qdoc3/test/qmake.qdocconf
index c357cfb..20b0acf 100644
--- a/tools/qdoc3/test/qmake.qdocconf
+++ b/tools/qdoc3/test/qmake.qdocconf
@@ -6,18 +6,18 @@ include(qt-defines.qdocconf)
project = QMake
description = QMake Manual
-url = http://doc.trolltech.com/4.5
+url = http://doc.qtsoftware.com/4.5
indexes = $QT_BUILD_TREE/doc-build/html-qt/qt.index
qhp.projects = qmake
qhp.qmake.file = qmake.qhp
-qhp.qmake.namespace = com.trolltech.qmake.450
+qhp.qmake.namespace = com.trolltech.qmake.452
qhp.qmake.virtualFolder = qdoc
qhp.qmake.indexTitle = QMake Manual
qhp.qmake.extraFiles = classic.css images/qt-logo.png images/trolltech-logo.png
-qhp.qmake.filterAttributes = qt 4.5.0 tools qmake
+qhp.qmake.filterAttributes = qt 4.5.2 tools qmake
qhp.qmake.customFilters.qmake.name = qmake Manual
qhp.qmake.customFilters.qmake.filterAttributes = qt tools qmake
qhp.qmake.subprojects = manual
diff --git a/tools/qdoc3/test/qt-build-docs.qdocconf b/tools/qdoc3/test/qt-build-docs.qdocconf
index 25cdc5a..a05786b 100644
--- a/tools/qdoc3/test/qt-build-docs.qdocconf
+++ b/tools/qdoc3/test/qt-build-docs.qdocconf
@@ -6,7 +6,7 @@ include(qt-defines.qdocconf)
project = Qt
description = Qt Reference Documentation
-url = http://doc.trolltech.com/4.5
+url = http://doc.qtsoftware.com/4.5
edition.Console.modules = QtCore QtDBus QtNetwork QtScript QtSql QtXml \
QtXmlPatterns QtTest
@@ -20,10 +20,10 @@ edition.DesktopLight.groups = -graphicsview-api
qhp.projects = Qt
qhp.Qt.file = qt.qhp
-qhp.Qt.namespace = com.trolltech.qt.450
+qhp.Qt.namespace = com.trolltech.qt.452
qhp.Qt.virtualFolder = qdoc
qhp.Qt.indexTitle = Qt Reference Documentation
-qhp.Qt.indexRoot =
+qhp.Qt.indexRoot =
# Files not referenced in any qdoc file (last four are needed by qtdemo)
# See also extraimages.HTML
@@ -33,11 +33,11 @@ qhp.Qt.extraFiles = classic.css \
images/taskmenuextension-example.png \
images/coloreditorfactoryimage.png \
images/dynamiclayouts-example.png \
- images/stylesheet-coffee-plastique.png
+ images/stylesheet-coffee-plastique.png
-qhp.Qt.filterAttributes = qt 4.5.0 qtrefdoc
-qhp.Qt.customFilters.Qt.name = Qt 4.5.0
-qhp.Qt.customFilters.Qt.filterAttributes = qt 4.5.0
+qhp.Qt.filterAttributes = qt 4.5.2 qtrefdoc
+qhp.Qt.customFilters.Qt.name = Qt 4.5.2
+qhp.Qt.customFilters.Qt.filterAttributes = qt 4.5.2
qhp.Qt.subprojects = classes overviews examples
qhp.Qt.subprojects.classes.title = Classes
qhp.Qt.subprojects.classes.indexTitle = Qt's Classes
@@ -105,7 +105,8 @@ exampledirs = $QT_SOURCE_TREE/doc/src \
$QT_SOURCE_TREE/examples \
$QT_SOURCE_TREE/examples/tutorials \
$QT_SOURCE_TREE \
- $QT_SOURCE_TREE/qmake/examples
+ $QT_SOURCE_TREE/qmake/examples \
+ $QT_SOURCE_TREE/src/3rdparty/webkit/WebKit/qt/docs
imagedirs = $QT_SOURCE_TREE/doc/src/images \
$QT_SOURCE_TREE/examples
outputdir = $QT_BUILD_TREE/doc/html
diff --git a/tools/qdoc3/test/qt-html-templates.qdocconf b/tools/qdoc3/test/qt-html-templates.qdocconf
index f09192a..dc027d0 100644
--- a/tools/qdoc3/test/qt-html-templates.qdocconf
+++ b/tools/qdoc3/test/qt-html-templates.qdocconf
@@ -25,8 +25,7 @@ HTML.postheader = "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0
HTML.footer = "<p /><address><hr /><div align=\"center\">\n" \
"<table width=\"100%\" cellspacing=\"0\" border=\"0\"><tr class=\"address\">\n" \
- "<td width=\"30%\" align=\"left\">Copyright &copy; %THISYEAR% Nokia Corporation " \
- "and/or its subsidiary(-ies)</td>\n" \
+ "<td width=\"30%\" align=\"left\">Copyright &copy; 2009 Nokia Corporation and/or its subsidiary(-ies)</td>\n" \
"<td width=\"40%\" align=\"center\"><a href=\"trademarks.html\">Trademarks</a></td>\n" \
"<td width=\"30%\" align=\"right\"><div align=\"right\">Qt \\version</div></td>\n" \
"</tr></table></div></address>"
diff --git a/tools/qdoc3/test/qt-inc.qdocconf b/tools/qdoc3/test/qt-inc.qdocconf
index 97893dc..d6cb0e6 100644
--- a/tools/qdoc3/test/qt-inc.qdocconf
+++ b/tools/qdoc3/test/qt-inc.qdocconf
@@ -3,7 +3,7 @@ include(macros.qdocconf)
project = Qt
description = Qt Reference Documentation
-url = http://doc.trolltech.com/4.5
+url = http://doc.qtsoftware.com/4.5
edition.Console = QtCore QtNetwork QtSql QtXml QtScript QtTest
edition.Desktop = QtCore QtGui QtNetwork QtOpenGL QtSql QtSvg QtXml QtScript \
@@ -20,7 +20,8 @@ headerdirs = $QDOC_CURRENT_DIR
exampledirs = $QTDIR/doc/src \
$QTDIR/examples \
$QTDIR \
- $QTDIR/qmake/examples
+ $QTDIR/qmake/examples \
+ $QTDIR/src/3rdparty/webkit/WebKit/qt/docs
imagedirs = $QTDIR/doc/src/images \
$QTDIR/examples
outputdir = $QTDIR/doc/html
@@ -140,7 +141,7 @@ HTML.postheader = "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0
HTML.footer = "<p /><address><hr /><div align=\"center\">\n" \
"<table width=\"100%\" cellspacing=\"0\" border=\"0\"><tr class=\"address\">\n" \
- "<td width=\"30%\">Copyright &copy; %THISYEAR% <a href=\"trolltech.html\">Trolltech</a></td>\n" \
+ "<td width=\"30%\" align=\"left\">Copyright &copy; 2009 Nokia Corporation and/or its subsidiary(-ies)</td>\n" \
"<td width=\"40%\" align=\"center\"><a href=\"trademarks.html\">Trademarks</a></td>\n" \
"<td width=\"30%\" align=\"right\"><div align=\"right\">Qt \\version</div></td>\n" \
"</tr></table></div></address>"
diff --git a/tools/qdoc3/test/qt.qdocconf b/tools/qdoc3/test/qt.qdocconf
index 298311e..964869c 100644
--- a/tools/qdoc3/test/qt.qdocconf
+++ b/tools/qdoc3/test/qt.qdocconf
@@ -8,7 +8,7 @@ project = Qt
versionsym =
version = %VERSION%
description = Qt Reference Documentation
-url = http://doc.trolltech.com/4.5
+url = http://doc.qtsoftware.com/4.5
edition.Console.modules = QtCore QtDBus QtNetwork QtScript QtSql QtXml \
QtXmlPatterns QtTest
@@ -22,10 +22,10 @@ edition.DesktopLight.groups = -graphicsview-api
qhp.projects = Qt
qhp.Qt.file = qt.qhp
-qhp.Qt.namespace = com.trolltech.qt.450
+qhp.Qt.namespace = com.trolltech.qt.452
qhp.Qt.virtualFolder = qdoc
qhp.Qt.indexTitle = Qt Reference Documentation
-qhp.Qt.indexRoot =
+qhp.Qt.indexRoot =
# Files not referenced in any qdoc file (last four are needed by qtdemo)
# See also extraimages.HTML
@@ -35,11 +35,11 @@ qhp.Qt.extraFiles = classic.css \
images/taskmenuextension-example.png \
images/coloreditorfactoryimage.png \
images/dynamiclayouts-example.png \
- images/stylesheet-coffee-plastique.png
+ images/stylesheet-coffee-plastique.png
-qhp.Qt.filterAttributes = qt 4.5.0 qtrefdoc
-qhp.Qt.customFilters.Qt.name = Qt 4.5.0
-qhp.Qt.customFilters.Qt.filterAttributes = qt 4.5.0
+qhp.Qt.filterAttributes = qt 4.5.2 qtrefdoc
+qhp.Qt.customFilters.Qt.name = Qt 4.5.2
+qhp.Qt.customFilters.Qt.filterAttributes = qt 4.5.2
qhp.Qt.subprojects = classes overviews examples
qhp.Qt.subprojects.classes.title = Classes
qhp.Qt.subprojects.classes.indexTitle = Qt's Classes
@@ -107,7 +107,8 @@ exampledirs = $QTDIR/doc/src \
$QTDIR/examples \
$QTDIR/examples/tutorials \
$QTDIR \
- $QTDIR/qmake/examples
+ $QTDIR/qmake/examples \
+ $QTDIR/src/3rdparty/webkit/WebKit/qt/docs
imagedirs = $QTDIR/doc/src/images \
$QTDIR/examples
outputdir = $QTDIR/doc/html
diff --git a/tools/qdoc3/test/standalone-eclipse-integration.qdocconf b/tools/qdoc3/test/standalone-eclipse-integration.qdocconf
index c3c4291..127b578 100644
--- a/tools/qdoc3/test/standalone-eclipse-integration.qdocconf
+++ b/tools/qdoc3/test/standalone-eclipse-integration.qdocconf
@@ -5,7 +5,7 @@ macro.TheEclipseIntegration = The Qt Eclipse Integration
HTML.footer = "<p /><address><hr /><div align=\"center\">\n" \
"<table width=\"100%\" cellspacing=\"0\" border=\"0\"><tr class=\"address\">\n" \
- "<td width=\"40%\" align="left">Copyright &copy; 2009 <a href=\"http://doc.trolltech.com\">Nokia Corporation</a></td>\n" \
- "<td width=\"30%\" align=\"center\"><a href=\"http://doc.trolltech.com/trademarks.html\">Trademarks</a></td>\n" \
- "<td width=\"40%\" align=\"right\"><div align=\"right\">Qt Eclipse Integration 1.4.3</div></td>\n" \
+ "<td width=\"30%\" align=\"left\">Copyright &copy; 2009 Nokia Corporation and/or its subsidiary(-ies)</td>\n" \
+ "<td width=\"40%\" align=\"center\"><a href=\"http://doc.qtsoftware.com/trademarks.html\">Trademarks</a></td>\n" \
+ "<td width=\"30%\" align=\"right\"><div align=\"right\">Qt Eclipse Integration 1.4.3</div></td>\n" \
"</tr></table></div></address>"
diff --git a/tools/qtconfig/mainwindow.cpp b/tools/qtconfig/mainwindow.cpp
index 498a6b6..47b1417 100644
--- a/tools/qtconfig/mainwindow.cpp
+++ b/tools/qtconfig/mainwindow.cpp
@@ -999,20 +999,6 @@ void MainWindow::helpAbout()
QMessageBox box(this);
box.setText(tr("<h3>%1</h3>"
"<br/>Version %2"
-#if QT_EDITION == QT_EDITION_OPENSOURCE
- " Open Source Edition</center><p>"
- "This version of Qt Configuration is part of the Qt Open Source Edition, for use "
- "in the development of Open Source applications. "
- "Qt is a comprehensive C++ framework for cross-platform application "
- "development.<br/><br/>"
- "You need a commercial Qt license for development of proprietary (closed "
- "source) applications. Please see <tt>http://qtsoftware.com/company/model"
- ".html</tt> for an overview of Qt licensing."
-#else
- "</center><p>This program is licensed to you under the terms of the "
- "Qt Commercial License Agreement. For details, see the file LICENSE "
- "that came with this software distribution."
-#endif
"<br/><br/>Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies)."
"<br/><br/>The program is provided AS IS with NO WARRANTY OF ANY KIND,"
" INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A"
diff --git a/tools/qvfb/qvfb.cpp b/tools/qvfb/qvfb.cpp
index b6a715c..62149a1 100644
--- a/tools/qvfb/qvfb.cpp
+++ b/tools/qvfb/qvfb.cpp
@@ -217,16 +217,10 @@ QVFb::QVFb( int display_id, int w, int h, int d, int r, const QString &skin, Dis
setWindowIcon( pix );
rateDlg = 0;
refreshRate = 30;
-#if QT_VERSION >= 0x030000
- // When compiling with Qt 3 we need to create the menu first to
- // avoid scroll bars in the main window
+ // Create the menu first to avoid scroll bars in the main window
createMenu( menuBar() );
init( display_id, w, h, d, r, skin );
enableCursor( true );
-#else
- init( display_id, w, h, d, r, skin );
- createMenu( menuBar() );
-#endif
}
QVFb::~QVFb()
@@ -354,9 +348,7 @@ void QVFb::init( int display_id, int pw, int ph, int d, int r, const QString& sk
scroller->setWidget(view);
view->setContentsMargins( 0, 0, 0, 0 );
setCentralWidget(scroller);
-#if QT_VERSION >= 0x030000
ph += 2; // avoid scrollbar
-#endif
scroller->show();
// delete defaultbuttons.conf if it was left behind...
unlink(QFileInfo(QString("/tmp/qtembedded-%1/defaultbuttons.conf").arg(view->displayId())).absoluteFilePath().toLatin1().constData());
diff --git a/tools/shared/qtpropertybrowser/qtbuttonpropertybrowser.cpp b/tools/shared/qtpropertybrowser/qtbuttonpropertybrowser.cpp
index ecdaf16..09394e7 100644
--- a/tools/shared/qtpropertybrowser/qtbuttonpropertybrowser.cpp
+++ b/tools/shared/qtpropertybrowser/qtbuttonpropertybrowser.cpp
@@ -48,9 +48,7 @@
#include <QtGui/QToolButton>
#include <QtGui/QStyle>
-#if QT_VERSION >= 0x040400
QT_BEGIN_NAMESPACE
-#endif
class QtButtonPropertyBrowserPrivate
{
@@ -626,8 +624,6 @@ bool QtButtonPropertyBrowser::isExpanded(QtBrowserItem *item) const
return false;
}
-#if QT_VERSION >= 0x040400
QT_END_NAMESPACE
-#endif
#include "moc_qtbuttonpropertybrowser.cpp"
diff --git a/tools/shared/qtpropertybrowser/qtbuttonpropertybrowser.h b/tools/shared/qtpropertybrowser/qtbuttonpropertybrowser.h
index 0833c2d..0238f5c 100644
--- a/tools/shared/qtpropertybrowser/qtbuttonpropertybrowser.h
+++ b/tools/shared/qtpropertybrowser/qtbuttonpropertybrowser.h
@@ -44,9 +44,7 @@
#include "qtpropertybrowser.h"
-#if QT_VERSION >= 0x040400
QT_BEGIN_NAMESPACE
-#endif
class QtButtonPropertyBrowserPrivate;
@@ -82,8 +80,6 @@ private:
};
-#if QT_VERSION >= 0x040400
QT_END_NAMESPACE
-#endif
#endif
diff --git a/tools/shared/qtpropertybrowser/qteditorfactory.cpp b/tools/shared/qtpropertybrowser/qteditorfactory.cpp
index 3e9336f..a2e3917 100644
--- a/tools/shared/qtpropertybrowser/qteditorfactory.cpp
+++ b/tools/shared/qtpropertybrowser/qteditorfactory.cpp
@@ -62,9 +62,7 @@
# pragma warning(disable: 4786) /* MS VS 6: truncating debug info after 255 characters */
#endif
-#if QT_VERSION >= 0x040400
QT_BEGIN_NAMESPACE
-#endif
// Set a hard coded left margin to account for the indentation
// of the tree view icon when switching to an editor
@@ -2583,9 +2581,7 @@ void QtFontEditorFactory::disconnectPropertyManager(QtFontPropertyManager *manag
disconnect(manager, SIGNAL(valueChanged(QtProperty*,QFont)), this, SLOT(slotPropertyChanged(QtProperty*,QFont)));
}
-#if QT_VERSION >= 0x040400
QT_END_NAMESPACE
-#endif
#include "moc_qteditorfactory.cpp"
#include "qteditorfactory.moc"
diff --git a/tools/shared/qtpropertybrowser/qteditorfactory.h b/tools/shared/qtpropertybrowser/qteditorfactory.h
index 044dd5e..d86f9f6 100644
--- a/tools/shared/qtpropertybrowser/qteditorfactory.h
+++ b/tools/shared/qtpropertybrowser/qteditorfactory.h
@@ -44,9 +44,7 @@
#include "qtpropertymanager.h"
-#if QT_VERSION >= 0x040400
QT_BEGIN_NAMESPACE
-#endif
class QtSpinBoxFactoryPrivate;
@@ -394,8 +392,6 @@ private:
Q_PRIVATE_SLOT(d_func(), void slotSetValue(const QFont &))
};
-#if QT_VERSION >= 0x040400
QT_END_NAMESPACE
-#endif
#endif
diff --git a/tools/shared/qtpropertybrowser/qtgroupboxpropertybrowser.cpp b/tools/shared/qtpropertybrowser/qtgroupboxpropertybrowser.cpp
index d7c8f0b..9ac9744 100644
--- a/tools/shared/qtpropertybrowser/qtgroupboxpropertybrowser.cpp
+++ b/tools/shared/qtpropertybrowser/qtgroupboxpropertybrowser.cpp
@@ -47,9 +47,7 @@
#include <QtCore/QTimer>
#include <QtCore/QMap>
-#if QT_VERSION >= 0x040400
QT_BEGIN_NAMESPACE
-#endif
class QtGroupBoxPropertyBrowserPrivate
{
@@ -528,8 +526,6 @@ void QtGroupBoxPropertyBrowser::itemChanged(QtBrowserItem *item)
d_ptr->propertyChanged(item);
}
-#if QT_VERSION >= 0x040400
QT_END_NAMESPACE
-#endif
#include "moc_qtgroupboxpropertybrowser.cpp"
diff --git a/tools/shared/qtpropertybrowser/qtgroupboxpropertybrowser.h b/tools/shared/qtpropertybrowser/qtgroupboxpropertybrowser.h
index 29422bd..6d1b2b1 100644
--- a/tools/shared/qtpropertybrowser/qtgroupboxpropertybrowser.h
+++ b/tools/shared/qtpropertybrowser/qtgroupboxpropertybrowser.h
@@ -44,9 +44,7 @@
#include "qtpropertybrowser.h"
-#if QT_VERSION >= 0x040400
QT_BEGIN_NAMESPACE
-#endif
class QtGroupBoxPropertyBrowserPrivate;
@@ -73,8 +71,6 @@ private:
};
-#if QT_VERSION >= 0x040400
QT_END_NAMESPACE
-#endif
#endif
diff --git a/tools/shared/qtpropertybrowser/qtpropertybrowser.cpp b/tools/shared/qtpropertybrowser/qtpropertybrowser.cpp
index 7254245..cca082d 100644
--- a/tools/shared/qtpropertybrowser/qtpropertybrowser.cpp
+++ b/tools/shared/qtpropertybrowser/qtpropertybrowser.cpp
@@ -48,9 +48,7 @@
# pragma warning(disable: 4786) /* MS VS 6: truncating debug info after 255 characters */
#endif
-#if QT_VERSION >= 0x040400
QT_BEGIN_NAMESPACE
-#endif
class QtPropertyPrivate
{
@@ -1958,8 +1956,6 @@ void QtAbstractPropertyBrowser::setCurrentItem(QtBrowserItem *item)
emit currentItemChanged(item);
}
-#if QT_VERSION >= 0x040400
QT_END_NAMESPACE
-#endif
#include "moc_qtpropertybrowser.cpp"
diff --git a/tools/shared/qtpropertybrowser/qtpropertybrowser.h b/tools/shared/qtpropertybrowser/qtpropertybrowser.h
index 649a9e3..20ffb81 100644
--- a/tools/shared/qtpropertybrowser/qtpropertybrowser.h
+++ b/tools/shared/qtpropertybrowser/qtpropertybrowser.h
@@ -45,11 +45,7 @@
#include <QtGui/QWidget>
#include <QtCore/QSet>
-#if QT_VERSION >= 0x040400
QT_BEGIN_NAMESPACE
-#endif
-
-
class QtAbstractPropertyManager;
class QtPropertyPrivate;
@@ -308,8 +304,6 @@ private:
};
-#if QT_VERSION >= 0x040400
QT_END_NAMESPACE
-#endif
#endif // QTPROPERTYBROWSER_H
diff --git a/tools/shared/qtpropertybrowser/qtpropertybrowserutils.cpp b/tools/shared/qtpropertybrowser/qtpropertybrowserutils.cpp
index d689e60..94b0285 100644
--- a/tools/shared/qtpropertybrowser/qtpropertybrowserutils.cpp
+++ b/tools/shared/qtpropertybrowser/qtpropertybrowserutils.cpp
@@ -48,9 +48,7 @@
#include <QtGui/QLineEdit>
#include <QtGui/QMenu>
-#if QT_VERSION >= 0x040400
QT_BEGIN_NAMESPACE
-#endif
QtCursorDatabase::QtCursorDatabase()
{
@@ -426,9 +424,4 @@ bool QtKeySequenceEdit::event(QEvent *e)
return QWidget::event(e);
}
-
-
-
-#if QT_VERSION >= 0x040400
QT_END_NAMESPACE
-#endif
diff --git a/tools/shared/qtpropertybrowser/qtpropertybrowserutils_p.h b/tools/shared/qtpropertybrowser/qtpropertybrowserutils_p.h
index 2eab3c8..fe8c6d1 100644
--- a/tools/shared/qtpropertybrowser/qtpropertybrowserutils_p.h
+++ b/tools/shared/qtpropertybrowser/qtpropertybrowserutils_p.h
@@ -58,9 +58,7 @@
#include <QtGui/QWidget>
#include <QtCore/QStringList>
-#if QT_VERSION >= 0x040400
QT_BEGIN_NAMESPACE
-#endif
class QMouseEvent;
class QCheckBox;
@@ -154,8 +152,6 @@ private:
QLineEdit *m_lineEdit;
};
-#if QT_VERSION >= 0x040400
QT_END_NAMESPACE
-#endif
#endif
diff --git a/tools/shared/qtpropertybrowser/qtpropertymanager.cpp b/tools/shared/qtpropertybrowser/qtpropertymanager.cpp
index 8b84eb9..47b8c9b 100644
--- a/tools/shared/qtpropertybrowser/qtpropertymanager.cpp
+++ b/tools/shared/qtpropertybrowser/qtpropertymanager.cpp
@@ -61,9 +61,7 @@
# pragma warning(disable: 4786) /* MS VS 6: truncating debug info after 255 characters */
#endif
-#if QT_VERSION >= 0x040400
QT_BEGIN_NAMESPACE
-#endif
template <class PrivateData, class Value>
static void setSimpleMinimumData(PrivateData *data, const Value &minVal)
@@ -421,23 +419,6 @@ private:
QMetaEnum m_policyEnum;
};
-#if QT_VERSION < 0x040300
-
-static QList<QLocale::Country> countriesForLanguage(QLocale::Language language)
-{
- QList<QLocale::Country> countries;
- QLocale::Country country = QLocale::AnyCountry;
- while (country <= QLocale::LastCountry) {
- QLocale locale(language, country);
- if (locale.language() == language && !countries.contains(locale.country()))
- countries << locale.country();
- country = (QLocale::Country)((uint)country + 1); // ++country
- }
- return countries;
-}
-
-#endif
-
static QList<QLocale::Country> sortCountries(const QList<QLocale::Country> &countries)
{
QMultiMap<QString, QLocale::Country> nameToCountry;
@@ -469,11 +450,7 @@ void QtMetaEnumProvider::initLocale()
while (itLang.hasNext()) {
QLocale::Language language = itLang.next();
QList<QLocale::Country> countries;
-#if QT_VERSION < 0x040300
- countries = countriesForLanguage(language);
-#else
countries = QLocale::countriesForLanguage(language);
-#endif
if (countries.isEmpty() && language == system.language())
countries << system.country();
@@ -5789,9 +5766,7 @@ QtFontPropertyManager::QtFontPropertyManager(QObject *parent)
{
d_ptr = new QtFontPropertyManagerPrivate;
d_ptr->q_ptr = this;
-#if QT_VERSION >= 0x040500
QObject::connect(qApp, SIGNAL(fontDatabaseChanged()), this, SLOT(slotFontDatabaseChanged()));
-#endif
d_ptr->m_intPropertyManager = new QtIntPropertyManager(this);
connect(d_ptr->m_intPropertyManager, SIGNAL(valueChanged(QtProperty *, int)),
@@ -6485,9 +6460,7 @@ void QtCursorPropertyManager::uninitializeProperty(QtProperty *property)
d_ptr->m_values.remove(property);
}
-#if QT_VERSION >= 0x040400
QT_END_NAMESPACE
-#endif
#include "moc_qtpropertymanager.cpp"
#include "qtpropertymanager.moc"
diff --git a/tools/shared/qtpropertybrowser/qtpropertymanager.h b/tools/shared/qtpropertybrowser/qtpropertymanager.h
index 90fe5c0..2fb69bf 100644
--- a/tools/shared/qtpropertybrowser/qtpropertymanager.h
+++ b/tools/shared/qtpropertybrowser/qtpropertymanager.h
@@ -44,9 +44,7 @@
#include "qtpropertybrowser.h"
-#if QT_VERSION >= 0x040400
QT_BEGIN_NAMESPACE
-#endif
class QDate;
class QTime;
@@ -743,8 +741,6 @@ private:
Q_DISABLE_COPY(QtCursorPropertyManager)
};
-#if QT_VERSION >= 0x040400
QT_END_NAMESPACE
-#endif
#endif
diff --git a/tools/shared/qtpropertybrowser/qttreepropertybrowser.cpp b/tools/shared/qtpropertybrowser/qttreepropertybrowser.cpp
index ed262e5..1ad3f6b 100644
--- a/tools/shared/qtpropertybrowser/qttreepropertybrowser.cpp
+++ b/tools/shared/qtpropertybrowser/qttreepropertybrowser.cpp
@@ -52,9 +52,7 @@
#include <QtGui/QStyle>
#include <QtGui/QPalette>
-#if QT_VERSION >= 0x040400
QT_BEGIN_NAMESPACE
-#endif
class QtPropertyEditorView;
@@ -1040,9 +1038,7 @@ void QtTreePropertyBrowser::editItem(QtBrowserItem *item)
d_ptr->editItem(item);
}
-#if QT_VERSION >= 0x040400
QT_END_NAMESPACE
-#endif
#include "moc_qttreepropertybrowser.cpp"
#include "qttreepropertybrowser.moc"
diff --git a/tools/shared/qtpropertybrowser/qttreepropertybrowser.h b/tools/shared/qtpropertybrowser/qttreepropertybrowser.h
index 63bd7f6..813e050 100644
--- a/tools/shared/qtpropertybrowser/qttreepropertybrowser.h
+++ b/tools/shared/qtpropertybrowser/qttreepropertybrowser.h
@@ -44,9 +44,7 @@
#include "qtpropertybrowser.h"
-#if QT_VERSION >= 0x040400
QT_BEGIN_NAMESPACE
-#endif
class QTreeWidgetItem;
class QtTreePropertyBrowserPrivate;
@@ -131,8 +129,6 @@ private:
};
-#if QT_VERSION >= 0x040400
QT_END_NAMESPACE
-#endif
#endif
diff --git a/tools/shared/qtpropertybrowser/qtvariantproperty.cpp b/tools/shared/qtpropertybrowser/qtvariantproperty.cpp
index 7e1975e..f712ba6 100644
--- a/tools/shared/qtpropertybrowser/qtvariantproperty.cpp
+++ b/tools/shared/qtpropertybrowser/qtvariantproperty.cpp
@@ -51,9 +51,7 @@
# pragma warning(disable: 4786) /* MS VS 6: truncating debug info after 255 characters */
#endif
-#if QT_VERSION >= 0x040400
QT_BEGIN_NAMESPACE
-#endif
class QtEnumPropertyType
{
@@ -69,17 +67,13 @@ class QtGroupPropertyType
{
};
-#if QT_VERSION >= 0x040400
QT_END_NAMESPACE
-#endif
Q_DECLARE_METATYPE(QtEnumPropertyType)
Q_DECLARE_METATYPE(QtFlagPropertyType)
Q_DECLARE_METATYPE(QtGroupPropertyType)
-#if QT_VERSION >= 0x040400
QT_BEGIN_NAMESPACE
-#endif
/*!
Returns the type id for an enum property.
@@ -2275,8 +2269,6 @@ void QtVariantEditorFactory::disconnectPropertyManager(QtVariantPropertyManager
d_ptr->m_checkBoxFactory->removePropertyManager(itFlag.next()->subBoolPropertyManager());
}
-#if QT_VERSION >= 0x040400
QT_END_NAMESPACE
-#endif
#include "moc_qtvariantproperty.cpp"
diff --git a/tools/shared/qtpropertybrowser/qtvariantproperty.h b/tools/shared/qtpropertybrowser/qtvariantproperty.h
index 91397d8..9253809 100644
--- a/tools/shared/qtpropertybrowser/qtvariantproperty.h
+++ b/tools/shared/qtpropertybrowser/qtvariantproperty.h
@@ -46,9 +46,7 @@
#include <QtCore/QVariant>
#include <QtGui/QIcon>
-#if QT_VERSION >= 0x040400
QT_BEGIN_NAMESPACE
-#endif
typedef QMap<int, QIcon> QtIconMap;
@@ -172,9 +170,7 @@ private:
Q_DISABLE_COPY(QtVariantEditorFactory)
};
-#if QT_VERSION >= 0x040400
QT_END_NAMESPACE
-#endif
Q_DECLARE_METATYPE(QIcon)
Q_DECLARE_METATYPE(QtIconMap)
diff --git a/tools/tools.pro b/tools/tools.pro
index ffc5d63..3325a57 100644
--- a/tools/tools.pro
+++ b/tools/tools.pro
@@ -15,7 +15,7 @@ no-png {
SUBDIRS += linguist
wince*: SUBDIRS = qtestlib designer
unix:!mac:!embedded:contains(QT_CONFIG, qt3support):SUBDIRS += qtconfig
- win32:!wince*:!contains(QT_EDITION, OpenSource|Console):SUBDIRS += activeqt
+ win32:!wince*:SUBDIRS += activeqt
}
mac {
diff --git a/translations/assistant_adp_de.ts b/translations/assistant_adp_de.ts
index c92d6f9..db2005a 100644
--- a/translations/assistant_adp_de.ts
+++ b/translations/assistant_adp_de.ts
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS><TS version="2.0" language="de">
-<defaultcodec></defaultcodec>
+<!DOCTYPE TS>
+<TS version="2.0" language="de">
<context>
<name>Assistant</name>
<message>
@@ -15,7 +15,7 @@
<context>
<name>AssistantServer</name>
<message>
- <location filename="../tools/assistant/compat/main.cpp" line="+195"/>
+ <location filename="../tools/assistant/compat/main.cpp" line="+225"/>
<source>Qt Assistant</source>
<translation>Qt Assistant</translation>
</message>
@@ -103,7 +103,7 @@
<context>
<name>FontPanel</name>
<message>
- <location filename="../tools/shared/fontpanel/fontpanel.cpp" line="+33"/>
+ <location filename="../tools/shared/fontpanel/fontpanel.cpp" line="+63"/>
<source>Font</source>
<translation>Schrift</translation>
</message>
@@ -131,7 +131,7 @@
<context>
<name>FontSettingsDialog</name>
<message>
- <location filename="../tools/assistant/compat/fontsettingsdialog.cpp" line="+33"/>
+ <location filename="../tools/assistant/compat/fontsettingsdialog.cpp" line="+63"/>
<source>Font Settings</source>
<translation>Schriftart</translation>
</message>
@@ -188,9 +188,9 @@
<translation type="obsolete">Qt Assistant Handbuch</translation>
</message>
<message>
- <location filename="../tools/assistant/compat/helpdialog.cpp" line="+345"/>
+ <location filename="../tools/assistant/compat/helpdialog.cpp" line="+376"/>
<location line="+16"/>
- <location line="+659"/>
+ <location line="+661"/>
<source>Qt Assistant</source>
<translation>Qt Assistant</translation>
</message>
@@ -199,7 +199,7 @@
<translation type="obsolete">Öffne Link im aktuellen Fenster</translation>
</message>
<message>
- <location line="-769"/>
+ <location line="-771"/>
<source>Open Link in New Window</source>
<translation>Öffne Link in neuem Fenster</translation>
</message>
@@ -245,7 +245,7 @@ Skipping file.</source>
</message>
<message>
<location line="+35"/>
- <location line="+467"/>
+ <location line="+469"/>
<source>Done</source>
<translation>Fertig</translation>
</message>
@@ -284,7 +284,7 @@ Skipping file.</source>
</translation>
</message>
<message>
- <location line="-880"/>
+ <location line="-882"/>
<source>Open Link in Current Tab</source>
<translation>Link im Aktuellen Tab öffnen</translation>
</message>
@@ -307,7 +307,7 @@ Skipping file.</source>
<translation>Dokumentation %1 ist nicht kompatibel! Datei wird übersprungen.</translation>
</message>
<message>
- <location line="+468"/>
+ <location line="+470"/>
<source>Failed to save fulltext search index
Assistant will not work!</source>
<translation>Der Index für die Volltextsuche konnte nicht gespeichert werden.
@@ -630,7 +630,7 @@ Assistent ist nicht einsatzbereit!</translation>
<translation type="obsolete">Qt Assistant von Trolltech - %1</translation>
</message>
<message>
- <location filename="../tools/assistant/compat/helpwindow.cpp" line="+67"/>
+ <location filename="../tools/assistant/compat/helpwindow.cpp" line="+97"/>
<source>Help</source>
<translation>Hilfe</translation>
</message>
@@ -717,7 +717,7 @@ Bitte überprüfen Sie, das dieser an der angegeben Stelle existiert.</translati
<context>
<name>Index</name>
<message>
- <location filename="../tools/assistant/compat/index.cpp" line="+355"/>
+ <location filename="../tools/assistant/compat/index.cpp" line="+385"/>
<source>Untitled</source>
<translation>Unbenannt</translation>
</message>
@@ -853,7 +853,7 @@ Bitte überprüfen Sie, das dieser an der angegeben Stelle existiert.</translati
<translation type="obsolete">A&amp;nsicht</translation>
</message>
<message>
- <location filename="../tools/assistant/compat/mainwindow.cpp" line="+158"/>
+ <location filename="../tools/assistant/compat/mainwindow.cpp" line="+188"/>
<source>Ctrl+T</source>
<translation>Strg+T
</translation>
@@ -869,17 +869,15 @@ Bitte überprüfen Sie, das dieser an der angegeben Stelle existiert.</translati
<translation>Strg+E</translation>
</message>
<message>
- <location line="+130"/>
<source>You need a commercial Qt license for development of proprietary (closed source) applications. Please see &lt;a href=&quot;http://qtsoftware.com/company/model&quot;&gt;qtsoftware.com/company/model&lt;/a&gt; for an overview of Qt licensing.</source>
- <translation>Sie benötigen eine kommerzielle Qt Lizenz für die Entwicklung von proprietären (geschlossenen) Anwendungen. Besuchen Sie &lt;a href=&quot;http://qtsoftware.com/company/about/businessmodel&quot;&gt;http://qtsoftware.com/company/about/businessmodel&lt;/a&gt; um sich einen Überblick über die Qt Lizenzvergabe zu verschaffen.</translation>
+ <translation type="obsolete">Sie benötigen eine kommerzielle Qt Lizenz für die Entwicklung von proprietären (geschlossenen) Anwendungen. Besuchen Sie &lt;a href=&quot;http://qtsoftware.com/company/about/businessmodel&quot;&gt;http://qtsoftware.com/company/about/businessmodel&lt;/a&gt; um sich einen Überblick über die Qt Lizenzvergabe zu verschaffen.</translation>
</message>
<message>
- <location line="+6"/>
<source>This program is licensed to you under the terms of the Qt %1 License Agreement. For details, see the license file that came with this software distribution.</source>
- <translation>Dieses Programm ist für Sie lizenziert gemäß den Bedingungen des Qt %1 Lizenzvertrages. Einzelheiten können sie der mitgelieferten Lizenz-Datei entnehmen.</translation>
+ <translation type="obsolete">Dieses Programm ist für Sie lizenziert gemäß den Bedingungen des Qt %1 Lizenzvertrages. Einzelheiten können sie der mitgelieferten Lizenz-Datei entnehmen.</translation>
</message>
<message>
- <location line="+21"/>
+ <location line="+139"/>
<location line="+1"/>
<source>Qt Assistant</source>
<translation>Qt Assistant</translation>
@@ -1082,7 +1080,7 @@ Bitte überprüfen Sie, das dieser an der angegeben Stelle existiert.</translati
<translation>Umschalt+F1</translation>
</message>
<message>
- <location filename="../tools/assistant/compat/mainwindow.cpp" line="-157"/>
+ <location filename="../tools/assistant/compat/mainwindow.cpp" line="-139"/>
<source>Ctrl+S</source>
<translation>Strg+S</translation>
</message>
@@ -1170,7 +1168,7 @@ Bitte überprüfen Sie, das dieser an der angegeben Stelle existiert.</translati
<translation></translation>
</message>
<message>
- <location filename="../tools/assistant/compat/mainwindow.cpp" line="+209"/>
+ <location filename="../tools/assistant/compat/mainwindow.cpp" line="+191"/>
<source>Failed to open about application contents in file: &apos;%1&apos;</source>
<translation>Fehler beim öffnen des Inhalts in Datei: &apos;%1&apos;</translation>
</message>
@@ -1179,7 +1177,7 @@ Bitte überprüfen Sie, das dieser an der angegeben Stelle existiert.</translati
<translation type="obsolete">Fehler ...</translation>
</message>
<message>
- <location line="-264"/>
+ <location line="-246"/>
<source>Sidebar</source>
<translation>Sidebar</translation>
</message>
@@ -1229,22 +1227,19 @@ Bitte überprüfen Sie, das dieser an der angegeben Stelle existiert.</translati
<translation>Zeigt die Hauptseite eines Dokumentensets an.</translation>
</message>
<message>
- <location line="+35"/>
<source>Open Source Edition</source>
- <translation>Open Source Edition</translation>
+ <translation type="obsolete">Open Source Edition</translation>
</message>
<message>
- <location line="+1"/>
<source>This version of Qt Assistant is part of the Qt Open Source Edition, for use in the development of Open Source applications. Qt is a comprehensive C++ framework for cross-platform application development.</source>
- <translation>Diese Version von Qt Assistant ist Teil der Qt Open Source Edition und darf für die Entwicklung von Open Source Anwendungen genutzt werden. Qt ist ein umfangreiches C++ Framework für die Entwicklung von Cross-Platform-Anwendungen.</translation>
+ <translation type="obsolete">Diese Version von Qt Assistant ist Teil der Qt Open Source Edition und darf für die Entwicklung von Open Source Anwendungen genutzt werden. Qt ist ein umfangreiches C++ Framework für die Entwicklung von Cross-Platform-Anwendungen.</translation>
</message>
<message>
- <location line="+16"/>
<source>This program is licensed to you under the terms of the Qt Commercial License Agreement. For details, see the file LICENSE that came with this software distribution.</source>
- <translation>Dieses Programm ist für Sie lizenziert gemäß den Bedingungen des kommerziellen Qt Lizenzvertrages. Einzelheiten können Sie der mitgelieferten LICENSE-Datei entnehmen.</translation>
+ <translation type="obsolete">Dieses Programm ist für Sie lizenziert gemäß den Bedingungen des kommerziellen Qt Lizenzvertrages. Einzelheiten können Sie der mitgelieferten LICENSE-Datei entnehmen.</translation>
</message>
<message>
- <location line="+236"/>
+ <location line="+270"/>
<source>...</source>
<translation>...</translation>
</message>
@@ -1292,7 +1287,7 @@ Bitte überprüfen Sie, das dieser an der angegeben Stelle existiert.</translati
<translation type="obsolete">Qt Assistant von Trolltech</translation>
</message>
<message>
- <location filename="../tools/assistant/compat/config.cpp" line="+320"/>
+ <location filename="../tools/assistant/compat/config.cpp" line="+350"/>
<source>Qt Assistant by Nokia</source>
<translation type="unfinished"></translation>
</message>
@@ -1470,7 +1465,7 @@ Es müssen zuerst alle Inhalte gelöscht werden.</translation>
<translation>Unbenannt</translation>
</message>
<message>
- <location filename="../tools/assistant/compat/tabbedbrowser.cpp" line="+205"/>
+ <location filename="../tools/assistant/compat/tabbedbrowser.cpp" line="+235"/>
<source>Add page</source>
<translation>Seite einfügen</translation>
</message>
@@ -1528,7 +1523,7 @@ Es müssen zuerst alle Inhalte gelöscht werden.</translation>
<context>
<name>TopicChooser</name>
<message>
- <location filename="../tools/assistant/compat/topicchooser.cpp" line="+26"/>
+ <location filename="../tools/assistant/compat/topicchooser.cpp" line="+56"/>
<source>Choose a topic for &lt;b&gt;%1&lt;/b&gt;</source>
<translation>Wählen Sie ein Thema für &lt;b&gt;%1&lt;/b&gt;</translation>
</message>
diff --git a/translations/assistant_adp_ja.ts b/translations/assistant_adp_ja.ts
index 0a4b209..312f00f 100644
--- a/translations/assistant_adp_ja.ts
+++ b/translations/assistant_adp_ja.ts
@@ -1,9 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS><TS version="2.0" language="ja">
+<!DOCTYPE TS>
+<TS version="2.0" language="ja">
<context>
<name>AssistantServer</name>
<message>
- <location filename="../tools/assistant/compat/main.cpp" line="+195"/>
+ <location filename="../tools/assistant/compat/main.cpp" line="+225"/>
<source>Qt Assistant</source>
<translation>Qt Assistant</translation>
</message>
@@ -16,7 +17,7 @@
<context>
<name>FontPanel</name>
<message>
- <location filename="../tools/shared/fontpanel/fontpanel.cpp" line="+33"/>
+ <location filename="../tools/shared/fontpanel/fontpanel.cpp" line="+63"/>
<source>Font</source>
<translation type="unfinished"></translation>
</message>
@@ -44,7 +45,7 @@
<context>
<name>FontSettingsDialog</name>
<message>
- <location filename="../tools/assistant/compat/fontsettingsdialog.cpp" line="+33"/>
+ <location filename="../tools/assistant/compat/fontsettingsdialog.cpp" line="+63"/>
<source>Font Settings</source>
<translation type="unfinished"></translation>
</message>
@@ -72,7 +73,7 @@
<context>
<name>HelpDialog</name>
<message>
- <location filename="../tools/assistant/compat/helpdialog.cpp" line="+248"/>
+ <location filename="../tools/assistant/compat/helpdialog.cpp" line="+279"/>
<source>Open Link in Current Tab</source>
<translation>リンクをç¾åœ¨ã®ã‚¿ãƒ–ã«é–‹ã</translation>
</message>
@@ -95,12 +96,12 @@
<message>
<location line="-64"/>
<location line="+16"/>
- <location line="+659"/>
+ <location line="+661"/>
<source>Qt Assistant</source>
<translation>Qt Assistant</translation>
</message>
<message>
- <location line="-675"/>
+ <location line="-677"/>
<source>Failed to load keyword index file
Assistant will not work!</source>
<translation>キーワードインデックスファイルã®ãƒ­ãƒ¼ãƒ‰ã«å¤±æ•—ã—ã¾ã—ãŸ
@@ -140,7 +141,7 @@ Skipping file.</source>
スキップã—ã¾ã™ã€‚</translation>
</message>
<message numerus="yes">
- <location line="+575"/>
+ <location line="+577"/>
<source>%n document(s) found.</source>
<translation type="unfinished">
<numerusform></numerusform>
@@ -163,8 +164,8 @@ Skipping file.</source>
<translation type="obsolete">検索</translation>
</message>
<message>
- <location line="-527"/>
- <location line="+467"/>
+ <location line="-529"/>
+ <location line="+469"/>
<source>Done</source>
<translation>完了</translation>
</message>
@@ -360,7 +361,7 @@ Assistant ã¯å‹•ãã¾ã›ã‚“!</translation>
<context>
<name>HelpWindow</name>
<message>
- <location filename="../tools/assistant/compat/helpwindow.cpp" line="+67"/>
+ <location filename="../tools/assistant/compat/helpwindow.cpp" line="+97"/>
<source>Help</source>
<translation>ヘルプ</translation>
</message>
@@ -414,7 +415,7 @@ Assistant ã¯å‹•ãã¾ã›ã‚“!</translation>
<context>
<name>Index</name>
<message>
- <location filename="../tools/assistant/compat/index.cpp" line="+355"/>
+ <location filename="../tools/assistant/compat/index.cpp" line="+385"/>
<source>Untitled</source>
<translation>タイトルãªã—</translation>
</message>
@@ -422,7 +423,7 @@ Assistant ã¯å‹•ãã¾ã›ã‚“!</translation>
<context>
<name>MainWindow</name>
<message>
- <location filename="../tools/assistant/compat/mainwindow.cpp" line="+73"/>
+ <location filename="../tools/assistant/compat/mainwindow.cpp" line="+103"/>
<source>Sidebar</source>
<translation>サイドãƒãƒ¼</translation>
</message>
@@ -482,17 +483,7 @@ Assistant ã¯å‹•ãã¾ã›ã‚“!</translation>
<translation>指定ã•ã‚ŒãŸãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆã‚»ãƒƒãƒˆã®ãƒ¡ã‚¤ãƒ³ãƒšãƒ¼ã‚¸ã‚’表示ã—ã¾ã™ã€‚</translation>
</message>
<message>
- <location line="+40"/>
- <source>You need a commercial Qt license for development of proprietary (closed source) applications. Please see &lt;a href=&quot;http://qtsoftware.com/company/model&quot;&gt;qtsoftware.com/company/model&lt;/a&gt; for an overview of Qt licensing.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location line="+6"/>
- <source>This program is licensed to you under the terms of the Qt %1 License Agreement. For details, see the license file that came with this software distribution.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location line="+21"/>
+ <location line="+49"/>
<location line="+1"/>
<source>Qt Assistant</source>
<translation>Qt Assistant</translation>
@@ -853,7 +844,7 @@ Assistant ã¯å‹•ãã¾ã›ã‚“!</translation>
<translation>åå‰ã‚’ã¤ã‘ã¦ãƒšãƒ¼ã‚¸ã‚’ä¿å­˜...</translation>
</message>
<message>
- <location filename="../tools/assistant/compat/mainwindow.cpp" line="-691"/>
+ <location filename="../tools/assistant/compat/mainwindow.cpp" line="-673"/>
<source>&amp;Window</source>
<translation>ウィンドウ(&amp;W)</translation>
</message>
@@ -868,23 +859,20 @@ Assistant ã¯å‹•ãã¾ã›ã‚“!</translation>
<translation>Ctrl+M</translation>
</message>
<message>
- <location line="+191"/>
<source>Open Source Edition</source>
- <translation>オープンソース版</translation>
+ <translation type="obsolete">オープンソース版</translation>
</message>
<message>
- <location line="+1"/>
<source>This version of Qt Assistant is part of the Qt Open Source Edition, for use in the development of Open Source applications. Qt is a comprehensive C++ framework for cross-platform application development.</source>
- <translation>ã“ã® Qt Assistant 㯠Qt オープンソース版ã®ä¸€éƒ¨ã§ã‚ã‚Šã€ã‚ªãƒ¼ãƒ—ンソースã®ã‚¢ãƒ—リケーションã®é–‹ç™ºã‚’目的ã¨ã—ãŸã‚‚ã®ã§ã™ã€‚Qt ã¯ã€è¤‡æ•°ã®ãƒ—ラットフォームã«å¯¾å¿œã™ã‚‹ã‚¢ãƒ—リケーションを開発ã™ã‚‹ãŸã‚ã® C++ ã®ã‚ã‹ã‚Šã‚„ã™ã„フレームワークã§ã™ã€‚</translation>
+ <translation type="obsolete">ã“ã® Qt Assistant 㯠Qt オープンソース版ã®ä¸€éƒ¨ã§ã‚ã‚Šã€ã‚ªãƒ¼ãƒ—ンソースã®ã‚¢ãƒ—リケーションã®é–‹ç™ºã‚’目的ã¨ã—ãŸã‚‚ã®ã§ã™ã€‚Qt ã¯ã€è¤‡æ•°ã®ãƒ—ラットフォームã«å¯¾å¿œã™ã‚‹ã‚¢ãƒ—リケーションを開発ã™ã‚‹ãŸã‚ã® C++ ã®ã‚ã‹ã‚Šã‚„ã™ã„フレームワークã§ã™ã€‚</translation>
</message>
<message>
<source>You need a commercial Qt license for development of proprietary (closed source) applications. Please see &lt;a href=&quot;http://qtsoftware.com/company/model.html&quot;&gt;qtsoftware.com/company/model.html&lt;/a&gt; for an overview of Qt licensing.</source>
<translation type="obsolete">著作権ã®ã‚る(ソースを公開ã—ãªã„)アプリケーションを開発ã™ã‚‹ã«ã¯ã€Qt ã®å•†ç”¨ãƒ©ã‚¤ã‚»ãƒ³ã‚¹ãŒå¿…è¦ã§ã™ã€‚Qt ã®ãƒ©ã‚¤ã‚»ãƒ³ã‚¹ã®æ¦‚è¦ã«ã¤ã„ã¦ã¯ &lt;a href=&quot;http://qtsoftware.com/company/model.html&quot;&gt;qtsoftware.com/company/model.html&lt;/a&gt; ã‚’ã”覧ãã ã•ã„。</translation>
</message>
<message>
- <location line="+16"/>
<source>This program is licensed to you under the terms of the Qt Commercial License Agreement. For details, see the file LICENSE that came with this software distribution.</source>
- <translation>ã“ã®ãƒ—ログラム㯠Qt 商用版ライセンスè¦ç´„ã®å®šã‚ã‚‹æ¡ä»¶ã®ä¸‹ã§ã€ã‚ãªãŸã«ãƒ©ã‚¤ã‚»ãƒ³ã‚¹ã•ã‚Œã¦ã„ã¾ã™ã€‚詳細ã¯ã“ã®ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¨ã¨ã‚‚ã«é…布ã•ã‚Œã‚‹ LICENSE ファイルをã”覧ãã ã•ã„。</translation>
+ <translation type="obsolete">ã“ã®ãƒ—ログラム㯠Qt 商用版ライセンスè¦ç´„ã®å®šã‚ã‚‹æ¡ä»¶ã®ä¸‹ã§ã€ã‚ãªãŸã«ãƒ©ã‚¤ã‚»ãƒ³ã‚¹ã•ã‚Œã¦ã„ã¾ã™ã€‚詳細ã¯ã“ã®ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¨ã¨ã‚‚ã«é…布ã•ã‚Œã‚‹ LICENSE ファイルをã”覧ãã ã•ã„。</translation>
</message>
<message>
<location filename="../tools/assistant/compat/mainwindow.ui"/>
@@ -935,7 +923,7 @@ Assistant ã¯å‹•ãã¾ã›ã‚“!</translation>
<translation type="obsolete">Trolltech ã® Qt Assistant</translation>
</message>
<message>
- <location filename="../tools/assistant/compat/config.cpp" line="+320"/>
+ <location filename="../tools/assistant/compat/config.cpp" line="+350"/>
<source>Qt Assistant by Nokia</source>
<translation type="unfinished"></translation>
</message>
@@ -943,7 +931,7 @@ Assistant ã¯å‹•ãã¾ã›ã‚“!</translation>
<context>
<name>TabbedBrowser</name>
<message>
- <location filename="../tools/assistant/compat/tabbedbrowser.cpp" line="+119"/>
+ <location filename="../tools/assistant/compat/tabbedbrowser.cpp" line="+149"/>
<source>...</source>
<translation>...</translation>
</message>
@@ -1011,7 +999,7 @@ Assistant ã¯å‹•ãã¾ã›ã‚“!</translation>
<context>
<name>TopicChooser</name>
<message>
- <location filename="../tools/assistant/compat/topicchooser.cpp" line="+26"/>
+ <location filename="../tools/assistant/compat/topicchooser.cpp" line="+56"/>
<source>Choose a topic for &lt;b&gt;%1&lt;/b&gt;</source>
<translation>&lt;b&gt;%1&lt;/b&gt; ã®ãƒˆãƒ”ックをé¸æŠž</translation>
</message>
diff --git a/translations/assistant_adp_pl.ts b/translations/assistant_adp_pl.ts
index 3a80244..de0c71c 100644
--- a/translations/assistant_adp_pl.ts
+++ b/translations/assistant_adp_pl.ts
@@ -1,9 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS><TS version="2.0" language="pl">
+<!DOCTYPE TS>
+<TS version="2.0" language="pl">
<context>
<name>AssistantServer</name>
<message>
- <location filename="../tools/assistant/compat/main.cpp" line="+195"/>
+ <location filename="../tools/assistant/compat/main.cpp" line="+225"/>
<source>Qt Assistant</source>
<translation>Qt Assistant</translation>
</message>
@@ -16,7 +17,7 @@
<context>
<name>FontPanel</name>
<message>
- <location filename="../tools/shared/fontpanel/fontpanel.cpp" line="+33"/>
+ <location filename="../tools/shared/fontpanel/fontpanel.cpp" line="+63"/>
<source>Font</source>
<translation>Czcionka</translation>
</message>
@@ -44,7 +45,7 @@
<context>
<name>FontSettingsDialog</name>
<message>
- <location filename="../tools/assistant/compat/fontsettingsdialog.cpp" line="+33"/>
+ <location filename="../tools/assistant/compat/fontsettingsdialog.cpp" line="+63"/>
<source>Font Settings</source>
<translation>Ustawienia czcionki</translation>
</message>
@@ -72,7 +73,7 @@
<context>
<name>HelpDialog</name>
<message>
- <location filename="../tools/assistant/compat/helpdialog.cpp" line="+248"/>
+ <location filename="../tools/assistant/compat/helpdialog.cpp" line="+279"/>
<source>Open Link in Current Tab</source>
<translation>Otwórz odsyłacz w bieżącej karcie</translation>
</message>
@@ -95,12 +96,12 @@
<message>
<location line="-64"/>
<location line="+16"/>
- <location line="+659"/>
+ <location line="+661"/>
<source>Qt Assistant</source>
<translation>Qt Assistant</translation>
</message>
<message>
- <location line="-675"/>
+ <location line="-677"/>
<source>Failed to load keyword index file
Assistant will not work!</source>
<translation>Nie można wczytać indeksu słów kluczowych
@@ -141,7 +142,7 @@ Plik zostaje pominięty.</translation>
</message>
<message>
<location line="+48"/>
- <location line="+467"/>
+ <location line="+469"/>
<source>Done</source>
<translation>Zrobione</translation>
</message>
@@ -346,7 +347,7 @@ Assistant nie będzie działał!</translation>
<context>
<name>HelpWindow</name>
<message>
- <location filename="../tools/assistant/compat/helpwindow.cpp" line="+67"/>
+ <location filename="../tools/assistant/compat/helpwindow.cpp" line="+97"/>
<source>Help</source>
<translation>Pomoc</translation>
</message>
@@ -396,7 +397,7 @@ Assistant nie będzie działał!</translation>
<context>
<name>Index</name>
<message>
- <location filename="../tools/assistant/compat/index.cpp" line="+355"/>
+ <location filename="../tools/assistant/compat/index.cpp" line="+385"/>
<source>Untitled</source>
<translation>Nienazwany</translation>
</message>
@@ -404,7 +405,7 @@ Assistant nie będzie działał!</translation>
<context>
<name>MainWindow</name>
<message>
- <location filename="../tools/assistant/compat/mainwindow.cpp" line="+73"/>
+ <location filename="../tools/assistant/compat/mainwindow.cpp" line="+103"/>
<source>Sidebar</source>
<translation>Panel</translation>
</message>
@@ -479,22 +480,15 @@ Assistant nie będzie działał!</translation>
<translation>Pokazuje główną stronę wybranego zestawu dokumentacji.</translation>
</message>
<message>
- <location line="+35"/>
<source>Open Source Edition</source>
- <translation>Wydanie Open Source</translation>
+ <translation type="obsolete">Wydanie Open Source</translation>
</message>
<message>
- <location line="+1"/>
<source>This version of Qt Assistant is part of the Qt Open Source Edition, for use in the development of Open Source applications. Qt is a comprehensive C++ framework for cross-platform application development.</source>
- <translation>Ta wersja Qt Assistant jest częścią wydania Qt Open Source, przeznaczonego do tworzenia aplikacji Open Source. Qt zawiera obszerny zestaw bibliotek wykorzystywanych do pisania przenośnych aplikacji.</translation>
- </message>
- <message>
- <location line="+16"/>
- <source>This program is licensed to you under the terms of the Qt Commercial License Agreement. For details, see the file LICENSE that came with this software distribution.</source>
- <translation type="unfinished"></translation>
+ <translation type="obsolete">Ta wersja Qt Assistant jest częścią wydania Qt Open Source, przeznaczonego do tworzenia aplikacji Open Source. Qt zawiera obszerny zestaw bibliotek wykorzystywanych do pisania przenośnych aplikacji.</translation>
</message>
<message>
- <location line="+15"/>
+ <location line="+49"/>
<location line="+1"/>
<source>Qt Assistant</source>
<translation>Qt Assistant</translation>
@@ -865,14 +859,8 @@ Assistant nie będzie działał!</translation>
<translation>Ustawienia czcionki...</translation>
</message>
<message>
- <location filename="../tools/assistant/compat/mainwindow.cpp" line="-492"/>
<source>You need a commercial Qt license for development of proprietary (closed source) applications. Please see &lt;a href=&quot;http://qtsoftware.com/company/model&quot;&gt;qtsoftware.com/company/model&lt;/a&gt; for an overview of Qt licensing.</source>
- <translation>Aby móc tworzyć przy pomocy Qt własne aplikacje bez publikowania kodu (closed source) potrzebujesz wydania komercyjnego. Opis sposobów licencjonowania Qt znajduje się na stronie &lt;a href=&quot;http://qtsoftware.com/company/model.html&quot;&gt;qtsoftware.com/company/model.html&lt;/a&gt;.</translation>
- </message>
- <message>
- <location line="+6"/>
- <source>This program is licensed to you under the terms of the Qt %1 License Agreement. For details, see the license file that came with this software distribution.</source>
- <translation type="unfinished"></translation>
+ <translation type="obsolete">Aby móc tworzyć przy pomocy Qt własne aplikacje bez publikowania kodu (closed source) potrzebujesz wydania komercyjnego. Opis sposobów licencjonowania Qt znajduje się na stronie &lt;a href=&quot;http://qtsoftware.com/company/model.html&quot;&gt;qtsoftware.com/company/model.html&lt;/a&gt;.</translation>
</message>
</context>
<context>
@@ -882,7 +870,7 @@ Assistant nie będzie działał!</translation>
<translation type="obsolete">Qt Assistant Trolltech&apos;a</translation>
</message>
<message>
- <location filename="../tools/assistant/compat/config.cpp" line="+320"/>
+ <location filename="../tools/assistant/compat/config.cpp" line="+350"/>
<source>Qt Assistant by Nokia</source>
<translation type="unfinished"></translation>
</message>
@@ -890,7 +878,7 @@ Assistant nie będzie działał!</translation>
<context>
<name>TabbedBrowser</name>
<message>
- <location filename="../tools/assistant/compat/tabbedbrowser.cpp" line="+119"/>
+ <location filename="../tools/assistant/compat/tabbedbrowser.cpp" line="+149"/>
<source>...</source>
<translation>...</translation>
</message>
@@ -958,7 +946,7 @@ Assistant nie będzie działał!</translation>
<context>
<name>TopicChooser</name>
<message>
- <location filename="../tools/assistant/compat/topicchooser.cpp" line="+26"/>
+ <location filename="../tools/assistant/compat/topicchooser.cpp" line="+56"/>
<source>Choose a topic for &lt;b&gt;%1&lt;/b&gt;</source>
<translation>Wybierz temat dla &lt;b&gt;%1&lt;/b&gt;</translation>
</message>
diff --git a/translations/assistant_adp_untranslated.ts b/translations/assistant_adp_untranslated.ts
index 52cc26c..e6c927a 100644
--- a/translations/assistant_adp_untranslated.ts
+++ b/translations/assistant_adp_untranslated.ts
@@ -1,9 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS><TS version="2.0">
+<!DOCTYPE TS>
+<TS version="2.0">
<context>
<name>AssistantServer</name>
<message>
- <location filename="../tools/assistant/compat/main.cpp" line="+195"/>
+ <location filename="../tools/assistant/compat/main.cpp" line="+225"/>
<source>Qt Assistant</source>
<translation type="unfinished"></translation>
</message>
@@ -16,7 +17,7 @@
<context>
<name>FontPanel</name>
<message>
- <location filename="../tools/shared/fontpanel/fontpanel.cpp" line="+33"/>
+ <location filename="../tools/shared/fontpanel/fontpanel.cpp" line="+63"/>
<source>Font</source>
<translation type="unfinished"></translation>
</message>
@@ -44,7 +45,7 @@
<context>
<name>FontSettingsDialog</name>
<message>
- <location filename="../tools/assistant/compat/fontsettingsdialog.cpp" line="+33"/>
+ <location filename="../tools/assistant/compat/fontsettingsdialog.cpp" line="+63"/>
<source>Font Settings</source>
<translation type="unfinished"></translation>
</message>
@@ -77,14 +78,14 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../tools/assistant/compat/helpdialog.cpp" line="+345"/>
+ <location filename="../tools/assistant/compat/helpdialog.cpp" line="+376"/>
<location line="+16"/>
- <location line="+659"/>
+ <location line="+661"/>
<source>Qt Assistant</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-772"/>
+ <location line="-774"/>
<source>Open Link in Current Tab</source>
<translation type="unfinished"></translation>
</message>
@@ -143,7 +144,7 @@ Skipping file.</source>
</message>
<message>
<location line="+48"/>
- <location line="+467"/>
+ <location line="+469"/>
<source>Done</source>
<translation type="unfinished"></translation>
</message>
@@ -340,7 +341,7 @@ Assistant will not work!</source>
<context>
<name>HelpWindow</name>
<message>
- <location filename="../tools/assistant/compat/helpwindow.cpp" line="+67"/>
+ <location filename="../tools/assistant/compat/helpwindow.cpp" line="+97"/>
<source>Help</source>
<translation type="unfinished"></translation>
</message>
@@ -389,7 +390,7 @@ Assistant will not work!</source>
<context>
<name>Index</name>
<message>
- <location filename="../tools/assistant/compat/index.cpp" line="+355"/>
+ <location filename="../tools/assistant/compat/index.cpp" line="+385"/>
<source>Untitled</source>
<translation type="unfinished"></translation>
</message>
@@ -457,7 +458,7 @@ Assistant will not work!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../tools/assistant/compat/mainwindow.cpp" line="+158"/>
+ <location filename="../tools/assistant/compat/mainwindow.cpp" line="+188"/>
<source>Ctrl+T</source>
<translation type="unfinished"></translation>
</message>
@@ -472,17 +473,7 @@ Assistant will not work!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+130"/>
- <source>You need a commercial Qt license for development of proprietary (closed source) applications. Please see &lt;a href=&quot;http://qtsoftware.com/company/model&quot;&gt;qtsoftware.com/company/model&lt;/a&gt; for an overview of Qt licensing.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location line="+6"/>
- <source>This program is licensed to you under the terms of the Qt %1 License Agreement. For details, see the license file that came with this software distribution.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location line="+21"/>
+ <location line="+139"/>
<location line="+1"/>
<source>Qt Assistant</source>
<translation type="unfinished"></translation>
@@ -493,7 +484,7 @@ Assistant will not work!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../tools/assistant/compat/mainwindow.cpp" line="-245"/>
+ <location filename="../tools/assistant/compat/mainwindow.cpp" line="-227"/>
<source>Sidebar</source>
<translation type="unfinished"></translation>
</message>
@@ -553,22 +544,7 @@ Assistant will not work!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+35"/>
- <source>Open Source Edition</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location line="+1"/>
- <source>This version of Qt Assistant is part of the Qt Open Source Edition, for use in the development of Open Source applications. Qt is a comprehensive C++ framework for cross-platform application development.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location line="+16"/>
- <source>This program is licensed to you under the terms of the Qt Commercial License Agreement. For details, see the file LICENSE that came with this software distribution.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location line="+35"/>
+ <location line="+69"/>
<source>Failed to open about application contents in file: &apos;%1&apos;</source>
<translation type="unfinished"></translation>
</message>
@@ -867,7 +843,7 @@ Assistant will not work!</source>
<context>
<name>QObject</name>
<message>
- <location filename="../tools/assistant/compat/config.cpp" line="+320"/>
+ <location filename="../tools/assistant/compat/config.cpp" line="+350"/>
<source>Qt Assistant by Nokia</source>
<translation type="unfinished"></translation>
</message>
@@ -875,7 +851,7 @@ Assistant will not work!</source>
<context>
<name>TabbedBrowser</name>
<message>
- <location filename="../tools/assistant/compat/tabbedbrowser.cpp" line="+119"/>
+ <location filename="../tools/assistant/compat/tabbedbrowser.cpp" line="+149"/>
<source>...</source>
<translation type="unfinished"></translation>
</message>
@@ -943,7 +919,7 @@ Assistant will not work!</source>
<context>
<name>TopicChooser</name>
<message>
- <location filename="../tools/assistant/compat/topicchooser.cpp" line="+26"/>
+ <location filename="../tools/assistant/compat/topicchooser.cpp" line="+56"/>
<source>Choose a topic for &lt;b&gt;%1&lt;/b&gt;</source>
<translation type="unfinished"></translation>
</message>
diff --git a/translations/assistant_adp_zh_CN.ts b/translations/assistant_adp_zh_CN.ts
index 656a598..62354b3 100644
--- a/translations/assistant_adp_zh_CN.ts
+++ b/translations/assistant_adp_zh_CN.ts
@@ -4,7 +4,7 @@
<context>
<name>AssistantServer</name>
<message>
- <location filename="../tools/assistant/compat/main.cpp" line="+195"/>
+ <location filename="../tools/assistant/compat/main.cpp" line="+225"/>
<source>Qt Assistant</source>
<translation>Qt 助手</translation>
</message>
@@ -17,7 +17,7 @@
<context>
<name>FontPanel</name>
<message>
- <location filename="../tools/shared/fontpanel/fontpanel.cpp" line="+33"/>
+ <location filename="../tools/shared/fontpanel/fontpanel.cpp" line="+63"/>
<source>Font</source>
<translation>字体</translation>
</message>
@@ -45,7 +45,7 @@
<context>
<name>FontSettingsDialog</name>
<message>
- <location filename="../tools/assistant/compat/fontsettingsdialog.cpp" line="+33"/>
+ <location filename="../tools/assistant/compat/fontsettingsdialog.cpp" line="+63"/>
<source>Font Settings</source>
<translation>字体设置</translation>
</message>
@@ -73,7 +73,7 @@
<context>
<name>HelpDialog</name>
<message>
- <location filename="../tools/assistant/compat/helpdialog.cpp" line="+248"/>
+ <location filename="../tools/assistant/compat/helpdialog.cpp" line="+279"/>
<source>Open Link in Current Tab</source>
<translation>在当å‰æ ‡ç­¾é¡µæ‰“开链接</translation>
</message>
@@ -96,12 +96,12 @@
<message>
<location line="-64"/>
<location line="+16"/>
- <location line="+659"/>
+ <location line="+661"/>
<source>Qt Assistant</source>
<translation>Qt 助手</translation>
</message>
<message>
- <location line="-675"/>
+ <location line="-677"/>
<source>Failed to load keyword index file
Assistant will not work!</source>
<translation>加载关键è¯ç´¢å¼•æ–‡ä»¶å¤±è´¥
@@ -142,7 +142,7 @@ Skipping file.</source>
</message>
<message>
<location line="+48"/>
- <location line="+467"/>
+ <location line="+469"/>
<source>Done</source>
<translation>完æˆ</translation>
</message>
@@ -344,7 +344,7 @@ Assistant will not work!</source>
<context>
<name>HelpWindow</name>
<message>
- <location filename="../tools/assistant/compat/helpwindow.cpp" line="+67"/>
+ <location filename="../tools/assistant/compat/helpwindow.cpp" line="+97"/>
<source>Help</source>
<translation>帮助</translation>
</message>
@@ -394,7 +394,7 @@ Assistant will not work!</source>
<context>
<name>Index</name>
<message>
- <location filename="../tools/assistant/compat/index.cpp" line="+355"/>
+ <location filename="../tools/assistant/compat/index.cpp" line="+385"/>
<source>Untitled</source>
<translation>未命åçš„</translation>
</message>
@@ -402,7 +402,7 @@ Assistant will not work!</source>
<context>
<name>MainWindow</name>
<message>
- <location filename="../tools/assistant/compat/mainwindow.cpp" line="+73"/>
+ <location filename="../tools/assistant/compat/mainwindow.cpp" line="+103"/>
<source>Sidebar</source>
<translation>侧æ </translation>
</message>
@@ -477,22 +477,19 @@ Assistant will not work!</source>
<translation>显示一个指定文档集的主页é¢ã€‚</translation>
</message>
<message>
- <location line="+35"/>
<source>Open Source Edition</source>
- <translation>å¼€æºç‰ˆæœ¬</translation>
+ <translation type="obsolete">å¼€æºç‰ˆæœ¬</translation>
</message>
<message>
- <location line="+1"/>
<source>This version of Qt Assistant is part of the Qt Open Source Edition, for use in the development of Open Source applications. Qt is a comprehensive C++ framework for cross-platform application development.</source>
- <translation>这个版本的 Qt 助手是 Qt å¼€æºç‰ˆæœ¬çš„一部分,用于开å‘å¼€æºåº”用程åºã€‚Qt 是一个用于跨平å°åº”用程åºå¼€å‘çš„ç»¼åˆ C++ 框架。</translation>
+ <translation type="obsolete">这个版本的 Qt 助手是 Qt å¼€æºç‰ˆæœ¬çš„一部分,用于开å‘å¼€æºåº”用程åºã€‚Qt 是一个用于跨平å°åº”用程åºå¼€å‘çš„ç»¼åˆ C++ 框架。</translation>
</message>
<message>
- <location line="+16"/>
<source>This program is licensed to you under the terms of the Qt Commercial License Agreement. For details, see the file LICENSE that came with this software distribution.</source>
- <translation>我们已ç»å…许您在 Qt 商业许å¯å议下使用本程åºã€‚有关细节,请阅读本软件å‘行中所带的 LICENSE 文件。</translation>
+ <translation type="obsolete">我们已ç»å…许您在 Qt 商业许å¯å议下使用本程åºã€‚有关细节,请阅读本软件å‘行中所带的 LICENSE 文件。</translation>
</message>
<message>
- <location line="+15"/>
+ <location line="+49"/>
<location line="+1"/>
<source>Qt Assistant</source>
<translation>Qt 助手</translation>
@@ -863,14 +860,12 @@ Assistant will not work!</source>
<translation>字体设置...</translation>
</message>
<message>
- <location filename="../tools/assistant/compat/mainwindow.cpp" line="-492"/>
<source>You need a commercial Qt license for development of proprietary (closed source) applications. Please see &lt;a href=&quot;http://qtsoftware.com/company/model&quot;&gt;qtsoftware.com/company/model&lt;/a&gt; for an overview of Qt licensing.</source>
- <translation>å¼€å‘商业(闭æºï¼‰åº”用程åºï¼Œä½ éœ€è¦å•†ä¸š Qt 许å¯ã€‚对于 Qt 许å¯çš„概览,请å‚考&lt;a href=&quot;http://qtsoftware.com/company/model&quot;&gt;qtsoftware.com/company/model&lt;/a&gt;。</translation>
+ <translation type="obsolete">å¼€å‘商业(闭æºï¼‰åº”用程åºï¼Œä½ éœ€è¦å•†ä¸š Qt 许å¯ã€‚对于 Qt 许å¯çš„概览,请å‚考&lt;a href=&quot;http://qtsoftware.com/company/model&quot;&gt;qtsoftware.com/company/model&lt;/a&gt;。</translation>
</message>
<message>
- <location line="+6"/>
<source>This program is licensed to you under the terms of the Qt %1 License Agreement. For details, see the license file that came with this software distribution.</source>
- <translation>我们已ç»å…许您在 Qt %1 许å¯å议下使用本程åºã€‚有关细节,请阅读本软件å‘行中所带的许å¯å议文件。</translation>
+ <translation type="obsolete">我们已ç»å…许您在 Qt %1 许å¯å议下使用本程åºã€‚有关细节,请阅读本软件å‘行中所带的许å¯å议文件。</translation>
</message>
</context>
<context>
@@ -880,7 +875,7 @@ Assistant will not work!</source>
<translation type="obsolete">Trolltech 的 Qt 助手</translation>
</message>
<message>
- <location filename="../tools/assistant/compat/config.cpp" line="+320"/>
+ <location filename="../tools/assistant/compat/config.cpp" line="+350"/>
<source>Qt Assistant by Nokia</source>
<translation>Qt助手 - Nokia</translation>
</message>
@@ -888,7 +883,7 @@ Assistant will not work!</source>
<context>
<name>TabbedBrowser</name>
<message>
- <location filename="../tools/assistant/compat/tabbedbrowser.cpp" line="+119"/>
+ <location filename="../tools/assistant/compat/tabbedbrowser.cpp" line="+149"/>
<source>...</source>
<translation>...</translation>
</message>
@@ -956,7 +951,7 @@ Assistant will not work!</source>
<context>
<name>TopicChooser</name>
<message>
- <location filename="../tools/assistant/compat/topicchooser.cpp" line="+26"/>
+ <location filename="../tools/assistant/compat/topicchooser.cpp" line="+56"/>
<source>Choose a topic for &lt;b&gt;%1&lt;/b&gt;</source>
<translation>为&lt;b&gt;%1&lt;/b&gt;选择一个主题</translation>
</message>
diff --git a/translations/assistant_adp_zh_TW.ts b/translations/assistant_adp_zh_TW.ts
index ced339e..7fd1738 100644
--- a/translations/assistant_adp_zh_TW.ts
+++ b/translations/assistant_adp_zh_TW.ts
@@ -1,14 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS><TS version="1.1" language="zh_TW">
-<defaultcodec></defaultcodec>
+<!DOCTYPE TS>
+<TS version="2.0" language="zh_TW">
<context>
<name>AssistantServer</name>
<message>
- <location filename="../tools/assistant/compat/main.cpp" line="195"/>
+ <location filename="../tools/assistant/compat/main.cpp" line="+225"/>
<source>Qt Assistant</source>
<translation>Qt å°å¹«æ‰‹</translation>
</message>
<message>
+ <location line="+1"/>
<source>Failed to bind to port %1</source>
<translation>無法çµåˆé€£æŽ¥åŸ  %1</translation>
</message>
@@ -16,23 +17,27 @@
<context>
<name>FontPanel</name>
<message>
- <location filename="../tools/shared/fontpanel/fontpanel.cpp" line="33"/>
+ <location filename="../tools/shared/fontpanel/fontpanel.cpp" line="+63"/>
<source>Font</source>
<translation>å­—åž‹</translation>
</message>
<message>
+ <location line="+11"/>
<source>&amp;Writing system</source>
<translation>寫入系統(&amp;W)</translation>
</message>
<message>
+ <location line="+3"/>
<source>&amp;Family</source>
<translation>家æ—(&amp;F)</translation>
</message>
<message>
+ <location line="+4"/>
<source>&amp;Style</source>
<translation>風格(&amp;S)</translation>
</message>
<message>
+ <location line="+4"/>
<source>&amp;Point size</source>
<translation>點大å°(&amp;P)</translation>
</message>
@@ -40,23 +45,27 @@
<context>
<name>FontSettingsDialog</name>
<message>
- <location filename="../tools/assistant/compat/fontsettingsdialog.cpp" line="33"/>
+ <location filename="../tools/assistant/compat/fontsettingsdialog.cpp" line="+63"/>
<source>Font Settings</source>
<translation>字型設定</translation>
</message>
<message>
+ <location line="+7"/>
<source>Font settings for:</source>
<translation>字型設定用於:</translation>
</message>
<message>
+ <location line="+4"/>
<source>Browser</source>
<translation>ç€è¦½å™¨</translation>
</message>
<message>
+ <location line="+1"/>
<source>Application</source>
<translation>應用程å¼</translation>
</message>
<message>
+ <location line="+6"/>
<source>Use custom settings</source>
<translation>使用者自訂設定</translation>
</message>
@@ -64,211 +73,269 @@
<context>
<name>HelpDialog</name>
<message>
+ <location filename="../tools/assistant/compat/helpdialog.ui"/>
<source>Con&amp;tents</source>
<translation>內容(&amp;T)</translation>
</message>
<message>
+ <location filename="../tools/assistant/compat/helpdialog.cpp" line="+376"/>
+ <location line="+16"/>
+ <location line="+661"/>
<source>Qt Assistant</source>
<translation>Qt å°å¹«æ‰‹</translation>
</message>
<message>
+ <location line="-774"/>
<source>Open Link in Current Tab</source>
<translation>在目å‰çš„分é é–‹å•Ÿé€£çµ</translation>
</message>
<message>
+ <location line="+3"/>
<source>Open Link in New Window</source>
<translation>在新視窗開啟連çµ</translation>
</message>
<message>
+ <location line="+3"/>
<source>Open Link in New Tab</source>
<translation>在新分é é–‹å•Ÿé€£çµ</translation>
</message>
<message>
+ <location line="+73"/>
+ <location line="+82"/>
<source>Prepare...</source>
<translation>準備中...</translation>
</message>
<message>
+ <location line="-64"/>
<source>Failed to load keyword index file
Assistant will not work!</source>
<translation>無法載入關éµå­—索引檔
å°å¹«æ‰‹å°‡ç„¡æ³•é‹ä½œ!</translation>
</message>
<message>
+ <location line="+17"/>
<source>Cannot open the index file %1</source>
<translation>無法開啟索引檔 %1</translation>
</message>
<message>
+ <location line="+58"/>
+ <location line="+124"/>
+ <location line="+8"/>
<source>Warning</source>
<translation>警告</translation>
</message>
<message>
+ <location line="-131"/>
+ <location line="+124"/>
<source>Documentation file %1 does not exist!
Skipping file.</source>
<translation>文件檔 %1 ä¸å­˜åœ¨
將跳éŽæ­¤æª”案。</translation>
</message>
<message>
+ <location line="-112"/>
+ <location line="+133"/>
<source>Parse Error</source>
<translation>剖æžéŒ¯èª¤</translation>
</message>
<message>
+ <location line="-13"/>
<source>Documentation file %1 is not compatible!
Skipping file.</source>
<translation>文件檔 %1 ä¸ç›¸å®¹
將跳éŽæ­¤æª”案。</translation>
</message>
<message>
+ <location line="+48"/>
+ <location line="+469"/>
<source>Done</source>
<translation>完æˆ</translation>
</message>
<message>
+ <location line="-47"/>
<source>Failed to save fulltext search index
Assistant will not work!</source>
<translation>無法儲存全文檢索æœå°‹ç´¢å¼•ã€‚
å°å¹«æ‰‹å°‡ç„¡æ³•é‹ä½œ!</translation>
</message>
<message>
+ <location line="+29"/>
<source>Indexing files...</source>
<translation>建立檔案索引中...</translation>
</message>
<message>
+ <location line="+15"/>
<source>Reading dictionary...</source>
<translation>讀å–字典中...</translation>
</message>
<message>
+ <location line="+46"/>
+ <location line="+9"/>
<source>Full Text Search</source>
<translation>全文檢索</translation>
</message>
<message>
+ <location line="-8"/>
<source>Using a wildcard within phrases is not allowed.</source>
<translation>在片語中ä¸èƒ½ä½¿ç”¨è¬ç”¨å­—元。</translation>
</message>
<message>
+ <location line="+9"/>
<source>The closing quotation mark is missing.</source>
<translation>沒有關閉引號。</translation>
</message>
<message>
+ <location filename="../tools/assistant/compat/helpdialog.ui"/>
<source>Help</source>
<translation>說明</translation>
</message>
<message>
+ <location/>
<source>&lt;b&gt;Help&lt;/b&gt;&lt;p&gt;Choose the topic you want help on from the contents list, or search the index for keywords.&lt;/p&gt;</source>
<translation>&lt;b&gt;說明&lt;/b&gt;&lt;p&gt;請從內容清單中é¸æ“‡æ‚¨éœ€è¦èªªæ˜Žçš„主題,或是在索引中æœå°‹é—œéµå­—。&lt;/p&gt;</translation>
</message>
<message>
+ <location/>
<source>Displays help topics organized by category, index or bookmarks. Another tab inherits the full text search.</source>
<translation>ä¾åˆ†é¡žã€ç´¢å¼•æˆ–書籤來顯示說明主題。å¦ä¸€å€‹åˆ†é æœƒç¹¼æ‰¿æ­¤å…¨æ–‡æª¢ç´¢ã€‚</translation>
</message>
<message>
+ <location/>
<source>&lt;b&gt;Help topics organized by category.&lt;/b&gt;&lt;p&gt;Double-click an item to see the topics in that category. To view a topic, just double-click it.&lt;/p&gt;</source>
<translation>&lt;b&gt;ä¾é¡žåˆ¥çµ„織說明主題。&lt;/b&gt;&lt;p&gt;雙擊å¯ä»¥æŸ¥çœ‹è©²é¡žåˆ¥ä¸­æœ‰å“ªäº›ä¸»é¡Œã€‚雙擊該主題å¯ä»¥æŸ¥çœ‹å…§å®¹ã€‚&lt;/p&gt;</translation>
</message>
<message>
+ <location/>
<source>column 1</source>
<translation>欄 1</translation>
</message>
<message>
+ <location/>
<source>&amp;Index</source>
<translation>索引(&amp;I)</translation>
</message>
<message>
+ <location/>
<source>&amp;Look For:</source>
<translation>æœå°‹(&amp;L):</translation>
</message>
<message>
+ <location/>
<source>Enter keyword</source>
<translation>輸入關éµå­—</translation>
</message>
<message>
+ <location/>
<source>&lt;b&gt;Enter a keyword.&lt;/b&gt;&lt;p&gt;The list will select an item that matches the entered string best.&lt;/p&gt;</source>
<translation>&lt;b&gt;輸入關éµå­—。&lt;/b&gt;&lt;p&gt;此清單å¯ä»¥é¸æ“‡æœ€èƒ½ç¬¦åˆè¼¸å…¥å­—串的項目。&lt;/p&gt;</translation>
</message>
<message>
+ <location/>
<source>&lt;b&gt;List of available help topics.&lt;/b&gt;&lt;p&gt;Double-click on an item to open its help page. If more than one is found, you must specify which page you want.&lt;/p&gt;</source>
<translation>&lt;b&gt;å¯ç”¨èªªæ˜Žä¸»é¡Œæ¸…單。&lt;/b&gt;&lt;p&gt;雙擊å¯ä»¥é–‹å•Ÿè©²èªªæ˜Žé é¢ã€‚如果找到一個以上,您必須指定您è¦çœ‹å“ªä¸€å€‹é é¢ã€‚&lt;/p&gt;</translation>
</message>
<message>
+ <location/>
<source>&amp;Bookmarks</source>
<translation>書籤(&amp;B)</translation>
</message>
<message>
+ <location/>
<source>Displays the list of bookmarks.</source>
<translation>顯示書籤的清單。</translation>
</message>
<message>
+ <location/>
<source>Add new bookmark</source>
<translation>新增書籤</translation>
</message>
<message>
+ <location/>
<source>Add the currently displayed page as a new bookmark.</source>
<translation>將目å‰é¡¯ç¤ºçš„é é¢æ–°å¢žåˆ°æ›¸ç±¤ä¸­ã€‚</translation>
</message>
<message>
+ <location/>
<source>&amp;New</source>
<translation>新增(&amp;N)</translation>
</message>
<message>
+ <location/>
<source>Delete bookmark</source>
<translation>刪除書籤</translation>
</message>
<message>
+ <location/>
<source>Delete the selected bookmark.</source>
<translation>刪除é¸å–的書籤。</translation>
</message>
<message>
+ <location/>
<source>&amp;Delete</source>
<translation>刪除(&amp;D)</translation>
</message>
<message>
+ <location/>
<source>&amp;Search</source>
<translation>æœå°‹(&amp;S)</translation>
</message>
<message>
+ <location/>
<source>Searching f&amp;or:</source>
<translation>æœå°‹å…§å®¹(&amp;O):</translation>
</message>
<message>
+ <location/>
<source>Enter searchword(s).</source>
<translation>請輸入æœå°‹é—œéµå­—詞。</translation>
</message>
<message>
+ <location/>
<source>&lt;b&gt;Enter search word(s).&lt;/b&gt;&lt;p&gt;Enter here the word(s) you are looking for. The words may contain wildcards (*). For a sequence of words quote them.&lt;/p&gt;</source>
<translation>&lt;b&gt;輸入æœå°‹é—œéµå­—詞。&lt;/b&gt;&lt;p&gt;在此輸入您è¦æœå°‹çš„é—œéµå­—詞。å¯ä»¥ä½¿ç”¨è¬ç”¨å­—å…ƒ (*)。如果是一個片語,請用引號括起來。&lt;/p&gt;</translation>
</message>
<message>
+ <location/>
<source>&lt;b&gt;Found documents&lt;/b&gt;&lt;p&gt;This list contains all found documents from the last search. The documents are ordered, i.e. the first document has the most matches.&lt;/p&gt;</source>
<translation>&lt;b&gt;找到的文件&lt;/b&gt;&lt;p&gt;這放清單包å«äº†æ‰€æœ‰ä¸Šæ¬¡æœå°‹æ‰¾åˆ°çš„文件。文件會ä¾ç¬¦åˆç¨‹åº¦æŽ’åºã€‚&lt;/p&gt;</translation>
</message>
<message>
+ <location/>
<source>Found &amp;Documents:</source>
<translation>找到的文件(&amp;D):</translation>
</message>
<message>
+ <location/>
<source>Display the help page.</source>
<translation>顯示說明é é¢ã€‚</translation>
</message>
<message>
+ <location/>
<source>Display the help page for the full text search.</source>
<translation>顯示全文檢索的說明é é¢ã€‚</translation>
</message>
<message>
+ <location/>
<source>He&amp;lp</source>
<translation>說明(&amp;L)</translation>
</message>
<message>
+ <location/>
<source>Start searching.</source>
<translation>開始æœå°‹ã€‚</translation>
</message>
<message>
+ <location/>
<source>Pressing this button starts the search.</source>
<translation>按下此按éµé–‹å§‹æœå°‹ã€‚</translation>
</message>
<message>
+ <location/>
<source>Preparing...</source>
<translation>準備中...</translation>
</message>
<message numerus="yes">
- <location filename="../tools/assistant/compat/helpdialog.cpp" line="7"/>
+ <location filename="../tools/assistant/compat/helpdialog.cpp" line="+7"/>
<source>%n document(s) found.</source>
<translation>
<numerusform>找到 %n 個文件。</numerusform>
@@ -278,41 +345,49 @@ Assistant will not work!</source>
<context>
<name>HelpWindow</name>
<message>
- <location filename="../tools/assistant/compat/helpwindow.cpp" line="67"/>
+ <location filename="../tools/assistant/compat/helpwindow.cpp" line="+97"/>
<source>Help</source>
<translation>說明</translation>
</message>
<message>
- <source>Open Link in New Window<byte value="x9"/>Shift+LMB</source>
- <translation>在新視窗開啟連çµ<byte value="x9"/>Shift+滑鼠左éµ</translation>
+ <location line="+93"/>
+ <source>Open Link in New Window Shift+LMB</source>
+ <translation>åœ¨æ–°è¦–çª—é–‹å•Ÿé€£çµ Shift+滑鼠左éµ</translation>
</message>
<message>
+ <location line="-92"/>
<source>Unable to launch web browser.
</source>
<translation>無法啟動ç€è¦½å™¨ã€‚
</translation>
</message>
<message>
+ <location line="+1"/>
<source>OK</source>
<translation>確定</translation>
</message>
<message>
+ <location line="+27"/>
<source>Failed to open link: &apos;%1&apos;</source>
<translation>無法開啟連çµï¼š%1</translation>
</message>
<message>
+ <location line="+1"/>
<source>&lt;div align=&quot;center&quot;&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;div align=&quot;center&quot;&gt;&lt;h1&gt;找ä¸åˆ°è©²é é¢&lt;/h1&gt;&lt;br&gt;&lt;h3&gt;%1&lt;/h3&gt;&lt;/div&gt;</translation>
</message>
<message>
+ <location line="+2"/>
<source>Error...</source>
<translation>錯誤...</translation>
</message>
<message>
+ <location line="+59"/>
<source>Open Link in New Tab</source>
<translation>在新分é é–‹å•Ÿé€£çµ</translation>
</message>
<message>
+ <location line="-3"/>
<source>Copy &amp;Link Location</source>
<translation>複製連çµä½ç½®(&amp;L)</translation>
</message>
@@ -320,7 +395,7 @@ Assistant will not work!</source>
<context>
<name>Index</name>
<message>
- <location filename="../tools/assistant/compat/index.cpp" line="355"/>
+ <location filename="../tools/assistant/compat/index.cpp" line="+385"/>
<source>Untitled</source>
<translation>未命å</translation>
</message>
@@ -332,378 +407,466 @@ Assistant will not work!</source>
<translation type="obsolete">Qt å°å¹«æ‰‹ï¼ŒTrolltech å…¬å¸æä¾›</translation>
</message>
<message>
+ <location filename="../tools/assistant/compat/mainwindow.ui"/>
<source>Toolbar</source>
<translation>工具列</translation>
</message>
<message>
+ <location/>
<source>&amp;Print...</source>
<translation>列å°(&amp;P)...</translation>
</message>
<message>
+ <location/>
<source>E&amp;xit</source>
<translation>離開(&amp;X)</translation>
</message>
<message>
+ <location/>
<source>&amp;Copy</source>
<translation>複製(&amp;C)</translation>
</message>
<message>
+ <location/>
<source>&amp;Find in Text...</source>
<translation>在文字中尋找(&amp;F)...</translation>
</message>
<message>
+ <location/>
<source>&amp;Home</source>
<translation>首é (&amp;H)</translation>
</message>
<message>
+ <location/>
<source>&amp;Previous</source>
<translation>å‰ä¸€å€‹(&amp;P)</translation>
</message>
<message>
+ <location/>
<source>&amp;Next</source>
<translation>下一個(&amp;N)</translation>
</message>
<message>
+ <location/>
<source>About Qt</source>
<translation>關於 Qt</translation>
</message>
<message>
+ <location/>
<source>Zoom &amp;in</source>
<translation>放大(&amp;I)</translation>
</message>
<message>
+ <location/>
<source>Zoom &amp;out</source>
<translation>縮å°(&amp;O)</translation>
</message>
<message>
+ <location/>
<source>New Window</source>
<translation>新視窗</translation>
</message>
<message>
- <location filename="../tools/assistant/compat/mainwindow.cpp" line="158"/>
+ <location filename="../tools/assistant/compat/mainwindow.cpp" line="+188"/>
<source>Ctrl+T</source>
<translation>Ctrl+T</translation>
</message>
<message>
+ <location line="+1"/>
<source>Ctrl+I</source>
<translation>Ctrl+I</translation>
</message>
<message>
+ <location line="+1"/>
<source>Ctrl+B</source>
<translation>Ctrl+B</translation>
</message>
<message>
+ <location line="+139"/>
+ <location line="+1"/>
<source>Qt Assistant</source>
<translation>Qt å°å¹«æ‰‹</translation>
</message>
<message>
+ <location filename="../tools/assistant/compat/mainwindow.ui"/>
<source>&amp;Add Bookmark</source>
<translation>新增書籤(&amp;A)</translation>
</message>
<message>
+ <location filename="../tools/assistant/compat/mainwindow.cpp" line="-227"/>
<source>Sidebar</source>
<translation>邊列</translation>
</message>
<message>
+ <location line="+18"/>
<source>&amp;Window</source>
<translation>視窗(&amp;W)</translation>
</message>
<message>
+ <location line="+2"/>
<source>Minimize</source>
<translation>最å°åŒ–</translation>
</message>
<message>
+ <location line="+1"/>
<source>Ctrl+M</source>
<translation>Ctrl+M</translation>
</message>
<message>
+ <location line="+34"/>
<source>Initializing Qt Assistant...</source>
<translation>åˆå§‹åŒ– Qt å°å¹«æ‰‹ä¸­...</translation>
</message>
<message>
+ <location line="+26"/>
<source>SHIFT+CTRL+=</source>
<translation>SHIFT+CTRL+=</translation>
</message>
<message>
+ <location line="+7"/>
<source>Ctrl+S</source>
<translation>Ctrl+S</translation>
</message>
<message>
+ <location filename="../tools/assistant/compat/mainwindow.ui"/>
<source>Ctrl+W</source>
<translation>Ctrl+W</translation>
</message>
<message>
- <location filename="../tools/assistant/compat/mainwindow.cpp" line="1"/>
+ <location filename="../tools/assistant/compat/mainwindow.cpp" line="+1"/>
<source>Ctrl+]</source>
<translation>Ctrl+]</translation>
</message>
<message>
+ <location line="+1"/>
<source>Ctrl+[</source>
<translation>Ctrl+[</translation>
</message>
<message>
+ <location line="+7"/>
<source>Views</source>
<translation>檢視</translation>
</message>
<message>
+ <location line="+80"/>
<source>Displays the main page of a specific documentation set.</source>
<translation>顯示指定文件集的主é é¢ã€‚</translation>
</message>
<message>
<source>Open Source Edition</source>
- <translation>開放æºç¢¼ç‰ˆæœ¬</translation>
+ <translation type="obsolete">開放æºç¢¼ç‰ˆæœ¬</translation>
</message>
<message>
<source>This version of Qt Assistant is part of the Qt Open Source Edition, for use in the development of Open Source applications. Qt is a comprehensive C++ framework for cross-platform application development.</source>
- <translation>此版本的 Qt å°å¹«æ‰‹æ˜¯ Qt 開放æºç¢¼ç‰ˆæœ¬çš„一部份,åªèƒ½ç”¨æ–¼é–‹ç™¼é–‹æ”¾æºç¢¼çš„應用程å¼ã€‚Qt 為一個跨平å°çš„,強大的 C++ 應用程å¼é–‹ç™¼æ¡†æž¶ã€‚</translation>
+ <translation type="obsolete">此版本的 Qt å°å¹«æ‰‹æ˜¯ Qt 開放æºç¢¼ç‰ˆæœ¬çš„一部份,åªèƒ½ç”¨æ–¼é–‹ç™¼é–‹æ”¾æºç¢¼çš„應用程å¼ã€‚Qt 為一個跨平å°çš„,強大的 C++ 應用程å¼é–‹ç™¼æ¡†æž¶ã€‚</translation>
</message>
<message>
<source>This program is licensed to you under the terms of the Qt Commercial License Agreement. For details, see the file LICENSE that came with this software distribution.</source>
- <translation>此程å¼ä»¥ Qt 商業授權åŒæ„書(Qt Commerical License Agreement)授權給您。詳情請åƒç…§ LICENSE 檔。</translation>
+ <translation type="obsolete">此程å¼ä»¥ Qt 商業授權åŒæ„書(Qt Commerical License Agreement)授權給您。詳情請åƒç…§ LICENSE 檔。</translation>
</message>
<message>
+ <location line="+69"/>
<source>Failed to open about application contents in file: &apos;%1&apos;</source>
<translation>無法開啟檔案中應用程å¼çš„「關於ã€å…§å®¹ï¼š%1</translation>
</message>
<message>
+ <location line="+201"/>
<source>...</source>
<translation>...</translation>
</message>
<message>
+ <location line="+238"/>
+ <location line="+6"/>
<source>Save Page</source>
<translation>儲存é é¢</translation>
</message>
<message>
+ <location line="+0"/>
<source>Cannot open file for writing!</source>
<translation>無法開啟檔案以寫入!</translation>
</message>
<message>
+ <location filename="../tools/assistant/compat/mainwindow.ui"/>
<source>Qt Assistant by Nokia</source>
<translation>Nokia æ供的 Qt å°å¹«æ‰‹</translation>
</message>
<message>
+ <location/>
<source>Go</source>
<translation>èµ°</translation>
</message>
<message>
+ <location/>
<source>&amp;Help</source>
<translation>說明(&amp;H)</translation>
</message>
<message>
+ <location/>
<source>&amp;File</source>
<translation>檔案(&amp;F)</translation>
</message>
<message>
+ <location/>
<source>Boo&amp;kmarks</source>
<translation>書籤(&amp;K)</translation>
</message>
<message>
+ <location/>
<source>&amp;Go</source>
<translation>èµ°(&amp;G)</translation>
</message>
<message>
+ <location/>
<source>&amp;View</source>
<translation>檢視(&amp;V)</translation>
</message>
<message>
+ <location/>
<source>&amp;Edit</source>
<translation>編輯(&amp;E)</translation>
</message>
<message>
+ <location/>
<source>Print the currently displayed page.</source>
<translation>列å°ç›®å‰é¡¯ç¤ºçš„é é¢ã€‚</translation>
</message>
<message>
+ <location/>
<source>Ctrl+P</source>
<translation>Ctrl+P</translation>
</message>
<message>
+ <location/>
<source>Quit Qt Assistant.</source>
<translation>離開 Qt å°å¹«æ‰‹ã€‚</translation>
</message>
<message>
+ <location/>
<source>Ctrl+Q</source>
<translation>Ctrl+Q</translation>
</message>
<message>
+ <location/>
<source>Copy the selected text to the clipboard.</source>
<translation>複製é¸å–的文字到剪貼簿中。</translation>
</message>
<message>
+ <location/>
<source>Ctrl+C</source>
<translation>Ctrl+C</translation>
</message>
<message>
+ <location/>
<source>Open the Find dialog. Qt Assistant will search the currently displayed page for the text you enter.</source>
<translation>開啟「尋找ã€å°è©±æ¡†ã€‚Qt å°å¹«æ‰‹æœƒåœ¨ç›®å‰é¡¯ç¤ºçš„é é¢ä¸­æœå°‹æ‚¨æ‰€è¼¸å…¥çš„文字。</translation>
</message>
<message>
+ <location/>
<source>Ctrl+F</source>
<translation>Ctrl+F</translation>
</message>
<message>
+ <location/>
<source>Find &amp;Next</source>
<translation>尋找下一筆(&amp;N)</translation>
</message>
<message>
+ <location/>
<source>F3</source>
<translation>F3</translation>
</message>
<message>
+ <location/>
<source>Find &amp;Previous</source>
<translation>尋找上一筆(&amp;P)</translation>
</message>
<message>
+ <location/>
<source>Shift+F3</source>
<translation>Shift+F3</translation>
</message>
<message>
+ <location/>
<source>Go to the home page. Qt Assistant&apos;s home page is the Qt Reference Documentation.</source>
<translation>回到首é ã€‚Qt å°å¹«æ‰‹çš„首é ç‚º Qt åƒè€ƒæ–‡ä»¶ã€‚</translation>
</message>
<message>
+ <location/>
<source>Ctrl+Home</source>
<translation>Ctrl+Home</translation>
</message>
<message>
+ <location/>
<source>Go to the previous page.</source>
<translation>跳到上一é ã€‚</translation>
</message>
<message>
+ <location/>
<source>Alt+Left</source>
<translation>Alt+Left</translation>
</message>
<message>
+ <location/>
<source>Go to the next page.</source>
<translation>跳到下一é ã€‚</translation>
</message>
<message>
+ <location/>
<source>Alt+Right</source>
<translation>Alt+Right</translation>
</message>
<message>
+ <location/>
<source>About Qt Assistant</source>
<translation>關於 Qt å°å¹«æ‰‹</translation>
</message>
<message>
+ <location/>
<source>Display further information about Qt Assistant.</source>
<translation>顯示關於 Qt å°å¹«æ‰‹çš„詳情。</translation>
</message>
<message>
+ <location/>
<source>Zoom in on the document, i.e. increase the font size.</source>
<translation>放大文件,也就是加大字型。</translation>
</message>
<message>
+ <location/>
<source>Ctrl++</source>
<translation>Ctrl++</translation>
</message>
<message>
+ <location/>
<source>Zoom out on the document, i.e. decrease the font size.</source>
<translation>縮å°æ–‡ä»¶ï¼Œä¹Ÿå°±æ˜¯ç¸®å°å­—型。</translation>
</message>
<message>
+ <location/>
<source>Ctrl+-</source>
<translation>Ctrl+-</translation>
</message>
<message>
+ <location/>
<source>Open a new window.</source>
<translation>開啟新視窗。</translation>
</message>
<message>
+ <location/>
<source>Ctrl+N</source>
<translation>Ctrl+N</translation>
</message>
<message>
+ <location/>
<source>&amp;Close</source>
<translation>關閉(&amp;C)</translation>
</message>
<message>
+ <location/>
<source>Close the current window.</source>
<translation>關閉目å‰çš„視窗。</translation>
</message>
<message>
+ <location/>
<source>Add the currently displayed page as a new bookmark.</source>
<translation>將目å‰é¡¯ç¤ºçš„é é¢æ–°å¢žåˆ°æ›¸ç±¤ä¸­ã€‚</translation>
</message>
<message>
+ <location/>
<source>What&apos;s This?</source>
<translation>這是什麼?</translation>
</message>
<message>
+ <location/>
<source>&quot;What&apos;s This?&quot; context sensitive help.</source>
<translation>「這是什麼?ã€å…§æ–‡èªªæ˜Žã€‚</translation>
</message>
<message>
+ <location/>
<source>Shift+F1</source>
<translation>Shift+F1</translation>
</message>
<message>
+ <location/>
<source>Add Tab</source>
<translation>新增分é </translation>
</message>
<message>
+ <location/>
<source>Ctrl+Alt+N</source>
<translation>Ctrl+Alt+N</translation>
</message>
<message>
+ <location/>
<source>Next Tab</source>
<translation>下一個分é </translation>
</message>
<message>
+ <location/>
<source>Ctrl+Alt+Right</source>
<translation>Ctrl+Alt+Right</translation>
</message>
<message>
+ <location/>
<source>Previous Tab</source>
<translation>å‰ä¸€å€‹åˆ†é </translation>
</message>
<message>
+ <location/>
<source>Ctrl+Alt+Left</source>
<translation>Ctrl+Alt+Left</translation>
</message>
<message>
+ <location/>
<source>Close Tab</source>
<translation>關閉分é </translation>
</message>
<message>
+ <location/>
<source>Ctrl+Alt+Q</source>
<translation>Ctrl+Alt+Q</translation>
</message>
<message>
+ <location/>
<source>Qt Assistant Manual</source>
<translation>Qt å°å¹«æ‰‹æ‰‹å†Š</translation>
</message>
<message>
+ <location/>
<source>F1</source>
<translation>F1</translation>
</message>
<message>
+ <location/>
<source>Save Page As...</source>
<translation>å¦å­˜é é¢ç‚º...</translation>
</message>
<message>
+ <location/>
<source>Ctrl+Alt+S</source>
<translation>Ctrl+Alt+S</translation>
</message>
<message>
+ <location/>
<source>Sync with Table of Contents</source>
<translation>與目錄åŒæ­¥</translation>
</message>
<message>
+ <location/>
<source>Select the page in contents tab.</source>
<translation>é¸æ“‡åœ¨å…§å®¹åˆ†é ä¸­çš„é é¢ã€‚</translation>
</message>
<message>
+ <location/>
<source>Font Settings...</source>
<translation>字型設定...</translation>
</message>
<message>
<source>You need a commercial Qt license for development of proprietary (closed source) applications. Please see &lt;a href=&quot;http://qtsoftware.com/company/model&quot;&gt;qtsoftware.com/company/model&lt;/a&gt; for an overview of Qt licensing.</source>
- <translation>您需è¦å•†æ¥­ç‰ˆçš„ Qt 授權æ‰èƒ½ç™¼å±•ç§æœ‰ï¼ˆå°é–‰ï¼‰æ‡‰ç”¨ç¨‹å¼è»Ÿé«”。關於 Qt 授權的概è¦ï¼Œè«‹åƒè€ƒ &lt;a href=&quot;http://qtsoftware.com/company/model&quot;&gt;qtsoftware.com/company/model&lt;/a&gt;。</translation>
+ <translation type="obsolete">您需è¦å•†æ¥­ç‰ˆçš„ Qt 授權æ‰èƒ½ç™¼å±•ç§æœ‰ï¼ˆå°é–‰ï¼‰æ‡‰ç”¨ç¨‹å¼è»Ÿé«”。關於 Qt 授權的概è¦ï¼Œè«‹åƒè€ƒ &lt;a href=&quot;http://qtsoftware.com/company/model&quot;&gt;qtsoftware.com/company/model&lt;/a&gt;。</translation>
</message>
<message>
<source>This program is licensed to you under the terms of the Qt %1 License Agreement. For details, see the license file that came with this software distribution.</source>
- <translation>此程å¼ä»¥ Qt %1 授權åŒæ„書授權給您。詳情請åƒç…§å¥—件中的授權檔。</translation>
+ <translation type="obsolete">此程å¼ä»¥ Qt %1 授權åŒæ„書授權給您。詳情請åƒç…§å¥—件中的授權檔。</translation>
</message>
</context>
<context>
@@ -713,7 +876,7 @@ Assistant will not work!</source>
<translation type="obsolete">Qt å°å¹«æ‰‹ï¼ŒTrolltech å…¬å¸æä¾›</translation>
</message>
<message>
- <location filename="../tools/assistant/compat/config.cpp" line="320"/>
+ <location filename="../tools/assistant/compat/config.cpp" line="+350"/>
<source>Qt Assistant by Nokia</source>
<translation>Nokia æ供的 Qt å°å¹«æ‰‹</translation>
</message>
@@ -721,55 +884,67 @@ Assistant will not work!</source>
<context>
<name>TabbedBrowser</name>
<message>
- <location filename="../tools/assistant/compat/tabbedbrowser.cpp" line="119"/>
+ <location filename="../tools/assistant/compat/tabbedbrowser.cpp" line="+149"/>
<source>...</source>
<translation>...</translation>
</message>
<message>
+ <location line="+86"/>
<source>Add page</source>
<translation>新增é é¢</translation>
</message>
<message>
+ <location line="+9"/>
<source>Close page</source>
<translation>關閉é é¢</translation>
</message>
<message>
+ <location line="+243"/>
<source>New Tab</source>
<translation>新增分é </translation>
</message>
<message>
+ <location line="+1"/>
<source>Close Tab</source>
<translation>關閉分é </translation>
</message>
<message>
+ <location line="+1"/>
<source>Close Other Tabs</source>
<translation>關閉其他分é </translation>
</message>
<message>
+ <location filename="../tools/assistant/compat/tabbedbrowser.ui"/>
<source>TabbedBrowser</source>
<translation>分é å¼ç€è¦½å™¨</translation>
</message>
<message>
+ <location/>
<source>Untitled</source>
<translation>未命å</translation>
</message>
<message>
+ <location/>
<source>Previous</source>
<translation>å‰ä¸€å€‹</translation>
</message>
<message>
+ <location/>
<source>Next</source>
<translation>下一個</translation>
</message>
<message>
+ <location/>
<source>Case Sensitive</source>
<translation>å€åˆ†å¤§å°å¯«</translation>
</message>
<message>
+ <location/>
<source>Whole words</source>
<translation>整個字詞</translation>
</message>
<message>
+ <location/>
<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;æœå°‹å·²æŠ˜å›ž</translation>
</message>
@@ -777,39 +952,47 @@ Assistant will not work!</source>
<context>
<name>TopicChooser</name>
<message>
- <location filename="../tools/assistant/compat/topicchooser.cpp" line="26"/>
+ <location filename="../tools/assistant/compat/topicchooser.cpp" line="+56"/>
<source>Choose a topic for &lt;b&gt;%1&lt;/b&gt;</source>
<translation>請為 &lt;b&gt;%1&lt;/b&gt; é¸æ“‡ä¸€å€‹ä¸»é¡Œ</translation>
</message>
<message>
+ <location filename="../tools/assistant/compat/topicchooser.ui"/>
<source>Choose Topic</source>
<translation>é¸æ“‡ä¸»é¡Œ</translation>
</message>
<message>
+ <location/>
<source>Select a topic from the list and click the &lt;b&gt;Display&lt;/b&gt;-button to open the online help.</source>
<translation>請從清單中é¸å–一個主題,並按下「顯示ã€éµé–‹å•Ÿç·šä¸Šèªªæ˜Žã€‚</translation>
</message>
<message>
+ <location/>
<source>&amp;Topics</source>
<translation>主題(&amp;T)</translation>
</message>
<message>
+ <location/>
<source>Displays a list of available help topics for the keyword.</source>
<translation>顯示此關éµå­—å¯ç”¨çš„說明主題。</translation>
</message>
<message>
+ <location/>
<source>&amp;Display</source>
<translation>顯示(&amp;D)</translation>
</message>
<message>
+ <location/>
<source>Open the topic selected in the list.</source>
<translation>開啟在清單中é¸å–的主題。</translation>
</message>
<message>
+ <location/>
<source>&amp;Close</source>
<translation>關閉(&amp;C)</translation>
</message>
<message>
+ <location/>
<source>Close the Dialog.</source>
<translation>關閉å°è©±æ¡†ã€‚</translation>
</message>
diff --git a/translations/assistant_de.qm b/translations/assistant_de.qm
index 54146f6..5b31aea 100644
--- a/translations/assistant_de.qm
+++ b/translations/assistant_de.qm
Binary files differ
diff --git a/translations/assistant_de.ts b/translations/assistant_de.ts
index 0bb0e66..9b0d628 100644
--- a/translations/assistant_de.ts
+++ b/translations/assistant_de.ts
@@ -1,10 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS><TS version="2.0" language="de">
-<defaultcodec></defaultcodec>
+<!DOCTYPE TS>
+<TS version="2.0" language="de">
<context>
<name>AboutDialog</name>
<message>
- <location filename="../tools/assistant/tools/assistant/aboutdialog.cpp" line="+80"/>
+ <location filename="../tools/assistant/tools/assistant/aboutdialog.cpp" line="+110"/>
<source>&amp;Close</source>
<translation>&amp;Schließen</translation>
</message>
@@ -52,7 +52,7 @@
<translation>Neuer Ordner</translation>
</message>
<message>
- <location filename="../tools/assistant/tools/assistant/bookmarkmanager.cpp" line="+155"/>
+ <location filename="../tools/assistant/tools/assistant/bookmarkmanager.cpp" line="+185"/>
<location line="+18"/>
<location line="+36"/>
<location line="+24"/>
@@ -163,7 +163,7 @@
<context>
<name>CentralWidget</name>
<message>
- <location filename="../tools/assistant/tools/assistant/centralwidget.cpp" line="+163"/>
+ <location filename="../tools/assistant/tools/assistant/centralwidget.cpp" line="+208"/>
<source>Add new page</source>
<translation>Neue Seite hinzufügen</translation>
</message>
@@ -173,38 +173,38 @@
<translation>Aktuelle Seite schließen</translation>
</message>
<message>
- <location line="+266"/>
+ <location line="+282"/>
<source>Print Document</source>
<translation>Drucken</translation>
</message>
<message>
- <location line="+124"/>
+ <location line="+148"/>
<location line="+2"/>
<source>unknown</source>
<translation>unbekannt</translation>
</message>
<message>
- <location line="+96"/>
+ <location line="+91"/>
<source>Add New Page</source>
<translation>Neue Seite hinzufügen</translation>
</message>
<message>
- <location line="+1"/>
+ <location line="+3"/>
<source>Close This Page</source>
<translation>Aktuelle Seite schließen</translation>
</message>
<message>
- <location line="+1"/>
+ <location line="+3"/>
<source>Close Other Pages</source>
<translation>Andere Seiten schließen</translation>
</message>
<message>
- <location line="+2"/>
+ <location line="+5"/>
<source>Add Bookmark for this Page...</source>
<translation>Lesezeichen für diese Seite hinzufügen...</translation>
</message>
<message>
- <location line="+227"/>
+ <location line="+259"/>
<source>Search</source>
<translation>Suchen</translation>
</message>
@@ -212,7 +212,7 @@
<context>
<name>ContentWindow</name>
<message>
- <location filename="../tools/assistant/tools/assistant/contentwindow.cpp" line="+115"/>
+ <location filename="../tools/assistant/tools/assistant/contentwindow.cpp" line="+155"/>
<source>Open Link</source>
<translation>Link öffnen</translation>
</message>
@@ -242,17 +242,17 @@
<context>
<name>FindWidget</name>
<message>
- <location filename="../tools/assistant/tools/assistant/centralwidget.cpp" line="-809"/>
+ <location filename="../tools/assistant/tools/assistant/centralwidget.cpp" line="-899"/>
<source>Previous</source>
<translation>Vorherige</translation>
</message>
<message>
- <location line="+7"/>
+ <location line="+4"/>
<source>Next</source>
<translation>Nächste</translation>
</message>
<message>
- <location line="+5"/>
+ <location line="+4"/>
<source>Case Sensitive</source>
<translation>Gross/ Kleinschreibung beachten</translation>
</message>
@@ -270,7 +270,7 @@
<context>
<name>FontPanel</name>
<message>
- <location filename="../tools/shared/fontpanel/fontpanel.cpp" line="+33"/>
+ <location filename="../tools/shared/fontpanel/fontpanel.cpp" line="+63"/>
<source>Font</source>
<translation>Schriftart</translation>
</message>
@@ -298,7 +298,7 @@
<context>
<name>HelpViewer</name>
<message>
- <location filename="../tools/assistant/tools/assistant/helpviewer.cpp" line="+310"/>
+ <location filename="../tools/assistant/tools/assistant/helpviewer.cpp" line="+492"/>
<source>Help</source>
<translation>Hilfe</translation>
</message>
@@ -314,12 +314,12 @@
<translation>OK</translation>
</message>
<message>
- <location line="+17"/>
+ <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;Fehler 404...&lt;/title&gt;&lt;div align=&quot;center&quot;&gt;&lt;br&gt;&lt;br&gt;&lt;h1&gt;Die Seite konnte nicht gefunden werden!&lt;/h1&gt;&lt;br&gt;&lt;h3&gt;&apos;%1&apos;&lt;/h3&gt;&lt;/div&gt;</translation>
</message>
<message>
- <location line="+90"/>
+ <location line="+125"/>
<source>Copy &amp;Link Location</source>
<translation>&amp;Link Adresse kopieren</translation>
</message>
@@ -329,12 +329,12 @@
<translation>Link in neuem Tab öffnen </translation>
</message>
<message>
- <location line="-238"/>
+ <location line="-275"/>
<source>Open Link in New Tab</source>
<translation>Link in neuem Tab öffnen</translation>
</message>
<message>
- <location line="+128"/>
+ <location line="+209"/>
<source>Unable to launch external application.
</source>
<translation>Fehler beim Starten der externen Anwendung.
@@ -344,12 +344,12 @@
<context>
<name>IndexWindow</name>
<message>
- <location filename="../tools/assistant/tools/assistant/indexwindow.cpp" line="+36"/>
+ <location filename="../tools/assistant/tools/assistant/indexwindow.cpp" line="+66"/>
<source>&amp;Look for:</source>
<translation>Suche &amp;nach:</translation>
</message>
<message>
- <location line="+70"/>
+ <location line="+68"/>
<source>Open Link</source>
<translation>Link öffnen</translation>
</message>
@@ -362,7 +362,7 @@
<context>
<name>InstallDialog</name>
<message>
- <location filename="../tools/assistant/tools/assistant/installdialog.cpp" line="+45"/>
+ <location filename="../tools/assistant/tools/assistant/installdialog.cpp" line="+75"/>
<location filename="../tools/assistant/tools/assistant/installdialog.ui"/>
<source>Install Documentation</source>
<translation>Dokumentation installieren</translation>
@@ -462,39 +462,38 @@
<context>
<name>MainWindow</name>
<message>
- <location filename="../tools/assistant/tools/assistant/mainwindow.cpp" line="+78"/>
- <location line="+345"/>
+ <location filename="../tools/assistant/tools/assistant/mainwindow.cpp" line="+108"/>
+ <location line="+354"/>
<source>Index</source>
<translation>Index</translation>
</message>
<message>
- <location line="-339"/>
- <location line="+337"/>
+ <location line="-348"/>
+ <location line="+346"/>
<source>Contents</source>
<translation>Inhalt</translation>
</message>
<message>
- <location line="-332"/>
- <location line="+336"/>
+ <location line="-341"/>
+ <location line="+345"/>
<source>Bookmarks</source>
<translation>Lesezeichen</translation>
</message>
<message>
- <location line="-324"/>
- <location line="+326"/>
+ <location line="+2"/>
<source>Search</source>
<translation>Suchen</translation>
</message>
<message>
- <location line="-314"/>
- <location line="+185"/>
- <location line="+488"/>
+ <location line="-335"/>
+ <location line="+208"/>
+ <location line="+476"/>
<source>Qt Assistant</source>
<translation>Qt Assistant</translation>
</message>
<message>
- <location line="-519"/>
- <location line="+4"/>
+ <location line="-508"/>
+ <location line="+5"/>
<source>Unfiltered</source>
<translation>Ohne Filter</translation>
</message>
@@ -503,47 +502,44 @@
<translation type="obsolete">Datei</translation>
</message>
<message>
- <location line="+82"/>
+ <location line="+84"/>
<source>Page Set&amp;up...</source>
<translation>S&amp;eite einrichten...</translation>
</message>
<message>
- <location line="+1"/>
+ <location line="+2"/>
<source>Print Preview...</source>
<translation>Druckvorschau...</translation>
</message>
<message>
- <location line="+1"/>
+ <location line="+3"/>
<source>&amp;Print...</source>
<translation>&amp;Drucken...</translation>
</message>
<message>
- <location line="+3"/>
<source>CTRL+P</source>
- <translation>CTRL+P</translation>
+ <translation type="obsolete">CTRL+P</translation>
</message>
<message>
- <location line="+4"/>
+ <location line="+6"/>
<source>New &amp;Tab</source>
<translation>Neue &amp;Seite</translation>
</message>
<message>
- <location line="+1"/>
<source>CTRL+T</source>
- <translation>CTRL+T</translation>
+ <translation type="obsolete">CTRL+T</translation>
</message>
<message>
- <location line="+1"/>
+ <location line="+3"/>
<source>&amp;Close Tab</source>
<translation>&amp;Seite schließen</translation>
</message>
<message>
- <location line="+1"/>
<source>CTRL+W</source>
- <translation>CTRL+W</translation>
+ <translation type="obsolete">CTRL+W</translation>
</message>
<message>
- <location line="+2"/>
+ <location line="+4"/>
<source>&amp;Quit</source>
<translation>&amp;Beenden</translation>
</message>
@@ -562,42 +558,38 @@
<translation>&amp;Kopieren</translation>
</message>
<message>
- <location line="+4"/>
<source>Ctrl+C</source>
- <translation>Ctrl+C</translation>
+ <translation type="obsolete">Ctrl+C</translation>
</message>
<message>
- <location line="+3"/>
+ <location line="+6"/>
<source>&amp;Find in Text...</source>
<translation>&amp;Textsuche...</translation>
</message>
<message>
- <location line="+4"/>
<source>Ctrl+F</source>
- <translation>Ctrl+F</translation>
+ <translation type="obsolete">Ctrl+F</translation>
</message>
<message>
- <location line="+3"/>
+ <location line="+5"/>
<source>Find &amp;Next</source>
<translation>&amp;Weitersuchen</translation>
</message>
<message>
- <location line="+2"/>
<source>F3</source>
- <translation>F3</translation>
+ <translation type="obsolete">F3</translation>
</message>
<message>
- <location line="+3"/>
+ <location line="+4"/>
<source>Find &amp;Previous</source>
<translation>&amp;Vorheriges suchen</translation>
</message>
<message>
- <location line="+2"/>
<source>Shift+F3</source>
- <translation>Shift+F3</translation>
+ <translation type="obsolete">Shift+F3</translation>
</message>
<message>
- <location line="+4"/>
+ <location line="+5"/>
<source>Preferences...</source>
<translation>Einstellungen...</translation>
</message>
@@ -611,27 +603,25 @@
<translation>&amp;Vergrößern</translation>
</message>
<message>
- <location line="+4"/>
<source>Ctrl++</source>
- <translation>Ctrl++</translation>
+ <translation type="obsolete">Ctrl++</translation>
</message>
<message>
- <location line="+2"/>
+ <location line="+5"/>
<source>Zoom &amp;out</source>
<translation>Ver&amp;kleinern</translation>
</message>
<message>
- <location line="+4"/>
<source>Ctrl+-</source>
- <translation>Ctrl+-</translation>
+ <translation type="obsolete">Ctrl+-</translation>
</message>
<message>
- <location line="+2"/>
+ <location line="+5"/>
<source>Normal &amp;Size</source>
<translation>Standard&amp;größe</translation>
</message>
<message>
- <location line="+4"/>
+ <location line="+3"/>
<source>Ctrl+0</source>
<translation>Ctrl+0</translation>
</message>
@@ -664,27 +654,27 @@
<translation>&amp;Startseite</translation>
</message>
<message>
- <location line="+2"/>
+ <location line="+1"/>
<source>Ctrl+Home</source>
<translation>Strg+Pos1</translation>
</message>
<message>
- <location line="+4"/>
+ <location line="+3"/>
<source>&amp;Back</source>
<translation>&amp;Rückwärts</translation>
</message>
<message>
- <location line="+7"/>
+ <location line="+5"/>
<source>&amp;Forward</source>
<translation>&amp;Vorwärts</translation>
</message>
<message>
- <location line="+7"/>
+ <location line="+5"/>
<source>Sync with Table of Contents</source>
<translation>Seite mit Inhalt Tab syncronisieren</translation>
</message>
<message>
- <location line="+7"/>
+ <location line="+6"/>
<source>Next Page</source>
<translation>Nächste Seite</translation>
</message>
@@ -699,7 +689,7 @@
<translation>Vorherige Seite</translation>
</message>
<message>
- <location line="+2"/>
+ <location line="+1"/>
<source>Ctrl+Alt+Left</source>
<translation>Ctrl+Alt+Left</translation>
</message>
@@ -727,7 +717,7 @@
<translation>Navigationsleiste</translation>
</message>
<message>
- <location line="+75"/>
+ <location line="+76"/>
<source>Toolbars</source>
<translation>Werkzeugleisten</translation>
</message>
@@ -742,7 +732,7 @@
<translation>Filter:</translation>
</message>
<message>
- <location line="+21"/>
+ <location line="+23"/>
<source>Address Toolbar</source>
<translation>Adressleiste</translation>
</message>
@@ -752,51 +742,48 @@
<translation>Adresse:</translation>
</message>
<message>
- <location line="+108"/>
+ <location line="+114"/>
<source>Could not find the associated content item.</source>
<translation>Der zugehörige Inhaltseintrag konnte nicht gefunden werden.</translation>
</message>
<message>
- <location line="+60"/>
<source>Open Source Edition</source>
- <translation>Open Source Edition</translation>
+ <translation type="obsolete">Open Source Edition</translation>
</message>
<message>
- <location line="+1"/>
<source>This version of Qt Assistant is part of the Qt Open Source Edition, for use in the development of Open Source applications. Qt is a comprehensive C++ framework for cross-platform application development.</source>
- <translation>This version of Qt Assistant is part of the Qt Open Source Edition, for use in the development of Open Source applications. Qt is a comprehensive C++ framework for cross-platform application development.</translation>
+ <translation type="obsolete">This version of Qt Assistant is part of the Qt Open Source Edition, for use in the development of Open Source applications. Qt is a comprehensive C++ framework for cross-platform application development.</translation>
</message>
<message>
<source>You need a commercial Qt license for development of proprietary (closed source) applications. Please see &lt;a href=&quot;http://qtsoftware.com/company/model.html&quot;&gt;qtsoftware.com/company/model.html&lt;/a&gt; for an overview of Qt licensing.</source>
<translation type="obsolete">You need a commercial Qt license for development of proprietary (closed source) applications. Please see &lt;a href=&quot;http://qtsoftware.com/company/model.html&quot;&gt;qtsoftware.com/company/model.html&lt;/a&gt; for an overview of Qt licensing.</translation>
</message>
<message>
- <location line="+10"/>
<source>This program is licensed to you under the terms of the Qt Commercial License Agreement. For details, see the file LICENSE that came with this software distribution.</source>
- <translation>This program is licensed to you under the terms of the Qt Commercial License Agreement. For details, see the file LICENSE that came with this software distribution.</translation>
+ <translation type="obsolete">This program is licensed to you under the terms of the Qt Commercial License Agreement. For details, see the file LICENSE that came with this software distribution.</translation>
</message>
<message>
- <location line="+20"/>
+ <location line="+81"/>
<source>About %1</source>
<translation>Ãœber %1</translation>
</message>
<message>
- <location line="+115"/>
+ <location line="+113"/>
<source>Updating search index</source>
<translation>Suchindex wird aufgebaut</translation>
</message>
<message>
- <location line="-614"/>
+ <location line="-601"/>
<source>Looking for Qt Documentation...</source>
<translation>Suche nach Qt Dokumentationen...</translation>
</message>
<message>
- <location line="+205"/>
+ <location line="+195"/>
<source>&amp;Window</source>
<translation>&amp;Fenster</translation>
</message>
<message>
- <location line="+2"/>
+ <location line="+3"/>
<source>Minimize</source>
<translation>Minimieren</translation>
</message>
@@ -806,7 +793,7 @@
<translation>CTRL+M</translation>
</message>
<message>
- <location line="+1"/>
+ <location line="-2"/>
<source>Zoom</source>
<translation>Zoom</translation>
</message>
@@ -819,27 +806,27 @@
<translation type="obsolete">Entfernen</translation>
</message>
<message>
- <location line="-150"/>
+ <location line="-136"/>
<source>&amp;File</source>
<translation>&amp;Datei</translation>
</message>
<message>
- <location line="+20"/>
+ <location line="+24"/>
<source>&amp;Edit</source>
<translation>&amp;Bearbeiten</translation>
</message>
<message>
- <location line="+29"/>
+ <location line="+24"/>
<source>&amp;View</source>
<translation>&amp;Ansicht</translation>
</message>
<message>
- <location line="+30"/>
+ <location line="+27"/>
<source>&amp;Go</source>
<translation>&amp;Gehe</translation>
</message>
<message>
- <location line="+37"/>
+ <location line="+29"/>
<source>&amp;Bookmarks</source>
<translation>&amp;Lesezeichen</translation>
</message>
@@ -849,17 +836,16 @@
<translation>&amp;Hilfe</translation>
</message>
<message>
- <location line="+294"/>
<source>You need a commercial Qt license for development of proprietary (closed source) applications. Please see &lt;a href=&quot;http://qtsoftware.com/company/about/businessmodel&quot;&gt;http://qtsoftware.com/company/about/businessmodel&lt;/a&gt; for an overview of Qt licensing.</source>
- <translation>Sie benötigen eine kommerzielle Qt Lizenz für die Entwicklung von proprietären (geschlossenen) Anwendungen. Besuchen Sie &lt;a href=&quot;http://qtsoftware.com/company/about/businessmodel&quot;&gt;http://qtsoftware.com/company/about/businessmodel&lt;/a&gt; um sich einen Überblick über die Qt Lizenzvergabe zu verschaffen.</translation>
+ <translation type="obsolete">Sie benötigen eine kommerzielle Qt Lizenz für die Entwicklung von proprietären (geschlossenen) Anwendungen. Besuchen Sie &lt;a href=&quot;http://qtsoftware.com/company/about/businessmodel&quot;&gt;http://qtsoftware.com/company/about/businessmodel&lt;/a&gt; um sich einen Überblick über die Qt Lizenzvergabe zu verschaffen.</translation>
</message>
<message>
- <location line="-339"/>
+ <location line="-37"/>
<source>ALT+O</source>
<translation>ALT+O</translation>
</message>
<message>
- <location line="+43"/>
+ <location line="+35"/>
<source>CTRL+D</source>
<translation>CTRL+D</translation>
</message>
@@ -875,29 +861,48 @@
<translation type="obsolete">Von Helpserver herunterladen...</translation>
</message>
<message>
- <location filename="../tools/assistant/tools/assistant/preferencesdialog.cpp" line="+238"/>
- <location line="+7"/>
- <location line="+6"/>
+ <location filename="../tools/assistant/tools/assistant/preferencesdialog.cpp" line="+256"/>
+ <location line="+43"/>
<source>Add Documentation</source>
<translation>Dokumentation hinzufügen</translation>
</message>
<message>
- <location line="-13"/>
+ <location line="-43"/>
<source>Qt Compressed Help Files (*.qch)</source>
<translation>Komprimierte Hilfe Dateien (*.qch)</translation>
</message>
<message>
- <location line="+8"/>
+ <location line="+37"/>
<source>The specified file is not a valid Qt Help File!</source>
<translation>Die angegebene Datei ist keine Qt Hilfe Datei!</translation>
</message>
<message>
- <location line="+6"/>
+ <location line="-8"/>
<source>The namespace %1 is already registered!</source>
<translation>Der Namespace %1 ist bereits registriert!</translation>
</message>
<message>
- <location line="+122"/>
+ <location line="+31"/>
+ <source>Remove Documentation</source>
+ <translation>Dokumentation entfernen</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>Einige der gegenwärtig geöffneten Dokumente stammen aus der Dokumentation, die Sie gerade zu löschen versuchen. Sie werden beim Löschen geschlossen.</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Cancel</source>
+ <translation>Abbrechen</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>OK</source>
+ <translation>OK</translation>
+ </message>
+ <message>
+ <location line="+86"/>
<source>Use custom settings</source>
<translation>Benutze erweiterte Einstellungen</translation>
</message>
@@ -975,44 +980,40 @@
<translation>Hinzufügen...</translation>
</message>
<message>
- <location/>
<source>Network</source>
- <translation>Netzwerk</translation>
+ <translation type="obsolete">Netzwerk</translation>
</message>
<message>
- <location/>
<source>Use Http Proxy</source>
- <translation>Http Proxy</translation>
+ <translation type="obsolete">Http Proxy</translation>
</message>
<message>
- <location/>
<source>Http Proxy:</source>
- <translation>Http Proxy:</translation>
+ <translation type="obsolete">Http Proxy:</translation>
</message>
<message>
- <location/>
<source>Port:</source>
- <translation>Port:</translation>
+ <translation type="obsolete">Port:</translation>
</message>
<message>
<location/>
<source>Options</source>
- <translation type="unfinished"></translation>
+ <translation>Einstellungen</translation>
</message>
<message>
<location/>
<source>Current Page</source>
- <translation type="unfinished"></translation>
+ <translation>Aktuelle Seite</translation>
</message>
<message>
<location/>
<source>Restore to default</source>
- <translation type="unfinished"></translation>
+ <translation>Vorgabe wiederherstellen</translation>
</message>
<message>
<location/>
<source>Homepage</source>
- <translation type="unfinished"></translation>
+ <translation>Startseite</translation>
</message>
</context>
<context>
@@ -1022,7 +1023,7 @@
<translation type="obsolete">Neuer Ordner</translation>
</message>
<message>
- <location filename="../tools/assistant/tools/assistant/cmdlineparser.cpp" line="+79"/>
+ <location filename="../tools/assistant/tools/assistant/cmdlineparser.cpp" line="+112"/>
<source>The specified collection file does not exist!</source>
<translation>Die angegeben Katalogdatei (collection file) konnte nicht gefunden werden!</translation>
</message>
@@ -1068,7 +1069,12 @@
<translation>Fehlende Hilfedatei!</translation>
</message>
<message>
- <location line="+10"/>
+ <location line="+7"/>
+ <source>Missing filter argument!</source>
+ <translation>Das Filter-Argument fehlt!</translation>
+ </message>
+ <message>
+ <location line="+12"/>
<source>Unknown option: %1</source>
<translation>Unbekannte Option: %1</translation>
</message>
@@ -1079,7 +1085,7 @@
<translation>Qt Assistant</translation>
</message>
<message>
- <location filename="../tools/assistant/tools/assistant/main.cpp" line="+58"/>
+ <location filename="../tools/assistant/tools/assistant/main.cpp" line="+203"/>
<source>Could not register documentation file
%1
@@ -1093,7 +1099,7 @@ Reason:
<translation>Dokumentation erfolgreich registriert.</translation>
</message>
<message>
- <location line="+6"/>
+ <location line="+11"/>
<source>Could not unregister documentation file
%1
@@ -1102,14 +1108,14 @@ Reason:
<translation>Could not unregister documentation file%1Reason:%2</translation>
</message>
<message>
- <location line="+4"/>
+ <location line="-3"/>
<source>Documentation successfully unregistered.</source>
<translation>Dokumentation erfolgreich entfernt.</translation>
</message>
<message>
- <location line="+13"/>
+ <location line="+40"/>
<source>Cannot load sqlite database driver!</source>
- <translation type="unfinished"></translation>
+ <translation>Der Datenbanktreiber für SQLite kann nicht geladen werden!</translation>
</message>
<message>
<location line="+9"/>
@@ -1126,7 +1132,7 @@ Reason:
<context>
<name>RemoteControl</name>
<message>
- <location filename="../tools/assistant/tools/assistant/remotecontrol.cpp" line="+128"/>
+ <location filename="../tools/assistant/tools/assistant/remotecontrol.cpp" line="+157"/>
<source>Debugging Remote Control</source>
<translation>Debugging Remote Control</translation>
</message>
@@ -1139,7 +1145,7 @@ Reason:
<context>
<name>SearchWidget</name>
<message>
- <location filename="../tools/assistant/tools/assistant/searchwidget.cpp" line="+163"/>
+ <location filename="../tools/assistant/tools/assistant/searchwidget.cpp" line="+195"/>
<source>&amp;Copy</source>
<translation>&amp;Kopieren</translation>
</message>
@@ -1149,26 +1155,24 @@ Reason:
<translation>&amp;Link Adresse kopieren</translation>
</message>
<message>
- <location line="+3"/>
- <location line="+36"/>
+ <location line="+4"/>
<source>Open Link in New Tab</source>
<translation>Link in neuem Tab öffnen</translation>
</message>
<message>
- <location line="-29"/>
+ <location line="+8"/>
<source>Select All</source>
<translation>Alles markieren</translation>
</message>
<message>
- <location line="+28"/>
<source>Open Link</source>
- <translation>Link öffnen</translation>
+ <translation type="obsolete">Link öffnen</translation>
</message>
</context>
<context>
<name>TopicChooser</name>
<message>
- <location filename="../tools/assistant/tools/assistant/topicchooser.cpp" line="+24"/>
+ <location filename="../tools/assistant/tools/assistant/topicchooser.cpp" line="+54"/>
<source>Choose a topic for &lt;b&gt;%1&lt;/b&gt;:</source>
<translation>Wählen Sie ein Thema für &lt;b&gt;%1&lt;/b&gt;:</translation>
</message>
diff --git a/translations/assistant_ja.ts b/translations/assistant_ja.ts
index 5552272..1853155 100644
--- a/translations/assistant_ja.ts
+++ b/translations/assistant_ja.ts
@@ -1,9 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS><TS version="2.0">
+<!DOCTYPE TS>
+<TS version="2.0">
<context>
<name>AboutDialog</name>
<message>
- <location filename="../tools/assistant/tools/assistant/aboutdialog.cpp" line="+80"/>
+ <location filename="../tools/assistant/tools/assistant/aboutdialog.cpp" line="+110"/>
<source>&amp;Close</source>
<translation type="unfinished"></translation>
</message>
@@ -30,7 +31,7 @@
<context>
<name>BookmarkDialog</name>
<message>
- <location filename="../tools/assistant/tools/assistant/bookmarkmanager.cpp" line="+155"/>
+ <location filename="../tools/assistant/tools/assistant/bookmarkmanager.cpp" line="+185"/>
<location line="+18"/>
<location line="+36"/>
<location line="+24"/>
@@ -149,7 +150,7 @@
<context>
<name>CentralWidget</name>
<message>
- <location filename="../tools/assistant/tools/assistant/centralwidget.cpp" line="+163"/>
+ <location filename="../tools/assistant/tools/assistant/centralwidget.cpp" line="+195"/>
<source>Add new page</source>
<translation type="unfinished"></translation>
</message>
@@ -159,12 +160,12 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+266"/>
+ <location line="+265"/>
<source>Print Document</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+124"/>
+ <location line="+147"/>
<location line="+2"/>
<source>unknown</source>
<translation type="unfinished"></translation>
@@ -190,7 +191,7 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+227"/>
+ <location line="+257"/>
<source>Search</source>
<translation type="unfinished"></translation>
</message>
@@ -198,7 +199,7 @@
<context>
<name>ContentWindow</name>
<message>
- <location filename="../tools/assistant/tools/assistant/contentwindow.cpp" line="+115"/>
+ <location filename="../tools/assistant/tools/assistant/contentwindow.cpp" line="+155"/>
<source>Open Link</source>
<translation type="unfinished"></translation>
</message>
@@ -224,7 +225,7 @@
<context>
<name>FindWidget</name>
<message>
- <location filename="../tools/assistant/tools/assistant/centralwidget.cpp" line="-809"/>
+ <location filename="../tools/assistant/tools/assistant/centralwidget.cpp" line="-863"/>
<source>Previous</source>
<translation type="unfinished"></translation>
</message>
@@ -252,7 +253,7 @@
<context>
<name>FontPanel</name>
<message>
- <location filename="../tools/shared/fontpanel/fontpanel.cpp" line="+33"/>
+ <location filename="../tools/shared/fontpanel/fontpanel.cpp" line="+63"/>
<source>Font</source>
<translation type="unfinished"></translation>
</message>
@@ -280,7 +281,7 @@
<context>
<name>HelpViewer</name>
<message>
- <location filename="../tools/assistant/tools/assistant/helpviewer.cpp" line="+310"/>
+ <location filename="../tools/assistant/tools/assistant/helpviewer.cpp" line="+481"/>
<source>Help</source>
<translation type="unfinished"></translation>
</message>
@@ -290,12 +291,12 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+17"/>
+ <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 type="unfinished"></translation>
</message>
<message>
- <location line="+90"/>
+ <location line="+125"/>
<source>Copy &amp;Link Location</source>
<translation type="unfinished"></translation>
</message>
@@ -305,12 +306,12 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-238"/>
+ <location line="-267"/>
<source>Open Link in New Tab</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+128"/>
+ <location line="+201"/>
<source>Unable to launch external application.
</source>
<translation type="unfinished"></translation>
@@ -319,12 +320,12 @@
<context>
<name>IndexWindow</name>
<message>
- <location filename="../tools/assistant/tools/assistant/indexwindow.cpp" line="+36"/>
+ <location filename="../tools/assistant/tools/assistant/indexwindow.cpp" line="+66"/>
<source>&amp;Look for:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+70"/>
+ <location line="+68"/>
<source>Open Link</source>
<translation type="unfinished"></translation>
</message>
@@ -337,7 +338,7 @@
<context>
<name>InstallDialog</name>
<message>
- <location filename="../tools/assistant/tools/assistant/installdialog.cpp" line="+45"/>
+ <location filename="../tools/assistant/tools/assistant/installdialog.cpp" line="+75"/>
<location filename="../tools/assistant/tools/assistant/installdialog.ui"/>
<source>Install Documentation</source>
<translation type="unfinished"></translation>
@@ -436,84 +437,69 @@
<context>
<name>MainWindow</name>
<message>
- <location filename="../tools/assistant/tools/assistant/mainwindow.cpp" line="+78"/>
- <location line="+345"/>
+ <location filename="../tools/assistant/tools/assistant/mainwindow.cpp" line="+108"/>
+ <location line="+350"/>
<source>Index</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-339"/>
- <location line="+337"/>
+ <location line="-344"/>
+ <location line="+342"/>
<source>Contents</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-332"/>
- <location line="+336"/>
+ <location line="-337"/>
+ <location line="+341"/>
<source>Bookmarks</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-324"/>
- <location line="+326"/>
+ <location line="-329"/>
+ <location line="+331"/>
<source>Search</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-314"/>
- <location line="+185"/>
- <location line="+488"/>
+ <location line="-319"/>
+ <location line="+192"/>
+ <location line="+470"/>
<source>Qt Assistant</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-519"/>
+ <location line="-501"/>
<location line="+4"/>
<source>Unfiltered</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+82"/>
+ <location line="+84"/>
<source>Page Set&amp;up...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+1"/>
+ <location line="+2"/>
<source>Print Preview...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+1"/>
- <source>&amp;Print...</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<location line="+3"/>
- <source>CTRL+P</source>
+ <source>&amp;Print...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+4"/>
+ <location line="+6"/>
<source>New &amp;Tab</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+1"/>
- <source>CTRL+T</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location line="+1"/>
+ <location line="+3"/>
<source>&amp;Close Tab</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+1"/>
- <source>CTRL+W</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location line="+2"/>
+ <location line="+4"/>
<source>&amp;Quit</source>
<translation type="unfinished"></translation>
</message>
@@ -528,42 +514,22 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+4"/>
- <source>Ctrl+C</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location line="+3"/>
+ <location line="+6"/>
<source>&amp;Find in Text...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+4"/>
- <source>Ctrl+F</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location line="+3"/>
+ <location line="+5"/>
<source>Find &amp;Next</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+2"/>
- <source>F3</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location line="+3"/>
+ <location line="+4"/>
<source>Find &amp;Previous</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+2"/>
- <source>Shift+F3</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location line="+4"/>
+ <location line="+5"/>
<source>Preferences...</source>
<translation type="unfinished"></translation>
</message>
@@ -573,27 +539,17 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+4"/>
- <source>Ctrl++</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location line="+2"/>
+ <location line="+5"/>
<source>Zoom &amp;out</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+4"/>
- <source>Ctrl+-</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location line="+2"/>
+ <location line="+5"/>
<source>Normal &amp;Size</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+4"/>
+ <location line="+3"/>
<source>Ctrl+0</source>
<translation type="unfinished"></translation>
</message>
@@ -618,27 +574,27 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+2"/>
+ <location line="+1"/>
<source>Ctrl+Home</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+4"/>
+ <location line="+3"/>
<source>&amp;Back</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+7"/>
+ <location line="+5"/>
<source>&amp;Forward</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+7"/>
+ <location line="+5"/>
<source>Sync with Table of Contents</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+7"/>
+ <location line="+6"/>
<source>Next Page</source>
<translation type="unfinished"></translation>
</message>
@@ -653,7 +609,7 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+2"/>
+ <location line="+1"/>
<source>Ctrl+Alt+Left</source>
<translation type="unfinished"></translation>
</message>
@@ -673,7 +629,7 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+75"/>
+ <location line="+74"/>
<source>Toolbars</source>
<translation type="unfinished"></translation>
</message>
@@ -688,7 +644,7 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+21"/>
+ <location line="+23"/>
<source>Address Toolbar</source>
<translation type="unfinished"></translation>
</message>
@@ -698,27 +654,12 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+108"/>
+ <location line="+110"/>
<source>Could not find the associated content item.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+60"/>
- <source>Open Source Edition</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location line="+1"/>
- <source>This version of Qt Assistant is part of the Qt Open Source Edition, for use in the development of Open Source applications. Qt is a comprehensive C++ framework for cross-platform application development.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location line="+10"/>
- <source>This program is licensed to you under the terms of the Qt Commercial License Agreement. For details, see the file LICENSE that came with this software distribution.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location line="+20"/>
+ <location line="+81"/>
<source>About %1</source>
<translation type="unfinished"></translation>
</message>
@@ -728,17 +669,17 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-614"/>
+ <location line="-597"/>
<source>Looking for Qt Documentation...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+205"/>
+ <location line="+195"/>
<source>&amp;Window</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+2"/>
+ <location line="+3"/>
<source>Minimize</source>
<translation type="unfinished"></translation>
</message>
@@ -748,32 +689,32 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+1"/>
+ <location line="-2"/>
<source>Zoom</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-150"/>
+ <location line="-136"/>
<source>&amp;File</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+20"/>
+ <location line="+24"/>
<source>&amp;Edit</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+29"/>
+ <location line="+24"/>
<source>&amp;View</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+30"/>
+ <location line="+27"/>
<source>&amp;Go</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+37"/>
+ <location line="+29"/>
<source>&amp;Bookmarks</source>
<translation type="unfinished"></translation>
</message>
@@ -783,17 +724,12 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+294"/>
- <source>You need a commercial Qt license for development of proprietary (closed source) applications. Please see &lt;a href=&quot;http://qtsoftware.com/company/about/businessmodel&quot;&gt;http://qtsoftware.com/company/about/businessmodel&lt;/a&gt; for an overview of Qt licensing.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location line="-339"/>
+ <location line="-37"/>
<source>ALT+O</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+43"/>
+ <location line="+35"/>
<source>CTRL+D</source>
<translation type="unfinished"></translation>
</message>
@@ -801,7 +737,7 @@
<context>
<name>PreferencesDialog</name>
<message>
- <location filename="../tools/assistant/tools/assistant/preferencesdialog.cpp" line="+238"/>
+ <location filename="../tools/assistant/tools/assistant/preferencesdialog.cpp" line="+237"/>
<location line="+7"/>
<location line="+6"/>
<source>Add Documentation</source>
@@ -823,7 +759,27 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+122"/>
+ <location line="+23"/>
+ <source>Remove Documentation</source>
+ <translation type="unfinished"></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 type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>OK</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+86"/>
<source>Use custom settings</source>
<translation type="unfinished"></translation>
</message>
@@ -902,26 +858,6 @@
</message>
<message>
<location/>
- <source>Network</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location/>
- <source>Use Http Proxy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location/>
- <source>Http Proxy:</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location/>
- <source>Port:</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location/>
<source>Options</source>
<translation type="unfinished"></translation>
</message>
@@ -944,7 +880,7 @@
<context>
<name>QObject</name>
<message>
- <location filename="../tools/assistant/tools/assistant/cmdlineparser.cpp" line="+79"/>
+ <location filename="../tools/assistant/tools/assistant/cmdlineparser.cpp" line="+110"/>
<source>The specified collection file does not exist!</source>
<translation type="unfinished"></translation>
</message>
@@ -990,6 +926,11 @@
<translation type="unfinished"></translation>
</message>
<message>
+ <location line="+7"/>
+ <source>Missing filter argument!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<location line="+10"/>
<source>Unknown option: %1</source>
<translation type="unfinished"></translation>
@@ -1001,7 +942,7 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../tools/assistant/tools/assistant/main.cpp" line="+58"/>
+ <location filename="../tools/assistant/tools/assistant/main.cpp" line="+190"/>
<source>Could not register documentation file
%1
@@ -1015,7 +956,7 @@ Reason:
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+6"/>
+ <location line="+11"/>
<source>Could not unregister documentation file
%1
@@ -1024,12 +965,12 @@ Reason:
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+4"/>
+ <location line="-3"/>
<source>Documentation successfully unregistered.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+13"/>
+ <location line="+18"/>
<source>Cannot load sqlite database driver!</source>
<translation type="unfinished"></translation>
</message>
@@ -1048,7 +989,7 @@ Reason:
<context>
<name>RemoteControl</name>
<message>
- <location filename="../tools/assistant/tools/assistant/remotecontrol.cpp" line="+128"/>
+ <location filename="../tools/assistant/tools/assistant/remotecontrol.cpp" line="+157"/>
<source>Debugging Remote Control</source>
<translation type="unfinished"></translation>
</message>
@@ -1061,7 +1002,7 @@ Reason:
<context>
<name>SearchWidget</name>
<message>
- <location filename="../tools/assistant/tools/assistant/searchwidget.cpp" line="+163"/>
+ <location filename="../tools/assistant/tools/assistant/searchwidget.cpp" line="+193"/>
<source>&amp;Copy</source>
<translation type="unfinished"></translation>
</message>
@@ -1090,7 +1031,7 @@ Reason:
<context>
<name>TopicChooser</name>
<message>
- <location filename="../tools/assistant/tools/assistant/topicchooser.cpp" line="+24"/>
+ <location filename="../tools/assistant/tools/assistant/topicchooser.cpp" line="+54"/>
<source>Choose a topic for &lt;b&gt;%1&lt;/b&gt;:</source>
<translation type="unfinished"></translation>
</message>
diff --git a/translations/assistant_pl.ts b/translations/assistant_pl.ts
index 4985b72..f84bad2 100644
--- a/translations/assistant_pl.ts
+++ b/translations/assistant_pl.ts
@@ -1,9 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS><TS version="2.0" language="pl">
+<!DOCTYPE TS>
+<TS version="2.0" language="pl">
<context>
<name>AboutDialog</name>
<message>
- <location filename="../tools/assistant/tools/assistant/aboutdialog.cpp" line="+80"/>
+ <location filename="../tools/assistant/tools/assistant/aboutdialog.cpp" line="+110"/>
<source>&amp;Close</source>
<translation>Za&amp;mknij</translation>
</message>
@@ -30,7 +31,7 @@
<context>
<name>BookmarkDialog</name>
<message>
- <location filename="../tools/assistant/tools/assistant/bookmarkmanager.cpp" line="+155"/>
+ <location filename="../tools/assistant/tools/assistant/bookmarkmanager.cpp" line="+185"/>
<location line="+18"/>
<location line="+36"/>
<location line="+24"/>
@@ -157,7 +158,7 @@
<context>
<name>CentralWidget</name>
<message>
- <location filename="../tools/assistant/tools/assistant/centralwidget.cpp" line="+163"/>
+ <location filename="../tools/assistant/tools/assistant/centralwidget.cpp" line="+195"/>
<source>Add new page</source>
<translation>Dodaj nowÄ… stronÄ™</translation>
</message>
@@ -167,12 +168,12 @@
<translation>Zamknij bieżącą stronę</translation>
</message>
<message>
- <location line="+266"/>
+ <location line="+265"/>
<source>Print Document</source>
<translation>Wydrukuj dokument</translation>
</message>
<message>
- <location line="+124"/>
+ <location line="+147"/>
<location line="+2"/>
<source>unknown</source>
<translation>nieznany</translation>
@@ -198,7 +199,7 @@
<translation>Dodaj zakładkę dla tej strony...</translation>
</message>
<message>
- <location line="+227"/>
+ <location line="+257"/>
<source>Search</source>
<translation>Wyszukaj</translation>
</message>
@@ -206,7 +207,7 @@
<context>
<name>ContentWindow</name>
<message>
- <location filename="../tools/assistant/tools/assistant/contentwindow.cpp" line="+115"/>
+ <location filename="../tools/assistant/tools/assistant/contentwindow.cpp" line="+155"/>
<source>Open Link</source>
<translation>Otwórz odsyłacz</translation>
</message>
@@ -236,7 +237,7 @@
<context>
<name>FindWidget</name>
<message>
- <location filename="../tools/assistant/tools/assistant/centralwidget.cpp" line="-809"/>
+ <location filename="../tools/assistant/tools/assistant/centralwidget.cpp" line="-863"/>
<source>Previous</source>
<translation>Poprzedni</translation>
</message>
@@ -264,7 +265,7 @@
<context>
<name>FontPanel</name>
<message>
- <location filename="../tools/shared/fontpanel/fontpanel.cpp" line="+33"/>
+ <location filename="../tools/shared/fontpanel/fontpanel.cpp" line="+63"/>
<source>Font</source>
<translation>Czcionka</translation>
</message>
@@ -292,7 +293,7 @@
<context>
<name>HelpViewer</name>
<message>
- <location filename="../tools/assistant/tools/assistant/helpviewer.cpp" line="+310"/>
+ <location filename="../tools/assistant/tools/assistant/helpviewer.cpp" line="+481"/>
<source>Help</source>
<translation>Pomoc</translation>
</message>
@@ -308,12 +309,12 @@
<translation>OK</translation>
</message>
<message>
- <location line="+17"/>
+ <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;Błąd 404...&lt;/title&gt;&lt;div align=&quot;center&quot;&gt;&lt;br&gt;&lt;br&gt;&lt;h1&gt;Strona nie może być znaleziona&lt;/h1&gt;&lt;br&gt;&lt;h3&gt;&apos;%1&apos;&lt;/h3&gt;&lt;/div&gt;</translation>
</message>
<message>
- <location line="+90"/>
+ <location line="+125"/>
<source>Copy &amp;Link Location</source>
<translation>Skopiuj &amp;odsyłacz</translation>
</message>
@@ -323,12 +324,12 @@
<translation>Otwórz odsyłacz w nowej karcie Ctrl+LMB</translation>
</message>
<message>
- <location line="-238"/>
+ <location line="-267"/>
<source>Open Link in New Tab</source>
<translation>Otwórz odsyłacz w nowej karcie</translation>
</message>
<message>
- <location line="+128"/>
+ <location line="+201"/>
<source>Unable to launch external application.
</source>
<translation>Nie można uruchomić zewnętrznej aplikacji.
@@ -338,12 +339,12 @@
<context>
<name>IndexWindow</name>
<message>
- <location filename="../tools/assistant/tools/assistant/indexwindow.cpp" line="+36"/>
+ <location filename="../tools/assistant/tools/assistant/indexwindow.cpp" line="+66"/>
<source>&amp;Look for:</source>
<translation>Wy&amp;szukaj:</translation>
</message>
<message>
- <location line="+70"/>
+ <location line="+68"/>
<source>Open Link</source>
<translation>Otwórz odsyłacz</translation>
</message>
@@ -356,7 +357,7 @@
<context>
<name>InstallDialog</name>
<message>
- <location filename="../tools/assistant/tools/assistant/installdialog.cpp" line="+45"/>
+ <location filename="../tools/assistant/tools/assistant/installdialog.cpp" line="+75"/>
<location filename="../tools/assistant/tools/assistant/installdialog.ui"/>
<source>Install Documentation</source>
<translation>Zainstaluj dokumentacjÄ™</translation>
@@ -456,38 +457,38 @@
<context>
<name>MainWindow</name>
<message>
- <location filename="../tools/assistant/tools/assistant/mainwindow.cpp" line="+78"/>
- <location line="+345"/>
+ <location filename="../tools/assistant/tools/assistant/mainwindow.cpp" line="+108"/>
+ <location line="+350"/>
<source>Index</source>
<translation>Indeks</translation>
</message>
<message>
- <location line="-339"/>
- <location line="+337"/>
+ <location line="-344"/>
+ <location line="+342"/>
<source>Contents</source>
<translation>Spis treści</translation>
</message>
<message>
- <location line="-332"/>
- <location line="+336"/>
+ <location line="-337"/>
+ <location line="+341"/>
<source>Bookmarks</source>
<translation>Zakładki</translation>
</message>
<message>
- <location line="-324"/>
- <location line="+326"/>
+ <location line="-329"/>
+ <location line="+331"/>
<source>Search</source>
<translation>Wyszukaj</translation>
</message>
<message>
- <location line="-314"/>
- <location line="+185"/>
- <location line="+488"/>
+ <location line="-319"/>
+ <location line="+192"/>
+ <location line="+470"/>
<source>Qt Assistant</source>
<translation>Qt Assistant</translation>
</message>
<message>
- <location line="-519"/>
+ <location line="-501"/>
<location line="+4"/>
<source>Unfiltered</source>
<translation>Nieprzefiltrowany</translation>
@@ -497,47 +498,44 @@
<translation type="obsolete">Plik</translation>
</message>
<message>
- <location line="+82"/>
+ <location line="+84"/>
<source>Page Set&amp;up...</source>
<translation>&amp;Ustawienia strony...</translation>
</message>
<message>
- <location line="+1"/>
+ <location line="+2"/>
<source>Print Preview...</source>
<translation>PodglÄ…d wydruku...</translation>
</message>
<message>
- <location line="+1"/>
+ <location line="+3"/>
<source>&amp;Print...</source>
<translation>Wy&amp;drukuj...</translation>
</message>
<message>
- <location line="+3"/>
<source>CTRL+P</source>
- <translation>CTRL+P</translation>
+ <translation type="obsolete">CTRL+P</translation>
</message>
<message>
- <location line="+4"/>
+ <location line="+6"/>
<source>New &amp;Tab</source>
<translation>Nowa kar&amp;ta</translation>
</message>
<message>
- <location line="+1"/>
<source>CTRL+T</source>
- <translation>CTRL+T</translation>
+ <translation type="obsolete">CTRL+T</translation>
</message>
<message>
- <location line="+1"/>
+ <location line="+3"/>
<source>&amp;Close Tab</source>
<translation>&amp;Zamknij kartÄ™</translation>
</message>
<message>
- <location line="+1"/>
<source>CTRL+W</source>
- <translation>CTRL+W</translation>
+ <translation type="obsolete">CTRL+W</translation>
</message>
<message>
- <location line="+2"/>
+ <location line="+4"/>
<source>&amp;Quit</source>
<translation>Za&amp;kończ</translation>
</message>
@@ -556,42 +554,38 @@
<translation>S&amp;kopiuj zaznaczony tekst</translation>
</message>
<message>
- <location line="+4"/>
<source>Ctrl+C</source>
- <translation>Ctrl+C</translation>
+ <translation type="obsolete">Ctrl+C</translation>
</message>
<message>
- <location line="+3"/>
+ <location line="+6"/>
<source>&amp;Find in Text...</source>
<translation>Znajdź w &amp;tekście...</translation>
</message>
<message>
- <location line="+4"/>
<source>Ctrl+F</source>
- <translation>Ctrl+F</translation>
+ <translation type="obsolete">Ctrl+F</translation>
</message>
<message>
- <location line="+3"/>
+ <location line="+5"/>
<source>Find &amp;Next</source>
<translation>Znajdź &amp;następny</translation>
</message>
<message>
- <location line="+2"/>
<source>F3</source>
- <translation>F3</translation>
+ <translation type="obsolete">F3</translation>
</message>
<message>
- <location line="+3"/>
+ <location line="+4"/>
<source>Find &amp;Previous</source>
<translation>Znajdź &amp;poprzedni</translation>
</message>
<message>
- <location line="+2"/>
<source>Shift+F3</source>
- <translation>Shift+F3</translation>
+ <translation type="obsolete">Shift+F3</translation>
</message>
<message>
- <location line="+4"/>
+ <location line="+5"/>
<source>Preferences...</source>
<translation>Ustawienia...</translation>
</message>
@@ -605,27 +599,17 @@
<translation>Po&amp;większ</translation>
</message>
<message>
- <location line="+4"/>
- <source>Ctrl++</source>
- <translation></translation>
- </message>
- <message>
- <location line="+2"/>
+ <location line="+5"/>
<source>Zoom &amp;out</source>
<translation>Po&amp;mniejsz</translation>
</message>
<message>
- <location line="+4"/>
- <source>Ctrl+-</source>
- <translation></translation>
- </message>
- <message>
- <location line="+2"/>
+ <location line="+5"/>
<source>Normal &amp;Size</source>
<translation>Normalny &amp;rozmiar</translation>
</message>
<message>
- <location line="+4"/>
+ <location line="+3"/>
<source>Ctrl+0</source>
<translation>Ctrl+0</translation>
</message>
@@ -658,27 +642,27 @@
<translation>Strona &amp;startowa</translation>
</message>
<message>
- <location line="+2"/>
+ <location line="+1"/>
<source>Ctrl+Home</source>
<translation></translation>
</message>
<message>
- <location line="+4"/>
+ <location line="+3"/>
<source>&amp;Back</source>
<translation>&amp;Wstecz</translation>
</message>
<message>
- <location line="+7"/>
+ <location line="+5"/>
<source>&amp;Forward</source>
<translation>W &amp;przód</translation>
</message>
<message>
- <location line="+7"/>
+ <location line="+5"/>
<source>Sync with Table of Contents</source>
<translation>Znajdź bieżącą stronę w spisie treści</translation>
</message>
<message>
- <location line="+7"/>
+ <location line="+6"/>
<source>Next Page</source>
<translation>Następna strona</translation>
</message>
@@ -693,7 +677,7 @@
<translation>Poprzednia strona</translation>
</message>
<message>
- <location line="+2"/>
+ <location line="+1"/>
<source>Ctrl+Alt+Left</source>
<translation></translation>
</message>
@@ -717,7 +701,7 @@
<translation>Pasek do nawigacji</translation>
</message>
<message>
- <location line="+75"/>
+ <location line="+74"/>
<source>Toolbars</source>
<translation>Paski narzędzi</translation>
</message>
@@ -732,7 +716,7 @@
<translation>Przefiltrowane przez:</translation>
</message>
<message>
- <location line="+21"/>
+ <location line="+23"/>
<source>Address Toolbar</source>
<translation>Pasek adresu</translation>
</message>
@@ -742,27 +726,20 @@
<translation>Adres:</translation>
</message>
<message>
- <location line="+108"/>
+ <location line="+110"/>
<source>Could not find the associated content item.</source>
<translation>Nie można znaleźć skojarzonego elementu zawartości.</translation>
</message>
<message>
- <location line="+60"/>
<source>Open Source Edition</source>
- <translation>Edycja Open Source</translation>
+ <translation type="obsolete">Edycja Open Source</translation>
</message>
<message>
- <location line="+1"/>
<source>This version of Qt Assistant is part of the Qt Open Source Edition, for use in the development of Open Source applications. Qt is a comprehensive C++ framework for cross-platform application development.</source>
- <translation>Ta wersja Qt Assistant jest częścią wydania Qt Open Source, przeznaczonego do tworzenia aplikacji Open Source. Qt zawiera obszerny zestaw bibliotek wykorzystywanych do pisania przenośnych aplikacji.</translation>
+ <translation type="obsolete">Ta wersja Qt Assistant jest częścią wydania Qt Open Source, przeznaczonego do tworzenia aplikacji Open Source. Qt zawiera obszerny zestaw bibliotek wykorzystywanych do pisania przenośnych aplikacji.</translation>
</message>
<message>
- <location line="+10"/>
- <source>This program is licensed to you under the terms of the Qt Commercial License Agreement. For details, see the file LICENSE that came with this software distribution.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location line="+20"/>
+ <location line="+81"/>
<source>About %1</source>
<translation>Informacje o %1</translation>
</message>
@@ -772,17 +749,17 @@
<translation>Uaktualnianie indeksu wyszukiwawczego</translation>
</message>
<message>
- <location line="-614"/>
+ <location line="-597"/>
<source>Looking for Qt Documentation...</source>
<translation>Szukanie dokumentacji Qt...</translation>
</message>
<message>
- <location line="+205"/>
+ <location line="+195"/>
<source>&amp;Window</source>
<translation>&amp;Okno</translation>
</message>
<message>
- <location line="+2"/>
+ <location line="+3"/>
<source>Minimize</source>
<translation>Zminimalizuj</translation>
</message>
@@ -792,7 +769,7 @@
<translation></translation>
</message>
<message>
- <location line="+1"/>
+ <location line="-2"/>
<source>Zoom</source>
<translation>Powiększenie</translation>
</message>
@@ -805,32 +782,31 @@
<translation type="obsolete">Usuń</translation>
</message>
<message>
- <location line="+264"/>
<source>You need a commercial Qt license for development of proprietary (closed source) applications. Please see &lt;a href=&quot;http://qtsoftware.com/company/about/businessmodel&quot;&gt;http://qtsoftware.com/company/about/businessmodel&lt;/a&gt; for an overview of Qt licensing.</source>
- <translation>Aby móc tworzyć przy pomocy Qt własne aplikacje bez publikowania kodu (closed source) potrzebujesz wydania komercyjnego. Opis sposobów licencjonowania Qt znajduje się na stronie &lt;a href=&quot;http://qtsoftware.com/company/model.html&quot;&gt;qtsoftware.com/company/model.html&lt;/a&gt;.</translation>
+ <translation type="obsolete">Aby móc tworzyć przy pomocy Qt własne aplikacje bez publikowania kodu (closed source) potrzebujesz wydania komercyjnego. Opis sposobów licencjonowania Qt znajduje się na stronie &lt;a href=&quot;http://qtsoftware.com/company/model.html&quot;&gt;qtsoftware.com/company/model.html&lt;/a&gt;.</translation>
</message>
<message>
- <location line="-414"/>
+ <location line="-136"/>
<source>&amp;File</source>
<translation>&amp;Plik</translation>
</message>
<message>
- <location line="+20"/>
+ <location line="+24"/>
<source>&amp;Edit</source>
<translation>&amp;Edycja</translation>
</message>
<message>
- <location line="+29"/>
+ <location line="+24"/>
<source>&amp;View</source>
<translation>&amp;Widok</translation>
</message>
<message>
- <location line="+30"/>
+ <location line="+27"/>
<source>&amp;Go</source>
<translation>&amp;Nawigacja</translation>
</message>
<message>
- <location line="+37"/>
+ <location line="+29"/>
<source>&amp;Bookmarks</source>
<translation>&amp;Zakładki</translation>
</message>
@@ -840,12 +816,12 @@
<translation>&amp;Pomoc</translation>
</message>
<message>
- <location line="-45"/>
+ <location line="-37"/>
<source>ALT+O</source>
<translation>ALT+O</translation>
</message>
<message>
- <location line="+43"/>
+ <location line="+35"/>
<source>CTRL+D</source>
<translation>CTRL+D</translation>
</message>
@@ -853,7 +829,7 @@
<context>
<name>PreferencesDialog</name>
<message>
- <location filename="../tools/assistant/tools/assistant/preferencesdialog.cpp" line="+238"/>
+ <location filename="../tools/assistant/tools/assistant/preferencesdialog.cpp" line="+237"/>
<location line="+7"/>
<location line="+6"/>
<source>Add Documentation</source>
@@ -875,7 +851,27 @@
<translation>Przestrzeń nazw %1 jest już zarejestrowana!</translation>
</message>
<message>
- <location line="+122"/>
+ <location line="+23"/>
+ <source>Remove Documentation</source>
+ <translation type="unfinished"></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 type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Cancel</source>
+ <translation type="unfinished">Anuluj</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>OK</source>
+ <translation type="unfinished">OK</translation>
+ </message>
+ <message>
+ <location line="+86"/>
<source>Use custom settings</source>
<translation>Użyj własnych ustawień</translation>
</message>
@@ -953,24 +949,20 @@
<translation>Dodaj...</translation>
</message>
<message>
- <location/>
<source>Network</source>
- <translation>Sieć</translation>
+ <translation type="obsolete">Sieć</translation>
</message>
<message>
- <location/>
<source>Use Http Proxy</source>
- <translation>Użyj pośrednika http</translation>
+ <translation type="obsolete">Użyj pośrednika http</translation>
</message>
<message>
- <location/>
<source>Http Proxy:</source>
- <translation>Pośrednik http:</translation>
+ <translation type="obsolete">Pośrednik http:</translation>
</message>
<message>
- <location/>
<source>Port:</source>
- <translation>Port:</translation>
+ <translation type="obsolete">Port:</translation>
</message>
<message>
<location/>
@@ -1000,7 +992,7 @@
<translation type="obsolete">Nowy katalog</translation>
</message>
<message>
- <location filename="../tools/assistant/tools/assistant/cmdlineparser.cpp" line="+79"/>
+ <location filename="../tools/assistant/tools/assistant/cmdlineparser.cpp" line="+110"/>
<source>The specified collection file does not exist!</source>
<translation>Podany plik z kolekcjÄ… nie istnieje!</translation>
</message>
@@ -1046,6 +1038,11 @@
<translation>Brak pliku pomocy!</translation>
</message>
<message>
+ <location line="+7"/>
+ <source>Missing filter argument!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<location line="+10"/>
<source>Unknown option: %1</source>
<translation>Nieznana opcja: %1</translation>
@@ -1057,7 +1054,7 @@
<translation>Qt Assistant</translation>
</message>
<message>
- <location filename="../tools/assistant/tools/assistant/main.cpp" line="+58"/>
+ <location filename="../tools/assistant/tools/assistant/main.cpp" line="+190"/>
<source>Could not register documentation file
%1
@@ -1075,7 +1072,7 @@ Powód:
<translation>Dokumentacja poprawnie zarejestrowana.</translation>
</message>
<message>
- <location line="+6"/>
+ <location line="+11"/>
<source>Could not unregister documentation file
%1
@@ -1088,12 +1085,12 @@ Powód:
%2</translation>
</message>
<message>
- <location line="+4"/>
+ <location line="-3"/>
<source>Documentation successfully unregistered.</source>
<translation>Dokumentacja poprawnie wyrejestrowana.</translation>
</message>
<message>
- <location line="+13"/>
+ <location line="+18"/>
<source>Cannot load sqlite database driver!</source>
<translation>Nie można odczytać sterownika bazy danych sqlite!</translation>
</message>
@@ -1112,7 +1109,7 @@ Powód:
<context>
<name>RemoteControl</name>
<message>
- <location filename="../tools/assistant/tools/assistant/remotecontrol.cpp" line="+128"/>
+ <location filename="../tools/assistant/tools/assistant/remotecontrol.cpp" line="+157"/>
<source>Debugging Remote Control</source>
<translation>Zdalne debugowanie</translation>
</message>
@@ -1125,7 +1122,7 @@ Powód:
<context>
<name>SearchWidget</name>
<message>
- <location filename="../tools/assistant/tools/assistant/searchwidget.cpp" line="+163"/>
+ <location filename="../tools/assistant/tools/assistant/searchwidget.cpp" line="+193"/>
<source>&amp;Copy</source>
<translation>S&amp;kopiuj</translation>
</message>
@@ -1154,7 +1151,7 @@ Powód:
<context>
<name>TopicChooser</name>
<message>
- <location filename="../tools/assistant/tools/assistant/topicchooser.cpp" line="+24"/>
+ <location filename="../tools/assistant/tools/assistant/topicchooser.cpp" line="+54"/>
<source>Choose a topic for &lt;b&gt;%1&lt;/b&gt;:</source>
<translation>Wybierz temat dla &lt;b&gt;%1&lt;/b&gt;:</translation>
</message>
diff --git a/translations/assistant_untranslated.ts b/translations/assistant_untranslated.ts
index 5552272..1853155 100644
--- a/translations/assistant_untranslated.ts
+++ b/translations/assistant_untranslated.ts
@@ -1,9 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS><TS version="2.0">
+<!DOCTYPE TS>
+<TS version="2.0">
<context>
<name>AboutDialog</name>
<message>
- <location filename="../tools/assistant/tools/assistant/aboutdialog.cpp" line="+80"/>
+ <location filename="../tools/assistant/tools/assistant/aboutdialog.cpp" line="+110"/>
<source>&amp;Close</source>
<translation type="unfinished"></translation>
</message>
@@ -30,7 +31,7 @@
<context>
<name>BookmarkDialog</name>
<message>
- <location filename="../tools/assistant/tools/assistant/bookmarkmanager.cpp" line="+155"/>
+ <location filename="../tools/assistant/tools/assistant/bookmarkmanager.cpp" line="+185"/>
<location line="+18"/>
<location line="+36"/>
<location line="+24"/>
@@ -149,7 +150,7 @@
<context>
<name>CentralWidget</name>
<message>
- <location filename="../tools/assistant/tools/assistant/centralwidget.cpp" line="+163"/>
+ <location filename="../tools/assistant/tools/assistant/centralwidget.cpp" line="+195"/>
<source>Add new page</source>
<translation type="unfinished"></translation>
</message>
@@ -159,12 +160,12 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+266"/>
+ <location line="+265"/>
<source>Print Document</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+124"/>
+ <location line="+147"/>
<location line="+2"/>
<source>unknown</source>
<translation type="unfinished"></translation>
@@ -190,7 +191,7 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+227"/>
+ <location line="+257"/>
<source>Search</source>
<translation type="unfinished"></translation>
</message>
@@ -198,7 +199,7 @@
<context>
<name>ContentWindow</name>
<message>
- <location filename="../tools/assistant/tools/assistant/contentwindow.cpp" line="+115"/>
+ <location filename="../tools/assistant/tools/assistant/contentwindow.cpp" line="+155"/>
<source>Open Link</source>
<translation type="unfinished"></translation>
</message>
@@ -224,7 +225,7 @@
<context>
<name>FindWidget</name>
<message>
- <location filename="../tools/assistant/tools/assistant/centralwidget.cpp" line="-809"/>
+ <location filename="../tools/assistant/tools/assistant/centralwidget.cpp" line="-863"/>
<source>Previous</source>
<translation type="unfinished"></translation>
</message>
@@ -252,7 +253,7 @@
<context>
<name>FontPanel</name>
<message>
- <location filename="../tools/shared/fontpanel/fontpanel.cpp" line="+33"/>
+ <location filename="../tools/shared/fontpanel/fontpanel.cpp" line="+63"/>
<source>Font</source>
<translation type="unfinished"></translation>
</message>
@@ -280,7 +281,7 @@
<context>
<name>HelpViewer</name>
<message>
- <location filename="../tools/assistant/tools/assistant/helpviewer.cpp" line="+310"/>
+ <location filename="../tools/assistant/tools/assistant/helpviewer.cpp" line="+481"/>
<source>Help</source>
<translation type="unfinished"></translation>
</message>
@@ -290,12 +291,12 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+17"/>
+ <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 type="unfinished"></translation>
</message>
<message>
- <location line="+90"/>
+ <location line="+125"/>
<source>Copy &amp;Link Location</source>
<translation type="unfinished"></translation>
</message>
@@ -305,12 +306,12 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-238"/>
+ <location line="-267"/>
<source>Open Link in New Tab</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+128"/>
+ <location line="+201"/>
<source>Unable to launch external application.
</source>
<translation type="unfinished"></translation>
@@ -319,12 +320,12 @@
<context>
<name>IndexWindow</name>
<message>
- <location filename="../tools/assistant/tools/assistant/indexwindow.cpp" line="+36"/>
+ <location filename="../tools/assistant/tools/assistant/indexwindow.cpp" line="+66"/>
<source>&amp;Look for:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+70"/>
+ <location line="+68"/>
<source>Open Link</source>
<translation type="unfinished"></translation>
</message>
@@ -337,7 +338,7 @@
<context>
<name>InstallDialog</name>
<message>
- <location filename="../tools/assistant/tools/assistant/installdialog.cpp" line="+45"/>
+ <location filename="../tools/assistant/tools/assistant/installdialog.cpp" line="+75"/>
<location filename="../tools/assistant/tools/assistant/installdialog.ui"/>
<source>Install Documentation</source>
<translation type="unfinished"></translation>
@@ -436,84 +437,69 @@
<context>
<name>MainWindow</name>
<message>
- <location filename="../tools/assistant/tools/assistant/mainwindow.cpp" line="+78"/>
- <location line="+345"/>
+ <location filename="../tools/assistant/tools/assistant/mainwindow.cpp" line="+108"/>
+ <location line="+350"/>
<source>Index</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-339"/>
- <location line="+337"/>
+ <location line="-344"/>
+ <location line="+342"/>
<source>Contents</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-332"/>
- <location line="+336"/>
+ <location line="-337"/>
+ <location line="+341"/>
<source>Bookmarks</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-324"/>
- <location line="+326"/>
+ <location line="-329"/>
+ <location line="+331"/>
<source>Search</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-314"/>
- <location line="+185"/>
- <location line="+488"/>
+ <location line="-319"/>
+ <location line="+192"/>
+ <location line="+470"/>
<source>Qt Assistant</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-519"/>
+ <location line="-501"/>
<location line="+4"/>
<source>Unfiltered</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+82"/>
+ <location line="+84"/>
<source>Page Set&amp;up...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+1"/>
+ <location line="+2"/>
<source>Print Preview...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+1"/>
- <source>&amp;Print...</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<location line="+3"/>
- <source>CTRL+P</source>
+ <source>&amp;Print...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+4"/>
+ <location line="+6"/>
<source>New &amp;Tab</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+1"/>
- <source>CTRL+T</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location line="+1"/>
+ <location line="+3"/>
<source>&amp;Close Tab</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+1"/>
- <source>CTRL+W</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location line="+2"/>
+ <location line="+4"/>
<source>&amp;Quit</source>
<translation type="unfinished"></translation>
</message>
@@ -528,42 +514,22 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+4"/>
- <source>Ctrl+C</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location line="+3"/>
+ <location line="+6"/>
<source>&amp;Find in Text...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+4"/>
- <source>Ctrl+F</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location line="+3"/>
+ <location line="+5"/>
<source>Find &amp;Next</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+2"/>
- <source>F3</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location line="+3"/>
+ <location line="+4"/>
<source>Find &amp;Previous</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+2"/>
- <source>Shift+F3</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location line="+4"/>
+ <location line="+5"/>
<source>Preferences...</source>
<translation type="unfinished"></translation>
</message>
@@ -573,27 +539,17 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+4"/>
- <source>Ctrl++</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location line="+2"/>
+ <location line="+5"/>
<source>Zoom &amp;out</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+4"/>
- <source>Ctrl+-</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location line="+2"/>
+ <location line="+5"/>
<source>Normal &amp;Size</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+4"/>
+ <location line="+3"/>
<source>Ctrl+0</source>
<translation type="unfinished"></translation>
</message>
@@ -618,27 +574,27 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+2"/>
+ <location line="+1"/>
<source>Ctrl+Home</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+4"/>
+ <location line="+3"/>
<source>&amp;Back</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+7"/>
+ <location line="+5"/>
<source>&amp;Forward</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+7"/>
+ <location line="+5"/>
<source>Sync with Table of Contents</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+7"/>
+ <location line="+6"/>
<source>Next Page</source>
<translation type="unfinished"></translation>
</message>
@@ -653,7 +609,7 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+2"/>
+ <location line="+1"/>
<source>Ctrl+Alt+Left</source>
<translation type="unfinished"></translation>
</message>
@@ -673,7 +629,7 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+75"/>
+ <location line="+74"/>
<source>Toolbars</source>
<translation type="unfinished"></translation>
</message>
@@ -688,7 +644,7 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+21"/>
+ <location line="+23"/>
<source>Address Toolbar</source>
<translation type="unfinished"></translation>
</message>
@@ -698,27 +654,12 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+108"/>
+ <location line="+110"/>
<source>Could not find the associated content item.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+60"/>
- <source>Open Source Edition</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location line="+1"/>
- <source>This version of Qt Assistant is part of the Qt Open Source Edition, for use in the development of Open Source applications. Qt is a comprehensive C++ framework for cross-platform application development.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location line="+10"/>
- <source>This program is licensed to you under the terms of the Qt Commercial License Agreement. For details, see the file LICENSE that came with this software distribution.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location line="+20"/>
+ <location line="+81"/>
<source>About %1</source>
<translation type="unfinished"></translation>
</message>
@@ -728,17 +669,17 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-614"/>
+ <location line="-597"/>
<source>Looking for Qt Documentation...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+205"/>
+ <location line="+195"/>
<source>&amp;Window</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+2"/>
+ <location line="+3"/>
<source>Minimize</source>
<translation type="unfinished"></translation>
</message>
@@ -748,32 +689,32 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+1"/>
+ <location line="-2"/>
<source>Zoom</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-150"/>
+ <location line="-136"/>
<source>&amp;File</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+20"/>
+ <location line="+24"/>
<source>&amp;Edit</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+29"/>
+ <location line="+24"/>
<source>&amp;View</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+30"/>
+ <location line="+27"/>
<source>&amp;Go</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+37"/>
+ <location line="+29"/>
<source>&amp;Bookmarks</source>
<translation type="unfinished"></translation>
</message>
@@ -783,17 +724,12 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+294"/>
- <source>You need a commercial Qt license for development of proprietary (closed source) applications. Please see &lt;a href=&quot;http://qtsoftware.com/company/about/businessmodel&quot;&gt;http://qtsoftware.com/company/about/businessmodel&lt;/a&gt; for an overview of Qt licensing.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location line="-339"/>
+ <location line="-37"/>
<source>ALT+O</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+43"/>
+ <location line="+35"/>
<source>CTRL+D</source>
<translation type="unfinished"></translation>
</message>
@@ -801,7 +737,7 @@
<context>
<name>PreferencesDialog</name>
<message>
- <location filename="../tools/assistant/tools/assistant/preferencesdialog.cpp" line="+238"/>
+ <location filename="../tools/assistant/tools/assistant/preferencesdialog.cpp" line="+237"/>
<location line="+7"/>
<location line="+6"/>
<source>Add Documentation</source>
@@ -823,7 +759,27 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+122"/>
+ <location line="+23"/>
+ <source>Remove Documentation</source>
+ <translation type="unfinished"></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 type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>OK</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+86"/>
<source>Use custom settings</source>
<translation type="unfinished"></translation>
</message>
@@ -902,26 +858,6 @@
</message>
<message>
<location/>
- <source>Network</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location/>
- <source>Use Http Proxy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location/>
- <source>Http Proxy:</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location/>
- <source>Port:</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location/>
<source>Options</source>
<translation type="unfinished"></translation>
</message>
@@ -944,7 +880,7 @@
<context>
<name>QObject</name>
<message>
- <location filename="../tools/assistant/tools/assistant/cmdlineparser.cpp" line="+79"/>
+ <location filename="../tools/assistant/tools/assistant/cmdlineparser.cpp" line="+110"/>
<source>The specified collection file does not exist!</source>
<translation type="unfinished"></translation>
</message>
@@ -990,6 +926,11 @@
<translation type="unfinished"></translation>
</message>
<message>
+ <location line="+7"/>
+ <source>Missing filter argument!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<location line="+10"/>
<source>Unknown option: %1</source>
<translation type="unfinished"></translation>
@@ -1001,7 +942,7 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../tools/assistant/tools/assistant/main.cpp" line="+58"/>
+ <location filename="../tools/assistant/tools/assistant/main.cpp" line="+190"/>
<source>Could not register documentation file
%1
@@ -1015,7 +956,7 @@ Reason:
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+6"/>
+ <location line="+11"/>
<source>Could not unregister documentation file
%1
@@ -1024,12 +965,12 @@ Reason:
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+4"/>
+ <location line="-3"/>
<source>Documentation successfully unregistered.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+13"/>
+ <location line="+18"/>
<source>Cannot load sqlite database driver!</source>
<translation type="unfinished"></translation>
</message>
@@ -1048,7 +989,7 @@ Reason:
<context>
<name>RemoteControl</name>
<message>
- <location filename="../tools/assistant/tools/assistant/remotecontrol.cpp" line="+128"/>
+ <location filename="../tools/assistant/tools/assistant/remotecontrol.cpp" line="+157"/>
<source>Debugging Remote Control</source>
<translation type="unfinished"></translation>
</message>
@@ -1061,7 +1002,7 @@ Reason:
<context>
<name>SearchWidget</name>
<message>
- <location filename="../tools/assistant/tools/assistant/searchwidget.cpp" line="+163"/>
+ <location filename="../tools/assistant/tools/assistant/searchwidget.cpp" line="+193"/>
<source>&amp;Copy</source>
<translation type="unfinished"></translation>
</message>
@@ -1090,7 +1031,7 @@ Reason:
<context>
<name>TopicChooser</name>
<message>
- <location filename="../tools/assistant/tools/assistant/topicchooser.cpp" line="+24"/>
+ <location filename="../tools/assistant/tools/assistant/topicchooser.cpp" line="+54"/>
<source>Choose a topic for &lt;b&gt;%1&lt;/b&gt;:</source>
<translation type="unfinished"></translation>
</message>
diff --git a/translations/assistant_zh_CN.ts b/translations/assistant_zh_CN.ts
index 0384c47..a1f763f 100644
--- a/translations/assistant_zh_CN.ts
+++ b/translations/assistant_zh_CN.ts
@@ -1,11 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.0" language="zh">
-<defaultcodec></defaultcodec>
<context>
<name>AboutDialog</name>
<message>
- <location filename="../tools/assistant/tools/assistant/aboutdialog.cpp" line="+80"/>
+ <location filename="../tools/assistant/tools/assistant/aboutdialog.cpp" line="+110"/>
<source>&amp;Close</source>
<translation>关闭(&amp;C)</translation>
</message>
@@ -33,7 +32,7 @@
<context>
<name>BookmarkDialog</name>
<message>
- <location filename="../tools/assistant/tools/assistant/bookmarkmanager.cpp" line="+155"/>
+ <location filename="../tools/assistant/tools/assistant/bookmarkmanager.cpp" line="+185"/>
<location line="+18"/>
<location line="+36"/>
<location line="+24"/>
@@ -164,7 +163,7 @@
<context>
<name>CentralWidget</name>
<message>
- <location filename="../tools/assistant/tools/assistant/centralwidget.cpp" line="+163"/>
+ <location filename="../tools/assistant/tools/assistant/centralwidget.cpp" line="+195"/>
<source>Add new page</source>
<translation>添加新页é¢</translation>
</message>
@@ -174,12 +173,12 @@
<translation>关闭当å‰é¡µé¢</translation>
</message>
<message>
- <location line="+266"/>
+ <location line="+265"/>
<source>Print Document</source>
<translation>打å°æ–‡æ¡£</translation>
</message>
<message>
- <location line="+124"/>
+ <location line="+147"/>
<location line="+2"/>
<source>unknown</source>
<translation>未知的</translation>
@@ -205,7 +204,7 @@
<translation>把这个页é¢æ·»åŠ ä¸ºä¹¦ç­¾...</translation>
</message>
<message>
- <location line="+227"/>
+ <location line="+257"/>
<source>Search</source>
<translation>æœç´¢</translation>
</message>
@@ -213,7 +212,7 @@
<context>
<name>ContentWindow</name>
<message>
- <location filename="../tools/assistant/tools/assistant/contentwindow.cpp" line="+115"/>
+ <location filename="../tools/assistant/tools/assistant/contentwindow.cpp" line="+155"/>
<source>Open Link</source>
<translation>打开链接</translation>
</message>
@@ -243,7 +242,7 @@
<context>
<name>FindWidget</name>
<message>
- <location filename="../tools/assistant/tools/assistant/centralwidget.cpp" line="-809"/>
+ <location filename="../tools/assistant/tools/assistant/centralwidget.cpp" line="-863"/>
<source>Previous</source>
<translation>上一个</translation>
</message>
@@ -271,7 +270,7 @@
<context>
<name>FontPanel</name>
<message>
- <location filename="../tools/shared/fontpanel/fontpanel.cpp" line="+33"/>
+ <location filename="../tools/shared/fontpanel/fontpanel.cpp" line="+63"/>
<source>Font</source>
<translation>字体</translation>
</message>
@@ -299,7 +298,7 @@
<context>
<name>HelpViewer</name>
<message>
- <location filename="../tools/assistant/tools/assistant/helpviewer.cpp" line="+310"/>
+ <location filename="../tools/assistant/tools/assistant/helpviewer.cpp" line="+481"/>
<source>Help</source>
<translation>帮助</translation>
</message>
@@ -315,12 +314,12 @@
<translation>确定</translation>
</message>
<message>
- <location line="+17"/>
+ <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;404 错误...&lt;/title&gt;&lt;div align=&quot;center&quot;&gt;&lt;br&gt;&lt;br&gt;&lt;h1&gt;ä¸èƒ½æ‰¾åˆ°è¯¥é¡µé¢&lt;/h1&gt;&lt;br&gt;&lt;h3&gt;&apos;%1&apos;&lt;/h3&gt;&lt;/div&gt;</translation>
</message>
<message>
- <location line="+90"/>
+ <location line="+125"/>
<source>Copy &amp;Link Location</source>
<translation>å¤åˆ¶é“¾æŽ¥åœ°å€(&amp;L)</translation>
</message>
@@ -330,12 +329,12 @@
<translation>在新标签页中打开链接 Ctrl+LMB</translation>
</message>
<message>
- <location line="-238"/>
+ <location line="-267"/>
<source>Open Link in New Tab</source>
<translation>在新标签页中打开链接</translation>
</message>
<message>
- <location line="+128"/>
+ <location line="+201"/>
<source>Unable to launch external application.
</source>
<translation>ä¸èƒ½å¯åŠ¨å¤–部应用程åºã€‚
@@ -345,12 +344,12 @@
<context>
<name>IndexWindow</name>
<message>
- <location filename="../tools/assistant/tools/assistant/indexwindow.cpp" line="+36"/>
+ <location filename="../tools/assistant/tools/assistant/indexwindow.cpp" line="+66"/>
<source>&amp;Look for:</source>
<translation>查找(&amp;L):</translation>
</message>
<message>
- <location line="+70"/>
+ <location line="+68"/>
<source>Open Link</source>
<translation>打开链接</translation>
</message>
@@ -363,7 +362,7 @@
<context>
<name>InstallDialog</name>
<message>
- <location filename="../tools/assistant/tools/assistant/installdialog.cpp" line="+45"/>
+ <location filename="../tools/assistant/tools/assistant/installdialog.cpp" line="+75"/>
<location filename="../tools/assistant/tools/assistant/installdialog.ui"/>
<source>Install Documentation</source>
<translation>安装文档</translation>
@@ -463,38 +462,38 @@
<context>
<name>MainWindow</name>
<message>
- <location filename="../tools/assistant/tools/assistant/mainwindow.cpp" line="+78"/>
- <location line="+345"/>
+ <location filename="../tools/assistant/tools/assistant/mainwindow.cpp" line="+108"/>
+ <location line="+350"/>
<source>Index</source>
<translation>索引</translation>
</message>
<message>
- <location line="-339"/>
- <location line="+337"/>
+ <location line="-344"/>
+ <location line="+342"/>
<source>Contents</source>
<translation>内容</translation>
</message>
<message>
- <location line="-332"/>
- <location line="+336"/>
+ <location line="-337"/>
+ <location line="+341"/>
<source>Bookmarks</source>
<translation>书签</translation>
</message>
<message>
- <location line="-324"/>
- <location line="+326"/>
+ <location line="-329"/>
+ <location line="+331"/>
<source>Search</source>
<translation>æœç´¢</translation>
</message>
<message>
- <location line="-314"/>
- <location line="+185"/>
- <location line="+488"/>
+ <location line="-319"/>
+ <location line="+192"/>
+ <location line="+470"/>
<source>Qt Assistant</source>
<translation>Qt 助手</translation>
</message>
<message>
- <location line="-519"/>
+ <location line="-501"/>
<location line="+4"/>
<source>Unfiltered</source>
<translation>未过滤的</translation>
@@ -504,47 +503,44 @@
<translation type="obsolete">文件</translation>
</message>
<message>
- <location line="+82"/>
+ <location line="+84"/>
<source>Page Set&amp;up...</source>
<translation>页é¢è®¾ç½®(&amp;U)...</translation>
</message>
<message>
- <location line="+1"/>
+ <location line="+2"/>
<source>Print Preview...</source>
<translation>打å°é¢„览...</translation>
</message>
<message>
- <location line="+1"/>
+ <location line="+3"/>
<source>&amp;Print...</source>
<translation>打å°(&amp;P)...</translation>
</message>
<message>
- <location line="+3"/>
<source>CTRL+P</source>
- <translation>CTRL+P</translation>
+ <translation type="obsolete">CTRL+P</translation>
</message>
<message>
- <location line="+4"/>
+ <location line="+6"/>
<source>New &amp;Tab</source>
<translation>新建标签页(&amp;T)</translation>
</message>
<message>
- <location line="+1"/>
<source>CTRL+T</source>
- <translation>CTRL+T</translation>
+ <translation type="obsolete">CTRL+T</translation>
</message>
<message>
- <location line="+1"/>
+ <location line="+3"/>
<source>&amp;Close Tab</source>
<translation>关闭标签页(&amp;C)</translation>
</message>
<message>
- <location line="+1"/>
<source>CTRL+W</source>
- <translation>CTRL+W</translation>
+ <translation type="obsolete">CTRL+W</translation>
</message>
<message>
- <location line="+2"/>
+ <location line="+4"/>
<source>&amp;Quit</source>
<translation>退出(&amp;Q)</translation>
</message>
@@ -563,42 +559,38 @@
<translation>å¤åˆ¶é€‰ä¸­çš„文本(&amp;C)</translation>
</message>
<message>
- <location line="+4"/>
<source>Ctrl+C</source>
- <translation>Ctrl+C</translation>
+ <translation type="obsolete">Ctrl+C</translation>
</message>
<message>
- <location line="+3"/>
+ <location line="+6"/>
<source>&amp;Find in Text...</source>
<translation>在文本中查找(&amp;F)...</translation>
</message>
<message>
- <location line="+4"/>
<source>Ctrl+F</source>
- <translation>Ctrl+F</translation>
+ <translation type="obsolete">Ctrl+F</translation>
</message>
<message>
- <location line="+3"/>
+ <location line="+5"/>
<source>Find &amp;Next</source>
<translation>查找下一个(&amp;N)</translation>
</message>
<message>
- <location line="+2"/>
<source>F3</source>
- <translation>F3</translation>
+ <translation type="obsolete">F3</translation>
</message>
<message>
- <location line="+3"/>
+ <location line="+4"/>
<source>Find &amp;Previous</source>
<translation>查找上一个(&amp;P)</translation>
</message>
<message>
- <location line="+2"/>
<source>Shift+F3</source>
- <translation>Shift+F3</translation>
+ <translation type="obsolete">Shift+F3</translation>
</message>
<message>
- <location line="+4"/>
+ <location line="+5"/>
<source>Preferences...</source>
<translation>首选项...</translation>
</message>
@@ -612,27 +604,25 @@
<translation>放大(&amp;I)</translation>
</message>
<message>
- <location line="+4"/>
<source>Ctrl++</source>
- <translation>Ctrl++</translation>
+ <translation type="obsolete">Ctrl++</translation>
</message>
<message>
- <location line="+2"/>
+ <location line="+5"/>
<source>Zoom &amp;out</source>
<translation>缩å°(&amp;O)</translation>
</message>
<message>
- <location line="+4"/>
<source>Ctrl+-</source>
- <translation>Ctrl+-</translation>
+ <translation type="obsolete">Ctrl+-</translation>
</message>
<message>
- <location line="+2"/>
+ <location line="+5"/>
<source>Normal &amp;Size</source>
<translation>正常大å°(&amp;S)</translation>
</message>
<message>
- <location line="+4"/>
+ <location line="+3"/>
<source>Ctrl+0</source>
<translation>Ctrl+0</translation>
</message>
@@ -665,27 +655,27 @@
<translation>主页(&amp;H)</translation>
</message>
<message>
- <location line="+2"/>
+ <location line="+1"/>
<source>Ctrl+Home</source>
<translation>Ctrl+Home</translation>
</message>
<message>
- <location line="+4"/>
+ <location line="+3"/>
<source>&amp;Back</source>
<translation>åŽé€€(&amp;B)</translation>
</message>
<message>
- <location line="+7"/>
+ <location line="+5"/>
<source>&amp;Forward</source>
<translation>å‰è¿›(&amp;F)</translation>
</message>
<message>
- <location line="+7"/>
+ <location line="+5"/>
<source>Sync with Table of Contents</source>
<translation>åŒæ­¥ç›®å½•</translation>
</message>
<message>
- <location line="+7"/>
+ <location line="+6"/>
<source>Next Page</source>
<translation>下一页</translation>
</message>
@@ -700,7 +690,7 @@
<translation>上一页</translation>
</message>
<message>
- <location line="+2"/>
+ <location line="+1"/>
<source>Ctrl+Alt+Left</source>
<translation>Ctrl+Alt+Left</translation>
</message>
@@ -728,7 +718,7 @@
<translation>导航工具æ </translation>
</message>
<message>
- <location line="+75"/>
+ <location line="+74"/>
<source>Toolbars</source>
<translation>工具æ </translation>
</message>
@@ -743,7 +733,7 @@
<translation>过滤器为:</translation>
</message>
<message>
- <location line="+21"/>
+ <location line="+23"/>
<source>Address Toolbar</source>
<translation>地å€å·¥å…·æ </translation>
</message>
@@ -753,27 +743,24 @@
<translation>地å€ï¼š</translation>
</message>
<message>
- <location line="+108"/>
+ <location line="+110"/>
<source>Could not find the associated content item.</source>
<translation>ä¸èƒ½æ‰¾åˆ°ç›¸å…³å†…容项目。</translation>
</message>
<message>
- <location line="+60"/>
<source>Open Source Edition</source>
- <translation>å¼€æºç‰ˆæœ¬</translation>
+ <translation type="obsolete">å¼€æºç‰ˆæœ¬</translation>
</message>
<message>
- <location line="+1"/>
<source>This version of Qt Assistant is part of the Qt Open Source Edition, for use in the development of Open Source applications. Qt is a comprehensive C++ framework for cross-platform application development.</source>
- <translation>这个版本的 Qt 助手是 Qt å¼€æºç‰ˆæœ¬çš„一部分,用于开å‘å¼€æºåº”用程åºã€‚Qt 是一个用于跨平å°åº”用程åºå¼€å‘çš„ç»¼åˆ C++ 框架。</translation>
+ <translation type="obsolete">这个版本的 Qt 助手是 Qt å¼€æºç‰ˆæœ¬çš„一部分,用于开å‘å¼€æºåº”用程åºã€‚Qt 是一个用于跨平å°åº”用程åºå¼€å‘çš„ç»¼åˆ C++ 框架。</translation>
</message>
<message>
- <location line="+10"/>
<source>This program is licensed to you under the terms of the Qt Commercial License Agreement. For details, see the file LICENSE that came with this software distribution.</source>
- <translation>我们已ç»å…许您在 Qt 商业许å¯å议下使用本程åºã€‚有关细节,请阅读本软件å‘行中所带的 LICENSE 文件。</translation>
+ <translation type="obsolete">我们已ç»å…许您在 Qt 商业许å¯å议下使用本程åºã€‚有关细节,请阅读本软件å‘行中所带的 LICENSE 文件。</translation>
</message>
<message>
- <location line="+20"/>
+ <location line="+81"/>
<source>About %1</source>
<translation>关于 %1</translation>
</message>
@@ -783,17 +770,17 @@
<translation>正在更新æœç´¢ç´¢å¼•</translation>
</message>
<message>
- <location line="-614"/>
+ <location line="-597"/>
<source>Looking for Qt Documentation...</source>
<translation>正在查找 Qt 文档...</translation>
</message>
<message>
- <location line="+205"/>
+ <location line="+195"/>
<source>&amp;Window</source>
<translation>窗å£(&amp;W)</translation>
</message>
<message>
- <location line="+2"/>
+ <location line="+3"/>
<source>Minimize</source>
<translation>最å°åŒ–</translation>
</message>
@@ -803,7 +790,7 @@
<translation>Ctrl+M</translation>
</message>
<message>
- <location line="+1"/>
+ <location line="-2"/>
<source>Zoom</source>
<translation>缩放</translation>
</message>
@@ -816,27 +803,26 @@
<translation type="obsolete">移除</translation>
</message>
<message>
- <location line="+264"/>
<source>You need a commercial Qt license for development of proprietary (closed source) applications. Please see &lt;a href=&quot;http://qtsoftware.com/company/about/businessmodel&quot;&gt;http://qtsoftware.com/company/about/businessmodel&lt;/a&gt; for an overview of Qt licensing.</source>
- <translation>å¼€å‘商业(闭æºï¼‰åº”用程åºï¼Œä½ éœ€è¦å•†ä¸š Qt 许å¯ã€‚对于 Qt 许å¯çš„概览,请å‚考&lt;a href=&quot;http://qtsoftware.com/company/about/businessmodel&quot;&gt;qtsoftware.com/company/about/businessmodel&lt;/a&gt;。</translation>
+ <translation type="obsolete">å¼€å‘商业(闭æºï¼‰åº”用程åºï¼Œä½ éœ€è¦å•†ä¸š Qt 许å¯ã€‚对于 Qt 许å¯çš„概览,请å‚考&lt;a href=&quot;http://qtsoftware.com/company/about/businessmodel&quot;&gt;qtsoftware.com/company/about/businessmodel&lt;/a&gt;。</translation>
</message>
<message>
- <location line="-414"/>
+ <location line="-136"/>
<source>&amp;File</source>
<translation>文件(&amp;F)</translation>
</message>
<message>
- <location line="+20"/>
+ <location line="+24"/>
<source>&amp;Edit</source>
<translation>编辑(&amp;E)</translation>
</message>
<message>
- <location line="+29"/>
+ <location line="+24"/>
<source>&amp;View</source>
<translation>查看(&amp;V)</translation>
</message>
<message>
- <location line="+26"/>
+ <location line="+23"/>
<source>ALT+O</source>
<translation>ALT+O</translation>
</message>
@@ -846,7 +832,7 @@
<translation>å‰å¾€(&amp;G)</translation>
</message>
<message>
- <location line="+37"/>
+ <location line="+29"/>
<source>&amp;Bookmarks</source>
<translation>书签(&amp;B)</translation>
</message>
@@ -864,7 +850,7 @@
<context>
<name>PreferencesDialog</name>
<message>
- <location filename="../tools/assistant/tools/assistant/preferencesdialog.cpp" line="+238"/>
+ <location filename="../tools/assistant/tools/assistant/preferencesdialog.cpp" line="+237"/>
<location line="+7"/>
<location line="+6"/>
<source>Add Documentation</source>
@@ -886,7 +872,27 @@
<translation>命å空间 %1 å·²ç»è¢«æ³¨å†Œï¼</translation>
</message>
<message>
- <location line="+122"/>
+ <location line="+23"/>
+ <source>Remove Documentation</source>
+ <translation type="unfinished"></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 type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Cancel</source>
+ <translation type="unfinished">å–消</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>OK</source>
+ <translation type="unfinished">确定</translation>
+ </message>
+ <message>
+ <location line="+86"/>
<source>Use custom settings</source>
<translation>使用自定义设定</translation>
</message>
@@ -964,24 +970,20 @@
<translation>添加...</translation>
</message>
<message>
- <location/>
<source>Network</source>
- <translation>网络</translation>
+ <translation type="obsolete">网络</translation>
</message>
<message>
- <location/>
<source>Use Http Proxy</source>
- <translation>使用 HTTP 代ç†</translation>
+ <translation type="obsolete">使用 HTTP 代ç†</translation>
</message>
<message>
- <location/>
<source>Http Proxy:</source>
- <translation>HTTP 代ç†ï¼š</translation>
+ <translation type="obsolete">HTTP 代ç†ï¼š</translation>
</message>
<message>
- <location/>
<source>Port:</source>
- <translation>端å£ï¼š</translation>
+ <translation type="obsolete">端å£ï¼š</translation>
</message>
<message>
<location/>
@@ -1011,7 +1013,7 @@
<translation type="obsolete">新建文件夹</translation>
</message>
<message>
- <location filename="../tools/assistant/tools/assistant/cmdlineparser.cpp" line="+79"/>
+ <location filename="../tools/assistant/tools/assistant/cmdlineparser.cpp" line="+110"/>
<source>The specified collection file does not exist!</source>
<translation>指定的收è—文件并ä¸å­˜åœ¨ï¼</translation>
</message>
@@ -1057,6 +1059,11 @@
<translation>缺少帮助文件ï¼</translation>
</message>
<message>
+ <location line="+7"/>
+ <source>Missing filter argument!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<location line="+10"/>
<source>Unknown option: %1</source>
<translation>未知的选项:%1</translation>
@@ -1068,7 +1075,7 @@
<translation>Qt 助手</translation>
</message>
<message>
- <location filename="../tools/assistant/tools/assistant/main.cpp" line="+58"/>
+ <location filename="../tools/assistant/tools/assistant/main.cpp" line="+190"/>
<source>Could not register documentation file
%1
@@ -1086,7 +1093,7 @@ Reason:
<translation>文档已ç»æˆåŠŸæ³¨å†Œã€‚</translation>
</message>
<message>
- <location line="+6"/>
+ <location line="+11"/>
<source>Could not unregister documentation file
%1
@@ -1099,12 +1106,12 @@ Reason:
%2</translation>
</message>
<message>
- <location line="+4"/>
+ <location line="-3"/>
<source>Documentation successfully unregistered.</source>
<translation>文档已ç»æˆåŠŸå–消注册。</translation>
</message>
<message>
- <location line="+13"/>
+ <location line="+18"/>
<source>Cannot load sqlite database driver!</source>
<translation>无法加载sqliteæ•°æ®åº“驱动ï¼</translation>
</message>
@@ -1123,7 +1130,7 @@ Reason:
<context>
<name>RemoteControl</name>
<message>
- <location filename="../tools/assistant/tools/assistant/remotecontrol.cpp" line="+128"/>
+ <location filename="../tools/assistant/tools/assistant/remotecontrol.cpp" line="+157"/>
<source>Debugging Remote Control</source>
<translation>正在调试é¥æŽ§å™¨</translation>
</message>
@@ -1136,7 +1143,7 @@ Reason:
<context>
<name>SearchWidget</name>
<message>
- <location filename="../tools/assistant/tools/assistant/searchwidget.cpp" line="+163"/>
+ <location filename="../tools/assistant/tools/assistant/searchwidget.cpp" line="+193"/>
<source>&amp;Copy</source>
<translation>å¤åˆ¶(&amp;C)</translation>
</message>
@@ -1165,7 +1172,7 @@ Reason:
<context>
<name>TopicChooser</name>
<message>
- <location filename="../tools/assistant/tools/assistant/topicchooser.cpp" line="+24"/>
+ <location filename="../tools/assistant/tools/assistant/topicchooser.cpp" line="+54"/>
<source>Choose a topic for &lt;b&gt;%1&lt;/b&gt;:</source>
<translation>为&lt;b&gt;%1&lt;/b&gt;选择一个主题</translation>
</message>
diff --git a/translations/assistant_zh_TW.ts b/translations/assistant_zh_TW.ts
index 179b69c..df6b827 100644
--- a/translations/assistant_zh_TW.ts
+++ b/translations/assistant_zh_TW.ts
@@ -1,10 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS><TS version="1.1" language="zh_TW">
-<defaultcodec></defaultcodec>
+<!DOCTYPE TS>
+<TS version="2.0" language="zh_TW">
<context>
<name>AboutDialog</name>
<message>
- <location filename="../tools/assistant/tools/assistant/aboutdialog.cpp" line="80"/>
+ <location filename="../tools/assistant/tools/assistant/aboutdialog.cpp" line="+110"/>
<source>&amp;Close</source>
<translation>關閉(&amp;C)</translation>
</message>
@@ -12,16 +12,19 @@
<context>
<name>AboutLabel</name>
<message>
+ <location line="-14"/>
<source>Warning</source>
<translation>警告</translation>
</message>
<message>
+ <location line="+1"/>
<source>Unable to launch external application.
</source>
<translation>無法啟動外部應用程å¼ã€‚
</translation>
</message>
<message>
+ <location line="+1"/>
<source>OK</source>
<translation>確定</translation>
</message>
@@ -29,34 +32,46 @@
<context>
<name>BookmarkDialog</name>
<message>
+ <location filename="../tools/assistant/tools/assistant/bookmarkdialog.ui"/>
<source>Add Bookmark</source>
<translation>新增書籤</translation>
</message>
<message>
+ <location/>
<source>Bookmark:</source>
<translation>書籤:</translation>
</message>
<message>
+ <location/>
<source>Add in Folder:</source>
<translation>新增到資料夾:</translation>
</message>
<message>
+ <location/>
<source>New Folder</source>
<translation>新增資料夾</translation>
</message>
<message>
+ <location filename="../tools/assistant/tools/assistant/bookmarkmanager.cpp" line="+185"/>
+ <location line="+18"/>
+ <location line="+36"/>
+ <location line="+24"/>
+ <location line="+32"/>
<source>Bookmarks</source>
<translation>書籤</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="-69"/>
<source>Delete Folder</source>
<translation>刪除資料夾</translation>
</message>
<message>
+ <location line="+1"/>
<source>Rename Folder</source>
<translation>é‡å‘½å資料夾</translation>
</message>
@@ -64,18 +79,23 @@
<context>
<name>BookmarkManager</name>
<message>
+ <location line="+450"/>
<source>Bookmarks</source>
<translation>書籤</translation>
</message>
<message>
+ <location line="+36"/>
<source>Remove</source>
<translation>移除</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>您打算刪除資料夾,這會將裡é¢çš„內容&lt;br&gt;一併移除。您確定è¦ç¹¼çºŒå—Žï¼Ÿ</translation>
</message>
<message>
+ <location line="+109"/>
+ <location line="+9"/>
<source>New Folder</source>
<translation>新資料夾</translation>
</message>
@@ -83,6 +103,7 @@
<context>
<name>BookmarkWidget</name>
<message>
+ <location line="-391"/>
<source>Filter:</source>
<translation>éŽæ¿¾ï¼š</translation>
</message>
@@ -91,6 +112,7 @@
<translation type="obsolete">書籤</translation>
</message>
<message>
+ <location line="+32"/>
<source>Remove</source>
<translation>移除</translation>
</message>
@@ -99,26 +121,32 @@
<translation type="obsolete">您打算刪除資料夾,這會將裡é¢çš„內容一併移除。您確定è¦ç¹¼çºŒå—Žï¼Ÿ</translation>
</message>
<message>
+ <location line="-78"/>
<source>Delete Folder</source>
<translation>刪除資料夾</translation>
</message>
<message>
+ <location line="+1"/>
<source>Rename Folder</source>
<translation>é‡å‘½å資料夾</translation>
</message>
<message>
+ <location line="+2"/>
<source>Show Bookmark</source>
<translation>顯示書籤</translation>
</message>
<message>
+ <location line="+1"/>
<source>Show Bookmark in New Tab</source>
<translation>於新分é é¡¯ç¤ºæ›¸ç±¤</translation>
</message>
<message>
+ <location line="+3"/>
<source>Delete Bookmark</source>
<translation>刪除書籤</translation>
</message>
<message>
+ <location line="+1"/>
<source>Rename Bookmark</source>
<translation>é‡å‘½å書籤</translation>
</message>
@@ -127,6 +155,7 @@
<translation type="obsolete">æœå°‹å­—串:</translation>
</message>
<message>
+ <location line="+61"/>
<source>Add</source>
<translation>新增</translation>
</message>
@@ -134,39 +163,48 @@
<context>
<name>CentralWidget</name>
<message>
- <location filename="../tools/assistant/tools/assistant/centralwidget.cpp" line="163"/>
+ <location filename="../tools/assistant/tools/assistant/centralwidget.cpp" line="+195"/>
<source>Add new page</source>
<translation>新增é é¢</translation>
</message>
<message>
+ <location line="+9"/>
<source>Close current page</source>
<translation>關閉目å‰çš„é é¢</translation>
</message>
<message>
+ <location line="+265"/>
<source>Print Document</source>
<translation>列å°æ–‡ä»¶</translation>
</message>
<message>
+ <location line="+147"/>
+ <location line="+2"/>
<source>unknown</source>
<translation>未知</translation>
</message>
<message>
+ <location line="+96"/>
<source>Add New Page</source>
<translation>新增é é¢</translation>
</message>
<message>
+ <location line="+1"/>
<source>Close This Page</source>
<translation>關閉此é é¢</translation>
</message>
<message>
+ <location line="+1"/>
<source>Close Other Pages</source>
<translation>關閉其他é é¢</translation>
</message>
<message>
+ <location line="+2"/>
<source>Add Bookmark for this Page...</source>
<translation>將此é é¢æ–°å¢žåˆ°æ›¸ç±¤...</translation>
</message>
<message>
+ <location line="+257"/>
<source>Search</source>
<translation>æœå°‹</translation>
</message>
@@ -174,11 +212,12 @@
<context>
<name>ContentWindow</name>
<message>
- <location filename="../tools/assistant/tools/assistant/contentwindow.cpp" line="115"/>
+ <location filename="../tools/assistant/tools/assistant/contentwindow.cpp" line="+155"/>
<source>Open Link</source>
<translation>開啟連çµ</translation>
</message>
<message>
+ <location line="+1"/>
<source>Open Link in New Tab</source>
<translation>在新分é é–‹å•Ÿé€£çµ</translation>
</message>
@@ -190,10 +229,12 @@
<translation type="obsolete">éŽæ¿¾å™¨å稱å°è©±æ¡†</translation>
</message>
<message>
+ <location filename="../tools/assistant/tools/assistant/filternamedialog.ui"/>
<source>Filter Name:</source>
<translation>éŽæ¿¾å™¨å稱:</translation>
</message>
<message>
+ <location/>
<source>Add Filter Name</source>
<translation>新增éŽæ¿¾å™¨å稱</translation>
</message>
@@ -201,22 +242,27 @@
<context>
<name>FindWidget</name>
<message>
+ <location filename="../tools/assistant/tools/assistant/centralwidget.cpp" line="-863"/>
<source>Previous</source>
<translation>å‰ä¸€å€‹</translation>
</message>
<message>
+ <location line="+7"/>
<source>Next</source>
<translation>下一個</translation>
</message>
<message>
+ <location line="+5"/>
<source>Case Sensitive</source>
<translation>å€åˆ†å¤§å°å¯«</translation>
</message>
<message>
+ <location line="+3"/>
<source>Whole words</source>
<translation>整個單字</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;æœå°‹å·²éŽç›¡é ­</translation>
</message>
@@ -224,23 +270,27 @@
<context>
<name>FontPanel</name>
<message>
- <location filename="../tools/shared/fontpanel/fontpanel.cpp" line="33"/>
+ <location filename="../tools/shared/fontpanel/fontpanel.cpp" line="+63"/>
<source>Font</source>
<translation>å­—åž‹</translation>
</message>
<message>
+ <location line="+11"/>
<source>&amp;Writing system</source>
<translation>手寫系統(&amp;W)</translation>
</message>
<message>
+ <location line="+3"/>
<source>&amp;Family</source>
<translation>家æ—(&amp;W)</translation>
</message>
<message>
+ <location line="+4"/>
<source>&amp;Style</source>
<translation>樣å¼(&amp;S)</translation>
</message>
<message>
+ <location line="+4"/>
<source>&amp;Point size</source>
<translation>點大å°(&amp;P)</translation>
</message>
@@ -248,7 +298,7 @@
<context>
<name>HelpViewer</name>
<message>
- <location filename="../tools/assistant/tools/assistant/helpviewer.cpp" line="310"/>
+ <location filename="../tools/assistant/tools/assistant/helpviewer.cpp" line="+481"/>
<source>Help</source>
<translation>說明</translation>
</message>
@@ -259,26 +309,32 @@
</translation>
</message>
<message>
+ <location line="+1"/>
<source>OK</source>
<translation>確定</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;錯誤 404...&lt;/title&gt;&lt;div align=&quot;center&quot;&gt;&lt;br&gt;&lt;br&gt;&lt;h1&gt;找ä¸åˆ°é é¢&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;L)</translation>
</message>
<message>
- <source>Open Link in New Tab<byte value="x9"/>Ctrl+LMB</source>
- <translation>在新分é é–‹å•Ÿé€£çµ<byte value="x9"/>Ctrl+滑鼠左éµ</translation>
+ <location line="+3"/>
+ <source>Open Link in New Tab Ctrl+LMB</source>
+ <translation>在新分é é–‹å•Ÿé€£çµ Ctrl+滑鼠左éµ</translation>
</message>
<message>
+ <location line="-267"/>
<source>Open Link in New Tab</source>
<translation>在新分é é–‹å•Ÿé€£çµ</translation>
</message>
<message>
+ <location line="+201"/>
<source>Unable to launch external application.
</source>
<translation>無法啟動外部應用程å¼ã€‚
@@ -288,15 +344,17 @@
<context>
<name>IndexWindow</name>
<message>
- <location filename="../tools/assistant/tools/assistant/indexwindow.cpp" line="36"/>
+ <location filename="../tools/assistant/tools/assistant/indexwindow.cpp" line="+66"/>
<source>&amp;Look for:</source>
<translation>æœå°‹(&amp;L):</translation>
</message>
<message>
+ <location line="+68"/>
<source>Open Link</source>
<translation>開啟連çµ</translation>
</message>
<message>
+ <location line="+1"/>
<source>Open Link in New Tab</source>
<translation>在新分é é–‹å•Ÿé€£çµ</translation>
</message>
@@ -304,76 +362,99 @@
<context>
<name>InstallDialog</name>
<message>
+ <location filename="../tools/assistant/tools/assistant/installdialog.cpp" line="+75"/>
+ <location filename="../tools/assistant/tools/assistant/installdialog.ui"/>
<source>Install Documentation</source>
<translation>安è£æ–‡ä»¶</translation>
</message>
<message>
+ <location line="+30"/>
<source>Downloading documentation info...</source>
<translation>下載文件資訊中...</translation>
</message>
<message>
+ <location line="+48"/>
<source>Download canceled.</source>
<translation>下載已å–消。</translation>
</message>
<message>
+ <location line="+26"/>
+ <location line="+78"/>
+ <location line="+27"/>
<source>Done.</source>
<translation>完æˆã€‚</translation>
</message>
<message>
+ <location line="-90"/>
<source>The file %1 already exists. Do you want to overwrite it?</source>
<translation>檔案 %1 已存在。您è¦è¦†å¯«å®ƒå—Žï¼Ÿ</translation>
</message>
<message>
+ <location line="+11"/>
<source>Unable to save the file %1: %2.</source>
<translation>無法儲存檔案 %1:%2。</translation>
</message>
<message>
+ <location line="+8"/>
<source>Downloading %1...</source>
<translation>下載 %1 中...</translation>
</message>
<message>
+ <location line="+19"/>
+ <location line="+42"/>
+ <location line="+38"/>
<source>Download failed: %1.</source>
<translation>下載失敗:%1。</translation>
</message>
<message>
+ <location line="-70"/>
<source>Documentation info file is corrupt!</source>
<translation>文件資訊檔已æ毀ï¼</translation>
</message>
<message>
+ <location line="+37"/>
<source>Download failed: Downloaded file is corrupted.</source>
<translation>下載失敗:下載的檔案已æ毀。</translation>
</message>
<message>
+ <location line="+2"/>
<source>Installing documentation %1...</source>
<translation>安è£æ–‡ä»¶ %1 中...</translation>
</message>
<message>
+ <location line="+22"/>
<source>Error while installing documentation:
%1</source>
<translation>安è£æ–‡ä»¶æ™‚發生錯誤:
%1</translation>
</message>
<message>
+ <location filename="../tools/assistant/tools/assistant/installdialog.ui"/>
<source>Available Documentation:</source>
<translation>å¯ç”¨çš„文件:</translation>
</message>
<message>
+ <location/>
<source>Install</source>
<translation>安è£</translation>
</message>
<message>
+ <location/>
<source>Cancel</source>
<translation>å–消</translation>
</message>
<message>
+ <location/>
<source>Close</source>
<translation>關閉</translation>
</message>
<message>
+ <location/>
<source>Installation Path:</source>
<translation>安è£è·¯å¾‘:</translation>
</message>
<message>
+ <location/>
<source>...</source>
<translation>...</translation>
</message>
@@ -381,26 +462,39 @@
<context>
<name>MainWindow</name>
<message>
+ <location filename="../tools/assistant/tools/assistant/mainwindow.cpp" line="+108"/>
+ <location line="+350"/>
<source>Index</source>
<translation>索引</translation>
</message>
<message>
+ <location line="-344"/>
+ <location line="+342"/>
<source>Contents</source>
<translation>內容</translation>
</message>
<message>
+ <location line="-337"/>
+ <location line="+341"/>
<source>Bookmarks</source>
<translation>書籤</translation>
</message>
<message>
+ <location line="-329"/>
+ <location line="+331"/>
<source>Search</source>
<translation>æœå°‹</translation>
</message>
<message>
+ <location line="-319"/>
+ <location line="+192"/>
+ <location line="+470"/>
<source>Qt Assistant</source>
<translation>Qt å°å¹«æ‰‹</translation>
</message>
<message>
+ <location line="-501"/>
+ <location line="+4"/>
<source>Unfiltered</source>
<translation>未éŽæ¿¾</translation>
</message>
@@ -409,42 +503,49 @@
<translation type="obsolete">檔案</translation>
</message>
<message>
+ <location line="+84"/>
<source>Page Set&amp;up...</source>
<translation>é é¢è¨­å®š(&amp;U)...</translation>
</message>
<message>
+ <location line="+2"/>
<source>Print Preview...</source>
<translation>列å°é è¦½...</translation>
</message>
<message>
+ <location line="+3"/>
<source>&amp;Print...</source>
<translation>列å°(&amp;P)...</translation>
</message>
<message>
<source>CTRL+P</source>
- <translation>CTRL+P</translation>
+ <translation type="obsolete">CTRL+P</translation>
</message>
<message>
+ <location line="+6"/>
<source>New &amp;Tab</source>
<translation>新增分é (&amp;T)</translation>
</message>
<message>
<source>CTRL+T</source>
- <translation>CTRL+T</translation>
+ <translation type="obsolete">CTRL+T</translation>
</message>
<message>
+ <location line="+3"/>
<source>&amp;Close Tab</source>
<translation>關閉分é (&amp;C)</translation>
</message>
<message>
<source>CTRL+W</source>
- <translation>CTRL+W</translation>
+ <translation type="obsolete">CTRL+W</translation>
</message>
<message>
+ <location line="+4"/>
<source>&amp;Quit</source>
<translation>離開(&amp;Q)</translation>
</message>
<message>
+ <location line="+1"/>
<source>CTRL+Q</source>
<translation>CTRL+Q</translation>
</message>
@@ -453,38 +554,43 @@
<translation type="obsolete">編輯</translation>
</message>
<message>
+ <location line="+4"/>
<source>&amp;Copy selected Text</source>
<translation>複製é¸å–的文字(&amp;C)</translation>
</message>
<message>
<source>Ctrl+C</source>
- <translation>Ctrl+C</translation>
+ <translation type="obsolete">Ctrl+C</translation>
</message>
<message>
+ <location line="+6"/>
<source>&amp;Find in Text...</source>
<translation>在文字中尋找(&amp;F)...</translation>
</message>
<message>
<source>Ctrl+F</source>
- <translation>Ctrl+F</translation>
+ <translation type="obsolete">Ctrl+F</translation>
</message>
<message>
+ <location line="+5"/>
<source>Find &amp;Next</source>
<translation>尋找下一筆(&amp;N)</translation>
</message>
<message>
<source>F3</source>
- <translation>F3</translation>
+ <translation type="obsolete">F3</translation>
</message>
<message>
+ <location line="+4"/>
<source>Find &amp;Previous</source>
<translation>尋找å‰ä¸€ç­†(&amp;P)</translation>
</message>
<message>
<source>Shift+F3</source>
- <translation>Shift+F3</translation>
+ <translation type="obsolete">Shift+F3</translation>
</message>
<message>
+ <location line="+5"/>
<source>Preferences...</source>
<translation>喜好設定...</translation>
</message>
@@ -493,34 +599,40 @@
<translation type="obsolete">檢視</translation>
</message>
<message>
+ <location line="+4"/>
<source>Zoom &amp;in</source>
<translation>放大(&amp;I)</translation>
</message>
<message>
<source>Ctrl++</source>
- <translation>Ctrl++</translation>
+ <translation type="obsolete">Ctrl++</translation>
</message>
<message>
+ <location line="+5"/>
<source>Zoom &amp;out</source>
<translation>縮å°(&amp;O)</translation>
</message>
<message>
<source>Ctrl+-</source>
- <translation>Ctrl+-</translation>
+ <translation type="obsolete">Ctrl+-</translation>
</message>
<message>
+ <location line="+5"/>
<source>Normal &amp;Size</source>
<translation>一般大å°(&amp;S)</translation>
</message>
<message>
+ <location line="+3"/>
<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>
@@ -529,6 +641,7 @@
<translation type="obsolete">ALT+B</translation>
</message>
<message>
+ <location line="+4"/>
<source>ALT+S</source>
<translation>ALT+S</translation>
</message>
@@ -537,42 +650,52 @@
<translation type="obsolete">å‰å¾€</translation>
</message>
<message>
+ <location line="+3"/>
<source>&amp;Home</source>
<translation>首é (&amp;H)</translation>
</message>
<message>
+ <location line="+1"/>
<source>Ctrl+Home</source>
<translation>Ctrl+Home</translation>
</message>
<message>
+ <location line="+3"/>
<source>&amp;Back</source>
<translation>返回(&amp;B)</translation>
</message>
<message>
+ <location line="+5"/>
<source>&amp;Forward</source>
<translation>å¾€å‰(&amp;F)</translation>
</message>
<message>
+ <location line="+5"/>
<source>Sync with Table of Contents</source>
<translation>與目錄åŒæ­¥</translation>
</message>
<message>
+ <location line="+6"/>
<source>Next Page</source>
<translation>下一é </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>å‰ä¸€é </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>新增書籤...</translation>
</message>
@@ -585,44 +708,52 @@
<translation type="obsolete">說明</translation>
</message>
<message>
+ <location line="+4"/>
<source>About...</source>
<translation>關於...</translation>
</message>
<message>
+ <location line="+3"/>
<source>Navigation Toolbar</source>
<translation>導覽工具列</translation>
</message>
<message>
+ <location line="+74"/>
<source>Toolbars</source>
<translation>工具列</translation>
</message>
<message>
+ <location line="+15"/>
<source>Filter Toolbar</source>
<translation>éŽæ¿¾å™¨å·¥å…·åˆ—</translation>
</message>
<message>
+ <location line="+2"/>
<source>Filtered by:</source>
<translation>å·²éŽæ¿¾ï¼š</translation>
</message>
<message>
+ <location line="+23"/>
<source>Address Toolbar</source>
<translation>ä½å€å·¥å…·åˆ—</translation>
</message>
<message>
+ <location line="+4"/>
<source>Address:</source>
<translation>ä½å€ï¼š</translation>
</message>
<message>
+ <location line="+110"/>
<source>Could not find the associated content item.</source>
<translation>找ä¸åˆ°ç›¸é—œçš„內容項目。</translation>
</message>
<message>
<source>Open Source Edition</source>
- <translation>開放æºç¢¼ç‰ˆæœ¬</translation>
+ <translation type="obsolete">開放æºç¢¼ç‰ˆæœ¬</translation>
</message>
<message>
<source>This version of Qt Assistant is part of the Qt Open Source Edition, for use in the development of Open Source applications. Qt is a comprehensive C++ framework for cross-platform application development.</source>
- <translation>此版本的 Qt å°å¹«æ‰‹æ˜¯ Qt 開放æºç¢¼ç‰ˆæœ¬çš„一部份,åªèƒ½ç”¨æ–¼é–‹ç™¼é–‹æ”¾æºç¢¼çš„應用程å¼ã€‚Qt 為一個跨平å°çš„,強大的 C++ 應用程å¼é–‹ç™¼æ¡†æž¶ã€‚</translation>
+ <translation type="obsolete">此版本的 Qt å°å¹«æ‰‹æ˜¯ Qt 開放æºç¢¼ç‰ˆæœ¬çš„一部份,åªèƒ½ç”¨æ–¼é–‹ç™¼é–‹æ”¾æºç¢¼çš„應用程å¼ã€‚Qt 為一個跨平å°çš„,強大的 C++ 應用程å¼é–‹ç™¼æ¡†æž¶ã€‚</translation>
</message>
<message>
<source>You need a commercial Qt license for development of proprietary (closed source) applications. Please see &lt;a href=&quot;http://qtsoftware.com/company/model.html&quot;&gt;qtsoftware.com/company/model.html&lt;/a&gt; for an overview of Qt licensing.</source>
@@ -630,33 +761,40 @@
</message>
<message>
<source>This program is licensed to you under the terms of the Qt Commercial License Agreement. For details, see the file LICENSE that came with this software distribution.</source>
- <translation>此程å¼ä»¥ Qt 商業授權åŒæ„書(Qt Commerical License Agreement)授權給您。詳情請åƒç…§ LICENSE 檔。</translation>
+ <translation type="obsolete">此程å¼ä»¥ Qt 商業授權åŒæ„書(Qt Commerical License Agreement)授權給您。詳情請åƒç…§ LICENSE 檔。</translation>
</message>
<message>
+ <location line="+81"/>
<source>About %1</source>
<translation>關於 %1</translation>
</message>
<message>
+ <location line="+115"/>
<source>Updating search index</source>
<translation>æ›´æ–°æœå°‹ç´¢å¼•</translation>
</message>
<message>
+ <location line="-597"/>
<source>Looking for Qt Documentation...</source>
<translation>æœå°‹ Qt 文件中...</translation>
</message>
<message>
+ <location line="+195"/>
<source>&amp;Window</source>
<translation>視窗(&amp;W)</translation>
</message>
<message>
+ <location line="+3"/>
<source>Minimize</source>
<translation>最å°åŒ–</translation>
</message>
<message>
+ <location line="+1"/>
<source>Ctrl+M</source>
<translation>Ctrl+M</translation>
</message>
<message>
+ <location line="-2"/>
<source>Zoom</source>
<translation>縮放</translation>
</message>
@@ -670,37 +808,45 @@
</message>
<message>
<source>You need a commercial Qt license for development of proprietary (closed source) applications. Please see &lt;a href=&quot;http://qtsoftware.com/company/about/businessmodel&quot;&gt;http://qtsoftware.com/company/about/businessmodel&lt;/a&gt; for an overview of Qt licensing.</source>
- <translation>您需è¦å•†æ¥­ç‰ˆçš„ Qt 授權æ‰èƒ½ç™¼å±•ç§æœ‰ï¼ˆå°é–‰ï¼‰æ‡‰ç”¨ç¨‹å¼è»Ÿé«”。關於 Qt 授權的概è¦ï¼Œè«‹åƒè€ƒ &lt;a href=&quot;http://qtsoftware.com/company/about/businessmodel&quot;&gt;http://qtsoftware.com/company/about/businessmodel&lt;/a&gt;。</translation>
+ <translation type="obsolete">您需è¦å•†æ¥­ç‰ˆçš„ Qt 授權æ‰èƒ½ç™¼å±•ç§æœ‰ï¼ˆå°é–‰ï¼‰æ‡‰ç”¨ç¨‹å¼è»Ÿé«”。關於 Qt 授權的概è¦ï¼Œè«‹åƒè€ƒ &lt;a href=&quot;http://qtsoftware.com/company/about/businessmodel&quot;&gt;http://qtsoftware.com/company/about/businessmodel&lt;/a&gt;。</translation>
</message>
<message>
+ <location line="-136"/>
<source>&amp;File</source>
<translation>檔案(&amp;F)</translation>
</message>
<message>
+ <location line="+24"/>
<source>&amp;Edit</source>
<translation>編輯(&amp;E)</translation>
</message>
<message>
+ <location line="+24"/>
<source>&amp;View</source>
<translation>檢視(&amp;V)</translation>
</message>
<message>
+ <location line="+23"/>
<source>ALT+O</source>
<translation>ALT+O</translation>
</message>
<message>
+ <location line="+4"/>
<source>&amp;Go</source>
<translation>å‰å¾€(&amp;G)</translation>
</message>
<message>
+ <location line="+29"/>
<source>&amp;Bookmarks</source>
<translation>書籤(&amp;B)</translation>
</message>
<message>
+ <location line="+2"/>
<source>CTRL+D</source>
<translation>CTRL+D</translation>
</message>
<message>
+ <location line="+2"/>
<source>&amp;Help</source>
<translation>說明(&amp;H)</translation>
</message>
@@ -716,22 +862,49 @@
<translation type="obsolete">從說明伺æœå™¨ä¸‹è¼‰...</translation>
</message>
<message>
+ <location filename="../tools/assistant/tools/assistant/preferencesdialog.cpp" line="+237"/>
+ <location line="+7"/>
+ <location line="+6"/>
<source>Add Documentation</source>
<translation>新增文件</translation>
</message>
<message>
+ <location line="-13"/>
<source>Qt Compressed Help Files (*.qch)</source>
<translation>Qt 壓縮說明檔(*.qch)</translation>
</message>
<message>
+ <location line="+8"/>
<source>The specified file is not a valid Qt Help File!</source>
<translation>指定的檔案ä¸æ˜¯åˆæ³•çš„ Qt 說明檔ï¼</translation>
</message>
<message>
+ <location line="+6"/>
<source>The namespace %1 is already registered!</source>
<translation>命å空間 %1 已註冊ï¼</translation>
</message>
<message>
+ <location line="+23"/>
+ <source>Remove Documentation</source>
+ <translation type="unfinished"></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 type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Cancel</source>
+ <translation type="unfinished">å–消</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>OK</source>
+ <translation type="unfinished">確定</translation>
+ </message>
+ <message>
+ <location line="+86"/>
<source>Use custom settings</source>
<translation>使用自訂設定</translation>
</message>
@@ -739,90 +912,108 @@
<context>
<name>PreferencesDialogClass</name>
<message>
+ <location filename="../tools/assistant/tools/assistant/preferencesdialog.ui"/>
<source>Preferences</source>
<translation>喜好設定</translation>
</message>
<message>
+ <location/>
<source>Fonts</source>
<translation>å­—åž‹</translation>
</message>
<message>
+ <location/>
<source>Font settings:</source>
<translation>字型設定:</translation>
</message>
<message>
+ <location/>
<source>Browser</source>
<translation>ç€è¦½å™¨</translation>
</message>
<message>
+ <location/>
<source>Application</source>
<translation>應用程å¼</translation>
</message>
<message>
+ <location/>
<source>Filters</source>
<translation>éŽæ¿¾å™¨</translation>
</message>
<message>
+ <location/>
<source>Filter:</source>
<translation>éŽæ¿¾ï¼š</translation>
</message>
<message>
+ <location/>
<source>Attributes:</source>
<translation>屬性:</translation>
</message>
<message>
+ <location/>
<source>1</source>
<translation>1</translation>
</message>
<message>
+ <location/>
<source>Add</source>
<translation>新增</translation>
</message>
<message>
+ <location/>
<source>Remove</source>
<translation>移除</translation>
</message>
<message>
+ <location/>
<source>Documentation</source>
<translation>文件</translation>
</message>
<message>
+ <location/>
<source>Registered Documentation:</source>
<translation>已註冊文件:</translation>
</message>
<message>
+ <location/>
<source>Add...</source>
<translation>新增...</translation>
</message>
<message>
<source>Network</source>
- <translation>網路</translation>
+ <translation type="obsolete">網路</translation>
</message>
<message>
<source>Use Http Proxy</source>
- <translation>使用 Http 代ç†ä¼ºæœå™¨</translation>
+ <translation type="obsolete">使用 Http 代ç†ä¼ºæœå™¨</translation>
</message>
<message>
<source>Http Proxy:</source>
- <translation>Http 代ç†ä¼ºæœå™¨ï¼š</translation>
+ <translation type="obsolete">Http 代ç†ä¼ºæœå™¨ï¼š</translation>
</message>
<message>
<source>Port:</source>
- <translation>連接埠:</translation>
+ <translation type="obsolete">連接埠:</translation>
</message>
<message>
+ <location/>
<source>Options</source>
<translation>é¸é …</translation>
</message>
<message>
+ <location/>
<source>Current Page</source>
<translation>ç›®å‰é é¢</translation>
</message>
<message>
+ <location/>
<source>Restore to default</source>
<translation>回復為é è¨­å€¼</translation>
</message>
<message>
+ <location/>
<source>Homepage</source>
<translation>首é </translation>
</message>
@@ -834,48 +1025,69 @@
<translation type="obsolete">新資料夾</translation>
</message>
<message>
- <location filename="../tools/assistant/tools/assistant/cmdlineparser.cpp" line="79"/>
+ <location filename="../tools/assistant/tools/assistant/cmdlineparser.cpp" line="+110"/>
<source>The specified collection file does not exist!</source>
<translation>指定的收集檔ä¸å­˜åœ¨ï¼</translation>
</message>
<message>
+ <location line="+4"/>
<source>Missing collection file!</source>
<translation>éºå¤±æ”¶é›†æª”ï¼</translation>
</message>
<message>
+ <location line="+9"/>
<source>Invalid URL!</source>
<translation>ä¸åˆæ³•çš„網å€ï¼</translation>
</message>
<message>
+ <location line="+4"/>
<source>Missing URL!</source>
<translation>éºå¤±ç¶²å€ï¼</translation>
</message>
<message>
+ <location line="+17"/>
+ <location line="+19"/>
+ <location line="+19"/>
<source>Unknown widget: %1</source>
<translation>未知的元件:%1</translation>
</message>
<message>
+ <location line="-34"/>
+ <location line="+19"/>
+ <location line="+19"/>
<source>Missing widget!</source>
<translation>éºå¤±å…ƒä»¶ï¼</translation>
</message>
<message>
+ <location line="+7"/>
+ <location line="+12"/>
<source>The specified Qt help file does not exist!</source>
<translation>指定的 Qt 說明檔ä¸å­˜åœ¨ï¼</translation>
</message>
<message>
+ <location line="-7"/>
+ <location line="+12"/>
<source>Missing help file!</source>
<translation>éºå¤±èªªæ˜Žæª”ï¼</translation>
</message>
<message>
+ <location line="+7"/>
+ <source>Missing filter argument!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+10"/>
<source>Unknown option: %1</source>
<translation>未知的é¸é …:%1</translation>
</message>
<message>
+ <location line="+30"/>
+ <location line="+2"/>
<source>Qt Assistant</source>
<translation>Qt å°å¹«æ‰‹</translation>
</message>
<message>
- <location filename="../tools/assistant/tools/assistant/main.cpp" line="58"/>
+ <location filename="../tools/assistant/tools/assistant/main.cpp" line="+190"/>
<source>Could not register documentation file
%1
@@ -888,10 +1100,12 @@ Reason:
%2</translation>
</message>
<message>
+ <location line="+4"/>
<source>Documentation successfully registered.</source>
<translation>文件已註冊æˆåŠŸã€‚</translation>
</message>
<message>
+ <location line="+11"/>
<source>Could not unregister documentation file
%1
@@ -904,18 +1118,23 @@ Reason:
%2</translation>
</message>
<message>
+ <location line="-3"/>
<source>Documentation successfully unregistered.</source>
<translation>文件已æˆåŠŸè§£é™¤è¨»å†Šã€‚</translation>
</message>
<message>
+ <location line="+18"/>
<source>Cannot load sqlite database driver!</source>
<translation>無法載入 sqlite 資料庫驅動程å¼ï¼</translation>
</message>
<message>
+ <location line="+9"/>
<source>The specified collection file could not be read!</source>
<translation>指定的收集檔無法讀å–。</translation>
</message>
<message>
+ <location filename="../tools/assistant/tools/assistant/bookmarkmanager.cpp" line="+167"/>
+ <location line="+1"/>
<source>Bookmark</source>
<translation>書籤</translation>
</message>
@@ -923,11 +1142,12 @@ Reason:
<context>
<name>RemoteControl</name>
<message>
- <location filename="../tools/assistant/tools/assistant/remotecontrol.cpp" line="128"/>
+ <location filename="../tools/assistant/tools/assistant/remotecontrol.cpp" line="+157"/>
<source>Debugging Remote Control</source>
<translation>é ç«¯é™¤éŒ¯æŽ§åˆ¶</translation>
</message>
<message>
+ <location line="+1"/>
<source>Received Command: %1 %2</source>
<translation>已接收指令:%1 %2</translation>
</message>
@@ -935,23 +1155,28 @@ Reason:
<context>
<name>SearchWidget</name>
<message>
- <location filename="../tools/assistant/tools/assistant/searchwidget.cpp" line="163"/>
+ <location filename="../tools/assistant/tools/assistant/searchwidget.cpp" line="+193"/>
<source>&amp;Copy</source>
<translation>複製(&amp;C)</translation>
</message>
<message>
+ <location line="+4"/>
<source>Copy &amp;Link Location</source>
<translation>複製連çµä½ç½®(&amp;L)</translation>
</message>
<message>
+ <location line="+3"/>
+ <location line="+36"/>
<source>Open Link in New Tab</source>
<translation>在新分é é–‹å•Ÿé€£çµ</translation>
</message>
<message>
+ <location line="-29"/>
<source>Select All</source>
<translation>全部é¸å–</translation>
</message>
<message>
+ <location line="+28"/>
<source>Open Link</source>
<translation>開啟連çµ</translation>
</message>
@@ -959,23 +1184,27 @@ Reason:
<context>
<name>TopicChooser</name>
<message>
- <location filename="../tools/assistant/tools/assistant/topicchooser.cpp" line="24"/>
+ <location filename="../tools/assistant/tools/assistant/topicchooser.cpp" line="+54"/>
<source>Choose a topic for &lt;b&gt;%1&lt;/b&gt;:</source>
<translation>é¸æ“‡ %1 的標題:</translation>
</message>
<message>
+ <location filename="../tools/assistant/tools/assistant/topicchooser.ui"/>
<source>Choose Topic</source>
<translation>é¸æ“‡æ¨™é¡Œ</translation>
</message>
<message>
+ <location/>
<source>&amp;Topics</source>
<translation>標題(&amp;T)</translation>
</message>
<message>
+ <location/>
<source>&amp;Display</source>
<translation>顯示(&amp;D)</translation>
</message>
<message>
+ <location/>
<source>&amp;Close</source>
<translation>關閉(&amp;C)</translation>
</message>
diff --git a/translations/designer_de.qm b/translations/designer_de.qm
index d51c51d..f9b0a03 100644
--- a/translations/designer_de.qm
+++ b/translations/designer_de.qm
Binary files differ
diff --git a/translations/designer_de.ts b/translations/designer_de.ts
index cac8afb..002fc8d 100644
--- a/translations/designer_de.ts
+++ b/translations/designer_de.ts
@@ -1,11 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.0" language="de">
-<defaultcodec></defaultcodec>
<context>
<name></name>
<message>
- <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditorwindow.cpp" line="+617"/>
+ <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditorwindow.cpp" line="+647"/>
<source>&lt;object&gt;</source>
<translation>&lt;Objekt&gt;</translation>
</message>
@@ -20,7 +19,7 @@
<translation>&lt;Slot&gt;</translation>
</message>
<message>
- <location filename="../tools/designer/src/components/propertyeditor/previewframe.cpp" line="+43"/>
+ <location filename="../tools/designer/src/components/propertyeditor/previewframe.cpp" line="+73"/>
<source>The moose in the noose
ate the goose who was loose.</source>
<translation type="unfinished"></translation>
@@ -29,7 +28,7 @@ ate the goose who was loose.</source>
<context>
<name>AbstractFindWidget</name>
<message>
- <location filename="../tools/shared/findwidget/abstractfindwidget.cpp" line="+97"/>
+ <location filename="../tools/shared/findwidget/abstractfindwidget.cpp" line="+127"/>
<source>&amp;Previous</source>
<translation>&amp;Vorige</translation>
</message>
@@ -75,7 +74,7 @@ ate the goose who was loose.</source>
<context>
<name>AppFontDialog</name>
<message>
- <location filename="../tools/designer/src/designer/appfontdialog.cpp" line="+388"/>
+ <location filename="../tools/designer/src/designer/appfontdialog.cpp" line="+418"/>
<source>Additional Fonts</source>
<translation>Zusätzliche Schriftarten</translation>
</message>
@@ -187,7 +186,7 @@ ate the goose who was loose.</source>
<context>
<name>AssistantClient</name>
<message>
- <location filename="../tools/designer/src/designer/assistantclient.cpp" line="+70"/>
+ <location filename="../tools/designer/src/designer/assistantclient.cpp" line="+100"/>
<source>Unable to send request: Assistant is not responding.</source>
<translation>Fehler beim Senden einer Anforderung: Das Programm Assistant antwortet nicht.</translation>
</message>
@@ -205,7 +204,7 @@ ate the goose who was loose.</source>
<context>
<name>BrushManagerProxy</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/brushmanagerproxy.cpp" line="+191"/>
+ <location filename="../tools/designer/src/components/formeditor/brushmanagerproxy.cpp" line="+221"/>
<source>The element &apos;%1&apos; is missing the required attribute &apos;%2&apos;.</source>
<translation>Bei dem Element fehlt das erforderliche Attribut &apos;%2&apos;.</translation>
</message>
@@ -233,7 +232,7 @@ ate the goose who was loose.</source>
<context>
<name>BrushPropertyManager</name>
<message>
- <location filename="../tools/designer/src/components/propertyeditor/brushpropertymanager.cpp" line="+119"/>
+ <location filename="../tools/designer/src/components/propertyeditor/brushpropertymanager.cpp" line="+149"/>
<source>Style</source>
<translation>Stil</translation>
</message>
@@ -326,19 +325,24 @@ ate the goose who was loose.</source>
<context>
<name>Command</name>
<message>
- <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditor.cpp" line="+177"/>
- <location line="+211"/>
+ <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditor.cpp" line="+208"/>
+ <location line="+258"/>
<source>Change signal</source>
<translation>Signal ändern</translation>
</message>
<message>
- <location line="-209"/>
- <location line="+221"/>
+ <location line="-256"/>
+ <location line="+268"/>
<source>Change slot</source>
<translation>Slot ändern</translation>
</message>
<message>
- <location line="+14"/>
+ <location line="-220"/>
+ <source>Change signal-slot connection</source>
+ <translation>Signale-Slotverbindung ändern</translation>
+ </message>
+ <message>
+ <location line="+234"/>
<source>Change sender</source>
<translation>Sender ändern</translation>
</message>
@@ -348,7 +352,7 @@ ate the goose who was loose.</source>
<translation>Empfänger ändern</translation>
</message>
<message>
- <location filename="../tools/designer/src/lib/shared/connectionedit.cpp" line="+113"/>
+ <location filename="../tools/designer/src/lib/shared/connectionedit.cpp" line="+143"/>
<source>Add connection</source>
<translation>Verbindung hinzufügen</translation>
</message>
@@ -373,7 +377,7 @@ ate the goose who was loose.</source>
<translation>Endpunkt ändern</translation>
</message>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_command.cpp" line="+117"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_command.cpp" line="+149"/>
<source>Insert &apos;%1&apos;</source>
<translation>&apos;%1&apos; einfügen</translation>
</message>
@@ -398,7 +402,7 @@ ate the goose who was loose.</source>
<translation> &apos;%1&apos; einem anderen Widget zuordnen</translation>
</message>
<message>
- <location line="+51"/>
+ <location line="+53"/>
<source>Promote to custom widget</source>
<translation>Platzhalter für benutzerdefinierte Klasse erzeugen</translation>
</message>
@@ -428,48 +432,48 @@ ate the goose who was loose.</source>
<translation>Layout auflösen</translation>
</message>
<message>
- <location line="+237"/>
- <location line="+232"/>
- <location line="+75"/>
+ <location line="+240"/>
+ <location line="+235"/>
+ <location line="+78"/>
<source>Move Page</source>
<translation>Seite verschieben</translation>
</message>
<message>
- <location line="-273"/>
- <location line="+122"/>
- <location line="+183"/>
- <location line="+664"/>
+ <location line="-279"/>
+ <location line="+123"/>
+ <location line="+188"/>
+ <location line="+666"/>
<source>Delete Page</source>
<translation>Seite löschen</translation>
</message>
<message>
- <location line="-931"/>
- <location line="+122"/>
+ <location line="-939"/>
+ <location line="+123"/>
<source>Page</source>
<translation>Seite</translation>
</message>
<message>
- <location line="-120"/>
- <location line="+303"/>
- <location line="+670"/>
+ <location line="-121"/>
+ <location line="+309"/>
+ <location line="+672"/>
<source>page</source>
<translation>Seite</translation>
</message>
<message>
- <location line="-970"/>
- <location line="+122"/>
- <location line="+181"/>
- <location line="+665"/>
+ <location line="-978"/>
+ <location line="+123"/>
+ <location line="+186"/>
+ <location line="+667"/>
<source>Insert Page</source>
<translation>Seite einfügen</translation>
</message>
<message>
- <location line="-849"/>
+ <location line="-856"/>
<source>tab</source>
<translation>Seite</translation>
</message>
<message>
- <location line="+204"/>
+ <location line="+209"/>
<source>Change Tab order</source>
<translation>Seite ändern</translation>
</message>
@@ -514,12 +518,12 @@ ate the goose who was loose.</source>
<translation>Ändern des Formularlayout-Elements</translation>
</message>
<message>
- <location line="+94"/>
+ <location line="+95"/>
<source>Change Layout Item Geometry</source>
<translation>Geometrie des Layoutelements ändern</translation>
</message>
<message>
- <location line="+575"/>
+ <location line="+576"/>
<source>Change Table Contents</source>
<translation>Tabelleninhalt ändern</translation>
</message>
@@ -561,7 +565,7 @@ ate the goose who was loose.</source>
<translation>Werkzeugleiste löschen</translation>
</message>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_menu.cpp" line="+1131"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_menu.cpp" line="+1161"/>
<source>Set action text</source>
<translation>Text der Aktion setzen</translation>
</message>
@@ -572,7 +576,7 @@ ate the goose who was loose.</source>
</message>
<message>
<location line="+89"/>
- <location filename="../tools/designer/src/lib/shared/qdesigner_menubar.cpp" line="+861"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_menubar.cpp" line="+891"/>
<source>Move action</source>
<translation>Aktion verschieben</translation>
</message>
@@ -587,7 +591,7 @@ ate the goose who was loose.</source>
<translation>Menü einfügen</translation>
</message>
<message>
- <location filename="../tools/designer/src/lib/shared/signalslotdialog.cpp" line="+172"/>
+ <location filename="../tools/designer/src/lib/shared/signalslotdialog.cpp" line="+202"/>
<source>Change signals/slots</source>
<translation>Signale/Slots ändern</translation>
</message>
@@ -612,17 +616,17 @@ ate the goose who was loose.</source>
<translation>Subwindow</translation>
</message>
<message>
- <location line="-1808"/>
+ <location line="-1821"/>
<source>Change Z-order of &apos;%1&apos;</source>
<translation>Z-Reihenfolge von &apos;%1&apos; ändern</translation>
</message>
<message>
- <location line="+623"/>
+ <location line="+625"/>
<source>Simplify Grid Layout</source>
<translation>Tabellarisches Layout vereinfachen</translation>
</message>
<message>
- <location filename="../tools/designer/src/components/taskmenu/button_taskmenu.cpp" line="+195"/>
+ <location filename="../tools/designer/src/components/taskmenu/button_taskmenu.cpp" line="+225"/>
<source>Create button group</source>
<translation>Buttons gruppieren</translation>
</message>
@@ -647,19 +651,19 @@ ate the goose who was loose.</source>
<translation>Buttons aus Gruppierung entfernen</translation>
</message>
<message>
- <location filename="../tools/designer/src/lib/shared/morphmenu.cpp" line="+318"/>
+ <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>%1/&apos;%2&apos; in %3 umwandeln</translation>
</message>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_command2.cpp" line="+124"/>
+ <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>Layout von &apos;%1&apos; von %2 in %3 umwandeln</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="+373"/>
+ <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>&apos;%1&apos; zu &apos;%2&apos; hinzufügen</translation>
@@ -671,12 +675,12 @@ ate the goose who was loose.</source>
<translation> &apos;%1&apos; aus &apos;%2&apos; entfernen</translation>
</message>
<message>
- <location filename="../tools/designer/src/lib/shared/scriptcommand.cpp" line="+25"/>
+ <location filename="../tools/designer/src/lib/shared/scriptcommand.cpp" line="+55"/>
<source>Change script</source>
<translation>Skript ändern</translation>
</message>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_propertycommand.cpp" line="+1179"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_propertycommand.cpp" line="+1209"/>
<source>Changed &apos;%1&apos; of &apos;%2&apos;</source>
<translation>&apos;%1&apos; von &apos;%2&apos; geändert</translation>
</message>
@@ -757,7 +761,7 @@ ate the goose who was loose.</source>
<context>
<name>DPI_Chooser</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/dpi_chooser.cpp" line="+39"/>
+ <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>Standardauflösung (96 x 96)</translation>
@@ -778,12 +782,12 @@ ate the goose who was loose.</source>
<context>
<name>Designer</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/qdesigner_resource.cpp" line="+409"/>
+ <location filename="../tools/designer/src/components/formeditor/qdesigner_resource.cpp" line="+439"/>
<source>Qt Designer</source>
<translation>Qt Designer</translation>
</message>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_utils.cpp" line="+602"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_utils.cpp" line="+682"/>
<source>Unable to launch %1.</source>
<translation>%1 konnte nicht gestartet werden.</translation>
</message>
@@ -855,7 +859,7 @@ ate the goose who was loose.</source>
<translation>Bitte wandeln Sie sie mit dem Befehl &lt;b&gt;uic3&amp;nbsp;-convert&lt;/b&gt; zum Format von Qt 4.</translation>
</message>
<message>
- <location line="+735"/>
+ <location line="+746"/>
<source>Custom Widgets</source>
<translation>Benutzerdefinierte Widgets</translation>
</message>
@@ -868,7 +872,7 @@ ate the goose who was loose.</source>
<context>
<name>DesignerMetaEnum</name>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_utils.cpp" line="-463"/>
+ <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 ist kein gültiger Wert der Aufzählung &apos;%2&apos;.</translation>
</message>
@@ -889,7 +893,7 @@ ate the goose who was loose.</source>
<context>
<name>DeviceProfile</name>
<message>
- <location filename="../tools/designer/src/lib/shared/deviceprofile.cpp" line="+367"/>
+ <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; ist keine gültige Zahl.</translation>
@@ -931,7 +935,7 @@ ate the goose who was loose.</source>
<context>
<name>DeviceSkin</name>
<message>
- <location filename="../tools/shared/deviceskin/deviceskin.cpp" line="+49"/>
+ <location filename="../tools/shared/deviceskin/deviceskin.cpp" line="+79"/>
<source>The image file &apos;%1&apos; could not be loaded.</source>
<translation>Die Pixmap-Datei &apos;%1&apos; konnte nicht geladen werden.</translation>
</message>
@@ -989,7 +993,7 @@ ate the goose who was loose.</source>
<context>
<name>EmbeddedOptionsControl</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/embeddedoptionspage.cpp" line="+281"/>
+ <location filename="../tools/designer/src/components/formeditor/embeddedoptionspage.cpp" line="+311"/>
<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;Auflösung&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>
@@ -1013,7 +1017,7 @@ ate the goose who was loose.</source>
<context>
<name>FontPanel</name>
<message>
- <location filename="../tools/shared/fontpanel/fontpanel.cpp" line="+33"/>
+ <location filename="../tools/shared/fontpanel/fontpanel.cpp" line="+63"/>
<source>Font</source>
<translation>Schriftart</translation>
</message>
@@ -1041,7 +1045,7 @@ ate the goose who was loose.</source>
<context>
<name>FontPropertyManager</name>
<message>
- <location filename="../tools/designer/src/components/propertyeditor/fontpropertymanager.cpp" line="+32"/>
+ <location filename="../tools/designer/src/components/propertyeditor/fontpropertymanager.cpp" line="+62"/>
<source>PreferDefault</source>
<translation>Voreinstellung bevorzugt</translation>
</message>
@@ -1064,7 +1068,7 @@ ate the goose who was loose.</source>
<context>
<name>FormBuilder</name>
<message>
- <location filename="../tools/designer/src/lib/uilib/formbuilderextra.cpp" line="+321"/>
+ <location filename="../tools/designer/src/lib/uilib/formbuilderextra.cpp" line="+351"/>
<source>Invalid stretch value for &apos;%1&apos;: &apos;%2&apos;</source>
<extracomment>Parsing layout stretch values</extracomment>
<translation>Ungültiger Stretch-Wert für &apos;%1&apos;: &apos;%2&apos;</translation>
@@ -1079,7 +1083,7 @@ ate the goose who was loose.</source>
<context>
<name>FormEditorOptionsPage</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/formeditor_optionspage.cpp" line="+61"/>
+ <location filename="../tools/designer/src/components/formeditor/formeditor_optionspage.cpp" line="+91"/>
<source>%1 %</source>
<translation>%1 %</translation>
</message>
@@ -1146,7 +1150,7 @@ ate the goose who was loose.</source>
<context>
<name>FormWindow</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/formwindow.cpp" line="+1669"/>
+ <location filename="../tools/designer/src/components/formeditor/formwindow.cpp" line="+1705"/>
<source>Unexpected element &lt;%1&gt;</source>
<translation>Ungültiges Element &lt;%1&gt;</translation>
</message>
@@ -1222,7 +1226,7 @@ ate the goose who was loose.</source>
<context>
<name>IconSelector</name>
<message>
- <location filename="../tools/designer/src/lib/shared/iconselector.cpp" line="+321"/>
+ <location filename="../tools/designer/src/lib/shared/iconselector.cpp" line="+353"/>
<source>All Pixmaps (</source>
<translation>Alle Pixmap-Dateien (</translation>
</message>
@@ -1230,7 +1234,7 @@ ate the goose who was loose.</source>
<context>
<name>ItemPropertyBrowser</name>
<message>
- <location filename="../tools/designer/src/components/taskmenu/itemlisteditor.cpp" line="+36"/>
+ <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>Ausgewähltes Icon, aus</translation>
@@ -1239,7 +1243,7 @@ ate the goose who was loose.</source>
<context>
<name>LanguageResourceDialog</name>
<message>
- <location filename="../tools/designer/src/lib/shared/iconselector.cpp" line="-234"/>
+ <location filename="../tools/designer/src/lib/shared/iconselector.cpp" line="-235"/>
<source>Choose Resource</source>
<translation>Ressource auswählen</translation>
</message>
@@ -1247,7 +1251,7 @@ ate the goose who was loose.</source>
<context>
<name>MainWindowBase</name>
<message>
- <location filename="../tools/designer/src/designer/mainwindow.cpp" line="+89"/>
+ <location filename="../tools/designer/src/designer/mainwindow.cpp" line="+119"/>
<source>Main</source>
<extracomment>Not currently used (main tool bar)</extracomment>
<translation>Haupt-Werkzeugleiste</translation>
@@ -1281,7 +1285,7 @@ ate the goose who was loose.</source>
<context>
<name>NewForm</name>
<message>
- <location filename="../tools/designer/src/designer/newform.cpp" line="+49"/>
+ <location filename="../tools/designer/src/designer/newform.cpp" line="+79"/>
<source>C&amp;reate</source>
<translation>&amp;Neu von Vorlage</translation>
</message>
@@ -1334,7 +1338,7 @@ ate the goose who was loose.</source>
<context>
<name>NewFormWidget</name>
<message>
- <location filename="../tools/designer/src/lib/shared/newformwidget.cpp" line="+465"/>
+ <location filename="../tools/designer/src/lib/shared/newformwidget.cpp" line="+495"/>
<source>Unable to open the form template file &apos;%1&apos;: %2</source>
<translation>Die Formularvorlage %1 konnte nicht geöffnet werden: %2</translation>
</message>
@@ -1342,7 +1346,7 @@ ate the goose who was loose.</source>
<context>
<name>ObjectInspectorModel</name>
<message>
- <location filename="../tools/designer/src/components/objectinspector/objectinspectormodel.cpp" line="+331"/>
+ <location filename="../tools/designer/src/components/objectinspector/objectinspectormodel.cpp" line="+364"/>
<source>Object</source>
<translation>Objekt</translation>
</message>
@@ -1365,7 +1369,7 @@ ate the goose who was loose.</source>
<context>
<name>ObjectNameDialog</name>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_taskmenu.cpp" line="+135"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_taskmenu.cpp" line="+162"/>
<source>Change Object Name</source>
<translation>Objektnamen bearbeiten</translation>
</message>
@@ -1376,52 +1380,16 @@ ate the goose who was loose.</source>
</message>
</context>
<context>
- <name>qdesigner_internal::PluginDialog</name>
+ <name>PluginDialog</name>
<message>
- <location filename="../tools/designer/src/designer/plugindialog.cpp" line="+40"/>
- <source>Components</source>
- <translation>Komponenten</translation>
- </message>
- <message>
- <location line="+13"/>
- <location filename="../tools/designer/src/designer/plugindialog.ui"/>
+ <location filename="../tools/designer/src/lib/shared/plugindialog.ui"/>
<source>Plugin Information</source>
<translation>Plugins</translation>
</message>
<message>
- <location line="+4"/>
- <source>Refresh</source>
- <translation>Neu laden</translation>
- </message>
- <message>
- <location line="+1"/>
- <source>Scan for newly installed custom widget plugins.</source>
- <translation>Sucht nach neuinstallierten Plugins mit benutzerdefinierten Widgets.</translation>
- </message>
- <message>
- <location line="+48"/>
- <source>Qt Designer couldn&apos;t find any plugins</source>
- <translation>Qt Designer konnte keine plugins finden</translation>
- </message>
- <message>
- <location line="+3"/>
- <source>Qt Designer found the following plugins</source>
- <translation>Qt Designer hat die folgenden Plugins gefunden</translation>
- </message>
- <message>
- <location line="+55"/>
- <source>New custom widget plugins have been found.</source>
- <translation>Es wurden neuinstallierten Plugins mit benutzerdefinierten Widgets gefunden.</translation>
- </message>
- <message>
- <location filename="../tools/designer/src/designer/plugindialog.ui"/>
- <source>TextLabel</source>
- <translation></translation>
- </message>
- <message>
<location/>
<source>1</source>
- <translation>1</translation>
+ <translation type="unfinished">1</translation>
</message>
</context>
<context>
@@ -1435,7 +1403,7 @@ ate the goose who was loose.</source>
<context>
<name>PreviewConfigurationWidget</name>
<message>
- <location filename="../tools/designer/src/lib/shared/previewconfigurationwidget.cpp" line="+125"/>
+ <location filename="../tools/designer/src/lib/shared/previewconfigurationwidget.cpp" line="+155"/>
<source>Default</source>
<translation>Vorgabe</translation>
</message>
@@ -1483,7 +1451,7 @@ ate the goose who was loose.</source>
<context>
<name>PromotionModel</name>
<message>
- <location filename="../tools/designer/src/lib/shared/promotionmodel.cpp" line="+86"/>
+ <location filename="../tools/designer/src/lib/shared/promotionmodel.cpp" line="+116"/>
<source>Not used</source>
<extracomment>Usage of promoted widgets</extracomment>
<translation>Nicht verwendet</translation>
@@ -1492,7 +1460,7 @@ ate the goose who was loose.</source>
<context>
<name>Q3WizardContainer</name>
<message>
- <location filename="../tools/designer/src/plugins/widgets/q3wizard/q3wizard_container.cpp" line="+142"/>
+ <location filename="../tools/designer/src/plugins/widgets/q3wizard/q3wizard_container.cpp" line="+172"/>
<location line="+5"/>
<source>Page</source>
<translation>Seite</translation>
@@ -1501,7 +1469,7 @@ ate the goose who was loose.</source>
<context>
<name>QAbstractFormBuilder</name>
<message>
- <location filename="../tools/designer/src/lib/uilib/abstractformbuilder.cpp" line="+176"/>
+ <location filename="../tools/designer/src/lib/uilib/abstractformbuilder.cpp" line="+206"/>
<source>Unexpected element &lt;%1&gt;</source>
<translation>Ungültiges Element &lt;%1&gt;</translation>
</message>
@@ -1547,7 +1515,7 @@ This indicates an inconsistency in the ui-file.</source>
<translation>Fehler beim Setzen der Tabulatorreihenfolge: Es konnte kein Widget mit dem Namen &apos;%1&apos; gefunden werden.</translation>
</message>
<message>
- <location line="+750"/>
+ <location line="+749"/>
<source>Invalid QButtonGroup reference &apos;%1&apos; referenced by &apos;%2&apos;.</source>
<translation>Ungültige Referenz der Buttongruppe &apos;%1&apos;, referenziert von &apos;%2&apos;.</translation>
</message>
@@ -1560,7 +1528,7 @@ This indicates an inconsistency in the ui-file.</source>
<context>
<name>QAxWidgetPlugin</name>
<message>
- <location filename="../tools/designer/src/plugins/activeqt/qaxwidgetplugin.cpp" line="+45"/>
+ <location filename="../tools/designer/src/plugins/activeqt/qaxwidgetplugin.cpp" line="+75"/>
<source>ActiveX control</source>
<translation>ActiveX-Steuerelement</translation>
</message>
@@ -1573,7 +1541,7 @@ This indicates an inconsistency in the ui-file.</source>
<context>
<name>QAxWidgetTaskMenu</name>
<message>
- <location filename="../tools/designer/src/plugins/activeqt/qaxwidgettaskmenu.cpp" line="+89"/>
+ <location filename="../tools/designer/src/plugins/activeqt/qaxwidgettaskmenu.cpp" line="+119"/>
<source>Set Control</source>
<translation>Steuerelement setzen</translation>
</message>
@@ -1596,7 +1564,7 @@ This indicates an inconsistency in the ui-file.</source>
<context>
<name>QCoreApplication</name>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_promotion.cpp" line="+53"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_promotion.cpp" line="+83"/>
<source>%1 is not a promoted class.</source>
<translation>%1 ist kein Platzhalter für eine benutzerdefinierte Klasse.</translation>
</message>
@@ -1646,7 +1614,7 @@ This indicates an inconsistency in the ui-file.</source>
<translation>Der Name der Include-Datei darf nicht leer sein.</translation>
</message>
<message>
- <location filename="../tools/designer/src/lib/uilib/formscriptrunner.cpp" line="+58"/>
+ <location filename="../tools/designer/src/lib/uilib/formscriptrunner.cpp" line="+88"/>
<source>Exception at line %1: %2</source>
<translation>Ausnahmefehler bei Zeile %1: %2</translation>
</message>
@@ -1665,7 +1633,7 @@ Script: %3</source>
<context>
<name>QDesigner</name>
<message>
- <location filename="../tools/designer/src/designer/qdesigner.cpp" line="+111"/>
+ <location filename="../tools/designer/src/designer/qdesigner.cpp" line="+141"/>
<source>%1 - warning</source>
<translation>%1 - Warnung</translation>
</message>
@@ -1683,7 +1651,7 @@ Script: %3</source>
<context>
<name>QDesignerActions</name>
<message>
- <location filename="../tools/designer/src/designer/qdesigner_actions.cpp" line="+151"/>
+ <location filename="../tools/designer/src/designer/qdesigner_actions.cpp" line="+178"/>
<source>Edit Widgets</source>
<translation>Widgets bearbeiten</translation>
</message>
@@ -1837,7 +1805,7 @@ Möchten Sie einen anderen Namen eingeben oder ein neues Formular erzeugen?</tra
<translation>Die Datei konnte nicht geöffnet werden</translation>
</message>
<message>
- <location line="+320"/>
+ <location line="+282"/>
<location line="+23"/>
<source>The backup file %1 could not be written.</source>
<translation>Hintergrundsicherung: Die Datei %1 konnte nicht geschrieben werden.</translation>
@@ -1858,7 +1826,7 @@ Möchten Sie einen anderen Namen eingeben oder ein neues Formular erzeugen?</tra
<translation>Bitte schließen Sie alle Formulare, um zusätzliche Schriftarten zu laden.</translation>
</message>
<message>
- <location line="-540"/>
+ <location line="-502"/>
<source>Select New File</source>
<translation>Andere Datei</translation>
</message>
@@ -1868,12 +1836,12 @@ Möchten Sie einen anderen Namen eingeben oder ein neues Formular erzeugen?</tra
<translation>Die Datei konnte nicht geschrieben werden</translation>
</message>
<message>
- <location line="+239"/>
+ <location line="+201"/>
<source>&amp;Close Preview</source>
<translation>Vorschau &amp;schließen</translation>
</message>
<message>
- <location line="-931"/>
+ <location line="-893"/>
<source>Save &amp;Image...</source>
<translation>&amp;Vorschaubild speichern...</translation>
</message>
@@ -1906,7 +1874,7 @@ Would you like to retry?</source>
Möchten Sie es noch einmal versuchen?</translation>
</message>
<message>
- <location line="+467"/>
+ <location line="+429"/>
<source>Image files (*.%1)</source>
<translation>Bilddateien (*.%1)</translation>
</message>
@@ -1922,7 +1890,7 @@ Möchten Sie es noch einmal versuchen?</translation>
<translation>Die Datei %1 konnte nicht geschrieben werden.</translation>
</message>
<message>
- <location line="-1196"/>
+ <location line="-1158"/>
<source>&amp;New...</source>
<translation>&amp;Neu...</translation>
</message>
@@ -1953,12 +1921,12 @@ Möchten Sie es noch einmal versuchen?</translation>
</message>
<message>
<location line="+1"/>
- <location line="+934"/>
+ <location line="+896"/>
<source>&amp;Close</source>
<translation>&amp;Schließen</translation>
</message>
<message>
- <location line="-929"/>
+ <location line="-891"/>
<source>View &amp;Code...</source>
<translation>&amp;Code anzeigen...</translation>
</message>
@@ -1969,23 +1937,23 @@ Möchten Sie es noch einmal versuchen?</translation>
<translation>Formular unter einem anderen Namen speichern</translation>
</message>
<message>
- <location line="+467"/>
+ <location line="+429"/>
<source>Preview failed</source>
<translation>Es konnte keine Vorschau erzeugt werden</translation>
</message>
<message>
- <location line="-613"/>
+ <location line="-575"/>
<source>Code generation failed</source>
<translation>Es konnte kein Code generiert werden</translation>
</message>
<message>
<location line="+328"/>
- <location line="+66"/>
+ <location line="+34"/>
<source>Assistant</source>
<translation>Assistant</translation>
</message>
<message>
- <location line="+265"/>
+ <location line="+259"/>
<source>Saved image %1.</source>
<translation>Das Vorschaubild wurde unter %1 gespeichert.</translation>
</message>
@@ -1995,7 +1963,7 @@ Möchten Sie es noch einmal versuchen?</translation>
<translation>%1 wurde gedruckt.</translation>
</message>
<message>
- <location line="-1186"/>
+ <location line="-1148"/>
<source>ALT+CTRL+S</source>
<translation>ALT+CTRL+S</translation>
</message>
@@ -2003,7 +1971,7 @@ Möchten Sie es noch einmal versuchen?</translation>
<context>
<name>QDesignerAppearanceOptionsPage</name>
<message>
- <location filename="../tools/designer/src/designer/qdesigner_appearanceoptions.cpp" line="+108"/>
+ <location filename="../tools/designer/src/designer/qdesigner_appearanceoptions.cpp" line="+138"/>
<source>Appearance</source>
<extracomment>Tab in preferences dialog</extracomment>
<translation>Ansicht</translation>
@@ -2040,7 +2008,7 @@ Möchten Sie es noch einmal versuchen?</translation>
<translation>Steuerelement setzen</translation>
</message>
<message>
- <location filename="../tools/designer/src/plugins/activeqt/qdesigneraxwidget.cpp" line="+149"/>
+ <location filename="../tools/designer/src/plugins/activeqt/qdesigneraxwidget.cpp" line="+179"/>
<source>Control loaded</source>
<translation>Steuerelement geladen</translation>
</message>
@@ -2053,7 +2021,7 @@ Möchten Sie es noch einmal versuchen?</translation>
<context>
<name>QDesignerFormBuilder</name>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_formbuilder.cpp" line="+58"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_formbuilder.cpp" line="+88"/>
<source>Script errors occurred:</source>
<translation>Es sind Skriptfehler aufgetreten:</translation>
</message>
@@ -2071,7 +2039,7 @@ Möchten Sie es noch einmal versuchen?</translation>
<context>
<name>QDesignerFormWindow</name>
<message>
- <location filename="../tools/designer/src/designer/qdesigner_formwindow.cpp" line="+187"/>
+ <location filename="../tools/designer/src/designer/qdesigner_formwindow.cpp" line="+217"/>
<source>%1 - %2[*]</source>
<translation>%1 - %2[*]</translation>
</message>
@@ -2156,7 +2124,7 @@ Möchten Sie es noch einmal versuchen?</translation>
<context>
<name>QDesignerPluginManager</name>
<message>
- <location filename="../tools/designer/src/lib/shared/pluginmanager.cpp" line="+197"/>
+ <location filename="../tools/designer/src/lib/shared/pluginmanager.cpp" line="+249"/>
<source>An XML error was encountered when parsing the XML of the custom widget %1: %2</source>
<translation>Fehler beim Auswerten des XML des benutzerdefinierten Widgets %1: %2</translation>
</message>
@@ -2179,7 +2147,7 @@ Möchten Sie es noch einmal versuchen?</translation>
<context>
<name>QDesignerPropertySheet</name>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_propertysheet.cpp" line="+717"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_propertysheet.cpp" line="+747"/>
<source>Dynamic Properties</source>
<translation>Dynamische Eigenschaften</translation>
</message>
@@ -2187,19 +2155,19 @@ Möchten Sie es noch einmal versuchen?</translation>
<context>
<name>QDesignerResource</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/qdesigner_resource.cpp" line="-235"/>
+ <location filename="../tools/designer/src/components/formeditor/qdesigner_resource.cpp" line="-246"/>
<source>The layout type &apos;%1&apos; is not supported, defaulting to grid.</source>
<translation>Der Layout-Typ &apos;%1&apos; wird nicht unterstützt; es wurde ein Grid-Layout erzeugt.</translation>
</message>
<message>
- <location line="+331"/>
+ <location line="+342"/>
<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>Die Container-Extension des Widgets &apos;%1&apos; (%2) gab für Seite %5 ein Widget &apos;%3&apos; (%4) zurück, was nicht von Designer verwaltet wird.
Container-Seiten sollten ausschließlich im XML der domXML()-Methode spezifiziert werden.</translation>
</message>
<message>
- <location line="+598"/>
+ <location line="+599"/>
<source>Unexpected element &lt;%1&gt;</source>
<extracomment>Parsing clipboard contents</extracomment>
<translation>Ungültiges Element &lt;%1&gt;</translation>
@@ -2220,7 +2188,7 @@ Container-Seiten sollten ausschließlich im XML der domXML()-Methode spezifizier
<context>
<name>QDesignerSharedSettings</name>
<message>
- <location filename="../tools/designer/src/lib/shared/shared_settings.cpp" line="+53"/>
+ <location filename="../tools/designer/src/lib/shared/shared_settings.cpp" line="+83"/>
<source>The template path %1 could not be created.</source>
<translation>Das Vorlagenverzeichnis %1 konnte nicht angelegt werden.</translation>
</message>
@@ -2233,7 +2201,7 @@ Container-Seiten sollten ausschließlich im XML der domXML()-Methode spezifizier
<context>
<name>QDesignerToolWindow</name>
<message>
- <location filename="../tools/designer/src/designer/qdesigner_toolwindow.cpp" line="+160"/>
+ <location filename="../tools/designer/src/designer/qdesigner_toolwindow.cpp" line="+190"/>
<source>Property Editor</source>
<translation>Eigenschaften</translation>
</message>
@@ -2266,7 +2234,7 @@ Container-Seiten sollten ausschließlich im XML der domXML()-Methode spezifizier
<context>
<name>QDesignerWidgetBox</name>
<message>
- <location filename="../tools/designer/src/components/widgetbox/widgetboxtreewidget.cpp" line="+318"/>
+ <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>Fehler bei Zeile %1 von %2: %3</translation>
</message>
@@ -2289,7 +2257,7 @@ Container-Seiten sollten ausschließlich im XML der domXML()-Methode spezifizier
<context>
<name>QDesignerWorkbench</name>
<message>
- <location filename="../tools/designer/src/designer/qdesigner_workbench.cpp" line="+169"/>
+ <location filename="../tools/designer/src/designer/qdesigner_workbench.cpp" line="+199"/>
<source>&amp;File</source>
<translation>&amp;Datei</translation>
</message>
@@ -2364,7 +2332,7 @@ Container-Seiten sollten ausschließlich im XML der domXML()-Methode spezifizier
<translation>Designer wurde offenbar nicht ordnungsgemäß beendet; es existieren noch Dateien von der Hintergrundsicherung. Möchten Sie sie laden?</translation>
</message>
<message>
- <location line="+112"/>
+ <location line="+111"/>
<source>The file &lt;b&gt;%1&lt;/b&gt; could not be opened.</source>
<translation>Die Datei &lt;b&gt;%1&lt;/b&gt; konnte nicht geöffnet werden.</translation>
</message>
@@ -2374,7 +2342,7 @@ Container-Seiten sollten ausschließlich im XML der domXML()-Methode spezifizier
<translation>Die Datei &lt;b&gt;%1&lt;/b&gt; ist keine gültige Designer-Datei.</translation>
</message>
<message numerus="yes">
- <location line="-260"/>
+ <location line="-259"/>
<source>There are %n forms with unsaved changes. Do you want to review these changes before quitting?</source>
<translation>
<numerusform>Das Formular wurde geändert. Möchten Sie sich die Änderungen ansehen, bevor Sie das Programm beenden?</numerusform>
@@ -2385,7 +2353,7 @@ Container-Seiten sollten ausschließlich im XML der domXML()-Methode spezifizier
<context>
<name>QFormBuilder</name>
<message>
- <location filename="../tools/designer/src/lib/uilib/formbuilder.cpp" line="+130"/>
+ <location filename="../tools/designer/src/lib/uilib/formbuilder.cpp" line="+160"/>
<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>Der Methode %1 wurde ein leerer Klassennamen übergeben (Name &apos;%2&apos;).</translation>
@@ -2406,7 +2374,7 @@ Container-Seiten sollten ausschließlich im XML der domXML()-Methode spezifizier
<translation>Layouts des Typs `%1&apos; werden nicht unterstützt.</translation>
</message>
<message>
- <location filename="../tools/designer/src/lib/uilib/properties.cpp" line="+76"/>
+ <location filename="../tools/designer/src/lib/uilib/properties.cpp" line="+106"/>
<source>The set-type property %1 could not be read.</source>
<translation>Die Eigenschaft %1 konnte nicht gelesen werden (Typ: Menge).</translation>
</message>
@@ -2426,7 +2394,7 @@ Container-Seiten sollten ausschließlich im XML der domXML()-Methode spezifizier
<translation>Die Eigenschaft %1 konnte nicht geschrieben werden, da der Typ %2 nicht unterstützt wird.</translation>
</message>
<message>
- <location filename="../tools/designer/src/lib/uilib/properties_p.h" line="+102"/>
+ <location filename="../tools/designer/src/lib/uilib/properties_p.h" line="+132"/>
<source>The enumeration-value &apos;%1&apos; is invalid. The default value &apos;%2&apos; will be used instead.</source>
<translation>Der Aufzählungswert &apos;%1&apos; ist ungültig. Der Vorgabewert &apos;%2&apos; wird verwendet.</translation>
</message>
@@ -2439,7 +2407,7 @@ Container-Seiten sollten ausschließlich im XML der domXML()-Methode spezifizier
<context>
<name>QStackedWidgetEventFilter</name>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_stackedbox.cpp" line="+164"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_stackedbox.cpp" line="+194"/>
<source>Previous Page</source>
<translation>Vorige Seite</translation>
</message>
@@ -2500,7 +2468,7 @@ Container-Seiten sollten ausschließlich im XML der domXML()-Methode spezifizier
<context>
<name>QTabWidgetEventFilter</name>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_tabwidget.cpp" line="+59"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_tabwidget.cpp" line="+89"/>
<source>Delete</source>
<translation>Löschen</translation>
</message>
@@ -2528,7 +2496,7 @@ Container-Seiten sollten ausschließlich im XML der domXML()-Methode spezifizier
<context>
<name>QToolBoxHelper</name>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_toolbox.cpp" line="+34"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_toolbox.cpp" line="+64"/>
<source>Delete Page</source>
<translation>Seite löschen</translation>
</message>
@@ -2566,7 +2534,7 @@ Container-Seiten sollten ausschließlich im XML der domXML()-Methode spezifizier
<context>
<name>QtBoolEdit</name>
<message>
- <location filename="../tools/shared/qtpropertybrowser/qtpropertybrowserutils.cpp" line="+198"/>
+ <location filename="../tools/shared/qtpropertybrowser/qtpropertybrowserutils.cpp" line="+226"/>
<location line="+10"/>
<location line="+25"/>
<source>True</source>
@@ -2582,7 +2550,7 @@ Container-Seiten sollten ausschließlich im XML der domXML()-Methode spezifizier
<context>
<name>QtBoolPropertyManager</name>
<message>
- <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="+1469"/>
+ <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="+1477"/>
<source>True</source>
<translation>Wahr</translation>
</message>
@@ -2595,7 +2563,7 @@ Container-Seiten sollten ausschließlich im XML der domXML()-Methode spezifizier
<context>
<name>QtCharEdit</name>
<message>
- <location filename="../tools/shared/qtpropertybrowser/qteditorfactory.cpp" line="+1573"/>
+ <location filename="../tools/shared/qtpropertybrowser/qteditorfactory.cpp" line="+1601"/>
<source>Clear Char</source>
<translation>Zeichen löschen</translation>
</message>
@@ -2611,7 +2579,7 @@ Container-Seiten sollten ausschließlich im XML der domXML()-Methode spezifizier
<context>
<name>QtColorPropertyManager</name>
<message>
- <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="+4769"/>
+ <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="+4777"/>
<source>Red</source>
<translation>Rot</translation>
</message>
@@ -2791,7 +2759,7 @@ Container-Seiten sollten ausschließlich im XML der domXML()-Methode spezifizier
<context>
<name>QtGradientEditor</name>
<message>
- <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.cpp" line="+405"/>
+ <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.cpp" line="+435"/>
<source>Start X</source>
<translation>Anfangswert X</translation>
</message>
@@ -3066,7 +3034,7 @@ Container-Seiten sollten ausschließlich im XML der domXML()-Methode spezifizier
<context>
<name>QtGradientStopsWidget</name>
<message>
- <location filename="../tools/shared/qtgradienteditor/qtgradientstopswidget.cpp" line="+919"/>
+ <location filename="../tools/shared/qtgradienteditor/qtgradientstopswidget.cpp" line="+949"/>
<source>New Stop</source>
<translation>Neuer Bezugspunkt</translation>
</message>
@@ -3104,7 +3072,7 @@ Container-Seiten sollten ausschließlich im XML der domXML()-Methode spezifizier
<context>
<name>QtGradientView</name>
<message>
- <location filename="../tools/shared/qtgradienteditor/qtgradientview.cpp" line="+77"/>
+ <location filename="../tools/shared/qtgradienteditor/qtgradientview.cpp" line="+107"/>
<source>Grad</source>
<translation>Grad</translation>
</message>
@@ -3151,7 +3119,7 @@ Container-Seiten sollten ausschließlich im XML der domXML()-Methode spezifizier
<context>
<name>QtGradientViewDialog</name>
<message>
- <location filename="../tools/shared/qtgradienteditor/qtgradientviewdialog.h" line="+32"/>
+ <location filename="../tools/shared/qtgradienteditor/qtgradientviewdialog.h" line="+62"/>
<location filename="../tools/shared/qtgradienteditor/qtgradientviewdialog.ui"/>
<source>Select Gradient</source>
<translation>Gradienten auswählen</translation>
@@ -3168,7 +3136,7 @@ Container-Seiten sollten ausschließlich im XML der domXML()-Methode spezifizier
<context>
<name>QtLocalePropertyManager</name>
<message>
- <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="-3553"/>
+ <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="-3561"/>
<source>%1, %2</source>
<translation>%1, %2</translation>
</message>
@@ -3235,22 +3203,22 @@ Container-Seiten sollten ausschließlich im XML der domXML()-Methode spezifizier
<context>
<name>QtRectFPropertyManager</name>
<message>
- <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="+1705"/>
+ <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="+1716"/>
<source>[(%1, %2), %3 x %4]</source>
<translation>[(%1, %2), %3 x %4]</translation>
</message>
<message>
- <location line="+155"/>
+ <location line="+156"/>
<source>X</source>
<translation>X</translation>
</message>
<message>
- <location line="+9"/>
+ <location line="+8"/>
<source>Y</source>
<translation>Y</translation>
</message>
<message>
- <location line="+9"/>
+ <location line="+8"/>
<source>Width</source>
<translation>Breite</translation>
</message>
@@ -3263,22 +3231,22 @@ Container-Seiten sollten ausschließlich im XML der domXML()-Methode spezifizier
<context>
<name>QtRectPropertyManager</name>
<message>
- <location line="-610"/>
+ <location line="-614"/>
<source>[(%1, %2), %3 x %4]</source>
<translation>[(%1, %2), %3 x %4]</translation>
</message>
<message>
- <location line="+119"/>
+ <location line="+120"/>
<source>X</source>
<translation>X</translation>
</message>
<message>
- <location line="+8"/>
+ <location line="+7"/>
<source>Y</source>
<translation>Y</translation>
</message>
<message>
- <location line="+8"/>
+ <location line="+7"/>
<source>Width</source>
<translation>Breite</translation>
</message>
@@ -3291,7 +3259,7 @@ Container-Seiten sollten ausschließlich im XML der domXML()-Methode spezifizier
<context>
<name>QtResourceEditorDialog</name>
<message>
- <location filename="../tools/designer/src/lib/shared/qtresourceeditordialog.cpp" line="+1930"/>
+ <location filename="../tools/designer/src/lib/shared/qtresourceeditordialog.cpp" line="+1962"/>
<source>Edit Resources</source>
<translation>Ressourcen bearbeiten</translation>
</message>
@@ -3454,7 +3422,7 @@ zu:
<translation>Datei oder Ressource löschen</translation>
</message>
<message>
- <location filename="../tools/designer/src/lib/shared/qtresourceeditordialog.cpp" line="-2092"/>
+ <location filename="../tools/designer/src/lib/shared/qtresourceeditordialog.cpp" line="-2094"/>
<source>%1 already exists.
Do you want to replace it?</source>
<translation>Die Datei %1 existiert bereits.
@@ -3466,7 +3434,7 @@ Wollen Sie sie überschreiben?</translation>
<translation>Die Datei ist offenbar keine Ressourcendatei; an Stelle des erwarteten Elements &apos;%2&apos; wurde das Element &apos;%1&apos; gefunden.</translation>
</message>
<message>
- <location line="+900"/>
+ <location line="+902"/>
<source>%1 [read-only]</source>
<translation>%1 [schreibgeschützt]</translation>
</message>
@@ -3577,7 +3545,7 @@ Dies kann zum Beispiel eine Sprachkennung wie &quot;_de&quot; sein.</translation
<context>
<name>QtResourceView</name>
<message>
- <location filename="../tools/designer/src/lib/shared/qtresourceview.cpp" line="+404"/>
+ <location filename="../tools/designer/src/lib/shared/qtresourceview.cpp" line="+435"/>
<source>Size: %1 x %2
%3</source>
<translation>Größe: %1 x %2
@@ -3610,7 +3578,7 @@ Dies kann zum Beispiel eine Sprachkennung wie &quot;_de&quot; sein.</translation
<context>
<name>QtSizeFPropertyManager</name>
<message>
- <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="-532"/>
+ <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="-537"/>
<source>%1 x %2</source>
<translation>%1 x %2</translation>
</message>
@@ -3628,7 +3596,7 @@ Dies kann zum Beispiel eine Sprachkennung wie &quot;_de&quot; sein.</translation
<context>
<name>QtSizePolicyPropertyManager</name>
<message>
- <location line="+1709"/>
+ <location line="+1719"/>
<location line="+1"/>
<source>&lt;Invalid&gt;</source>
<translation>&lt;Ungültig&gt;</translation>
@@ -3662,7 +3630,7 @@ Dies kann zum Beispiel eine Sprachkennung wie &quot;_de&quot; sein.</translation
<context>
<name>QtSizePropertyManager</name>
<message>
- <location line="-2288"/>
+ <location line="-2298"/>
<source>%1 x %2</source>
<translation>%1 x %2</translation>
</message>
@@ -3680,7 +3648,7 @@ Dies kann zum Beispiel eine Sprachkennung wie &quot;_de&quot; sein.</translation
<context>
<name>QtToolBarDialog</name>
<message>
- <location filename="../tools/shared/qttoolbardialog/qttoolbardialog.cpp" line="+1759"/>
+ <location filename="../tools/shared/qttoolbardialog/qttoolbardialog.cpp" line="+1789"/>
<source>&lt; S E P A R A T O R &gt;</source>
<translation>&lt; T R E N N E R &gt;</translation>
</message>
@@ -3788,7 +3756,7 @@ Dies kann zum Beispiel eine Sprachkennung wie &quot;_de&quot; sein.</translation
<context>
<name>QtTreePropertyBrowser</name>
<message>
- <location filename="../tools/shared/qtpropertybrowser/qttreepropertybrowser.cpp" line="+416"/>
+ <location filename="../tools/shared/qtpropertybrowser/qttreepropertybrowser.cpp" line="+442"/>
<source>Property</source>
<translation>Eigenschaft</translation>
</message>
@@ -3801,7 +3769,7 @@ Dies kann zum Beispiel eine Sprachkennung wie &quot;_de&quot; sein.</translation
<context>
<name>SaveFormAsTemplate</name>
<message>
- <location filename="../tools/designer/src/designer/saveformastemplate.cpp" line="+42"/>
+ <location filename="../tools/designer/src/designer/saveformastemplate.cpp" line="+72"/>
<source>Add path...</source>
<translation>Verzeichnis anlegen...</translation>
</message>
@@ -3866,7 +3834,7 @@ Möchten Sie sie überschreiben?</translation>
<context>
<name>ScriptErrorDialog</name>
<message>
- <location filename="../tools/designer/src/lib/shared/scripterrordialog.cpp" line="+33"/>
+ <location filename="../tools/designer/src/lib/shared/scripterrordialog.cpp" line="+63"/>
<source>An error occurred while running the scripts for &quot;%1&quot;:
</source>
<translation>Bei der Ausführung der Skripte für &quot;%1&quot; sind Fehler aufgetreten:
@@ -3899,7 +3867,7 @@ Möchten Sie sie überschreiben?</translation>
<context>
<name>SignalSlotConnection</name>
<message>
- <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditor.cpp" line="-311"/>
+ <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditor.cpp" line="-358"/>
<source>SENDER(%1), SIGNAL(%2), RECEIVER(%3), SLOT(%4)</source>
<translation>SENDER(%1), SIGNAL(%2), EMPFÄNGER(%3), SLOT(%4)</translation>
</message>
@@ -3940,7 +3908,7 @@ Möchten Sie sie überschreiben?</translation>
<context>
<name>Spacer</name>
<message>
- <location filename="../tools/designer/src/lib/shared/spacer_widget.cpp" line="+245"/>
+ <location filename="../tools/designer/src/lib/shared/spacer_widget.cpp" line="+275"/>
<source>Horizontal Spacer &apos;%1&apos;, %2 x %3</source>
<translation>Horizontales Füllelement &apos;%1&apos;, %2 x %3</translation>
</message>
@@ -3953,7 +3921,7 @@ Möchten Sie sie überschreiben?</translation>
<context>
<name>TemplateOptionsPage</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/templateoptionspage.cpp" line="+126"/>
+ <location filename="../tools/designer/src/components/formeditor/templateoptionspage.cpp" line="+156"/>
<source>Template Paths</source>
<extracomment>Tab in preferences dialog</extracomment>
<translation>Verzeichnisse für Vorlagen</translation>
@@ -3995,17 +3963,12 @@ Möchten Sie sie überschreiben?</translation>
<context>
<name>VersionDialog</name>
<message>
- <location filename="../tools/designer/src/designer/versiondialog.cpp" line="+141"/>
+ <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;Version %2</translation>
</message>
<message>
- <location line="+2"/>
- <source> Open Source Edition</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location line="+3"/>
+ <location line="+1"/>
<source>Qt Designer</source>
<translation>Qt Designer</translation>
</message>
@@ -4015,30 +3978,15 @@ Möchten Sie sie überschreiben?</translation>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+4"/>
- <source>This version of Qt Designer is part of the Qt Open Source Edition, for use in the development of Open Source applications. Qt is a comprehensive C++ framework for cross-platform application development.&lt;br/&gt;&lt;br/&gt;You need a commercial Qt license for development of proprietary (closed source) applications. Please see &lt;a href=&quot;http://qtsoftware.com/company/about/businessmodel&quot;&gt;http://qtsoftware.com/company/about/businessmodel.html&lt;/a&gt; for an overview of Qt licensing.&lt;br/&gt;</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location line="+12"/>
- <source>This program is licensed to you under the terms of the Qt Commercial License Agreement. For details, see the file LICENSE that came with this software distribution.&lt;br/&gt;</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<location line="+5"/>
<source>%1&lt;br/&gt;%2&lt;br/&gt;Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).&lt;br/&gt;&lt;br/&gt;The program is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.&lt;br/&gt; </source>
<translation type="unfinished"></translation>
</message>
- <message>
- <location line="-9"/>
- <source>This program is licensed to you under the terms of the Qt %1 License Agreement. For details, see the license file that came with this software distribution.&lt;br/&gt;</source>
- <translation type="unfinished"></translation>
- </message>
</context>
<context>
<name>WidgetDataBase</name>
<message>
- <location filename="../tools/designer/src/lib/shared/widgetdatabase.cpp" line="+786"/>
+ <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>Die Datei enthält ein benutzerdefiniertes Widget &apos;%1&apos; dessen Basisklasse (%2) nicht mit dem Eintrag in der Widget-Datenbank übereinstimmt. Die Widget-Datenbank wird nicht geändert.</translation>
</message>
@@ -4046,22 +3994,22 @@ Möchten Sie sie überschreiben?</translation>
<context>
<name>qdesigner_internal::ActionEditor</name>
<message>
- <location filename="../tools/designer/src/lib/shared/actioneditor.cpp" line="+111"/>
+ <location filename="../tools/designer/src/lib/shared/actioneditor.cpp" line="+143"/>
<source>Actions</source>
<translation>Aktionen</translation>
</message>
<message>
- <location line="-15"/>
+ <location line="-16"/>
<source>New...</source>
<translation>Neu...</translation>
</message>
<message>
- <location line="+6"/>
+ <location line="+7"/>
<source>Delete</source>
<translation>Löschen</translation>
</message>
<message>
- <location line="+305"/>
+ <location line="+307"/>
<source>New action</source>
<translation>Neue Aktion</translation>
</message>
@@ -4071,12 +4019,17 @@ Möchten Sie sie überschreiben?</translation>
<translation>Aktion ändern</translation>
</message>
<message>
- <location line="-408"/>
+ <location line="-411"/>
<source>Edit...</source>
<translation>Ändern...</translation>
</message>
<message>
<location line="+1"/>
+ <source>Go to slot...</source>
+ <translation>Slot anzeigen...</translation>
+ </message>
+ <message>
+ <location line="+1"/>
<source>Copy</source>
<translation>Kopieren</translation>
</message>
@@ -4096,7 +4049,7 @@ Möchten Sie sie überschreiben?</translation>
<translation>Alles auswählen</translation>
</message>
<message>
- <location line="+55"/>
+ <location line="+57"/>
<source>Icon View</source>
<translation>Icon-Ansicht</translation>
</message>
@@ -4106,7 +4059,7 @@ Möchten Sie sie überschreiben?</translation>
<translation>Detaillierte Ansicht</translation>
</message>
<message>
- <location line="+406"/>
+ <location line="+412"/>
<source>Remove actions</source>
<translation> Aktionen löschen</translation>
</message>
@@ -4116,12 +4069,12 @@ Möchten Sie sie überschreiben?</translation>
<translation>Aktion &apos;%1&apos; löschen</translation>
</message>
<message>
- <location line="+183"/>
+ <location line="+186"/>
<source>Used In</source>
<translation>Verwendet in</translation>
</message>
<message>
- <location line="-598"/>
+ <location line="-607"/>
<source>Configure Action Editor</source>
<translation>Aktionseditor konfigurieren</translation>
</message>
@@ -4129,7 +4082,7 @@ Möchten Sie sie überschreiben?</translation>
<context>
<name>qdesigner_internal::ActionModel</name>
<message>
- <location filename="../tools/designer/src/lib/shared/actionrepository.cpp" line="+64"/>
+ <location filename="../tools/designer/src/lib/shared/actionrepository.cpp" line="+95"/>
<source>Name</source>
<translation>Name</translation>
</message>
@@ -4162,7 +4115,7 @@ Möchten Sie sie überschreiben?</translation>
<context>
<name>qdesigner_internal::BuddyEditor</name>
<message>
- <location filename="../tools/designer/src/components/buddyeditor/buddyeditor.cpp" line="+235"/>
+ <location filename="../tools/designer/src/components/buddyeditor/buddyeditor.cpp" line="+265"/>
<source>Add buddy</source>
<translation>Buddy hinzufügen</translation>
</message>
@@ -4196,7 +4149,7 @@ Möchten Sie sie überschreiben?</translation>
<context>
<name>qdesigner_internal::BuddyEditorPlugin</name>
<message>
- <location filename="../tools/designer/src/components/buddyeditor/buddyeditor_plugin.cpp" line="+47"/>
+ <location filename="../tools/designer/src/components/buddyeditor/buddyeditor_plugin.cpp" line="+77"/>
<source>Edit Buddies</source>
<translation>Buddies bearbeiten</translation>
</message>
@@ -4204,7 +4157,7 @@ Möchten Sie sie überschreiben?</translation>
<context>
<name>qdesigner_internal::BuddyEditorTool</name>
<message>
- <location filename="../tools/designer/src/components/buddyeditor/buddyeditor_tool.cpp" line="+30"/>
+ <location filename="../tools/designer/src/components/buddyeditor/buddyeditor_tool.cpp" line="+60"/>
<source>Edit Buddies</source>
<translation>Buddies bearbeiten</translation>
</message>
@@ -4258,7 +4211,7 @@ Möchten Sie sie überschreiben?</translation>
<context>
<name>qdesigner_internal::CodeDialog</name>
<message>
- <location filename="../tools/designer/src/lib/shared/codedialog.cpp" line="+69"/>
+ <location filename="../tools/designer/src/lib/shared/codedialog.cpp" line="+99"/>
<source>Save...</source>
<translation>Speichern...</translation>
</message>
@@ -4316,7 +4269,7 @@ Möchten Sie sie überschreiben?</translation>
<context>
<name>qdesigner_internal::ColorAction</name>
<message>
- <location filename="../tools/designer/src/lib/shared/richtexteditor.cpp" line="+220"/>
+ <location filename="../tools/designer/src/lib/shared/richtexteditor.cpp" line="+250"/>
<source>Text Color</source>
<translation>Schriftfarbe</translation>
</message>
@@ -4324,7 +4277,7 @@ Möchten Sie sie überschreiben?</translation>
<context>
<name>qdesigner_internal::ComboBoxTaskMenu</name>
<message>
- <location filename="../tools/designer/src/components/taskmenu/combobox_taskmenu.cpp" line="+42"/>
+ <location filename="../tools/designer/src/components/taskmenu/combobox_taskmenu.cpp" line="+72"/>
<source>Edit Items...</source>
<translation>Einträge ändern...</translation>
</message>
@@ -4416,7 +4369,7 @@ Möchten Sie sie überschreiben?</translation>
<context>
<name>qdesigner_internal::ContainerWidgetTaskMenu</name>
<message>
- <location filename="../tools/designer/src/components/taskmenu/containerwidget_taskmenu.cpp" line="+82"/>
+ <location filename="../tools/designer/src/components/taskmenu/containerwidget_taskmenu.cpp" line="+112"/>
<source>Insert Page Before Current Page</source>
<translation>Seite davor einfügen</translation>
</message>
@@ -4479,7 +4432,7 @@ Möchten Sie sie überschreiben?</translation>
<context>
<name>qdesigner_internal::DesignerPropertyManager</name>
<message>
- <location filename="../tools/designer/src/components/propertyeditor/designerpropertymanager.cpp" line="+614"/>
+ <location filename="../tools/designer/src/components/propertyeditor/designerpropertymanager.cpp" line="+644"/>
<location line="+6"/>
<source>AlignLeft</source>
<translation>Linksbündig ausrichten</translation>
@@ -4605,7 +4558,7 @@ Möchten Sie sie überschreiben?</translation>
<context>
<name>qdesigner_internal::DeviceProfileDialog</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/deviceprofiledialog.cpp" line="+33"/>
+ <location filename="../tools/designer/src/components/formeditor/deviceprofiledialog.cpp" line="+63"/>
<source>Device Profiles (*.%1)</source>
<translation>Profile</translation>
</message>
@@ -4765,7 +4718,7 @@ Möchten Sie sie überschreiben?</translation>
<context>
<name>qdesigner_internal::FilterWidget</name>
<message>
- <location filename="../tools/designer/src/lib/shared/filterwidget.cpp" line="+155"/>
+ <location filename="../tools/designer/src/lib/shared/filterwidget.cpp" line="+185"/>
<source>&lt;Filter&gt;</source>
<translation>&lt;FIlter&gt;</translation>
</message>
@@ -4773,7 +4726,7 @@ Möchten Sie sie überschreiben?</translation>
<context>
<name>qdesigner_internal::FormEditor</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/formeditor.cpp" line="+160"/>
+ <location filename="../tools/designer/src/components/formeditor/formeditor.cpp" line="+190"/>
<source>Resource File Changed</source>
<translation>Änderung einer Ressourcendatei</translation>
</message>
@@ -4794,7 +4747,7 @@ Möchten Sie sie überschreiben?</translation>
<context>
<name>qdesigner_internal::FormWindow</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/formwindow.cpp" line="-1262"/>
+ <location filename="../tools/designer/src/components/formeditor/formwindow.cpp" line="-1267"/>
<source>Edit contents</source>
<translation>Ändern</translation>
</message>
@@ -4804,7 +4757,7 @@ Möchten Sie sie überschreiben?</translation>
<translation>F2</translation>
</message>
<message>
- <location line="+836"/>
+ <location line="+841"/>
<source>Resize</source>
<translation>Größe ändern</translation>
</message>
@@ -4890,7 +4843,7 @@ Möchten Sie sie überschreiben?</translation>
<context>
<name>qdesigner_internal::FormWindowBase</name>
<message>
- <location filename="../tools/designer/src/lib/shared/formwindowbase.cpp" line="+363"/>
+ <location filename="../tools/designer/src/lib/shared/formwindowbase.cpp" line="+397"/>
<source>Delete</source>
<translation>Löschen</translation>
</message>
@@ -4903,7 +4856,7 @@ Möchten Sie sie überschreiben?</translation>
<context>
<name>qdesigner_internal::FormWindowManager</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/formwindowmanager.cpp" line="+338"/>
+ <location filename="../tools/designer/src/components/formeditor/formwindowmanager.cpp" line="+368"/>
<source>Cu&amp;t</source>
<translation>&amp;Ausschneiden</translation>
</message>
@@ -4985,7 +4938,7 @@ Möchten Sie sie überschreiben?</translation>
<translation>Berechnet die Größe des ausgewählten Widgets aus dem Layout und passt das Widget an</translation>
</message>
<message>
- <location line="+7"/>
+ <location line="+6"/>
<source>Lay Out &amp;Horizontally</source>
<translation>Objekte &amp;waagrecht anordnen</translation>
</message>
@@ -5035,7 +4988,7 @@ Möchten Sie sie überschreiben?</translation>
<translation>Ordnet die ausgewählten Objekte um einen Splitter senkecht an</translation>
</message>
<message>
- <location line="+6"/>
+ <location line="+7"/>
<source>&amp;Break Layout</source>
<translation>La&amp;yout auflösen</translation>
</message>
@@ -5060,7 +5013,7 @@ Möchten Sie sie überschreiben?</translation>
<translation>Formular&amp;einstellungen...</translation>
</message>
<message>
- <location line="+75"/>
+ <location line="+78"/>
<source>Break Layout</source>
<translation>Layout auflösen</translation>
</message>
@@ -5076,17 +5029,17 @@ Möchten Sie sie überschreiben?</translation>
<translation>Es konnte keine Vorschau erzeugt werden</translation>
</message>
<message>
- <location line="+336"/>
+ <location line="+341"/>
<source>Form Settings - %1</source>
<translation>Formulareinstellungen - %1</translation>
</message>
<message>
- <location line="-502"/>
+ <location line="-510"/>
<source>Removes empty columns and rows</source>
<translation>Entfernt unbesetzte Zeilen und Spalten</translation>
</message>
<message>
- <location line="-49"/>
+ <location line="-50"/>
<source>Lay Out in a &amp;Form Layout</source>
<translation>Objekte in &amp;Formularlayout anordnen</translation>
</message>
@@ -5096,7 +5049,7 @@ Möchten Sie sie überschreiben?</translation>
<translation>Ordnet die ausgewählten Objekte in einem zweispaltigen Formularlayout an</translation>
</message>
<message>
- <location line="+44"/>
+ <location line="+45"/>
<source>Si&amp;mplify Grid Layout</source>
<translation>Tabellarisches Layout &amp;vereinfachen</translation>
</message>
@@ -5104,7 +5057,7 @@ Möchten Sie sie überschreiben?</translation>
<context>
<name>qdesigner_internal::FormWindowSettings</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/formwindowsettings.cpp" line="+162"/>
+ <location filename="../tools/designer/src/components/formeditor/formwindowsettings.cpp" line="+193"/>
<source>None</source>
<translation>Kein</translation>
</message>
@@ -5155,7 +5108,7 @@ Möchten Sie sie überschreiben?</translation>
<context>
<name>qdesigner_internal::GroupBoxTaskMenu</name>
<message>
- <location filename="../tools/designer/src/components/taskmenu/groupbox_taskmenu.cpp" line="+56"/>
+ <location filename="../tools/designer/src/components/taskmenu/groupbox_taskmenu.cpp" line="+86"/>
<source>Change title...</source>
<translation>Titel ändern...</translation>
</message>
@@ -5171,7 +5124,7 @@ Möchten Sie sie überschreiben?</translation>
<context>
<name>qdesigner_internal::IconSelector</name>
<message>
- <location filename="../tools/designer/src/lib/shared/iconselector.cpp" line="+210"/>
+ <location filename="../tools/designer/src/lib/shared/iconselector.cpp" line="+211"/>
<source>The pixmap file &apos;%1&apos; cannot be read.</source>
<translation>Die Pixmap-Datei &apos;%1&apos; kann nicht gelesen werden.</translation>
</message>
@@ -5323,7 +5276,7 @@ Möchten Sie sie überschreiben?</translation>
<context>
<name>qdesigner_internal::LabelTaskMenu</name>
<message>
- <location filename="../tools/designer/src/components/taskmenu/label_taskmenu.cpp" line="+59"/>
+ <location filename="../tools/designer/src/components/taskmenu/label_taskmenu.cpp" line="+89"/>
<source>Change rich text...</source>
<translation>Formatierbaren Text ändern...</translation>
</message>
@@ -5336,7 +5289,7 @@ Möchten Sie sie überschreiben?</translation>
<context>
<name>qdesigner_internal::LineEditTaskMenu</name>
<message>
- <location filename="../tools/designer/src/components/taskmenu/lineedit_taskmenu.cpp" line="+54"/>
+ <location filename="../tools/designer/src/components/taskmenu/lineedit_taskmenu.cpp" line="+84"/>
<source>Change text...</source>
<translation>Text ändern...</translation>
</message>
@@ -5344,7 +5297,7 @@ Möchten Sie sie überschreiben?</translation>
<context>
<name>qdesigner_internal::ListWidgetEditor</name>
<message>
- <location filename="../tools/designer/src/components/taskmenu/listwidgeteditor.cpp" line="+75"/>
+ <location filename="../tools/designer/src/components/taskmenu/listwidgeteditor.cpp" line="+105"/>
<source>Edit List Widget</source>
<translation>List-Widget ändern</translation>
</message>
@@ -5362,7 +5315,7 @@ Möchten Sie sie überschreiben?</translation>
<context>
<name>qdesigner_internal::ListWidgetTaskMenu</name>
<message>
- <location filename="../tools/designer/src/components/taskmenu/listwidget_taskmenu.cpp" line="+41"/>
+ <location filename="../tools/designer/src/components/taskmenu/listwidget_taskmenu.cpp" line="+71"/>
<source>Edit Items...</source>
<translation> Elemente ändern...</translation>
</message>
@@ -5398,7 +5351,7 @@ Möchten Sie sie überschreiben?</translation>
<context>
<name>qdesigner_internal::MenuTaskMenu</name>
<message>
- <location filename="../tools/designer/src/components/taskmenu/menutaskmenu.cpp" line="+30"/>
+ <location filename="../tools/designer/src/components/taskmenu/menutaskmenu.cpp" line="+60"/>
<source>Remove</source>
<translation>Löschen</translation>
</message>
@@ -5457,7 +5410,7 @@ Möchten Sie sie überschreiben?</translation>
<context>
<name>qdesigner_internal::NewDynamicPropertyDialog</name>
<message>
- <location filename="../tools/designer/src/components/propertyeditor/newdynamicpropertydialog.cpp" line="+104"/>
+ <location filename="../tools/designer/src/components/propertyeditor/newdynamicpropertydialog.cpp" line="+134"/>
<source>Set Property Name</source>
<translation>Namen der Eigenschaft setzen</translation>
</message>
@@ -5577,7 +5530,7 @@ Please select another name.</source>
<context>
<name>qdesigner_internal::NewPromotedClassPanel</name>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_promotiondialog.cpp" line="+66"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_promotiondialog.cpp" line="+96"/>
<source>Add</source>
<translation>Hinzufügen</translation>
</message>
@@ -5615,7 +5568,7 @@ Please select another name.</source>
<context>
<name>qdesigner_internal::ObjectInspector</name>
<message>
- <location filename="../tools/designer/src/components/objectinspector/objectinspector.cpp" line="+727"/>
+ <location filename="../tools/designer/src/components/objectinspector/objectinspector.cpp" line="+758"/>
<source>&amp;Find in Text...</source>
<translation>&amp;Suchen...</translation>
</message>
@@ -5631,7 +5584,7 @@ Please select another name.</source>
<context>
<name>qdesigner_internal::OrderDialog</name>
<message>
- <location filename="../tools/designer/src/lib/shared/orderdialog.cpp" line="+83"/>
+ <location filename="../tools/designer/src/lib/shared/orderdialog.cpp" line="+113"/>
<source>Index %1 (%2)</source>
<translation>Position %1 (%2)</translation>
</message>
@@ -5712,7 +5665,7 @@ Please select another name.</source>
<context>
<name>qdesigner_internal::PaletteEditorButton</name>
<message>
- <location filename="../tools/designer/src/components/propertyeditor/paletteeditorbutton.cpp" line="+31"/>
+ <location filename="../tools/designer/src/components/propertyeditor/paletteeditorbutton.cpp" line="+61"/>
<source>Change Palette</source>
<translation>Palette ändern</translation>
</message>
@@ -5720,7 +5673,7 @@ Please select another name.</source>
<context>
<name>qdesigner_internal::PaletteModel</name>
<message>
- <location filename="../tools/designer/src/components/propertyeditor/paletteeditor.cpp" line="+351"/>
+ <location filename="../tools/designer/src/components/propertyeditor/paletteeditor.cpp" line="+381"/>
<source>Color Role</source>
<translation>Farbrolle</translation>
</message>
@@ -5772,15 +5725,57 @@ Please select another name.</source>
<context>
<name>qdesigner_internal::PlainTextEditorDialog</name>
<message>
- <location filename="../tools/designer/src/lib/shared/plaintexteditor.cpp" line="+39"/>
+ <location filename="../tools/designer/src/lib/shared/plaintexteditor.cpp" line="+69"/>
<source>Edit text</source>
<translation>Text bearbeiten</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>Komponenten</translation>
+ </message>
+ <message>
+ <location line="+13"/>
+ <source>Plugin Information</source>
+ <translation>Plugins</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Refresh</source>
+ <translation>Neu laden</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Scan for newly installed custom widget plugins.</source>
+ <translation>Sucht nach neuinstallierten Plugins mit benutzerdefinierten Widgets.</translation>
+ </message>
+ <message>
+ <location line="+48"/>
+ <source>Qt Designer couldn&apos;t find any plugins</source>
+ <translation>Qt Designer konnte keine plugins finden</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Qt Designer found the following plugins</source>
+ <translation>Qt Designer hat die folgenden Plugins gefunden</translation>
+ </message>
+ <message>
+ <location line="+55"/>
+ <source>New custom widget plugins have been found.</source>
+ <translation>Es wurden neuinstallierten Plugins mit benutzerdefinierten Widgets gefunden.</translation>
+ </message>
+ <message>
+ <source>1</source>
+ <translation type="obsolete">1</translation>
+ </message>
+</context>
+<context>
<name>qdesigner_internal::PreviewActionGroup</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/previewactiongroup.cpp" line="+65"/>
+ <location filename="../tools/designer/src/components/formeditor/previewactiongroup.cpp" line="+95"/>
<source>%1 Style</source>
<translation>%1-Stil</translation>
</message>
@@ -5823,7 +5818,7 @@ Please select another name.</source>
<context>
<name>qdesigner_internal::PreviewDeviceSkin</name>
<message>
- <location filename="../tools/designer/src/lib/shared/previewmanager.cpp" line="+188"/>
+ <location filename="../tools/designer/src/lib/shared/previewmanager.cpp" line="+218"/>
<source>&amp;Close</source>
<translation>&amp;Schließen</translation>
</message>
@@ -5920,7 +5915,7 @@ Please select another name.</source>
<context>
<name>qdesigner_internal::PromotionTaskMenu</name>
<message>
- <location filename="../tools/designer/src/lib/shared/promotiontaskmenu.cpp" line="+55"/>
+ <location filename="../tools/designer/src/lib/shared/promotiontaskmenu.cpp" line="+85"/>
<source>Promoted widgets...</source>
<translation>Benutzerdefinierte Klassen...</translation>
</message>
@@ -5948,7 +5943,7 @@ Please select another name.</source>
<context>
<name>qdesigner_internal::PropertyEditor</name>
<message>
- <location filename="../tools/designer/src/components/propertyeditor/propertyeditor.cpp" line="+158"/>
+ <location filename="../tools/designer/src/components/propertyeditor/propertyeditor.cpp" line="+188"/>
<source>Add Dynamic Property...</source>
<translation>Dynamische Eigenschaft hinzufügen...</translation>
</message>
@@ -5968,14 +5963,14 @@ Please select another name.</source>
<translation>Detailansicht</translation>
</message>
<message>
- <location line="+596"/>
+ <location line="+597"/>
<source>Object: %1
Class: %2</source>
<translation>Objekt: %1
Klasse: %2</translation>
</message>
<message>
- <location line="-599"/>
+ <location line="-600"/>
<source>Sorting</source>
<translation>Sortiert</translation>
</message>
@@ -5985,7 +5980,7 @@ Klasse: %2</translation>
<translation>Farbige Hervorhebung</translation>
</message>
<message>
- <location line="+65"/>
+ <location line="+66"/>
<source>Configure Property Editor</source>
<translation>Anzeige der Eigenschaften konfigurieren</translation>
</message>
@@ -6008,7 +6003,7 @@ Klasse: %2</translation>
<context>
<name>qdesigner_internal::PropertyLineEdit</name>
<message>
- <location filename="../tools/designer/src/lib/shared/propertylineedit.cpp" line="+58"/>
+ <location filename="../tools/designer/src/lib/shared/propertylineedit.cpp" line="+88"/>
<source>Insert line break</source>
<translation>Zeilenumbruch einfügen</translation>
</message>
@@ -6122,12 +6117,12 @@ Klasse: %2</translation>
<translation>Slot anzeigen...</translation>
</message>
<message>
- <location line="+397"/>
+ <location line="+413"/>
<source>no signals available</source>
<translation>Es sind keine Signale vorhanden</translation>
</message>
<message numerus="yes">
- <location line="+61"/>
+ <location line="+67"/>
<source>Set size constraint on %n widget(s)</source>
<translation>
<numerusform>Größenbeschränkung eines Widgets festlegen</numerusform>
@@ -6135,7 +6130,7 @@ Klasse: %2</translation>
</translation>
</message>
<message>
- <location line="-455"/>
+ <location line="-477"/>
<source>Size Constraints</source>
<translation>Größe</translation>
</message>
@@ -6170,7 +6165,7 @@ Klasse: %2</translation>
<translation>Maximalgröße festlegen</translation>
</message>
<message>
- <location line="+236"/>
+ <location line="+235"/>
<source>Edit ToolTip</source>
<translation>ToolTip bearbeiten</translation>
</message>
@@ -6183,7 +6178,7 @@ Klasse: %2</translation>
<context>
<name>qdesigner_internal::QDesignerWidgetBox</name>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_widgetbox.cpp" line="+97"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_widgetbox.cpp" line="+127"/>
<location line="+13"/>
<source>Unexpected element &lt;%1&gt;</source>
<translation>Ungültiges Element &lt;%1&gt;</translation>
@@ -6238,7 +6233,7 @@ Klasse: %2</translation>
<context>
<name>qdesigner_internal::QtGradientStopsController</name>
<message>
- <location filename="../tools/shared/qtgradienteditor/qtgradientstopscontroller.cpp" line="+147"/>
+ <location filename="../tools/shared/qtgradienteditor/qtgradientstopscontroller.cpp" line="+177"/>
<source>H</source>
<translation>H</translation>
</message>
@@ -6413,7 +6408,7 @@ Klasse: %2</translation>
<context>
<name>qdesigner_internal::ScriptDialog</name>
<message>
- <location filename="../tools/designer/src/lib/shared/scriptdialog.cpp" line="+38"/>
+ <location filename="../tools/designer/src/lib/shared/scriptdialog.cpp" line="+68"/>
<source>Edit script</source>
<translation>Skript bearbeiten</translation>
</message>
@@ -6463,7 +6458,7 @@ Klasse: %2</translation>
<context>
<name>qdesigner_internal::SignalSlotEditorPlugin</name>
<message>
- <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditor_plugin.cpp" line="+46"/>
+ <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditor_plugin.cpp" line="+76"/>
<source>Edit Signals/Slots</source>
<translation>Signale und Slots bearbeiten</translation>
</message>
@@ -6476,7 +6471,7 @@ Klasse: %2</translation>
<context>
<name>qdesigner_internal::SignalSlotEditorTool</name>
<message>
- <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditor_tool.cpp" line="+32"/>
+ <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditor_tool.cpp" line="+62"/>
<source>Edit Signals/Slots</source>
<translation>Signale und Slots bearbeiten</translation>
</message>
@@ -6484,7 +6479,7 @@ Klasse: %2</translation>
<context>
<name>qdesigner_internal::StatusBarTaskMenu</name>
<message>
- <location filename="../tools/designer/src/components/taskmenu/toolbar_taskmenu.cpp" line="+55"/>
+ <location filename="../tools/designer/src/components/taskmenu/toolbar_taskmenu.cpp" line="+85"/>
<source>Remove</source>
<translation>Löschen</translation>
</message>
@@ -6492,7 +6487,7 @@ Klasse: %2</translation>
<context>
<name>qdesigner_internal::StringListEditorButton</name>
<message>
- <location filename="../tools/designer/src/components/propertyeditor/stringlisteditorbutton.cpp" line="+30"/>
+ <location filename="../tools/designer/src/components/propertyeditor/stringlisteditorbutton.cpp" line="+60"/>
<source>Change String List</source>
<translation>Zeichenkettenliste ändern</translation>
</message>
@@ -6500,7 +6495,7 @@ Klasse: %2</translation>
<context>
<name>qdesigner_internal::StyleSheetEditorDialog</name>
<message>
- <location filename="../tools/designer/src/lib/shared/stylesheeteditor.cpp" line="+71"/>
+ <location filename="../tools/designer/src/lib/shared/stylesheeteditor.cpp" line="+101"/>
<source>Edit Style Sheet</source>
<translation>Stylesheet bearbeiten</translation>
</message>
@@ -6539,7 +6534,7 @@ Klasse: %2</translation>
<context>
<name>qdesigner_internal::TabOrderEditor</name>
<message>
- <location filename="../tools/designer/src/components/tabordereditor/tabordereditor.cpp" line="+333"/>
+ <location filename="../tools/designer/src/components/tabordereditor/tabordereditor.cpp" line="+363"/>
<source>Start from Here</source>
<translation>Hier neu beginnen</translation>
</message>
@@ -6567,7 +6562,7 @@ Klasse: %2</translation>
<context>
<name>qdesigner_internal::TabOrderEditorPlugin</name>
<message>
- <location filename="../tools/designer/src/components/tabordereditor/tabordereditor_plugin.cpp" line="+47"/>
+ <location filename="../tools/designer/src/components/tabordereditor/tabordereditor_plugin.cpp" line="+77"/>
<source>Edit Tab Order</source>
<translation>Tabulatorreihenfolge bearbeiten</translation>
</message>
@@ -6575,7 +6570,7 @@ Klasse: %2</translation>
<context>
<name>qdesigner_internal::TabOrderEditorTool</name>
<message>
- <location filename="../tools/designer/src/components/tabordereditor/tabordereditor_tool.cpp" line="+31"/>
+ <location filename="../tools/designer/src/components/tabordereditor/tabordereditor_tool.cpp" line="+61"/>
<source>Edit Tab Order</source>
<translation>Tabulatorreihenfolge bearbeiten</translation>
</message>
@@ -6583,7 +6578,7 @@ Klasse: %2</translation>
<context>
<name>qdesigner_internal::TableWidgetEditor</name>
<message>
- <location filename="../tools/designer/src/components/taskmenu/tablewidgeteditor.cpp" line="+41"/>
+ <location filename="../tools/designer/src/components/taskmenu/tablewidgeteditor.cpp" line="+71"/>
<source>New Column</source>
<translation>Neue Spalte</translation>
</message>
@@ -6632,7 +6627,7 @@ Klasse: %2</translation>
<context>
<name>qdesigner_internal::TableWidgetTaskMenu</name>
<message>
- <location filename="../tools/designer/src/components/taskmenu/tablewidget_taskmenu.cpp" line="+38"/>
+ <location filename="../tools/designer/src/components/taskmenu/tablewidget_taskmenu.cpp" line="+68"/>
<source>Edit Items...</source>
<translation>Elemente ändern...</translation>
</message>
@@ -6663,7 +6658,7 @@ Klasse: %2</translation>
<context>
<name>qdesigner_internal::TextEditTaskMenu</name>
<message>
- <location filename="../tools/designer/src/components/taskmenu/textedit_taskmenu.cpp" line="+33"/>
+ <location filename="../tools/designer/src/components/taskmenu/textedit_taskmenu.cpp" line="+63"/>
<source>Change HTML...</source>
<translation>HTML ändern...</translation>
</message>
@@ -6709,7 +6704,7 @@ Klasse: %2</translation>
<context>
<name>qdesigner_internal::ToolBarEventFilter</name>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_toolbar.cpp" line="+209"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_toolbar.cpp" line="+239"/>
<source>Insert Separator</source>
<translation>Trenner einfügen</translation>
</message>
@@ -6737,7 +6732,7 @@ Klasse: %2</translation>
<context>
<name>qdesigner_internal::TreeWidgetEditor</name>
<message>
- <location filename="../tools/designer/src/components/taskmenu/treewidgeteditor.cpp" line="+50"/>
+ <location filename="../tools/designer/src/components/taskmenu/treewidgeteditor.cpp" line="+80"/>
<source>&amp;Columns</source>
<translation>&amp;Spalten</translation>
</message>
@@ -6863,7 +6858,7 @@ Klasse: %2</translation>
<context>
<name>qdesigner_internal::TreeWidgetTaskMenu</name>
<message>
- <location filename="../tools/designer/src/components/taskmenu/treewidget_taskmenu.cpp" line="+37"/>
+ <location filename="../tools/designer/src/components/taskmenu/treewidget_taskmenu.cpp" line="+67"/>
<source>Edit Items...</source>
<translation>Elemente ändern...</translation>
</message>
@@ -6871,7 +6866,7 @@ Klasse: %2</translation>
<context>
<name>qdesigner_internal::WidgetBox</name>
<message>
- <location filename="../tools/designer/src/components/widgetbox/widgetbox_dnditem.cpp" line="+83"/>
+ <location filename="../tools/designer/src/components/widgetbox/widgetbox_dnditem.cpp" line="+113"/>
<source>Warning: Widget creation failed in the widget box. This could be caused by invalid custom widget XML.</source>
<translation>Warnung: Die Erzeugung des Widgets in der Widget-Box schlug fehl. Das könnte durch fehlerhaften XML-Code benutzerdefinierter Widgets verursacht worden sein.</translation>
</message>
@@ -6879,17 +6874,17 @@ Klasse: %2</translation>
<context>
<name>qdesigner_internal::WidgetBoxTreeWidget</name>
<message>
- <location filename="../tools/designer/src/components/widgetbox/widgetboxtreewidget.cpp" line="-267"/>
+ <location filename="../tools/designer/src/components/widgetbox/widgetboxtreewidget.cpp" line="-268"/>
<source>Scratchpad</source>
<translation>Ablage</translation>
</message>
<message>
- <location line="+360"/>
+ <location line="+370"/>
<source>Custom Widgets</source>
<translation>Benutzerdefinierte Widgets</translation>
</message>
<message>
- <location line="+261"/>
+ <location line="+260"/>
<source>Expand all</source>
<translation>Alles aufklappen</translation>
</message>
@@ -6930,7 +6925,7 @@ Klasse: %2</translation>
<context>
<name>qdesigner_internal::WidgetEditorTool</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/tool_widgeteditor.cpp" line="+41"/>
+ <location filename="../tools/designer/src/components/formeditor/tool_widgeteditor.cpp" line="+71"/>
<source>Edit Widgets</source>
<translation>Widgets bearbeiten</translation>
</message>
@@ -6938,12 +6933,12 @@ Klasse: %2</translation>
<context>
<name>qdesigner_internal::WidgetFactory</name>
<message>
- <location filename="../tools/designer/src/lib/shared/widgetfactory.cpp" line="+237"/>
+ <location filename="../tools/designer/src/lib/shared/widgetfactory.cpp" line="+267"/>
<source>The custom widget factory registered for widgets of class %1 returned 0.</source>
<translation>Die Factory für benutzerdefinierte Widgets der Klasse %1 gab einen 0-Zeiger zurück.</translation>
</message>
<message>
- <location line="+40"/>
+ <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>Bei der Erzeugung von Widgets wurden widersprüchliche Klassennamen festgestellt: Die Factory für benutzerdefinierte Widgets der Klasse %1 gab ein Widget der Klasse %2 zurück.</translation>
</message>
@@ -6985,7 +6980,7 @@ This indicates an inconsistency in the ui-file.</source>
<context>
<name>qdesigner_internal::ZoomMenu</name>
<message>
- <location filename="../tools/designer/src/lib/shared/zoomwidget.cpp" line="+54"/>
+ <location filename="../tools/designer/src/lib/shared/zoomwidget.cpp" line="+84"/>
<source>%1 %</source>
<extracomment>Zoom factor</extracomment>
<translation>%1 %</translation>
diff --git a/translations/designer_ja.ts b/translations/designer_ja.ts
index a403b8d..1bcb801 100644
--- a/translations/designer_ja.ts
+++ b/translations/designer_ja.ts
@@ -1,20 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS><TS version="2.0" language="ja_JP">
+<!DOCTYPE TS>
+<TS version="2.0" language="ja_JP">
<context>
<name></name>
<message>
- <location filename="../tools/designer/src/components/propertyeditor/previewframe.cpp" line="+43"/>
+ <location filename="../tools/designer/src/components/propertyeditor/previewframe.cpp" line="+73"/>
<source>The moose in the noose
ate the goose who was loose.</source>
<translation type="unfinished">åŠä¸»ãŒå±é¢¨ã«ä¸Šæ‰‹ã«åŠä¸»ã®çµµã‚’æã„ãŸã€‚</translation>
</message>
<message>
- <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditorwindow.cpp" line="+624"/>
+ <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditorwindow.cpp" line="+647"/>
<source>&lt;object&gt;</source>
<translation type="unfinished">&lt;オブジェクト&gt;</translation>
</message>
<message>
- <location line="+16"/>
+ <location line="+18"/>
<source>&lt;signal&gt;</source>
<translation type="unfinished">&lt;シグナル&gt;</translation>
</message>
@@ -95,7 +96,7 @@ ate the goose who was loose.</source>
<context>
<name>AbstractFindWidget</name>
<message>
- <location filename="../tools/shared/findwidget/abstractfindwidget.cpp" line="+97"/>
+ <location filename="../tools/shared/findwidget/abstractfindwidget.cpp" line="+127"/>
<source>&amp;Previous</source>
<translation type="unfinished"></translation>
</message>
@@ -141,7 +142,7 @@ ate the goose who was loose.</source>
<context>
<name>AppFontDialog</name>
<message>
- <location filename="../tools/designer/src/designer/appfontdialog.cpp" line="+388"/>
+ <location filename="../tools/designer/src/designer/appfontdialog.cpp" line="+418"/>
<source>Additional Fonts</source>
<translation type="unfinished"></translation>
</message>
@@ -253,7 +254,7 @@ ate the goose who was loose.</source>
<context>
<name>AssistantClient</name>
<message>
- <location filename="../tools/designer/src/designer/assistantclient.cpp" line="+70"/>
+ <location filename="../tools/designer/src/designer/assistantclient.cpp" line="+100"/>
<source>Unable to send request: Assistant is not responding.</source>
<translation type="unfinished"></translation>
</message>
@@ -271,7 +272,7 @@ ate the goose who was loose.</source>
<context>
<name>BrushManagerProxy</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/brushmanagerproxy.cpp" line="+191"/>
+ <location filename="../tools/designer/src/components/formeditor/brushmanagerproxy.cpp" line="+221"/>
<source>The element &apos;%1&apos; is missing the required attribute &apos;%2&apos;.</source>
<translation type="unfinished"></translation>
</message>
@@ -299,7 +300,7 @@ ate the goose who was loose.</source>
<context>
<name>BrushPropertyManager</name>
<message>
- <location filename="../tools/designer/src/components/propertyeditor/brushpropertymanager.cpp" line="+22"/>
+ <location filename="../tools/designer/src/components/propertyeditor/brushpropertymanager.cpp" line="+52"/>
<source>No brush</source>
<translation type="unfinished"></translation>
</message>
@@ -396,19 +397,24 @@ ate the goose who was loose.</source>
<context>
<name>Command</name>
<message>
- <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditor.cpp" line="+177"/>
- <location line="+211"/>
+ <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditor.cpp" line="+208"/>
+ <location line="+258"/>
<source>Change signal</source>
<translation>シグナルを変更</translation>
</message>
<message>
- <location line="-209"/>
- <location line="+221"/>
+ <location line="-256"/>
+ <location line="+268"/>
<source>Change slot</source>
<translation>スロットを変更</translation>
</message>
<message>
- <location line="+14"/>
+ <location line="-220"/>
+ <source>Change signal-slot connection</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+234"/>
<source>Change sender</source>
<translation>発信者を変更</translation>
</message>
@@ -418,7 +424,7 @@ ate the goose who was loose.</source>
<translation>å—信者を変更</translation>
</message>
<message>
- <location filename="../tools/designer/src/lib/shared/connectionedit.cpp" line="+113"/>
+ <location filename="../tools/designer/src/lib/shared/connectionedit.cpp" line="+143"/>
<source>Add connection</source>
<translation>シグナル/スロット接続を追加</translation>
</message>
@@ -443,7 +449,7 @@ ate the goose who was loose.</source>
<translation>ターゲットを変更</translation>
</message>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_command.cpp" line="+117"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_command.cpp" line="+149"/>
<source>Insert &apos;%1&apos;</source>
<translation>&apos;%1&apos; を挿入</translation>
</message>
@@ -473,7 +479,7 @@ ate the goose who was loose.</source>
<translation>&apos;%1&apos; ã®è¦ªã‚’ã¤ã‘ã‹ãˆ</translation>
</message>
<message>
- <location line="+51"/>
+ <location line="+53"/>
<source>Promote to custom widget</source>
<translation>カスタムウィジェットã«æ ¼ä¸Šã’</translation>
</message>
@@ -508,48 +514,48 @@ ate the goose who was loose.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+126"/>
- <location line="+226"/>
- <location line="+75"/>
+ <location line="+135"/>
+ <location line="+235"/>
+ <location line="+78"/>
<source>Move Page</source>
<translation>ページを移動</translation>
</message>
<message>
- <location line="-267"/>
- <location line="+116"/>
- <location line="+183"/>
- <location line="+664"/>
+ <location line="-279"/>
+ <location line="+123"/>
+ <location line="+188"/>
+ <location line="+666"/>
<source>Delete Page</source>
<translation>ページを削除</translation>
</message>
<message>
- <location line="-925"/>
- <location line="+116"/>
+ <location line="-939"/>
+ <location line="+123"/>
<source>Page</source>
<translation>ページ</translation>
</message>
<message>
- <location line="-114"/>
- <location line="+297"/>
- <location line="+670"/>
+ <location line="-121"/>
+ <location line="+309"/>
+ <location line="+672"/>
<source>page</source>
<translation>ページ</translation>
</message>
<message>
- <location line="-964"/>
- <location line="+116"/>
- <location line="+181"/>
- <location line="+665"/>
+ <location line="-978"/>
+ <location line="+123"/>
+ <location line="+186"/>
+ <location line="+667"/>
<source>Insert Page</source>
<translation>ページを挿入</translation>
</message>
<message>
- <location line="-849"/>
+ <location line="-856"/>
<source>tab</source>
<translation>タブ</translation>
</message>
<message>
- <location line="+204"/>
+ <location line="+209"/>
<source>Change Tab order</source>
<translation>タブ順を変更</translation>
</message>
@@ -598,7 +604,7 @@ ate the goose who was loose.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+94"/>
+ <location line="+95"/>
<source>Change Layout Item Geometry</source>
<translation>レイアウトアイテムã®åº§æ¨™ã‚’変更</translation>
</message>
@@ -607,7 +613,7 @@ ate the goose who was loose.</source>
<translation type="obsolete">行を挿入</translation>
</message>
<message>
- <location line="+569"/>
+ <location line="+576"/>
<source>Change Table Contents</source>
<translation>テーブルã®å†…容を変更</translation>
</message>
@@ -649,7 +655,7 @@ ate the goose who was loose.</source>
<translation>ツールãƒãƒ¼ã‚’削除</translation>
</message>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_menu.cpp" line="+1125"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_menu.cpp" line="+1161"/>
<source>Set action text</source>
<translation>アクションã®ãƒ†ã‚­ã‚¹ãƒˆã‚’設定</translation>
</message>
@@ -660,7 +666,7 @@ ate the goose who was loose.</source>
</message>
<message>
<location line="+89"/>
- <location filename="../tools/designer/src/lib/shared/qdesigner_menubar.cpp" line="+861"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_menubar.cpp" line="+891"/>
<source>Move action</source>
<translation>アクションを移動</translation>
</message>
@@ -725,12 +731,12 @@ ate the goose who was loose.</source>
</translation>
</message>
<message>
- <location filename="../tools/designer/src/lib/shared/signalslotdialog.cpp" line="+172"/>
+ <location filename="../tools/designer/src/lib/shared/signalslotdialog.cpp" line="+202"/>
<source>Change signals/slots</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_command.cpp" line="-861"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_command.cpp" line="-867"/>
<source>Delete Subwindow</source>
<translation type="unfinished"></translation>
</message>
@@ -750,7 +756,7 @@ ate the goose who was loose.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../tools/designer/src/components/taskmenu/button_taskmenu.cpp" line="+195"/>
+ <location filename="../tools/designer/src/components/taskmenu/button_taskmenu.cpp" line="+225"/>
<source>Create button group</source>
<translation type="unfinished"></translation>
</message>
@@ -771,7 +777,7 @@ ate the goose who was loose.</source>
</message>
<message>
<location line="+8"/>
- <location filename="../tools/designer/src/lib/shared/formlayoutmenu.cpp" line="+373"/>
+ <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 type="unfinished"></translation>
@@ -788,23 +794,23 @@ ate the goose who was loose.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../tools/designer/src/lib/shared/morphmenu.cpp" line="+318"/>
+ <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 type="unfinished"></translation>
</message>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_command2.cpp" line="+124"/>
+ <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 type="unfinished"></translation>
</message>
<message>
- <location filename="../tools/designer/src/lib/shared/scriptcommand.cpp" line="+25"/>
+ <location filename="../tools/designer/src/lib/shared/scriptcommand.cpp" line="+55"/>
<source>Change script</source>
<translation type="unfinished">スクリプトを変更</translation>
</message>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_propertycommand.cpp" line="+1176"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_propertycommand.cpp" line="+1209"/>
<source>Changed &apos;%1&apos; of &apos;%2&apos;</source>
<translation type="unfinished"></translation>
</message>
@@ -878,7 +884,7 @@ ate the goose who was loose.</source>
<context>
<name>DPI_Chooser</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/dpi_chooser.cpp" line="+39"/>
+ <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 type="unfinished"></translation>
@@ -899,7 +905,7 @@ ate the goose who was loose.</source>
<context>
<name>Designer</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/qdesigner_resource.cpp" line="+409"/>
+ <location filename="../tools/designer/src/components/formeditor/qdesigner_resource.cpp" line="+439"/>
<source>Qt Designer</source>
<translation>Qt Designer</translation>
</message>
@@ -979,7 +985,7 @@ The old form has been untouched, but you will have to save this form under a new
<translation type="obsolete">ã“ã®ãƒ•ã‚¡ã‚¤ãƒ«ã¯ Qt-%1 ã® Designer ã§ä½œæˆã•ã‚ŒãŸã‚‚ã®ã§ã™ãŒã€èª­ã‚ã¾ã›ã‚“ã§ã—ãŸ:&lt;br&gt;%2&lt;br&gt;&lt;b&gt;uic3 -convert&lt;/b&gt; を実行ã—ã¦ã€Qt 4 ã® UI フォーマットã«å¤‰æ›ã—ã¦ãã ã•ã„。</translation>
</message>
<message>
- <location line="+735"/>
+ <location line="+746"/>
<source>Custom Widgets</source>
<translation>カスタムウィジェット</translation>
</message>
@@ -989,7 +995,7 @@ The old form has been untouched, but you will have to save this form under a new
<translation>格上ã’ã•ã‚ŒãŸã‚¦ã‚£ã‚¸ã‚§ãƒƒãƒˆ</translation>
</message>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_utils.cpp" line="+602"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_utils.cpp" line="+682"/>
<source>Unable to launch %1.</source>
<translation>%1 ã‚’èµ·å‹•ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚</translation>
</message>
@@ -1023,7 +1029,7 @@ The old form has been untouched, but you will have to save this form under a new
<context>
<name>DesignerMetaEnum</name>
<message>
- <location line="-463"/>
+ <location line="-513"/>
<source>%1 is not a valid enumeration value of &apos;%2&apos;.</source>
<translation type="unfinished"></translation>
</message>
@@ -1044,7 +1050,7 @@ The old form has been untouched, but you will have to save this form under a new
<context>
<name>DeviceProfile</name>
<message>
- <location filename="../tools/designer/src/lib/shared/deviceprofile.cpp" line="+367"/>
+ <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 type="unfinished"></translation>
@@ -1086,7 +1092,7 @@ The old form has been untouched, but you will have to save this form under a new
<context>
<name>DeviceSkin</name>
<message>
- <location filename="../tools/shared/deviceskin/deviceskin.cpp" line="+49"/>
+ <location filename="../tools/shared/deviceskin/deviceskin.cpp" line="+79"/>
<source>The image file &apos;%1&apos; could not be loaded.</source>
<translation type="unfinished"></translation>
</message>
@@ -1144,66 +1150,16 @@ The old form has been untouched, but you will have to save this form under a new
<context>
<name>EmbeddedOptionsControl</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/embeddedoptionspage.cpp" line="+130"/>
- <source>None</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location line="+4"/>
- <source>Add a profile</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location line="+6"/>
- <source>Edit the selected profile</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location line="+4"/>
- <source>Delete the selected profile</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location line="+22"/>
- <source>Add Profile</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location line="+7"/>
- <source>New profile</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location line="+35"/>
- <source>Edit Profile</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location line="+26"/>
- <source>Delete Profile</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location line="+1"/>
- <source>Would you like to delete the profile &apos;%1&apos;?</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location line="+42"/>
+ <location filename="../tools/designer/src/components/formeditor/embeddedoptionspage.cpp" line="+311"/>
<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 type="unfinished"></translation>
</message>
- <message>
- <location line="+13"/>
- <source>Default</source>
- <translation type="unfinished"></translation>
- </message>
</context>
<context>
<name>EmbeddedOptionsPage</name>
<message>
- <location line="+90"/>
+ <location line="+103"/>
<source>Embedded Design</source>
<extracomment>Tab in preferences dialog</extracomment>
<translation type="unfinished"></translation>
@@ -1218,7 +1174,7 @@ The old form has been untouched, but you will have to save this form under a new
<context>
<name>FontPanel</name>
<message>
- <location filename="../tools/shared/fontpanel/fontpanel.cpp" line="+33"/>
+ <location filename="../tools/shared/fontpanel/fontpanel.cpp" line="+63"/>
<source>Font</source>
<translation>フォント</translation>
</message>
@@ -1246,7 +1202,7 @@ The old form has been untouched, but you will have to save this form under a new
<context>
<name>FontPropertyManager</name>
<message>
- <location filename="../tools/designer/src/components/propertyeditor/fontpropertymanager.cpp" line="+32"/>
+ <location filename="../tools/designer/src/components/propertyeditor/fontpropertymanager.cpp" line="+62"/>
<source>PreferDefault</source>
<translation type="unfinished"></translation>
</message>
@@ -1269,7 +1225,7 @@ The old form has been untouched, but you will have to save this form under a new
<context>
<name>FormBuilder</name>
<message>
- <location filename="../tools/designer/src/lib/uilib/formbuilderextra.cpp" line="+321"/>
+ <location filename="../tools/designer/src/lib/uilib/formbuilderextra.cpp" line="+351"/>
<source>Invalid stretch value for &apos;%1&apos;: &apos;%2&apos;</source>
<extracomment>Parsing layout stretch values</extracomment>
<translation type="unfinished"></translation>
@@ -1284,7 +1240,7 @@ The old form has been untouched, but you will have to save this form under a new
<context>
<name>FormEditorOptionsPage</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/formeditor_optionspage.cpp" line="+61"/>
+ <location filename="../tools/designer/src/components/formeditor/formeditor_optionspage.cpp" line="+91"/>
<source>%1 %</source>
<translation type="unfinished"></translation>
</message>
@@ -1351,7 +1307,7 @@ The old form has been untouched, but you will have to save this form under a new
<context>
<name>FormWindow</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/formwindow.cpp" line="+1669"/>
+ <location filename="../tools/designer/src/components/formeditor/formwindow.cpp" line="+1705"/>
<source>Unexpected element &lt;%1&gt;</source>
<translation type="unfinished"></translation>
</message>
@@ -1427,7 +1383,7 @@ The old form has been untouched, but you will have to save this form under a new
<context>
<name>IconSelector</name>
<message>
- <location filename="../tools/designer/src/lib/shared/iconselector.cpp" line="+321"/>
+ <location filename="../tools/designer/src/lib/shared/iconselector.cpp" line="+353"/>
<source>All Pixmaps (</source>
<translation type="unfinished">å…¨ã¦ã®ãƒ”ックスマップ (</translation>
</message>
@@ -1435,7 +1391,7 @@ The old form has been untouched, but you will have to save this form under a new
<context>
<name>ItemPropertyBrowser</name>
<message>
- <location filename="../tools/designer/src/components/taskmenu/itemlisteditor.cpp" line="+36"/>
+ <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 type="unfinished"></translation>
@@ -1444,7 +1400,7 @@ The old form has been untouched, but you will have to save this form under a new
<context>
<name>LanguageResourceDialog</name>
<message>
- <location filename="../tools/designer/src/lib/shared/iconselector.cpp" line="-234"/>
+ <location filename="../tools/designer/src/lib/shared/iconselector.cpp" line="-235"/>
<source>Choose Resource</source>
<translation type="unfinished"></translation>
</message>
@@ -1459,7 +1415,7 @@ The old form has been untouched, but you will have to save this form under a new
<context>
<name>MainWindowBase</name>
<message>
- <location filename="../tools/designer/src/designer/mainwindow.cpp" line="+89"/>
+ <location filename="../tools/designer/src/designer/mainwindow.cpp" line="+119"/>
<source>Main</source>
<extracomment>Not currently used (main tool bar)</extracomment>
<translation type="unfinished"></translation>
@@ -1493,7 +1449,7 @@ The old form has been untouched, but you will have to save this form under a new
<context>
<name>NewForm</name>
<message>
- <location filename="../tools/designer/src/designer/newform.cpp" line="+49"/>
+ <location filename="../tools/designer/src/designer/newform.cpp" line="+79"/>
<source>C&amp;reate</source>
<translation>作æˆ(&amp;R)</translation>
</message>
@@ -1562,7 +1518,7 @@ The old form has been untouched, but you will have to save this form under a new
<context>
<name>NewFormWidget</name>
<message>
- <location filename="../tools/designer/src/lib/shared/newformwidget.cpp" line="+465"/>
+ <location filename="../tools/designer/src/lib/shared/newformwidget.cpp" line="+495"/>
<source>Unable to open the form template file &apos;%1&apos;: %2</source>
<translation type="unfinished"></translation>
</message>
@@ -1570,7 +1526,7 @@ The old form has been untouched, but you will have to save this form under a new
<context>
<name>ObjectInspectorModel</name>
<message>
- <location filename="../tools/designer/src/components/objectinspector/objectinspectormodel.cpp" line="+331"/>
+ <location filename="../tools/designer/src/components/objectinspector/objectinspectormodel.cpp" line="+364"/>
<source>Object</source>
<translation type="unfinished">オブジェクト</translation>
</message>
@@ -1580,7 +1536,7 @@ The old form has been untouched, but you will have to save this form under a new
<translation type="unfinished">クラス</translation>
</message>
<message>
- <location line="+34"/>
+ <location line="+35"/>
<source>separator</source>
<translation type="unfinished">セパレータ</translation>
</message>
@@ -1593,7 +1549,7 @@ The old form has been untouched, but you will have to save this form under a new
<context>
<name>ObjectNameDialog</name>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_taskmenu.cpp" line="+132"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_taskmenu.cpp" line="+162"/>
<source>Change Object Name</source>
<translation type="unfinished">オブジェクトåを変更</translation>
</message>
@@ -1651,47 +1607,11 @@ There&apos;s nothing more here. You should get back to work.</source>
</message>
</context>
<context>
- <name>qdesigner_internal::PluginDialog</name>
+ <name>PluginDialog</name>
<message>
- <location filename="../tools/designer/src/designer/plugindialog.cpp" line="+40"/>
- <source>Components</source>
- <translation>コンãƒãƒ¼ãƒãƒ³ãƒˆ</translation>
- </message>
- <message>
- <location line="+13"/>
- <location filename="../tools/designer/src/designer/plugindialog.ui"/>
+ <location filename="../tools/designer/src/lib/shared/plugindialog.ui"/>
<source>Plugin Information</source>
- <translation>プラグイン情報</translation>
- </message>
- <message>
- <location line="+4"/>
- <source>Refresh</source>
- <translation>リフレッシュ</translation>
- </message>
- <message>
- <location line="+1"/>
- <source>Scan for newly installed custom widget plugins.</source>
- <translation>æ–°ã—ãインストールã•ã‚ŒãŸã‚«ã‚¹ã‚¿ãƒ ã‚¦ã‚£ã‚¸ã‚§ãƒƒãƒˆãƒ—ラグインをスキャンã—ã¾ã™ã€‚</translation>
- </message>
- <message>
- <location line="+48"/>
- <source>Qt Designer couldn&apos;t find any plugins</source>
- <translation>プラグインã¯è¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸ</translation>
- </message>
- <message>
- <location line="+3"/>
- <source>Qt Designer found the following plugins</source>
- <translation>以下ã®ãƒ—ラグインãŒè¦‹ã¤ã‹ã‚Šã¾ã—ãŸ</translation>
- </message>
- <message>
- <location line="+55"/>
- <source>New custom widget plugins have been found.</source>
- <translation>æ–°ã—ã„カスタムウィジェットã®ãƒ—ラグインãŒè¦‹ã¤ã‹ã‚Šã¾ã—ãŸã€‚</translation>
- </message>
- <message>
- <location filename="../tools/designer/src/designer/plugindialog.ui"/>
- <source>TextLabel</source>
- <translation>テキストラベル</translation>
+ <translation type="unfinished">プラグイン情報</translation>
</message>
<message>
<location/>
@@ -1742,7 +1662,7 @@ There&apos;s nothing more here. You should get back to work.</source>
<context>
<name>PreviewConfigurationWidget</name>
<message>
- <location filename="../tools/designer/src/lib/shared/previewconfigurationwidget.cpp" line="+125"/>
+ <location filename="../tools/designer/src/lib/shared/previewconfigurationwidget.cpp" line="+155"/>
<source>Default</source>
<translation type="unfinished"></translation>
</message>
@@ -1790,7 +1710,7 @@ There&apos;s nothing more here. You should get back to work.</source>
<context>
<name>PromotionModel</name>
<message>
- <location filename="../tools/designer/src/lib/shared/promotionmodel.cpp" line="+86"/>
+ <location filename="../tools/designer/src/lib/shared/promotionmodel.cpp" line="+116"/>
<source>Not used</source>
<extracomment>Usage of promoted widgets</extracomment>
<translation type="unfinished">使用ã•ã‚Œã¾ã›ã‚“</translation>
@@ -1799,7 +1719,7 @@ There&apos;s nothing more here. You should get back to work.</source>
<context>
<name>Q3WizardContainer</name>
<message>
- <location filename="../tools/designer/src/plugins/widgets/q3wizard/q3wizard_container.cpp" line="+142"/>
+ <location filename="../tools/designer/src/plugins/widgets/q3wizard/q3wizard_container.cpp" line="+172"/>
<location line="+5"/>
<source>Page</source>
<translation>ページ</translation>
@@ -1808,7 +1728,7 @@ There&apos;s nothing more here. You should get back to work.</source>
<context>
<name>QAbstractFormBuilder</name>
<message>
- <location filename="../tools/designer/src/lib/uilib/abstractformbuilder.cpp" line="+176"/>
+ <location filename="../tools/designer/src/lib/uilib/abstractformbuilder.cpp" line="+206"/>
<source>Unexpected element &lt;%1&gt;</source>
<translation type="unfinished"></translation>
</message>
@@ -1854,7 +1774,7 @@ This indicates an inconsistency in the ui-file.</source>
<translation type="unfinished">タブストップã®é©ç”¨ä¸­: ウィジェット &apos;%1&apos; ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。</translation>
</message>
<message>
- <location line="+734"/>
+ <location line="+749"/>
<source>Invalid QButtonGroup reference &apos;%1&apos; referenced by &apos;%2&apos;.</source>
<translation type="unfinished"></translation>
</message>
@@ -1900,7 +1820,7 @@ This indicates an inconsistency in the ui-file.</source>
<context>
<name>QAxWidgetPlugin</name>
<message>
- <location filename="../tools/designer/src/plugins/activeqt/qaxwidgetplugin.cpp" line="+45"/>
+ <location filename="../tools/designer/src/plugins/activeqt/qaxwidgetplugin.cpp" line="+75"/>
<source>ActiveX control</source>
<translation type="unfinished">ActiveX コントロール</translation>
</message>
@@ -1913,7 +1833,7 @@ This indicates an inconsistency in the ui-file.</source>
<context>
<name>QAxWidgetTaskMenu</name>
<message>
- <location filename="../tools/designer/src/plugins/activeqt/qaxwidgettaskmenu.cpp" line="+89"/>
+ <location filename="../tools/designer/src/plugins/activeqt/qaxwidgettaskmenu.cpp" line="+119"/>
<source>Set Control</source>
<translation type="unfinished">コントロールを設定</translation>
</message>
@@ -1936,7 +1856,7 @@ This indicates an inconsistency in the ui-file.</source>
<context>
<name>QCoreApplication</name>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_promotion.cpp" line="+53"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_promotion.cpp" line="+83"/>
<source>%1 is not a promoted class.</source>
<translation>%1 ã¯æ ¼ä¸Šã’ã•ã‚ŒãŸã‚¯ãƒ©ã‚¹ã§ã¯ã‚ã‚Šã¾ã›ã‚“。</translation>
</message>
@@ -1986,7 +1906,7 @@ This indicates an inconsistency in the ui-file.</source>
<translation type="unfinished">空ã®ã‚¤ãƒ³ã‚¯ãƒ«ãƒ¼ãƒ‰ãƒ•ã‚¡ã‚¤ãƒ«ã‚’設定ã§ãã¾ã›ã‚“。</translation>
</message>
<message>
- <location filename="../tools/designer/src/lib/uilib/formscriptrunner.cpp" line="+58"/>
+ <location filename="../tools/designer/src/lib/uilib/formscriptrunner.cpp" line="+88"/>
<source>Exception at line %1: %2</source>
<translation type="unfinished">%1 行目ã§ä¾‹å¤–ãŒç™ºç”Ÿ: %2</translation>
</message>
@@ -2006,7 +1926,7 @@ Script: %3</source>
<context>
<name>QDesigner</name>
<message>
- <location filename="../tools/designer/src/designer/qdesigner.cpp" line="+111"/>
+ <location filename="../tools/designer/src/designer/qdesigner.cpp" line="+141"/>
<source>%1 - warning</source>
<translation type="unfinished">%1 - 警告</translation>
</message>
@@ -2031,7 +1951,7 @@ Script: %3</source>
<context>
<name>QDesignerActions</name>
<message>
- <location filename="../tools/designer/src/designer/qdesigner_actions.cpp" line="+152"/>
+ <location filename="../tools/designer/src/designer/qdesigner_actions.cpp" line="+178"/>
<source>Edit Widgets</source>
<translation>ウィジェットを編集</translation>
</message>
@@ -2100,7 +2020,7 @@ Script: %3</source>
<translation type="obsolete">CTRL+O</translation>
</message>
<message>
- <location line="+290"/>
+ <location line="+293"/>
<source>Clear &amp;Menu</source>
<translation>メニューをクリア(&amp;M)</translation>
</message>
@@ -2109,7 +2029,7 @@ Script: %3</source>
<translation type="obsolete">CTRL+S</translation>
</message>
<message>
- <location line="-229"/>
+ <location line="-232"/>
<source>CTRL+SHIFT+S</source>
<translation>CTRL+SHIFT+S</translation>
</message>
@@ -2166,17 +2086,17 @@ Script: %3</source>
</message>
<message>
<location line="+6"/>
- <location line="+598"/>
+ <location line="+601"/>
<source>About Qt Designer</source>
<translation>Qt Designer ã«ã¤ã„ã¦</translation>
</message>
<message>
- <location line="-592"/>
+ <location line="-595"/>
<source>About Qt</source>
<translation>Qt ã«ã¤ã„ã¦</translation>
</message>
<message>
- <location line="+118"/>
+ <location line="+121"/>
<location line="+197"/>
<source>Open Form</source>
<translation>フォームを開ã</translation>
@@ -2197,7 +2117,7 @@ Script: %3</source>
<translation type="obsolete">ä¿å­˜</translation>
</message>
<message>
- <location line="-612"/>
+ <location line="-615"/>
<source>%1 already exists.
Do you want to replace it?</source>
<translation>%1 ã¯ã™ã§ã«å­˜åœ¨ã—ã¾ã™ã€‚上書ãã—ã¾ã™ã‹?</translation>
@@ -2218,7 +2138,7 @@ Do you want to replace it?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+237"/>
+ <location line="+240"/>
<source>&amp;Recent Forms</source>
<translation type="unfinished">最近使用ã—ãŸãƒ•ã‚©ãƒ¼ãƒ (&amp;R)</translation>
</message>
@@ -2266,7 +2186,7 @@ Do you want to update the file location or generate a new form?</source>
<translation>ファイルをオープンã§ãã¾ã›ã‚“ã§ã—ãŸ</translation>
</message>
<message>
- <location line="+532"/>
+ <location line="+494"/>
<source>Saved image %1.</source>
<translation type="unfinished"></translation>
</message>
@@ -2276,7 +2196,7 @@ Do you want to update the file location or generate a new form?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+49"/>
+ <location line="+52"/>
<source>Printed %1.</source>
<translation type="unfinished"></translation>
</message>
@@ -2289,7 +2209,7 @@ Would you like to retry or change your file?</source>
リトライã—ã¾ã™ã‹ã€ãã‚Œã¨ã‚‚ファイルを変更ã—ã¾ã™ã‹?</translation>
</message>
<message>
- <location line="-589"/>
+ <location line="-554"/>
<source>Select New File</source>
<translation>æ–°ã—ã„ファイルをé¸æŠž</translation>
</message>
@@ -2307,7 +2227,7 @@ Would you like to retry?</source>
リトライã—ã¾ã™ã‹?</translation>
</message>
<message>
- <location line="+239"/>
+ <location line="+201"/>
<source>&amp;Close Preview</source>
<translation>プレビューを閉ã˜ã‚‹(&amp;C)</translation>
</message>
@@ -2316,7 +2236,7 @@ Would you like to retry?</source>
<translation type="obsolete">フォーム設定 - %1</translation>
</message>
<message>
- <location line="-935"/>
+ <location line="-900"/>
<source>&amp;New...</source>
<translation type="unfinished"></translation>
</message>
@@ -2347,12 +2267,12 @@ Would you like to retry?</source>
</message>
<message>
<location line="+1"/>
- <location line="+931"/>
+ <location line="+896"/>
<source>&amp;Close</source>
<translation type="unfinished">é–‰ã˜ã‚‹(&amp;C)</translation>
</message>
<message>
- <location line="-930"/>
+ <location line="-895"/>
<source>Save &amp;Image...</source>
<translation type="unfinished"></translation>
</message>
@@ -2367,7 +2287,7 @@ Would you like to retry?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+416"/>
+ <location line="+419"/>
<location line="+248"/>
<source>Save Form As</source>
<translation type="unfinished"></translation>
@@ -2387,7 +2307,7 @@ Would you like to retry?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+277"/>
+ <location line="+239"/>
<location line="+23"/>
<source>The backup file %1 could not be written.</source>
<translation type="unfinished">ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—ファイル %1 ã«æ›¸ãè¾¼ã‚ã¾ã›ã‚“ã§ã—ãŸã€‚</translation>
@@ -2408,12 +2328,12 @@ Would you like to retry?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-613"/>
+ <location line="-575"/>
<source>Code generation failed</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+637"/>
+ <location line="+599"/>
<source>Image files (*.%1)</source>
<translation type="unfinished"></translation>
</message>
@@ -2429,8 +2349,8 @@ Would you like to retry?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-336"/>
- <location line="+66"/>
+ <location line="-298"/>
+ <location line="+34"/>
<source>Assistant</source>
<translation type="unfinished"></translation>
</message>
@@ -2438,7 +2358,7 @@ Would you like to retry?</source>
<context>
<name>QDesignerAppearanceOptionsPage</name>
<message>
- <location filename="../tools/designer/src/designer/qdesigner_appearanceoptions.cpp" line="+93"/>
+ <location filename="../tools/designer/src/designer/qdesigner_appearanceoptions.cpp" line="+138"/>
<source>Appearance</source>
<extracomment>Tab in preferences dialog</extracomment>
<translation type="unfinished"></translation>
@@ -2447,7 +2367,7 @@ Would you like to retry?</source>
<context>
<name>QDesignerAppearanceOptionsWidget</name>
<message>
- <location line="-39"/>
+ <location line="-53"/>
<source>Docked Window</source>
<translation type="unfinished">ドックウィンドウ</translation>
</message>
@@ -2457,7 +2377,7 @@ Would you like to retry?</source>
<translation type="unfinished">複数ã®ãƒˆãƒƒãƒ—レベルウィンドウ</translation>
</message>
<message>
- <location line="+3"/>
+ <location line="+5"/>
<source>Toolwindow Font</source>
<translation type="unfinished">ツールウィンドウフォント</translation>
</message>
@@ -2475,7 +2395,7 @@ Would you like to retry?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../tools/designer/src/plugins/activeqt/qdesigneraxwidget.cpp" line="+149"/>
+ <location filename="../tools/designer/src/plugins/activeqt/qdesigneraxwidget.cpp" line="+179"/>
<source>Control loaded</source>
<translation type="unfinished">コントロールãŒãƒ­ãƒ¼ãƒ‰ã•ã‚Œã¾ã—ãŸ</translation>
</message>
@@ -2488,7 +2408,7 @@ Would you like to retry?</source>
<context>
<name>QDesignerFormBuilder</name>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_formbuilder.cpp" line="+58"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_formbuilder.cpp" line="+88"/>
<source>Script errors occurred:</source>
<translation type="unfinished">スクリプトエラーãŒç™ºç”Ÿã—ã¾ã—ãŸ:</translation>
</message>
@@ -2506,7 +2426,7 @@ Would you like to retry?</source>
<context>
<name>QDesignerFormWindow</name>
<message>
- <location filename="../tools/designer/src/designer/qdesigner_formwindow.cpp" line="+187"/>
+ <location filename="../tools/designer/src/designer/qdesigner_formwindow.cpp" line="+217"/>
<source>%1 - %2[*]</source>
<translation>%1 - %2[*]</translation>
</message>
@@ -2529,7 +2449,7 @@ Would you like to retry?</source>
<context>
<name>QDesignerMenu</name>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_menu.cpp" line="-1154"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_menu.cpp" line="-1160"/>
<source>Type Here</source>
<translation>ã“ã“ã«å…¥åŠ›</translation>
</message>
@@ -2539,7 +2459,7 @@ Would you like to retry?</source>
<translation>セパレータを追加</translation>
</message>
<message>
- <location line="+366"/>
+ <location line="+372"/>
<source>Insert separator</source>
<translation>セパレータを挿入</translation>
</message>
@@ -2598,7 +2518,7 @@ Would you like to retry?</source>
<context>
<name>QDesignerPluginManager</name>
<message>
- <location filename="../tools/designer/src/lib/shared/pluginmanager.cpp" line="+197"/>
+ <location filename="../tools/designer/src/lib/shared/pluginmanager.cpp" line="+249"/>
<source>An XML error was encountered when parsing the XML of the custom widget %1: %2</source>
<translation type="unfinished"></translation>
</message>
@@ -2636,7 +2556,7 @@ Would you like to retry?</source>
<translation type="obsolete">レイアウト</translation>
</message>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_propertysheet.cpp" line="+717"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_propertysheet.cpp" line="+747"/>
<source>Dynamic Properties</source>
<translation>ダイナミックプロパティ</translation>
</message>
@@ -2644,18 +2564,18 @@ Would you like to retry?</source>
<context>
<name>QDesignerResource</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/qdesigner_resource.cpp" line="-235"/>
+ <location filename="../tools/designer/src/components/formeditor/qdesigner_resource.cpp" line="-246"/>
<source>The layout type &apos;%1&apos; is not supported, defaulting to grid.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+331"/>
+ <location line="+342"/>
<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 type="unfinished"></translation>
</message>
<message>
- <location line="+598"/>
+ <location line="+599"/>
<source>Unexpected element &lt;%1&gt;</source>
<extracomment>Parsing clipboard contents</extracomment>
<translation type="unfinished"></translation>
@@ -2683,7 +2603,7 @@ Container pages should only be added by specifying them in XML returned by the d
<context>
<name>QDesignerSharedSettings</name>
<message>
- <location filename="../tools/designer/src/lib/shared/shared_settings.cpp" line="+53"/>
+ <location filename="../tools/designer/src/lib/shared/shared_settings.cpp" line="+83"/>
<source>The template path %1 could not be created.</source>
<translation type="unfinished">テンプレートã®ãƒ‘ス %1 を作æˆã§ãã¾ã›ã‚“ã§ã—ãŸã€‚</translation>
</message>
@@ -2835,7 +2755,7 @@ Container pages should only be added by specifying them in XML returned by the d
<context>
<name>QDesignerToolWindow</name>
<message>
- <location filename="../tools/designer/src/designer/qdesigner_toolwindow.cpp" line="+160"/>
+ <location filename="../tools/designer/src/designer/qdesigner_toolwindow.cpp" line="+190"/>
<source>Property Editor</source>
<translation type="unfinished">プロパティエディタ</translation>
</message>
@@ -2872,7 +2792,7 @@ Container pages should only be added by specifying them in XML returned by the d
<translation type="obsolete">ウィジェットボックス</translation>
</message>
<message>
- <location filename="../tools/designer/src/components/widgetbox/widgetboxtreewidget.cpp" line="+318"/>
+ <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 type="unfinished"></translation>
</message>
@@ -2895,7 +2815,7 @@ Container pages should only be added by specifying them in XML returned by the d
<context>
<name>QDesignerWorkbench</name>
<message>
- <location filename="../tools/designer/src/designer/qdesigner_workbench.cpp" line="+169"/>
+ <location filename="../tools/designer/src/designer/qdesigner_workbench.cpp" line="+199"/>
<source>&amp;File</source>
<translation>ファイル(&amp;F)</translation>
</message>
@@ -3014,7 +2934,7 @@ Container pages should only be added by specifying them in XML returned by the d
<translation type="obsolete">å‰å›žä½¿ç”¨ã—ãŸã¨ãã« Designer ã¯æ­£ã—ã終了ã•ã‚Œã¾ã›ã‚“ã§ã—ãŸã€‚ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—ファイルãŒå­˜åœ¨ã—ã¾ã™ã€‚ロードã—ã¾ã™ã‹?</translation>
</message>
<message>
- <location line="+112"/>
+ <location line="+111"/>
<source>The file &lt;b&gt;%1&lt;/b&gt; could not be opened.</source>
<translation>ファイル &lt;b&gt;%1&lt;/b&gt; ã¯ã‚ªãƒ¼ãƒ—ンã§ãã¾ã›ã‚“ã§ã—ãŸã€‚</translation>
</message>
@@ -3024,7 +2944,7 @@ Container pages should only be added by specifying them in XML returned by the d
<translation>ファイル &lt;b&gt;%1&lt;/b&gt; ã¯ã€æœ‰åŠ¹ãª Designer ã® UI ファイルã§ã¯ã‚ã‚Šã¾ã›ã‚“。</translation>
</message>
<message numerus="yes">
- <location line="-260"/>
+ <location line="-259"/>
<source>There are %n forms with unsaved changes. Do you want to review these changes before quitting?</source>
<translation type="unfinished">
<numerusform></numerusform>
@@ -3034,7 +2954,7 @@ Container pages should only be added by specifying them in XML returned by the d
<context>
<name>QFormBuilder</name>
<message>
- <location filename="../tools/designer/src/lib/uilib/formbuilder.cpp" line="+130"/>
+ <location filename="../tools/designer/src/lib/uilib/formbuilder.cpp" line="+160"/>
<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 type="unfinished"></translation>
@@ -3055,7 +2975,7 @@ Container pages should only be added by specifying them in XML returned by the d
<translation type="unfinished">レイアウトタイプ &apos;%1&apos; ã¯ã€ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã›ã‚“。</translation>
</message>
<message>
- <location filename="../tools/designer/src/lib/uilib/properties.cpp" line="+76"/>
+ <location filename="../tools/designer/src/lib/uilib/properties.cpp" line="+106"/>
<source>The set-type property %1 could not be read.</source>
<translation type="unfinished">Setåž‹ã®ãƒ—ロパティ %1 を読ã‚ã¾ã›ã‚“ã§ã—ãŸã€‚</translation>
</message>
@@ -3075,7 +2995,7 @@ Container pages should only be added by specifying them in XML returned by the d
<translation type="unfinished">プロパティ %1 を書ãè¾¼ã‚ã¾ã›ã‚“ã§ã—ãŸã€‚%2 ã¨ã„ã†åž‹ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã›ã‚“。</translation>
</message>
<message>
- <location filename="../tools/designer/src/lib/uilib/properties_p.h" line="+102"/>
+ <location filename="../tools/designer/src/lib/uilib/properties_p.h" line="+132"/>
<source>The enumeration-value &apos;%1&apos; is invalid. The default value &apos;%2&apos; will be used instead.</source>
<translation type="unfinished"></translation>
</message>
@@ -3325,7 +3245,7 @@ Script: %3</source>
<context>
<name>QStackedWidgetEventFilter</name>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_stackedbox.cpp" line="+164"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_stackedbox.cpp" line="+194"/>
<source>Previous Page</source>
<translation type="unfinished">å‰ã®ãƒšãƒ¼ã‚¸</translation>
</message>
@@ -3386,7 +3306,7 @@ Script: %3</source>
<context>
<name>QTabWidgetEventFilter</name>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_tabwidget.cpp" line="+59"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_tabwidget.cpp" line="+89"/>
<source>Delete</source>
<translation type="unfinished">削除</translation>
</message>
@@ -3414,7 +3334,7 @@ Script: %3</source>
<context>
<name>QToolBoxHelper</name>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_toolbox.cpp" line="+34"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_toolbox.cpp" line="+64"/>
<source>Delete Page</source>
<translation type="unfinished">ページを削除</translation>
</message>
@@ -3452,7 +3372,7 @@ Script: %3</source>
<context>
<name>QtBoolEdit</name>
<message>
- <location filename="../tools/shared/qtpropertybrowser/qtpropertybrowserutils.cpp" line="+198"/>
+ <location filename="../tools/shared/qtpropertybrowser/qtpropertybrowserutils.cpp" line="+226"/>
<location line="+10"/>
<location line="+25"/>
<source>True</source>
@@ -3468,7 +3388,7 @@ Script: %3</source>
<context>
<name>QtBoolPropertyManager</name>
<message>
- <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="+1469"/>
+ <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="+1477"/>
<source>True</source>
<translation type="unfinished"></translation>
</message>
@@ -3481,7 +3401,7 @@ Script: %3</source>
<context>
<name>QtCharEdit</name>
<message>
- <location filename="../tools/shared/qtpropertybrowser/qteditorfactory.cpp" line="+1573"/>
+ <location filename="../tools/shared/qtpropertybrowser/qteditorfactory.cpp" line="+1601"/>
<source>Clear Char</source>
<translation type="unfinished"></translation>
</message>
@@ -3497,7 +3417,7 @@ Script: %3</source>
<context>
<name>QtColorPropertyManager</name>
<message>
- <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="+4769"/>
+ <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="+4777"/>
<source>Red</source>
<translation type="unfinished">赤</translation>
</message>
@@ -3677,7 +3597,7 @@ Script: %3</source>
<context>
<name>QtGradientEditor</name>
<message>
- <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.cpp" line="+405"/>
+ <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.cpp" line="+435"/>
<source>Start X</source>
<translation type="unfinished">始点㮠X 座標</translation>
</message>
@@ -3956,7 +3876,7 @@ Script: %3</source>
<context>
<name>QtGradientStopsWidget</name>
<message>
- <location filename="../tools/shared/qtgradienteditor/qtgradientstopswidget.cpp" line="+919"/>
+ <location filename="../tools/shared/qtgradienteditor/qtgradientstopswidget.cpp" line="+949"/>
<source>New Stop</source>
<translation type="unfinished">æ–°ã—ã„終点</translation>
</message>
@@ -3998,7 +3918,7 @@ Script: %3</source>
<context>
<name>QtGradientView</name>
<message>
- <location filename="../tools/shared/qtgradienteditor/qtgradientview.cpp" line="+77"/>
+ <location filename="../tools/shared/qtgradienteditor/qtgradientview.cpp" line="+107"/>
<source>Grad</source>
<translation type="unfinished"></translation>
</message>
@@ -4049,7 +3969,7 @@ Script: %3</source>
<translation type="obsolete">グラデーションを編集</translation>
</message>
<message>
- <location filename="../tools/shared/qtgradienteditor/qtgradientviewdialog.h" line="+32"/>
+ <location filename="../tools/shared/qtgradienteditor/qtgradientviewdialog.h" line="+62"/>
<location filename="../tools/shared/qtgradienteditor/qtgradientviewdialog.ui"/>
<source>Select Gradient</source>
<translation type="unfinished"></translation>
@@ -4066,7 +3986,7 @@ Script: %3</source>
<context>
<name>QtLocalePropertyManager</name>
<message>
- <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="-3553"/>
+ <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="-3561"/>
<source>%1, %2</source>
<translation type="unfinished"></translation>
</message>
@@ -4133,22 +4053,22 @@ Script: %3</source>
<context>
<name>QtRectFPropertyManager</name>
<message>
- <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="+1705"/>
+ <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="+1716"/>
<source>[(%1, %2), %3 x %4]</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+155"/>
+ <location line="+156"/>
<source>X</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+9"/>
+ <location line="+8"/>
<source>Y</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+9"/>
+ <location line="+8"/>
<source>Width</source>
<translation type="unfinished"></translation>
</message>
@@ -4161,22 +4081,22 @@ Script: %3</source>
<context>
<name>QtRectPropertyManager</name>
<message>
- <location line="-610"/>
+ <location line="-614"/>
<source>[(%1, %2), %3 x %4]</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+119"/>
+ <location line="+120"/>
<source>X</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+8"/>
+ <location line="+7"/>
<source>Y</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+8"/>
+ <location line="+7"/>
<source>Width</source>
<translation type="unfinished"></translation>
</message>
@@ -4189,7 +4109,7 @@ Script: %3</source>
<context>
<name>QtResourceEditorDialog</name>
<message>
- <location filename="../tools/designer/src/lib/shared/qtresourceeditordialog.cpp" line="+46"/>
+ <location filename="../tools/designer/src/lib/shared/qtresourceeditordialog.cpp" line="+76"/>
<source>%1 already exists.
Do you want to replace it?</source>
<translation type="unfinished">%1 ã¯ã™ã§ã«å­˜åœ¨ã—ã¾ã™ã€‚上書ãã—ã¾ã™ã‹?</translation>
@@ -4200,7 +4120,7 @@ Do you want to replace it?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+900"/>
+ <location line="+902"/>
<source>%1 [read-only]</source>
<translation type="unfinished"></translation>
</message>
@@ -4469,7 +4389,7 @@ to
<context>
<name>QtResourceView</name>
<message>
- <location filename="../tools/designer/src/lib/shared/qtresourceview.cpp" line="+404"/>
+ <location filename="../tools/designer/src/lib/shared/qtresourceview.cpp" line="+435"/>
<source>Size: %1 x %2
%3</source>
<translation type="unfinished"></translation>
@@ -4501,7 +4421,7 @@ to
<context>
<name>QtSizeFPropertyManager</name>
<message>
- <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="-532"/>
+ <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="-537"/>
<source>%1 x %2</source>
<translation type="unfinished"></translation>
</message>
@@ -4519,12 +4439,18 @@ to
<context>
<name>QtSizePolicyPropertyManager</name>
<message>
- <location line="+1707"/>
+ <location line="+1719"/>
+ <location line="+1"/>
+ <source>&lt;Invalid&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
<source>[%1, %2, %3, %4]</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+49"/>
+ <location line="+45"/>
<source>Horizontal Policy</source>
<translation type="unfinished"></translation>
</message>
@@ -4547,7 +4473,7 @@ to
<context>
<name>QtSizePropertyManager</name>
<message>
- <location line="-2288"/>
+ <location line="-2298"/>
<source>%1 x %2</source>
<translation type="unfinished"></translation>
</message>
@@ -4565,7 +4491,7 @@ to
<context>
<name>QtToolBarDialog</name>
<message>
- <location filename="../tools/shared/qttoolbardialog/qttoolbardialog.cpp" line="+1759"/>
+ <location filename="../tools/shared/qttoolbardialog/qttoolbardialog.cpp" line="+1789"/>
<source>&lt; S E P A R A T O R &gt;</source>
<translation type="unfinished"></translation>
</message>
@@ -4673,7 +4599,7 @@ to
<context>
<name>QtTreePropertyBrowser</name>
<message>
- <location filename="../tools/shared/qtpropertybrowser/qttreepropertybrowser.cpp" line="+407"/>
+ <location filename="../tools/shared/qtpropertybrowser/qttreepropertybrowser.cpp" line="+442"/>
<source>Property</source>
<translation type="unfinished">プロパティ</translation>
</message>
@@ -4686,7 +4612,7 @@ to
<context>
<name>SaveFormAsTemplate</name>
<message>
- <location filename="../tools/designer/src/designer/saveformastemplate.cpp" line="+42"/>
+ <location filename="../tools/designer/src/designer/saveformastemplate.cpp" line="+72"/>
<source>Add path...</source>
<translation>パスを追加...</translation>
</message>
@@ -4751,7 +4677,7 @@ Do you want overwrite the template?</source>
<context>
<name>ScriptErrorDialog</name>
<message>
- <location filename="../tools/designer/src/lib/shared/scripterrordialog.cpp" line="+33"/>
+ <location filename="../tools/designer/src/lib/shared/scripterrordialog.cpp" line="+63"/>
<source>An error occurred while running the scripts for &quot;%1&quot;:
</source>
<translation type="unfinished">&quot;%1&quot; ã®ãŸã‚ã«ã‚¹ã‚¯ãƒªãƒ—トを実行ã—ã¦ã„ã¦ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸ:
@@ -4770,11 +4696,21 @@ Do you want overwrite the template?</source>
<source>Select signal</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <location/>
+ <source>signal</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location/>
+ <source>class</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>SignalSlotConnection</name>
<message>
- <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditor.cpp" line="-311"/>
+ <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditor.cpp" line="-358"/>
<source>SENDER(%1), SIGNAL(%2), RECEIVER(%3), SLOT(%4)</source>
<translation type="unfinished"></translation>
</message>
@@ -4815,7 +4751,7 @@ Do you want overwrite the template?</source>
<context>
<name>Spacer</name>
<message>
- <location filename="../tools/designer/src/lib/shared/spacer_widget.cpp" line="+245"/>
+ <location filename="../tools/designer/src/lib/shared/spacer_widget.cpp" line="+275"/>
<source>Horizontal Spacer &apos;%1&apos;, %2 x %3</source>
<translation type="unfinished"></translation>
</message>
@@ -4828,7 +4764,7 @@ Do you want overwrite the template?</source>
<context>
<name>TemplateOptionsPage</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/templateoptionspage.cpp" line="+126"/>
+ <location filename="../tools/designer/src/components/formeditor/templateoptionspage.cpp" line="+156"/>
<source>Template Paths</source>
<extracomment>Tab in preferences dialog</extracomment>
<translation type="unfinished"></translation>
@@ -4870,17 +4806,16 @@ Do you want overwrite the template?</source>
<context>
<name>VersionDialog</name>
<message>
- <location filename="../tools/designer/src/designer/versiondialog.cpp" line="+141"/>
+ <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;ãƒãƒ¼ã‚¸ãƒ§ãƒ³ %2</translation>
</message>
<message>
- <location line="+2"/>
<source> Open Source Edition</source>
- <translation> オープンソース版</translation>
+ <translation type="obsolete"> オープンソース版</translation>
</message>
<message>
- <location line="+3"/>
+ <location line="+1"/>
<source>Qt Designer</source>
<translation>Qt Designer</translation>
</message>
@@ -4890,34 +4825,23 @@ Do you want overwrite the template?</source>
<translation>&lt;br/&gt;Qt Designer ã¯ã€Qt アプリケーションをデザインã™ã‚‹ãŸã‚ã® GUI ツールã§ã™ã€‚&lt;br/&gt;</translation>
</message>
<message>
- <location line="+4"/>
- <source>This version of Qt Designer is part of the Qt Open Source Edition, for use in the development of Open Source applications. Qt is a comprehensive C++ framework for cross-platform application development.&lt;br/&gt;&lt;br/&gt;You need a commercial Qt license for development of proprietary (closed source) applications. Please see &lt;a href=&quot;http://qtsoftware.com/company/about/businessmodel&quot;&gt;http://qtsoftware.com/company/about/businessmodel.html&lt;/a&gt; for an overview of Qt licensing.&lt;br/&gt;</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>This version of Qt Designer is part of the Qt Open Source Edition, for use in the development of Open Source applications. Qt is a comprehensive C++ framework for cross-platform application development.&lt;br/&gt;&lt;br/&gt;You need a commercial Qt license for development of proprietary (closed source) applications. Please see &lt;a href=&quot;http://qtsoftware.com/company/model.html&quot;&gt;http://qtsoftware.com/company/model.html&lt;/a&gt; for an overview of Qt licensing.&lt;br/&gt;</source>
<translation type="obsolete">ã“ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã® Qt Designer ã¯ã€ã‚ªãƒ¼ãƒ—ンソースアプリケーションを開発ã™ã‚‹ãŸã‚ã® Qt オープンソース版ã®ä¸€éƒ¨ã§ã™ã€‚Qt ã¯ã€ã‚¯ãƒ­ã‚¹ãƒ—ラットフォームãªã‚¢ãƒ—リケーションを開発ã™ã‚‹ãŸã‚ã®åŒ…括的㪠C++ ã®ãƒ•ãƒ¬ãƒ¼ãƒ ãƒ¯ãƒ¼ã‚¯ã§ã™ã€‚&lt;br/&gt;&lt;br/&gt;独å çš„ãªï¼ˆã‚½ãƒ¼ã‚¹ãŒéš ã•ã‚ŒãŸï¼‰ã‚¢ãƒ—リケーションを開発ã™ã‚‹ã«ã¯ã€Qt ã®å•†ç”¨ãƒ©ã‚¤ã‚»ãƒ³ã‚¹ãŒå¿…è¦ã§ã™ã€‚Qt ã®ãƒ©ã‚¤ã‚»ãƒ³ã‚¹ã®æ¦‚è¦ã«ã¤ã„ã¦ã¯ &lt;a href=&quot;http://qtsoftware.com/company/model.html&quot;&gt;http://qtsoftware.com/company/model.html&lt;/a&gt; ã‚’ã”覧ãã ã•ã„。&lt;br/&gt;</translation>
</message>
<message>
- <location line="+12"/>
<source>This program is licensed to you under the terms of the Qt Commercial License Agreement. For details, see the file LICENSE that came with this software distribution.&lt;br/&gt;</source>
- <translation>ã“ã®ãƒ—ログラムã¯ã€Qt 商用ライセンス契約書ã®å®šã‚ã‚‹æ¡ä»¶ã®ä¸‹ã§ã‚ãªãŸã®åˆ©ç”¨ãŒèªã‚られã¦ã„ã¾ã™ã€‚詳細ã¯ã€ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¨ä¸€ç·’ã«é…布ã•ã‚Œã‚‹ LICENSE ファイルをå‚ç…§ã—ã¦ãã ã•ã„。&lt;br/&gt;</translation>
+ <translation type="obsolete">ã“ã®ãƒ—ログラムã¯ã€Qt 商用ライセンス契約書ã®å®šã‚ã‚‹æ¡ä»¶ã®ä¸‹ã§ã‚ãªãŸã®åˆ©ç”¨ãŒèªã‚られã¦ã„ã¾ã™ã€‚詳細ã¯ã€ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¨ä¸€ç·’ã«é…布ã•ã‚Œã‚‹ LICENSE ファイルをå‚ç…§ã—ã¦ãã ã•ã„。&lt;br/&gt;</translation>
</message>
<message>
<location line="+5"/>
<source>%1&lt;br/&gt;%2&lt;br/&gt;Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).&lt;br/&gt;&lt;br/&gt;The program is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.&lt;br/&gt; </source>
<translation>%1&lt;br/&gt;%2&lt;br/&gt;Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). å…¨ã¦ã®æ¨©åˆ©ã¯ä¿è­·ã•ã‚Œã¦ã„ã¾ã™ã€‚&lt;br/&gt;&lt;br/&gt;プログラムã¯ã€Œè¨­è¨ˆã€ã€ã€Œå¸‚場性ã€ãŠã‚ˆã³ã€Œç‰¹å®šã®ç›®çš„ã¸ã®é©åˆæ€§ã€ã‚‚å«ã‚€ã€ã‚らゆる種類ã®ã€Œä¿è¨¼ãŒãªãã€ã€ã€Œãã®ã¾ã¾ã§ã€æä¾›ã•ã‚Œã¾ã™ã€‚&lt;br/&gt;</translation>
</message>
- <message>
- <location line="-9"/>
- <source>This program is licensed to you under the terms of the Qt %1 License Agreement. For details, see the license file that came with this software distribution.&lt;br/&gt;</source>
- <translation type="unfinished"></translation>
- </message>
</context>
<context>
<name>WidgetDataBase</name>
<message>
- <location filename="../tools/designer/src/lib/shared/widgetdatabase.cpp" line="+786"/>
+ <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 type="unfinished"></translation>
</message>
@@ -4925,22 +4849,22 @@ Do you want overwrite the template?</source>
<context>
<name>qdesigner_internal::ActionEditor</name>
<message>
- <location filename="../tools/designer/src/lib/shared/actioneditor.cpp" line="+111"/>
+ <location filename="../tools/designer/src/lib/shared/actioneditor.cpp" line="+143"/>
<source>Actions</source>
<translation>アクション</translation>
</message>
<message>
- <location line="-15"/>
+ <location line="-16"/>
<source>New...</source>
<translation>æ–°è¦...</translation>
</message>
<message>
- <location line="+6"/>
+ <location line="+7"/>
<source>Delete</source>
<translation>削除</translation>
</message>
<message>
- <location line="+305"/>
+ <location line="+307"/>
<source>New action</source>
<translation>æ–°ã—ã„アクション</translation>
</message>
@@ -4958,12 +4882,17 @@ Do you want overwrite the template?</source>
<translation type="obsolete">ãã®æ©Ÿèƒ½ã¯å®Ÿè£…ã•ã‚Œã¦ã„ã¾ã›ã‚“!</translation>
</message>
<message>
- <location line="-408"/>
+ <location line="-411"/>
<source>Edit...</source>
<translation type="unfinished">編集...</translation>
</message>
<message>
<location line="+1"/>
+ <source>Go to slot...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
<source>Copy</source>
<translation type="unfinished"></translation>
</message>
@@ -4983,7 +4912,7 @@ Do you want overwrite the template?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+52"/>
+ <location line="+54"/>
<source>Configure Action Editor</source>
<translation type="unfinished"></translation>
</message>
@@ -4998,7 +4927,7 @@ Do you want overwrite the template?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+406"/>
+ <location line="+412"/>
<source>Remove actions</source>
<translation type="unfinished"></translation>
</message>
@@ -5008,7 +4937,7 @@ Do you want overwrite the template?</source>
<translation type="unfinished">アクション &apos;%1&apos; を消去</translation>
</message>
<message>
- <location line="+183"/>
+ <location line="+186"/>
<source>Used In</source>
<translation type="unfinished"></translation>
</message>
@@ -5023,7 +4952,7 @@ Do you want overwrite the template?</source>
<context>
<name>qdesigner_internal::ActionModel</name>
<message>
- <location filename="../tools/designer/src/lib/shared/actionrepository.cpp" line="+64"/>
+ <location filename="../tools/designer/src/lib/shared/actionrepository.cpp" line="+95"/>
<source>Name</source>
<translation type="unfinished">åå‰</translation>
</message>
@@ -5056,7 +4985,7 @@ Do you want overwrite the template?</source>
<context>
<name>qdesigner_internal::BuddyEditor</name>
<message>
- <location filename="../tools/designer/src/components/buddyeditor/buddyeditor.cpp" line="+235"/>
+ <location filename="../tools/designer/src/components/buddyeditor/buddyeditor.cpp" line="+265"/>
<source>Add buddy</source>
<translation>buddy を追加</translation>
</message>
@@ -5088,7 +5017,7 @@ Do you want overwrite the template?</source>
<context>
<name>qdesigner_internal::BuddyEditorPlugin</name>
<message>
- <location filename="../tools/designer/src/components/buddyeditor/buddyeditor_plugin.cpp" line="+47"/>
+ <location filename="../tools/designer/src/components/buddyeditor/buddyeditor_plugin.cpp" line="+77"/>
<source>Edit Buddies</source>
<translation>buddy を編集</translation>
</message>
@@ -5096,7 +5025,7 @@ Do you want overwrite the template?</source>
<context>
<name>qdesigner_internal::BuddyEditorTool</name>
<message>
- <location filename="../tools/designer/src/components/buddyeditor/buddyeditor_tool.cpp" line="+30"/>
+ <location filename="../tools/designer/src/components/buddyeditor/buddyeditor_tool.cpp" line="+60"/>
<source>Edit Buddies</source>
<translation>buddy を編集</translation>
</message>
@@ -5150,7 +5079,7 @@ Do you want overwrite the template?</source>
<context>
<name>qdesigner_internal::CodeDialog</name>
<message>
- <location filename="../tools/designer/src/lib/shared/codedialog.cpp" line="+69"/>
+ <location filename="../tools/designer/src/lib/shared/codedialog.cpp" line="+99"/>
<source>Save...</source>
<translation type="unfinished"></translation>
</message>
@@ -5208,7 +5137,7 @@ Do you want overwrite the template?</source>
<context>
<name>qdesigner_internal::ColorAction</name>
<message>
- <location filename="../tools/designer/src/lib/shared/richtexteditor.cpp" line="+220"/>
+ <location filename="../tools/designer/src/lib/shared/richtexteditor.cpp" line="+250"/>
<source>Text Color</source>
<translation type="unfinished"></translation>
</message>
@@ -5216,7 +5145,7 @@ Do you want overwrite the template?</source>
<context>
<name>qdesigner_internal::ComboBoxTaskMenu</name>
<message>
- <location filename="../tools/designer/src/components/taskmenu/combobox_taskmenu.cpp" line="+42"/>
+ <location filename="../tools/designer/src/components/taskmenu/combobox_taskmenu.cpp" line="+72"/>
<source>Edit Items...</source>
<translation>アイテムを編集...</translation>
</message>
@@ -5270,7 +5199,7 @@ Do you want overwrite the template?</source>
<context>
<name>qdesigner_internal::ConnectionModel</name>
<message>
- <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditorwindow.cpp" line="-470"/>
+ <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditorwindow.cpp" line="-465"/>
<source>Sender</source>
<translation>発信者</translation>
</message>
@@ -5290,7 +5219,7 @@ Do you want overwrite the template?</source>
<translation>スロット</translation>
</message>
<message>
- <location line="+97"/>
+ <location line="+90"/>
<source>&lt;sender&gt;</source>
<translation>&lt;発信者&gt;</translation>
</message>
@@ -5331,7 +5260,7 @@ Do you want overwrite the template?</source>
<translation type="obsolete">ページを削除</translation>
</message>
<message>
- <location filename="../tools/designer/src/components/taskmenu/containerwidget_taskmenu.cpp" line="+82"/>
+ <location filename="../tools/designer/src/components/taskmenu/containerwidget_taskmenu.cpp" line="+112"/>
<source>Insert Page Before Current Page</source>
<translation>ã“ã®ãƒšãƒ¼ã‚¸ã®å‰ã«ãƒšãƒ¼ã‚¸ã‚’挿入</translation>
</message>
@@ -5394,7 +5323,7 @@ Do you want overwrite the template?</source>
<context>
<name>qdesigner_internal::DesignerPropertyManager</name>
<message>
- <location filename="../tools/designer/src/components/propertyeditor/designerpropertymanager.cpp" line="+614"/>
+ <location filename="../tools/designer/src/components/propertyeditor/designerpropertymanager.cpp" line="+644"/>
<location line="+6"/>
<source>AlignLeft</source>
<translation type="unfinished"></translation>
@@ -5519,7 +5448,7 @@ Do you want overwrite the template?</source>
<context>
<name>qdesigner_internal::DeviceProfileDialog</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/deviceprofiledialog.cpp" line="+33"/>
+ <location filename="../tools/designer/src/components/formeditor/deviceprofiledialog.cpp" line="+63"/>
<source>Device Profiles (*.%1)</source>
<translation type="unfinished"></translation>
</message>
@@ -5662,9 +5591,62 @@ Do you want overwrite the template?</source>
</message>
</context>
<context>
+ <name>qdesigner_internal::EmbeddedOptionsControl</name>
+ <message>
+ <location filename="../tools/designer/src/components/formeditor/embeddedoptionspage.cpp" line="-260"/>
+ <source>None</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Add a profile</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Edit the selected profile</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Delete the selected profile</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+22"/>
+ <source>Add Profile</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>New profile</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+35"/>
+ <source>Edit Profile</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+26"/>
+ <source>Delete Profile</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Would you like to delete the profile &apos;%1&apos;?</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+55"/>
+ <source>Default</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
<name>qdesigner_internal::FilterWidget</name>
<message>
- <location filename="../tools/designer/src/lib/shared/filterwidget.cpp" line="+155"/>
+ <location filename="../tools/designer/src/lib/shared/filterwidget.cpp" line="+185"/>
<source>&lt;Filter&gt;</source>
<translation type="unfinished"></translation>
</message>
@@ -5691,7 +5673,7 @@ Do you want overwrite the template?</source>
<context>
<name>qdesigner_internal::FormEditor</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/formeditor.cpp" line="+160"/>
+ <location filename="../tools/designer/src/components/formeditor/formeditor.cpp" line="+190"/>
<source>Resource File Changed</source>
<translation type="unfinished"></translation>
</message>
@@ -5712,7 +5694,7 @@ Do you want overwrite the template?</source>
<context>
<name>qdesigner_internal::FormWindow</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/formwindow.cpp" line="-1262"/>
+ <location filename="../tools/designer/src/components/formeditor/formwindow.cpp" line="-1267"/>
<source>Edit contents</source>
<translation>内容を編集</translation>
</message>
@@ -5726,7 +5708,7 @@ Do you want overwrite the template?</source>
<translation type="obsolete">ウィジェット &apos;%1 を挿入</translation>
</message>
<message>
- <location line="+836"/>
+ <location line="+841"/>
<source>Resize</source>
<translation>サイズ変更</translation>
</message>
@@ -5762,13 +5744,13 @@ and then paste again.</source>
<translation>レイアウト</translation>
</message>
<message>
- <location line="+490"/>
+ <location line="+493"/>
<location line="+55"/>
<source>Drop widget</source>
<translation>ウィジェットã®è²¼ã‚Šä»˜ã‘</translation>
</message>
<message numerus="yes">
- <location line="-1052"/>
+ <location line="-1055"/>
<source>Paste %n action(s)</source>
<translation type="unfinished">
<numerusform></numerusform>
@@ -5817,7 +5799,7 @@ and then paste again.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+573"/>
+ <location line="+576"/>
<source>A QMainWindow-based form does not contain a central widget.</source>
<translation type="unfinished"></translation>
</message>
@@ -5825,7 +5807,7 @@ and then paste again.</source>
<context>
<name>qdesigner_internal::FormWindowBase</name>
<message>
- <location filename="../tools/designer/src/lib/shared/formwindowbase.cpp" line="+363"/>
+ <location filename="../tools/designer/src/lib/shared/formwindowbase.cpp" line="+397"/>
<source>Delete</source>
<translation>削除</translation>
</message>
@@ -5838,7 +5820,7 @@ and then paste again.</source>
<context>
<name>qdesigner_internal::FormWindowManager</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/formwindowmanager.cpp" line="+337"/>
+ <location filename="../tools/designer/src/components/formeditor/formwindowmanager.cpp" line="+368"/>
<source>Cu&amp;t</source>
<translation>切りå–ã‚Š(&amp;T)</translation>
</message>
@@ -5920,7 +5902,7 @@ and then paste again.</source>
<translation>é¸æŠžã•ã‚ŒãŸã‚¦ã‚£ã‚¸ã‚£ãƒˆã®ã‚µã‚¤ã‚ºã‚’調整</translation>
</message>
<message>
- <location line="+7"/>
+ <location line="+6"/>
<source>Lay Out &amp;Horizontally</source>
<translation>æ°´å¹³ã«ä¸¦ã¹ã‚‹(&amp;H)</translation>
</message>
@@ -5980,7 +5962,7 @@ and then paste again.</source>
<translation>é¸æŠžã•ã‚ŒãŸã‚¦ã‚£ã‚¸ã‚§ãƒƒãƒˆã‚’スプリッタã®ä¸­ã§åž‚ç›´æ–¹å‘ã«é…ç½®</translation>
</message>
<message>
- <location line="+6"/>
+ <location line="+7"/>
<source>&amp;Break Layout</source>
<translation>レイアウトを破棄(&amp;B)</translation>
</message>
@@ -6010,7 +5992,7 @@ and then paste again.</source>
<translation type="unfinished">フォームã®è¨­å®š(&amp;S)...</translation>
</message>
<message>
- <location line="+75"/>
+ <location line="+78"/>
<source>Break Layout</source>
<translation>レイアウトを破棄ã™ã‚‹</translation>
</message>
@@ -6026,12 +6008,12 @@ and then paste again.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+324"/>
+ <location line="+341"/>
<source>Form Settings - %1</source>
<translation type="unfinished">フォーム設定 - %1</translation>
</message>
<message>
- <location line="-490"/>
+ <location line="-510"/>
<source>Removes empty columns and rows</source>
<translation type="unfinished"></translation>
</message>
@@ -6039,7 +6021,7 @@ and then paste again.</source>
<context>
<name>qdesigner_internal::FormWindowSettings</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/formwindowsettings.cpp" line="+162"/>
+ <location filename="../tools/designer/src/components/formeditor/formwindowsettings.cpp" line="+193"/>
<source>None</source>
<translation type="unfinished"></translation>
</message>
@@ -6105,7 +6087,7 @@ and then paste again.</source>
<context>
<name>qdesigner_internal::GroupBoxTaskMenu</name>
<message>
- <location filename="../tools/designer/src/components/taskmenu/groupbox_taskmenu.cpp" line="+56"/>
+ <location filename="../tools/designer/src/components/taskmenu/groupbox_taskmenu.cpp" line="+86"/>
<source>Change title...</source>
<translation>タイトルを変更...</translation>
</message>
@@ -6121,7 +6103,7 @@ and then paste again.</source>
<context>
<name>qdesigner_internal::IconSelector</name>
<message>
- <location filename="../tools/designer/src/lib/shared/iconselector.cpp" line="+210"/>
+ <location filename="../tools/designer/src/lib/shared/iconselector.cpp" line="+211"/>
<source>The pixmap file &apos;%1&apos; cannot be read.</source>
<translation type="unfinished"></translation>
</message>
@@ -6214,7 +6196,7 @@ and then paste again.</source>
<context>
<name>qdesigner_internal::ItemListEditor</name>
<message>
- <location filename="../tools/designer/src/components/taskmenu/itemlisteditor.cpp" line="+349"/>
+ <location filename="../tools/designer/src/components/taskmenu/itemlisteditor.cpp" line="+358"/>
<source>Properties &amp;&lt;&lt;</source>
<translation type="unfinished"></translation>
</message>
@@ -6273,7 +6255,7 @@ and then paste again.</source>
<context>
<name>qdesigner_internal::LabelTaskMenu</name>
<message>
- <location filename="../tools/designer/src/components/taskmenu/label_taskmenu.cpp" line="+59"/>
+ <location filename="../tools/designer/src/components/taskmenu/label_taskmenu.cpp" line="+89"/>
<source>Change rich text...</source>
<translation>リッãƒãƒ†ã‚­ã‚¹ãƒˆã‚’変更...</translation>
</message>
@@ -6286,7 +6268,7 @@ and then paste again.</source>
<context>
<name>qdesigner_internal::LineEditTaskMenu</name>
<message>
- <location filename="../tools/designer/src/components/taskmenu/lineedit_taskmenu.cpp" line="+54"/>
+ <location filename="../tools/designer/src/components/taskmenu/lineedit_taskmenu.cpp" line="+84"/>
<source>Change text...</source>
<translation>テキストを変更...</translation>
</message>
@@ -6294,7 +6276,7 @@ and then paste again.</source>
<context>
<name>qdesigner_internal::ListWidgetEditor</name>
<message>
- <location filename="../tools/designer/src/components/taskmenu/listwidgeteditor.cpp" line="+75"/>
+ <location filename="../tools/designer/src/components/taskmenu/listwidgeteditor.cpp" line="+105"/>
<source>Edit List Widget</source>
<translation>リストウィジェットを編集</translation>
</message>
@@ -6372,7 +6354,7 @@ and then paste again.</source>
<context>
<name>qdesigner_internal::ListWidgetTaskMenu</name>
<message>
- <location filename="../tools/designer/src/components/taskmenu/listwidget_taskmenu.cpp" line="+41"/>
+ <location filename="../tools/designer/src/components/taskmenu/listwidget_taskmenu.cpp" line="+71"/>
<source>Edit Items...</source>
<translation>アイテムを編集...</translation>
</message>
@@ -6408,7 +6390,7 @@ and then paste again.</source>
<context>
<name>qdesigner_internal::MenuTaskMenu</name>
<message>
- <location filename="../tools/designer/src/components/taskmenu/menutaskmenu.cpp" line="+30"/>
+ <location filename="../tools/designer/src/components/taskmenu/menutaskmenu.cpp" line="+60"/>
<source>Remove</source>
<translation type="unfinished">消去</translation>
</message>
@@ -6467,7 +6449,7 @@ and then paste again.</source>
<context>
<name>qdesigner_internal::NewDynamicPropertyDialog</name>
<message>
- <location filename="../tools/designer/src/components/propertyeditor/newdynamicpropertydialog.cpp" line="+104"/>
+ <location filename="../tools/designer/src/components/propertyeditor/newdynamicpropertydialog.cpp" line="+134"/>
<source>Set Property Name</source>
<translation>プロパティåを設定</translation>
</message>
@@ -6593,7 +6575,7 @@ Please select another name.</source>
<context>
<name>qdesigner_internal::NewPromotedClassPanel</name>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_promotiondialog.cpp" line="+66"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_promotiondialog.cpp" line="+96"/>
<source>Add</source>
<translation>追加</translation>
</message>
@@ -6647,7 +6629,7 @@ Please select another name.</source>
<translation type="obsolete">セパレータ</translation>
</message>
<message>
- <location filename="../tools/designer/src/components/objectinspector/objectinspector.cpp" line="+727"/>
+ <location filename="../tools/designer/src/components/objectinspector/objectinspector.cpp" line="+758"/>
<source>&amp;Find in Text...</source>
<translation type="unfinished"></translation>
</message>
@@ -6663,7 +6645,7 @@ Please select another name.</source>
<context>
<name>qdesigner_internal::OrderDialog</name>
<message>
- <location filename="../tools/designer/src/lib/shared/orderdialog.cpp" line="+83"/>
+ <location filename="../tools/designer/src/lib/shared/orderdialog.cpp" line="+113"/>
<source>Index %1 (%2)</source>
<translation>インデックス %1 (%2)</translation>
</message>
@@ -6752,7 +6734,7 @@ Please select another name.</source>
<context>
<name>qdesigner_internal::PaletteEditorButton</name>
<message>
- <location filename="../tools/designer/src/components/propertyeditor/paletteeditorbutton.cpp" line="+31"/>
+ <location filename="../tools/designer/src/components/propertyeditor/paletteeditorbutton.cpp" line="+61"/>
<source>Change Palette</source>
<translation>パレットを変更</translation>
</message>
@@ -6760,7 +6742,7 @@ Please select another name.</source>
<context>
<name>qdesigner_internal::PaletteModel</name>
<message>
- <location filename="../tools/designer/src/components/propertyeditor/paletteeditor.cpp" line="+351"/>
+ <location filename="../tools/designer/src/components/propertyeditor/paletteeditor.cpp" line="+381"/>
<source>Color Role</source>
<translation>色役割</translation>
</message>
@@ -6812,15 +6794,61 @@ Please select another name.</source>
<context>
<name>qdesigner_internal::PlainTextEditorDialog</name>
<message>
- <location filename="../tools/designer/src/lib/shared/plaintexteditor.cpp" line="+39"/>
+ <location filename="../tools/designer/src/lib/shared/plaintexteditor.cpp" line="+69"/>
<source>Edit text</source>
<translation type="unfinished">テキストを編集</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>コンãƒãƒ¼ãƒãƒ³ãƒˆ</translation>
+ </message>
+ <message>
+ <location line="+13"/>
+ <source>Plugin Information</source>
+ <translation>プラグイン情報</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Refresh</source>
+ <translation>リフレッシュ</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Scan for newly installed custom widget plugins.</source>
+ <translation>æ–°ã—ãインストールã•ã‚ŒãŸã‚«ã‚¹ã‚¿ãƒ ã‚¦ã‚£ã‚¸ã‚§ãƒƒãƒˆãƒ—ラグインをスキャンã—ã¾ã™ã€‚</translation>
+ </message>
+ <message>
+ <location line="+48"/>
+ <source>Qt Designer couldn&apos;t find any plugins</source>
+ <translation>プラグインã¯è¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸ</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Qt Designer found the following plugins</source>
+ <translation>以下ã®ãƒ—ラグインãŒè¦‹ã¤ã‹ã‚Šã¾ã—ãŸ</translation>
+ </message>
+ <message>
+ <location line="+55"/>
+ <source>New custom widget plugins have been found.</source>
+ <translation>æ–°ã—ã„カスタムウィジェットã®ãƒ—ラグインãŒè¦‹ã¤ã‹ã‚Šã¾ã—ãŸã€‚</translation>
+ </message>
+ <message>
+ <source>TextLabel</source>
+ <translation type="obsolete">テキストラベル</translation>
+ </message>
+ <message>
+ <source>1</source>
+ <translation type="obsolete">1</translation>
+ </message>
+</context>
+<context>
<name>qdesigner_internal::PreviewActionGroup</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/previewactiongroup.cpp" line="+65"/>
+ <location filename="../tools/designer/src/components/formeditor/previewactiongroup.cpp" line="+95"/>
<source>%1 Style</source>
<translation type="unfinished">%1 スタイル</translation>
</message>
@@ -6862,7 +6890,7 @@ Please select another name.</source>
<context>
<name>qdesigner_internal::PreviewDeviceSkin</name>
<message>
- <location filename="../tools/designer/src/lib/shared/previewmanager.cpp" line="+188"/>
+ <location filename="../tools/designer/src/lib/shared/previewmanager.cpp" line="+218"/>
<source>&amp;Close</source>
<translation type="unfinished">é–‰ã˜ã‚‹(&amp;C)</translation>
</message>
@@ -6963,7 +6991,7 @@ Please select another name.</source>
<context>
<name>qdesigner_internal::PromotionTaskMenu</name>
<message>
- <location filename="../tools/designer/src/lib/shared/promotiontaskmenu.cpp" line="+55"/>
+ <location filename="../tools/designer/src/lib/shared/promotiontaskmenu.cpp" line="+85"/>
<source>Promoted widgets...</source>
<translation>格上ã’ã•ã‚ŒãŸã‚¦ã‚£ã‚¸ã‚§ãƒƒãƒˆ...</translation>
</message>
@@ -6991,7 +7019,7 @@ Please select another name.</source>
<context>
<name>qdesigner_internal::PropertyEditor</name>
<message>
- <location filename="../tools/designer/src/components/propertyeditor/propertyeditor.cpp" line="+222"/>
+ <location filename="../tools/designer/src/components/propertyeditor/propertyeditor.cpp" line="+188"/>
<source>Add Dynamic Property...</source>
<translation>ダイナミックプロパティを追加...</translation>
</message>
@@ -7026,13 +7054,13 @@ Please select another name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+534"/>
+ <location line="+533"/>
<source>Object: %1
Class: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-548"/>
+ <location line="-547"/>
<source>String...</source>
<translation type="unfinished"></translation>
</message>
@@ -7050,7 +7078,7 @@ Class: %2</source>
<context>
<name>qdesigner_internal::PropertyLineEdit</name>
<message>
- <location filename="../tools/designer/src/lib/shared/propertylineedit.cpp" line="+58"/>
+ <location filename="../tools/designer/src/lib/shared/propertylineedit.cpp" line="+88"/>
<source>Insert line break</source>
<translation>改行を挿入</translation>
</message>
@@ -7198,7 +7226,7 @@ Class: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+265"/>
+ <location line="+264"/>
<source>Edit ToolTip</source>
<translation type="unfinished"></translation>
</message>
@@ -7207,15 +7235,20 @@ Class: %2</source>
<source>Edit WhatsThis</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <location line="+144"/>
+ <source>no signals available</source>
+ <translation type="unfinished"></translation>
+ </message>
<message numerus="yes">
- <location line="+132"/>
+ <location line="+67"/>
<source>Set size constraint on %n widget(s)</source>
<translation type="unfinished">
<numerusform></numerusform>
</translation>
</message>
<message>
- <location line="-403"/>
+ <location line="-481"/>
<source>Change signals/slots...</source>
<translation type="unfinished"></translation>
</message>
@@ -7258,7 +7291,7 @@ Class: %2</source>
<context>
<name>qdesigner_internal::QDesignerWidgetBox</name>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_widgetbox.cpp" line="+97"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_widgetbox.cpp" line="+127"/>
<location line="+13"/>
<source>Unexpected element &lt;%1&gt;</source>
<translation type="unfinished"></translation>
@@ -7650,7 +7683,7 @@ Class: %2</source>
<context>
<name>qdesigner_internal::QtGradientStopsController</name>
<message>
- <location filename="../tools/shared/qtgradienteditor/qtgradientstopscontroller.cpp" line="+147"/>
+ <location filename="../tools/shared/qtgradienteditor/qtgradientstopscontroller.cpp" line="+177"/>
<source>H</source>
<translation type="unfinished"></translation>
</message>
@@ -8002,7 +8035,7 @@ Class: %2</source>
<context>
<name>qdesigner_internal::ScriptDialog</name>
<message>
- <location filename="../tools/designer/src/lib/shared/scriptdialog.cpp" line="+38"/>
+ <location filename="../tools/designer/src/lib/shared/scriptdialog.cpp" line="+68"/>
<source>Edit script</source>
<translation>スクリプトを編集</translation>
</message>
@@ -8059,7 +8092,7 @@ Class: %2</source>
<context>
<name>qdesigner_internal::SignalSlotEditorPlugin</name>
<message>
- <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditor_plugin.cpp" line="+46"/>
+ <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditor_plugin.cpp" line="+76"/>
<source>Edit Signals/Slots</source>
<translation>シグナル/スロットを編集</translation>
</message>
@@ -8072,7 +8105,7 @@ Class: %2</source>
<context>
<name>qdesigner_internal::SignalSlotEditorTool</name>
<message>
- <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditor_tool.cpp" line="+32"/>
+ <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditor_tool.cpp" line="+62"/>
<source>Edit Signals/Slots</source>
<translation>シグナル/スロットを編集</translation>
</message>
@@ -8080,7 +8113,7 @@ Class: %2</source>
<context>
<name>qdesigner_internal::StatusBarTaskMenu</name>
<message>
- <location filename="../tools/designer/src/components/taskmenu/toolbar_taskmenu.cpp" line="+55"/>
+ <location filename="../tools/designer/src/components/taskmenu/toolbar_taskmenu.cpp" line="+85"/>
<source>Remove</source>
<translation type="unfinished">消去</translation>
</message>
@@ -8092,7 +8125,7 @@ Class: %2</source>
<translation type="obsolete">文字列リストを変更</translation>
</message>
<message>
- <location filename="../tools/designer/src/components/propertyeditor/stringlisteditorbutton.cpp" line="+30"/>
+ <location filename="../tools/designer/src/components/propertyeditor/stringlisteditorbutton.cpp" line="+60"/>
<source>Change String List</source>
<translation type="unfinished"></translation>
</message>
@@ -8100,7 +8133,7 @@ Class: %2</source>
<context>
<name>qdesigner_internal::StyleSheetEditorDialog</name>
<message>
- <location filename="../tools/designer/src/lib/shared/stylesheeteditor.cpp" line="+71"/>
+ <location filename="../tools/designer/src/lib/shared/stylesheeteditor.cpp" line="+101"/>
<source>Edit Style Sheet</source>
<translation>スタイルシートを変更</translation>
</message>
@@ -8159,7 +8192,7 @@ Class: %2</source>
<context>
<name>qdesigner_internal::TabOrderEditor</name>
<message>
- <location filename="../tools/designer/src/components/tabordereditor/tabordereditor.cpp" line="+333"/>
+ <location filename="../tools/designer/src/components/tabordereditor/tabordereditor.cpp" line="+363"/>
<source>Start from Here</source>
<translation type="unfinished"></translation>
</message>
@@ -8187,7 +8220,7 @@ Class: %2</source>
<context>
<name>qdesigner_internal::TabOrderEditorPlugin</name>
<message>
- <location filename="../tools/designer/src/components/tabordereditor/tabordereditor_plugin.cpp" line="+47"/>
+ <location filename="../tools/designer/src/components/tabordereditor/tabordereditor_plugin.cpp" line="+77"/>
<source>Edit Tab Order</source>
<translation>タブ順を編集</translation>
</message>
@@ -8195,7 +8228,7 @@ Class: %2</source>
<context>
<name>qdesigner_internal::TabOrderEditorTool</name>
<message>
- <location filename="../tools/designer/src/components/tabordereditor/tabordereditor_tool.cpp" line="+31"/>
+ <location filename="../tools/designer/src/components/tabordereditor/tabordereditor_tool.cpp" line="+61"/>
<source>Edit Tab Order</source>
<translation>タブ順を編集</translation>
</message>
@@ -8203,7 +8236,7 @@ Class: %2</source>
<context>
<name>qdesigner_internal::TableWidgetEditor</name>
<message>
- <location filename="../tools/designer/src/components/taskmenu/tablewidgeteditor.cpp" line="+41"/>
+ <location filename="../tools/designer/src/components/taskmenu/tablewidgeteditor.cpp" line="+71"/>
<source>New Column</source>
<translation>æ–°ã—ã„列</translation>
</message>
@@ -8364,7 +8397,7 @@ Class: %2</source>
<context>
<name>qdesigner_internal::TableWidgetTaskMenu</name>
<message>
- <location filename="../tools/designer/src/components/taskmenu/tablewidget_taskmenu.cpp" line="+38"/>
+ <location filename="../tools/designer/src/components/taskmenu/tablewidget_taskmenu.cpp" line="+68"/>
<source>Edit Items...</source>
<translation>アイテムを編集...</translation>
</message>
@@ -8395,7 +8428,7 @@ Class: %2</source>
<context>
<name>qdesigner_internal::TextEditTaskMenu</name>
<message>
- <location filename="../tools/designer/src/components/taskmenu/textedit_taskmenu.cpp" line="+32"/>
+ <location filename="../tools/designer/src/components/taskmenu/textedit_taskmenu.cpp" line="+62"/>
<source>Edit HTML</source>
<translation type="unfinished"></translation>
</message>
@@ -8441,7 +8474,7 @@ Class: %2</source>
<context>
<name>qdesigner_internal::ToolBarEventFilter</name>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_toolbar.cpp" line="+209"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_toolbar.cpp" line="+239"/>
<source>Insert Separator</source>
<translation>セパレータを挿入</translation>
</message>
@@ -8476,7 +8509,7 @@ Class: %2</source>
<context>
<name>qdesigner_internal::TreeWidgetEditor</name>
<message>
- <location filename="../tools/designer/src/components/taskmenu/treewidgeteditor.cpp" line="+50"/>
+ <location filename="../tools/designer/src/components/taskmenu/treewidgeteditor.cpp" line="+80"/>
<source>&amp;Columns</source>
<translation type="unfinished"></translation>
</message>
@@ -8686,7 +8719,7 @@ Class: %2</source>
<context>
<name>qdesigner_internal::TreeWidgetTaskMenu</name>
<message>
- <location filename="../tools/designer/src/components/taskmenu/treewidget_taskmenu.cpp" line="+37"/>
+ <location filename="../tools/designer/src/components/taskmenu/treewidget_taskmenu.cpp" line="+67"/>
<source>Edit Items...</source>
<translation>アイテムを編集...</translation>
</message>
@@ -8694,7 +8727,7 @@ Class: %2</source>
<context>
<name>qdesigner_internal::WidgetBox</name>
<message>
- <location filename="../tools/designer/src/components/widgetbox/widgetbox_dnditem.cpp" line="+83"/>
+ <location filename="../tools/designer/src/components/widgetbox/widgetbox_dnditem.cpp" line="+113"/>
<source>Warning: Widget creation failed in the widget box. This could be caused by invalid custom widget XML.</source>
<translation type="unfinished"></translation>
</message>
@@ -8729,17 +8762,17 @@ Class: %2</source>
<context>
<name>qdesigner_internal::WidgetBoxTreeWidget</name>
<message>
- <location filename="../tools/designer/src/components/widgetbox/widgetboxtreewidget.cpp" line="-267"/>
+ <location filename="../tools/designer/src/components/widgetbox/widgetboxtreewidget.cpp" line="-268"/>
<source>Scratchpad</source>
<translation type="unfinished">スクラッãƒãƒ‘ッド</translation>
</message>
<message>
- <location line="+360"/>
+ <location line="+370"/>
<source>Custom Widgets</source>
<translation type="unfinished">カスタムウィジェット</translation>
</message>
<message>
- <location line="+261"/>
+ <location line="+260"/>
<source>Expand all</source>
<translation type="unfinished">ã™ã¹ã¦å±•é–‹ã™ã‚‹</translation>
</message>
@@ -8780,7 +8813,7 @@ Class: %2</source>
<context>
<name>qdesigner_internal::WidgetEditorTool</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/tool_widgeteditor.cpp" line="+41"/>
+ <location filename="../tools/designer/src/components/formeditor/tool_widgeteditor.cpp" line="+71"/>
<source>Edit Widgets</source>
<translation>ウィジェットを編集</translation>
</message>
@@ -8788,12 +8821,12 @@ Class: %2</source>
<context>
<name>qdesigner_internal::WidgetFactory</name>
<message>
- <location filename="../tools/designer/src/lib/shared/widgetfactory.cpp" line="+237"/>
+ <location filename="../tools/designer/src/lib/shared/widgetfactory.cpp" line="+267"/>
<source>The custom widget factory registered for widgets of class %1 returned 0.</source>
<translation type="unfinished">%1 ã¨ã„ã†ã‚¯ãƒ©ã‚¹ã®ã‚¦ã‚£ã‚¸ã‚§ãƒƒãƒˆã®ãŸã‚ã«ç™»éŒ²ã•ã‚ŒãŸã‚«ã‚¹ã‚¿ãƒ ã‚¦ã‚£ã‚¸ã‚§ãƒƒãƒˆãƒ•ã‚¡ã‚¯ãƒˆãƒªãƒ¼ãŒ 0 ã‚’è¿”ã—ã¾ã—ãŸã€‚</translation>
</message>
<message>
- <location line="+40"/>
+ <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 type="unfinished">%1 ã¨ã„ã†ã‚¯ãƒ©ã‚¹ã®ã‚¦ã‚£ã‚¸ã‚§ãƒƒãƒˆã®ãŸã‚ã«ç™»éŒ²ã•ã‚ŒãŸã‚«ã‚¹ã‚¿ãƒ ã‚¦ã‚£ã‚¸ã‚§ãƒƒãƒˆãƒ•ã‚¡ã‚¯ãƒˆãƒªãƒ¼ã‚’使ã£ã¦ã‚¦ã‚£ã‚¸ã‚§ãƒƒãƒˆã‚’作æˆã—ã¦ã„ã‚‹ã¨ãã«ã€ã‚¯ãƒ©ã‚¹åã®ãƒŸã‚¹ãƒžãƒƒãƒãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚%2 ã¨ã„ã†ã‚¯ãƒ©ã‚¹ã®ã‚¦ã‚£ã‚¸ã‚§ãƒƒãƒˆã‚’è¿”ã—ã¾ã—ãŸã€‚</translation>
</message>
@@ -8835,7 +8868,7 @@ This indicates an inconsistency in the ui-file.</source>
<context>
<name>qdesigner_internal::ZoomMenu</name>
<message>
- <location filename="../tools/designer/src/lib/shared/zoomwidget.cpp" line="+54"/>
+ <location filename="../tools/designer/src/lib/shared/zoomwidget.cpp" line="+84"/>
<source>%1 %</source>
<extracomment>Zoom factor</extracomment>
<translation type="unfinished"></translation>
diff --git a/translations/designer_pl.ts b/translations/designer_pl.ts
index 6ae369f..5b63f66 100644
--- a/translations/designer_pl.ts
+++ b/translations/designer_pl.ts
@@ -1,14 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS><TS version="2.0" language="pl">
+<!DOCTYPE TS>
+<TS version="2.0" language="pl">
<context>
<name></name>
<message>
- <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditorwindow.cpp" line="+624"/>
+ <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditorwindow.cpp" line="+647"/>
<source>&lt;object&gt;</source>
<translation>&lt;obiekt&gt;</translation>
</message>
<message>
- <location line="+16"/>
+ <location line="+18"/>
<source>&lt;signal&gt;</source>
<translation>&lt;sygnał&gt;</translation>
</message>
@@ -18,7 +19,7 @@
<translation>&lt;slot&gt;</translation>
</message>
<message>
- <location filename="../tools/designer/src/components/propertyeditor/previewframe.cpp" line="+43"/>
+ <location filename="../tools/designer/src/components/propertyeditor/previewframe.cpp" line="+73"/>
<source>The moose in the noose
ate the goose who was loose.</source>
<translation>W Szczebrzeszynie
@@ -28,7 +29,7 @@ chrzÄ…szcz brzmi w trzcinie.</translation>
<context>
<name>AbstractFindWidget</name>
<message>
- <location filename="../tools/shared/findwidget/abstractfindwidget.cpp" line="+97"/>
+ <location filename="../tools/shared/findwidget/abstractfindwidget.cpp" line="+127"/>
<source>&amp;Previous</source>
<translation>&amp;Poprzednie</translation>
</message>
@@ -74,7 +75,7 @@ chrzÄ…szcz brzmi w trzcinie.</translation>
<context>
<name>AppFontDialog</name>
<message>
- <location filename="../tools/designer/src/designer/appfontdialog.cpp" line="+388"/>
+ <location filename="../tools/designer/src/designer/appfontdialog.cpp" line="+418"/>
<source>Additional Fonts</source>
<translation>Dodatkowe czcionki</translation>
</message>
@@ -186,7 +187,7 @@ chrzÄ…szcz brzmi w trzcinie.</translation>
<context>
<name>AssistantClient</name>
<message>
- <location filename="../tools/designer/src/designer/assistantclient.cpp" line="+70"/>
+ <location filename="../tools/designer/src/designer/assistantclient.cpp" line="+100"/>
<source>Unable to send request: Assistant is not responding.</source>
<translation>Nie można wysłac komendy. Asystent nie odpowiada.</translation>
</message>
@@ -204,7 +205,7 @@ chrzÄ…szcz brzmi w trzcinie.</translation>
<context>
<name>BrushManagerProxy</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/brushmanagerproxy.cpp" line="+191"/>
+ <location filename="../tools/designer/src/components/formeditor/brushmanagerproxy.cpp" line="+221"/>
<source>The element &apos;%1&apos; is missing the required attribute &apos;%2&apos;.</source>
<translation>Brak atrybutu &apos;%2&apos; w elemencie &apos;%1&apos;.</translation>
</message>
@@ -232,7 +233,7 @@ chrzÄ…szcz brzmi w trzcinie.</translation>
<context>
<name>BrushPropertyManager</name>
<message>
- <location filename="../tools/designer/src/components/propertyeditor/brushpropertymanager.cpp" line="+22"/>
+ <location filename="../tools/designer/src/components/propertyeditor/brushpropertymanager.cpp" line="+52"/>
<source>No brush</source>
<translation>Brak szczotki</translation>
</message>
@@ -325,19 +326,24 @@ chrzÄ…szcz brzmi w trzcinie.</translation>
<context>
<name>Command</name>
<message>
- <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditor.cpp" line="+177"/>
- <location line="+211"/>
+ <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditor.cpp" line="+208"/>
+ <location line="+258"/>
<source>Change signal</source>
<translation>Zmień sygnał</translation>
</message>
<message>
- <location line="-209"/>
- <location line="+221"/>
+ <location line="-256"/>
+ <location line="+268"/>
<source>Change slot</source>
<translation>Zmień slot</translation>
</message>
<message>
- <location line="+14"/>
+ <location line="-220"/>
+ <source>Change signal-slot connection</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+234"/>
<source>Change sender</source>
<translation>Zmień nadawcę</translation>
</message>
@@ -347,7 +353,7 @@ chrzÄ…szcz brzmi w trzcinie.</translation>
<translation>Zmień odbiorcę</translation>
</message>
<message>
- <location filename="../tools/designer/src/lib/shared/connectionedit.cpp" line="+113"/>
+ <location filename="../tools/designer/src/lib/shared/connectionedit.cpp" line="+143"/>
<source>Add connection</source>
<translation>Dodaj połączenie</translation>
</message>
@@ -372,7 +378,7 @@ chrzÄ…szcz brzmi w trzcinie.</translation>
<translation>Zmień przeznaczenie</translation>
</message>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_command.cpp" line="+117"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_command.cpp" line="+149"/>
<source>Insert &apos;%1&apos;</source>
<translation>Wstaw &apos;%1&apos;</translation>
</message>
@@ -397,7 +403,7 @@ chrzÄ…szcz brzmi w trzcinie.</translation>
<translation>Zmień rodzica &apos;%1&apos;</translation>
</message>
<message>
- <location line="+51"/>
+ <location line="+53"/>
<source>Promote to custom widget</source>
<translation>Zastąp widżet</translation>
</message>
@@ -427,48 +433,48 @@ chrzÄ…szcz brzmi w trzcinie.</translation>
<translation>Usuń rozmieszczenie</translation>
</message>
<message>
- <location line="+231"/>
- <location line="+226"/>
- <location line="+75"/>
+ <location line="+240"/>
+ <location line="+235"/>
+ <location line="+78"/>
<source>Move Page</source>
<translation>PrzenieÅ› stronÄ™</translation>
</message>
<message>
- <location line="-267"/>
- <location line="+116"/>
- <location line="+183"/>
- <location line="+664"/>
+ <location line="-279"/>
+ <location line="+123"/>
+ <location line="+188"/>
+ <location line="+666"/>
<source>Delete Page</source>
<translation>Usuń stronę</translation>
</message>
<message>
- <location line="-925"/>
- <location line="+116"/>
+ <location line="-939"/>
+ <location line="+123"/>
<source>Page</source>
<translation>Strona</translation>
</message>
<message>
- <location line="-114"/>
- <location line="+297"/>
- <location line="+670"/>
+ <location line="-121"/>
+ <location line="+309"/>
+ <location line="+672"/>
<source>page</source>
<translation>strona</translation>
</message>
<message>
- <location line="-964"/>
- <location line="+116"/>
- <location line="+181"/>
- <location line="+665"/>
+ <location line="-978"/>
+ <location line="+123"/>
+ <location line="+186"/>
+ <location line="+667"/>
<source>Insert Page</source>
<translation>Wstaw stronÄ™</translation>
</message>
<message>
- <location line="-849"/>
+ <location line="-856"/>
<source>tab</source>
<translation>tab</translation>
</message>
<message>
- <location line="+204"/>
+ <location line="+209"/>
<source>Change Tab order</source>
<translation>Zmień kolejność tabulacji</translation>
</message>
@@ -513,12 +519,12 @@ chrzÄ…szcz brzmi w trzcinie.</translation>
<translation>Zmień geometrię elementu w formularzu</translation>
</message>
<message>
- <location line="+94"/>
+ <location line="+95"/>
<source>Change Layout Item Geometry</source>
<translation>Zmień geometrię elementu w rozmieszczeniu</translation>
</message>
<message>
- <location line="+569"/>
+ <location line="+576"/>
<source>Change Table Contents</source>
<translation>Zmień zawartość tabeli</translation>
</message>
@@ -560,7 +566,7 @@ chrzÄ…szcz brzmi w trzcinie.</translation>
<translation>Usuń pasek narzędzi</translation>
</message>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_menu.cpp" line="+1125"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_menu.cpp" line="+1161"/>
<source>Set action text</source>
<translation>Ustaw tekst akcji</translation>
</message>
@@ -571,7 +577,7 @@ chrzÄ…szcz brzmi w trzcinie.</translation>
</message>
<message>
<location line="+89"/>
- <location filename="../tools/designer/src/lib/shared/qdesigner_menubar.cpp" line="+861"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_menubar.cpp" line="+891"/>
<source>Move action</source>
<translation>PrzenieÅ› akcjÄ™</translation>
</message>
@@ -586,12 +592,12 @@ chrzÄ…szcz brzmi w trzcinie.</translation>
<translation>Wstaw menu</translation>
</message>
<message>
- <location filename="../tools/designer/src/lib/shared/signalslotdialog.cpp" line="+172"/>
+ <location filename="../tools/designer/src/lib/shared/signalslotdialog.cpp" line="+202"/>
<source>Change signals/slots</source>
<translation>Zmień sygnały/sloty</translation>
</message>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_command.cpp" line="-861"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_command.cpp" line="-867"/>
<source>Delete Subwindow</source>
<translation>Usuń podokno</translation>
</message>
@@ -611,17 +617,17 @@ chrzÄ…szcz brzmi w trzcinie.</translation>
<translation>Podokno</translation>
</message>
<message>
- <location line="-1796"/>
+ <location line="-1821"/>
<source>Change Z-order of &apos;%1&apos;</source>
<translation>Zmień porządek głębokości (Z-order) dla &apos;%1&apos;</translation>
</message>
<message>
- <location line="+623"/>
+ <location line="+625"/>
<source>Simplify Grid Layout</source>
<translation>Uprość rozmieszczenie w siatce</translation>
</message>
<message>
- <location filename="../tools/designer/src/components/taskmenu/button_taskmenu.cpp" line="+195"/>
+ <location filename="../tools/designer/src/components/taskmenu/button_taskmenu.cpp" line="+225"/>
<source>Create button group</source>
<translation>Utwórz grupę przycisków</translation>
</message>
@@ -642,7 +648,7 @@ chrzÄ…szcz brzmi w trzcinie.</translation>
</message>
<message>
<location line="+8"/>
- <location filename="../tools/designer/src/lib/shared/formlayoutmenu.cpp" line="+373"/>
+ <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>Dodaj &apos;%1&apos; do &apos;%2&apos;</translation>
@@ -659,23 +665,23 @@ chrzÄ…szcz brzmi w trzcinie.</translation>
<translation>Usuń &apos;%1&apos; z &apos;%2&apos;</translation>
</message>
<message>
- <location filename="../tools/designer/src/lib/shared/morphmenu.cpp" line="+318"/>
+ <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>Przekształć %1/%2 w %3</translation>
</message>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_command2.cpp" line="+124"/>
+ <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>Zmień rozmieszczenie widżetu &apos;%1&apos; z %2 na %3</translation>
</message>
<message>
- <location filename="../tools/designer/src/lib/shared/scriptcommand.cpp" line="+25"/>
+ <location filename="../tools/designer/src/lib/shared/scriptcommand.cpp" line="+55"/>
<source>Change script</source>
<translation>Zmień skrypt</translation>
</message>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_propertycommand.cpp" line="+1176"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_propertycommand.cpp" line="+1209"/>
<source>Changed &apos;%1&apos; of &apos;%2&apos;</source>
<translation>Zmień &apos;%1&apos; w &apos;%2&apos;</translation>
</message>
@@ -757,7 +763,7 @@ chrzÄ…szcz brzmi w trzcinie.</translation>
<context>
<name>DPI_Chooser</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/dpi_chooser.cpp" line="+39"/>
+ <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>Standardowa (96 x 96)</translation>
@@ -778,12 +784,12 @@ chrzÄ…szcz brzmi w trzcinie.</translation>
<context>
<name>Designer</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/qdesigner_resource.cpp" line="+409"/>
+ <location filename="../tools/designer/src/components/formeditor/qdesigner_resource.cpp" line="+439"/>
<source>Qt Designer</source>
<translation>Qt Designer</translation>
</message>
<message>
- <location line="+1017"/>
+ <location line="+1028"/>
<source>Custom Widgets</source>
<translation>Własne widżety</translation>
</message>
@@ -793,7 +799,7 @@ chrzÄ…szcz brzmi w trzcinie.</translation>
<translation>Zastępcze widżety</translation>
</message>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_utils.cpp" line="+602"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_utils.cpp" line="+682"/>
<source>Unable to launch %1.</source>
<translation>Nie można uruchomić %1.</translation>
</message>
@@ -803,7 +809,7 @@ chrzÄ…szcz brzmi w trzcinie.</translation>
<translation>%1 przekroczony czas operacji.</translation>
</message>
<message>
- <location filename="../tools/designer/src/components/formeditor/qdesigner_resource.cpp" line="-812"/>
+ <location filename="../tools/designer/src/components/formeditor/qdesigner_resource.cpp" line="-823"/>
<source>This file cannot be read because it was created using %1.</source>
<translation>Nie można odczytać pliku ponieważ został utworzony przy użyciu %1.</translation>
</message>
@@ -868,7 +874,7 @@ chrzÄ…szcz brzmi w trzcinie.</translation>
<context>
<name>DesignerMetaEnum</name>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_utils.cpp" line="-463"/>
+ <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 nie jest poprawną wartością typu wyliczeniowego &apos;%2&apos;.</translation>
</message>
@@ -889,7 +895,7 @@ chrzÄ…szcz brzmi w trzcinie.</translation>
<context>
<name>DeviceProfile</name>
<message>
- <location filename="../tools/designer/src/lib/shared/deviceprofile.cpp" line="+367"/>
+ <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; nie jest liczbÄ….</translation>
@@ -931,7 +937,7 @@ chrzÄ…szcz brzmi w trzcinie.</translation>
<context>
<name>DeviceSkin</name>
<message>
- <location filename="../tools/shared/deviceskin/deviceskin.cpp" line="+49"/>
+ <location filename="../tools/shared/deviceskin/deviceskin.cpp" line="+79"/>
<source>The image file &apos;%1&apos; could not be loaded.</source>
<translation>Nie można wczytać pliku z obrazkiem %1.</translation>
</message>
@@ -989,66 +995,56 @@ chrzÄ…szcz brzmi w trzcinie.</translation>
<context>
<name>EmbeddedOptionsControl</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/embeddedoptionspage.cpp" line="+130"/>
<source>None</source>
- <translation>Żadne</translation>
+ <translation type="obsolete">Żadne</translation>
</message>
<message>
- <location line="+4"/>
<source>Add a profile</source>
- <translation>Dodaj profil</translation>
+ <translation type="obsolete">Dodaj profil</translation>
</message>
<message>
- <location line="+6"/>
<source>Edit the selected profile</source>
- <translation>Edytuj zaznaczony profil</translation>
+ <translation type="obsolete">Edytuj zaznaczony profil</translation>
</message>
<message>
- <location line="+4"/>
<source>Delete the selected profile</source>
- <translation>Usuń zaznaczony profil</translation>
+ <translation type="obsolete">Usuń zaznaczony profil</translation>
</message>
<message>
- <location line="+22"/>
<source>Add Profile</source>
- <translation>Dodaj profil</translation>
+ <translation type="obsolete">Dodaj profil</translation>
</message>
<message>
- <location line="+7"/>
<source>New profile</source>
- <translation>Nowy profil</translation>
+ <translation type="obsolete">Nowy profil</translation>
</message>
<message>
- <location line="+35"/>
<source>Edit Profile</source>
- <translation>Edytuj profil</translation>
+ <translation type="obsolete">Edytuj profil</translation>
</message>
<message>
- <location line="+26"/>
<source>Delete Profile</source>
- <translation>Usuń profil</translation>
+ <translation type="obsolete">Usuń profil</translation>
</message>
<message>
- <location line="+1"/>
<source>Would you like to delete the profile &apos;%1&apos;?</source>
- <translation>Czy chcesz usunać profil &apos;%1&apos;?</translation>
+ <translation type="obsolete">Czy chcesz usunać profil &apos;%1&apos;?</translation>
</message>
<message>
- <location line="+42"/>
+ <location filename="../tools/designer/src/components/formeditor/embeddedoptionspage.cpp" line="+311"/>
<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;Styl&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;Rozdzielczość&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>
<message>
- <location line="+13"/>
<source>Default</source>
- <translation>Domyślny</translation>
+ <translation type="obsolete">Domyślny</translation>
</message>
</context>
<context>
<name>EmbeddedOptionsPage</name>
<message>
- <location line="+90"/>
+ <location line="+103"/>
<source>Embedded Design</source>
<extracomment>Tab in preferences dialog</extracomment>
<translation>Projekt dla urządzeń specjalizowanych</translation>
@@ -1063,7 +1059,7 @@ chrzÄ…szcz brzmi w trzcinie.</translation>
<context>
<name>FontPanel</name>
<message>
- <location filename="../tools/shared/fontpanel/fontpanel.cpp" line="+33"/>
+ <location filename="../tools/shared/fontpanel/fontpanel.cpp" line="+63"/>
<source>Font</source>
<translation>Czcionka</translation>
</message>
@@ -1091,7 +1087,7 @@ chrzÄ…szcz brzmi w trzcinie.</translation>
<context>
<name>FontPropertyManager</name>
<message>
- <location filename="../tools/designer/src/components/propertyeditor/fontpropertymanager.cpp" line="+32"/>
+ <location filename="../tools/designer/src/components/propertyeditor/fontpropertymanager.cpp" line="+62"/>
<source>PreferDefault</source>
<translation>Preferuj domyślny</translation>
</message>
@@ -1114,7 +1110,7 @@ chrzÄ…szcz brzmi w trzcinie.</translation>
<context>
<name>FormBuilder</name>
<message>
- <location filename="../tools/designer/src/lib/uilib/formbuilderextra.cpp" line="+321"/>
+ <location filename="../tools/designer/src/lib/uilib/formbuilderextra.cpp" line="+351"/>
<source>Invalid stretch value for &apos;%1&apos;: &apos;%2&apos;</source>
<extracomment>Parsing layout stretch values</extracomment>
<translation>Niepoprawna wartość rozciągniecia dla &apos;%1&apos;: &apos;%2&apos;</translation>
@@ -1129,7 +1125,7 @@ chrzÄ…szcz brzmi w trzcinie.</translation>
<context>
<name>FormEditorOptionsPage</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/formeditor_optionspage.cpp" line="+61"/>
+ <location filename="../tools/designer/src/components/formeditor/formeditor_optionspage.cpp" line="+91"/>
<source>%1 %</source>
<translation>%1 %</translation>
</message>
@@ -1196,7 +1192,7 @@ chrzÄ…szcz brzmi w trzcinie.</translation>
<context>
<name>FormWindow</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/formwindow.cpp" line="+1669"/>
+ <location filename="../tools/designer/src/components/formeditor/formwindow.cpp" line="+1705"/>
<source>Unexpected element &lt;%1&gt;</source>
<translation>Niespodziewany element &lt;%1&gt;</translation>
</message>
@@ -1272,7 +1268,7 @@ chrzÄ…szcz brzmi w trzcinie.</translation>
<context>
<name>IconSelector</name>
<message>
- <location filename="../tools/designer/src/lib/shared/iconselector.cpp" line="+321"/>
+ <location filename="../tools/designer/src/lib/shared/iconselector.cpp" line="+353"/>
<source>All Pixmaps (</source>
<translation>Wszystkie pixmapy (</translation>
</message>
@@ -1280,7 +1276,7 @@ chrzÄ…szcz brzmi w trzcinie.</translation>
<context>
<name>ItemPropertyBrowser</name>
<message>
- <location filename="../tools/designer/src/components/taskmenu/itemlisteditor.cpp" line="+36"/>
+ <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>XX ikona wybrana wyłączona</translation>
@@ -1289,7 +1285,7 @@ chrzÄ…szcz brzmi w trzcinie.</translation>
<context>
<name>LanguageResourceDialog</name>
<message>
- <location filename="../tools/designer/src/lib/shared/iconselector.cpp" line="-234"/>
+ <location filename="../tools/designer/src/lib/shared/iconselector.cpp" line="-235"/>
<source>Choose Resource</source>
<translation>Wybierz zasób</translation>
</message>
@@ -1297,7 +1293,7 @@ chrzÄ…szcz brzmi w trzcinie.</translation>
<context>
<name>MainWindowBase</name>
<message>
- <location filename="../tools/designer/src/designer/mainwindow.cpp" line="+89"/>
+ <location filename="../tools/designer/src/designer/mainwindow.cpp" line="+119"/>
<source>Main</source>
<extracomment>Not currently used (main tool bar)</extracomment>
<translation>Główny</translation>
@@ -1331,7 +1327,7 @@ chrzÄ…szcz brzmi w trzcinie.</translation>
<context>
<name>NewForm</name>
<message>
- <location filename="../tools/designer/src/designer/newform.cpp" line="+53"/>
+ <location filename="../tools/designer/src/designer/newform.cpp" line="+83"/>
<source>New Form</source>
<translation>Nowy formularz</translation>
</message>
@@ -1384,7 +1380,7 @@ chrzÄ…szcz brzmi w trzcinie.</translation>
<context>
<name>NewFormWidget</name>
<message>
- <location filename="../tools/designer/src/lib/shared/newformwidget.cpp" line="+465"/>
+ <location filename="../tools/designer/src/lib/shared/newformwidget.cpp" line="+495"/>
<source>Unable to open the form template file &apos;%1&apos;: %2</source>
<translation>Nie można otworzyć pliku &apos;%1&apos; z szablonem formularza: %2</translation>
</message>
@@ -1392,7 +1388,7 @@ chrzÄ…szcz brzmi w trzcinie.</translation>
<context>
<name>ObjectInspectorModel</name>
<message>
- <location filename="../tools/designer/src/components/objectinspector/objectinspectormodel.cpp" line="+331"/>
+ <location filename="../tools/designer/src/components/objectinspector/objectinspectormodel.cpp" line="+364"/>
<source>Object</source>
<translation>Obiekt</translation>
</message>
@@ -1402,7 +1398,7 @@ chrzÄ…szcz brzmi w trzcinie.</translation>
<translation>Klasa</translation>
</message>
<message>
- <location line="+34"/>
+ <location line="+35"/>
<source>separator</source>
<translation>separator</translation>
</message>
@@ -1415,7 +1411,7 @@ chrzÄ…szcz brzmi w trzcinie.</translation>
<context>
<name>ObjectNameDialog</name>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_taskmenu.cpp" line="+132"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_taskmenu.cpp" line="+162"/>
<source>Change Object Name</source>
<translation>Zmień nazwę obiektu</translation>
</message>
@@ -1483,52 +1479,16 @@ Nie ma już nic więcej. Powinieneś zabrać się do pracy.</numerusform>
</message>
</context>
<context>
- <name>qdesigner_internal::PluginDialog</name>
- <message>
- <location filename="../tools/designer/src/designer/plugindialog.cpp" line="+40"/>
- <source>Components</source>
- <translation>Komponenty</translation>
- </message>
+ <name>PluginDialog</name>
<message>
- <location line="+13"/>
- <location filename="../tools/designer/src/designer/plugindialog.ui"/>
+ <location filename="../tools/designer/src/lib/shared/plugindialog.ui"/>
<source>Plugin Information</source>
- <translation>Informacje o wtyczkach</translation>
- </message>
- <message>
- <location line="+53"/>
- <source>Qt Designer couldn&apos;t find any plugins</source>
- <translation>Qt Designer nie mógł znaleźć żadnej wtyczki</translation>
- </message>
- <message>
- <location line="+3"/>
- <source>Qt Designer found the following plugins</source>
- <translation>Qt Designer znalazł następujące wtyczki:</translation>
- </message>
- <message>
- <location filename="../tools/designer/src/designer/plugindialog.ui"/>
- <source>TextLabel</source>
- <translation>Etykieta</translation>
- </message>
- <message>
- <location filename="../tools/designer/src/designer/plugindialog.cpp" line="-52"/>
- <source>Refresh</source>
- <translation>Odśwież</translation>
+ <translation type="unfinished">Informacje o wtyczkach</translation>
</message>
<message>
- <location line="+1"/>
- <source>Scan for newly installed custom widget plugins.</source>
- <translation>Szukaj nowo zainstalowanych wtyczek z widżetami.</translation>
- </message>
- <message>
- <location line="+106"/>
- <source>New custom widget plugins have been found.</source>
- <translation>Znaleziono nową wtyczkę z widżetami.</translation>
- </message>
- <message>
- <location filename="../tools/designer/src/designer/plugindialog.ui"/>
+ <location/>
<source>1</source>
- <translation>1</translation>
+ <translation type="unfinished">1</translation>
</message>
</context>
<context>
@@ -1542,7 +1502,7 @@ Nie ma już nic więcej. Powinieneś zabrać się do pracy.</numerusform>
<context>
<name>PreviewConfigurationWidget</name>
<message>
- <location filename="../tools/designer/src/lib/shared/previewconfigurationwidget.cpp" line="+125"/>
+ <location filename="../tools/designer/src/lib/shared/previewconfigurationwidget.cpp" line="+155"/>
<source>Default</source>
<translation>Domyślny</translation>
</message>
@@ -1590,7 +1550,7 @@ Nie ma już nic więcej. Powinieneś zabrać się do pracy.</numerusform>
<context>
<name>PromotionModel</name>
<message>
- <location filename="../tools/designer/src/lib/shared/promotionmodel.cpp" line="+86"/>
+ <location filename="../tools/designer/src/lib/shared/promotionmodel.cpp" line="+116"/>
<source>Not used</source>
<extracomment>Usage of promoted widgets</extracomment>
<translation>Nie używana</translation>
@@ -1599,7 +1559,7 @@ Nie ma już nic więcej. Powinieneś zabrać się do pracy.</numerusform>
<context>
<name>Q3WizardContainer</name>
<message>
- <location filename="../tools/designer/src/plugins/widgets/q3wizard/q3wizard_container.cpp" line="+142"/>
+ <location filename="../tools/designer/src/plugins/widgets/q3wizard/q3wizard_container.cpp" line="+172"/>
<location line="+5"/>
<source>Page</source>
<translation>Strona</translation>
@@ -1608,7 +1568,7 @@ Nie ma już nic więcej. Powinieneś zabrać się do pracy.</numerusform>
<context>
<name>QAbstractFormBuilder</name>
<message>
- <location filename="../tools/designer/src/lib/uilib/abstractformbuilder.cpp" line="+176"/>
+ <location filename="../tools/designer/src/lib/uilib/abstractformbuilder.cpp" line="+206"/>
<source>Unexpected element &lt;%1&gt;</source>
<translation>Niespodziewany element &lt;%1&gt;</translation>
</message>
@@ -1655,7 +1615,7 @@ To wskazuje na niespójność w pliku ui.</translation>
<translation>Podczas przypisywania kolejności tabulacji: widżet &apos;%1&apos; nie został znaleziony.</translation>
</message>
<message>
- <location line="+734"/>
+ <location line="+749"/>
<source>Invalid QButtonGroup reference &apos;%1&apos; referenced by &apos;%2&apos;.</source>
<translation>Niepoprawny odnośnik QButtonGroup &apos;%1&apos;, użyty w &apos;%2&apos;.</translation>
</message>
@@ -1668,7 +1628,7 @@ To wskazuje na niespójność w pliku ui.</translation>
<context>
<name>QAxWidgetPlugin</name>
<message>
- <location filename="../tools/designer/src/plugins/activeqt/qaxwidgetplugin.cpp" line="+45"/>
+ <location filename="../tools/designer/src/plugins/activeqt/qaxwidgetplugin.cpp" line="+75"/>
<source>ActiveX control</source>
<translation>Kontrolka ActiveX</translation>
</message>
@@ -1681,7 +1641,7 @@ To wskazuje na niespójność w pliku ui.</translation>
<context>
<name>QAxWidgetTaskMenu</name>
<message>
- <location filename="../tools/designer/src/plugins/activeqt/qaxwidgettaskmenu.cpp" line="+89"/>
+ <location filename="../tools/designer/src/plugins/activeqt/qaxwidgettaskmenu.cpp" line="+119"/>
<source>Set Control</source>
<translation>Ustaw kontrolkÄ™</translation>
</message>
@@ -1704,7 +1664,7 @@ To wskazuje na niespójność w pliku ui.</translation>
<context>
<name>QCoreApplication</name>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_promotion.cpp" line="+53"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_promotion.cpp" line="+83"/>
<source>%1 is not a promoted class.</source>
<translation>%1 nie jest klasą zastępczą.</translation>
</message>
@@ -1754,7 +1714,7 @@ To wskazuje na niespójność w pliku ui.</translation>
<translation>Nie można ustawić pustego pliku nagłówkowego.</translation>
</message>
<message>
- <location filename="../tools/designer/src/lib/uilib/formscriptrunner.cpp" line="+58"/>
+ <location filename="../tools/designer/src/lib/uilib/formscriptrunner.cpp" line="+88"/>
<source>Exception at line %1: %2</source>
<translation>WyjÄ…tek w linii %1: %2</translation>
</message>
@@ -1774,7 +1734,7 @@ Skrypt: %3</translation>
<context>
<name>QDesigner</name>
<message>
- <location filename="../tools/designer/src/designer/qdesigner.cpp" line="+111"/>
+ <location filename="../tools/designer/src/designer/qdesigner.cpp" line="+141"/>
<source>%1 - warning</source>
<translation>%1 - ostrzeżenie</translation>
</message>
@@ -1792,12 +1752,12 @@ Skrypt: %3</translation>
<context>
<name>QDesignerActions</name>
<message>
- <location filename="../tools/designer/src/designer/qdesigner_actions.cpp" line="+459"/>
+ <location filename="../tools/designer/src/designer/qdesigner_actions.cpp" line="+488"/>
<source>Clear &amp;Menu</source>
<translation>Wyczyść &amp;menu</translation>
</message>
<message>
- <location line="-297"/>
+ <location line="-300"/>
<source>&amp;Quit</source>
<translation>Za&amp;kończ</translation>
</message>
@@ -1858,17 +1818,17 @@ Skrypt: %3</translation>
</message>
<message>
<location line="+6"/>
- <location line="+598"/>
+ <location line="+601"/>
<source>About Qt Designer</source>
<translation>Informacje o Qt Designer</translation>
</message>
<message>
- <location line="-592"/>
+ <location line="-595"/>
<source>About Qt</source>
<translation>Informacje o Qt</translation>
</message>
<message>
- <location line="+41"/>
+ <location line="+44"/>
<source>&amp;Recent Forms</source>
<translation>Os&amp;tatnio edytowane formularze</translation>
</message>
@@ -1909,19 +1869,19 @@ Czy chcesz spróbować ponownie lub zmienić nazwę pliku?</translation>
<translation>Wybierz nowy plik</translation>
</message>
<message>
- <location line="-691"/>
+ <location line="-694"/>
<source>%1 already exists.
Do you want to replace it?</source>
<translation>%1 już istnieje.
Czy chcesz go zastąpić?</translation>
</message>
<message>
- <location line="+960"/>
+ <location line="+925"/>
<source>&amp;Close Preview</source>
<translation>Za&amp;mknij podglÄ…d</translation>
</message>
<message>
- <location line="-919"/>
+ <location line="-884"/>
<source>Preferences...</source>
<translation>Ustawienia...</translation>
</message>
@@ -1931,19 +1891,19 @@ Czy chcesz go zastąpić?</translation>
<translation>CTRL+SHIFT+S</translation>
</message>
<message>
- <location line="+313"/>
+ <location line="+316"/>
<location line="+37"/>
<location line="+160"/>
<source>Designer UI files (*.%1);;All Files (*)</source>
<translation>Pliki Designer UI (*.%1);;Wszystkie pliki (*)</translation>
</message>
<message>
- <location line="-638"/>
+ <location line="-641"/>
<source>Saved %1.</source>
<translation>Formularz %1 zachowany pomyślnie.</translation>
</message>
<message>
- <location line="+624"/>
+ <location line="+627"/>
<source>Read error</source>
<translation>BÅ‚Ä…d odczytu</translation>
</message>
@@ -1975,7 +1935,7 @@ Czy chcesz zaktualizować położenie pliku lub wygenerować nowy formularz?</tr
<translation>Nie można zapisać pliku</translation>
</message>
<message>
- <location line="-696"/>
+ <location line="-699"/>
<source>&amp;New...</source>
<translation>&amp;Nowy...</translation>
</message>
@@ -2006,12 +1966,12 @@ Czy chcesz zaktualizować położenie pliku lub wygenerować nowy formularz?</tr
</message>
<message>
<location line="+1"/>
- <location line="+931"/>
+ <location line="+896"/>
<source>&amp;Close</source>
<translation>Za&amp;mknij</translation>
</message>
<message>
- <location line="-930"/>
+ <location line="-895"/>
<source>Save &amp;Image...</source>
<translation>Zachowaj o&amp;brazek...</translation>
</message>
@@ -2026,18 +1986,18 @@ Czy chcesz zaktualizować położenie pliku lub wygenerować nowy formularz?</tr
<translation>Pokaż &amp;kod...</translation>
</message>
<message>
- <location line="+416"/>
+ <location line="+419"/>
<location line="+248"/>
<source>Save Form As</source>
<translation>Zachowaj formularz jako</translation>
</message>
<message>
- <location line="+467"/>
+ <location line="+429"/>
<source>Preview failed</source>
<translation>Nie można utworzyć podglądu</translation>
</message>
<message>
- <location line="-613"/>
+ <location line="-575"/>
<source>Code generation failed</source>
<translation>Nie można wygenerować kodu</translation>
</message>
@@ -2051,7 +2011,7 @@ Powód:%2
Czy chcesz spróbować ponownie?</translation>
</message>
<message>
- <location line="+277"/>
+ <location line="+239"/>
<location line="+23"/>
<source>The backup file %1 could not be written.</source>
<translation>Nie można zapisać pliku zapasowego %1.</translation>
@@ -2083,13 +2043,13 @@ Czy chcesz spróbować ponownie?</translation>
<translation>Nie można zapisać pliku %1.</translation>
</message>
<message>
- <location line="-336"/>
- <location line="+66"/>
+ <location line="-298"/>
+ <location line="+34"/>
<source>Assistant</source>
<translation>Assistant</translation>
</message>
<message>
- <location line="+265"/>
+ <location line="+259"/>
<source>Saved image %1.</source>
<translation>Zachowano obrazek %1.</translation>
</message>
@@ -2099,12 +2059,12 @@ Czy chcesz spróbować ponownie?</translation>
<translation>Zamknij wszystkie formularze aby umożliwić wczytanie dodatkowych czcionek.</translation>
</message>
<message>
- <location line="+49"/>
+ <location line="+52"/>
<source>Printed %1.</source>
<translation>Wydrukowano %1.</translation>
</message>
<message>
- <location line="-1180"/>
+ <location line="-1148"/>
<source>ALT+CTRL+S</source>
<translation>ALT+CTRL+S</translation>
</message>
@@ -2112,7 +2072,7 @@ Czy chcesz spróbować ponownie?</translation>
<context>
<name>QDesignerAppearanceOptionsPage</name>
<message>
- <location filename="../tools/designer/src/designer/qdesigner_appearanceoptions.cpp" line="+93"/>
+ <location filename="../tools/designer/src/designer/qdesigner_appearanceoptions.cpp" line="+138"/>
<source>Appearance</source>
<extracomment>Tab in preferences dialog</extracomment>
<translation>WyglÄ…d</translation>
@@ -2121,7 +2081,7 @@ Czy chcesz spróbować ponownie?</translation>
<context>
<name>QDesignerAppearanceOptionsWidget</name>
<message>
- <location line="-39"/>
+ <location line="-53"/>
<source>Docked Window</source>
<translation>Okna dokowalne</translation>
</message>
@@ -2131,7 +2091,7 @@ Czy chcesz spróbować ponownie?</translation>
<translation>Wiele okien głównych</translation>
</message>
<message>
- <location line="+3"/>
+ <location line="+5"/>
<source>Toolwindow Font</source>
<translation>Czcionka okna narzędzi</translation>
</message>
@@ -2149,7 +2109,7 @@ Czy chcesz spróbować ponownie?</translation>
<translation>Ustaw kontrolkÄ™</translation>
</message>
<message>
- <location filename="../tools/designer/src/plugins/activeqt/qdesigneraxwidget.cpp" line="+149"/>
+ <location filename="../tools/designer/src/plugins/activeqt/qdesigneraxwidget.cpp" line="+179"/>
<source>Control loaded</source>
<translation>Kontrolka wczytana</translation>
</message>
@@ -2162,7 +2122,7 @@ Czy chcesz spróbować ponownie?</translation>
<context>
<name>QDesignerFormBuilder</name>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_formbuilder.cpp" line="+58"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_formbuilder.cpp" line="+88"/>
<source>Script errors occurred:</source>
<translation>Wystąpiły błędy w skrypcie:</translation>
</message>
@@ -2180,7 +2140,7 @@ Czy chcesz spróbować ponownie?</translation>
<context>
<name>QDesignerFormWindow</name>
<message>
- <location filename="../tools/designer/src/designer/qdesigner_formwindow.cpp" line="+187"/>
+ <location filename="../tools/designer/src/designer/qdesigner_formwindow.cpp" line="+217"/>
<source>%1 - %2[*]</source>
<translation>%1 - %2[*]</translation>
</message>
@@ -2203,7 +2163,7 @@ Czy chcesz spróbować ponownie?</translation>
<context>
<name>QDesignerMenu</name>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_menu.cpp" line="-1154"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_menu.cpp" line="-1160"/>
<source>Type Here</source>
<translation>Wpisz tutaj</translation>
</message>
@@ -2213,7 +2173,7 @@ Czy chcesz spróbować ponownie?</translation>
<translation>Dodaj separator</translation>
</message>
<message>
- <location line="+373"/>
+ <location line="+379"/>
<source>Remove action &apos;%1&apos;</source>
<translation>Usuń akcję &apos;%1&apos;</translation>
</message>
@@ -2265,7 +2225,7 @@ Czy chcesz spróbować ponownie?</translation>
<context>
<name>QDesignerPluginManager</name>
<message>
- <location filename="../tools/designer/src/lib/shared/pluginmanager.cpp" line="+197"/>
+ <location filename="../tools/designer/src/lib/shared/pluginmanager.cpp" line="+249"/>
<source>An XML error was encountered when parsing the XML of the custom widget %1: %2</source>
<translation>Wystąpił błąd XML podczas przetwarzania kodu XML dla własnego widżetu %1: %2</translation>
</message>
@@ -2288,7 +2248,7 @@ Czy chcesz spróbować ponownie?</translation>
<context>
<name>QDesignerPropertySheet</name>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_propertysheet.cpp" line="+717"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_propertysheet.cpp" line="+747"/>
<source>Dynamic Properties</source>
<translation>Dynamiczne właściwości</translation>
</message>
@@ -2301,13 +2261,13 @@ Czy chcesz spróbować ponownie?</translation>
<translation>Rozmieszczenie typu &apos;%1&apos; nie jest obsługiwane. Będzie ono zastąpione siatką.</translation>
</message>
<message>
- <location line="+331"/>
+ <location line="+342"/>
<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 type="unfinished"></translation>
</message>
<message>
- <location line="+598"/>
+ <location line="+599"/>
<source>Unexpected element &lt;%1&gt;</source>
<extracomment>Parsing clipboard contents</extracomment>
<translation>Niespodziewany element &lt;%1&gt;</translation>
@@ -2328,7 +2288,7 @@ Container pages should only be added by specifying them in XML returned by the d
<context>
<name>QDesignerSharedSettings</name>
<message>
- <location filename="../tools/designer/src/lib/shared/shared_settings.cpp" line="+53"/>
+ <location filename="../tools/designer/src/lib/shared/shared_settings.cpp" line="+83"/>
<source>The template path %1 could not be created.</source>
<translation>Nie można utworzyć ścieżki %1 dla szablonów.</translation>
</message>
@@ -2341,7 +2301,7 @@ Container pages should only be added by specifying them in XML returned by the d
<context>
<name>QDesignerToolWindow</name>
<message>
- <location filename="../tools/designer/src/designer/qdesigner_toolwindow.cpp" line="+160"/>
+ <location filename="../tools/designer/src/designer/qdesigner_toolwindow.cpp" line="+190"/>
<source>Property Editor</source>
<translation>Edytor właściwości</translation>
</message>
@@ -2374,7 +2334,7 @@ Container pages should only be added by specifying them in XML returned by the d
<context>
<name>QDesignerWidgetBox</name>
<message>
- <location filename="../tools/designer/src/components/widgetbox/widgetboxtreewidget.cpp" line="+318"/>
+ <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>Wystąpił błąd w linii %1 w %2: %3</translation>
</message>
@@ -2397,7 +2357,7 @@ Container pages should only be added by specifying them in XML returned by the d
<context>
<name>QDesignerWorkbench</name>
<message>
- <location filename="../tools/designer/src/designer/qdesigner_workbench.cpp" line="+169"/>
+ <location filename="../tools/designer/src/designer/qdesigner_workbench.cpp" line="+199"/>
<source>&amp;File</source>
<translation>&amp;Plik</translation>
</message>
@@ -2472,7 +2432,7 @@ Container pages should only be added by specifying them in XML returned by the d
<translation>Informacja o kopiach zapasowych</translation>
</message>
<message>
- <location line="+113"/>
+ <location line="+112"/>
<source>The file &lt;b&gt;%1&lt;/b&gt; could not be opened.</source>
<translation>Nie można otworzyć pliku &lt;b&gt;%1&lt;/b&gt;.</translation>
</message>
@@ -2482,7 +2442,7 @@ Container pages should only be added by specifying them in XML returned by the d
<translation>Plik &lt;b&gt;%1&lt;/b&gt; nie jest poprawnym plikiem Designer&apos;a.</translation>
</message>
<message numerus="yes">
- <location line="-260"/>
+ <location line="-259"/>
<source>There are %n forms with unsaved changes. Do you want to review these changes before quitting?</source>
<translation>
<numerusform>Jest %n formularz z niezachowanymi zmianami. Czy chcesz przejrzeć zmiany przed wyjściem z programu?</numerusform>
@@ -2494,7 +2454,7 @@ Container pages should only be added by specifying them in XML returned by the d
<context>
<name>QFormBuilder</name>
<message>
- <location filename="../tools/designer/src/lib/uilib/formbuilder.cpp" line="+130"/>
+ <location filename="../tools/designer/src/lib/uilib/formbuilder.cpp" line="+160"/>
<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>Pusta nazwa klasy została przekazana do %1 (nazwa obiektu: &apos;%2&apos;).</translation>
@@ -2515,7 +2475,7 @@ Container pages should only be added by specifying them in XML returned by the d
<translation>Typ rozmieszczenia &apos;%1&apos; nie jest obsługiwany.</translation>
</message>
<message>
- <location filename="../tools/designer/src/lib/uilib/properties.cpp" line="+76"/>
+ <location filename="../tools/designer/src/lib/uilib/properties.cpp" line="+106"/>
<source>The set-type property %1 could not be read.</source>
<translation>Nie można odczytać właściwości %1 typu zbiór.</translation>
</message>
@@ -2535,7 +2495,7 @@ Container pages should only be added by specifying them in XML returned by the d
<translation>Nie można zapisać właściwości %1. Typ %2 nie jest jeszcze obsługiwany.</translation>
</message>
<message>
- <location filename="../tools/designer/src/lib/uilib/properties_p.h" line="+102"/>
+ <location filename="../tools/designer/src/lib/uilib/properties_p.h" line="+132"/>
<source>The enumeration-value &apos;%1&apos; is invalid. The default value &apos;%2&apos; will be used instead.</source>
<translation>Niepoprawna wartość &quot;%1&quot; typu wyliczeniowego. Użyta będzie domyślna wartość &quot;%2&quot;.</translation>
</message>
@@ -2548,7 +2508,7 @@ Container pages should only be added by specifying them in XML returned by the d
<context>
<name>QStackedWidgetEventFilter</name>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_stackedbox.cpp" line="+164"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_stackedbox.cpp" line="+194"/>
<source>Previous Page</source>
<translation>Poprzednia strona</translation>
</message>
@@ -2609,7 +2569,7 @@ Container pages should only be added by specifying them in XML returned by the d
<context>
<name>QTabWidgetEventFilter</name>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_tabwidget.cpp" line="+59"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_tabwidget.cpp" line="+89"/>
<source>Delete</source>
<translation>Usuń</translation>
</message>
@@ -2637,7 +2597,7 @@ Container pages should only be added by specifying them in XML returned by the d
<context>
<name>QToolBoxHelper</name>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_toolbox.cpp" line="+34"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_toolbox.cpp" line="+64"/>
<source>Delete Page</source>
<translation>Usuń stronę</translation>
</message>
@@ -2675,7 +2635,7 @@ Container pages should only be added by specifying them in XML returned by the d
<context>
<name>QtBoolEdit</name>
<message>
- <location filename="../tools/shared/qtpropertybrowser/qtpropertybrowserutils.cpp" line="+198"/>
+ <location filename="../tools/shared/qtpropertybrowser/qtpropertybrowserutils.cpp" line="+226"/>
<location line="+10"/>
<location line="+25"/>
<source>True</source>
@@ -2691,7 +2651,7 @@ Container pages should only be added by specifying them in XML returned by the d
<context>
<name>QtBoolPropertyManager</name>
<message>
- <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="+1469"/>
+ <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="+1477"/>
<source>True</source>
<translation>Prawda</translation>
</message>
@@ -2704,7 +2664,7 @@ Container pages should only be added by specifying them in XML returned by the d
<context>
<name>QtCharEdit</name>
<message>
- <location filename="../tools/shared/qtpropertybrowser/qteditorfactory.cpp" line="+1573"/>
+ <location filename="../tools/shared/qtpropertybrowser/qteditorfactory.cpp" line="+1601"/>
<source>Clear Char</source>
<translation>Wyczyść znak</translation>
</message>
@@ -2720,7 +2680,7 @@ Container pages should only be added by specifying them in XML returned by the d
<context>
<name>QtColorPropertyManager</name>
<message>
- <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="+4769"/>
+ <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="+4777"/>
<source>Red</source>
<translation>Czerwień</translation>
</message>
@@ -2900,7 +2860,7 @@ Container pages should only be added by specifying them in XML returned by the d
<context>
<name>QtGradientEditor</name>
<message>
- <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.cpp" line="+405"/>
+ <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.cpp" line="+435"/>
<source>Start X</source>
<translation>PoczÄ…tek X</translation>
</message>
@@ -3175,7 +3135,7 @@ Container pages should only be added by specifying them in XML returned by the d
<context>
<name>QtGradientStopsWidget</name>
<message>
- <location filename="../tools/shared/qtgradienteditor/qtgradientstopswidget.cpp" line="+919"/>
+ <location filename="../tools/shared/qtgradienteditor/qtgradientstopswidget.cpp" line="+949"/>
<source>New Stop</source>
<translation>Nowy punkt</translation>
</message>
@@ -3213,7 +3173,7 @@ Container pages should only be added by specifying them in XML returned by the d
<context>
<name>QtGradientView</name>
<message>
- <location filename="../tools/shared/qtgradienteditor/qtgradientview.cpp" line="+77"/>
+ <location filename="../tools/shared/qtgradienteditor/qtgradientview.cpp" line="+107"/>
<source>Grad</source>
<translation>Grad</translation>
</message>
@@ -3260,7 +3220,7 @@ Container pages should only be added by specifying them in XML returned by the d
<context>
<name>QtGradientViewDialog</name>
<message>
- <location filename="../tools/shared/qtgradienteditor/qtgradientviewdialog.h" line="+32"/>
+ <location filename="../tools/shared/qtgradienteditor/qtgradientviewdialog.h" line="+62"/>
<location filename="../tools/shared/qtgradienteditor/qtgradientviewdialog.ui"/>
<source>Select Gradient</source>
<translation>Wybierz gradient</translation>
@@ -3277,7 +3237,7 @@ Container pages should only be added by specifying them in XML returned by the d
<context>
<name>QtLocalePropertyManager</name>
<message>
- <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="-3553"/>
+ <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="-3561"/>
<source>%1, %2</source>
<translation>%1, %2</translation>
</message>
@@ -3344,22 +3304,22 @@ Container pages should only be added by specifying them in XML returned by the d
<context>
<name>QtRectFPropertyManager</name>
<message>
- <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="+1705"/>
+ <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="+1716"/>
<source>[(%1, %2), %3 x %4]</source>
<translation>[(%1, %2), %3 x %4]</translation>
</message>
<message>
- <location line="+155"/>
+ <location line="+156"/>
<source>X</source>
<translation>X</translation>
</message>
<message>
- <location line="+9"/>
+ <location line="+8"/>
<source>Y</source>
<translation>Y</translation>
</message>
<message>
- <location line="+9"/>
+ <location line="+8"/>
<source>Width</source>
<translation>Szerokość</translation>
</message>
@@ -3372,22 +3332,22 @@ Container pages should only be added by specifying them in XML returned by the d
<context>
<name>QtRectPropertyManager</name>
<message>
- <location line="-610"/>
+ <location line="-614"/>
<source>[(%1, %2), %3 x %4]</source>
<translation>[(%1, %2), %3 x %4]</translation>
</message>
<message>
- <location line="+119"/>
+ <location line="+120"/>
<source>X</source>
<translation>X</translation>
</message>
<message>
- <location line="+8"/>
+ <location line="+7"/>
<source>Y</source>
<translation>Y</translation>
</message>
<message>
- <location line="+8"/>
+ <location line="+7"/>
<source>Width</source>
<translation>Szerokość</translation>
</message>
@@ -3400,7 +3360,7 @@ Container pages should only be added by specifying them in XML returned by the d
<context>
<name>QtResourceEditorDialog</name>
<message>
- <location filename="../tools/designer/src/lib/shared/qtresourceeditordialog.cpp" line="+46"/>
+ <location filename="../tools/designer/src/lib/shared/qtresourceeditordialog.cpp" line="+76"/>
<source>%1 already exists.
Do you want to replace it?</source>
<translation>%1 już istnieje.
@@ -3412,7 +3372,7 @@ Czy chcesz go zastąpić?</translation>
<translation>Plik nie wyglÄ…da na plik z zasobami; znaleziono element &apos;%1&apos; podczas gdy oczekiwano elementu &apos;%2&apos;.</translation>
</message>
<message>
- <location line="+900"/>
+ <location line="+902"/>
<source>%1 [read-only]</source>
<translation>%1 - [tylko do odczytu]</translation>
</message>
@@ -3686,7 +3646,7 @@ jako:
<context>
<name>QtResourceView</name>
<message>
- <location filename="../tools/designer/src/lib/shared/qtresourceview.cpp" line="+404"/>
+ <location filename="../tools/designer/src/lib/shared/qtresourceview.cpp" line="+435"/>
<source>Size: %1 x %2
%3</source>
<translation>Rozmiar: %1 x %2
@@ -3719,7 +3679,7 @@ jako:
<context>
<name>QtSizeFPropertyManager</name>
<message>
- <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="-532"/>
+ <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="-537"/>
<source>%1 x %2</source>
<translation>%1 x %2</translation>
</message>
@@ -3737,12 +3697,18 @@ jako:
<context>
<name>QtSizePolicyPropertyManager</name>
<message>
- <location line="+1707"/>
+ <location line="+1719"/>
+ <location line="+1"/>
+ <source>&lt;Invalid&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
<source>[%1, %2, %3, %4]</source>
<translation>[%1, %2, %3, %4]</translation>
</message>
<message>
- <location line="+49"/>
+ <location line="+45"/>
<source>Horizontal Policy</source>
<translation>Strategia pozioma</translation>
</message>
@@ -3765,7 +3731,7 @@ jako:
<context>
<name>QtSizePropertyManager</name>
<message>
- <location line="-2288"/>
+ <location line="-2298"/>
<source>%1 x %2</source>
<translation>%1 x %2</translation>
</message>
@@ -3783,7 +3749,7 @@ jako:
<context>
<name>QtToolBarDialog</name>
<message>
- <location filename="../tools/shared/qttoolbardialog/qttoolbardialog.cpp" line="+1759"/>
+ <location filename="../tools/shared/qttoolbardialog/qttoolbardialog.cpp" line="+1789"/>
<source>&lt; S E P A R A T O R &gt;</source>
<translation>&lt; S E P A R A T O R &gt;</translation>
</message>
@@ -3891,7 +3857,7 @@ jako:
<context>
<name>QtTreePropertyBrowser</name>
<message>
- <location filename="../tools/shared/qtpropertybrowser/qttreepropertybrowser.cpp" line="+407"/>
+ <location filename="../tools/shared/qtpropertybrowser/qttreepropertybrowser.cpp" line="+442"/>
<source>Property</source>
<translation>Właściwość</translation>
</message>
@@ -3904,7 +3870,7 @@ jako:
<context>
<name>SaveFormAsTemplate</name>
<message>
- <location filename="../tools/designer/src/designer/saveformastemplate.cpp" line="+42"/>
+ <location filename="../tools/designer/src/designer/saveformastemplate.cpp" line="+72"/>
<source>Add path...</source>
<translation>Dodaj ścieżkę...</translation>
</message>
@@ -3969,7 +3935,7 @@ Czy chcesz nadpisać szablon?</translation>
<context>
<name>ScriptErrorDialog</name>
<message>
- <location filename="../tools/designer/src/lib/shared/scripterrordialog.cpp" line="+33"/>
+ <location filename="../tools/designer/src/lib/shared/scripterrordialog.cpp" line="+63"/>
<source>An error occurred while running the scripts for &quot;%1&quot;:
</source>
<translation>Wystąpił błąd podczas uruchamiana skryptu dla &quot;%1&quot;:
@@ -3988,11 +3954,21 @@ Czy chcesz nadpisać szablon?</translation>
<source>Select signal</source>
<translation>Wybierz sygnał</translation>
</message>
+ <message>
+ <location/>
+ <source>signal</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location/>
+ <source>class</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>SignalSlotConnection</name>
<message>
- <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditor.cpp" line="-311"/>
+ <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditor.cpp" line="-358"/>
<source>SENDER(%1), SIGNAL(%2), RECEIVER(%3), SLOT(%4)</source>
<translation>NADAJNIK(%1), SYGNAÅ(%2), ODBIORNIK(%3), SLOT(%4)</translation>
</message>
@@ -4033,7 +4009,7 @@ Czy chcesz nadpisać szablon?</translation>
<context>
<name>Spacer</name>
<message>
- <location filename="../tools/designer/src/lib/shared/spacer_widget.cpp" line="+245"/>
+ <location filename="../tools/designer/src/lib/shared/spacer_widget.cpp" line="+275"/>
<source>Horizontal Spacer &apos;%1&apos;, %2 x %3</source>
<translation>Poziomy dystans &apos;%1&apos;, %2 x %3</translation>
</message>
@@ -4046,7 +4022,7 @@ Czy chcesz nadpisać szablon?</translation>
<context>
<name>TemplateOptionsPage</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/templateoptionspage.cpp" line="+126"/>
+ <location filename="../tools/designer/src/components/formeditor/templateoptionspage.cpp" line="+156"/>
<source>Template Paths</source>
<extracomment>Tab in preferences dialog</extracomment>
<translation>Ścieżki z szablonami</translation>
@@ -4088,29 +4064,27 @@ Czy chcesz nadpisać szablon?</translation>
<context>
<name>VersionDialog</name>
<message>
- <location filename="../tools/designer/src/designer/versiondialog.cpp" line="+146"/>
+ <location filename="../tools/designer/src/designer/versiondialog.cpp" line="+172"/>
<source>Qt Designer</source>
<translation>Qt Designer</translation>
</message>
<message>
- <location line="-5"/>
+ <location line="-1"/>
<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;Wersja %2</translation>
</message>
<message>
- <location line="+2"/>
<source> Open Source Edition</source>
- <translation> Wydanie Open Source</translation>
+ <translation type="obsolete"> Wydanie Open Source</translation>
</message>
<message>
- <location line="+4"/>
+ <location line="+2"/>
<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 jest aplikacją umożliwiającą projektowanie interfejsów graficznych użytkownika w aplikacjach korzystających z Qt.&lt;br/&gt;</translation>
</message>
<message>
- <location line="+16"/>
<source>This program is licensed to you under the terms of the Qt Commercial License Agreement. For details, see the file LICENSE that came with this software distribution.&lt;br/&gt;</source>
- <translation type="unfinished">Ten program wydany jest na licencji Qt Commercial. Aby zapoznać się ze szczegółami licencji, proszę sprawdzić plik LICENSE, który dołączony jest do pakietu Qt.&lt;br/&gt;</translation>
+ <translation type="obsolete">Ten program wydany jest na licencji Qt Commercial. Aby zapoznać się ze szczegółami licencji, proszę sprawdzić plik LICENSE, który dołączony jest do pakietu Qt.&lt;br/&gt;</translation>
</message>
<message>
<location line="+5"/>
@@ -4118,20 +4092,14 @@ Czy chcesz nadpisać szablon?</translation>
<translation type="unfinished">%1&lt;br/&gt;%2&lt;br/&gt;Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). Wszystkie prawa zastrzeżone.&lt;br/&gt;&lt;br/&gt;Program dostarczony jest BEZ ŻADNYCH GWARANCJI.&lt;br/&gt; </translation>
</message>
<message>
- <location line="-9"/>
- <source>This program is licensed to you under the terms of the Qt %1 License Agreement. For details, see the license file that came with this software distribution.&lt;br/&gt;</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location line="-8"/>
<source>This version of Qt Designer is part of the Qt Open Source Edition, for use in the development of Open Source applications. Qt is a comprehensive C++ framework for cross-platform application development.&lt;br/&gt;&lt;br/&gt;You need a commercial Qt license for development of proprietary (closed source) applications. Please see &lt;a href=&quot;http://qtsoftware.com/company/about/businessmodel&quot;&gt;http://qtsoftware.com/company/about/businessmodel.html&lt;/a&gt; for an overview of Qt licensing.&lt;br/&gt;</source>
- <translation>Ta wersja Qt Designer jest częścią wydania Qt Open Source, przeznaczonego do tworzenia aplikacji Open Source. Qt zawiera obszerny zestaw bibliotek wykorzystywanych do pisania przenośnych aplikacji.&lt;br/&gt;&lt;br/&gt;Aby móc tworzyć przy pomocy Qt własne aplikacje bez publikowania kodu (closed source) potrzebujesz wydania komercyjnego. Opis sposobów licencjonowania Qt znajduje się na stronie &lt;a href=&quot;http://qtsoftware.com/company/model.html&quot;&gt;qtsoftware.com/company/model.html&lt;/a&gt;.&lt;br/&gt;</translation>
+ <translation type="obsolete">Ta wersja Qt Designer jest częścią wydania Qt Open Source, przeznaczonego do tworzenia aplikacji Open Source. Qt zawiera obszerny zestaw bibliotek wykorzystywanych do pisania przenośnych aplikacji.&lt;br/&gt;&lt;br/&gt;Aby móc tworzyć przy pomocy Qt własne aplikacje bez publikowania kodu (closed source) potrzebujesz wydania komercyjnego. Opis sposobów licencjonowania Qt znajduje się na stronie &lt;a href=&quot;http://qtsoftware.com/company/model.html&quot;&gt;qtsoftware.com/company/model.html&lt;/a&gt;.&lt;br/&gt;</translation>
</message>
</context>
<context>
<name>WidgetDataBase</name>
<message>
- <location filename="../tools/designer/src/lib/shared/widgetdatabase.cpp" line="+786"/>
+ <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>Plik zawiera własny widżet &apos;%1&apos; którego klasa bazowa (%2) różni się od bieżącego elementu w bazie danych z widżetami (%3). Baza danych z widżetami została niezmieniona.</translation>
</message>
@@ -4139,22 +4107,22 @@ Czy chcesz nadpisać szablon?</translation>
<context>
<name>qdesigner_internal::ActionEditor</name>
<message>
- <location filename="../tools/designer/src/lib/shared/actioneditor.cpp" line="+111"/>
+ <location filename="../tools/designer/src/lib/shared/actioneditor.cpp" line="+143"/>
<source>Actions</source>
<translation>Akcje</translation>
</message>
<message>
- <location line="-15"/>
+ <location line="-16"/>
<source>New...</source>
<translation>Nowa...</translation>
</message>
<message>
- <location line="+6"/>
+ <location line="+7"/>
<source>Delete</source>
<translation>Usuń</translation>
</message>
<message>
- <location line="+305"/>
+ <location line="+307"/>
<source>New action</source>
<translation>Nowa akcja</translation>
</message>
@@ -4164,12 +4132,17 @@ Czy chcesz nadpisać szablon?</translation>
<translation>Edytuj akcjÄ™</translation>
</message>
<message>
- <location line="-408"/>
+ <location line="-411"/>
<source>Edit...</source>
<translation>Edytuj...</translation>
</message>
<message>
<location line="+1"/>
+ <source>Go to slot...</source>
+ <translation type="unfinished">Przejdź do slotu...</translation>
+ </message>
+ <message>
+ <location line="+1"/>
<source>Copy</source>
<translation>Skopiuj</translation>
</message>
@@ -4189,7 +4162,7 @@ Czy chcesz nadpisać szablon?</translation>
<translation>Zaznacz wszystko</translation>
</message>
<message>
- <location line="+52"/>
+ <location line="+54"/>
<source>Configure Action Editor</source>
<translation>Skonfiguruj edytor akcji</translation>
</message>
@@ -4204,7 +4177,7 @@ Czy chcesz nadpisać szablon?</translation>
<translation>Szczegółowy widok</translation>
</message>
<message>
- <location line="+406"/>
+ <location line="+412"/>
<source>Remove actions</source>
<translation>Usuń akcje</translation>
</message>
@@ -4214,7 +4187,7 @@ Czy chcesz nadpisać szablon?</translation>
<translation>Usuń akcję &apos;%1&apos;</translation>
</message>
<message>
- <location line="+183"/>
+ <location line="+186"/>
<source>Used In</source>
<translation>Użyta w</translation>
</message>
@@ -4222,7 +4195,7 @@ Czy chcesz nadpisać szablon?</translation>
<context>
<name>qdesigner_internal::ActionModel</name>
<message>
- <location filename="../tools/designer/src/lib/shared/actionrepository.cpp" line="+64"/>
+ <location filename="../tools/designer/src/lib/shared/actionrepository.cpp" line="+95"/>
<source>Name</source>
<translation>Nazwa</translation>
</message>
@@ -4255,7 +4228,7 @@ Czy chcesz nadpisać szablon?</translation>
<context>
<name>qdesigner_internal::BuddyEditor</name>
<message>
- <location filename="../tools/designer/src/components/buddyeditor/buddyeditor.cpp" line="+235"/>
+ <location filename="../tools/designer/src/components/buddyeditor/buddyeditor.cpp" line="+265"/>
<source>Add buddy</source>
<translation>Dodaj skojarzonÄ… etykietÄ™</translation>
</message>
@@ -4291,7 +4264,7 @@ Czy chcesz nadpisać szablon?</translation>
<context>
<name>qdesigner_internal::BuddyEditorPlugin</name>
<message>
- <location filename="../tools/designer/src/components/buddyeditor/buddyeditor_plugin.cpp" line="+47"/>
+ <location filename="../tools/designer/src/components/buddyeditor/buddyeditor_plugin.cpp" line="+77"/>
<source>Edit Buddies</source>
<translation>Edytuj skojarzone etykiety</translation>
</message>
@@ -4299,7 +4272,7 @@ Czy chcesz nadpisać szablon?</translation>
<context>
<name>qdesigner_internal::BuddyEditorTool</name>
<message>
- <location filename="../tools/designer/src/components/buddyeditor/buddyeditor_tool.cpp" line="+30"/>
+ <location filename="../tools/designer/src/components/buddyeditor/buddyeditor_tool.cpp" line="+60"/>
<source>Edit Buddies</source>
<translation>Edytuj skojarzone etykiety</translation>
</message>
@@ -4353,7 +4326,7 @@ Czy chcesz nadpisać szablon?</translation>
<context>
<name>qdesigner_internal::CodeDialog</name>
<message>
- <location filename="../tools/designer/src/lib/shared/codedialog.cpp" line="+69"/>
+ <location filename="../tools/designer/src/lib/shared/codedialog.cpp" line="+99"/>
<source>Save...</source>
<translation>Zachowaj...</translation>
</message>
@@ -4411,7 +4384,7 @@ Czy chcesz nadpisać szablon?</translation>
<context>
<name>qdesigner_internal::ColorAction</name>
<message>
- <location filename="../tools/designer/src/lib/shared/richtexteditor.cpp" line="+220"/>
+ <location filename="../tools/designer/src/lib/shared/richtexteditor.cpp" line="+250"/>
<source>Text Color</source>
<translation>Color tekstu</translation>
</message>
@@ -4419,7 +4392,7 @@ Czy chcesz nadpisać szablon?</translation>
<context>
<name>qdesigner_internal::ComboBoxTaskMenu</name>
<message>
- <location filename="../tools/designer/src/components/taskmenu/combobox_taskmenu.cpp" line="+42"/>
+ <location filename="../tools/designer/src/components/taskmenu/combobox_taskmenu.cpp" line="+72"/>
<source>Edit Items...</source>
<translation>Edytuj elementy...</translation>
</message>
@@ -4458,7 +4431,7 @@ Czy chcesz nadpisać szablon?</translation>
<context>
<name>qdesigner_internal::ConnectionModel</name>
<message>
- <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditorwindow.cpp" line="-470"/>
+ <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditorwindow.cpp" line="-465"/>
<source>Sender</source>
<translation>Nadajnik</translation>
</message>
@@ -4478,7 +4451,7 @@ Czy chcesz nadpisać szablon?</translation>
<translation>Slot</translation>
</message>
<message>
- <location line="+97"/>
+ <location line="+90"/>
<source>&lt;sender&gt;</source>
<translation>&lt;nadajnik&gt;</translation>
</message>
@@ -4511,7 +4484,7 @@ Czy chcesz nadpisać szablon?</translation>
<context>
<name>qdesigner_internal::ContainerWidgetTaskMenu</name>
<message>
- <location filename="../tools/designer/src/components/taskmenu/containerwidget_taskmenu.cpp" line="+82"/>
+ <location filename="../tools/designer/src/components/taskmenu/containerwidget_taskmenu.cpp" line="+112"/>
<source>Insert Page Before Current Page</source>
<translation>Wstaw stronę przed bieżącą stroną</translation>
</message>
@@ -4574,7 +4547,7 @@ Czy chcesz nadpisać szablon?</translation>
<context>
<name>qdesigner_internal::DesignerPropertyManager</name>
<message>
- <location filename="../tools/designer/src/components/propertyeditor/designerpropertymanager.cpp" line="+614"/>
+ <location filename="../tools/designer/src/components/propertyeditor/designerpropertymanager.cpp" line="+644"/>
<location line="+6"/>
<source>AlignLeft</source>
<translation>Wyrównanie do lewej</translation>
@@ -4701,7 +4674,7 @@ Czy chcesz nadpisać szablon?</translation>
<context>
<name>qdesigner_internal::DeviceProfileDialog</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/deviceprofiledialog.cpp" line="+33"/>
+ <location filename="../tools/designer/src/components/formeditor/deviceprofiledialog.cpp" line="+63"/>
<source>Device Profiles (*.%1)</source>
<translation>Profile urządzeń (*.%1)</translation>
</message>
@@ -4806,9 +4779,62 @@ Czy chcesz nadpisać szablon?</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 type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Add a profile</source>
+ <translation type="unfinished">Dodaj profil</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Edit the selected profile</source>
+ <translation type="unfinished">Edytuj zaznaczony profil</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Delete the selected profile</source>
+ <translation type="unfinished">Usuń zaznaczony profil</translation>
+ </message>
+ <message>
+ <location line="+22"/>
+ <source>Add Profile</source>
+ <translation type="unfinished">Dodaj profil</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>New profile</source>
+ <translation type="unfinished">Nowy profil</translation>
+ </message>
+ <message>
+ <location line="+35"/>
+ <source>Edit Profile</source>
+ <translation type="unfinished">Edytuj profil</translation>
+ </message>
+ <message>
+ <location line="+26"/>
+ <source>Delete Profile</source>
+ <translation type="unfinished">Usuń profil</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Would you like to delete the profile &apos;%1&apos;?</source>
+ <translation type="unfinished">Czy chcesz usunać profil &apos;%1&apos;?</translation>
+ </message>
+ <message>
+ <location line="+55"/>
+ <source>Default</source>
+ <translation type="unfinished">Domyślny</translation>
+ </message>
+</context>
+<context>
<name>qdesigner_internal::FilterWidget</name>
<message>
- <location filename="../tools/designer/src/lib/shared/filterwidget.cpp" line="+155"/>
+ <location filename="../tools/designer/src/lib/shared/filterwidget.cpp" line="+185"/>
<source>&lt;Filter&gt;</source>
<translation>&lt;Filtr&gt;</translation>
</message>
@@ -4816,7 +4842,7 @@ Czy chcesz nadpisać szablon?</translation>
<context>
<name>qdesigner_internal::FormEditor</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/formeditor.cpp" line="+160"/>
+ <location filename="../tools/designer/src/components/formeditor/formeditor.cpp" line="+190"/>
<source>Resource File Changed</source>
<translation>Zmieniony plik z zasobami</translation>
</message>
@@ -4837,7 +4863,7 @@ Czy chcesz nadpisać szablon?</translation>
<context>
<name>qdesigner_internal::FormWindow</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/formwindow.cpp" line="-1262"/>
+ <location filename="../tools/designer/src/components/formeditor/formwindow.cpp" line="-1267"/>
<source>Edit contents</source>
<translation>Edytuj zawartość</translation>
</message>
@@ -4847,7 +4873,7 @@ Czy chcesz nadpisać szablon?</translation>
<translation>F2</translation>
</message>
<message>
- <location line="+836"/>
+ <location line="+841"/>
<source>Resize</source>
<translation>Zmień rozmiar</translation>
</message>
@@ -4878,13 +4904,13 @@ Czy chcesz nadpisać szablon?</translation>
<translation>Rozmieść</translation>
</message>
<message>
- <location line="+490"/>
+ <location line="+493"/>
<location line="+55"/>
<source>Drop widget</source>
<translation>Upuść widżet</translation>
</message>
<message numerus="yes">
- <location line="-1052"/>
+ <location line="-1055"/>
<source>Paste %n action(s)</source>
<translation>
<numerusform>Wklej %n akcjÄ™</numerusform>
@@ -4917,12 +4943,12 @@ Czy chcesz nadpisać szablon?</translation>
<translation>Wybierz przodka</translation>
</message>
<message>
- <location line="+573"/>
+ <location line="+576"/>
<source>A QMainWindow-based form does not contain a central widget.</source>
<translation>Formularz bazujący na QMainWindow nie zawiera centralnego widżetu.</translation>
</message>
<message>
- <location line="-791"/>
+ <location line="-794"/>
<source>Raise widgets</source>
<translation>Przenieś widżety na wierzch</translation>
</message>
@@ -4935,7 +4961,7 @@ Czy chcesz nadpisać szablon?</translation>
<context>
<name>qdesigner_internal::FormWindowBase</name>
<message>
- <location filename="../tools/designer/src/lib/shared/formwindowbase.cpp" line="+363"/>
+ <location filename="../tools/designer/src/lib/shared/formwindowbase.cpp" line="+397"/>
<source>Delete</source>
<translation>Usuń</translation>
</message>
@@ -4948,7 +4974,7 @@ Czy chcesz nadpisać szablon?</translation>
<context>
<name>qdesigner_internal::FormWindowManager</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/formwindowmanager.cpp" line="+337"/>
+ <location filename="../tools/designer/src/components/formeditor/formwindowmanager.cpp" line="+368"/>
<source>Cu&amp;t</source>
<translation>Wy&amp;tnij</translation>
</message>
@@ -5030,7 +5056,7 @@ Czy chcesz nadpisać szablon?</translation>
<translation>Dopasuj wielkość zaznaczonego widżetu</translation>
</message>
<message>
- <location line="+7"/>
+ <location line="+6"/>
<source>Lay Out &amp;Horizontally</source>
<translation>Rozmieść w po&amp;ziomie</translation>
</message>
@@ -5080,7 +5106,7 @@ Czy chcesz nadpisać szablon?</translation>
<translation>Rozmieszcza zaznaczone widżety pionowo w splitterze</translation>
</message>
<message>
- <location line="+6"/>
+ <location line="+7"/>
<source>&amp;Break Layout</source>
<translation>&amp;Usuń rozmieszczenie</translation>
</message>
@@ -5105,7 +5131,7 @@ Czy chcesz nadpisać szablon?</translation>
<translation>Us&amp;tawienia formularza...</translation>
</message>
<message>
- <location line="+75"/>
+ <location line="+78"/>
<source>Break Layout</source>
<translation>Usuń rozmieszczenie</translation>
</message>
@@ -5121,17 +5147,17 @@ Czy chcesz nadpisać szablon?</translation>
<translation>Nie można utworzyć podglądu formularza</translation>
</message>
<message>
- <location line="+324"/>
+ <location line="+341"/>
<source>Form Settings - %1</source>
<translation>Ustawienia formularza - %1</translation>
</message>
<message>
- <location line="-490"/>
+ <location line="-510"/>
<source>Removes empty columns and rows</source>
<translation>Usuń puste kolumny i wiersze</translation>
</message>
<message>
- <location line="-49"/>
+ <location line="-50"/>
<source>Lay Out in a &amp;Form Layout</source>
<translation>Rozmieść w &amp;formularzu</translation>
</message>
@@ -5141,7 +5167,7 @@ Czy chcesz nadpisać szablon?</translation>
<translation>Rozmieszcza zaznaczone widżety w formularzu</translation>
</message>
<message>
- <location line="+44"/>
+ <location line="+45"/>
<source>Si&amp;mplify Grid Layout</source>
<translation>Up&amp;rość rozmieszczenie w siatce</translation>
</message>
@@ -5149,7 +5175,7 @@ Czy chcesz nadpisać szablon?</translation>
<context>
<name>qdesigner_internal::FormWindowSettings</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/formwindowsettings.cpp" line="+162"/>
+ <location filename="../tools/designer/src/components/formeditor/formwindowsettings.cpp" line="+193"/>
<source>None</source>
<translation>Żaden</translation>
</message>
@@ -5200,7 +5226,7 @@ Czy chcesz nadpisać szablon?</translation>
<context>
<name>qdesigner_internal::GroupBoxTaskMenu</name>
<message>
- <location filename="../tools/designer/src/components/taskmenu/groupbox_taskmenu.cpp" line="+56"/>
+ <location filename="../tools/designer/src/components/taskmenu/groupbox_taskmenu.cpp" line="+86"/>
<source>Change title...</source>
<translation>Zmień tytuł...</translation>
</message>
@@ -5216,7 +5242,7 @@ Czy chcesz nadpisać szablon?</translation>
<context>
<name>qdesigner_internal::IconSelector</name>
<message>
- <location filename="../tools/designer/src/lib/shared/iconselector.cpp" line="+210"/>
+ <location filename="../tools/designer/src/lib/shared/iconselector.cpp" line="+211"/>
<source>The pixmap file &apos;%1&apos; cannot be read.</source>
<translation>Nie można odczytać pliku z pixmapą %1.</translation>
</message>
@@ -5309,7 +5335,7 @@ Czy chcesz nadpisać szablon?</translation>
<context>
<name>qdesigner_internal::ItemListEditor</name>
<message>
- <location filename="../tools/designer/src/components/taskmenu/itemlisteditor.cpp" line="+349"/>
+ <location filename="../tools/designer/src/components/taskmenu/itemlisteditor.cpp" line="+358"/>
<source>Properties &amp;&lt;&lt;</source>
<translation>Własciwości &amp;&lt;&lt;</translation>
</message>
@@ -5368,7 +5394,7 @@ Czy chcesz nadpisać szablon?</translation>
<context>
<name>qdesigner_internal::LabelTaskMenu</name>
<message>
- <location filename="../tools/designer/src/components/taskmenu/label_taskmenu.cpp" line="+59"/>
+ <location filename="../tools/designer/src/components/taskmenu/label_taskmenu.cpp" line="+89"/>
<source>Change rich text...</source>
<translation>Zmień tekst sformatowany...</translation>
</message>
@@ -5381,7 +5407,7 @@ Czy chcesz nadpisać szablon?</translation>
<context>
<name>qdesigner_internal::LineEditTaskMenu</name>
<message>
- <location filename="../tools/designer/src/components/taskmenu/lineedit_taskmenu.cpp" line="+54"/>
+ <location filename="../tools/designer/src/components/taskmenu/lineedit_taskmenu.cpp" line="+84"/>
<source>Change text...</source>
<translation>Zmień tekst...</translation>
</message>
@@ -5389,7 +5415,7 @@ Czy chcesz nadpisać szablon?</translation>
<context>
<name>qdesigner_internal::ListWidgetEditor</name>
<message>
- <location filename="../tools/designer/src/components/taskmenu/listwidgeteditor.cpp" line="+43"/>
+ <location filename="../tools/designer/src/components/taskmenu/listwidgeteditor.cpp" line="+73"/>
<source>New Item</source>
<translation>Nowy element</translation>
</message>
@@ -5407,7 +5433,7 @@ Czy chcesz nadpisać szablon?</translation>
<context>
<name>qdesigner_internal::ListWidgetTaskMenu</name>
<message>
- <location filename="../tools/designer/src/components/taskmenu/listwidget_taskmenu.cpp" line="+41"/>
+ <location filename="../tools/designer/src/components/taskmenu/listwidget_taskmenu.cpp" line="+71"/>
<source>Edit Items...</source>
<translation>Edytuj elementy...</translation>
</message>
@@ -5443,7 +5469,7 @@ Czy chcesz nadpisać szablon?</translation>
<context>
<name>qdesigner_internal::MenuTaskMenu</name>
<message>
- <location filename="../tools/designer/src/components/taskmenu/menutaskmenu.cpp" line="+30"/>
+ <location filename="../tools/designer/src/components/taskmenu/menutaskmenu.cpp" line="+60"/>
<source>Remove</source>
<translation>Usuń</translation>
</message>
@@ -5502,7 +5528,7 @@ Czy chcesz nadpisać szablon?</translation>
<context>
<name>qdesigner_internal::NewDynamicPropertyDialog</name>
<message>
- <location filename="../tools/designer/src/components/propertyeditor/newdynamicpropertydialog.cpp" line="+104"/>
+ <location filename="../tools/designer/src/components/propertyeditor/newdynamicpropertydialog.cpp" line="+134"/>
<source>Set Property Name</source>
<translation>Ustaw nazwę właściwości</translation>
</message>
@@ -5623,7 +5649,7 @@ Wybierz innÄ… nazwÄ™.</translation>
<context>
<name>qdesigner_internal::NewPromotedClassPanel</name>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_promotiondialog.cpp" line="+66"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_promotiondialog.cpp" line="+96"/>
<source>Add</source>
<translation>Dodaj</translation>
</message>
@@ -5661,7 +5687,7 @@ Wybierz innÄ… nazwÄ™.</translation>
<context>
<name>qdesigner_internal::ObjectInspector</name>
<message>
- <location filename="../tools/designer/src/components/objectinspector/objectinspector.cpp" line="+727"/>
+ <location filename="../tools/designer/src/components/objectinspector/objectinspector.cpp" line="+758"/>
<source>&amp;Find in Text...</source>
<translation>Z&amp;najdź w tekście...</translation>
</message>
@@ -5677,7 +5703,7 @@ Wybierz innÄ… nazwÄ™.</translation>
<context>
<name>qdesigner_internal::OrderDialog</name>
<message>
- <location filename="../tools/designer/src/lib/shared/orderdialog.cpp" line="+83"/>
+ <location filename="../tools/designer/src/lib/shared/orderdialog.cpp" line="+113"/>
<source>Index %1 (%2)</source>
<translation>Indeks %1 (%2)</translation>
</message>
@@ -5758,7 +5784,7 @@ Wybierz innÄ… nazwÄ™.</translation>
<context>
<name>qdesigner_internal::PaletteEditorButton</name>
<message>
- <location filename="../tools/designer/src/components/propertyeditor/paletteeditorbutton.cpp" line="+31"/>
+ <location filename="../tools/designer/src/components/propertyeditor/paletteeditorbutton.cpp" line="+61"/>
<source>Change Palette</source>
<translation>Zmień paletę</translation>
</message>
@@ -5766,7 +5792,7 @@ Wybierz innÄ… nazwÄ™.</translation>
<context>
<name>qdesigner_internal::PaletteModel</name>
<message>
- <location filename="../tools/designer/src/components/propertyeditor/paletteeditor.cpp" line="+351"/>
+ <location filename="../tools/designer/src/components/propertyeditor/paletteeditor.cpp" line="+381"/>
<source>Color Role</source>
<translation>Rola koloru</translation>
</message>
@@ -5818,15 +5844,61 @@ Wybierz innÄ… nazwÄ™.</translation>
<context>
<name>qdesigner_internal::PlainTextEditorDialog</name>
<message>
- <location filename="../tools/designer/src/lib/shared/plaintexteditor.cpp" line="+39"/>
+ <location filename="../tools/designer/src/lib/shared/plaintexteditor.cpp" line="+69"/>
<source>Edit text</source>
<translation>Edytuj tekst</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>Komponenty</translation>
+ </message>
+ <message>
+ <location line="+13"/>
+ <source>Plugin Information</source>
+ <translation>Informacje o wtyczkach</translation>
+ </message>
+ <message>
+ <location line="+53"/>
+ <source>Qt Designer couldn&apos;t find any plugins</source>
+ <translation>Qt Designer nie mógł znaleźć żadnej wtyczki</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Qt Designer found the following plugins</source>
+ <translation>Qt Designer znalazł następujące wtyczki:</translation>
+ </message>
+ <message>
+ <source>TextLabel</source>
+ <translation type="obsolete">Etykieta</translation>
+ </message>
+ <message>
+ <location line="-52"/>
+ <source>Refresh</source>
+ <translation>Odśwież</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Scan for newly installed custom widget plugins.</source>
+ <translation>Szukaj nowo zainstalowanych wtyczek z widżetami.</translation>
+ </message>
+ <message>
+ <location line="+106"/>
+ <source>New custom widget plugins have been found.</source>
+ <translation>Znaleziono nową wtyczkę z widżetami.</translation>
+ </message>
+ <message>
+ <source>1</source>
+ <translation type="obsolete">1</translation>
+ </message>
+</context>
+<context>
<name>qdesigner_internal::PreviewActionGroup</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/previewactiongroup.cpp" line="+65"/>
+ <location filename="../tools/designer/src/components/formeditor/previewactiongroup.cpp" line="+95"/>
<source>%1 Style</source>
<translation>Styl %1</translation>
</message>
@@ -5869,7 +5941,7 @@ Wybierz innÄ… nazwÄ™.</translation>
<context>
<name>qdesigner_internal::PreviewDeviceSkin</name>
<message>
- <location filename="../tools/designer/src/lib/shared/previewmanager.cpp" line="+188"/>
+ <location filename="../tools/designer/src/lib/shared/previewmanager.cpp" line="+218"/>
<source>&amp;Close</source>
<translation>Za&amp;mknij</translation>
</message>
@@ -5966,7 +6038,7 @@ Wybierz innÄ… nazwÄ™.</translation>
<context>
<name>qdesigner_internal::PromotionTaskMenu</name>
<message>
- <location filename="../tools/designer/src/lib/shared/promotiontaskmenu.cpp" line="+55"/>
+ <location filename="../tools/designer/src/lib/shared/promotiontaskmenu.cpp" line="+85"/>
<source>Promoted widgets...</source>
<translation>Zastępcze widżety...</translation>
</message>
@@ -5994,7 +6066,7 @@ Wybierz innÄ… nazwÄ™.</translation>
<context>
<name>qdesigner_internal::PropertyEditor</name>
<message>
- <location filename="../tools/designer/src/components/propertyeditor/propertyeditor.cpp" line="+222"/>
+ <location filename="../tools/designer/src/components/propertyeditor/propertyeditor.cpp" line="+188"/>
<source>Add Dynamic Property...</source>
<translation>Dodaj dynamiczną właściwość ...</translation>
</message>
@@ -6029,14 +6101,14 @@ Wybierz innÄ… nazwÄ™.</translation>
<translation>Skonfiguruj edytor właściwości</translation>
</message>
<message>
- <location line="+534"/>
+ <location line="+533"/>
<source>Object: %1
Class: %2</source>
<translation>Obiekt: %1
Klasa: %2</translation>
</message>
<message>
- <location line="-548"/>
+ <location line="-547"/>
<source>String...</source>
<translation>String...</translation>
</message>
@@ -6054,7 +6126,7 @@ Klasa: %2</translation>
<context>
<name>qdesigner_internal::PropertyLineEdit</name>
<message>
- <location filename="../tools/designer/src/lib/shared/propertylineedit.cpp" line="+58"/>
+ <location filename="../tools/designer/src/lib/shared/propertylineedit.cpp" line="+88"/>
<source>Insert line break</source>
<translation>Wstaw znak końca linii</translation>
</message>
@@ -6157,8 +6229,13 @@ Klasa: %2</translation>
<source>Change script...</source>
<translation>Zmień skrypt...</translation>
</message>
+ <message>
+ <location line="+415"/>
+ <source>no signals available</source>
+ <translation type="unfinished"></translation>
+ </message>
<message numerus="yes">
- <location line="+404"/>
+ <location line="+67"/>
<source>Set size constraint on %n widget(s)</source>
<translation>
<numerusform>Ustaw ograniczenie rozmiaru w %n obiekcie</numerusform>
@@ -6167,7 +6244,7 @@ Klasa: %2</translation>
</translation>
</message>
<message>
- <location line="-403"/>
+ <location line="-481"/>
<source>Change signals/slots...</source>
<translation>Zmień sygnały/sloty...</translation>
</message>
@@ -6212,7 +6289,7 @@ Klasa: %2</translation>
<translation>Ustaw maksymalny rozmiar</translation>
</message>
<message>
- <location line="+236"/>
+ <location line="+235"/>
<source>Edit ToolTip</source>
<translation>Edytuj podpowiedź</translation>
</message>
@@ -6225,7 +6302,7 @@ Klasa: %2</translation>
<context>
<name>qdesigner_internal::QDesignerWidgetBox</name>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_widgetbox.cpp" line="+97"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_widgetbox.cpp" line="+127"/>
<location line="+13"/>
<source>Unexpected element &lt;%1&gt;</source>
<translation>Niespodziewany element &lt;%1&gt;</translation>
@@ -6281,7 +6358,7 @@ Klasa: %2</translation>
<context>
<name>qdesigner_internal::QtGradientStopsController</name>
<message>
- <location filename="../tools/shared/qtgradienteditor/qtgradientstopscontroller.cpp" line="+147"/>
+ <location filename="../tools/shared/qtgradienteditor/qtgradientstopscontroller.cpp" line="+177"/>
<source>H</source>
<translation>H</translation>
</message>
@@ -6456,7 +6533,7 @@ Klasa: %2</translation>
<context>
<name>qdesigner_internal::ScriptDialog</name>
<message>
- <location filename="../tools/designer/src/lib/shared/scriptdialog.cpp" line="+38"/>
+ <location filename="../tools/designer/src/lib/shared/scriptdialog.cpp" line="+68"/>
<source>Edit script</source>
<translation>Edytuj skrypt</translation>
</message>
@@ -6506,7 +6583,7 @@ Klasa: %2</translation>
<context>
<name>qdesigner_internal::SignalSlotEditorPlugin</name>
<message>
- <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditor_plugin.cpp" line="+46"/>
+ <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditor_plugin.cpp" line="+76"/>
<source>Edit Signals/Slots</source>
<translation>Edytuj sygnały/sloty</translation>
</message>
@@ -6519,7 +6596,7 @@ Klasa: %2</translation>
<context>
<name>qdesigner_internal::SignalSlotEditorTool</name>
<message>
- <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditor_tool.cpp" line="+32"/>
+ <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditor_tool.cpp" line="+62"/>
<source>Edit Signals/Slots</source>
<translation>Edytuj sygnały/sloty</translation>
</message>
@@ -6527,7 +6604,7 @@ Klasa: %2</translation>
<context>
<name>qdesigner_internal::StatusBarTaskMenu</name>
<message>
- <location filename="../tools/designer/src/components/taskmenu/toolbar_taskmenu.cpp" line="+55"/>
+ <location filename="../tools/designer/src/components/taskmenu/toolbar_taskmenu.cpp" line="+85"/>
<source>Remove</source>
<translation>Usuń</translation>
</message>
@@ -6535,7 +6612,7 @@ Klasa: %2</translation>
<context>
<name>qdesigner_internal::StringListEditorButton</name>
<message>
- <location filename="../tools/designer/src/components/propertyeditor/stringlisteditorbutton.cpp" line="+30"/>
+ <location filename="../tools/designer/src/components/propertyeditor/stringlisteditorbutton.cpp" line="+60"/>
<source>Change String List</source>
<translation>Zmień listę tekstów</translation>
</message>
@@ -6543,7 +6620,7 @@ Klasa: %2</translation>
<context>
<name>qdesigner_internal::StyleSheetEditorDialog</name>
<message>
- <location filename="../tools/designer/src/lib/shared/stylesheeteditor.cpp" line="+71"/>
+ <location filename="../tools/designer/src/lib/shared/stylesheeteditor.cpp" line="+101"/>
<source>Edit Style Sheet</source>
<translation>Edytuj arkusz stylu</translation>
</message>
@@ -6582,7 +6659,7 @@ Klasa: %2</translation>
<context>
<name>qdesigner_internal::TabOrderEditor</name>
<message>
- <location filename="../tools/designer/src/components/tabordereditor/tabordereditor.cpp" line="+333"/>
+ <location filename="../tools/designer/src/components/tabordereditor/tabordereditor.cpp" line="+363"/>
<source>Start from Here</source>
<translation>Rozpocznij stÄ…d</translation>
</message>
@@ -6610,7 +6687,7 @@ Klasa: %2</translation>
<context>
<name>qdesigner_internal::TabOrderEditorPlugin</name>
<message>
- <location filename="../tools/designer/src/components/tabordereditor/tabordereditor_plugin.cpp" line="+47"/>
+ <location filename="../tools/designer/src/components/tabordereditor/tabordereditor_plugin.cpp" line="+77"/>
<source>Edit Tab Order</source>
<translation>Edytuj kolejność tabulacji</translation>
</message>
@@ -6618,7 +6695,7 @@ Klasa: %2</translation>
<context>
<name>qdesigner_internal::TabOrderEditorTool</name>
<message>
- <location filename="../tools/designer/src/components/tabordereditor/tabordereditor_tool.cpp" line="+31"/>
+ <location filename="../tools/designer/src/components/tabordereditor/tabordereditor_tool.cpp" line="+61"/>
<source>Edit Tab Order</source>
<translation>Edytuj kolejność tabulacji</translation>
</message>
@@ -6636,7 +6713,7 @@ Klasa: %2</translation>
<translation>&amp;Elementy</translation>
</message>
<message>
- <location filename="../tools/designer/src/components/taskmenu/tablewidgeteditor.cpp" line="+44"/>
+ <location filename="../tools/designer/src/components/taskmenu/tablewidgeteditor.cpp" line="+74"/>
<source>New Row</source>
<translation>Nowy wiersz</translation>
</message>
@@ -6675,7 +6752,7 @@ Klasa: %2</translation>
<context>
<name>qdesigner_internal::TableWidgetTaskMenu</name>
<message>
- <location filename="../tools/designer/src/components/taskmenu/tablewidget_taskmenu.cpp" line="+38"/>
+ <location filename="../tools/designer/src/components/taskmenu/tablewidget_taskmenu.cpp" line="+68"/>
<source>Edit Items...</source>
<translation>Edytuj elementy...</translation>
</message>
@@ -6706,7 +6783,7 @@ Klasa: %2</translation>
<context>
<name>qdesigner_internal::TextEditTaskMenu</name>
<message>
- <location filename="../tools/designer/src/components/taskmenu/textedit_taskmenu.cpp" line="+33"/>
+ <location filename="../tools/designer/src/components/taskmenu/textedit_taskmenu.cpp" line="+63"/>
<source>Change HTML...</source>
<translation>Zmień HTML...</translation>
</message>
@@ -6752,7 +6829,7 @@ Klasa: %2</translation>
<context>
<name>qdesigner_internal::ToolBarEventFilter</name>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_toolbar.cpp" line="+209"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_toolbar.cpp" line="+239"/>
<source>Insert Separator</source>
<translation>Wstaw separator</translation>
</message>
@@ -6795,7 +6872,7 @@ Klasa: %2</translation>
<translation>Drzewo elementów</translation>
</message>
<message>
- <location filename="../tools/designer/src/components/taskmenu/treewidgeteditor.cpp" line="+50"/>
+ <location filename="../tools/designer/src/components/taskmenu/treewidgeteditor.cpp" line="+80"/>
<source>&amp;Columns</source>
<translation>&amp;Kolumny</translation>
</message>
@@ -6906,7 +6983,7 @@ Klasa: %2</translation>
<context>
<name>qdesigner_internal::TreeWidgetTaskMenu</name>
<message>
- <location filename="../tools/designer/src/components/taskmenu/treewidget_taskmenu.cpp" line="+37"/>
+ <location filename="../tools/designer/src/components/taskmenu/treewidget_taskmenu.cpp" line="+67"/>
<source>Edit Items...</source>
<translation>Edytuj elementy...</translation>
</message>
@@ -6914,7 +6991,7 @@ Klasa: %2</translation>
<context>
<name>qdesigner_internal::WidgetBox</name>
<message>
- <location filename="../tools/designer/src/components/widgetbox/widgetbox_dnditem.cpp" line="+83"/>
+ <location filename="../tools/designer/src/components/widgetbox/widgetbox_dnditem.cpp" line="+113"/>
<source>Warning: Widget creation failed in the widget box. This could be caused by invalid custom widget XML.</source>
<translation>Ostrzeżenie: Błąd tworzenia widżetu w panelu widżetów. Mogło to być spowodowane niepoprawnym kodem XML widżetu.</translation>
</message>
@@ -6922,17 +6999,17 @@ Klasa: %2</translation>
<context>
<name>qdesigner_internal::WidgetBoxTreeWidget</name>
<message>
- <location filename="../tools/designer/src/components/widgetbox/widgetboxtreewidget.cpp" line="-267"/>
+ <location filename="../tools/designer/src/components/widgetbox/widgetboxtreewidget.cpp" line="-268"/>
<source>Scratchpad</source>
<translation>Notatnik</translation>
</message>
<message>
- <location line="+360"/>
+ <location line="+370"/>
<source>Custom Widgets</source>
<translation>Własne widżety</translation>
</message>
<message>
- <location line="+261"/>
+ <location line="+260"/>
<source>Expand all</source>
<translation>Rozszerz wszystkie</translation>
</message>
@@ -6973,7 +7050,7 @@ Klasa: %2</translation>
<context>
<name>qdesigner_internal::WidgetEditorTool</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/tool_widgeteditor.cpp" line="+41"/>
+ <location filename="../tools/designer/src/components/formeditor/tool_widgeteditor.cpp" line="+71"/>
<source>Edit Widgets</source>
<translation>Edytuj widżety</translation>
</message>
@@ -6981,12 +7058,12 @@ Klasa: %2</translation>
<context>
<name>qdesigner_internal::WidgetFactory</name>
<message>
- <location filename="../tools/designer/src/lib/shared/widgetfactory.cpp" line="+237"/>
+ <location filename="../tools/designer/src/lib/shared/widgetfactory.cpp" line="+267"/>
<source>The custom widget factory registered for widgets of class %1 returned 0.</source>
<translation>Fabryka widżetów użytkownika zarejestrowana dla widżetów klasy %1 zwróciła 0.</translation>
</message>
<message>
- <location line="+40"/>
+ <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>Wystąpiła niezgodność nazwy klasy podczas tworzenia widżetu przy pomocy fabryki widżetów użytkownika zarejestrowanej dla klasy %1. Zwrócony został widżet klasy %2.</translation>
</message>
@@ -7029,7 +7106,7 @@ To wskazuje na niespójność w pliku &quot;ui&quot;.</translation>
<context>
<name>qdesigner_internal::ZoomMenu</name>
<message>
- <location filename="../tools/designer/src/lib/shared/zoomwidget.cpp" line="+54"/>
+ <location filename="../tools/designer/src/lib/shared/zoomwidget.cpp" line="+84"/>
<source>%1 %</source>
<extracomment>Zoom factor</extracomment>
<translation>%1 %</translation>
diff --git a/translations/designer_untranslated.ts b/translations/designer_untranslated.ts
index 209d871..1666363 100644
--- a/translations/designer_untranslated.ts
+++ b/translations/designer_untranslated.ts
@@ -4,7 +4,7 @@
<context>
<name></name>
<message>
- <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditorwindow.cpp" line="+617"/>
+ <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditorwindow.cpp" line="+647"/>
<source>&lt;object&gt;</source>
<translation type="unfinished"></translation>
</message>
@@ -19,7 +19,7 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../tools/designer/src/components/propertyeditor/previewframe.cpp" line="+43"/>
+ <location filename="../tools/designer/src/components/propertyeditor/previewframe.cpp" line="+73"/>
<source>The moose in the noose
ate the goose who was loose.</source>
<translation type="unfinished"></translation>
@@ -28,7 +28,7 @@ ate the goose who was loose.</source>
<context>
<name>AbstractFindWidget</name>
<message>
- <location filename="../tools/shared/findwidget/abstractfindwidget.cpp" line="+97"/>
+ <location filename="../tools/shared/findwidget/abstractfindwidget.cpp" line="+127"/>
<source>&amp;Previous</source>
<translation type="unfinished"></translation>
</message>
@@ -74,7 +74,7 @@ ate the goose who was loose.</source>
<context>
<name>AppFontDialog</name>
<message>
- <location filename="../tools/designer/src/designer/appfontdialog.cpp" line="+388"/>
+ <location filename="../tools/designer/src/designer/appfontdialog.cpp" line="+418"/>
<source>Additional Fonts</source>
<translation type="unfinished"></translation>
</message>
@@ -186,7 +186,7 @@ ate the goose who was loose.</source>
<context>
<name>AssistantClient</name>
<message>
- <location filename="../tools/designer/src/designer/assistantclient.cpp" line="+70"/>
+ <location filename="../tools/designer/src/designer/assistantclient.cpp" line="+100"/>
<source>Unable to send request: Assistant is not responding.</source>
<translation type="unfinished"></translation>
</message>
@@ -204,7 +204,7 @@ ate the goose who was loose.</source>
<context>
<name>BrushManagerProxy</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/brushmanagerproxy.cpp" line="+191"/>
+ <location filename="../tools/designer/src/components/formeditor/brushmanagerproxy.cpp" line="+221"/>
<source>The element &apos;%1&apos; is missing the required attribute &apos;%2&apos;.</source>
<translation type="unfinished"></translation>
</message>
@@ -232,7 +232,7 @@ ate the goose who was loose.</source>
<context>
<name>BrushPropertyManager</name>
<message>
- <location filename="../tools/designer/src/components/propertyeditor/brushpropertymanager.cpp" line="+22"/>
+ <location filename="../tools/designer/src/components/propertyeditor/brushpropertymanager.cpp" line="+52"/>
<source>No brush</source>
<translation type="unfinished"></translation>
</message>
@@ -325,19 +325,24 @@ ate the goose who was loose.</source>
<context>
<name>Command</name>
<message>
- <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditor.cpp" line="+177"/>
- <location line="+211"/>
+ <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditor.cpp" line="+208"/>
+ <location line="+258"/>
<source>Change signal</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-209"/>
- <location line="+221"/>
+ <location line="-256"/>
+ <location line="+268"/>
<source>Change slot</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+14"/>
+ <location line="-220"/>
+ <source>Change signal-slot connection</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+234"/>
<source>Change sender</source>
<translation type="unfinished"></translation>
</message>
@@ -347,7 +352,7 @@ ate the goose who was loose.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../tools/designer/src/lib/shared/connectionedit.cpp" line="+113"/>
+ <location filename="../tools/designer/src/lib/shared/connectionedit.cpp" line="+143"/>
<source>Add connection</source>
<translation type="unfinished"></translation>
</message>
@@ -372,7 +377,7 @@ ate the goose who was loose.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_command.cpp" line="+117"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_command.cpp" line="+149"/>
<source>Insert &apos;%1&apos;</source>
<translation type="unfinished"></translation>
</message>
@@ -397,7 +402,7 @@ ate the goose who was loose.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+51"/>
+ <location line="+53"/>
<source>Promote to custom widget</source>
<translation type="unfinished"></translation>
</message>
@@ -427,48 +432,48 @@ ate the goose who was loose.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+237"/>
- <location line="+232"/>
- <location line="+75"/>
+ <location line="+240"/>
+ <location line="+235"/>
+ <location line="+78"/>
<source>Move Page</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-273"/>
- <location line="+122"/>
- <location line="+183"/>
- <location line="+664"/>
+ <location line="-279"/>
+ <location line="+123"/>
+ <location line="+188"/>
+ <location line="+666"/>
<source>Delete Page</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-931"/>
- <location line="+122"/>
+ <location line="-939"/>
+ <location line="+123"/>
<source>Page</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-120"/>
- <location line="+303"/>
- <location line="+670"/>
+ <location line="-121"/>
+ <location line="+309"/>
+ <location line="+672"/>
<source>page</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-970"/>
- <location line="+122"/>
- <location line="+181"/>
- <location line="+665"/>
+ <location line="-978"/>
+ <location line="+123"/>
+ <location line="+186"/>
+ <location line="+667"/>
<source>Insert Page</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-849"/>
+ <location line="-856"/>
<source>tab</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+204"/>
+ <location line="+209"/>
<source>Change Tab order</source>
<translation type="unfinished"></translation>
</message>
@@ -513,12 +518,12 @@ ate the goose who was loose.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+94"/>
+ <location line="+95"/>
<source>Change Layout Item Geometry</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+575"/>
+ <location line="+576"/>
<source>Change Table Contents</source>
<translation type="unfinished"></translation>
</message>
@@ -560,7 +565,7 @@ ate the goose who was loose.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_menu.cpp" line="+1131"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_menu.cpp" line="+1161"/>
<source>Set action text</source>
<translation type="unfinished"></translation>
</message>
@@ -571,7 +576,7 @@ ate the goose who was loose.</source>
</message>
<message>
<location line="+89"/>
- <location filename="../tools/designer/src/lib/shared/qdesigner_menubar.cpp" line="+861"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_menubar.cpp" line="+891"/>
<source>Move action</source>
<translation type="unfinished"></translation>
</message>
@@ -586,7 +591,7 @@ ate the goose who was loose.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../tools/designer/src/lib/shared/signalslotdialog.cpp" line="+172"/>
+ <location filename="../tools/designer/src/lib/shared/signalslotdialog.cpp" line="+202"/>
<source>Change signals/slots</source>
<translation type="unfinished"></translation>
</message>
@@ -611,17 +616,17 @@ ate the goose who was loose.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-1808"/>
+ <location line="-1821"/>
<source>Change Z-order of &apos;%1&apos;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+623"/>
+ <location line="+625"/>
<source>Simplify Grid Layout</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../tools/designer/src/components/taskmenu/button_taskmenu.cpp" line="+195"/>
+ <location filename="../tools/designer/src/components/taskmenu/button_taskmenu.cpp" line="+225"/>
<source>Create button group</source>
<translation type="unfinished"></translation>
</message>
@@ -642,7 +647,7 @@ ate the goose who was loose.</source>
</message>
<message>
<location line="+8"/>
- <location filename="../tools/designer/src/lib/shared/formlayoutmenu.cpp" line="+373"/>
+ <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 type="unfinished"></translation>
@@ -659,23 +664,23 @@ ate the goose who was loose.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../tools/designer/src/lib/shared/morphmenu.cpp" line="+318"/>
+ <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 type="unfinished"></translation>
</message>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_command2.cpp" line="+124"/>
+ <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 type="unfinished"></translation>
</message>
<message>
- <location filename="../tools/designer/src/lib/shared/scriptcommand.cpp" line="+25"/>
+ <location filename="../tools/designer/src/lib/shared/scriptcommand.cpp" line="+55"/>
<source>Change script</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_propertycommand.cpp" line="+1179"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_propertycommand.cpp" line="+1209"/>
<source>Changed &apos;%1&apos; of &apos;%2&apos;</source>
<translation type="unfinished"></translation>
</message>
@@ -749,7 +754,7 @@ ate the goose who was loose.</source>
<context>
<name>DPI_Chooser</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/dpi_chooser.cpp" line="+39"/>
+ <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 type="unfinished"></translation>
@@ -770,7 +775,7 @@ ate the goose who was loose.</source>
<context>
<name>Designer</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/qdesigner_resource.cpp" line="+409"/>
+ <location filename="../tools/designer/src/components/formeditor/qdesigner_resource.cpp" line="+439"/>
<source>Qt Designer</source>
<translation type="unfinished"></translation>
</message>
@@ -836,7 +841,7 @@ ate the goose who was loose.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+735"/>
+ <location line="+746"/>
<source>Custom Widgets</source>
<translation type="unfinished"></translation>
</message>
@@ -846,7 +851,7 @@ ate the goose who was loose.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_utils.cpp" line="+602"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_utils.cpp" line="+682"/>
<source>Unable to launch %1.</source>
<translation type="unfinished"></translation>
</message>
@@ -859,7 +864,7 @@ ate the goose who was loose.</source>
<context>
<name>DesignerMetaEnum</name>
<message>
- <location line="-463"/>
+ <location line="-513"/>
<source>%1 is not a valid enumeration value of &apos;%2&apos;.</source>
<translation type="unfinished"></translation>
</message>
@@ -880,7 +885,7 @@ ate the goose who was loose.</source>
<context>
<name>DeviceProfile</name>
<message>
- <location filename="../tools/designer/src/lib/shared/deviceprofile.cpp" line="+367"/>
+ <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 type="unfinished"></translation>
@@ -922,7 +927,7 @@ ate the goose who was loose.</source>
<context>
<name>DeviceSkin</name>
<message>
- <location filename="../tools/shared/deviceskin/deviceskin.cpp" line="+49"/>
+ <location filename="../tools/shared/deviceskin/deviceskin.cpp" line="+79"/>
<source>The image file &apos;%1&apos; could not be loaded.</source>
<translation type="unfinished"></translation>
</message>
@@ -980,7 +985,7 @@ ate the goose who was loose.</source>
<context>
<name>EmbeddedOptionsControl</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/embeddedoptionspage.cpp" line="+281"/>
+ <location filename="../tools/designer/src/components/formeditor/embeddedoptionspage.cpp" line="+311"/>
<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 type="unfinished"></translation>
@@ -1004,7 +1009,7 @@ ate the goose who was loose.</source>
<context>
<name>FontPanel</name>
<message>
- <location filename="../tools/shared/fontpanel/fontpanel.cpp" line="+33"/>
+ <location filename="../tools/shared/fontpanel/fontpanel.cpp" line="+63"/>
<source>Font</source>
<translation type="unfinished"></translation>
</message>
@@ -1032,7 +1037,7 @@ ate the goose who was loose.</source>
<context>
<name>FontPropertyManager</name>
<message>
- <location filename="../tools/designer/src/components/propertyeditor/fontpropertymanager.cpp" line="+32"/>
+ <location filename="../tools/designer/src/components/propertyeditor/fontpropertymanager.cpp" line="+62"/>
<source>PreferDefault</source>
<translation type="unfinished"></translation>
</message>
@@ -1055,7 +1060,7 @@ ate the goose who was loose.</source>
<context>
<name>FormBuilder</name>
<message>
- <location filename="../tools/designer/src/lib/uilib/formbuilderextra.cpp" line="+321"/>
+ <location filename="../tools/designer/src/lib/uilib/formbuilderextra.cpp" line="+351"/>
<source>Invalid stretch value for &apos;%1&apos;: &apos;%2&apos;</source>
<extracomment>Parsing layout stretch values</extracomment>
<translation type="unfinished"></translation>
@@ -1070,7 +1075,7 @@ ate the goose who was loose.</source>
<context>
<name>FormEditorOptionsPage</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/formeditor_optionspage.cpp" line="+61"/>
+ <location filename="../tools/designer/src/components/formeditor/formeditor_optionspage.cpp" line="+91"/>
<source>%1 %</source>
<translation type="unfinished"></translation>
</message>
@@ -1137,7 +1142,7 @@ ate the goose who was loose.</source>
<context>
<name>FormWindow</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/formwindow.cpp" line="+1669"/>
+ <location filename="../tools/designer/src/components/formeditor/formwindow.cpp" line="+1705"/>
<source>Unexpected element &lt;%1&gt;</source>
<translation type="unfinished"></translation>
</message>
@@ -1213,7 +1218,7 @@ ate the goose who was loose.</source>
<context>
<name>IconSelector</name>
<message>
- <location filename="../tools/designer/src/lib/shared/iconselector.cpp" line="+321"/>
+ <location filename="../tools/designer/src/lib/shared/iconselector.cpp" line="+353"/>
<source>All Pixmaps (</source>
<translation type="unfinished"></translation>
</message>
@@ -1221,7 +1226,7 @@ ate the goose who was loose.</source>
<context>
<name>ItemPropertyBrowser</name>
<message>
- <location filename="../tools/designer/src/components/taskmenu/itemlisteditor.cpp" line="+36"/>
+ <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 type="unfinished"></translation>
@@ -1230,7 +1235,7 @@ ate the goose who was loose.</source>
<context>
<name>LanguageResourceDialog</name>
<message>
- <location filename="../tools/designer/src/lib/shared/iconselector.cpp" line="-234"/>
+ <location filename="../tools/designer/src/lib/shared/iconselector.cpp" line="-235"/>
<source>Choose Resource</source>
<translation type="unfinished"></translation>
</message>
@@ -1238,7 +1243,7 @@ ate the goose who was loose.</source>
<context>
<name>MainWindowBase</name>
<message>
- <location filename="../tools/designer/src/designer/mainwindow.cpp" line="+89"/>
+ <location filename="../tools/designer/src/designer/mainwindow.cpp" line="+119"/>
<source>Main</source>
<extracomment>Not currently used (main tool bar)</extracomment>
<translation type="unfinished"></translation>
@@ -1272,7 +1277,7 @@ ate the goose who was loose.</source>
<context>
<name>NewForm</name>
<message>
- <location filename="../tools/designer/src/designer/newform.cpp" line="+49"/>
+ <location filename="../tools/designer/src/designer/newform.cpp" line="+79"/>
<source>C&amp;reate</source>
<translation type="unfinished"></translation>
</message>
@@ -1325,7 +1330,7 @@ ate the goose who was loose.</source>
<context>
<name>NewFormWidget</name>
<message>
- <location filename="../tools/designer/src/lib/shared/newformwidget.cpp" line="+465"/>
+ <location filename="../tools/designer/src/lib/shared/newformwidget.cpp" line="+495"/>
<source>Unable to open the form template file &apos;%1&apos;: %2</source>
<translation type="unfinished"></translation>
</message>
@@ -1333,7 +1338,7 @@ ate the goose who was loose.</source>
<context>
<name>ObjectInspectorModel</name>
<message>
- <location filename="../tools/designer/src/components/objectinspector/objectinspectormodel.cpp" line="+331"/>
+ <location filename="../tools/designer/src/components/objectinspector/objectinspectormodel.cpp" line="+364"/>
<source>Object</source>
<translation type="unfinished"></translation>
</message>
@@ -1356,7 +1361,7 @@ ate the goose who was loose.</source>
<context>
<name>ObjectNameDialog</name>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_taskmenu.cpp" line="+135"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_taskmenu.cpp" line="+162"/>
<source>Change Object Name</source>
<translation type="unfinished"></translation>
</message>
@@ -1367,49 +1372,13 @@ ate the goose who was loose.</source>
</message>
</context>
<context>
- <name>qdesigner_internal::PluginDialog</name>
- <message>
- <location filename="../tools/designer/src/designer/plugindialog.cpp" line="+40"/>
- <source>Components</source>
- <translation type="unfinished"></translation>
- </message>
+ <name>PluginDialog</name>
<message>
- <location line="+13"/>
- <location filename="../tools/designer/src/designer/plugindialog.ui"/>
+ <location filename="../tools/designer/src/lib/shared/plugindialog.ui"/>
<source>Plugin Information</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+4"/>
- <source>Refresh</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location line="+1"/>
- <source>Scan for newly installed custom widget plugins.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location line="+48"/>
- <source>Qt Designer couldn&apos;t find any plugins</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location line="+3"/>
- <source>Qt Designer found the following plugins</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location line="+55"/>
- <source>New custom widget plugins have been found.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../tools/designer/src/designer/plugindialog.ui"/>
- <source>TextLabel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<location/>
<source>1</source>
<translation type="unfinished"></translation>
@@ -1426,7 +1395,7 @@ ate the goose who was loose.</source>
<context>
<name>PreviewConfigurationWidget</name>
<message>
- <location filename="../tools/designer/src/lib/shared/previewconfigurationwidget.cpp" line="+125"/>
+ <location filename="../tools/designer/src/lib/shared/previewconfigurationwidget.cpp" line="+155"/>
<source>Default</source>
<translation type="unfinished"></translation>
</message>
@@ -1474,7 +1443,7 @@ ate the goose who was loose.</source>
<context>
<name>PromotionModel</name>
<message>
- <location filename="../tools/designer/src/lib/shared/promotionmodel.cpp" line="+86"/>
+ <location filename="../tools/designer/src/lib/shared/promotionmodel.cpp" line="+116"/>
<source>Not used</source>
<extracomment>Usage of promoted widgets</extracomment>
<translation type="unfinished"></translation>
@@ -1483,7 +1452,7 @@ ate the goose who was loose.</source>
<context>
<name>Q3WizardContainer</name>
<message>
- <location filename="../tools/designer/src/plugins/widgets/q3wizard/q3wizard_container.cpp" line="+142"/>
+ <location filename="../tools/designer/src/plugins/widgets/q3wizard/q3wizard_container.cpp" line="+172"/>
<location line="+5"/>
<source>Page</source>
<translation type="unfinished"></translation>
@@ -1492,7 +1461,7 @@ ate the goose who was loose.</source>
<context>
<name>QAbstractFormBuilder</name>
<message>
- <location filename="../tools/designer/src/lib/uilib/abstractformbuilder.cpp" line="+176"/>
+ <location filename="../tools/designer/src/lib/uilib/abstractformbuilder.cpp" line="+206"/>
<source>Unexpected element &lt;%1&gt;</source>
<translation type="unfinished"></translation>
</message>
@@ -1538,7 +1507,7 @@ This indicates an inconsistency in the ui-file.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+750"/>
+ <location line="+749"/>
<source>Invalid QButtonGroup reference &apos;%1&apos; referenced by &apos;%2&apos;.</source>
<translation type="unfinished"></translation>
</message>
@@ -1551,7 +1520,7 @@ This indicates an inconsistency in the ui-file.</source>
<context>
<name>QAxWidgetPlugin</name>
<message>
- <location filename="../tools/designer/src/plugins/activeqt/qaxwidgetplugin.cpp" line="+45"/>
+ <location filename="../tools/designer/src/plugins/activeqt/qaxwidgetplugin.cpp" line="+75"/>
<source>ActiveX control</source>
<translation type="unfinished"></translation>
</message>
@@ -1564,7 +1533,7 @@ This indicates an inconsistency in the ui-file.</source>
<context>
<name>QAxWidgetTaskMenu</name>
<message>
- <location filename="../tools/designer/src/plugins/activeqt/qaxwidgettaskmenu.cpp" line="+89"/>
+ <location filename="../tools/designer/src/plugins/activeqt/qaxwidgettaskmenu.cpp" line="+119"/>
<source>Set Control</source>
<translation type="unfinished"></translation>
</message>
@@ -1587,7 +1556,7 @@ This indicates an inconsistency in the ui-file.</source>
<context>
<name>QCoreApplication</name>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_promotion.cpp" line="+53"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_promotion.cpp" line="+83"/>
<source>%1 is not a promoted class.</source>
<translation type="unfinished"></translation>
</message>
@@ -1637,7 +1606,7 @@ This indicates an inconsistency in the ui-file.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../tools/designer/src/lib/uilib/formscriptrunner.cpp" line="+58"/>
+ <location filename="../tools/designer/src/lib/uilib/formscriptrunner.cpp" line="+88"/>
<source>Exception at line %1: %2</source>
<translation type="unfinished"></translation>
</message>
@@ -1656,7 +1625,7 @@ Script: %3</source>
<context>
<name>QDesigner</name>
<message>
- <location filename="../tools/designer/src/designer/qdesigner.cpp" line="+111"/>
+ <location filename="../tools/designer/src/designer/qdesigner.cpp" line="+141"/>
<source>%1 - warning</source>
<translation type="unfinished"></translation>
</message>
@@ -1674,7 +1643,7 @@ Script: %3</source>
<context>
<name>QDesignerActions</name>
<message>
- <location filename="../tools/designer/src/designer/qdesigner_actions.cpp" line="+151"/>
+ <location filename="../tools/designer/src/designer/qdesigner_actions.cpp" line="+178"/>
<source>Edit Widgets</source>
<translation type="unfinished"></translation>
</message>
@@ -1841,12 +1810,12 @@ Do you want to update the file location or generate a new form?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+239"/>
+ <location line="+201"/>
<source>&amp;Close Preview</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-931"/>
+ <location line="-893"/>
<source>Save &amp;Image...</source>
<translation type="unfinished"></translation>
</message>
@@ -1870,7 +1839,7 @@ Would you like to retry?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+277"/>
+ <location line="+239"/>
<location line="+23"/>
<source>The backup file %1 could not be written.</source>
<translation type="unfinished"></translation>
@@ -1902,7 +1871,7 @@ Would you like to retry?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-1196"/>
+ <location line="-1158"/>
<source>&amp;New...</source>
<translation type="unfinished"></translation>
</message>
@@ -1933,12 +1902,12 @@ Would you like to retry?</source>
</message>
<message>
<location line="+1"/>
- <location line="+934"/>
+ <location line="+896"/>
<source>&amp;Close</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-929"/>
+ <location line="-891"/>
<source>View &amp;Code...</source>
<translation type="unfinished"></translation>
</message>
@@ -1949,23 +1918,23 @@ Would you like to retry?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+467"/>
+ <location line="+429"/>
<source>Preview failed</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-613"/>
+ <location line="-575"/>
<source>Code generation failed</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+328"/>
- <location line="+66"/>
+ <location line="+34"/>
<source>Assistant</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+265"/>
+ <location line="+259"/>
<source>Saved image %1.</source>
<translation type="unfinished"></translation>
</message>
@@ -1980,7 +1949,7 @@ Would you like to retry?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-1186"/>
+ <location line="-1148"/>
<source>ALT+CTRL+S</source>
<translation type="unfinished"></translation>
</message>
@@ -1988,7 +1957,7 @@ Would you like to retry?</source>
<context>
<name>QDesignerAppearanceOptionsPage</name>
<message>
- <location filename="../tools/designer/src/designer/qdesigner_appearanceoptions.cpp" line="+108"/>
+ <location filename="../tools/designer/src/designer/qdesigner_appearanceoptions.cpp" line="+138"/>
<source>Appearance</source>
<extracomment>Tab in preferences dialog</extracomment>
<translation type="unfinished"></translation>
@@ -2025,7 +1994,7 @@ Would you like to retry?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../tools/designer/src/plugins/activeqt/qdesigneraxwidget.cpp" line="+149"/>
+ <location filename="../tools/designer/src/plugins/activeqt/qdesigneraxwidget.cpp" line="+179"/>
<source>Control loaded</source>
<translation type="unfinished"></translation>
</message>
@@ -2038,7 +2007,7 @@ Would you like to retry?</source>
<context>
<name>QDesignerFormBuilder</name>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_formbuilder.cpp" line="+58"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_formbuilder.cpp" line="+88"/>
<source>Script errors occurred:</source>
<translation type="unfinished"></translation>
</message>
@@ -2056,7 +2025,7 @@ Would you like to retry?</source>
<context>
<name>QDesignerFormWindow</name>
<message>
- <location filename="../tools/designer/src/designer/qdesigner_formwindow.cpp" line="+187"/>
+ <location filename="../tools/designer/src/designer/qdesigner_formwindow.cpp" line="+217"/>
<source>%1 - %2[*]</source>
<translation type="unfinished"></translation>
</message>
@@ -2141,7 +2110,7 @@ Would you like to retry?</source>
<context>
<name>QDesignerPluginManager</name>
<message>
- <location filename="../tools/designer/src/lib/shared/pluginmanager.cpp" line="+197"/>
+ <location filename="../tools/designer/src/lib/shared/pluginmanager.cpp" line="+249"/>
<source>An XML error was encountered when parsing the XML of the custom widget %1: %2</source>
<translation type="unfinished"></translation>
</message>
@@ -2164,7 +2133,7 @@ Would you like to retry?</source>
<context>
<name>QDesignerPropertySheet</name>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_propertysheet.cpp" line="+717"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_propertysheet.cpp" line="+747"/>
<source>Dynamic Properties</source>
<translation type="unfinished"></translation>
</message>
@@ -2172,18 +2141,18 @@ Would you like to retry?</source>
<context>
<name>QDesignerResource</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/qdesigner_resource.cpp" line="-235"/>
+ <location filename="../tools/designer/src/components/formeditor/qdesigner_resource.cpp" line="-246"/>
<source>The layout type &apos;%1&apos; is not supported, defaulting to grid.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+331"/>
+ <location line="+342"/>
<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 type="unfinished"></translation>
</message>
<message>
- <location line="+598"/>
+ <location line="+599"/>
<source>Unexpected element &lt;%1&gt;</source>
<extracomment>Parsing clipboard contents</extracomment>
<translation type="unfinished"></translation>
@@ -2204,7 +2173,7 @@ Container pages should only be added by specifying them in XML returned by the d
<context>
<name>QDesignerSharedSettings</name>
<message>
- <location filename="../tools/designer/src/lib/shared/shared_settings.cpp" line="+53"/>
+ <location filename="../tools/designer/src/lib/shared/shared_settings.cpp" line="+83"/>
<source>The template path %1 could not be created.</source>
<translation type="unfinished"></translation>
</message>
@@ -2217,7 +2186,7 @@ Container pages should only be added by specifying them in XML returned by the d
<context>
<name>QDesignerToolWindow</name>
<message>
- <location filename="../tools/designer/src/designer/qdesigner_toolwindow.cpp" line="+160"/>
+ <location filename="../tools/designer/src/designer/qdesigner_toolwindow.cpp" line="+190"/>
<source>Property Editor</source>
<translation type="unfinished"></translation>
</message>
@@ -2250,7 +2219,7 @@ Container pages should only be added by specifying them in XML returned by the d
<context>
<name>QDesignerWidgetBox</name>
<message>
- <location filename="../tools/designer/src/components/widgetbox/widgetboxtreewidget.cpp" line="+318"/>
+ <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 type="unfinished"></translation>
</message>
@@ -2273,7 +2242,7 @@ Container pages should only be added by specifying them in XML returned by the d
<context>
<name>QDesignerWorkbench</name>
<message>
- <location filename="../tools/designer/src/designer/qdesigner_workbench.cpp" line="+169"/>
+ <location filename="../tools/designer/src/designer/qdesigner_workbench.cpp" line="+199"/>
<source>&amp;File</source>
<translation type="unfinished"></translation>
</message>
@@ -2348,7 +2317,7 @@ Container pages should only be added by specifying them in XML returned by the d
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+112"/>
+ <location line="+111"/>
<source>The file &lt;b&gt;%1&lt;/b&gt; could not be opened.</source>
<translation type="unfinished"></translation>
</message>
@@ -2358,7 +2327,7 @@ Container pages should only be added by specifying them in XML returned by the d
<translation type="unfinished"></translation>
</message>
<message numerus="yes">
- <location line="-260"/>
+ <location line="-259"/>
<source>There are %n forms with unsaved changes. Do you want to review these changes before quitting?</source>
<translation type="unfinished">
<numerusform></numerusform>
@@ -2368,7 +2337,7 @@ Container pages should only be added by specifying them in XML returned by the d
<context>
<name>QFormBuilder</name>
<message>
- <location filename="../tools/designer/src/lib/uilib/formbuilder.cpp" line="+130"/>
+ <location filename="../tools/designer/src/lib/uilib/formbuilder.cpp" line="+160"/>
<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 type="unfinished"></translation>
@@ -2389,7 +2358,7 @@ Container pages should only be added by specifying them in XML returned by the d
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../tools/designer/src/lib/uilib/properties.cpp" line="+76"/>
+ <location filename="../tools/designer/src/lib/uilib/properties.cpp" line="+106"/>
<source>The set-type property %1 could not be read.</source>
<translation type="unfinished"></translation>
</message>
@@ -2409,7 +2378,7 @@ Container pages should only be added by specifying them in XML returned by the d
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../tools/designer/src/lib/uilib/properties_p.h" line="+102"/>
+ <location filename="../tools/designer/src/lib/uilib/properties_p.h" line="+132"/>
<source>The enumeration-value &apos;%1&apos; is invalid. The default value &apos;%2&apos; will be used instead.</source>
<translation type="unfinished"></translation>
</message>
@@ -2422,7 +2391,7 @@ Container pages should only be added by specifying them in XML returned by the d
<context>
<name>QStackedWidgetEventFilter</name>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_stackedbox.cpp" line="+164"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_stackedbox.cpp" line="+194"/>
<source>Previous Page</source>
<translation type="unfinished"></translation>
</message>
@@ -2483,7 +2452,7 @@ Container pages should only be added by specifying them in XML returned by the d
<context>
<name>QTabWidgetEventFilter</name>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_tabwidget.cpp" line="+59"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_tabwidget.cpp" line="+89"/>
<source>Delete</source>
<translation type="unfinished"></translation>
</message>
@@ -2511,7 +2480,7 @@ Container pages should only be added by specifying them in XML returned by the d
<context>
<name>QToolBoxHelper</name>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_toolbox.cpp" line="+34"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_toolbox.cpp" line="+64"/>
<source>Delete Page</source>
<translation type="unfinished"></translation>
</message>
@@ -2549,7 +2518,7 @@ Container pages should only be added by specifying them in XML returned by the d
<context>
<name>QtBoolEdit</name>
<message>
- <location filename="../tools/shared/qtpropertybrowser/qtpropertybrowserutils.cpp" line="+198"/>
+ <location filename="../tools/shared/qtpropertybrowser/qtpropertybrowserutils.cpp" line="+226"/>
<location line="+10"/>
<location line="+25"/>
<source>True</source>
@@ -2565,7 +2534,7 @@ Container pages should only be added by specifying them in XML returned by the d
<context>
<name>QtBoolPropertyManager</name>
<message>
- <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="+1469"/>
+ <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="+1477"/>
<source>True</source>
<translation type="unfinished"></translation>
</message>
@@ -2578,7 +2547,7 @@ Container pages should only be added by specifying them in XML returned by the d
<context>
<name>QtCharEdit</name>
<message>
- <location filename="../tools/shared/qtpropertybrowser/qteditorfactory.cpp" line="+1573"/>
+ <location filename="../tools/shared/qtpropertybrowser/qteditorfactory.cpp" line="+1601"/>
<source>Clear Char</source>
<translation type="unfinished"></translation>
</message>
@@ -2594,7 +2563,7 @@ Container pages should only be added by specifying them in XML returned by the d
<context>
<name>QtColorPropertyManager</name>
<message>
- <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="+4769"/>
+ <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="+4777"/>
<source>Red</source>
<translation type="unfinished"></translation>
</message>
@@ -2774,7 +2743,7 @@ Container pages should only be added by specifying them in XML returned by the d
<context>
<name>QtGradientEditor</name>
<message>
- <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.cpp" line="+405"/>
+ <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.cpp" line="+435"/>
<source>Start X</source>
<translation type="unfinished"></translation>
</message>
@@ -3049,7 +3018,7 @@ Container pages should only be added by specifying them in XML returned by the d
<context>
<name>QtGradientStopsWidget</name>
<message>
- <location filename="../tools/shared/qtgradienteditor/qtgradientstopswidget.cpp" line="+919"/>
+ <location filename="../tools/shared/qtgradienteditor/qtgradientstopswidget.cpp" line="+949"/>
<source>New Stop</source>
<translation type="unfinished"></translation>
</message>
@@ -3087,7 +3056,7 @@ Container pages should only be added by specifying them in XML returned by the d
<context>
<name>QtGradientView</name>
<message>
- <location filename="../tools/shared/qtgradienteditor/qtgradientview.cpp" line="+77"/>
+ <location filename="../tools/shared/qtgradienteditor/qtgradientview.cpp" line="+107"/>
<source>Grad</source>
<translation type="unfinished"></translation>
</message>
@@ -3134,7 +3103,7 @@ Container pages should only be added by specifying them in XML returned by the d
<context>
<name>QtGradientViewDialog</name>
<message>
- <location filename="../tools/shared/qtgradienteditor/qtgradientviewdialog.h" line="+32"/>
+ <location filename="../tools/shared/qtgradienteditor/qtgradientviewdialog.h" line="+62"/>
<location filename="../tools/shared/qtgradienteditor/qtgradientviewdialog.ui"/>
<source>Select Gradient</source>
<translation type="unfinished"></translation>
@@ -3151,7 +3120,7 @@ Container pages should only be added by specifying them in XML returned by the d
<context>
<name>QtLocalePropertyManager</name>
<message>
- <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="-3553"/>
+ <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="-3561"/>
<source>%1, %2</source>
<translation type="unfinished"></translation>
</message>
@@ -3218,22 +3187,22 @@ Container pages should only be added by specifying them in XML returned by the d
<context>
<name>QtRectFPropertyManager</name>
<message>
- <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="+1705"/>
+ <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="+1716"/>
<source>[(%1, %2), %3 x %4]</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+155"/>
+ <location line="+156"/>
<source>X</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+9"/>
+ <location line="+8"/>
<source>Y</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+9"/>
+ <location line="+8"/>
<source>Width</source>
<translation type="unfinished"></translation>
</message>
@@ -3246,22 +3215,22 @@ Container pages should only be added by specifying them in XML returned by the d
<context>
<name>QtRectPropertyManager</name>
<message>
- <location line="-610"/>
+ <location line="-614"/>
<source>[(%1, %2), %3 x %4]</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+119"/>
+ <location line="+120"/>
<source>X</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+8"/>
+ <location line="+7"/>
<source>Y</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+8"/>
+ <location line="+7"/>
<source>Width</source>
<translation type="unfinished"></translation>
</message>
@@ -3274,7 +3243,7 @@ Container pages should only be added by specifying them in XML returned by the d
<context>
<name>QtResourceEditorDialog</name>
<message>
- <location filename="../tools/designer/src/lib/shared/qtresourceeditordialog.cpp" line="+46"/>
+ <location filename="../tools/designer/src/lib/shared/qtresourceeditordialog.cpp" line="+76"/>
<source>%1 already exists.
Do you want to replace it?</source>
<translation type="unfinished"></translation>
@@ -3285,7 +3254,7 @@ Do you want to replace it?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+900"/>
+ <location line="+902"/>
<source>%1 [read-only]</source>
<translation type="unfinished"></translation>
</message>
@@ -3554,7 +3523,7 @@ to
<context>
<name>QtResourceView</name>
<message>
- <location filename="../tools/designer/src/lib/shared/qtresourceview.cpp" line="+404"/>
+ <location filename="../tools/designer/src/lib/shared/qtresourceview.cpp" line="+435"/>
<source>Size: %1 x %2
%3</source>
<translation type="unfinished"></translation>
@@ -3586,7 +3555,7 @@ to
<context>
<name>QtSizeFPropertyManager</name>
<message>
- <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="-532"/>
+ <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="-537"/>
<source>%1 x %2</source>
<translation type="unfinished"></translation>
</message>
@@ -3604,7 +3573,7 @@ to
<context>
<name>QtSizePolicyPropertyManager</name>
<message>
- <location line="+1709"/>
+ <location line="+1719"/>
<location line="+1"/>
<source>&lt;Invalid&gt;</source>
<translation type="unfinished"></translation>
@@ -3638,7 +3607,7 @@ to
<context>
<name>QtSizePropertyManager</name>
<message>
- <location line="-2288"/>
+ <location line="-2298"/>
<source>%1 x %2</source>
<translation type="unfinished"></translation>
</message>
@@ -3656,7 +3625,7 @@ to
<context>
<name>QtToolBarDialog</name>
<message>
- <location filename="../tools/shared/qttoolbardialog/qttoolbardialog.cpp" line="+1759"/>
+ <location filename="../tools/shared/qttoolbardialog/qttoolbardialog.cpp" line="+1789"/>
<source>&lt; S E P A R A T O R &gt;</source>
<translation type="unfinished"></translation>
</message>
@@ -3764,7 +3733,7 @@ to
<context>
<name>QtTreePropertyBrowser</name>
<message>
- <location filename="../tools/shared/qtpropertybrowser/qttreepropertybrowser.cpp" line="+416"/>
+ <location filename="../tools/shared/qtpropertybrowser/qttreepropertybrowser.cpp" line="+442"/>
<source>Property</source>
<translation type="unfinished"></translation>
</message>
@@ -3777,7 +3746,7 @@ to
<context>
<name>SaveFormAsTemplate</name>
<message>
- <location filename="../tools/designer/src/designer/saveformastemplate.cpp" line="+42"/>
+ <location filename="../tools/designer/src/designer/saveformastemplate.cpp" line="+72"/>
<source>Add path...</source>
<translation type="unfinished"></translation>
</message>
@@ -3841,7 +3810,7 @@ Do you want overwrite the template?</source>
<context>
<name>ScriptErrorDialog</name>
<message>
- <location filename="../tools/designer/src/lib/shared/scripterrordialog.cpp" line="+33"/>
+ <location filename="../tools/designer/src/lib/shared/scripterrordialog.cpp" line="+63"/>
<source>An error occurred while running the scripts for &quot;%1&quot;:
</source>
<translation type="unfinished"></translation>
@@ -3873,7 +3842,7 @@ Do you want overwrite the template?</source>
<context>
<name>SignalSlotConnection</name>
<message>
- <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditor.cpp" line="-311"/>
+ <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditor.cpp" line="-358"/>
<source>SENDER(%1), SIGNAL(%2), RECEIVER(%3), SLOT(%4)</source>
<translation type="unfinished"></translation>
</message>
@@ -3914,7 +3883,7 @@ Do you want overwrite the template?</source>
<context>
<name>Spacer</name>
<message>
- <location filename="../tools/designer/src/lib/shared/spacer_widget.cpp" line="+245"/>
+ <location filename="../tools/designer/src/lib/shared/spacer_widget.cpp" line="+275"/>
<source>Horizontal Spacer &apos;%1&apos;, %2 x %3</source>
<translation type="unfinished"></translation>
</message>
@@ -3927,7 +3896,7 @@ Do you want overwrite the template?</source>
<context>
<name>TemplateOptionsPage</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/templateoptionspage.cpp" line="+126"/>
+ <location filename="../tools/designer/src/components/formeditor/templateoptionspage.cpp" line="+156"/>
<source>Template Paths</source>
<extracomment>Tab in preferences dialog</extracomment>
<translation type="unfinished"></translation>
@@ -3969,17 +3938,12 @@ Do you want overwrite the template?</source>
<context>
<name>VersionDialog</name>
<message>
- <location filename="../tools/designer/src/designer/versiondialog.cpp" line="+141"/>
+ <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 type="unfinished"></translation>
</message>
<message>
- <location line="+2"/>
- <source> Open Source Edition</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location line="+3"/>
+ <location line="+1"/>
<source>Qt Designer</source>
<translation type="unfinished"></translation>
</message>
@@ -3989,30 +3953,15 @@ Do you want overwrite the template?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+4"/>
- <source>This version of Qt Designer is part of the Qt Open Source Edition, for use in the development of Open Source applications. Qt is a comprehensive C++ framework for cross-platform application development.&lt;br/&gt;&lt;br/&gt;You need a commercial Qt license for development of proprietary (closed source) applications. Please see &lt;a href=&quot;http://qtsoftware.com/company/about/businessmodel&quot;&gt;http://qtsoftware.com/company/about/businessmodel.html&lt;/a&gt; for an overview of Qt licensing.&lt;br/&gt;</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location line="+12"/>
- <source>This program is licensed to you under the terms of the Qt Commercial License Agreement. For details, see the file LICENSE that came with this software distribution.&lt;br/&gt;</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<location line="+5"/>
<source>%1&lt;br/&gt;%2&lt;br/&gt;Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).&lt;br/&gt;&lt;br/&gt;The program is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.&lt;br/&gt; </source>
<translation type="unfinished"></translation>
</message>
- <message>
- <location line="-9"/>
- <source>This program is licensed to you under the terms of the Qt %1 License Agreement. For details, see the license file that came with this software distribution.&lt;br/&gt;</source>
- <translation type="unfinished"></translation>
- </message>
</context>
<context>
<name>WidgetDataBase</name>
<message>
- <location filename="../tools/designer/src/lib/shared/widgetdatabase.cpp" line="+786"/>
+ <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 type="unfinished"></translation>
</message>
@@ -4020,22 +3969,22 @@ Do you want overwrite the template?</source>
<context>
<name>qdesigner_internal::ActionEditor</name>
<message>
- <location filename="../tools/designer/src/lib/shared/actioneditor.cpp" line="+111"/>
+ <location filename="../tools/designer/src/lib/shared/actioneditor.cpp" line="+143"/>
<source>Actions</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-15"/>
+ <location line="-16"/>
<source>New...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+6"/>
+ <location line="+7"/>
<source>Delete</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+305"/>
+ <location line="+307"/>
<source>New action</source>
<translation type="unfinished"></translation>
</message>
@@ -4045,12 +3994,17 @@ Do you want overwrite the template?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-408"/>
+ <location line="-411"/>
<source>Edit...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
+ <source>Go to slot...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
<source>Copy</source>
<translation type="unfinished"></translation>
</message>
@@ -4070,7 +4024,7 @@ Do you want overwrite the template?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+55"/>
+ <location line="+57"/>
<source>Icon View</source>
<translation type="unfinished"></translation>
</message>
@@ -4080,7 +4034,7 @@ Do you want overwrite the template?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+406"/>
+ <location line="+412"/>
<source>Remove actions</source>
<translation type="unfinished"></translation>
</message>
@@ -4090,12 +4044,12 @@ Do you want overwrite the template?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+183"/>
+ <location line="+186"/>
<source>Used In</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-598"/>
+ <location line="-607"/>
<source>Configure Action Editor</source>
<translation type="unfinished"></translation>
</message>
@@ -4103,7 +4057,7 @@ Do you want overwrite the template?</source>
<context>
<name>qdesigner_internal::ActionModel</name>
<message>
- <location filename="../tools/designer/src/lib/shared/actionrepository.cpp" line="+64"/>
+ <location filename="../tools/designer/src/lib/shared/actionrepository.cpp" line="+95"/>
<source>Name</source>
<translation type="unfinished"></translation>
</message>
@@ -4136,7 +4090,7 @@ Do you want overwrite the template?</source>
<context>
<name>qdesigner_internal::BuddyEditor</name>
<message>
- <location filename="../tools/designer/src/components/buddyeditor/buddyeditor.cpp" line="+235"/>
+ <location filename="../tools/designer/src/components/buddyeditor/buddyeditor.cpp" line="+265"/>
<source>Add buddy</source>
<translation type="unfinished"></translation>
</message>
@@ -4168,7 +4122,7 @@ Do you want overwrite the template?</source>
<context>
<name>qdesigner_internal::BuddyEditorPlugin</name>
<message>
- <location filename="../tools/designer/src/components/buddyeditor/buddyeditor_plugin.cpp" line="+47"/>
+ <location filename="../tools/designer/src/components/buddyeditor/buddyeditor_plugin.cpp" line="+77"/>
<source>Edit Buddies</source>
<translation type="unfinished"></translation>
</message>
@@ -4176,7 +4130,7 @@ Do you want overwrite the template?</source>
<context>
<name>qdesigner_internal::BuddyEditorTool</name>
<message>
- <location filename="../tools/designer/src/components/buddyeditor/buddyeditor_tool.cpp" line="+30"/>
+ <location filename="../tools/designer/src/components/buddyeditor/buddyeditor_tool.cpp" line="+60"/>
<source>Edit Buddies</source>
<translation type="unfinished"></translation>
</message>
@@ -4230,7 +4184,7 @@ Do you want overwrite the template?</source>
<context>
<name>qdesigner_internal::CodeDialog</name>
<message>
- <location filename="../tools/designer/src/lib/shared/codedialog.cpp" line="+69"/>
+ <location filename="../tools/designer/src/lib/shared/codedialog.cpp" line="+99"/>
<source>Save...</source>
<translation type="unfinished"></translation>
</message>
@@ -4288,7 +4242,7 @@ Do you want overwrite the template?</source>
<context>
<name>qdesigner_internal::ColorAction</name>
<message>
- <location filename="../tools/designer/src/lib/shared/richtexteditor.cpp" line="+220"/>
+ <location filename="../tools/designer/src/lib/shared/richtexteditor.cpp" line="+250"/>
<source>Text Color</source>
<translation type="unfinished"></translation>
</message>
@@ -4296,7 +4250,7 @@ Do you want overwrite the template?</source>
<context>
<name>qdesigner_internal::ComboBoxTaskMenu</name>
<message>
- <location filename="../tools/designer/src/components/taskmenu/combobox_taskmenu.cpp" line="+42"/>
+ <location filename="../tools/designer/src/components/taskmenu/combobox_taskmenu.cpp" line="+72"/>
<source>Edit Items...</source>
<translation type="unfinished"></translation>
</message>
@@ -4388,7 +4342,7 @@ Do you want overwrite the template?</source>
<context>
<name>qdesigner_internal::ContainerWidgetTaskMenu</name>
<message>
- <location filename="../tools/designer/src/components/taskmenu/containerwidget_taskmenu.cpp" line="+82"/>
+ <location filename="../tools/designer/src/components/taskmenu/containerwidget_taskmenu.cpp" line="+112"/>
<source>Insert Page Before Current Page</source>
<translation type="unfinished"></translation>
</message>
@@ -4451,7 +4405,7 @@ Do you want overwrite the template?</source>
<context>
<name>qdesigner_internal::DesignerPropertyManager</name>
<message>
- <location filename="../tools/designer/src/components/propertyeditor/designerpropertymanager.cpp" line="+614"/>
+ <location filename="../tools/designer/src/components/propertyeditor/designerpropertymanager.cpp" line="+644"/>
<location line="+6"/>
<source>AlignLeft</source>
<translation type="unfinished"></translation>
@@ -4576,7 +4530,7 @@ Do you want overwrite the template?</source>
<context>
<name>qdesigner_internal::DeviceProfileDialog</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/deviceprofiledialog.cpp" line="+33"/>
+ <location filename="../tools/designer/src/components/formeditor/deviceprofiledialog.cpp" line="+63"/>
<source>Device Profiles (*.%1)</source>
<translation type="unfinished"></translation>
</message>
@@ -4736,7 +4690,7 @@ Do you want overwrite the template?</source>
<context>
<name>qdesigner_internal::FilterWidget</name>
<message>
- <location filename="../tools/designer/src/lib/shared/filterwidget.cpp" line="+155"/>
+ <location filename="../tools/designer/src/lib/shared/filterwidget.cpp" line="+185"/>
<source>&lt;Filter&gt;</source>
<translation type="unfinished"></translation>
</message>
@@ -4744,7 +4698,7 @@ Do you want overwrite the template?</source>
<context>
<name>qdesigner_internal::FormEditor</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/formeditor.cpp" line="+160"/>
+ <location filename="../tools/designer/src/components/formeditor/formeditor.cpp" line="+190"/>
<source>Resource File Changed</source>
<translation type="unfinished"></translation>
</message>
@@ -4765,7 +4719,7 @@ Do you want overwrite the template?</source>
<context>
<name>qdesigner_internal::FormWindow</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/formwindow.cpp" line="-1262"/>
+ <location filename="../tools/designer/src/components/formeditor/formwindow.cpp" line="-1267"/>
<source>Edit contents</source>
<translation type="unfinished"></translation>
</message>
@@ -4775,7 +4729,7 @@ Do you want overwrite the template?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+836"/>
+ <location line="+841"/>
<source>Resize</source>
<translation type="unfinished"></translation>
</message>
@@ -4859,7 +4813,7 @@ Do you want overwrite the template?</source>
<context>
<name>qdesigner_internal::FormWindowBase</name>
<message>
- <location filename="../tools/designer/src/lib/shared/formwindowbase.cpp" line="+363"/>
+ <location filename="../tools/designer/src/lib/shared/formwindowbase.cpp" line="+397"/>
<source>Delete</source>
<translation type="unfinished"></translation>
</message>
@@ -4872,7 +4826,7 @@ Do you want overwrite the template?</source>
<context>
<name>qdesigner_internal::FormWindowManager</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/formwindowmanager.cpp" line="+338"/>
+ <location filename="../tools/designer/src/components/formeditor/formwindowmanager.cpp" line="+368"/>
<source>Cu&amp;t</source>
<translation type="unfinished"></translation>
</message>
@@ -4954,7 +4908,7 @@ Do you want overwrite the template?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+7"/>
+ <location line="+6"/>
<source>Lay Out &amp;Horizontally</source>
<translation type="unfinished"></translation>
</message>
@@ -5004,7 +4958,7 @@ Do you want overwrite the template?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+6"/>
+ <location line="+7"/>
<source>&amp;Break Layout</source>
<translation type="unfinished"></translation>
</message>
@@ -5029,7 +4983,7 @@ Do you want overwrite the template?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+75"/>
+ <location line="+78"/>
<source>Break Layout</source>
<translation type="unfinished"></translation>
</message>
@@ -5045,17 +4999,17 @@ Do you want overwrite the template?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+336"/>
+ <location line="+341"/>
<source>Form Settings - %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-502"/>
+ <location line="-510"/>
<source>Removes empty columns and rows</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-49"/>
+ <location line="-50"/>
<source>Lay Out in a &amp;Form Layout</source>
<translation type="unfinished"></translation>
</message>
@@ -5065,7 +5019,7 @@ Do you want overwrite the template?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+44"/>
+ <location line="+45"/>
<source>Si&amp;mplify Grid Layout</source>
<translation type="unfinished"></translation>
</message>
@@ -5073,7 +5027,7 @@ Do you want overwrite the template?</source>
<context>
<name>qdesigner_internal::FormWindowSettings</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/formwindowsettings.cpp" line="+162"/>
+ <location filename="../tools/designer/src/components/formeditor/formwindowsettings.cpp" line="+193"/>
<source>None</source>
<translation type="unfinished"></translation>
</message>
@@ -5124,7 +5078,7 @@ Do you want overwrite the template?</source>
<context>
<name>qdesigner_internal::GroupBoxTaskMenu</name>
<message>
- <location filename="../tools/designer/src/components/taskmenu/groupbox_taskmenu.cpp" line="+56"/>
+ <location filename="../tools/designer/src/components/taskmenu/groupbox_taskmenu.cpp" line="+86"/>
<source>Change title...</source>
<translation type="unfinished"></translation>
</message>
@@ -5140,7 +5094,7 @@ Do you want overwrite the template?</source>
<context>
<name>qdesigner_internal::IconSelector</name>
<message>
- <location filename="../tools/designer/src/lib/shared/iconselector.cpp" line="+210"/>
+ <location filename="../tools/designer/src/lib/shared/iconselector.cpp" line="+211"/>
<source>The pixmap file &apos;%1&apos; cannot be read.</source>
<translation type="unfinished"></translation>
</message>
@@ -5292,7 +5246,7 @@ Do you want overwrite the template?</source>
<context>
<name>qdesigner_internal::LabelTaskMenu</name>
<message>
- <location filename="../tools/designer/src/components/taskmenu/label_taskmenu.cpp" line="+59"/>
+ <location filename="../tools/designer/src/components/taskmenu/label_taskmenu.cpp" line="+89"/>
<source>Change rich text...</source>
<translation type="unfinished"></translation>
</message>
@@ -5305,7 +5259,7 @@ Do you want overwrite the template?</source>
<context>
<name>qdesigner_internal::LineEditTaskMenu</name>
<message>
- <location filename="../tools/designer/src/components/taskmenu/lineedit_taskmenu.cpp" line="+54"/>
+ <location filename="../tools/designer/src/components/taskmenu/lineedit_taskmenu.cpp" line="+84"/>
<source>Change text...</source>
<translation type="unfinished"></translation>
</message>
@@ -5313,7 +5267,7 @@ Do you want overwrite the template?</source>
<context>
<name>qdesigner_internal::ListWidgetEditor</name>
<message>
- <location filename="../tools/designer/src/components/taskmenu/listwidgeteditor.cpp" line="+75"/>
+ <location filename="../tools/designer/src/components/taskmenu/listwidgeteditor.cpp" line="+105"/>
<source>Edit List Widget</source>
<translation type="unfinished"></translation>
</message>
@@ -5331,7 +5285,7 @@ Do you want overwrite the template?</source>
<context>
<name>qdesigner_internal::ListWidgetTaskMenu</name>
<message>
- <location filename="../tools/designer/src/components/taskmenu/listwidget_taskmenu.cpp" line="+41"/>
+ <location filename="../tools/designer/src/components/taskmenu/listwidget_taskmenu.cpp" line="+71"/>
<source>Edit Items...</source>
<translation type="unfinished"></translation>
</message>
@@ -5367,7 +5321,7 @@ Do you want overwrite the template?</source>
<context>
<name>qdesigner_internal::MenuTaskMenu</name>
<message>
- <location filename="../tools/designer/src/components/taskmenu/menutaskmenu.cpp" line="+30"/>
+ <location filename="../tools/designer/src/components/taskmenu/menutaskmenu.cpp" line="+60"/>
<source>Remove</source>
<translation type="unfinished"></translation>
</message>
@@ -5426,7 +5380,7 @@ Do you want overwrite the template?</source>
<context>
<name>qdesigner_internal::NewDynamicPropertyDialog</name>
<message>
- <location filename="../tools/designer/src/components/propertyeditor/newdynamicpropertydialog.cpp" line="+104"/>
+ <location filename="../tools/designer/src/components/propertyeditor/newdynamicpropertydialog.cpp" line="+134"/>
<source>Set Property Name</source>
<translation type="unfinished"></translation>
</message>
@@ -5545,7 +5499,7 @@ Please select another name.</source>
<context>
<name>qdesigner_internal::NewPromotedClassPanel</name>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_promotiondialog.cpp" line="+66"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_promotiondialog.cpp" line="+96"/>
<source>Add</source>
<translation type="unfinished"></translation>
</message>
@@ -5583,7 +5537,7 @@ Please select another name.</source>
<context>
<name>qdesigner_internal::ObjectInspector</name>
<message>
- <location filename="../tools/designer/src/components/objectinspector/objectinspector.cpp" line="+727"/>
+ <location filename="../tools/designer/src/components/objectinspector/objectinspector.cpp" line="+758"/>
<source>&amp;Find in Text...</source>
<translation type="unfinished"></translation>
</message>
@@ -5599,7 +5553,7 @@ Please select another name.</source>
<context>
<name>qdesigner_internal::OrderDialog</name>
<message>
- <location filename="../tools/designer/src/lib/shared/orderdialog.cpp" line="+83"/>
+ <location filename="../tools/designer/src/lib/shared/orderdialog.cpp" line="+113"/>
<source>Index %1 (%2)</source>
<translation type="unfinished"></translation>
</message>
@@ -5680,7 +5634,7 @@ Please select another name.</source>
<context>
<name>qdesigner_internal::PaletteEditorButton</name>
<message>
- <location filename="../tools/designer/src/components/propertyeditor/paletteeditorbutton.cpp" line="+31"/>
+ <location filename="../tools/designer/src/components/propertyeditor/paletteeditorbutton.cpp" line="+61"/>
<source>Change Palette</source>
<translation type="unfinished"></translation>
</message>
@@ -5688,7 +5642,7 @@ Please select another name.</source>
<context>
<name>qdesigner_internal::PaletteModel</name>
<message>
- <location filename="../tools/designer/src/components/propertyeditor/paletteeditor.cpp" line="+351"/>
+ <location filename="../tools/designer/src/components/propertyeditor/paletteeditor.cpp" line="+381"/>
<source>Color Role</source>
<translation type="unfinished"></translation>
</message>
@@ -5740,15 +5694,53 @@ Please select another name.</source>
<context>
<name>qdesigner_internal::PlainTextEditorDialog</name>
<message>
- <location filename="../tools/designer/src/lib/shared/plaintexteditor.cpp" line="+39"/>
+ <location filename="../tools/designer/src/lib/shared/plaintexteditor.cpp" line="+69"/>
<source>Edit text</source>
<translation type="unfinished"></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 type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+13"/>
+ <source>Plugin Information</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Refresh</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Scan for newly installed custom widget plugins.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+48"/>
+ <source>Qt Designer couldn&apos;t find any plugins</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Qt Designer found the following plugins</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+55"/>
+ <source>New custom widget plugins have been found.</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
<name>qdesigner_internal::PreviewActionGroup</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/previewactiongroup.cpp" line="+65"/>
+ <location filename="../tools/designer/src/components/formeditor/previewactiongroup.cpp" line="+95"/>
<source>%1 Style</source>
<translation type="unfinished"></translation>
</message>
@@ -5790,7 +5782,7 @@ Please select another name.</source>
<context>
<name>qdesigner_internal::PreviewDeviceSkin</name>
<message>
- <location filename="../tools/designer/src/lib/shared/previewmanager.cpp" line="+188"/>
+ <location filename="../tools/designer/src/lib/shared/previewmanager.cpp" line="+218"/>
<source>&amp;Close</source>
<translation type="unfinished"></translation>
</message>
@@ -5887,7 +5879,7 @@ Please select another name.</source>
<context>
<name>qdesigner_internal::PromotionTaskMenu</name>
<message>
- <location filename="../tools/designer/src/lib/shared/promotiontaskmenu.cpp" line="+55"/>
+ <location filename="../tools/designer/src/lib/shared/promotiontaskmenu.cpp" line="+85"/>
<source>Promoted widgets...</source>
<translation type="unfinished"></translation>
</message>
@@ -5915,7 +5907,7 @@ Please select another name.</source>
<context>
<name>qdesigner_internal::PropertyEditor</name>
<message>
- <location filename="../tools/designer/src/components/propertyeditor/propertyeditor.cpp" line="+158"/>
+ <location filename="../tools/designer/src/components/propertyeditor/propertyeditor.cpp" line="+188"/>
<source>Add Dynamic Property...</source>
<translation type="unfinished"></translation>
</message>
@@ -5974,7 +5966,7 @@ Class: %2</source>
<context>
<name>qdesigner_internal::PropertyLineEdit</name>
<message>
- <location filename="../tools/designer/src/lib/shared/propertylineedit.cpp" line="+58"/>
+ <location filename="../tools/designer/src/lib/shared/propertylineedit.cpp" line="+88"/>
<source>Insert line break</source>
<translation type="unfinished"></translation>
</message>
@@ -6033,14 +6025,14 @@ Class: %2</source>
<context>
<name>qdesigner_internal::QDesignerTaskMenu</name>
<message numerus="yes">
- <location filename="../tools/designer/src/lib/shared/qdesigner_taskmenu.cpp" line="+538"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_taskmenu.cpp" line="+560"/>
<source>Set size constraint on %n widget(s)</source>
<translation type="unfinished">
<numerusform></numerusform>
</translation>
</message>
<message>
- <location line="-470"/>
+ <location line="-492"/>
<source>Change objectName...</source>
<translation type="unfinished"></translation>
</message>
@@ -6130,7 +6122,7 @@ Class: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+236"/>
+ <location line="+235"/>
<source>Edit ToolTip</source>
<translation type="unfinished"></translation>
</message>
@@ -6140,7 +6132,7 @@ Class: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+127"/>
+ <location line="+144"/>
<source>no signals available</source>
<translation type="unfinished"></translation>
</message>
@@ -6148,7 +6140,7 @@ Class: %2</source>
<context>
<name>qdesigner_internal::QDesignerWidgetBox</name>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_widgetbox.cpp" line="+97"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_widgetbox.cpp" line="+127"/>
<location line="+13"/>
<source>Unexpected element &lt;%1&gt;</source>
<translation type="unfinished"></translation>
@@ -6202,7 +6194,7 @@ Class: %2</source>
<context>
<name>qdesigner_internal::QtGradientStopsController</name>
<message>
- <location filename="../tools/shared/qtgradienteditor/qtgradientstopscontroller.cpp" line="+147"/>
+ <location filename="../tools/shared/qtgradienteditor/qtgradientstopscontroller.cpp" line="+177"/>
<source>H</source>
<translation type="unfinished"></translation>
</message>
@@ -6377,7 +6369,7 @@ Class: %2</source>
<context>
<name>qdesigner_internal::ScriptDialog</name>
<message>
- <location filename="../tools/designer/src/lib/shared/scriptdialog.cpp" line="+38"/>
+ <location filename="../tools/designer/src/lib/shared/scriptdialog.cpp" line="+68"/>
<source>Edit script</source>
<translation type="unfinished"></translation>
</message>
@@ -6427,7 +6419,7 @@ Class: %2</source>
<context>
<name>qdesigner_internal::SignalSlotEditorPlugin</name>
<message>
- <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditor_plugin.cpp" line="+46"/>
+ <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditor_plugin.cpp" line="+76"/>
<source>Edit Signals/Slots</source>
<translation type="unfinished"></translation>
</message>
@@ -6440,7 +6432,7 @@ Class: %2</source>
<context>
<name>qdesigner_internal::SignalSlotEditorTool</name>
<message>
- <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditor_tool.cpp" line="+32"/>
+ <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditor_tool.cpp" line="+62"/>
<source>Edit Signals/Slots</source>
<translation type="unfinished"></translation>
</message>
@@ -6448,7 +6440,7 @@ Class: %2</source>
<context>
<name>qdesigner_internal::StatusBarTaskMenu</name>
<message>
- <location filename="../tools/designer/src/components/taskmenu/toolbar_taskmenu.cpp" line="+55"/>
+ <location filename="../tools/designer/src/components/taskmenu/toolbar_taskmenu.cpp" line="+85"/>
<source>Remove</source>
<translation type="unfinished"></translation>
</message>
@@ -6456,7 +6448,7 @@ Class: %2</source>
<context>
<name>qdesigner_internal::StringListEditorButton</name>
<message>
- <location filename="../tools/designer/src/components/propertyeditor/stringlisteditorbutton.cpp" line="+30"/>
+ <location filename="../tools/designer/src/components/propertyeditor/stringlisteditorbutton.cpp" line="+60"/>
<source>Change String List</source>
<translation type="unfinished"></translation>
</message>
@@ -6464,7 +6456,7 @@ Class: %2</source>
<context>
<name>qdesigner_internal::StyleSheetEditorDialog</name>
<message>
- <location filename="../tools/designer/src/lib/shared/stylesheeteditor.cpp" line="+71"/>
+ <location filename="../tools/designer/src/lib/shared/stylesheeteditor.cpp" line="+101"/>
<source>Edit Style Sheet</source>
<translation type="unfinished"></translation>
</message>
@@ -6503,7 +6495,7 @@ Class: %2</source>
<context>
<name>qdesigner_internal::TabOrderEditor</name>
<message>
- <location filename="../tools/designer/src/components/tabordereditor/tabordereditor.cpp" line="+333"/>
+ <location filename="../tools/designer/src/components/tabordereditor/tabordereditor.cpp" line="+363"/>
<source>Start from Here</source>
<translation type="unfinished"></translation>
</message>
@@ -6531,7 +6523,7 @@ Class: %2</source>
<context>
<name>qdesigner_internal::TabOrderEditorPlugin</name>
<message>
- <location filename="../tools/designer/src/components/tabordereditor/tabordereditor_plugin.cpp" line="+47"/>
+ <location filename="../tools/designer/src/components/tabordereditor/tabordereditor_plugin.cpp" line="+77"/>
<source>Edit Tab Order</source>
<translation type="unfinished"></translation>
</message>
@@ -6539,7 +6531,7 @@ Class: %2</source>
<context>
<name>qdesigner_internal::TabOrderEditorTool</name>
<message>
- <location filename="../tools/designer/src/components/tabordereditor/tabordereditor_tool.cpp" line="+31"/>
+ <location filename="../tools/designer/src/components/tabordereditor/tabordereditor_tool.cpp" line="+61"/>
<source>Edit Tab Order</source>
<translation type="unfinished"></translation>
</message>
@@ -6547,7 +6539,7 @@ Class: %2</source>
<context>
<name>qdesigner_internal::TableWidgetEditor</name>
<message>
- <location filename="../tools/designer/src/components/taskmenu/tablewidgeteditor.cpp" line="+41"/>
+ <location filename="../tools/designer/src/components/taskmenu/tablewidgeteditor.cpp" line="+71"/>
<source>New Column</source>
<translation type="unfinished"></translation>
</message>
@@ -6596,7 +6588,7 @@ Class: %2</source>
<context>
<name>qdesigner_internal::TableWidgetTaskMenu</name>
<message>
- <location filename="../tools/designer/src/components/taskmenu/tablewidget_taskmenu.cpp" line="+38"/>
+ <location filename="../tools/designer/src/components/taskmenu/tablewidget_taskmenu.cpp" line="+68"/>
<source>Edit Items...</source>
<translation type="unfinished"></translation>
</message>
@@ -6627,7 +6619,7 @@ Class: %2</source>
<context>
<name>qdesigner_internal::TextEditTaskMenu</name>
<message>
- <location filename="../tools/designer/src/components/taskmenu/textedit_taskmenu.cpp" line="+33"/>
+ <location filename="../tools/designer/src/components/taskmenu/textedit_taskmenu.cpp" line="+63"/>
<source>Change HTML...</source>
<translation type="unfinished"></translation>
</message>
@@ -6673,7 +6665,7 @@ Class: %2</source>
<context>
<name>qdesigner_internal::ToolBarEventFilter</name>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_toolbar.cpp" line="+209"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_toolbar.cpp" line="+239"/>
<source>Insert Separator</source>
<translation type="unfinished"></translation>
</message>
@@ -6701,7 +6693,7 @@ Class: %2</source>
<context>
<name>qdesigner_internal::TreeWidgetEditor</name>
<message>
- <location filename="../tools/designer/src/components/taskmenu/treewidgeteditor.cpp" line="+50"/>
+ <location filename="../tools/designer/src/components/taskmenu/treewidgeteditor.cpp" line="+80"/>
<source>&amp;Columns</source>
<translation type="unfinished"></translation>
</message>
@@ -6827,7 +6819,7 @@ Class: %2</source>
<context>
<name>qdesigner_internal::TreeWidgetTaskMenu</name>
<message>
- <location filename="../tools/designer/src/components/taskmenu/treewidget_taskmenu.cpp" line="+37"/>
+ <location filename="../tools/designer/src/components/taskmenu/treewidget_taskmenu.cpp" line="+67"/>
<source>Edit Items...</source>
<translation type="unfinished"></translation>
</message>
@@ -6835,7 +6827,7 @@ Class: %2</source>
<context>
<name>qdesigner_internal::WidgetBox</name>
<message>
- <location filename="../tools/designer/src/components/widgetbox/widgetbox_dnditem.cpp" line="+83"/>
+ <location filename="../tools/designer/src/components/widgetbox/widgetbox_dnditem.cpp" line="+113"/>
<source>Warning: Widget creation failed in the widget box. This could be caused by invalid custom widget XML.</source>
<translation type="unfinished"></translation>
</message>
@@ -6843,17 +6835,17 @@ Class: %2</source>
<context>
<name>qdesigner_internal::WidgetBoxTreeWidget</name>
<message>
- <location filename="../tools/designer/src/components/widgetbox/widgetboxtreewidget.cpp" line="-267"/>
+ <location filename="../tools/designer/src/components/widgetbox/widgetboxtreewidget.cpp" line="-268"/>
<source>Scratchpad</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+360"/>
+ <location line="+370"/>
<source>Custom Widgets</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+261"/>
+ <location line="+260"/>
<source>Expand all</source>
<translation type="unfinished"></translation>
</message>
@@ -6894,7 +6886,7 @@ Class: %2</source>
<context>
<name>qdesigner_internal::WidgetEditorTool</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/tool_widgeteditor.cpp" line="+41"/>
+ <location filename="../tools/designer/src/components/formeditor/tool_widgeteditor.cpp" line="+71"/>
<source>Edit Widgets</source>
<translation type="unfinished"></translation>
</message>
@@ -6902,12 +6894,12 @@ Class: %2</source>
<context>
<name>qdesigner_internal::WidgetFactory</name>
<message>
- <location filename="../tools/designer/src/lib/shared/widgetfactory.cpp" line="+237"/>
+ <location filename="../tools/designer/src/lib/shared/widgetfactory.cpp" line="+267"/>
<source>The custom widget factory registered for widgets of class %1 returned 0.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+40"/>
+ <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 type="unfinished"></translation>
</message>
@@ -6949,7 +6941,7 @@ This indicates an inconsistency in the ui-file.</source>
<context>
<name>qdesigner_internal::ZoomMenu</name>
<message>
- <location filename="../tools/designer/src/lib/shared/zoomwidget.cpp" line="+54"/>
+ <location filename="../tools/designer/src/lib/shared/zoomwidget.cpp" line="+84"/>
<source>%1 %</source>
<extracomment>Zoom factor</extracomment>
<translation type="unfinished"></translation>
diff --git a/translations/designer_zh_CN.ts b/translations/designer_zh_CN.ts
index 0024ea3..5a78afaa 100644
--- a/translations/designer_zh_CN.ts
+++ b/translations/designer_zh_CN.ts
@@ -1,23 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.0" language="zh">
-<defaultcodec></defaultcodec>
<context>
<name></name>
<message>
- <location filename="../tools/designer/src/components/propertyeditor/previewframe.cpp" line="+43"/>
+ <location filename="../tools/designer/src/components/propertyeditor/previewframe.cpp" line="+73"/>
<source>The moose in the noose
ate the goose who was loose.</source>
<translation>The moose in the noose
ate the goose who was loose.</translation>
</message>
<message>
- <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditorwindow.cpp" line="+624"/>
+ <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditorwindow.cpp" line="+647"/>
<source>&lt;object&gt;</source>
<translation>&lt;对象&gt;</translation>
</message>
<message>
- <location line="+16"/>
+ <location line="+18"/>
<source>&lt;signal&gt;</source>
<translation>&lt;ä¿¡å·&gt;</translation>
</message>
@@ -45,7 +44,7 @@ ate the goose who was loose.</translation>
<context>
<name>AbstractFindWidget</name>
<message>
- <location filename="../tools/shared/findwidget/abstractfindwidget.cpp" line="+97"/>
+ <location filename="../tools/shared/findwidget/abstractfindwidget.cpp" line="+127"/>
<source>&amp;Previous</source>
<translation>&amp;上一个</translation>
</message>
@@ -91,7 +90,7 @@ ate the goose who was loose.</translation>
<context>
<name>AppFontDialog</name>
<message>
- <location filename="../tools/designer/src/designer/appfontdialog.cpp" line="+388"/>
+ <location filename="../tools/designer/src/designer/appfontdialog.cpp" line="+418"/>
<source>Additional Fonts</source>
<translation>附加字体</translation>
</message>
@@ -203,7 +202,7 @@ ate the goose who was loose.</translation>
<context>
<name>AssistantClient</name>
<message>
- <location filename="../tools/designer/src/designer/assistantclient.cpp" line="+70"/>
+ <location filename="../tools/designer/src/designer/assistantclient.cpp" line="+100"/>
<source>Unable to send request: Assistant is not responding.</source>
<translation>无法å‘é€è¯·æ±‚:助手无å“应。</translation>
</message>
@@ -221,7 +220,7 @@ ate the goose who was loose.</translation>
<context>
<name>BrushManagerProxy</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/brushmanagerproxy.cpp" line="+191"/>
+ <location filename="../tools/designer/src/components/formeditor/brushmanagerproxy.cpp" line="+221"/>
<source>The element &apos;%1&apos; is missing the required attribute &apos;%2&apos;.</source>
<translation>组件“%1â€ç¼ºå°‘必需的属性“%2â€ã€‚</translation>
</message>
@@ -249,7 +248,7 @@ ate the goose who was loose.</translation>
<context>
<name>BrushPropertyManager</name>
<message>
- <location filename="../tools/designer/src/components/propertyeditor/brushpropertymanager.cpp" line="+22"/>
+ <location filename="../tools/designer/src/components/propertyeditor/brushpropertymanager.cpp" line="+52"/>
<source>No brush</source>
<translation>无画刷</translation>
</message>
@@ -342,19 +341,24 @@ ate the goose who was loose.</translation>
<context>
<name>Command</name>
<message>
- <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditor.cpp" line="+177"/>
- <location line="+211"/>
+ <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditor.cpp" line="+208"/>
+ <location line="+258"/>
<source>Change signal</source>
<translation>改å˜ä¿¡å·</translation>
</message>
<message>
- <location line="-209"/>
- <location line="+221"/>
+ <location line="-256"/>
+ <location line="+268"/>
<source>Change slot</source>
<translation>改å˜æ§½</translation>
</message>
<message>
- <location line="+14"/>
+ <location line="-220"/>
+ <source>Change signal-slot connection</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+234"/>
<source>Change sender</source>
<translation>改å˜å‘é€è€…</translation>
</message>
@@ -364,7 +368,7 @@ ate the goose who was loose.</translation>
<translation>改å˜æŽ¥æ”¶è€…</translation>
</message>
<message>
- <location filename="../tools/designer/src/lib/shared/connectionedit.cpp" line="+113"/>
+ <location filename="../tools/designer/src/lib/shared/connectionedit.cpp" line="+143"/>
<source>Add connection</source>
<translation>添加连接</translation>
</message>
@@ -397,7 +401,7 @@ ate the goose who was loose.</translation>
<translation type="obsolete">é‡ç½®â€œ%2â€çš„“%1â€</translation>
</message>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_command.cpp" line="+117"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_command.cpp" line="+149"/>
<source>Insert &apos;%1&apos;</source>
<translation>æ’入“%1â€</translation>
</message>
@@ -422,7 +426,7 @@ ate the goose who was loose.</translation>
<translation>é‡å®šä¹‰â€œ%1â€çš„父对象</translation>
</message>
<message>
- <location line="+51"/>
+ <location line="+53"/>
<source>Promote to custom widget</source>
<translation>æå‡è‡³è‡ªå®šä¹‰çª—å£éƒ¨ä»¶</translation>
</message>
@@ -452,48 +456,48 @@ ate the goose who was loose.</translation>
<translation>å–消布局</translation>
</message>
<message>
- <location line="+231"/>
- <location line="+226"/>
- <location line="+75"/>
+ <location line="+240"/>
+ <location line="+235"/>
+ <location line="+78"/>
<source>Move Page</source>
<translation>移动页</translation>
</message>
<message>
- <location line="-267"/>
- <location line="+116"/>
- <location line="+183"/>
- <location line="+664"/>
+ <location line="-279"/>
+ <location line="+123"/>
+ <location line="+188"/>
+ <location line="+666"/>
<source>Delete Page</source>
<translation>删除页</translation>
</message>
<message>
- <location line="-925"/>
- <location line="+116"/>
+ <location line="-939"/>
+ <location line="+123"/>
<source>Page</source>
<translation>页</translation>
</message>
<message>
- <location line="-114"/>
- <location line="+297"/>
- <location line="+670"/>
+ <location line="-121"/>
+ <location line="+309"/>
+ <location line="+672"/>
<source>page</source>
<translation>页</translation>
</message>
<message>
- <location line="-964"/>
- <location line="+116"/>
- <location line="+181"/>
- <location line="+665"/>
+ <location line="-978"/>
+ <location line="+123"/>
+ <location line="+186"/>
+ <location line="+667"/>
<source>Insert Page</source>
<translation>æ’入页</translation>
</message>
<message>
- <location line="-849"/>
+ <location line="-856"/>
<source>tab</source>
<translation>标签页</translation>
</message>
<message>
- <location line="+204"/>
+ <location line="+209"/>
<source>Change Tab order</source>
<translation>改å˜åˆ¶è¡¨ç¬¦é¡ºåº</translation>
</message>
@@ -542,12 +546,12 @@ ate the goose who was loose.</translation>
<translation>改å˜è¡¨å•å¸ƒå±€é¡¹çš„几何ä½ç½®</translation>
</message>
<message>
- <location line="+94"/>
+ <location line="+95"/>
<source>Change Layout Item Geometry</source>
<translation>改å˜å¸ƒå±€é¡¹çš„几何ä½ç½®</translation>
</message>
<message>
- <location line="+569"/>
+ <location line="+576"/>
<source>Change Table Contents</source>
<translation>改å˜è¡¨æ ¼å†…容</translation>
</message>
@@ -631,7 +635,7 @@ ate the goose who was loose.</translation>
</translation>
</message>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_menu.cpp" line="+1125"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_menu.cpp" line="+1161"/>
<source>Set action text</source>
<translation>设定动作文本</translation>
</message>
@@ -642,7 +646,7 @@ ate the goose who was loose.</translation>
</message>
<message>
<location line="+89"/>
- <location filename="../tools/designer/src/lib/shared/qdesigner_menubar.cpp" line="+861"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_menubar.cpp" line="+891"/>
<source>Move action</source>
<translation>移动动作</translation>
</message>
@@ -657,17 +661,17 @@ ate the goose who was loose.</translation>
<translation>æ’å…¥èœå•</translation>
</message>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_command.cpp" line="-2610"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_command.cpp" line="-2641"/>
<source>Change Z-order of &apos;%1&apos;</source>
<translation>改å˜â€œ%1â€çš„ Z 顺åº</translation>
</message>
<message>
- <location line="+623"/>
+ <location line="+625"/>
<source>Simplify Grid Layout</source>
<translation>简易网格布局</translation>
</message>
<message>
- <location line="+1126"/>
+ <location line="+1149"/>
<source>Delete Subwindow</source>
<translation>删除å­çª—å£</translation>
</message>
@@ -687,12 +691,12 @@ ate the goose who was loose.</translation>
<translation>å­çª—å£</translation>
</message>
<message>
- <location filename="../tools/designer/src/lib/shared/signalslotdialog.cpp" line="+172"/>
+ <location filename="../tools/designer/src/lib/shared/signalslotdialog.cpp" line="+202"/>
<source>Change signals/slots</source>
<translation>改å˜ä¿¡å·/槽</translation>
</message>
<message>
- <location filename="../tools/designer/src/components/taskmenu/button_taskmenu.cpp" line="+195"/>
+ <location filename="../tools/designer/src/components/taskmenu/button_taskmenu.cpp" line="+225"/>
<source>Create button group</source>
<translation>创建按钮组</translation>
</message>
@@ -713,7 +717,7 @@ ate the goose who was loose.</translation>
</message>
<message>
<location line="+8"/>
- <location filename="../tools/designer/src/lib/shared/formlayoutmenu.cpp" line="+373"/>
+ <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>添加“%1â€åˆ°â€œ%2â€</translation>
@@ -730,23 +734,23 @@ ate the goose who was loose.</translation>
<translation>从“%2â€ä¸­ç§»é™¤â€œ%1â€</translation>
</message>
<message>
- <location filename="../tools/designer/src/lib/shared/morphmenu.cpp" line="+318"/>
+ <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>å°†%1/“%2â€å˜å½¢ä¸º%3</translation>
</message>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_command2.cpp" line="+124"/>
+ <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>将“%1â€çš„布局从%2å˜ä¸º%3</translation>
</message>
<message>
- <location filename="../tools/designer/src/lib/shared/scriptcommand.cpp" line="+25"/>
+ <location filename="../tools/designer/src/lib/shared/scriptcommand.cpp" line="+55"/>
<source>Change script</source>
<translation>改å˜è„šæœ¬</translation>
</message>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_propertycommand.cpp" line="+1176"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_propertycommand.cpp" line="+1209"/>
<source>Changed &apos;%1&apos; of &apos;%2&apos;</source>
<translation>已改å˜â€œ%2â€ä¸ªä¸­çš„“%1â€ä¸ª</translation>
</message>
@@ -820,7 +824,7 @@ ate the goose who was loose.</translation>
<context>
<name>DPI_Chooser</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/dpi_chooser.cpp" line="+39"/>
+ <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>标准(96 x 96)</translation>
@@ -841,7 +845,7 @@ ate the goose who was loose.</translation>
<context>
<name>Designer</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/qdesigner_resource.cpp" line="+409"/>
+ <location filename="../tools/designer/src/components/formeditor/qdesigner_resource.cpp" line="+439"/>
<source>Qt Designer</source>
<translation>Qt 设计师</translation>
</message>
@@ -856,7 +860,7 @@ The old form has been untouched, but you will have to save this form under a new
旧的窗体没有改å˜ï¼Œä½†æ˜¯æ‚¨å°†ä¸å¾—ä¸ä½¿ç”¨æ–°çš„å称ä¿å­˜è¿™ä¸ªè¡¨å•ã€‚</translation>
</message>
<message>
- <location line="+1017"/>
+ <location line="+1028"/>
<source>Custom Widgets</source>
<translation>自定义窗å£éƒ¨ä»¶</translation>
</message>
@@ -866,7 +870,7 @@ The old form has been untouched, but you will have to save this form under a new
<translation>æå‡çª—å£éƒ¨ä»¶</translation>
</message>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_utils.cpp" line="+602"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_utils.cpp" line="+682"/>
<source>Unable to launch %1.</source>
<translation>ä¸èƒ½å¯åŠ¨ %1。</translation>
</message>
@@ -876,7 +880,7 @@ The old form has been untouched, but you will have to save this form under a new
<translation>%1 超时。</translation>
</message>
<message>
- <location filename="../tools/designer/src/components/formeditor/qdesigner_resource.cpp" line="-812"/>
+ <location filename="../tools/designer/src/components/formeditor/qdesigner_resource.cpp" line="-823"/>
<source>This file cannot be read because it was created using %1.</source>
<translation>ä¸èƒ½è¯»å–这个文件,因为它是被使用 %1 创建的。</translation>
</message>
@@ -945,7 +949,7 @@ The old form has been untouched, but you will have to save this form under a new
<context>
<name>DesignerMetaEnum</name>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_utils.cpp" line="-463"/>
+ <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 ä¸æ˜¯â€œ%2â€ä¸­çš„一个有效的枚举值。</translation>
</message>
@@ -966,7 +970,7 @@ The old form has been untouched, but you will have to save this form under a new
<context>
<name>DeviceProfile</name>
<message>
- <location filename="../tools/designer/src/lib/shared/deviceprofile.cpp" line="+367"/>
+ <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;ä¸æ˜¯ä¸€ä¸ªæ•°å­—</translation>
@@ -1008,7 +1012,7 @@ The old form has been untouched, but you will have to save this form under a new
<context>
<name>DeviceSkin</name>
<message>
- <location filename="../tools/shared/deviceskin/deviceskin.cpp" line="+49"/>
+ <location filename="../tools/shared/deviceskin/deviceskin.cpp" line="+79"/>
<source>The image file &apos;%1&apos; could not be loaded.</source>
<translation>无法加载图åƒæ–‡ä»¶â€œ%1â€ã€‚</translation>
</message>
@@ -1066,66 +1070,56 @@ The old form has been untouched, but you will have to save this form under a new
<context>
<name>EmbeddedOptionsControl</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/embeddedoptionspage.cpp" line="+130"/>
<source>None</source>
- <translation>æ— </translation>
+ <translation type="obsolete">æ— </translation>
</message>
<message>
- <location line="+4"/>
<source>Add a profile</source>
- <translation>添加æ述文件</translation>
+ <translation type="obsolete">添加æ述文件</translation>
</message>
<message>
- <location line="+6"/>
<source>Edit the selected profile</source>
- <translation>编辑选中的æ述文件</translation>
+ <translation type="obsolete">编辑选中的æ述文件</translation>
</message>
<message>
- <location line="+4"/>
<source>Delete the selected profile</source>
- <translation>删除选中的æ述文件</translation>
+ <translation type="obsolete">删除选中的æ述文件</translation>
</message>
<message>
- <location line="+22"/>
<source>Add Profile</source>
- <translation>添加æ述文件</translation>
+ <translation type="obsolete">添加æ述文件</translation>
</message>
<message>
- <location line="+7"/>
<source>New profile</source>
- <translation>新建æ述文件</translation>
+ <translation type="obsolete">新建æ述文件</translation>
</message>
<message>
- <location line="+35"/>
<source>Edit Profile</source>
- <translation>编辑æ述文件</translation>
+ <translation type="obsolete">编辑æ述文件</translation>
</message>
<message>
- <location line="+26"/>
<source>Delete Profile</source>
- <translation>删除æ述文件</translation>
+ <translation type="obsolete">删除æ述文件</translation>
</message>
<message>
- <location line="+1"/>
<source>Would you like to delete the profile &apos;%1&apos;?</source>
- <translation>ä½ è¦åˆ é™¤æ述文件“%1â€å—?</translation>
+ <translation type="obsolete">ä½ è¦åˆ é™¤æ述文件“%1â€å—?</translation>
</message>
<message>
- <location line="+42"/>
+ <location filename="../tools/designer/src/components/formeditor/embeddedoptionspage.cpp" line="+311"/>
<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;字体&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;风格&lt;/b&gt;&lt;/td&gt;&lt;td&gt;%3&lt;/td&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;解æžåº¦&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>
<message>
- <location line="+13"/>
<source>Default</source>
- <translation>默认</translation>
+ <translation type="obsolete">默认</translation>
</message>
</context>
<context>
<name>EmbeddedOptionsPage</name>
<message>
- <location line="+90"/>
+ <location line="+103"/>
<source>Embedded Design</source>
<extracomment>Tab in preferences dialog</extracomment>
<translation>嵌入å¼è®¾è®¡</translation>
@@ -1163,7 +1157,7 @@ The old form has been untouched, but you will have to save this form under a new
<context>
<name>FontPanel</name>
<message>
- <location filename="../tools/shared/fontpanel/fontpanel.cpp" line="+33"/>
+ <location filename="../tools/shared/fontpanel/fontpanel.cpp" line="+63"/>
<source>Font</source>
<translation>字体</translation>
</message>
@@ -1191,7 +1185,7 @@ The old form has been untouched, but you will have to save this form under a new
<context>
<name>FontPropertyManager</name>
<message>
- <location filename="../tools/designer/src/components/propertyeditor/fontpropertymanager.cpp" line="+32"/>
+ <location filename="../tools/designer/src/components/propertyeditor/fontpropertymanager.cpp" line="+62"/>
<source>PreferDefault</source>
<translation>首选默认</translation>
</message>
@@ -1214,7 +1208,7 @@ The old form has been untouched, but you will have to save this form under a new
<context>
<name>FormBuilder</name>
<message>
- <location filename="../tools/designer/src/lib/uilib/formbuilderextra.cpp" line="+321"/>
+ <location filename="../tools/designer/src/lib/uilib/formbuilderextra.cpp" line="+351"/>
<source>Invalid stretch value for &apos;%1&apos;: &apos;%2&apos;</source>
<extracomment>Parsing layout stretch values</extracomment>
<translation>“%1â€ï¼šâ€œ%2â€æ— æ•ˆçš„拉伸值</translation>
@@ -1229,7 +1223,7 @@ The old form has been untouched, but you will have to save this form under a new
<context>
<name>FormEditorOptionsPage</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/formeditor_optionspage.cpp" line="+61"/>
+ <location filename="../tools/designer/src/components/formeditor/formeditor_optionspage.cpp" line="+91"/>
<source>%1 %</source>
<translation>%1 %</translation>
</message>
@@ -1296,7 +1290,7 @@ The old form has been untouched, but you will have to save this form under a new
<context>
<name>FormWindow</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/formwindow.cpp" line="+1669"/>
+ <location filename="../tools/designer/src/components/formeditor/formwindow.cpp" line="+1705"/>
<source>Unexpected element &lt;%1&gt;</source>
<translation>未预期的元素&lt;%1&gt;</translation>
</message>
@@ -1372,7 +1366,7 @@ The old form has been untouched, but you will have to save this form under a new
<context>
<name>IconSelector</name>
<message>
- <location filename="../tools/designer/src/lib/shared/iconselector.cpp" line="+321"/>
+ <location filename="../tools/designer/src/lib/shared/iconselector.cpp" line="+353"/>
<source>All Pixmaps (</source>
<translation>所有åƒç´ æ˜ å°„ (</translation>
</message>
@@ -1380,7 +1374,7 @@ The old form has been untouched, but you will have to save this form under a new
<context>
<name>ItemPropertyBrowser</name>
<message>
- <location filename="../tools/designer/src/components/taskmenu/itemlisteditor.cpp" line="+36"/>
+ <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>XX图标选择关闭</translation>
@@ -1389,7 +1383,7 @@ The old form has been untouched, but you will have to save this form under a new
<context>
<name>LanguageResourceDialog</name>
<message>
- <location filename="../tools/designer/src/lib/shared/iconselector.cpp" line="-234"/>
+ <location filename="../tools/designer/src/lib/shared/iconselector.cpp" line="-235"/>
<source>Choose Resource</source>
<translation>选择资æº</translation>
</message>
@@ -1397,7 +1391,7 @@ The old form has been untouched, but you will have to save this form under a new
<context>
<name>MainWindowBase</name>
<message>
- <location filename="../tools/designer/src/designer/mainwindow.cpp" line="+89"/>
+ <location filename="../tools/designer/src/designer/mainwindow.cpp" line="+119"/>
<source>Main</source>
<extracomment>Not currently used (main tool bar)</extracomment>
<translation>主è¦</translation>
@@ -1439,7 +1433,7 @@ The old form has been untouched, but you will have to save this form under a new
<translation type="obsolete">选择一个用于预览的模æ¿</translation>
</message>
<message>
- <location filename="../tools/designer/src/designer/newform.cpp" line="+53"/>
+ <location filename="../tools/designer/src/designer/newform.cpp" line="+83"/>
<source>New Form</source>
<translation>新建窗体</translation>
</message>
@@ -1504,7 +1498,7 @@ The old form has been untouched, but you will have to save this form under a new
<context>
<name>NewFormWidget</name>
<message>
- <location filename="../tools/designer/src/lib/shared/newformwidget.cpp" line="+465"/>
+ <location filename="../tools/designer/src/lib/shared/newformwidget.cpp" line="+495"/>
<source>Unable to open the form template file &apos;%1&apos;: %2</source>
<translation>无法打开窗体模版文件&apos;%1&apos;:%2</translation>
</message>
@@ -1512,7 +1506,7 @@ The old form has been untouched, but you will have to save this form under a new
<context>
<name>ObjectInspectorModel</name>
<message>
- <location filename="../tools/designer/src/components/objectinspector/objectinspectormodel.cpp" line="+331"/>
+ <location filename="../tools/designer/src/components/objectinspector/objectinspectormodel.cpp" line="+364"/>
<source>Object</source>
<translation>对象</translation>
</message>
@@ -1522,7 +1516,7 @@ The old form has been untouched, but you will have to save this form under a new
<translation>ç±»</translation>
</message>
<message>
- <location line="+34"/>
+ <location line="+35"/>
<source>separator</source>
<translation>分隔符</translation>
</message>
@@ -1535,7 +1529,7 @@ The old form has been untouched, but you will have to save this form under a new
<context>
<name>ObjectNameDialog</name>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_taskmenu.cpp" line="+132"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_taskmenu.cpp" line="+162"/>
<source>Change Object Name</source>
<translation>改å˜å¯¹è±¡å称</translation>
</message>
@@ -1597,52 +1591,16 @@ There&apos;s nothing more here. You should get back to work.</source>
</message>
</context>
<context>
- <name>qdesigner_internal::PluginDialog</name>
+ <name>PluginDialog</name>
<message>
- <location filename="../tools/designer/src/designer/plugindialog.cpp" line="+40"/>
- <source>Components</source>
- <translation>组件</translation>
- </message>
- <message>
- <location line="+13"/>
- <location filename="../tools/designer/src/designer/plugindialog.ui"/>
+ <location filename="../tools/designer/src/lib/shared/plugindialog.ui"/>
<source>Plugin Information</source>
- <translation>æ’件信æ¯</translation>
- </message>
- <message>
- <location line="+53"/>
- <source>Qt Designer couldn&apos;t find any plugins</source>
- <translation>Qt 设计师无法找到任何æ’件</translation>
- </message>
- <message>
- <location line="+3"/>
- <source>Qt Designer found the following plugins</source>
- <translation>Qt 设计师已ç»æ‰¾åˆ°å¦‚下æ’件</translation>
- </message>
- <message>
- <location filename="../tools/designer/src/designer/plugindialog.ui"/>
- <source>TextLabel</source>
- <translation>文本标签</translation>
- </message>
- <message>
- <location filename="../tools/designer/src/designer/plugindialog.cpp" line="-52"/>
- <source>Refresh</source>
- <translation>刷新</translation>
- </message>
- <message>
- <location line="+1"/>
- <source>Scan for newly installed custom widget plugins.</source>
- <translation>扫æ新安装的自定义窗å£éƒ¨ä»¶æ’件。</translation>
+ <translation type="unfinished">æ’件信æ¯</translation>
</message>
<message>
- <location line="+106"/>
- <source>New custom widget plugins have been found.</source>
- <translation>新的自定义窗å£éƒ¨ä»¶æ’件已ç»è¢«æ‰¾åˆ°ã€‚</translation>
- </message>
- <message>
- <location filename="../tools/designer/src/designer/plugindialog.ui"/>
+ <location/>
<source>1</source>
- <translation>1</translation>
+ <translation type="unfinished">1</translation>
</message>
</context>
<context>
@@ -1688,7 +1646,7 @@ There&apos;s nothing more here. You should get back to work.</source>
<context>
<name>PreviewConfigurationWidget</name>
<message>
- <location filename="../tools/designer/src/lib/shared/previewconfigurationwidget.cpp" line="+125"/>
+ <location filename="../tools/designer/src/lib/shared/previewconfigurationwidget.cpp" line="+155"/>
<source>Default</source>
<translation>默认</translation>
</message>
@@ -1736,7 +1694,7 @@ There&apos;s nothing more here. You should get back to work.</source>
<context>
<name>PromotionModel</name>
<message>
- <location filename="../tools/designer/src/lib/shared/promotionmodel.cpp" line="+86"/>
+ <location filename="../tools/designer/src/lib/shared/promotionmodel.cpp" line="+116"/>
<source>Not used</source>
<extracomment>Usage of promoted widgets</extracomment>
<translation>没有被使用</translation>
@@ -1752,7 +1710,7 @@ There&apos;s nothing more here. You should get back to work.</source>
<context>
<name>Q3WizardContainer</name>
<message>
- <location filename="../tools/designer/src/plugins/widgets/q3wizard/q3wizard_container.cpp" line="+142"/>
+ <location filename="../tools/designer/src/plugins/widgets/q3wizard/q3wizard_container.cpp" line="+172"/>
<location line="+5"/>
<source>Page</source>
<translation>页</translation>
@@ -1761,7 +1719,7 @@ There&apos;s nothing more here. You should get back to work.</source>
<context>
<name>QAbstractFormBuilder</name>
<message>
- <location filename="../tools/designer/src/lib/uilib/abstractformbuilder.cpp" line="+176"/>
+ <location filename="../tools/designer/src/lib/uilib/abstractformbuilder.cpp" line="+206"/>
<source>Unexpected element &lt;%1&gt;</source>
<translation>未预期的元素&lt;%1&gt;</translation>
</message>
@@ -1808,7 +1766,7 @@ This indicates an inconsistency in the ui-file.</source>
<translation>在应用制表符时中断:无法找到窗å£éƒ¨ä»¶â€œ%1â€ã€‚</translation>
</message>
<message>
- <location line="+734"/>
+ <location line="+749"/>
<source>Invalid QButtonGroup reference &apos;%1&apos; referenced by &apos;%2&apos;.</source>
<translation>“%2â€å‚考了无效的QButtonGroupå‚考“%1â€ã€‚</translation>
</message>
@@ -1854,7 +1812,7 @@ This indicates an inconsistency in the ui-file.</source>
<context>
<name>QAxWidgetPlugin</name>
<message>
- <location filename="../tools/designer/src/plugins/activeqt/qaxwidgetplugin.cpp" line="+45"/>
+ <location filename="../tools/designer/src/plugins/activeqt/qaxwidgetplugin.cpp" line="+75"/>
<source>ActiveX control</source>
<translation>ActiveX 控件</translation>
</message>
@@ -1867,7 +1825,7 @@ This indicates an inconsistency in the ui-file.</source>
<context>
<name>QAxWidgetTaskMenu</name>
<message>
- <location filename="../tools/designer/src/plugins/activeqt/qaxwidgettaskmenu.cpp" line="+89"/>
+ <location filename="../tools/designer/src/plugins/activeqt/qaxwidgettaskmenu.cpp" line="+119"/>
<source>Set Control</source>
<translation>设置控件</translation>
</message>
@@ -1890,7 +1848,7 @@ This indicates an inconsistency in the ui-file.</source>
<context>
<name>QCoreApplication</name>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_promotion.cpp" line="+53"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_promotion.cpp" line="+83"/>
<source>%1 is not a promoted class.</source>
<translation>%1 ä¸æ˜¯æå‡çš„类。</translation>
</message>
@@ -1940,7 +1898,7 @@ This indicates an inconsistency in the ui-file.</source>
<translation>无法设定一个空白包å«æ–‡ä»¶ã€‚</translation>
</message>
<message>
- <location filename="../tools/designer/src/lib/uilib/formscriptrunner.cpp" line="+58"/>
+ <location filename="../tools/designer/src/lib/uilib/formscriptrunner.cpp" line="+88"/>
<source>Exception at line %1: %2</source>
<translation>%1 è¡Œå‘生æ„外:%2</translation>
</message>
@@ -1960,7 +1918,7 @@ Script: %3</source>
<context>
<name>QDesigner</name>
<message>
- <location filename="../tools/designer/src/designer/qdesigner.cpp" line="+111"/>
+ <location filename="../tools/designer/src/designer/qdesigner.cpp" line="+141"/>
<source>%1 - warning</source>
<translation>%1 - 警告</translation>
</message>
@@ -1993,7 +1951,7 @@ Script: %3</source>
<translation type="obsolete">CTRL+O</translation>
</message>
<message>
- <location filename="../tools/designer/src/designer/qdesigner_actions.cpp" line="+459"/>
+ <location filename="../tools/designer/src/designer/qdesigner_actions.cpp" line="+488"/>
<source>Clear &amp;Menu</source>
<translation>清空èœå•(&amp;M)</translation>
</message>
@@ -2006,7 +1964,7 @@ Script: %3</source>
<translation type="obsolete">CTRL+W</translation>
</message>
<message>
- <location line="-297"/>
+ <location line="-300"/>
<source>&amp;Quit</source>
<translation>退出(&amp;Q)</translation>
</message>
@@ -2079,17 +2037,17 @@ Script: %3</source>
</message>
<message>
<location line="+6"/>
- <location line="+598"/>
+ <location line="+601"/>
<source>About Qt Designer</source>
<translation>关于 Qt 设计师</translation>
</message>
<message>
- <location line="-592"/>
+ <location line="-595"/>
<source>About Qt</source>
<translation>关于 Qt</translation>
</message>
<message>
- <location line="+41"/>
+ <location line="+44"/>
<source>&amp;Recent Forms</source>
<translation>最近的窗体(&amp;R)</translation>
</message>
@@ -2130,19 +2088,19 @@ Would you like to retry or select a different file?</source>
<translation>选择新文件</translation>
</message>
<message>
- <location line="-691"/>
+ <location line="-694"/>
<source>%1 already exists.
Do you want to replace it?</source>
<translation>%1 å·²ç»å­˜åœ¨ã€‚
您想è¦æ›¿æ¢å®ƒä¹ˆï¼Ÿ</translation>
</message>
<message>
- <location line="+960"/>
+ <location line="+925"/>
<source>&amp;Close Preview</source>
<translation>关闭预览(&amp;C)</translation>
</message>
<message>
- <location line="-919"/>
+ <location line="-884"/>
<source>Preferences...</source>
<translation>属性...</translation>
</message>
@@ -2152,19 +2110,19 @@ Do you want to replace it?</source>
<translation>CTRL+SHIFT+S</translation>
</message>
<message>
- <location line="+313"/>
+ <location line="+316"/>
<location line="+37"/>
<location line="+160"/>
<source>Designer UI files (*.%1);;All Files (*)</source>
<translation>设计师 UI 文件 (*.%1);;全部文件 (*)</translation>
</message>
<message>
- <location line="-638"/>
+ <location line="-641"/>
<source>Saved %1.</source>
<translation>%1 已被ä¿å­˜ã€‚</translation>
</message>
<message>
- <location line="+624"/>
+ <location line="+627"/>
<source>Read error</source>
<translation>读å–错误</translation>
</message>
@@ -2216,7 +2174,7 @@ Would you like to retry?</source>
<translation type="obsolete">窗体设定 - %1</translation>
</message>
<message>
- <location line="-696"/>
+ <location line="-699"/>
<source>&amp;New...</source>
<translation>新建(&amp;N)...</translation>
</message>
@@ -2247,12 +2205,12 @@ Would you like to retry?</source>
</message>
<message>
<location line="+1"/>
- <location line="+931"/>
+ <location line="+896"/>
<source>&amp;Close</source>
<translation>关闭(&amp;C)</translation>
</message>
<message>
- <location line="-930"/>
+ <location line="-895"/>
<source>Save &amp;Image...</source>
<translation>ä¿å­˜å›¾åƒ(&amp;I)...</translation>
</message>
@@ -2276,18 +2234,18 @@ Would you like to retry?</source>
<translation>ALT+CTRL+S</translation>
</message>
<message>
- <location line="+352"/>
+ <location line="+355"/>
<location line="+248"/>
<source>Save Form As</source>
<translation>窗体å¦å­˜ä¸º</translation>
</message>
<message>
- <location line="+467"/>
+ <location line="+429"/>
<source>Preview failed</source>
<translation>预览失败</translation>
</message>
<message>
- <location line="-613"/>
+ <location line="-575"/>
<source>Code generation failed</source>
<translation>代ç ç”Ÿæˆå¤±è´¥</translation>
</message>
@@ -2302,12 +2260,12 @@ Would you like to retry?</source>
</message>
<message>
<location line="+158"/>
- <location line="+66"/>
+ <location line="+34"/>
<source>Assistant</source>
<translation>助手</translation>
</message>
<message>
- <location line="+53"/>
+ <location line="+47"/>
<location line="+23"/>
<source>The backup file %1 could not be written.</source>
<translation>备份文件%1无法被写入。</translation>
@@ -2349,7 +2307,7 @@ Would you like to retry?</source>
<translation>请关闭所有窗体文件,以便加载附加字体</translation>
</message>
<message>
- <location line="+49"/>
+ <location line="+52"/>
<source>Printed %1.</source>
<translation>%1 已被打å°ã€‚</translation>
</message>
@@ -2357,7 +2315,7 @@ Would you like to retry?</source>
<context>
<name>QDesignerAppearanceOptionsPage</name>
<message>
- <location filename="../tools/designer/src/designer/qdesigner_appearanceoptions.cpp" line="+93"/>
+ <location filename="../tools/designer/src/designer/qdesigner_appearanceoptions.cpp" line="+138"/>
<source>Appearance</source>
<extracomment>Tab in preferences dialog</extracomment>
<translation>外观</translation>
@@ -2366,7 +2324,7 @@ Would you like to retry?</source>
<context>
<name>QDesignerAppearanceOptionsWidget</name>
<message>
- <location line="-39"/>
+ <location line="-53"/>
<source>Docked Window</source>
<translation>锚接的窗å£</translation>
</message>
@@ -2376,7 +2334,7 @@ Would you like to retry?</source>
<translation>多个顶级窗å£</translation>
</message>
<message>
- <location line="+3"/>
+ <location line="+5"/>
<source>Toolwindow Font</source>
<translation>工具窗å£å­—体</translation>
</message>
@@ -2394,7 +2352,7 @@ Would you like to retry?</source>
<translation>设置控件</translation>
</message>
<message>
- <location filename="../tools/designer/src/plugins/activeqt/qdesigneraxwidget.cpp" line="+149"/>
+ <location filename="../tools/designer/src/plugins/activeqt/qdesigneraxwidget.cpp" line="+179"/>
<source>Control loaded</source>
<translation>控件已ç»åŠ è½½</translation>
</message>
@@ -2407,7 +2365,7 @@ Would you like to retry?</source>
<context>
<name>QDesignerFormBuilder</name>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_formbuilder.cpp" line="+58"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_formbuilder.cpp" line="+88"/>
<source>Script errors occurred:</source>
<translation>å‘生脚本错误:</translation>
</message>
@@ -2425,7 +2383,7 @@ Would you like to retry?</source>
<context>
<name>QDesignerFormWindow</name>
<message>
- <location filename="../tools/designer/src/designer/qdesigner_formwindow.cpp" line="+187"/>
+ <location filename="../tools/designer/src/designer/qdesigner_formwindow.cpp" line="+217"/>
<source>%1 - %2[*]</source>
<translation>%1 - %2[*]</translation>
</message>
@@ -2448,7 +2406,7 @@ Would you like to retry?</source>
<context>
<name>QDesignerMenu</name>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_menu.cpp" line="-1154"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_menu.cpp" line="-1160"/>
<source>Type Here</source>
<translation>在这里输入</translation>
</message>
@@ -2458,7 +2416,7 @@ Would you like to retry?</source>
<translation>添加分隔符</translation>
</message>
<message>
- <location line="+373"/>
+ <location line="+379"/>
<source>Remove action &apos;%1&apos;</source>
<translation>移除动作“%1â€</translation>
</message>
@@ -2517,7 +2475,7 @@ Would you like to retry?</source>
<context>
<name>QDesignerPluginManager</name>
<message>
- <location filename="../tools/designer/src/lib/shared/pluginmanager.cpp" line="+197"/>
+ <location filename="../tools/designer/src/lib/shared/pluginmanager.cpp" line="+249"/>
<source>An XML error was encountered when parsing the XML of the custom widget %1: %2</source>
<translation>在解æžè‡ªå®šä¹‰çª—å£éƒ¨ä»¶%1çš„XMLæ—¶å‘生错误:%2</translation>
</message>
@@ -2551,7 +2509,7 @@ Would you like to retry?</source>
<context>
<name>QDesignerPropertySheet</name>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_propertysheet.cpp" line="+717"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_propertysheet.cpp" line="+747"/>
<source>Dynamic Properties</source>
<translation>动æ€å±žæ€§</translation>
</message>
@@ -2564,14 +2522,14 @@ Would you like to retry?</source>
<translation>ä¸æ”¯æŒå¸ƒå±€ç±»åž‹â€œ%1â€ï¼Œé»˜è®¤ä¸ºç½‘格。</translation>
</message>
<message>
- <location line="+331"/>
+ <location line="+342"/>
<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>在查询页é¢#%5时,窗å£éƒ¨ä»¶â€œ%1â€(%2)的容器扩展返回了一个没有被设计师管ç†çš„窗å£éƒ¨ä»¶ã€‚
容器页é¢åº”该åªèƒ½ç”±è‡ªå®šä¹‰çª—å£éƒ¨ä»¶çš„domXml()方法传回的XML指定。</translation>
</message>
<message>
- <location line="+598"/>
+ <location line="+599"/>
<source>Unexpected element &lt;%1&gt;</source>
<extracomment>Parsing clipboard contents</extracomment>
<translation>未预期的元素&lt;%1&gt;</translation>
@@ -2599,7 +2557,7 @@ Container pages should only be added by specifying them in XML returned by the d
<context>
<name>QDesignerSharedSettings</name>
<message>
- <location filename="../tools/designer/src/lib/shared/shared_settings.cpp" line="+53"/>
+ <location filename="../tools/designer/src/lib/shared/shared_settings.cpp" line="+83"/>
<source>The template path %1 could not be created.</source>
<translation>无法创建临时路径 %1。</translation>
</message>
@@ -2619,7 +2577,7 @@ Container pages should only be added by specifying them in XML returned by the d
<context>
<name>QDesignerToolWindow</name>
<message>
- <location filename="../tools/designer/src/designer/qdesigner_toolwindow.cpp" line="+160"/>
+ <location filename="../tools/designer/src/designer/qdesigner_toolwindow.cpp" line="+190"/>
<source>Property Editor</source>
<translation>属性编辑器</translation>
</message>
@@ -2656,7 +2614,7 @@ Container pages should only be added by specifying them in XML returned by the d
<translation type="obsolete">窗å£éƒ¨ä»¶ç›’</translation>
</message>
<message>
- <location filename="../tools/designer/src/components/widgetbox/widgetboxtreewidget.cpp" line="+318"/>
+ <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>在%2的第%1è¡Œå‘生错误:%3</translation>
</message>
@@ -2679,7 +2637,7 @@ Container pages should only be added by specifying them in XML returned by the d
<context>
<name>QDesignerWorkbench</name>
<message>
- <location filename="../tools/designer/src/designer/qdesigner_workbench.cpp" line="+169"/>
+ <location filename="../tools/designer/src/designer/qdesigner_workbench.cpp" line="+199"/>
<source>&amp;File</source>
<translation>文件(&amp;F)</translation>
</message>
@@ -2790,7 +2748,7 @@ Container pages should only be added by specifying them in XML returned by the d
<translation type="obsolete">设计师在您上一次对è¯ä¸­æ²¡æœ‰æ­£å¸¸ç»ˆæ­¢ã€‚还有一些备份文件存在,您想è¦åŠ è½½å®ƒä»¬ä¹ˆï¼Ÿ</translation>
</message>
<message>
- <location line="+113"/>
+ <location line="+112"/>
<source>The file &lt;b&gt;%1&lt;/b&gt; could not be opened.</source>
<translation>无法打开文件 &lt;b&gt;%1&lt;/b&gt;。</translation>
</message>
@@ -2804,7 +2762,7 @@ Container pages should only be added by specifying them in XML returned by the d
<translation type="obsolete">文件</translation>
</message>
<message numerus="yes">
- <location line="-260"/>
+ <location line="-259"/>
<source>There are %n forms with unsaved changes. Do you want to review these changes before quitting?</source>
<translation>
<numerusform>还有 %n 个窗体没有ä¿å­˜å˜åŒ–。您想è¦åœ¨é€€å‡ºä¹‹å‰è¯„审这些å˜åŒ–么?</numerusform>
@@ -2834,7 +2792,7 @@ Container pages should only be added by specifying them in XML returned by the d
<context>
<name>QFormBuilder</name>
<message>
- <location filename="../tools/designer/src/lib/uilib/formbuilder.cpp" line="+130"/>
+ <location filename="../tools/designer/src/lib/uilib/formbuilder.cpp" line="+160"/>
<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>一个空白的类å称被传é€åˆ°%1(对象å称:%2)。</translation>
@@ -2855,7 +2813,7 @@ Container pages should only be added by specifying them in XML returned by the d
<translation>布局类型“%1â€ä¸è¢«æ”¯æŒã€‚</translation>
</message>
<message>
- <location filename="../tools/designer/src/lib/uilib/properties.cpp" line="+76"/>
+ <location filename="../tools/designer/src/lib/uilib/properties.cpp" line="+106"/>
<source>The set-type property %1 could not be read.</source>
<translation>无法读å–集类型属性 %1。</translation>
</message>
@@ -2875,7 +2833,7 @@ Container pages should only be added by specifying them in XML returned by the d
<translation>属性 %1 无法被写入。还ä¸æ”¯æŒç±»åž‹ %2。</translation>
</message>
<message>
- <location filename="../tools/designer/src/lib/uilib/properties_p.h" line="+102"/>
+ <location filename="../tools/designer/src/lib/uilib/properties_p.h" line="+132"/>
<source>The enumeration-value &apos;%1&apos; is invalid. The default value &apos;%2&apos; will be used instead.</source>
<translation>枚举å˜é‡å€¼â€œ%1â€æ˜¯æ— æ•ˆçš„。默认值“%2â€å°†ä¼šè¢«ç”¨æ¥æ›¿ä»£ã€‚</translation>
</message>
@@ -3134,7 +3092,7 @@ This indicates an inconsistency in the ui-file.</source>
<context>
<name>QStackedWidgetEventFilter</name>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_stackedbox.cpp" line="+164"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_stackedbox.cpp" line="+194"/>
<source>Previous Page</source>
<translation>上一页</translation>
</message>
@@ -3195,7 +3153,7 @@ This indicates an inconsistency in the ui-file.</source>
<context>
<name>QTabWidgetEventFilter</name>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_tabwidget.cpp" line="+59"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_tabwidget.cpp" line="+89"/>
<source>Delete</source>
<translation>删除</translation>
</message>
@@ -3223,7 +3181,7 @@ This indicates an inconsistency in the ui-file.</source>
<context>
<name>QToolBoxHelper</name>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_toolbox.cpp" line="+34"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_toolbox.cpp" line="+64"/>
<source>Delete Page</source>
<translation>删除页</translation>
</message>
@@ -3261,7 +3219,7 @@ This indicates an inconsistency in the ui-file.</source>
<context>
<name>QtBoolEdit</name>
<message>
- <location filename="../tools/shared/qtpropertybrowser/qtpropertybrowserutils.cpp" line="+198"/>
+ <location filename="../tools/shared/qtpropertybrowser/qtpropertybrowserutils.cpp" line="+226"/>
<location line="+10"/>
<location line="+25"/>
<source>True</source>
@@ -3277,7 +3235,7 @@ This indicates an inconsistency in the ui-file.</source>
<context>
<name>QtBoolPropertyManager</name>
<message>
- <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="+1469"/>
+ <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="+1477"/>
<source>True</source>
<translation>真</translation>
</message>
@@ -3290,7 +3248,7 @@ This indicates an inconsistency in the ui-file.</source>
<context>
<name>QtCharEdit</name>
<message>
- <location filename="../tools/shared/qtpropertybrowser/qteditorfactory.cpp" line="+1573"/>
+ <location filename="../tools/shared/qtpropertybrowser/qteditorfactory.cpp" line="+1601"/>
<source>Clear Char</source>
<translation>清除字符</translation>
</message>
@@ -3306,7 +3264,7 @@ This indicates an inconsistency in the ui-file.</source>
<context>
<name>QtColorPropertyManager</name>
<message>
- <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="+4769"/>
+ <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="+4777"/>
<source>Red</source>
<translation>红色</translation>
</message>
@@ -3494,7 +3452,7 @@ This indicates an inconsistency in the ui-file.</source>
<context>
<name>QtGradientEditor</name>
<message>
- <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.cpp" line="+405"/>
+ <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.cpp" line="+435"/>
<source>Start X</source>
<translation>开始 X</translation>
</message>
@@ -3769,7 +3727,7 @@ This indicates an inconsistency in the ui-file.</source>
<context>
<name>QtGradientStopsWidget</name>
<message>
- <location filename="../tools/shared/qtgradienteditor/qtgradientstopswidget.cpp" line="+919"/>
+ <location filename="../tools/shared/qtgradienteditor/qtgradientstopswidget.cpp" line="+949"/>
<source>New Stop</source>
<translation>新建中止点</translation>
</message>
@@ -3807,7 +3765,7 @@ This indicates an inconsistency in the ui-file.</source>
<context>
<name>QtGradientView</name>
<message>
- <location filename="../tools/shared/qtgradienteditor/qtgradientview.cpp" line="+77"/>
+ <location filename="../tools/shared/qtgradienteditor/qtgradientview.cpp" line="+107"/>
<source>Grad</source>
<translation>æ¸å˜</translation>
</message>
@@ -3854,7 +3812,7 @@ This indicates an inconsistency in the ui-file.</source>
<context>
<name>QtGradientViewDialog</name>
<message>
- <location filename="../tools/shared/qtgradienteditor/qtgradientviewdialog.h" line="+32"/>
+ <location filename="../tools/shared/qtgradienteditor/qtgradientviewdialog.h" line="+62"/>
<location filename="../tools/shared/qtgradienteditor/qtgradientviewdialog.ui"/>
<source>Select Gradient</source>
<translation>选择æ¸å˜</translation>
@@ -3871,7 +3829,7 @@ This indicates an inconsistency in the ui-file.</source>
<context>
<name>QtLocalePropertyManager</name>
<message>
- <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="-3553"/>
+ <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="-3561"/>
<source>%1, %2</source>
<translation>%1, %2</translation>
</message>
@@ -3938,22 +3896,22 @@ This indicates an inconsistency in the ui-file.</source>
<context>
<name>QtRectFPropertyManager</name>
<message>
- <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="+1705"/>
+ <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="+1716"/>
<source>[(%1, %2), %3 x %4]</source>
<translation>[(%1, %2), %3 x %4]</translation>
</message>
<message>
- <location line="+155"/>
+ <location line="+156"/>
<source>X</source>
<translation>X</translation>
</message>
<message>
- <location line="+9"/>
+ <location line="+8"/>
<source>Y</source>
<translation>Y</translation>
</message>
<message>
- <location line="+9"/>
+ <location line="+8"/>
<source>Width</source>
<translation>宽度</translation>
</message>
@@ -3966,22 +3924,22 @@ This indicates an inconsistency in the ui-file.</source>
<context>
<name>QtRectPropertyManager</name>
<message>
- <location line="-610"/>
+ <location line="-614"/>
<source>[(%1, %2), %3 x %4]</source>
<translation>[(%1, %2), %3 x %4]</translation>
</message>
<message>
- <location line="+119"/>
+ <location line="+120"/>
<source>X</source>
<translation>X</translation>
</message>
<message>
- <location line="+8"/>
+ <location line="+7"/>
<source>Y</source>
<translation>Y</translation>
</message>
<message>
- <location line="+8"/>
+ <location line="+7"/>
<source>Width</source>
<translation>宽度</translation>
</message>
@@ -3994,7 +3952,7 @@ This indicates an inconsistency in the ui-file.</source>
<context>
<name>QtResourceEditorDialog</name>
<message>
- <location filename="../tools/designer/src/lib/shared/qtresourceeditordialog.cpp" line="+46"/>
+ <location filename="../tools/designer/src/lib/shared/qtresourceeditordialog.cpp" line="+76"/>
<source>%1 already exists.
Do you want to replace it?</source>
<translation>%1 å·²ç»å­˜åœ¨ã€‚
@@ -4006,7 +3964,7 @@ Do you want to replace it?</source>
<translation>这个文件好åƒä¸æ˜¯ä¸€ä¸ªèµ„æºæ–‡ä»¶ï¼›æˆ‘们所期望的是“%2â€ï¼Œä½†æ˜¯åªæ‰¾åˆ°äº†å…ƒç´ â€œ%1â€ã€‚</translation>
</message>
<message>
- <location line="+900"/>
+ <location line="+902"/>
<source>%1 [read-only]</source>
<translation>%1 [åªè¯»]</translation>
</message>
@@ -4298,7 +4256,7 @@ to
<context>
<name>QtResourceView</name>
<message>
- <location filename="../tools/designer/src/lib/shared/qtresourceview.cpp" line="+404"/>
+ <location filename="../tools/designer/src/lib/shared/qtresourceview.cpp" line="+435"/>
<source>Size: %1 x %2
%3</source>
<translation>大å°ï¼š%1 x %2
@@ -4331,7 +4289,7 @@ to
<context>
<name>QtSizeFPropertyManager</name>
<message>
- <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="-532"/>
+ <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="-537"/>
<source>%1 x %2</source>
<translation>%1 x %2</translation>
</message>
@@ -4349,12 +4307,18 @@ to
<context>
<name>QtSizePolicyPropertyManager</name>
<message>
- <location line="+1707"/>
+ <location line="+1719"/>
+ <location line="+1"/>
+ <source>&lt;Invalid&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
<source>[%1, %2, %3, %4]</source>
<translation>[%1, %2, %3, %4]</translation>
</message>
<message>
- <location line="+49"/>
+ <location line="+45"/>
<source>Horizontal Policy</source>
<translation>水平策略</translation>
</message>
@@ -4377,7 +4341,7 @@ to
<context>
<name>QtSizePropertyManager</name>
<message>
- <location line="-2288"/>
+ <location line="-2298"/>
<source>%1 x %2</source>
<translation>%1 x %2</translation>
</message>
@@ -4395,7 +4359,7 @@ to
<context>
<name>QtToolBarDialog</name>
<message>
- <location filename="../tools/shared/qttoolbardialog/qttoolbardialog.cpp" line="+1214"/>
+ <location filename="../tools/shared/qttoolbardialog/qttoolbardialog.cpp" line="+1244"/>
<source>Custom Toolbar</source>
<translation>自定义工具æ </translation>
</message>
@@ -4503,7 +4467,7 @@ to
<context>
<name>QtTreePropertyBrowser</name>
<message>
- <location filename="../tools/shared/qtpropertybrowser/qttreepropertybrowser.cpp" line="+407"/>
+ <location filename="../tools/shared/qtpropertybrowser/qttreepropertybrowser.cpp" line="+442"/>
<source>Property</source>
<translation>属性</translation>
</message>
@@ -4516,7 +4480,7 @@ to
<context>
<name>SaveFormAsTemplate</name>
<message>
- <location filename="../tools/designer/src/designer/saveformastemplate.cpp" line="+42"/>
+ <location filename="../tools/designer/src/designer/saveformastemplate.cpp" line="+72"/>
<source>Add path...</source>
<translation>添加路径...</translation>
</message>
@@ -4581,7 +4545,7 @@ Do you want overwrite the template?</source>
<context>
<name>ScriptErrorDialog</name>
<message>
- <location filename="../tools/designer/src/lib/shared/scripterrordialog.cpp" line="+33"/>
+ <location filename="../tools/designer/src/lib/shared/scripterrordialog.cpp" line="+63"/>
<source>An error occurred while running the scripts for &quot;%1&quot;:
</source>
<translation>在è¿è¡Œâ€œ%1â€çš„脚本过程中å‘生一个错误:
@@ -4600,11 +4564,21 @@ Do you want overwrite the template?</source>
<source>Select signal</source>
<translation>选择信å·</translation>
</message>
+ <message>
+ <location/>
+ <source>signal</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location/>
+ <source>class</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>SignalSlotConnection</name>
<message>
- <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditor.cpp" line="-311"/>
+ <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditor.cpp" line="-358"/>
<source>SENDER(%1), SIGNAL(%2), RECEIVER(%3), SLOT(%4)</source>
<translation>SENDER(%1), SIGNAL(%2), RECEIVER(%3), SLOT(%4)</translation>
</message>
@@ -4645,7 +4619,7 @@ Do you want overwrite the template?</source>
<context>
<name>Spacer</name>
<message>
- <location filename="../tools/designer/src/lib/shared/spacer_widget.cpp" line="+245"/>
+ <location filename="../tools/designer/src/lib/shared/spacer_widget.cpp" line="+275"/>
<source>Horizontal Spacer &apos;%1&apos;, %2 x %3</source>
<translation>水平间隔器“%1â€ï¼Œ%2 x %3</translation>
</message>
@@ -4658,7 +4632,7 @@ Do you want overwrite the template?</source>
<context>
<name>TemplateOptionsPage</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/templateoptionspage.cpp" line="+126"/>
+ <location filename="../tools/designer/src/components/formeditor/templateoptionspage.cpp" line="+156"/>
<source>Template Paths</source>
<extracomment>Tab in preferences dialog</extracomment>
<translation>模æ¿è·¯å¾„</translation>
@@ -4700,29 +4674,27 @@ Do you want overwrite the template?</source>
<context>
<name>VersionDialog</name>
<message>
- <location filename="../tools/designer/src/designer/versiondialog.cpp" line="+146"/>
+ <location filename="../tools/designer/src/designer/versiondialog.cpp" line="+172"/>
<source>Qt Designer</source>
<translation>Qt 设计师</translation>
</message>
<message>
- <location line="-5"/>
+ <location line="-1"/>
<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;版本 %2</translation>
</message>
<message>
- <location line="+2"/>
<source> Open Source Edition</source>
- <translation> å¼€æºç‰ˆæœ¬</translation>
+ <translation type="obsolete"> å¼€æºç‰ˆæœ¬</translation>
</message>
<message>
- <location line="+4"/>
+ <location line="+2"/>
<source>&lt;br/&gt;Qt Designer is a graphical user interface designer for Qt applications.&lt;br/&gt;</source>
<translation>&lt;br/&gt;Qt è®¾è®¡å¸ˆæ˜¯ç”¨äºŽå¼€å‘ Qt 应用程åºçš„图形用户界é¢è®¾è®¡å¸ˆã€‚&lt;br/&gt;</translation>
</message>
<message>
- <location line="+16"/>
<source>This program is licensed to you under the terms of the Qt Commercial License Agreement. For details, see the file LICENSE that came with this software distribution.&lt;br/&gt;</source>
- <translation>我们已ç»å…许您在 Qt 商业许å¯å议下使用本程åºã€‚有关细节,请阅读本软件å‘行中所带的 LICENSE 文件。</translation>
+ <translation type="obsolete">我们已ç»å…许您在 Qt 商业许å¯å议下使用本程åºã€‚有关细节,请阅读本软件å‘行中所带的 LICENSE 文件。</translation>
</message>
<message>
<location line="+5"/>
@@ -4730,20 +4702,18 @@ Do you want overwrite the template?</source>
<translation>%1&lt;br/&gt;%2&lt;br/&gt;版æƒæ‰€æœ‰ 2000-$THISYEAR$ Nokia Corporation and/or its subsidiary(-ies)。所有æƒåˆ©å·²è¢«ä¿ç•™ã€‚&lt;br/&gt;&lt;br/&gt;本程åºæ˜¯åœ¨&lt;b&gt;没有任何担ä¿ï¼ˆå…¶ä¸­åŒ…括任何特定目的的设计ã€å•†ä¸šå’Œé€‚当性的担ä¿ï¼‰&lt;/b&gt;çš„æ¡ä»¶ä¸‹æ供的。&lt;br/&gt; </translation>
</message>
<message>
- <location line="-17"/>
<source>This version of Qt Designer is part of the Qt Open Source Edition, for use in the development of Open Source applications. Qt is a comprehensive C++ framework for cross-platform application development.&lt;br/&gt;&lt;br/&gt;You need a commercial Qt license for development of proprietary (closed source) applications. Please see &lt;a href=&quot;http://qtsoftware.com/company/about/businessmodel&quot;&gt;http://qtsoftware.com/company/about/businessmodel.html&lt;/a&gt; for an overview of Qt licensing.&lt;br/&gt;</source>
- <translation>这个版本的 Qt 设计师是 Qt å¼€æºç‰ˆæœ¬çš„一部分,用于开å‘å¼€æºåº”用程åºã€‚Qt 是一个用于跨平å°åº”用程åºå¼€å‘çš„ç»¼åˆ C++ 框架。&lt;br/&gt;&lt;br/&gt;å¼€å‘商业(闭æºï¼‰åº”用程åºï¼Œæ‚¨éœ€è¦å•†ä¸š Qt 许å¯ã€‚对于 Qt 许å¯çš„概览,请å‚考&lt;tt&gt;http://qtsoftware.com/company/about/businessmodel&lt;/tt&gt;。</translation>
+ <translation type="obsolete">这个版本的 Qt 设计师是 Qt å¼€æºç‰ˆæœ¬çš„一部分,用于开å‘å¼€æºåº”用程åºã€‚Qt 是一个用于跨平å°åº”用程åºå¼€å‘çš„ç»¼åˆ C++ 框架。&lt;br/&gt;&lt;br/&gt;å¼€å‘商业(闭æºï¼‰åº”用程åºï¼Œæ‚¨éœ€è¦å•†ä¸š Qt 许å¯ã€‚对于 Qt 许å¯çš„概览,请å‚考&lt;tt&gt;http://qtsoftware.com/company/about/businessmodel&lt;/tt&gt;。</translation>
</message>
<message>
- <location line="+8"/>
<source>This program is licensed to you under the terms of the Qt %1 License Agreement. For details, see the license file that came with this software distribution.&lt;br/&gt;</source>
- <translation>我们已ç»å…许您在 Qt %1 许å¯å议下使用本程åºã€‚有关细节,请阅读本软件å‘行中所带的许å¯å议文件。</translation>
+ <translation type="obsolete">我们已ç»å…许您在 Qt %1 许å¯å议下使用本程åºã€‚有关细节,请阅读本软件å‘行中所带的许å¯å议文件。</translation>
</message>
</context>
<context>
<name>WidgetDataBase</name>
<message>
- <location filename="../tools/designer/src/lib/shared/widgetdatabase.cpp" line="+786"/>
+ <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>这个文件包å«äº†ä¸€ä¸ªè‡ªå®šä¹‰çª—å£éƒ¨ä»¶â€œ%1â€ï¼Œå…¶åŸºç±»(%2)和窗å£éƒ¨ä»¶æ•°æ®åº“(%3)的当å‰æ¡ç›®ä¸åŒã€‚这个窗å£éƒ¨ä»¶æ•°æ®åº“并未åšä»»ä½•æ”¹åŠ¨ã€‚</translation>
</message>
@@ -4751,22 +4721,22 @@ Do you want overwrite the template?</source>
<context>
<name>qdesigner_internal::ActionEditor</name>
<message>
- <location filename="../tools/designer/src/lib/shared/actioneditor.cpp" line="+111"/>
+ <location filename="../tools/designer/src/lib/shared/actioneditor.cpp" line="+143"/>
<source>Actions</source>
<translation>动作</translation>
</message>
<message>
- <location line="-15"/>
+ <location line="-16"/>
<source>New...</source>
<translation>新建...</translation>
</message>
<message>
- <location line="+6"/>
+ <location line="+7"/>
<source>Delete</source>
<translation>删除</translation>
</message>
<message>
- <location line="+305"/>
+ <location line="+307"/>
<source>New action</source>
<translation>新建动作</translation>
</message>
@@ -4776,12 +4746,17 @@ Do you want overwrite the template?</source>
<translation>编辑动作</translation>
</message>
<message>
- <location line="-408"/>
+ <location line="-411"/>
<source>Edit...</source>
<translation>编辑...</translation>
</message>
<message>
<location line="+1"/>
+ <source>Go to slot...</source>
+ <translation type="unfinished">转到槽...</translation>
+ </message>
+ <message>
+ <location line="+1"/>
<source>Copy</source>
<translation>å¤åˆ¶</translation>
</message>
@@ -4801,7 +4776,7 @@ Do you want overwrite the template?</source>
<translation>选择全部</translation>
</message>
<message>
- <location line="+52"/>
+ <location line="+54"/>
<source>Configure Action Editor</source>
<translation>é…置动作编辑器</translation>
</message>
@@ -4816,7 +4791,7 @@ Do you want overwrite the template?</source>
<translation>细节视图</translation>
</message>
<message>
- <location line="+406"/>
+ <location line="+412"/>
<source>Remove actions</source>
<translation>移除动作</translation>
</message>
@@ -4826,7 +4801,7 @@ Do you want overwrite the template?</source>
<translation>移除动作“%1â€</translation>
</message>
<message>
- <location line="+183"/>
+ <location line="+186"/>
<source>Used In</source>
<translation>用于</translation>
</message>
@@ -4841,7 +4816,7 @@ Do you want overwrite the template?</source>
<context>
<name>qdesigner_internal::ActionModel</name>
<message>
- <location filename="../tools/designer/src/lib/shared/actionrepository.cpp" line="+64"/>
+ <location filename="../tools/designer/src/lib/shared/actionrepository.cpp" line="+95"/>
<source>Name</source>
<translation>å称</translation>
</message>
@@ -4874,7 +4849,7 @@ Do you want overwrite the template?</source>
<context>
<name>qdesigner_internal::BuddyEditor</name>
<message>
- <location filename="../tools/designer/src/components/buddyeditor/buddyeditor.cpp" line="+235"/>
+ <location filename="../tools/designer/src/components/buddyeditor/buddyeditor.cpp" line="+265"/>
<source>Add buddy</source>
<translation>添加伙伴</translation>
</message>
@@ -4906,7 +4881,7 @@ Do you want overwrite the template?</source>
<context>
<name>qdesigner_internal::BuddyEditorPlugin</name>
<message>
- <location filename="../tools/designer/src/components/buddyeditor/buddyeditor_plugin.cpp" line="+47"/>
+ <location filename="../tools/designer/src/components/buddyeditor/buddyeditor_plugin.cpp" line="+77"/>
<source>Edit Buddies</source>
<translation>编辑伙伴</translation>
</message>
@@ -4914,7 +4889,7 @@ Do you want overwrite the template?</source>
<context>
<name>qdesigner_internal::BuddyEditorTool</name>
<message>
- <location filename="../tools/designer/src/components/buddyeditor/buddyeditor_tool.cpp" line="+30"/>
+ <location filename="../tools/designer/src/components/buddyeditor/buddyeditor_tool.cpp" line="+60"/>
<source>Edit Buddies</source>
<translation>编辑伙伴</translation>
</message>
@@ -4968,7 +4943,7 @@ Do you want overwrite the template?</source>
<context>
<name>qdesigner_internal::CodeDialog</name>
<message>
- <location filename="../tools/designer/src/lib/shared/codedialog.cpp" line="+69"/>
+ <location filename="../tools/designer/src/lib/shared/codedialog.cpp" line="+99"/>
<source>Save...</source>
<translation>ä¿å­˜...</translation>
</message>
@@ -5026,7 +5001,7 @@ Do you want overwrite the template?</source>
<context>
<name>qdesigner_internal::ColorAction</name>
<message>
- <location filename="../tools/designer/src/lib/shared/richtexteditor.cpp" line="+220"/>
+ <location filename="../tools/designer/src/lib/shared/richtexteditor.cpp" line="+250"/>
<source>Text Color</source>
<translation>文本颜色</translation>
</message>
@@ -5034,7 +5009,7 @@ Do you want overwrite the template?</source>
<context>
<name>qdesigner_internal::ComboBoxTaskMenu</name>
<message>
- <location filename="../tools/designer/src/components/taskmenu/combobox_taskmenu.cpp" line="+42"/>
+ <location filename="../tools/designer/src/components/taskmenu/combobox_taskmenu.cpp" line="+72"/>
<source>Edit Items...</source>
<translation>编辑项目...</translation>
</message>
@@ -5073,7 +5048,7 @@ Do you want overwrite the template?</source>
<context>
<name>qdesigner_internal::ConnectionModel</name>
<message>
- <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditorwindow.cpp" line="-470"/>
+ <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditorwindow.cpp" line="-465"/>
<source>Sender</source>
<translation>å‘é€è€…</translation>
</message>
@@ -5093,7 +5068,7 @@ Do you want overwrite the template?</source>
<translation>槽</translation>
</message>
<message>
- <location line="+97"/>
+ <location line="+90"/>
<source>&lt;sender&gt;</source>
<translation>&lt;å‘é€è€…&gt;</translation>
</message>
@@ -5126,7 +5101,7 @@ Do you want overwrite the template?</source>
<context>
<name>qdesigner_internal::ContainerWidgetTaskMenu</name>
<message>
- <location filename="../tools/designer/src/components/taskmenu/containerwidget_taskmenu.cpp" line="+82"/>
+ <location filename="../tools/designer/src/components/taskmenu/containerwidget_taskmenu.cpp" line="+112"/>
<source>Insert Page Before Current Page</source>
<translation>在当å‰é¡µä¹‹å‰æ’入页</translation>
</message>
@@ -5189,7 +5164,7 @@ Do you want overwrite the template?</source>
<context>
<name>qdesigner_internal::DesignerPropertyManager</name>
<message>
- <location filename="../tools/designer/src/components/propertyeditor/designerpropertymanager.cpp" line="+614"/>
+ <location filename="../tools/designer/src/components/propertyeditor/designerpropertymanager.cpp" line="+644"/>
<location line="+6"/>
<source>AlignLeft</source>
<translation>AlignLeft</translation>
@@ -5330,7 +5305,7 @@ Do you want overwrite the template?</source>
<context>
<name>qdesigner_internal::DeviceProfileDialog</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/deviceprofiledialog.cpp" line="+33"/>
+ <location filename="../tools/designer/src/components/formeditor/deviceprofiledialog.cpp" line="+63"/>
<source>Device Profiles (*.%1)</source>
<translation>设备æ述文件(*.%1)</translation>
</message>
@@ -5437,14 +5412,60 @@ Do you want overwrite the template?</source>
<context>
<name>qdesigner_internal::EmbeddedOptionsControl</name>
<message>
+ <location filename="../tools/designer/src/components/formeditor/embeddedoptionspage.cpp" line="-256"/>
+ <source>Add a profile</source>
+ <translation type="unfinished">添加æ述文件</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Edit the selected profile</source>
+ <translation type="unfinished">编辑选中的æ述文件</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Delete the selected profile</source>
+ <translation type="unfinished">删除选中的æ述文件</translation>
+ </message>
+ <message>
+ <location line="+22"/>
+ <source>Add Profile</source>
+ <translation type="unfinished">添加æ述文件</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>New profile</source>
+ <translation type="unfinished">新建æ述文件</translation>
+ </message>
+ <message>
+ <location line="+35"/>
+ <source>Edit Profile</source>
+ <translation type="unfinished">编辑æ述文件</translation>
+ </message>
+ <message>
+ <location line="+26"/>
+ <source>Delete Profile</source>
+ <translation type="unfinished">删除æ述文件</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Would you like to delete the profile &apos;%1&apos;?</source>
+ <translation type="unfinished">ä½ è¦åˆ é™¤æ述文件“%1â€å—?</translation>
+ </message>
+ <message>
+ <location line="+55"/>
+ <source>Default</source>
+ <translation type="unfinished">默认</translation>
+ </message>
+ <message>
+ <location line="-160"/>
<source>None</source>
- <translation type="obsolete">æ— </translation>
+ <translation type="unfinished">æ— </translation>
</message>
</context>
<context>
<name>qdesigner_internal::FilterWidget</name>
<message>
- <location filename="../tools/designer/src/lib/shared/filterwidget.cpp" line="+155"/>
+ <location filename="../tools/designer/src/lib/shared/filterwidget.cpp" line="+185"/>
<source>&lt;Filter&gt;</source>
<translation>&lt;过滤器&gt;</translation>
</message>
@@ -5452,7 +5473,7 @@ Do you want overwrite the template?</source>
<context>
<name>qdesigner_internal::FormEditor</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/formeditor.cpp" line="+160"/>
+ <location filename="../tools/designer/src/components/formeditor/formeditor.cpp" line="+190"/>
<source>Resource File Changed</source>
<translation>资æºæ–‡ä»¶å·²æ”¹å˜</translation>
</message>
@@ -5473,7 +5494,7 @@ Do you want overwrite the template?</source>
<context>
<name>qdesigner_internal::FormWindow</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/formwindow.cpp" line="-1262"/>
+ <location filename="../tools/designer/src/components/formeditor/formwindow.cpp" line="-1267"/>
<source>Edit contents</source>
<translation>编辑内容</translation>
</message>
@@ -5487,7 +5508,7 @@ Do you want overwrite the template?</source>
<translation type="obsolete">æ’入窗å£éƒ¨ä»¶%1</translation>
</message>
<message>
- <location line="+836"/>
+ <location line="+841"/>
<source>Resize</source>
<translation>é‡å®šä¹‰å¤§å°</translation>
</message>
@@ -5531,13 +5552,13 @@ and then paste again.</source>
<translation>布局</translation>
</message>
<message>
- <location line="+490"/>
+ <location line="+493"/>
<location line="+55"/>
<source>Drop widget</source>
<translation>丢弃窗å£éƒ¨ä»¶</translation>
</message>
<message numerus="yes">
- <location line="-1052"/>
+ <location line="-1055"/>
<source>Paste %n action(s)</source>
<translation>
<numerusform>粘贴 %n 个动作</numerusform>
@@ -5576,7 +5597,7 @@ and then paste again.</source>
<translation>选择祖先</translation>
</message>
<message>
- <location line="+573"/>
+ <location line="+576"/>
<source>A QMainWindow-based form does not contain a central widget.</source>
<translation>一个基于 QMainWindow 的窗体没有包å«ä¸­å¤®çª—å£éƒ¨ä»¶ã€‚</translation>
</message>
@@ -5584,7 +5605,7 @@ and then paste again.</source>
<context>
<name>qdesigner_internal::FormWindowBase</name>
<message>
- <location filename="../tools/designer/src/lib/shared/formwindowbase.cpp" line="+363"/>
+ <location filename="../tools/designer/src/lib/shared/formwindowbase.cpp" line="+397"/>
<source>Delete</source>
<translation>删除</translation>
</message>
@@ -5597,7 +5618,7 @@ and then paste again.</source>
<context>
<name>qdesigner_internal::FormWindowManager</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/formwindowmanager.cpp" line="+337"/>
+ <location filename="../tools/designer/src/components/formeditor/formwindowmanager.cpp" line="+368"/>
<source>Cu&amp;t</source>
<translation>剪切(&amp;T)</translation>
</message>
@@ -5679,7 +5700,7 @@ and then paste again.</source>
<translation>调整选中的窗å£éƒ¨ä»¶çš„大å°</translation>
</message>
<message>
- <location line="+7"/>
+ <location line="+6"/>
<source>Lay Out &amp;Horizontally</source>
<translation>水平布局(&amp;H)</translation>
</message>
@@ -5729,7 +5750,7 @@ and then paste again.</source>
<translation>在一个分裂器中垂直布局选中的窗å£éƒ¨ä»¶</translation>
</message>
<message>
- <location line="+6"/>
+ <location line="+7"/>
<source>&amp;Break Layout</source>
<translation>打破布局(&amp;B)</translation>
</message>
@@ -5754,7 +5775,7 @@ and then paste again.</source>
<translation>窗体设定(&amp;S)...</translation>
</message>
<message>
- <location line="+75"/>
+ <location line="+78"/>
<source>Break Layout</source>
<translation>打破布局</translation>
</message>
@@ -5770,12 +5791,12 @@ and then paste again.</source>
<translation>无法创建窗体预览</translation>
</message>
<message>
- <location line="+324"/>
+ <location line="+341"/>
<source>Form Settings - %1</source>
<translation>窗体设定 - %1</translation>
</message>
<message>
- <location line="-539"/>
+ <location line="-560"/>
<source>Lay Out in a &amp;Form Layout</source>
<translation>在窗体布局中布局(&amp;F)</translation>
</message>
@@ -5785,7 +5806,7 @@ and then paste again.</source>
<translation>在一个窗体布局中布局选中的窗å£éƒ¨ä»¶</translation>
</message>
<message>
- <location line="+44"/>
+ <location line="+45"/>
<source>Si&amp;mplify Grid Layout</source>
<translation>简易网格布局(&amp;M)</translation>
</message>
@@ -5798,7 +5819,7 @@ and then paste again.</source>
<context>
<name>qdesigner_internal::FormWindowSettings</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/formwindowsettings.cpp" line="+162"/>
+ <location filename="../tools/designer/src/components/formeditor/formwindowsettings.cpp" line="+193"/>
<source>None</source>
<translation>æ— </translation>
</message>
@@ -5849,7 +5870,7 @@ and then paste again.</source>
<context>
<name>qdesigner_internal::GroupBoxTaskMenu</name>
<message>
- <location filename="../tools/designer/src/components/taskmenu/groupbox_taskmenu.cpp" line="+56"/>
+ <location filename="../tools/designer/src/components/taskmenu/groupbox_taskmenu.cpp" line="+86"/>
<source>Change title...</source>
<translation>改å˜æ ‡é¢˜...</translation>
</message>
@@ -5865,7 +5886,7 @@ and then paste again.</source>
<context>
<name>qdesigner_internal::IconSelector</name>
<message>
- <location filename="../tools/designer/src/lib/shared/iconselector.cpp" line="+210"/>
+ <location filename="../tools/designer/src/lib/shared/iconselector.cpp" line="+211"/>
<source>The pixmap file &apos;%1&apos; cannot be read.</source>
<translation>无法读å–åƒç´ æ˜ å°„文件“%1â€ã€‚</translation>
</message>
@@ -5958,7 +5979,7 @@ and then paste again.</source>
<context>
<name>qdesigner_internal::ItemListEditor</name>
<message>
- <location filename="../tools/designer/src/components/taskmenu/itemlisteditor.cpp" line="+349"/>
+ <location filename="../tools/designer/src/components/taskmenu/itemlisteditor.cpp" line="+358"/>
<source>Properties &amp;&lt;&lt;</source>
<translation>属性&amp;&lt;&lt;</translation>
</message>
@@ -6017,7 +6038,7 @@ and then paste again.</source>
<context>
<name>qdesigner_internal::LabelTaskMenu</name>
<message>
- <location filename="../tools/designer/src/components/taskmenu/label_taskmenu.cpp" line="+59"/>
+ <location filename="../tools/designer/src/components/taskmenu/label_taskmenu.cpp" line="+89"/>
<source>Change rich text...</source>
<translation>改å˜å¤šä¿¡æ¯æ–‡æœ¬...</translation>
</message>
@@ -6030,7 +6051,7 @@ and then paste again.</source>
<context>
<name>qdesigner_internal::LineEditTaskMenu</name>
<message>
- <location filename="../tools/designer/src/components/taskmenu/lineedit_taskmenu.cpp" line="+54"/>
+ <location filename="../tools/designer/src/components/taskmenu/lineedit_taskmenu.cpp" line="+84"/>
<source>Change text...</source>
<translation>改å˜æ–‡æœ¬...</translation>
</message>
@@ -6062,7 +6083,7 @@ and then paste again.</source>
<translation type="obsolete">U</translation>
</message>
<message>
- <location filename="../tools/designer/src/components/taskmenu/listwidgeteditor.cpp" line="+43"/>
+ <location filename="../tools/designer/src/components/taskmenu/listwidgeteditor.cpp" line="+73"/>
<source>New Item</source>
<translation>新建项目</translation>
</message>
@@ -6096,7 +6117,7 @@ and then paste again.</source>
<context>
<name>qdesigner_internal::ListWidgetTaskMenu</name>
<message>
- <location filename="../tools/designer/src/components/taskmenu/listwidget_taskmenu.cpp" line="+41"/>
+ <location filename="../tools/designer/src/components/taskmenu/listwidget_taskmenu.cpp" line="+71"/>
<source>Edit Items...</source>
<translation>编辑项目...</translation>
</message>
@@ -6132,7 +6153,7 @@ and then paste again.</source>
<context>
<name>qdesigner_internal::MenuTaskMenu</name>
<message>
- <location filename="../tools/designer/src/components/taskmenu/menutaskmenu.cpp" line="+30"/>
+ <location filename="../tools/designer/src/components/taskmenu/menutaskmenu.cpp" line="+60"/>
<source>Remove</source>
<translation>移除</translation>
</message>
@@ -6191,7 +6212,7 @@ and then paste again.</source>
<context>
<name>qdesigner_internal::NewDynamicPropertyDialog</name>
<message>
- <location filename="../tools/designer/src/components/propertyeditor/newdynamicpropertydialog.cpp" line="+104"/>
+ <location filename="../tools/designer/src/components/propertyeditor/newdynamicpropertydialog.cpp" line="+134"/>
<source>Set Property Name</source>
<translation>设置属性å称</translation>
</message>
@@ -6311,7 +6332,7 @@ Please select another name.</source>
<context>
<name>qdesigner_internal::NewPromotedClassPanel</name>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_promotiondialog.cpp" line="+66"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_promotiondialog.cpp" line="+96"/>
<source>Add</source>
<translation>添加</translation>
</message>
@@ -6349,7 +6370,7 @@ Please select another name.</source>
<context>
<name>qdesigner_internal::ObjectInspector</name>
<message>
- <location filename="../tools/designer/src/components/objectinspector/objectinspector.cpp" line="+727"/>
+ <location filename="../tools/designer/src/components/objectinspector/objectinspector.cpp" line="+758"/>
<source>&amp;Find in Text...</source>
<translation>在文本中查找(&amp;F)...</translation>
</message>
@@ -6365,7 +6386,7 @@ Please select another name.</source>
<context>
<name>qdesigner_internal::OrderDialog</name>
<message>
- <location filename="../tools/designer/src/lib/shared/orderdialog.cpp" line="+83"/>
+ <location filename="../tools/designer/src/lib/shared/orderdialog.cpp" line="+113"/>
<source>Index %1 (%2)</source>
<translation>索引 %1 (%2)</translation>
</message>
@@ -6446,7 +6467,7 @@ Please select another name.</source>
<context>
<name>qdesigner_internal::PaletteEditorButton</name>
<message>
- <location filename="../tools/designer/src/components/propertyeditor/paletteeditorbutton.cpp" line="+31"/>
+ <location filename="../tools/designer/src/components/propertyeditor/paletteeditorbutton.cpp" line="+61"/>
<source>Change Palette</source>
<translation>改å˜è°ƒè‰²æ¿</translation>
</message>
@@ -6454,7 +6475,7 @@ Please select another name.</source>
<context>
<name>qdesigner_internal::PaletteModel</name>
<message>
- <location filename="../tools/designer/src/components/propertyeditor/paletteeditor.cpp" line="+351"/>
+ <location filename="../tools/designer/src/components/propertyeditor/paletteeditor.cpp" line="+381"/>
<source>Color Role</source>
<translation>颜色角色</translation>
</message>
@@ -6506,15 +6527,61 @@ Please select another name.</source>
<context>
<name>qdesigner_internal::PlainTextEditorDialog</name>
<message>
- <location filename="../tools/designer/src/lib/shared/plaintexteditor.cpp" line="+39"/>
+ <location filename="../tools/designer/src/lib/shared/plaintexteditor.cpp" line="+69"/>
<source>Edit text</source>
<translation>编辑文本</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>组件</translation>
+ </message>
+ <message>
+ <location line="+13"/>
+ <source>Plugin Information</source>
+ <translation>æ’件信æ¯</translation>
+ </message>
+ <message>
+ <location line="+53"/>
+ <source>Qt Designer couldn&apos;t find any plugins</source>
+ <translation>Qt 设计师无法找到任何æ’件</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Qt Designer found the following plugins</source>
+ <translation>Qt 设计师已ç»æ‰¾åˆ°å¦‚下æ’件</translation>
+ </message>
+ <message>
+ <source>TextLabel</source>
+ <translation type="obsolete">文本标签</translation>
+ </message>
+ <message>
+ <location line="-52"/>
+ <source>Refresh</source>
+ <translation>刷新</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Scan for newly installed custom widget plugins.</source>
+ <translation>扫æ新安装的自定义窗å£éƒ¨ä»¶æ’件。</translation>
+ </message>
+ <message>
+ <location line="+106"/>
+ <source>New custom widget plugins have been found.</source>
+ <translation>新的自定义窗å£éƒ¨ä»¶æ’件已ç»è¢«æ‰¾åˆ°ã€‚</translation>
+ </message>
+ <message>
+ <source>1</source>
+ <translation type="obsolete">1</translation>
+ </message>
+</context>
+<context>
<name>qdesigner_internal::PreviewActionGroup</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/previewactiongroup.cpp" line="+65"/>
+ <location filename="../tools/designer/src/components/formeditor/previewactiongroup.cpp" line="+95"/>
<source>%1 Style</source>
<translation>%1 风格</translation>
</message>
@@ -6557,7 +6624,7 @@ Please select another name.</source>
<context>
<name>qdesigner_internal::PreviewDeviceSkin</name>
<message>
- <location filename="../tools/designer/src/lib/shared/previewmanager.cpp" line="+188"/>
+ <location filename="../tools/designer/src/lib/shared/previewmanager.cpp" line="+218"/>
<source>&amp;Close</source>
<translation>关闭(&amp;C)</translation>
</message>
@@ -6658,7 +6725,7 @@ Please select another name.</source>
<context>
<name>qdesigner_internal::PromotionTaskMenu</name>
<message>
- <location filename="../tools/designer/src/lib/shared/promotiontaskmenu.cpp" line="+55"/>
+ <location filename="../tools/designer/src/lib/shared/promotiontaskmenu.cpp" line="+85"/>
<source>Promoted widgets...</source>
<translation>æå‡çš„窗å£éƒ¨ä»¶...</translation>
</message>
@@ -6686,7 +6753,7 @@ Please select another name.</source>
<context>
<name>qdesigner_internal::PropertyEditor</name>
<message>
- <location filename="../tools/designer/src/components/propertyeditor/propertyeditor.cpp" line="+222"/>
+ <location filename="../tools/designer/src/components/propertyeditor/propertyeditor.cpp" line="+188"/>
<source>Add Dynamic Property...</source>
<translation>添加动æ€å±žæ€§ ...</translation>
</message>
@@ -6742,7 +6809,7 @@ Please select another name.</source>
%2</translation>
</message>
<message>
- <location line="+534"/>
+ <location line="+533"/>
<source>Object: %1
Class: %2</source>
<translation>对象:%1
@@ -6752,7 +6819,7 @@ Class: %2</source>
<context>
<name>qdesigner_internal::PropertyLineEdit</name>
<message>
- <location filename="../tools/designer/src/lib/shared/propertylineedit.cpp" line="+58"/>
+ <location filename="../tools/designer/src/lib/shared/propertylineedit.cpp" line="+88"/>
<source>Insert line break</source>
<translation>æ’å…¥æ¢è¡Œç¬¦</translation>
</message>
@@ -6901,7 +6968,7 @@ Class: %2</source>
<translation>设置最大大å°</translation>
</message>
<message>
- <location line="+236"/>
+ <location line="+235"/>
<source>Edit ToolTip</source>
<translation>编辑工具æ示</translation>
</message>
@@ -6910,8 +6977,13 @@ Class: %2</source>
<source>Edit WhatsThis</source>
<translation>编辑这是什么</translation>
</message>
+ <message>
+ <location line="+144"/>
+ <source>no signals available</source>
+ <translation type="unfinished"></translation>
+ </message>
<message numerus="yes">
- <location line="+132"/>
+ <location line="+67"/>
<source>Set size constraint on %n widget(s)</source>
<translation>
<numerusform>为 %n 个窗å£éƒ¨ä»¶è®¾ç½®å¤§å°é™å®š</numerusform>
@@ -6921,7 +6993,7 @@ Class: %2</source>
<context>
<name>qdesigner_internal::QDesignerWidgetBox</name>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_widgetbox.cpp" line="+97"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_widgetbox.cpp" line="+127"/>
<location line="+13"/>
<source>Unexpected element &lt;%1&gt;</source>
<translation>未预期的元素&lt;%1&gt;</translation>
@@ -6977,7 +7049,7 @@ Class: %2</source>
<context>
<name>qdesigner_internal::QtGradientStopsController</name>
<message>
- <location filename="../tools/shared/qtgradienteditor/qtgradientstopscontroller.cpp" line="+147"/>
+ <location filename="../tools/shared/qtgradienteditor/qtgradientstopscontroller.cpp" line="+177"/>
<source>H</source>
<translation>H</translation>
</message>
@@ -7152,7 +7224,7 @@ Class: %2</source>
<context>
<name>qdesigner_internal::ScriptDialog</name>
<message>
- <location filename="../tools/designer/src/lib/shared/scriptdialog.cpp" line="+38"/>
+ <location filename="../tools/designer/src/lib/shared/scriptdialog.cpp" line="+68"/>
<source>Edit script</source>
<translation>编辑脚本</translation>
</message>
@@ -7202,7 +7274,7 @@ Class: %2</source>
<context>
<name>qdesigner_internal::SignalSlotEditorPlugin</name>
<message>
- <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditor_plugin.cpp" line="+46"/>
+ <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditor_plugin.cpp" line="+76"/>
<source>Edit Signals/Slots</source>
<translation>编辑信å·/槽</translation>
</message>
@@ -7215,7 +7287,7 @@ Class: %2</source>
<context>
<name>qdesigner_internal::SignalSlotEditorTool</name>
<message>
- <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditor_tool.cpp" line="+32"/>
+ <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditor_tool.cpp" line="+62"/>
<source>Edit Signals/Slots</source>
<translation>编辑信å·/槽</translation>
</message>
@@ -7223,7 +7295,7 @@ Class: %2</source>
<context>
<name>qdesigner_internal::StatusBarTaskMenu</name>
<message>
- <location filename="../tools/designer/src/components/taskmenu/toolbar_taskmenu.cpp" line="+55"/>
+ <location filename="../tools/designer/src/components/taskmenu/toolbar_taskmenu.cpp" line="+85"/>
<source>Remove</source>
<translation>移除</translation>
</message>
@@ -7231,7 +7303,7 @@ Class: %2</source>
<context>
<name>qdesigner_internal::StringListEditorButton</name>
<message>
- <location filename="../tools/designer/src/components/propertyeditor/stringlisteditorbutton.cpp" line="+30"/>
+ <location filename="../tools/designer/src/components/propertyeditor/stringlisteditorbutton.cpp" line="+60"/>
<source>Change String List</source>
<translation>改å˜å­—符串列表</translation>
</message>
@@ -7239,7 +7311,7 @@ Class: %2</source>
<context>
<name>qdesigner_internal::StyleSheetEditorDialog</name>
<message>
- <location filename="../tools/designer/src/lib/shared/stylesheeteditor.cpp" line="+71"/>
+ <location filename="../tools/designer/src/lib/shared/stylesheeteditor.cpp" line="+101"/>
<source>Edit Style Sheet</source>
<translation>编辑样å¼è¡¨</translation>
</message>
@@ -7278,7 +7350,7 @@ Class: %2</source>
<context>
<name>qdesigner_internal::TabOrderEditor</name>
<message>
- <location filename="../tools/designer/src/components/tabordereditor/tabordereditor.cpp" line="+333"/>
+ <location filename="../tools/designer/src/components/tabordereditor/tabordereditor.cpp" line="+363"/>
<source>Start from Here</source>
<translation>从这里开始</translation>
</message>
@@ -7306,7 +7378,7 @@ Class: %2</source>
<context>
<name>qdesigner_internal::TabOrderEditorPlugin</name>
<message>
- <location filename="../tools/designer/src/components/tabordereditor/tabordereditor_plugin.cpp" line="+47"/>
+ <location filename="../tools/designer/src/components/tabordereditor/tabordereditor_plugin.cpp" line="+77"/>
<source>Edit Tab Order</source>
<translation>编辑 Tab 顺åº</translation>
</message>
@@ -7314,7 +7386,7 @@ Class: %2</source>
<context>
<name>qdesigner_internal::TabOrderEditorTool</name>
<message>
- <location filename="../tools/designer/src/components/tabordereditor/tabordereditor_tool.cpp" line="+31"/>
+ <location filename="../tools/designer/src/components/tabordereditor/tabordereditor_tool.cpp" line="+61"/>
<source>Edit Tab Order</source>
<translation>编辑 Tab 顺åº</translation>
</message>
@@ -7356,7 +7428,7 @@ Class: %2</source>
<translation type="obsolete">表格行</translation>
</message>
<message>
- <location filename="../tools/designer/src/components/taskmenu/tablewidgeteditor.cpp" line="+44"/>
+ <location filename="../tools/designer/src/components/taskmenu/tablewidgeteditor.cpp" line="+74"/>
<source>New Row</source>
<translation>新建行</translation>
</message>
@@ -7431,7 +7503,7 @@ Class: %2</source>
<context>
<name>qdesigner_internal::TableWidgetTaskMenu</name>
<message>
- <location filename="../tools/designer/src/components/taskmenu/tablewidget_taskmenu.cpp" line="+38"/>
+ <location filename="../tools/designer/src/components/taskmenu/tablewidget_taskmenu.cpp" line="+68"/>
<source>Edit Items...</source>
<translation>编辑项目...</translation>
</message>
@@ -7462,7 +7534,7 @@ Class: %2</source>
<context>
<name>qdesigner_internal::TextEditTaskMenu</name>
<message>
- <location filename="../tools/designer/src/components/taskmenu/textedit_taskmenu.cpp" line="+33"/>
+ <location filename="../tools/designer/src/components/taskmenu/textedit_taskmenu.cpp" line="+63"/>
<source>Change HTML...</source>
<translation>改å˜HTML...</translation>
</message>
@@ -7508,7 +7580,7 @@ Class: %2</source>
<context>
<name>qdesigner_internal::ToolBarEventFilter</name>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_toolbar.cpp" line="+209"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_toolbar.cpp" line="+239"/>
<source>Insert Separator</source>
<translation>æ’入分隔符</translation>
</message>
@@ -7558,7 +7630,7 @@ Class: %2</source>
<translation>树项目</translation>
</message>
<message>
- <location filename="../tools/designer/src/components/taskmenu/treewidgeteditor.cpp" line="+50"/>
+ <location filename="../tools/designer/src/components/taskmenu/treewidgeteditor.cpp" line="+80"/>
<source>&amp;Columns</source>
<translation>列(&amp;C)</translation>
</message>
@@ -7705,7 +7777,7 @@ Class: %2</source>
<context>
<name>qdesigner_internal::TreeWidgetTaskMenu</name>
<message>
- <location filename="../tools/designer/src/components/taskmenu/treewidget_taskmenu.cpp" line="+37"/>
+ <location filename="../tools/designer/src/components/taskmenu/treewidget_taskmenu.cpp" line="+67"/>
<source>Edit Items...</source>
<translation>编辑项目...</translation>
</message>
@@ -7713,7 +7785,7 @@ Class: %2</source>
<context>
<name>qdesigner_internal::WidgetBox</name>
<message>
- <location filename="../tools/designer/src/components/widgetbox/widgetbox_dnditem.cpp" line="+83"/>
+ <location filename="../tools/designer/src/components/widgetbox/widgetbox_dnditem.cpp" line="+113"/>
<source>Warning: Widget creation failed in the widget box. This could be caused by invalid custom widget XML.</source>
<translation>警告:部件框中的部件创建失败。å¯èƒ½æ˜¯ç”±äºŽæ— æ•ˆçš„自定义部件XML引起的。</translation>
</message>
@@ -7748,17 +7820,17 @@ Class: %2</source>
<context>
<name>qdesigner_internal::WidgetBoxTreeWidget</name>
<message>
- <location filename="../tools/designer/src/components/widgetbox/widgetboxtreewidget.cpp" line="-267"/>
+ <location filename="../tools/designer/src/components/widgetbox/widgetboxtreewidget.cpp" line="-268"/>
<source>Scratchpad</source>
<translation>便æ¡</translation>
</message>
<message>
- <location line="+360"/>
+ <location line="+370"/>
<source>Custom Widgets</source>
<translation>自定义窗å£éƒ¨ä»¶</translation>
</message>
<message>
- <location line="+261"/>
+ <location line="+260"/>
<source>Expand all</source>
<translation>全部展开</translation>
</message>
@@ -7799,7 +7871,7 @@ Class: %2</source>
<context>
<name>qdesigner_internal::WidgetEditorTool</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/tool_widgeteditor.cpp" line="+41"/>
+ <location filename="../tools/designer/src/components/formeditor/tool_widgeteditor.cpp" line="+71"/>
<source>Edit Widgets</source>
<translation>编辑窗å£éƒ¨ä»¶</translation>
</message>
@@ -7807,12 +7879,12 @@ Class: %2</source>
<context>
<name>qdesigner_internal::WidgetFactory</name>
<message>
- <location filename="../tools/designer/src/lib/shared/widgetfactory.cpp" line="+237"/>
+ <location filename="../tools/designer/src/lib/shared/widgetfactory.cpp" line="+267"/>
<source>The custom widget factory registered for widgets of class %1 returned 0.</source>
<translation>为类 %1 的窗å£éƒ¨ä»¶æ³¨å†Œçš„自定义窗å£éƒ¨ä»¶å·¥åŽ‚返回 0。</translation>
</message>
<message>
- <location line="+40"/>
+ <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>在使用为类 %1 的窗å£éƒ¨ä»¶æ³¨å†Œçš„自定义窗å£éƒ¨ä»¶å·¥åŽ‚创建一个窗å£éƒ¨ä»¶æ—¶ï¼Œå‘生了类å称ä¸åŒ¹é…。它返回了一个类 %2 的窗å£éƒ¨ä»¶ã€‚</translation>
</message>
@@ -7855,7 +7927,7 @@ This indicates an inconsistency in the ui-file.</source>
<context>
<name>qdesigner_internal::ZoomMenu</name>
<message>
- <location filename="../tools/designer/src/lib/shared/zoomwidget.cpp" line="+54"/>
+ <location filename="../tools/designer/src/lib/shared/zoomwidget.cpp" line="+84"/>
<source>%1 %</source>
<extracomment>Zoom factor</extracomment>
<translation>%1 %</translation>
diff --git a/translations/designer_zh_TW.ts b/translations/designer_zh_TW.ts
index 6dfd546..83c3c66 100644
--- a/translations/designer_zh_TW.ts
+++ b/translations/designer_zh_TW.ts
@@ -1,25 +1,27 @@
<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS><TS version="1.1" language="zh_TW">
-<defaultcodec></defaultcodec>
+<!DOCTYPE TS>
+<TS version="2.0" language="zh_TW">
<context>
<name></name>
<message>
- <location filename="../tools/designer/src/components/propertyeditor/previewframe.cpp" line="43"/>
+ <location filename="../tools/designer/src/components/propertyeditor/previewframe.cpp" line="+73"/>
<source>The moose in the noose
ate the goose who was loose.</source>
<translation>The moose in the noose
ate the goose who was loose.</translation>
</message>
<message>
- <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditorwindow.cpp" line="624"/>
+ <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditorwindow.cpp" line="+647"/>
<source>&lt;object&gt;</source>
<translation>&lt;物件&gt;</translation>
</message>
<message>
+ <location line="+18"/>
<source>&lt;signal&gt;</source>
<translation>&lt;信號&gt;</translation>
</message>
<message>
+ <location line="+0"/>
<source>&lt;slot&gt;</source>
<translation>&lt;信號槽&gt;</translation>
</message>
@@ -42,23 +44,27 @@ ate the goose who was loose.</translation>
<context>
<name>AbstractFindWidget</name>
<message>
- <location filename="../tools/shared/findwidget/abstractfindwidget.cpp" line="97"/>
+ <location filename="../tools/shared/findwidget/abstractfindwidget.cpp" line="+127"/>
<source>&amp;Previous</source>
<translation>å‰ä¸€å€‹(&amp;P)</translation>
</message>
<message>
+ <location line="+8"/>
<source>&amp;Next</source>
<translation>下一個(&amp;N)</translation>
</message>
<message>
+ <location line="+24"/>
<source>&amp;Case sensitive</source>
<translation>å€åˆ†å¤§å°å¯«(&amp;C)</translation>
</message>
<message>
+ <location line="+8"/>
<source>Whole &amp;words</source>
<translation>整個單字(&amp;W)</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;æœå°‹æŠ˜å›ž</translation>
</message>
@@ -66,14 +72,17 @@ ate the goose who was loose.</translation>
<context>
<name>AddLinkDialog</name>
<message>
+ <location filename="../tools/designer/src/lib/shared/addlinkdialog.ui"/>
<source>Insert Link</source>
<translation>æ’入連çµ</translation>
</message>
<message>
+ <location/>
<source>Title:</source>
<translation>標題:</translation>
</message>
<message>
+ <location/>
<source>URL:</source>
<translation>網å€ï¼š</translation>
</message>
@@ -81,7 +90,7 @@ ate the goose who was loose.</translation>
<context>
<name>AppFontDialog</name>
<message>
- <location filename="../tools/designer/src/designer/appfontdialog.cpp" line="388"/>
+ <location filename="../tools/designer/src/designer/appfontdialog.cpp" line="+418"/>
<source>Additional Fonts</source>
<translation>é¡å¤–çš„å­—åž‹</translation>
</message>
@@ -89,30 +98,37 @@ ate the goose who was loose.</translation>
<context>
<name>AppFontManager</name>
<message>
+ <location line="-267"/>
<source>&apos;%1&apos; is not a file.</source>
<translation>%1 ä¸æ˜¯ä¸€å€‹æª”案。</translation>
</message>
<message>
+ <location line="+4"/>
<source>The font file &apos;%1&apos; does not have read permissions.</source>
<translation>您沒有讀å–字型檔 %1 的權é™ã€‚</translation>
</message>
<message>
+ <location line="+8"/>
<source>The font file &apos;%1&apos; is already loaded.</source>
<translation>字型檔 %1 已載入。</translation>
</message>
<message>
+ <location line="+7"/>
<source>The font file &apos;%1&apos; could not be loaded.</source>
<translation>無法載入字型檔 %1。</translation>
</message>
<message>
+ <location line="+17"/>
<source>&apos;%1&apos; is not a valid font id.</source>
<translation>%1 ä¸æ˜¯ä¸€å€‹åˆæ³•çš„字型代碼。</translation>
</message>
<message>
+ <location line="+11"/>
<source>There is no loaded font matching the id &apos;%1&apos;.</source>
<translation>已載入的字型中沒有一個符åˆä»£ç¢¼ %1。</translation>
</message>
<message>
+ <location line="+15"/>
<source>The font &apos;%1&apos; (%2) could not be unloaded.</source>
<translation>無法å¸è¼‰å­—åž‹ %1(%2)。</translation>
</message>
@@ -120,42 +136,52 @@ ate the goose who was loose.</translation>
<context>
<name>AppFontWidget</name>
<message>
+ <location line="+26"/>
<source>Fonts</source>
<translation>å­—åž‹</translation>
</message>
<message>
+ <location line="+58"/>
<source>Add font files</source>
<translation>新增字型檔</translation>
</message>
<message>
+ <location line="+5"/>
<source>Remove current font file</source>
<translation>移除ç¾æœ‰çš„字型檔</translation>
</message>
<message>
+ <location line="+4"/>
<source>Remove all font files</source>
<translation>移除所有字型檔</translation>
</message>
<message>
+ <location line="+19"/>
<source>Add Font Files</source>
<translation>新增字型檔</translation>
</message>
<message>
+ <location line="+1"/>
<source>Font files (*.ttf)</source>
<translation>字型檔(*.ttf)</translation>
</message>
<message>
+ <location line="+13"/>
<source>Error Adding Fonts</source>
<translation>新增字型時發生錯誤</translation>
</message>
<message>
+ <location line="+24"/>
<source>Error Removing Fonts</source>
<translation>移除字型時發生錯誤</translation>
</message>
<message>
+ <location line="+22"/>
<source>Remove Fonts</source>
<translation>移除字型</translation>
</message>
<message>
+ <location line="+0"/>
<source>Would you like to remove all fonts?</source>
<translation>您è¦ç§»é™¤æ‰€æœ‰çš„字型嗎?</translation>
</message>
@@ -163,10 +189,12 @@ ate the goose who was loose.</translation>
<context>
<name>AppearanceOptionsWidget</name>
<message>
+ <location filename="../tools/designer/src/designer/qdesigner_appearanceoptions.ui"/>
<source>Form</source>
<translation>表單</translation>
</message>
<message>
+ <location/>
<source>User Interface Mode</source>
<translation>使用者介é¢æ¨¡å¼</translation>
</message>
@@ -174,15 +202,17 @@ ate the goose who was loose.</translation>
<context>
<name>AssistantClient</name>
<message>
- <location filename="../tools/designer/src/designer/assistantclient.cpp" line="70"/>
+ <location filename="../tools/designer/src/designer/assistantclient.cpp" line="+100"/>
<source>Unable to send request: Assistant is not responding.</source>
<translation>無法傳é€è¦æ±‚:å°å¹«æ‰‹æœªå›žæ‡‰ã€‚</translation>
</message>
<message>
+ <location line="+39"/>
<source>The binary &apos;%1&apos; does not exist.</source>
<translation>執行檔 %1 ä¸å­˜åœ¨ã€‚</translation>
</message>
<message>
+ <location line="+9"/>
<source>Unable to launch assistant (%1).</source>
<translation>無法啟動å°å¹«æ‰‹ï¼ˆ%1)。</translation>
</message>
@@ -190,23 +220,27 @@ ate the goose who was loose.</translation>
<context>
<name>BrushManagerProxy</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/brushmanagerproxy.cpp" line="191"/>
+ <location filename="../tools/designer/src/components/formeditor/brushmanagerproxy.cpp" line="+221"/>
<source>The element &apos;%1&apos; is missing the required attribute &apos;%2&apos;.</source>
<translation>元素 %1 中缺少必須的屬性 %2。</translation>
</message>
<message>
+ <location line="+11"/>
<source>Empty brush name encountered.</source>
<translation>é‡åˆ°ç©ºç™½çš„筆刷å稱。</translation>
</message>
<message>
+ <location line="+10"/>
<source>An unexpected element &apos;%1&apos; was encountered.</source>
<translation>é‡åˆ°æœªé æœŸçš„元素 %1。</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>讀å–筆刷定義檔 %1 時發生錯誤,在第 %2 行第 %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>讀å–資æºæª” %1 時發生錯誤,在第 %2 行第 %3 欄:%4</translation>
</message>
@@ -214,75 +248,92 @@ ate the goose who was loose.</translation>
<context>
<name>BrushPropertyManager</name>
<message>
- <location filename="../tools/designer/src/components/propertyeditor/brushpropertymanager.cpp" line="22"/>
+ <location filename="../tools/designer/src/components/propertyeditor/brushpropertymanager.cpp" line="+52"/>
<source>No brush</source>
<translation>沒有筆刷</translation>
</message>
<message>
+ <location line="+1"/>
<source>Solid</source>
<translation>固體</translation>
</message>
<message>
+ <location line="+1"/>
<source>Dense 1</source>
<translation>濃稠 1</translation>
</message>
<message>
+ <location line="+1"/>
<source>Dense 2</source>
<translation>濃稠 2</translation>
</message>
<message>
+ <location line="+1"/>
<source>Dense 3</source>
<translation>濃稠 3</translation>
</message>
<message>
+ <location line="+1"/>
<source>Dense 4</source>
<translation>濃稠 4</translation>
</message>
<message>
+ <location line="+1"/>
<source>Dense 5</source>
<translation>濃稠 5</translation>
</message>
<message>
+ <location line="+1"/>
<source>Dense 6</source>
<translation>濃稠 6</translation>
</message>
<message>
+ <location line="+1"/>
<source>Dense 7</source>
<translation>濃稠 7</translation>
</message>
<message>
+ <location line="+1"/>
<source>Horizontal</source>
<translation>æ°´å¹³</translation>
</message>
<message>
+ <location line="+1"/>
<source>Vertical</source>
<translation>åž‚ç›´</translation>
</message>
<message>
+ <location line="+1"/>
<source>Cross</source>
<translation>交å‰</translation>
</message>
<message>
+ <location line="+1"/>
<source>Backward diagonal</source>
<translation>往回斜線</translation>
</message>
<message>
+ <location line="+1"/>
<source>Forward diagonal</source>
<translation>å¾€å‰æ–œç·š</translation>
</message>
<message>
+ <location line="+1"/>
<source>Crossing diagonal</source>
<translation>交å‰æ–œç·š</translation>
</message>
<message>
+ <location line="+83"/>
<source>Style</source>
<translation>樣å¼</translation>
</message>
<message>
+ <location line="+11"/>
<source>Color</source>
<translation>é¡è‰²</translation>
</message>
<message>
+ <location line="+105"/>
<source>[%1, %2]</source>
<translation>[%1, %2]</translation>
</message>
@@ -290,132 +341,180 @@ ate the goose who was loose.</translation>
<context>
<name>Command</name>
<message>
+ <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditor.cpp" line="+208"/>
+ <location line="+258"/>
<source>Change signal</source>
<translation>變更信號</translation>
</message>
<message>
+ <location line="-256"/>
+ <location line="+268"/>
<source>Change slot</source>
<translation>變更信號槽</translation>
</message>
<message>
+ <location line="-220"/>
+ <source>Change signal-slot connection</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+234"/>
<source>Change sender</source>
<translation>變更發é€è€…</translation>
</message>
<message>
+ <location line="+18"/>
<source>Change receiver</source>
<translation>變更接收者</translation>
</message>
<message>
- <location filename="../tools/designer/src/lib/shared/connectionedit.cpp" line="113"/>
+ <location filename="../tools/designer/src/lib/shared/connectionedit.cpp" line="+143"/>
<source>Add connection</source>
<translation>新增連線</translation>
</message>
<message>
+ <location line="+54"/>
<source>Adjust connection</source>
<translation>調整連線</translation>
</message>
<message>
+ <location line="+19"/>
<source>Delete connections</source>
<translation>刪除連線</translation>
</message>
<message>
+ <location line="+58"/>
<source>Change source</source>
<translation>變更來æº</translation>
</message>
<message>
+ <location line="+2"/>
<source>Change target</source>
<translation>變更目標</translation>
</message>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_command.cpp" line="117"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_command.cpp" line="+149"/>
<source>Insert &apos;%1&apos;</source>
<translation>æ’å…¥ &apos;%1&apos;</translation>
</message>
<message>
+ <location line="+167"/>
<source>Raise &apos;%1&apos;</source>
<translation>æå‡ &apos;%1&apos;</translation>
</message>
<message>
+ <location line="+33"/>
<source>Lower &apos;%1&apos;</source>
<translation>é™ä½Ž &apos;%1&apos;</translation>
</message>
<message>
+ <location line="+113"/>
<source>Delete &apos;%1&apos;</source>
<translation>刪除 &apos;%1&apos;</translation>
</message>
<message>
+ <location line="+119"/>
<source>Reparent &apos;%1&apos;</source>
<translation>é‡å®šç¾©çˆ¶ç‰©ä»¶ &apos;%1&apos;</translation>
</message>
<message>
+ <location line="+53"/>
<source>Promote to custom widget</source>
<translation>æå‡åˆ°è‡ªè¨‚元件</translation>
</message>
<message>
+ <location line="+42"/>
<source>Demote from custom widget</source>
<translation>從自訂元件é™ç´š</translation>
</message>
<message>
+ <location line="+79"/>
<source>Lay out using grid</source>
<translation>使用格線佈局</translation>
</message>
<message>
+ <location line="+3"/>
<source>Lay out vertically</source>
<translation>垂直佈局</translation>
</message>
<message>
+ <location line="+3"/>
<source>Lay out horizontally</source>
<translation>水平佈局</translation>
</message>
<message>
+ <location line="+41"/>
<source>Break layout</source>
<translation>打斷佈局</translation>
</message>
<message>
+ <location line="+240"/>
+ <location line="+235"/>
+ <location line="+78"/>
<source>Move Page</source>
<translation>移動é é¢</translation>
</message>
<message>
+ <location line="-279"/>
+ <location line="+123"/>
+ <location line="+188"/>
+ <location line="+666"/>
<source>Delete Page</source>
<translation>刪除é é¢</translation>
</message>
<message>
+ <location line="-939"/>
+ <location line="+123"/>
<source>Page</source>
<translation>é é¢</translation>
</message>
<message>
+ <location line="-121"/>
+ <location line="+309"/>
+ <location line="+672"/>
<source>page</source>
<translation>é é¢</translation>
</message>
<message>
+ <location line="-978"/>
+ <location line="+123"/>
+ <location line="+186"/>
+ <location line="+667"/>
<source>Insert Page</source>
<translation>æ’å…¥é é¢</translation>
</message>
<message>
+ <location line="-856"/>
<source>tab</source>
<translation>定ä½é»ž</translation>
</message>
<message>
+ <location line="+209"/>
<source>Change Tab order</source>
<translation>變更定ä½é †åº</translation>
</message>
<message>
+ <location line="+28"/>
<source>Create Menu Bar</source>
<translation>建立é¸å–®åˆ—</translation>
</message>
<message>
+ <location line="+44"/>
<source>Delete Menu Bar</source>
<translation>刪除é¸å–®åˆ—</translation>
</message>
<message>
+ <location line="+47"/>
<source>Create Status Bar</source>
<translation>建立狀態列</translation>
</message>
<message>
+ <location line="+42"/>
<source>Delete Status Bar</source>
<translation>刪除狀態列</translation>
</message>
<message>
+ <location line="+45"/>
<source>Add Tool Bar</source>
<translation>新增工具列</translation>
</message>
@@ -424,14 +523,17 @@ ate the goose who was loose.</translation>
<translation type="obsolete">設定嵌入視窗元件</translation>
</message>
<message>
+ <location line="+59"/>
<source>Add Dock Window</source>
<translation>新增嵌入視窗</translation>
</message>
<message>
+ <location line="+53"/>
<source>Adjust Size of &apos;%1&apos;</source>
<translation>調整 &apos;%1&apos; 的大å°</translation>
</message>
<message>
+ <location line="+152"/>
<source>Change Layout Item Geometry</source>
<translation>變更佈局項目ä½ç½®</translation>
</message>
@@ -440,56 +542,70 @@ ate the goose who was loose.</translation>
<translation type="obsolete">æ’入列</translation>
</message>
<message>
+ <location line="+576"/>
<source>Change Table Contents</source>
<translation>變更表格內容</translation>
</message>
<message>
+ <location line="+107"/>
<source>Change Tree Contents</source>
<translation>變更樹狀圖內容</translation>
</message>
<message>
+ <location line="+74"/>
+ <location line="+146"/>
<source>Add action</source>
<translation>新增動作</translation>
</message>
<message>
+ <location line="-120"/>
+ <location line="+126"/>
<source>Remove action</source>
<translation>移除動作</translation>
</message>
<message>
+ <location line="+53"/>
<source>Add menu</source>
<translation>新增é¸å–®</translation>
</message>
<message>
+ <location line="+6"/>
<source>Remove menu</source>
<translation>移除é¸å–®</translation>
</message>
<message>
+ <location line="+6"/>
<source>Create submenu</source>
<translation>建立å­é¸å–®</translation>
</message>
<message>
+ <location line="+31"/>
<source>Delete Tool Bar</source>
<translation>刪除工具列</translation>
</message>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_menu.cpp" line="1125"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_menu.cpp" line="+1161"/>
<source>Set action text</source>
<translation>設定動作文字</translation>
</message>
<message>
+ <location line="+3"/>
<source>Insert action</source>
<translation>æ’入動作</translation>
</message>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_menubar.cpp" line="861"/>
+ <location line="+89"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_menubar.cpp" line="+891"/>
<source>Move action</source>
<translation>移動動作</translation>
</message>
<message>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_menubar.cpp" line="-404"/>
<source>Change Title</source>
<translation>變更標題</translation>
</message>
<message>
+ <location line="+2"/>
<source>Insert Menu</source>
<translation>æ’å…¥é¸å–®</translation>
</message>
@@ -544,119 +660,142 @@ ate the goose who was loose.</translation>
</translation>
</message>
<message>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_command.cpp" line="-2641"/>
<source>Change Z-order of &apos;%1&apos;</source>
<translation>變更 %1 çš„ Z é †åº</translation>
</message>
<message>
+ <location line="+625"/>
<source>Simplify Grid Layout</source>
<translation>簡化格線佈局</translation>
</message>
<message>
+ <location line="+916"/>
<source>Change Form Layout Item Geometry</source>
<translation>變更表單佈局項目的ä½ç½®</translation>
</message>
<message>
+ <location line="+233"/>
<source>Delete Subwindow</source>
<translation>刪除å­è¦–窗</translation>
</message>
<message>
+ <location line="+44"/>
<source>Insert Subwindow</source>
<translation>æ’å…¥å­è¦–窗</translation>
</message>
<message>
+ <location line="+2"/>
<source>subwindow</source>
<translation>å­è¦–窗</translation>
</message>
<message>
+ <location line="+1"/>
<source>Subwindow</source>
<translation>å­è¦–窗</translation>
</message>
<message>
- <location filename="../tools/designer/src/lib/shared/signalslotdialog.cpp" line="172"/>
+ <location filename="../tools/designer/src/lib/shared/signalslotdialog.cpp" line="+202"/>
<source>Change signals/slots</source>
<translation>變更信號/信號槽</translation>
</message>
<message>
- <location filename="../tools/designer/src/components/taskmenu/button_taskmenu.cpp" line="195"/>
+ <location filename="../tools/designer/src/components/taskmenu/button_taskmenu.cpp" line="+225"/>
<source>Create button group</source>
<translation>建立按éµç¾¤çµ„</translation>
</message>
<message>
+ <location line="+27"/>
<source>Break button group</source>
<translation>打破按éµç¾¤çµ„</translation>
</message>
<message>
+ <location line="+9"/>
<source>Break button group &apos;%1&apos;</source>
<translation>打破按éµç¾¤çµ„ %1</translation>
</message>
<message>
+ <location line="+17"/>
<source>Add buttons to group</source>
<translation>將按éµæ–°å¢žåˆ°ç¾¤çµ„</translation>
</message>
<message>
- <location filename="../tools/designer/src/lib/shared/formlayoutmenu.cpp" line="373"/>
+ <location line="+8"/>
+ <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>將 %1 新增到 %2</translation>
</message>
<message>
+ <location line="+14"/>
<source>Remove buttons from group</source>
<translation>將按éµå¾žç¾¤çµ„內移除</translation>
</message>
<message>
+ <location line="+15"/>
<source>Remove &apos;%1&apos; from &apos;%2&apos;</source>
+ <extracomment>Command description for removing buttons from a QButtonGroup</extracomment>
<translation>將 %1 從 %2 內移除</translation>
</message>
<message>
- <location filename="../tools/designer/src/lib/shared/morphmenu.cpp" line="318"/>
+ <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>將 %1/%2 變形為 %3</translation>
</message>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_command2.cpp" line="124"/>
+ <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>將 %1 的佈局由 %2 變為 %3</translation>
</message>
<message>
- <location filename="../tools/designer/src/lib/shared/scriptcommand.cpp" line="25"/>
+ <location filename="../tools/designer/src/lib/shared/scriptcommand.cpp" line="+55"/>
<source>Change script</source>
<translation>變更文稿</translation>
</message>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_propertycommand.cpp" line="1176"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_propertycommand.cpp" line="+1209"/>
<source>Changed &apos;%1&apos; of &apos;%2&apos;</source>
<translation>已變更 %1 個,共 %2 個</translation>
</message>
<message numerus="yes">
+ <location line="+3"/>
<source>Changed &apos;%1&apos; of %n objects</source>
<translation>
<numerusform>已變更 %1 個,共 %n 個物件</numerusform>
</translation>
</message>
<message>
+ <location line="+76"/>
<source>Reset &apos;%1&apos; of &apos;%2&apos;</source>
<translation>å·²é‡ç½® %1 個,共 %2 個</translation>
</message>
<message numerus="yes">
+ <location line="+3"/>
<source>Reset &apos;%1&apos; of %n objects</source>
<translation>
<numerusform>å·²é‡ç½® %1 個,共 %n 個物件</numerusform>
</translation>
</message>
<message>
+ <location line="+89"/>
<source>Add dynamic property &apos;%1&apos; to &apos;%2&apos;</source>
<translation>新增動態屬性 %1 到 %2</translation>
</message>
<message numerus="yes">
+ <location line="+3"/>
<source>Add dynamic property &apos;%1&apos; to %n objects</source>
<translation>
<numerusform>新增動態屬性 %1 到 %n 個物件</numerusform>
</translation>
</message>
<message>
+ <location line="+86"/>
<source>Remove dynamic property &apos;%1&apos; from &apos;%2&apos;</source>
<translation>從 %2 移除動態屬性 %1</translation>
</message>
<message numerus="yes">
+ <location line="+3"/>
<source>Remove dynamic property &apos;%1&apos; from %n objects</source>
<translation>
<numerusform>從 %n 個物件移除動態屬性 %1</numerusform>
@@ -666,18 +805,22 @@ ate the goose who was loose.</translation>
<context>
<name>ConnectDialog</name>
<message>
+ <location filename="../tools/designer/src/components/signalsloteditor/connectdialog.ui"/>
<source>Configure Connection</source>
<translation>設定連線</translation>
</message>
<message>
+ <location/>
<source>GroupBox</source>
<translation>群組盒</translation>
</message>
<message>
+ <location/>
<source>Edit...</source>
<translation>編輯...</translation>
</message>
<message>
+ <location/>
<source>Show signals and slots inherited from QWidget</source>
<translation>顯示從 QWidget 繼承的信號與信號槽</translation>
</message>
@@ -685,23 +828,28 @@ ate the goose who was loose.</translation>
<context>
<name>DPI_Chooser</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/dpi_chooser.cpp" line="39"/>
+ <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>標準(96 x 96)</translation>
</message>
<message>
+ <location line="+2"/>
<source>Greenphone (179 x 185)</source>
+ <extracomment>Embedded device screen resolution</extracomment>
<translation>綠色手機(179 x 185)</translation>
</message>
<message>
+ <location line="+2"/>
<source>High (192 x 192)</source>
+ <extracomment>Embedded device high definition screen resolution</extracomment>
<translation>高(192 x 192)</translation>
</message>
</context>
<context>
<name>Designer</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/qdesigner_resource.cpp" line="409"/>
+ <location filename="../tools/designer/src/components/formeditor/qdesigner_resource.cpp" line="+439"/>
<source>Qt Designer</source>
<translation>Qt 設計家</translation>
</message>
@@ -710,52 +858,64 @@ ate the goose who was loose.</translation>
<translation type="obsolete">此檔案包å«æœ€ä¸Šå±¤çš„間隔器。&lt;br&gt;它們&lt;b&gt;尚未&lt;/b&gt;存到表單中。&lt;br&gt;也許您忘了建立佈局?</translation>
</message>
<message>
+ <location 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>此檔案包å«æœ€ä¸Šå±¤çš„間隔器。&lt;br&gt;它們&lt;b&gt;尚未&lt;/b&gt;存到表單中。</translation>
</message>
<message>
+ <location line="+2"/>
<source>Perhaps you forgot to create a layout?</source>
<translation>也許您忘了建立佈局?</translation>
</message>
<message>
+ <location line="+173"/>
<source>Invalid ui file: The root element &lt;ui&gt; is missing.</source>
<translation>ä¸åˆæ³•çš„ ui 檔。沒有根元素 &lt;ui&gt;。</translation>
</message>
<message>
+ <location line="+6"/>
<source>An error has occurred while reading the ui file at line %1, column %2: %3</source>
<translation>è®€å– ui 檔時發生錯誤,在第 %1 行,第 %2 欄:%3</translation>
</message>
<message>
+ <location line="+26"/>
<source>This file cannot be read because it was created using %1.</source>
<translation>此檔案無法讀å–,因為是用 %1 建立的。</translation>
</message>
<message>
+ <location line="+14"/>
<source>This file was created using Designer from Qt-%1 and cannot be read.</source>
<translation>此檔案是用 Qt-%1 的設計家建立的,因此無法讀å–。</translation>
</message>
<message>
+ <location line="+102"/>
<source>This file cannot be read because the extra info extension failed to load.</source>
<translation>此檔案無法讀å–,因為載入é¡å¤–的資訊延伸時失敗。</translation>
</message>
<message>
+ <location line="-72"/>
<source>The converted file could not be read.</source>
<translation>轉æ›å¾Œçš„檔案無法讀å–。</translation>
</message>
<message>
+ <location line="+4"/>
<source>This file was created using Designer from Qt-%1 and will be converted to a new form by Qt Designer.</source>
<translation>此檔案是用 Qt-%1 的設計家建立的,將會自動轉æ›æˆæ–°å¼çš„表單。</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>舊表單ä¸æœƒåšä»»ä½•æ›´å‹•ï¼Œä½†æ˜¯æ‚¨å¿…é ˆå¦å­˜æ–°æª”。</translation>
</message>
<message>
+ <location line="+11"/>
<source>This file was created using Designer from Qt-%1 and could not be read:
%2</source>
<translation>此檔案是用 Qt-%1 的設計家建立的,因此無法讀å–:
%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>請執行 &lt;b&gt;uic3 &amp;nbsp; -convert&lt;/b&gt; 將它轉æ›æˆ Qt 4 çš„ ui æ ¼å¼ã€‚</translation>
</message>
@@ -770,19 +930,22 @@ The old form has been untouched, but you will have to save this form under a new
<translation type="obsolete">此檔案是用 Qt-%1 的設計家建立的,因此無法讀å–。&lt;br&gt;%2&lt;br&gt;請先用 &lt;b&gt;uic3 -convert&lt;/b&gt; 將它轉æ›æˆ Qt-4 çš„æ ¼å¼ã€‚</translation>
</message>
<message>
+ <location line="+746"/>
<source>Custom Widgets</source>
<translation>自訂元件</translation>
</message>
<message>
+ <location line="+12"/>
<source>Promoted Widgets</source>
<translation>å·²æå‡çš„元件</translation>
</message>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_utils.cpp" line="602"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_utils.cpp" line="+682"/>
<source>Unable to launch %1.</source>
<translation>無法啟動 %1。</translation>
</message>
<message>
+ <location line="+4"/>
<source>%1 timed out.</source>
<translation>%1 逾時。</translation>
</message>
@@ -812,10 +975,12 @@ The old form has been untouched, but you will have to save this form under a new
<context>
<name>DesignerMetaEnum</name>
<message>
+ <location line="-513"/>
<source>%1 is not a valid enumeration value of &apos;%2&apos;.</source>
<translation>%1 ä¸æ˜¯ %2 çš„åˆæ³•åˆ—舉值。</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>%1 無法轉æ›ç‚º %2 型態的列舉值。</translation>
</message>
@@ -823,6 +988,7 @@ The old form has been untouched, but you will have to save this form under a new
<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>%1 無法轉æ›ç‚º %2 型態的旗標值。</translation>
</message>
@@ -830,11 +996,13 @@ The old form has been untouched, but you will have to save this form under a new
<context>
<name>DeviceProfile</name>
<message>
- <location filename="../tools/designer/src/lib/shared/deviceprofile.cpp" line="367"/>
+ <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>%1 ä¸æ˜¯ä¸€å€‹æ•¸å­—。</translation>
</message>
<message>
+ <location line="+23"/>
<source>An invalid tag &lt;%1&gt; was encountered.</source>
<translation>é‡åˆ°ä¸åˆæ³•çš„標籤 &lt;%1&gt;。</translation>
</message>
@@ -842,22 +1010,27 @@ The old form has been untouched, but you will have to save this form under a new
<context>
<name>DeviceProfileDialog</name>
<message>
+ <location filename="../tools/designer/src/components/formeditor/deviceprofiledialog.ui"/>
<source>&amp;Family</source>
<translation>家æ—(&amp;F)</translation>
</message>
<message>
+ <location/>
<source>&amp;Point Size</source>
<translation>點大å°(&amp;P)</translation>
</message>
<message>
+ <location/>
<source>Style</source>
<translation>樣å¼</translation>
</message>
<message>
+ <location/>
<source>Device DPI</source>
<translation>è£ç½®çš„ DPI</translation>
</message>
<message>
+ <location/>
<source>Name</source>
<translation>å稱</translation>
</message>
@@ -865,47 +1038,57 @@ The old form has been untouched, but you will have to save this form under a new
<context>
<name>DeviceSkin</name>
<message>
- <location filename="../tools/shared/deviceskin/deviceskin.cpp" line="49"/>
+ <location filename="../tools/shared/deviceskin/deviceskin.cpp" line="+79"/>
<source>The image file &apos;%1&apos; could not be loaded.</source>
<translation>無法載入影åƒæª” %1。</translation>
</message>
<message>
+ <location line="+64"/>
<source>The skin directory &apos;%1&apos; does not contain a configuration file.</source>
<translation>外觀目錄 %1 沒有設定檔。</translation>
</message>
<message>
+ <location line="+5"/>
<source>The skin configuration file &apos;%1&apos; could not be opened.</source>
<translation>外觀設定檔 %1 無法開啟。</translation>
</message>
<message>
+ <location line="+6"/>
<source>The skin configuration file &apos;%1&apos; could not be read: %2</source>
<translation>外觀設定檔 %1 無法讀å–:%2</translation>
</message>
<message>
+ <location line="+70"/>
<source>Syntax error: %1</source>
<translation>語法錯誤:%1</translation>
</message>
<message>
+ <location line="+21"/>
<source>The skin &quot;up&quot; image file &apos;%1&apos; does not exist.</source>
<translation>外觀中的「上ã€å½±åƒæª” %1 ä¸å­˜åœ¨ã€‚</translation>
</message>
<message>
+ <location line="+10"/>
<source>The skin &quot;down&quot; image file &apos;%1&apos; does not exist.</source>
<translation>外觀中的「下ã€å½±åƒæª” %1 ä¸å­˜åœ¨ã€‚</translation>
</message>
<message>
+ <location line="+11"/>
<source>The skin &quot;closed&quot; image file &apos;%1&apos; does not exist.</source>
<translation>外觀中的「關閉ã€å½±åƒæª” %1 ä¸å­˜åœ¨ã€‚</translation>
</message>
<message>
+ <location line="+12"/>
<source>The skin cursor image file &apos;%1&apos; does not exist.</source>
<translation>外觀中的游標影åƒæª” %1 ä¸å­˜åœ¨ã€‚</translation>
</message>
<message>
+ <location line="+25"/>
<source>Syntax error in area definition: %1</source>
<translation>å€åŸŸå®šç¾©ä¸­æœ‰èªžæ³•éŒ¯èª¤ï¼š%1</translation>
</message>
<message>
+ <location line="+38"/>
<source>Mismatch in number of areas, expected %1, got %2.</source>
<translation>å€åŸŸæ•¸é‡ä¸ç¬¦ã€‚應為 %1,實際上為 %2。</translation>
</message>
@@ -913,59 +1096,64 @@ The old form has been untouched, but you will have to save this form under a new
<context>
<name>EmbeddedOptionsControl</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/embeddedoptionspage.cpp" line="130"/>
<source>None</source>
- <translation>ç„¡</translation>
+ <translation type="obsolete">ç„¡</translation>
</message>
<message>
<source>Add a profile</source>
- <translation>新增設定檔</translation>
+ <translation type="obsolete">新增設定檔</translation>
</message>
<message>
<source>Edit the selected profile</source>
- <translation>編輯é¸å–的設定檔</translation>
+ <translation type="obsolete">編輯é¸å–的設定檔</translation>
</message>
<message>
<source>Delete the selected profile</source>
- <translation>刪除é¸å–的設定檔</translation>
+ <translation type="obsolete">刪除é¸å–的設定檔</translation>
</message>
<message>
<source>Add Profile</source>
- <translation>新增設定檔</translation>
+ <translation type="obsolete">新增設定檔</translation>
</message>
<message>
<source>New profile</source>
- <translation>新增設定檔</translation>
+ <translation type="obsolete">新增設定檔</translation>
</message>
<message>
<source>Edit Profile</source>
- <translation>編輯設定檔</translation>
+ <translation type="obsolete">編輯設定檔</translation>
</message>
<message>
<source>Delete Profile</source>
- <translation>刪除設定檔</translation>
+ <translation type="obsolete">刪除設定檔</translation>
</message>
<message>
<source>Would you like to delete the profile &apos;%1&apos;?</source>
- <translation>您è¦åˆªé™¤è¨­å®šæª” %1 嗎?</translation>
+ <translation type="obsolete">您è¦åˆªé™¤è¨­å®šæª” %1 嗎?</translation>
</message>
<message>
+ <location filename="../tools/designer/src/components/formeditor/embeddedoptionspage.cpp" line="+311"/>
<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;å­—åž‹&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;樣å¼&lt;/b&gt;&lt;/td&gt;&lt;td&gt;%3&lt;/td&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;解æžåº¦&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>
<message>
<source>Default</source>
- <translation>é è¨­</translation>
+ <translation type="obsolete">é è¨­</translation>
</message>
</context>
<context>
<name>EmbeddedOptionsPage</name>
<message>
+ <location line="+103"/>
<source>Embedded Design</source>
+ <extracomment>Tab in preferences dialog</extracomment>
<translation>嵌入å¼è¨­è¨ˆ</translation>
</message>
<message>
+ <location line="+10"/>
<source>Device Profiles</source>
+ <extracomment>EmbeddedOptionsControl group box&quot;</extracomment>
<translation>è£ç½®è¨­å®šæª”</translation>
</message>
</context>
@@ -995,23 +1183,27 @@ The old form has been untouched, but you will have to save this form under a new
<context>
<name>FontPanel</name>
<message>
- <location filename="../tools/shared/fontpanel/fontpanel.cpp" line="33"/>
+ <location filename="../tools/shared/fontpanel/fontpanel.cpp" line="+63"/>
<source>Font</source>
<translation>å­—åž‹</translation>
</message>
<message>
+ <location line="+11"/>
<source>&amp;Writing system</source>
<translation>寫入系統(&amp;W)</translation>
</message>
<message>
+ <location line="+3"/>
<source>&amp;Family</source>
<translation>家æ—(&amp;F)</translation>
</message>
<message>
+ <location line="+4"/>
<source>&amp;Style</source>
<translation>風格(&amp;S)</translation>
</message>
<message>
+ <location line="+4"/>
<source>&amp;Point size</source>
<translation>點大å°(&amp;P)</translation>
</message>
@@ -1019,19 +1211,22 @@ The old form has been untouched, but you will have to save this form under a new
<context>
<name>FontPropertyManager</name>
<message>
- <location filename="../tools/designer/src/components/propertyeditor/fontpropertymanager.cpp" line="32"/>
+ <location filename="../tools/designer/src/components/propertyeditor/fontpropertymanager.cpp" line="+62"/>
<source>PreferDefault</source>
<translation>é è¨­å–œå¥½è¨­å®š</translation>
</message>
<message>
+ <location line="+1"/>
<source>NoAntialias</source>
<translation>沒有å鋸齒</translation>
</message>
<message>
+ <location line="+1"/>
<source>PreferAntialias</source>
<translation>é è¨­å鋸齒</translation>
</message>
<message>
+ <location line="+61"/>
<source>Antialiasing</source>
<translation>å鋸齒</translation>
</message>
@@ -1039,35 +1234,43 @@ The old form has been untouched, but you will have to save this form under a new
<context>
<name>FormBuilder</name>
<message>
- <location filename="../tools/designer/src/lib/uilib/formbuilderextra.cpp" line="321"/>
+ <location filename="../tools/designer/src/lib/uilib/formbuilderextra.cpp" line="+351"/>
<source>Invalid stretch value for &apos;%1&apos;: &apos;%2&apos;</source>
+ <extracomment>Parsing layout stretch values</extracomment>
<translation>%1 的延伸值ä¸åˆæ³•ï¼š%2</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>%1 的最å°å€¼ä¸åˆæ³•ï¼š%2</translation>
</message>
</context>
<context>
<name>FormEditorOptionsPage</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/formeditor_optionspage.cpp" line="61"/>
+ <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>é è¦½ç¸®æ”¾</translation>
</message>
<message>
+ <location line="+2"/>
<source>Default Zoom</source>
<translation>é è¨­ç¸®æ”¾</translation>
</message>
<message>
+ <location line="+29"/>
<source>Forms</source>
+ <extracomment>Tab in preferences dialog</extracomment>
<translation>表單</translation>
</message>
<message>
+ <location line="+13"/>
<source>Default Grid</source>
<translation>é è¨­æ ¼ç·š</translation>
</message>
@@ -1075,30 +1278,37 @@ The old form has been untouched, but you will have to save this form under a new
<context>
<name>FormLayoutRowDialog</name>
<message>
+ <location filename="../tools/designer/src/lib/shared/formlayoutrowdialog.ui"/>
<source>Add Form Layout Row</source>
<translation>新增表單佈局列</translation>
</message>
<message>
+ <location/>
<source>&amp;Label text:</source>
<translation>標籤文字(&amp;L):</translation>
</message>
<message>
+ <location/>
<source>Field &amp;type:</source>
<translation>欄ä½åž‹æ…‹(&amp;T):</translation>
</message>
<message>
+ <location/>
<source>&amp;Field name:</source>
<translation>欄ä½å稱(&amp;F):</translation>
</message>
<message>
+ <location/>
<source>&amp;Buddy:</source>
<translation>åŒä¼´(&amp;B):</translation>
</message>
<message>
+ <location/>
<source>&amp;Row:</source>
<translation>列(&amp;R):</translation>
</message>
<message>
+ <location/>
<source>Label &amp;name:</source>
<translation>標籤å稱(&amp;N):</translation>
</message>
@@ -1106,11 +1316,12 @@ The old form has been untouched, but you will have to save this form under a new
<context>
<name>FormWindow</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/formwindow.cpp" line="1669"/>
+ <location filename="../tools/designer/src/components/formeditor/formwindow.cpp" line="+1705"/>
<source>Unexpected element &lt;%1&gt;</source>
<translation>未é æœŸçš„元素 &lt;%1&gt;</translation>
</message>
<message>
+ <location line="+7"/>
<source>Error while pasting clipboard contents at line %1, column %2: %3</source>
<translation>貼上剪貼簿內容時發生錯誤,在第 %1 行第 %2 欄:%3</translation>
</message>
@@ -1118,50 +1329,62 @@ The old form has been untouched, but you will have to save this form under a new
<context>
<name>FormWindowSettings</name>
<message>
+ <location filename="../tools/designer/src/components/formeditor/formwindowsettings.ui"/>
<source>Form Settings</source>
<translation>表單設定</translation>
</message>
<message>
+ <location/>
<source>Layout &amp;Default</source>
<translation>佈局é è¨­å€¼(&amp;D)</translation>
</message>
<message>
+ <location/>
<source>&amp;Spacing:</source>
<translation>間隔空間(&amp;S):</translation>
</message>
<message>
+ <location/>
<source>&amp;Margin:</source>
<translation>邊緣留白(&amp;M):</translation>
</message>
<message>
+ <location/>
<source>&amp;Layout Function</source>
<translation>佈局功能(&amp;L)</translation>
</message>
<message>
+ <location/>
<source>Ma&amp;rgin:</source>
<translation>邊緣留白(&amp;R):</translation>
</message>
<message>
+ <location/>
<source>Spa&amp;cing:</source>
<translation>間隔空間(&amp;C):</translation>
</message>
<message>
+ <location/>
<source>Embedded Design</source>
<translation>嵌入å¼è¨­è¨ˆ</translation>
</message>
<message>
+ <location/>
<source>&amp;Author</source>
<translation>作者(&amp;A)</translation>
</message>
<message>
+ <location/>
<source>&amp;Include Hints</source>
<translation>引入æ示(&amp;I)</translation>
</message>
<message>
+ <location/>
<source>&amp;Pixmap Function</source>
<translation>åƒç´ åœ–功能(&amp;P)</translation>
</message>
<message>
+ <location/>
<source>Grid</source>
<translation>格線</translation>
</message>
@@ -1169,7 +1392,7 @@ The old form has been untouched, but you will have to save this form under a new
<context>
<name>IconSelector</name>
<message>
- <location filename="../tools/designer/src/lib/shared/iconselector.cpp" line="321"/>
+ <location filename="../tools/designer/src/lib/shared/iconselector.cpp" line="+353"/>
<source>All Pixmaps (</source>
<translation>所有åƒç´ åœ– (</translation>
</message>
@@ -1177,14 +1400,16 @@ The old form has been untouched, but you will have to save this form under a new
<context>
<name>ItemPropertyBrowser</name>
<message>
- <location filename="../tools/designer/src/components/taskmenu/itemlisteditor.cpp" line="36"/>
+ <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>XX 圖示é¸æ“‡é—œé–‰</translation>
</message>
</context>
<context>
<name>LanguageResourceDialog</name>
<message>
+ <location filename="../tools/designer/src/lib/shared/iconselector.cpp" line="-235"/>
<source>Choose Resource</source>
<translation>é¸æ“‡è³‡æº</translation>
</message>
@@ -1192,27 +1417,33 @@ The old form has been untouched, but you will have to save this form under a new
<context>
<name>MainWindowBase</name>
<message>
- <location filename="../tools/designer/src/designer/mainwindow.cpp" line="89"/>
+ <location filename="../tools/designer/src/designer/mainwindow.cpp" line="+119"/>
<source>Main</source>
+ <extracomment>Not currently used (main tool bar)</extracomment>
<translation>主è¦</translation>
</message>
<message>
+ <location line="+6"/>
<source>File</source>
<translation>檔案</translation>
</message>
<message>
+ <location line="+1"/>
<source>Edit</source>
<translation>編輯</translation>
</message>
<message>
+ <location line="+1"/>
<source>Tools</source>
<translation>工具</translation>
</message>
<message>
+ <location line="+1"/>
<source>Form</source>
<translation>表單</translation>
</message>
<message>
+ <location line="+7"/>
<source>Qt Designer</source>
<translation>Qt 設計家</translation>
</message>
@@ -1220,23 +1451,27 @@ The old form has been untouched, but you will have to save this form under a new
<context>
<name>NewForm</name>
<message>
- <location filename="../tools/designer/src/designer/newform.cpp" line="49"/>
+ <location filename="../tools/designer/src/designer/newform.cpp" line="+79"/>
<source>C&amp;reate</source>
<translation>建立(&amp;R)</translation>
</message>
<message>
+ <location line="+1"/>
<source>Recent</source>
<translation>最近的</translation>
</message>
<message>
+ <location line="+32"/>
<source>&amp;Close</source>
<translation>關閉(&amp;C)</translation>
</message>
<message>
+ <location line="+3"/>
<source>&amp;Open...</source>
<translation>é–‹å•Ÿ(&amp;O)...</translation>
</message>
<message>
+ <location line="+4"/>
<source>&amp;Recent Forms</source>
<translation>最近開啟的表單(&amp;R)</translation>
</message>
@@ -1249,10 +1484,12 @@ The old form has been untouched, but you will have to save this form under a new
<translation type="obsolete">é¸æ“‡é è¦½çš„樣本</translation>
</message>
<message>
+ <location line="+64"/>
<source>Read error</source>
<translation>讀å–錯誤</translation>
</message>
<message>
+ <location line="-100"/>
<source>New Form</source>
<translation>新表單</translation>
</message>
@@ -1261,6 +1498,7 @@ The old form has been untouched, but you will have to save this form under a new
<translation type="obsolete">0</translation>
</message>
<message>
+ <location line="-5"/>
<source>Show this Dialog on Startup</source>
<translation>啟動時顯示此å°è©±æ¡†</translation>
</message>
@@ -1273,10 +1511,12 @@ The old form has been untouched, but you will have to save this form under a new
<translation type="obsolete">自訂元件</translation>
</message>
<message>
+ <location line="+128"/>
<source>A temporary form file could not be created in %1.</source>
<translation>無法於 %1 建立暫存表單檔。</translation>
</message>
<message>
+ <location line="+6"/>
<source>The temporary form file %1 could not be written.</source>
<translation>無法寫入暫存表單檔 %1。</translation>
</message>
@@ -1284,7 +1524,7 @@ The old form has been untouched, but you will have to save this form under a new
<context>
<name>NewFormWidget</name>
<message>
- <location filename="../tools/designer/src/lib/shared/newformwidget.cpp" line="465"/>
+ <location filename="../tools/designer/src/lib/shared/newformwidget.cpp" line="+495"/>
<source>Unable to open the form template file &apos;%1&apos;: %2</source>
<translation>無法開啟表單樣本檔 %1:%2</translation>
</message>
@@ -1292,19 +1532,22 @@ The old form has been untouched, but you will have to save this form under a new
<context>
<name>ObjectInspectorModel</name>
<message>
- <location filename="../tools/designer/src/components/objectinspector/objectinspectormodel.cpp" line="331"/>
+ <location filename="../tools/designer/src/components/objectinspector/objectinspectormodel.cpp" line="+364"/>
<source>Object</source>
<translation>物件</translation>
</message>
<message>
+ <location line="+1"/>
<source>Class</source>
<translation>類別</translation>
</message>
<message>
+ <location line="+35"/>
<source>separator</source>
<translation>分隔器</translation>
</message>
<message>
+ <location line="+98"/>
<source>&lt;noname&gt;</source>
<translation>&lt;未命å&gt;</translation>
</message>
@@ -1312,11 +1555,12 @@ The old form has been untouched, but you will have to save this form under a new
<context>
<name>ObjectNameDialog</name>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_taskmenu.cpp" line="132"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_taskmenu.cpp" line="+162"/>
<source>Change Object Name</source>
<translation>變更物件å稱</translation>
</message>
<message>
+ <location line="+4"/>
<source>Object Name</source>
<translation>物件å稱</translation>
</message>
@@ -1373,43 +1617,16 @@ There&apos;s nothing more here. You should get back to work.</source>
</message>
</context>
<context>
- <name>qdesigner_internal::PluginDialog</name>
- <message>
- <location filename="../tools/designer/src/designer/plugindialog.cpp" line="40"/>
- <source>Components</source>
- <translation>組件</translation>
- </message>
+ <name>PluginDialog</name>
<message>
+ <location filename="../tools/designer/src/lib/shared/plugindialog.ui"/>
<source>Plugin Information</source>
- <translation>外掛程å¼è³‡è¨Š</translation>
- </message>
- <message>
- <source>Refresh</source>
- <translation>刷新</translation>
- </message>
- <message>
- <source>Scan for newly installed custom widget plugins.</source>
- <translation>掃æ是å¦æœ‰æ–°å®‰è£çš„自訂元件外掛程å¼ã€‚</translation>
- </message>
- <message>
- <source>Qt Designer couldn&apos;t find any plugins</source>
- <translation>Qt 設計家找ä¸åˆ°ä»»ä½•çš„外掛程å¼ã€‚</translation>
- </message>
- <message>
- <source>Qt Designer found the following plugins</source>
- <translation>Qt 設計家找到以下的外掛程å¼</translation>
- </message>
- <message>
- <source>New custom widget plugins have been found.</source>
- <translation>找到新的自訂元件外掛程å¼ã€‚</translation>
- </message>
- <message>
- <source>TextLabel</source>
- <translation>文字標籤</translation>
+ <translation type="unfinished">外掛程å¼è³‡è¨Š</translation>
</message>
<message>
+ <location/>
<source>1</source>
- <translation>1</translation>
+ <translation type="unfinished">1</translation>
</message>
</context>
<context>
@@ -1435,6 +1652,7 @@ There&apos;s nothing more here. You should get back to work.</source>
<translation type="obsolete">è«‹é¸æ“‡è¦å„²å­˜æ¨£æœ¬çš„目錄</translation>
</message>
<message>
+ <location filename="../tools/designer/src/designer/preferencesdialog.ui"/>
<source>Preferences</source>
<translation>喜好設定</translation>
</message>
@@ -1454,39 +1672,47 @@ There&apos;s nothing more here. You should get back to work.</source>
<context>
<name>PreviewConfigurationWidget</name>
<message>
- <location filename="../tools/designer/src/lib/shared/previewconfigurationwidget.cpp" line="125"/>
+ <location filename="../tools/designer/src/lib/shared/previewconfigurationwidget.cpp" line="+155"/>
<source>Default</source>
<translation>é è¨­</translation>
</message>
<message>
+ <location line="+22"/>
<source>None</source>
<translation>ç„¡</translation>
</message>
<message>
+ <location line="+6"/>
<source>Browse...</source>
<translation>ç€è¦½...</translation>
</message>
<message>
+ <location filename="../tools/designer/src/lib/shared/previewconfigurationwidget.ui"/>
<source>Form</source>
<translation>表單</translation>
</message>
<message>
+ <location/>
<source>Print/Preview Configuration</source>
<translation>列å°/é è¦½è¨­å®š</translation>
</message>
<message>
+ <location/>
<source>Style</source>
<translation>樣å¼</translation>
</message>
<message>
+ <location/>
<source>Style sheet</source>
<translation>樣å¼è¡¨</translation>
</message>
<message>
+ <location/>
<source>...</source>
<translation>...</translation>
</message>
<message>
+ <location/>
<source>Device skin</source>
<translation>è£ç½®å¤–觀</translation>
</message>
@@ -1494,8 +1720,9 @@ There&apos;s nothing more here. You should get back to work.</source>
<context>
<name>PromotionModel</name>
<message>
- <location filename="../tools/designer/src/lib/shared/promotionmodel.cpp" line="86"/>
+ <location filename="../tools/designer/src/lib/shared/promotionmodel.cpp" line="+116"/>
<source>Not used</source>
+ <extracomment>Usage of promoted widgets</extracomment>
<translation>未使用</translation>
</message>
</context>
@@ -1509,6 +1736,8 @@ There&apos;s nothing more here. You should get back to work.</source>
<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>é é¢</translation>
</message>
@@ -1516,48 +1745,58 @@ There&apos;s nothing more here. You should get back to work.</source>
<context>
<name>QAbstractFormBuilder</name>
<message>
- <location filename="../tools/designer/src/lib/uilib/abstractformbuilder.cpp" line="176"/>
+ <location filename="../tools/designer/src/lib/uilib/abstractformbuilder.cpp" line="+206"/>
<source>Unexpected element &lt;%1&gt;</source>
<translation>未é æœŸçš„元素 &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>è®€å– ui 檔時發生錯誤,在第 %1 行,第 %2 欄:%3</translation>
</message>
<message>
+ <location line="+6"/>
<source>Invalid ui file: The root element &lt;ui&gt; is missing.</source>
<translation>ä¸åˆæ³•çš„ ui 檔。沒有根元素 &lt;ui&gt;。</translation>
</message>
<message>
+ <location line="+119"/>
<source>The creation of a widget of the class &apos;%1&apos; failed.</source>
<translation>建立類別 %1 的元件時失敗。</translation>
</message>
<message>
+ <location line="+295"/>
<source>Attempt to add child that is not of class QWizardPage to QWizard.</source>
<translation>試圖將ä¸æ˜¯ QWizardPage çš„å­é¡žåˆ¥åŠ å…¥ QWizard。</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>您試圖將一個佈局新增到元件 %1(%2)中,但該元件已經有一個éžç›’狀型態為 %3 的未管ç†ä½ˆå±€ã€‚這表示在 ui 檔中有發生ä¸ä¸€è‡´çš„情æ³ã€‚</translation>
</message>
<message>
+ <location line="+144"/>
<source>Empty widget item in %1 &apos;%2&apos;.</source>
<translation>空白的元件項目於 %1「%2ã€ã€‚</translation>
</message>
<message>
+ <location line="+684"/>
<source>Flags property are not supported yet.</source>
<translation>尚未支æ´æ——標屬性。</translation>
</message>
<message>
+ <location line="+81"/>
<source>While applying tab stops: The widget &apos;%1&apos; could not be found.</source>
<translation>套用定ä½é»žæ™‚:找ä¸åˆ°å…ƒä»¶ %1。</translation>
</message>
<message>
+ <location line="+749"/>
<source>Invalid QButtonGroup reference &apos;%1&apos; referenced by &apos;%2&apos;.</source>
<translation>%2 åƒè€ƒäº†ä¸åˆæ³•çš„ QButtonGroup åƒè€ƒ %1。</translation>
</message>
<message>
+ <location line="+518"/>
<source>This version of the uitools library is linked without script support.</source>
<translation>這個 uitools 函å¼åº«çš„版本沒有支æ´æ–‡ç¨¿ã€‚</translation>
</message>
@@ -1598,11 +1837,12 @@ This indicates an inconsistency in the ui-file.</source>
<context>
<name>QAxWidgetPlugin</name>
<message>
- <location filename="../tools/designer/src/plugins/activeqt/qaxwidgetplugin.cpp" line="45"/>
+ <location filename="../tools/designer/src/plugins/activeqt/qaxwidgetplugin.cpp" line="+75"/>
<source>ActiveX control</source>
<translation>ActiveX 控制</translation>
</message>
<message>
+ <location line="+5"/>
<source>ActiveX control widget</source>
<translation>ActiveX 控制元件</translation>
</message>
@@ -1610,19 +1850,22 @@ This indicates an inconsistency in the ui-file.</source>
<context>
<name>QAxWidgetTaskMenu</name>
<message>
- <location filename="../tools/designer/src/plugins/activeqt/qaxwidgettaskmenu.cpp" line="89"/>
+ <location filename="../tools/designer/src/plugins/activeqt/qaxwidgettaskmenu.cpp" line="+119"/>
<source>Set Control</source>
<translation>設定控制</translation>
</message>
<message>
+ <location line="+1"/>
<source>Reset Control</source>
<translation>é‡ç½®æŽ§åˆ¶</translation>
</message>
<message>
+ <location line="+41"/>
<source>Licensed Control</source>
<translation>已授權的控制</translation>
</message>
<message>
+ <location line="+1"/>
<source>The control requires a design-time license</source>
<translation>此控制è¦æ±‚設計期間的授權</translation>
</message>
@@ -1630,56 +1873,67 @@ This indicates an inconsistency in the ui-file.</source>
<context>
<name>QCoreApplication</name>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_promotion.cpp" line="53"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_promotion.cpp" line="+83"/>
<source>%1 is not a promoted class.</source>
<translation>%1 ä¸æ˜¯ä¸€å€‹å·²æå‡çš„類別。</translation>
</message>
<message>
+ <location line="+65"/>
<source>The base class %1 is invalid.</source>
<translation>基底類別 %1 ä¸åˆæ³•ã€‚</translation>
</message>
<message>
+ <location line="+7"/>
<source>The class %1 already exists.</source>
<translation>類別 %1 已存在。</translation>
</message>
<message>
+ <location line="+9"/>
<source>Promoted Widgets</source>
<translation>å·²æå‡å…ƒä»¶</translation>
</message>
<message>
+ <location line="+126"/>
<source>The class %1 cannot be removed</source>
<translation>類別 %1 無法移除</translation>
</message>
<message>
+ <location line="+9"/>
<source>The class %1 cannot be removed because it is still referenced.</source>
<translation>類別 %1 無法移除,因為它ä»åœ¨è¢«åƒè€ƒä¸­ã€‚</translation>
</message>
<message>
+ <location line="+10"/>
<source>The class %1 cannot be renamed</source>
<translation>類別 %1 無法é‡æ–°å‘½å</translation>
</message>
<message>
+ <location line="+7"/>
<source>The class %1 cannot be renamed to an empty name.</source>
<translation>類別 %1 無法é‡æ–°å‘½å為空的å稱。</translation>
</message>
<message>
+ <location line="+5"/>
<source>There is already a class named %1.</source>
<translation>已經有å為 %1 的類別。</translation>
</message>
<message>
+ <location line="+29"/>
<source>Cannot set an empty include file.</source>
<translation>ä¸æ³•è¨­å®šç©ºçš„引入檔。</translation>
</message>
<message>
- <location filename="../tools/designer/src/lib/uilib/formscriptrunner.cpp" line="58"/>
+ <location filename="../tools/designer/src/lib/uilib/formscriptrunner.cpp" line="+88"/>
<source>Exception at line %1: %2</source>
<translation>例外發生於行 %1:%2</translation>
</message>
<message>
+ <location line="+36"/>
<source>Unknown error</source>
<translation>未知的錯誤</translation>
</message>
<message>
+ <location line="+50"/>
<source>An error occurred while running the script for %1: %2
Script: %3</source>
<translation>執行 %1 的文稿時發生錯誤:%2
@@ -1689,15 +1943,17 @@ Script: %3</source>
<context>
<name>QDesigner</name>
<message>
- <location filename="../tools/designer/src/designer/qdesigner.cpp" line="111"/>
+ <location filename="../tools/designer/src/designer/qdesigner.cpp" line="+141"/>
<source>%1 - warning</source>
<translation>%1─警告</translation>
</message>
<message>
+ <location line="+96"/>
<source>Qt Designer</source>
<translation>Qt 設計家</translation>
</message>
<message>
+ <location line="+1"/>
<source>This application cannot be used for the Console edition of Qt</source>
<translation>此應用程å¼ç„¡æ³•ç”¨æ–¼ä¸»æŽ§å°ç‰ˆçš„ Qt</translation>
</message>
@@ -1712,7 +1968,7 @@ Script: %3</source>
<context>
<name>QDesignerActions</name>
<message>
- <location filename="../tools/designer/src/designer/qdesigner_actions.cpp" line="152"/>
+ <location filename="../tools/designer/src/designer/qdesigner_actions.cpp" line="+178"/>
<source>Edit Widgets</source>
<translation>編輯元件</translation>
</message>
@@ -1745,6 +2001,7 @@ Script: %3</source>
<translation type="obsolete">關閉表單(&amp;C)</translation>
</message>
<message>
+ <location line="+10"/>
<source>&amp;Quit</source>
<translation>離開(&amp;Q)</translation>
</message>
@@ -1757,14 +2014,17 @@ Script: %3</source>
<translation type="obsolete">表單設定(&amp;S)...</translation>
</message>
<message>
+ <location line="+3"/>
<source>&amp;Minimize</source>
<translation>最å°åŒ–(&amp;M)</translation>
</message>
<message>
+ <location line="+2"/>
<source>Bring All to Front</source>
<translation>把全部都帶到å‰æ™¯</translation>
</message>
<message>
+ <location line="+2"/>
<source>Preferences...</source>
<translation>喜好設定</translation>
</message>
@@ -1777,6 +2037,7 @@ Script: %3</source>
<translation type="obsolete">CTRL+O</translation>
</message>
<message>
+ <location line="+293"/>
<source>Clear &amp;Menu</source>
<translation>清除é¸å–®(&amp;M)</translation>
</message>
@@ -1785,6 +2046,7 @@ Script: %3</source>
<translation type="obsolete">CTRL+S</translation>
</message>
<message>
+ <location line="-232"/>
<source>CTRL+SHIFT+S</source>
<translation>CTRL+SHIFT+S</translation>
</message>
@@ -1793,6 +2055,7 @@ Script: %3</source>
<translation type="obsolete">CTRL+W</translation>
</message>
<message>
+ <location line="+27"/>
<source>CTRL+Q</source>
<translation>CTRL+Q</translation>
</message>
@@ -1805,6 +2068,7 @@ Script: %3</source>
<translation type="obsolete">CTRL+SHIFT+Z</translation>
</message>
<message>
+ <location line="+85"/>
<source>CTRL+R</source>
<translation>CTRL+R</translation>
</message>
@@ -1813,38 +2077,51 @@ Script: %3</source>
<translation type="obsolete">%1 風格</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>Qt 設計家說明(&amp;H)</translation>
</message>
<message>
+ <location line="+7"/>
<source>Current Widget Help</source>
<translation>ç›®å‰å…ƒä»¶èªªæ˜Ž</translation>
</message>
<message>
+ <location line="+7"/>
<source>What&apos;s New in Qt Designer?</source>
<translation>Qt 設計家有什麼新功能?</translation>
</message>
<message>
+ <location line="+7"/>
<source>About Plugins</source>
<translation>關於外掛程å¼</translation>
</message>
<message>
+ <location line="+6"/>
+ <location line="+601"/>
<source>About Qt Designer</source>
<translation>關於 Qt 設計家</translation>
</message>
<message>
+ <location line="-595"/>
<source>About Qt</source>
<translation>關於 Qt</translation>
</message>
<message>
+ <location line="+121"/>
+ <location line="+197"/>
<source>Open Form</source>
<translation>開啟表單</translation>
</message>
<message>
+ <location line="-196"/>
+ <location line="+37"/>
+ <location line="+160"/>
<source>Designer UI files (*.%1);;All Files (*)</source>
<translation>設計家介é¢æª” (*.%1);;所有檔案 (*)</translation>
</message>
@@ -1857,54 +2134,67 @@ Script: %3</source>
<translation type="obsolete">儲存</translation>
</message>
<message>
+ <location line="-615"/>
<source>%1 already exists.
Do you want to replace it?</source>
<translation>%1 已存在。
您è¦å–代它嗎?</translation>
</message>
<message>
+ <location line="-26"/>
<source>Saved %1.</source>
<translation>已儲存 %1。</translation>
</message>
<message>
+ <location line="+68"/>
<source>Additional Fonts...</source>
<translation>é¡å¤–çš„å­—åž‹</translation>
</message>
<message>
+ <location line="+298"/>
<source>&amp;Recent Forms</source>
<translation>最近開啟的表單(&amp;R)</translation>
</message>
<message>
+ <location line="+202"/>
<source>Designer</source>
<translation>設計家</translation>
</message>
<message>
+ <location line="+0"/>
<source>Feature not implemented yet!</source>
<translation>功能尚未實作ï¼</translation>
</message>
<message>
+ <location line="+59"/>
<source>Read error</source>
<translation>讀å–錯誤</translation>
</message>
<message>
+ <location line="+1"/>
<source>%1
Do you want to update the file location or generate a new form?</source>
<translation>%1
您è¦æ›´æ–°æª”案ä½ç½®ï¼Œé‚„是建立新的表單?</translation>
</message>
<message>
+ <location line="+3"/>
<source>&amp;Update</source>
<translation>æ›´æ–°(&amp;U)</translation>
</message>
<message>
+ <location line="+1"/>
<source>&amp;New Form</source>
<translation>新增表單(&amp;N)</translation>
</message>
<message>
+ <location line="+77"/>
+ <location line="+40"/>
<source>Save Form?</source>
<translation>è¦å„²å­˜è¡¨å–®å—Žï¼Ÿ</translation>
</message>
<message>
+ <location line="-39"/>
<source>Could not open file</source>
<translation>無法開啟檔案</translation>
</message>
@@ -1917,10 +2207,12 @@ Would you like to retry or change your file?</source>
您è¦é‡è©¦ï¼Œé‚„是è¦æ”¹è®Šæª”案?</translation>
</message>
<message>
+ <location line="+10"/>
<source>Select New File</source>
<translation>é¸æ“‡æ–°æª”案</translation>
</message>
<message>
+ <location line="+30"/>
<source>Could not write file</source>
<translation>無法寫入檔案</translation>
</message>
@@ -1933,6 +2225,7 @@ Would you like to retry?</source>
您è¦é‡è©¦å—Žï¼Ÿ</translation>
</message>
<message>
+ <location line="+201"/>
<source>&amp;Close Preview</source>
<translation>關閉é è¦½(&amp;C)</translation>
</message>
@@ -1945,38 +2238,48 @@ Would you like to retry?</source>
<translation type="obsolete">F3</translation>
</message>
<message>
+ <location line="-900"/>
<source>&amp;New...</source>
<translation>新增(&amp;N)...</translation>
</message>
<message>
+ <location line="+1"/>
<source>&amp;Open...</source>
<translation>é–‹å•Ÿ(&amp;O)...</translation>
</message>
<message>
+ <location line="+1"/>
<source>&amp;Save</source>
<translation>儲存(&amp;S)</translation>
</message>
<message>
+ <location line="+1"/>
<source>Save &amp;As...</source>
<translation>å¦å­˜æ–°æª”(&amp;A)...</translation>
</message>
<message>
+ <location line="+1"/>
<source>Save A&amp;ll</source>
<translation>全部儲存(&amp;A)</translation>
</message>
<message>
+ <location line="+1"/>
<source>Save As &amp;Template...</source>
<translation>儲存為樣本(&amp;T)...</translation>
</message>
<message>
+ <location line="+1"/>
+ <location line="+896"/>
<source>&amp;Close</source>
<translation>關閉(&amp;C)</translation>
</message>
<message>
+ <location line="-895"/>
<source>Save &amp;Image...</source>
<translation>儲存影åƒ(&amp;I)...</translation>
</message>
<message>
+ <location line="+1"/>
<source>&amp;Print...</source>
<translation>列å°(&amp;P)...</translation>
</message>
@@ -1985,26 +2288,33 @@ Would you like to retry?</source>
<translation type="obsolete">é è¦½(&amp;P)...</translation>
</message>
<message>
+ <location line="+3"/>
<source>View &amp;Code...</source>
<translation>檢視程å¼ç¢¼(&amp;C)...</translation>
</message>
<message>
+ <location line="+64"/>
<source>ALT+CTRL+S</source>
<translation>ALT+CTRL+S</translation>
</message>
<message>
+ <location line="+355"/>
+ <location line="+248"/>
<source>Save Form As</source>
<translation>å¦å­˜è¡¨å–®</translation>
</message>
<message>
+ <location line="+429"/>
<source>Preview failed</source>
<translation>é è¦½å¤±æ•—</translation>
</message>
<message>
+ <location line="-575"/>
<source>Code generation failed</source>
<translation>程å¼ç¢¼ç”¢ç”Ÿå¤±æ•—</translation>
</message>
<message>
+ <location line="+131"/>
<source>The file %1 could not be opened.
Reason: %2
Would you like to retry or select a different file?</source>
@@ -2013,6 +2323,7 @@ Would you like to retry or select a different file?</source>
您è¦å†å˜—試,還是è¦é¸æ“‡å…¶å®ƒæª”案?</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>
@@ -2021,42 +2332,55 @@ Would you like to retry?</source>
您è¦é‡è©¦å—Žï¼Ÿ</translation>
</message>
<message>
+ <location line="+158"/>
+ <location line="+34"/>
<source>Assistant</source>
<translation>å°åŠ©æ‰‹</translation>
</message>
<message>
+ <location line="+47"/>
+ <location line="+23"/>
<source>The backup file %1 could not be written.</source>
<translation>備份檔 %1 無法寫入。</translation>
</message>
<message>
+ <location line="+107"/>
<source>The backup directory %1 could not be created.</source>
<translation>無法建立備份目錄 %1。</translation>
</message>
<message>
+ <location line="+6"/>
<source>The temporary backup directory %1 could not be created.</source>
<translation>無法建立暫存備份目錄 %1。</translation>
</message>
<message>
+ <location line="+54"/>
<source>Image files (*.%1)</source>
<translation>å½±åƒæª” (*.%1)</translation>
</message>
<message>
+ <location line="+9"/>
+ <location line="+17"/>
<source>Save Image</source>
<translation>儲存影åƒ</translation>
</message>
<message>
+ <location line="-4"/>
<source>Saved image %1.</source>
<translation>å·²å„²å­˜å½±åƒ %1。</translation>
</message>
<message>
+ <location line="+5"/>
<source>The file %1 could not be written.</source>
<translation>檔案 %1 無法寫入。</translation>
</message>
<message>
+ <location line="+13"/>
<source>Please close all forms to enable the loading of additional fonts.</source>
<translation>請關閉所有表單,æ‰èƒ½è¼‰å…¥é¡å¤–的字型。</translation>
</message>
<message>
+ <location line="+52"/>
<source>Printed %1.</source>
<translation>å·²åˆ—å° %1。</translation>
</message>
@@ -2064,22 +2388,26 @@ Would you like to retry?</source>
<context>
<name>QDesignerAppearanceOptionsPage</name>
<message>
- <location filename="../tools/designer/src/designer/qdesigner_appearanceoptions.cpp" line="93"/>
+ <location filename="../tools/designer/src/designer/qdesigner_appearanceoptions.cpp" line="+138"/>
<source>Appearance</source>
+ <extracomment>Tab in preferences dialog</extracomment>
<translation>外觀</translation>
</message>
</context>
<context>
<name>QDesignerAppearanceOptionsWidget</name>
<message>
+ <location line="-53"/>
<source>Docked Window</source>
<translation>已嵌入視窗</translation>
</message>
<message>
+ <location line="+1"/>
<source>Multiple Top-Level Windows</source>
<translation>多個頂層視窗</translation>
</message>
<message>
+ <location line="+5"/>
<source>Toolwindow Font</source>
<translation>工具視窗字型</translation>
</message>
@@ -2087,19 +2415,22 @@ Would you like to retry?</source>
<context>
<name>QDesignerAxWidget</name>
<message>
+ <location filename="../tools/designer/src/plugins/activeqt/qaxwidgettaskmenu.cpp" line="-71"/>
<source>Reset control</source>
<translation>é‡ç½®æŽ§åˆ¶</translation>
</message>
<message>
+ <location line="+2"/>
<source>Set control</source>
<translation>設定控制</translation>
</message>
<message>
- <location filename="../tools/designer/src/plugins/activeqt/qdesigneraxwidget.cpp" line="149"/>
+ <location filename="../tools/designer/src/plugins/activeqt/qdesigneraxwidget.cpp" line="+179"/>
<source>Control loaded</source>
<translation>控制已載入</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>執行型態 %1 çš„ meta 呼å«æ™‚發生 COM 例外,索引 %2/%3。</translation>
</message>
@@ -2107,15 +2438,17 @@ Would you like to retry?</source>
<context>
<name>QDesignerFormBuilder</name>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_formbuilder.cpp" line="58"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_formbuilder.cpp" line="+88"/>
<source>Script errors occurred:</source>
<translation>發生文稿錯誤:</translation>
</message>
<message>
+ <location line="+304"/>
<source>The preview failed to build.</source>
<translation>建立é è¦½æ™‚失敗。</translation>
</message>
<message>
+ <location line="+63"/>
<source>Designer</source>
<translation>設計家</translation>
</message>
@@ -2123,19 +2456,22 @@ Would you like to retry?</source>
<context>
<name>QDesignerFormWindow</name>
<message>
- <location filename="../tools/designer/src/designer/qdesigner_formwindow.cpp" line="187"/>
+ <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>è¦å„²å­˜è¡¨å–®å—Žï¼Ÿ</translation>
</message>
<message>
+ <location line="+1"/>
<source>Do you want to save the changes to this document before closing?</source>
<translation>您è¦åœ¨é—œé–‰å‰å…ˆå„²å­˜å°æ­¤æ–‡ä»¶çš„變更嗎?</translation>
</message>
<message>
+ <location line="+2"/>
<source>If you don&apos;t save, your changes will be lost.</source>
<translation>如果您ä¸å„²å­˜ï¼Œæ‰€åšçš„變更將éºå¤±ã€‚</translation>
</message>
@@ -2143,30 +2479,38 @@ Would you like to retry?</source>
<context>
<name>QDesignerMenu</name>
<message>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_menu.cpp" line="-1160"/>
<source>Type Here</source>
<translation>在此輸入</translation>
</message>
<message>
+ <location line="+3"/>
<source>Add Separator</source>
<translation>新增分隔器</translation>
</message>
<message>
+ <location line="+372"/>
<source>Insert separator</source>
<translation>æ’入分隔器</translation>
</message>
<message>
+ <location line="+5"/>
<source>Remove separator</source>
<translation>移除分隔器</translation>
</message>
<message>
+ <location line="+2"/>
<source>Remove action &apos;%1&apos;</source>
<translation>移除動作 %1</translation>
</message>
<message>
+ <location line="+25"/>
+ <location line="+628"/>
<source>Add separator</source>
<translation>新增分隔器</translation>
</message>
<message>
+ <location line="-326"/>
<source>Insert action</source>
<translation>æ’入動作</translation>
</message>
@@ -2174,18 +2518,22 @@ Would you like to retry?</source>
<context>
<name>QDesignerMenuBar</name>
<message>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_menubar.cpp" line="-381"/>
<source>Type Here</source>
<translation>在此輸入</translation>
</message>
<message>
+ <location line="+304"/>
<source>Remove Menu &apos;%1&apos;</source>
<translation>移除é¸å–® %1</translation>
</message>
<message>
+ <location line="+12"/>
<source>Remove Menu Bar</source>
<translation>移除é¸å–®åˆ—</translation>
</message>
<message>
+ <location line="+70"/>
<source>Menu</source>
<translation>é¸å–®</translation>
</message>
@@ -2200,19 +2548,22 @@ Would you like to retry?</source>
<context>
<name>QDesignerPluginManager</name>
<message>
- <location filename="../tools/designer/src/lib/shared/pluginmanager.cpp" line="197"/>
+ <location filename="../tools/designer/src/lib/shared/pluginmanager.cpp" line="+249"/>
<source>An XML error was encountered when parsing the XML of the custom widget %1: %2</source>
<translation>剖æžè‡ªè¨‚元件 %1 çš„ XML æ ¼å¼æ™‚發生錯誤:%2</translation>
</message>
<message>
+ <location line="+27"/>
<source>The XML of the custom widget %1 does not contain any of the elements &lt;widget&gt; or &lt;ui&gt;.</source>
<translation>自訂元件 %1 çš„ XML 未包å«ä»»ä½• &lt;widget&gt; 或 &lt;ui&gt; 元素。</translation>
</message>
<message>
+ <location line="+12"/>
<source>The class attribute for the class %1 is missing.</source>
<translation>類別 %1 éºå¤±äº†é¡žåˆ¥å±¬æ€§ã€‚</translation>
</message>
<message>
+ <location line="+4"/>
<source>The class attribute for the class %1 does not match the class name %2.</source>
<translation>類別 %1 的類別屬性與類別å稱 %2 ä¸ç¬¦ã€‚</translation>
</message>
@@ -2231,7 +2582,7 @@ Would you like to retry?</source>
<context>
<name>QDesignerPropertySheet</name>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_propertysheet.cpp" line="717"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_propertysheet.cpp" line="+747"/>
<source>Dynamic Properties</source>
<translation>動態屬性</translation>
</message>
@@ -2239,25 +2590,33 @@ Would you like to retry?</source>
<context>
<name>QDesignerResource</name>
<message>
+ <location filename="../tools/designer/src/components/formeditor/qdesigner_resource.cpp" line="-246"/>
<source>The layout type &apos;%1&apos; is not supported, defaulting to grid.</source>
<translation>未支æ´ä½ˆå±€åž‹æ…‹ %1。改使用é è¨­çš„格線型態。</translation>
</message>
<message>
+ <location line="+342"/>
<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>元件 %1(%2)的容器延伸在查詢é é¢ #%5 時傳回了éžè¨­è¨ˆå™¨ %3(%4)管ç†çš„元件。
容器é é¢æ‡‰è©²åªèƒ½ç¶“由自訂元件的 domXml() 方法傳回的 XML 內指定加入。</translation>
</message>
<message>
+ <location line="+599"/>
<source>Unexpected element &lt;%1&gt;</source>
+ <extracomment>Parsing clipboard contents</extracomment>
<translation>未é æœŸçš„元素 &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>貼上剪貼簿內容時發生錯誤,在第 %1 行第 %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>貼上剪貼簿內容時發生錯誤:沒有根元素 &lt;ui&gt;。</translation>
</message>
</context>
@@ -2275,11 +2634,12 @@ Container pages should only be added by specifying them in XML returned by the d
<context>
<name>QDesignerSharedSettings</name>
<message>
- <location filename="../tools/designer/src/lib/shared/shared_settings.cpp" line="53"/>
+ <location filename="../tools/designer/src/lib/shared/shared_settings.cpp" line="+83"/>
<source>The template path %1 could not be created.</source>
<translation>無法建立樣本路徑 %1。</translation>
</message>
<message>
+ <location line="+184"/>
<source>An error has been encountered while parsing device profile XML: %1</source>
<translation>剖æžè£ç½®è¨­å®šæª” XML 時發生錯誤:%1</translation>
</message>
@@ -2387,27 +2747,32 @@ Container pages should only be added by specifying them in XML returned by the d
<context>
<name>QDesignerToolWindow</name>
<message>
- <location filename="../tools/designer/src/designer/qdesigner_toolwindow.cpp" line="160"/>
+ <location filename="../tools/designer/src/designer/qdesigner_toolwindow.cpp" line="+190"/>
<source>Property Editor</source>
<translation>屬性編輯器</translation>
</message>
<message>
+ <location line="+54"/>
<source>Action Editor</source>
<translation>動作編輯器</translation>
</message>
<message>
+ <location line="+42"/>
<source>Object Inspector</source>
<translation>物件指示器</translation>
</message>
<message>
+ <location line="+35"/>
<source>Resource Browser</source>
<translation>資æºç€è¦½å™¨</translation>
</message>
<message>
+ <location line="+34"/>
<source>Signal/Slot Editor</source>
<translation>信號/信號槽編輯器</translation>
</message>
<message>
+ <location line="+41"/>
<source>Widget Box</source>
<translation>元件盒</translation>
</message>
@@ -2419,19 +2784,22 @@ Container pages should only be added by specifying them in XML returned by the d
<translation type="obsolete">元件盒</translation>
</message>
<message>
- <location filename="../tools/designer/src/components/widgetbox/widgetboxtreewidget.cpp" line="318"/>
+ <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>在 %2 的第 %1 行發生錯誤:%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>å‰–æž &lt;widget&gt; 或 &lt;ui&gt; 時é‡åˆ°æœªé æœŸçš„元素 &lt;%1&gt;</translation>
</message>
<message>
+ <location line="+19"/>
<source>Unexpected end of file encountered when parsing widgets.</source>
<translation>剖æžå…ƒä»¶æ™‚é‡åˆ°æœªé æœŸçš„檔案çµæŸã€‚</translation>
</message>
<message>
+ <location line="+9"/>
<source>A widget element could not be found.</source>
<translation>找ä¸åˆ°å…ƒä»¶çš„元素。</translation>
</message>
@@ -2439,7 +2807,7 @@ Container pages should only be added by specifying them in XML returned by the d
<context>
<name>QDesignerWorkbench</name>
<message>
- <location filename="../tools/designer/src/designer/qdesigner_workbench.cpp" line="169"/>
+ <location filename="../tools/designer/src/designer/qdesigner_workbench.cpp" line="+199"/>
<source>&amp;File</source>
<translation>檔案(&amp;F)</translation>
</message>
@@ -2452,10 +2820,12 @@ Container pages should only be added by specifying them in XML returned by the d
<translation type="obsolete">編輯(&amp;E)</translation>
</message>
<message>
+ <location line="+6"/>
<source>F&amp;orm</source>
<translation>表單(&amp;O)</translation>
</message>
<message>
+ <location line="+1"/>
<source>Preview in</source>
<translation>é è¦½æ–¼</translation>
</message>
@@ -2464,10 +2834,12 @@ Container pages should only be added by specifying them in XML returned by the d
<translation type="obsolete">工具(&amp;T)</translation>
</message>
<message>
+ <location line="+8"/>
<source>&amp;Window</source>
<translation>視窗(&amp;W)</translation>
</message>
<message>
+ <location line="+2"/>
<source>&amp;Help</source>
<translation>說明(&amp;H)</translation>
</message>
@@ -2476,6 +2848,7 @@ Container pages should only be added by specifying them in XML returned by the d
<translation type="obsolete">檔案</translation>
</message>
<message>
+ <location line="-15"/>
<source>Edit</source>
<translation>編輯</translation>
</message>
@@ -2488,6 +2861,7 @@ Container pages should only be added by specifying them in XML returned by the d
<translation type="obsolete">表單</translation>
</message>
<message>
+ <location line="+38"/>
<source>Toolbars</source>
<translation>工具列</translation>
</message>
@@ -2500,6 +2874,7 @@ Container pages should only be added by specifying them in XML returned by the d
<translation type="obsolete">Qt 設計家</translation>
</message>
<message>
+ <location line="+464"/>
<source>Save Forms?</source>
<translation>è¦å„²å­˜è¡¨å–®å—Žï¼Ÿ</translation>
</message>
@@ -2508,30 +2883,37 @@ Container pages should only be added by specifying them in XML returned by the d
<translation type="obsolete">若您ä¸æª¢æŸ¥æ‚¨çš„文件,所有變更將éºå¤±ã€‚</translation>
</message>
<message>
+ <location line="-493"/>
<source>&amp;View</source>
<translation>檢視(&amp;V)</translation>
</message>
<message>
+ <location line="+2"/>
<source>&amp;Settings</source>
<translation>設定(&amp;S)</translation>
</message>
<message>
+ <location line="+495"/>
<source>If you do not review your documents, all your changes will be lost.</source>
<translation>若您ä¸æª¢æŸ¥æ‚¨çš„文件,所有變更將éºå¤±ã€‚</translation>
</message>
<message>
+ <location line="+1"/>
<source>Discard Changes</source>
<translation>丟棄變更</translation>
</message>
<message>
+ <location line="+2"/>
<source>Review Changes</source>
<translation>檢查變更</translation>
</message>
<message>
+ <location line="+95"/>
<source>Backup Information</source>
<translation>備份資訊</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>設計器上次並未正確çµæŸï¼Œä¸éŽæœ‰ç•™ä¸‹å‚™ä»½æª”。您è¦è¼‰å…¥å‚™ä»½æª”嗎?</translation>
</message>
@@ -2540,14 +2922,17 @@ Container pages should only be added by specifying them in XML returned by the d
<translation type="obsolete">設計家在您上次工作階段並沒有正確地çµæŸã€‚有一些備份檔案存在,您è¦è¼‰å…¥å®ƒå€‘嗎?</translation>
</message>
<message>
+ <location line="+111"/>
<source>The file &lt;b&gt;%1&lt;/b&gt; could not be opened.</source>
<translation>檔案 %1 無法開啟。</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>檔案 %1 ä¸æ˜¯åˆæ³•çš„設計家介é¢æª”。</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>有 %n 個表單有未儲存的變更。您è¦åœ¨é›¢é–‹å‰å…ˆæª¢æŸ¥é€™äº›è®Šæ›´å—Žï¼Ÿ</numerusform>
@@ -2577,45 +2962,53 @@ Container pages should only be added by specifying them in XML returned by the d
<context>
<name>QFormBuilder</name>
<message>
- <location filename="../tools/designer/src/lib/uilib/formbuilder.cpp" line="130"/>
+ <location filename="../tools/designer/src/lib/uilib/formbuilder.cpp" line="+160"/>
<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>傳é€äº†ç©ºç™½çš„類別å稱給 %1(物件å稱:%2)</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>QFormBuilder 無法建立類別 %1 的自訂元件。改為使用é è¨­çš„基礎類別 %2。</translation>
</message>
<message>
+ <location line="+6"/>
<source>QFormBuilder was unable to create a widget of the class &apos;%1&apos;.</source>
<translation>QFormBuilder 無法建立類別 %1 的元件。</translation>
</message>
<message>
+ <location line="+64"/>
<source>The layout type `%1&apos; is not supported.</source>
<translation>佈局型態 %1 未被支æ´ã€‚</translation>
</message>
<message>
- <location filename="../tools/designer/src/lib/uilib/properties.cpp" line="76"/>
+ <location filename="../tools/designer/src/lib/uilib/properties.cpp" line="+106"/>
<source>The set-type property %1 could not be read.</source>
<translation>設定型態屬性 %1 無法被讀å–。</translation>
</message>
<message>
+ <location line="+23"/>
<source>The enumeration-type property %1 could not be read.</source>
<translation>列舉型態屬性 %1 無法被讀å–。</translation>
</message>
<message>
+ <location line="+190"/>
<source>Reading properties of the type %1 is not supported yet.</source>
<translation>åž‹æ…‹ %1 的讀å–屬性尚未被支æ´ã€‚</translation>
</message>
<message>
+ <location line="+266"/>
<source>The property %1 could not be written. The type %2 is not supported yet.</source>
<translation>屬性 %1 無法被寫入。型態 %2 尚未被支æ´ã€‚</translation>
</message>
<message>
- <location filename="../tools/designer/src/lib/uilib/properties_p.h" line="102"/>
+ <location filename="../tools/designer/src/lib/uilib/properties_p.h" line="+132"/>
<source>The enumeration-value &apos;%1&apos; is invalid. The default value &apos;%2&apos; will be used instead.</source>
<translation>列舉數值 %1 ä¸åˆæ³•ã€‚將改用é è¨­å€¼ %2。</translation>
</message>
<message>
+ <location line="+14"/>
<source>The flag-value &apos;%1&apos; is invalid. Zero will be used instead.</source>
<translation>旗標值 %1 ä¸åˆæ³•ï¼Œå°‡æ”¹ç”¨ 0。</translation>
</message>
@@ -2881,39 +3274,47 @@ This indicates an inconsistency in the ui-file.</source>
<context>
<name>QStackedWidgetEventFilter</name>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_stackedbox.cpp" line="164"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_stackedbox.cpp" line="+194"/>
<source>Previous Page</source>
<translation>å‰ä¸€é </translation>
</message>
<message>
+ <location line="+1"/>
<source>Next Page</source>
<translation>下一é </translation>
</message>
<message>
+ <location line="+1"/>
<source>Delete</source>
<translation>刪除</translation>
</message>
<message>
+ <location line="+1"/>
<source>Before Current Page</source>
<translation>在目å‰é é¢ä¹‹å‰</translation>
</message>
<message>
+ <location line="+1"/>
<source>After Current Page</source>
<translation>在目å‰é é¢ä¹‹å¾Œ</translation>
</message>
<message>
+ <location line="+1"/>
<source>Change Page Order...</source>
<translation>變更é é¢é †åº...</translation>
</message>
<message>
+ <location line="+72"/>
<source>Change Page Order</source>
<translation>變更é é¢é †åº</translation>
</message>
<message>
+ <location line="+49"/>
<source>Page %1 of %2</source>
<translation>第 %1 é ï¼Œå…± %2 é </translation>
</message>
<message>
+ <location line="+11"/>
<source>Insert Page</source>
<translation>æ’å…¥é é¢</translation>
</message>
@@ -2921,10 +3322,12 @@ This indicates an inconsistency in the ui-file.</source>
<context>
<name>QStackedWidgetPreviewEventFilter</name>
<message>
+ <location line="-150"/>
<source>Go to previous page of %1 &apos;%2&apos; (%3/%4).</source>
<translation>跳到 %1 çš„å‰ä¸€é ã€Œ%2ã€ï¼ˆç¬¬ %3 é ï¼Œå…± %4 é ï¼‰ã€‚</translation>
</message>
<message>
+ <location line="+4"/>
<source>Go to next page of %1 &apos;%2&apos; (%3/%4).</source>
<translation>跳到 %1 的下一é ã€Œ%2ã€ï¼ˆç¬¬ %3 é ï¼Œå…± %4 é ï¼‰ã€‚</translation>
</message>
@@ -2932,23 +3335,27 @@ This indicates an inconsistency in the ui-file.</source>
<context>
<name>QTabWidgetEventFilter</name>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_tabwidget.cpp" line="59"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_tabwidget.cpp" line="+89"/>
<source>Delete</source>
<translation>刪除</translation>
</message>
<message>
+ <location line="+1"/>
<source>Before Current Page</source>
<translation>在目å‰é é¢ä¹‹å‰</translation>
</message>
<message>
+ <location line="+1"/>
<source>After Current Page</source>
<translation>在目å‰é é¢ä¹‹å¾Œ</translation>
</message>
<message>
+ <location line="+283"/>
<source>Page %1 of %2</source>
<translation>第 %1 é ï¼Œå…± %2 é </translation>
</message>
<message>
+ <location line="+12"/>
<source>Insert Page</source>
<translation>æ’å…¥é é¢</translation>
</message>
@@ -2956,31 +3363,37 @@ This indicates an inconsistency in the ui-file.</source>
<context>
<name>QToolBoxHelper</name>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_toolbox.cpp" line="34"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_toolbox.cpp" line="+64"/>
<source>Delete Page</source>
<translation>刪除é é¢</translation>
</message>
<message>
+ <location line="+1"/>
<source>Before Current Page</source>
<translation>在目å‰é é¢ä¹‹å‰</translation>
</message>
<message>
+ <location line="+1"/>
<source>After Current Page</source>
<translation>在目å‰é é¢ä¹‹å¾Œ</translation>
</message>
<message>
+ <location line="+1"/>
<source>Change Page Order...</source>
<translation>變更é é¢é †åº...</translation>
</message>
<message>
+ <location line="+116"/>
<source>Change Page Order</source>
<translation>變更é é¢é †åº</translation>
</message>
<message>
+ <location line="+44"/>
<source>Page %1 of %2</source>
<translation>第 %1 é ï¼Œå…± %2 é </translation>
</message>
<message>
+ <location line="+12"/>
<source>Insert Page</source>
<translation>æ’å…¥é é¢</translation>
</message>
@@ -2988,10 +3401,15 @@ This indicates an inconsistency in the ui-file.</source>
<context>
<name>QtBoolEdit</name>
<message>
+ <location filename="../tools/shared/qtpropertybrowser/qtpropertybrowserutils.cpp" line="+226"/>
+ <location line="+10"/>
+ <location line="+25"/>
<source>True</source>
<translation>真</translation>
</message>
<message>
+ <location line="-25"/>
+ <location line="+25"/>
<source>False</source>
<translation>å‡</translation>
</message>
@@ -2999,11 +3417,12 @@ This indicates an inconsistency in the ui-file.</source>
<context>
<name>QtBoolPropertyManager</name>
<message>
- <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="1469"/>
+ <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="+1477"/>
<source>True</source>
<translation>真</translation>
</message>
<message>
+ <location line="+1"/>
<source>False</source>
<translation>å‡</translation>
</message>
@@ -3011,7 +3430,7 @@ This indicates an inconsistency in the ui-file.</source>
<context>
<name>QtCharEdit</name>
<message>
- <location filename="../tools/shared/qtpropertybrowser/qteditorfactory.cpp" line="1573"/>
+ <location filename="../tools/shared/qtpropertybrowser/qteditorfactory.cpp" line="+1601"/>
<source>Clear Char</source>
<translation>清除字元</translation>
</message>
@@ -3019,6 +3438,7 @@ This indicates an inconsistency in the ui-file.</source>
<context>
<name>QtColorEditWidget</name>
<message>
+ <location line="+611"/>
<source>...</source>
<translation>...</translation>
</message>
@@ -3026,19 +3446,22 @@ This indicates an inconsistency in the ui-file.</source>
<context>
<name>QtColorPropertyManager</name>
<message>
- <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="4769"/>
+ <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="+4777"/>
<source>Red</source>
<translation>ç´…</translation>
</message>
<message>
+ <location line="+8"/>
<source>Green</source>
<translation>綠</translation>
</message>
<message>
+ <location line="+8"/>
<source>Blue</source>
<translation>è—</translation>
</message>
<message>
+ <location line="+8"/>
<source>Alpha</source>
<translation>Alpha</translation>
</message>
@@ -3046,78 +3469,97 @@ This indicates an inconsistency in the ui-file.</source>
<context>
<name>QtCursorDatabase</name>
<message>
+ <location filename="../tools/shared/qtpropertybrowser/qtpropertybrowserutils.cpp" line="-206"/>
<source>Arrow</source>
<translation>ç®­é ­</translation>
</message>
<message>
+ <location line="+2"/>
<source>Up Arrow</source>
<translation>上箭頭</translation>
</message>
<message>
+ <location line="+2"/>
<source>Cross</source>
<translation>交å‰</translation>
</message>
<message>
+ <location line="+2"/>
<source>Wait</source>
<translation>等待</translation>
</message>
<message>
+ <location line="+2"/>
<source>IBeam</source>
<translation>I åž‹</translation>
</message>
<message>
+ <location line="+2"/>
<source>Size Vertical</source>
<translation>垂直大å°</translation>
</message>
<message>
+ <location line="+2"/>
<source>Size Horizontal</source>
<translation>水平大å°</translation>
</message>
<message>
+ <location line="+2"/>
<source>Size Backslash</source>
<translation>å斜線大å°</translation>
</message>
<message>
+ <location line="+2"/>
<source>Size Slash</source>
<translation>斜線大å°</translation>
</message>
<message>
+ <location line="+2"/>
<source>Size All</source>
<translation>全部大å°</translation>
</message>
<message>
+ <location line="+2"/>
<source>Blank</source>
<translation>空白</translation>
</message>
<message>
+ <location line="+2"/>
<source>Split Vertical</source>
<translation>垂直分割</translation>
</message>
<message>
+ <location line="+2"/>
<source>Split Horizontal</source>
<translation>水平分割</translation>
</message>
<message>
+ <location line="+2"/>
<source>Pointing Hand</source>
<translation>指å‘手</translation>
</message>
<message>
+ <location line="+2"/>
<source>Forbidden</source>
<translation>ç¦æ­¢çš„</translation>
</message>
<message>
+ <location line="+2"/>
<source>Open Hand</source>
<translation>開啟的手</translation>
</message>
<message>
+ <location line="+2"/>
<source>Closed Hand</source>
<translation>關閉的手</translation>
</message>
<message>
+ <location line="+2"/>
<source>What&apos;s This</source>
<translation>這是什麼</translation>
</message>
<message>
+ <location line="+2"/>
<source>Busy</source>
<translation>忙碌</translation>
</message>
@@ -3129,11 +3571,12 @@ This indicates an inconsistency in the ui-file.</source>
<context>
<name>QtFontEditWidget</name>
<message>
- <location filename="../tools/shared/qtpropertybrowser/qteditorfactory.cpp" line="201"/>
+ <location filename="../tools/shared/qtpropertybrowser/qteditorfactory.cpp" line="+201"/>
<source>...</source>
<translation>...</translation>
</message>
<message>
+ <location line="+20"/>
<source>Select Font</source>
<translation>é¸æ“‡å­—åž‹</translation>
</message>
@@ -3145,30 +3588,37 @@ This indicates an inconsistency in the ui-file.</source>
<translation type="obsolete">[%1, %2]</translation>
</message>
<message>
+ <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="-353"/>
<source>Family</source>
<translation>家æ—</translation>
</message>
<message>
+ <location line="+13"/>
<source>Point Size</source>
<translation>點大å°</translation>
</message>
<message>
+ <location line="+8"/>
<source>Bold</source>
<translation>ç²—é«”</translation>
</message>
<message>
+ <location line="+7"/>
<source>Italic</source>
<translation>斜體</translation>
</message>
<message>
+ <location line="+7"/>
<source>Underline</source>
<translation>底線</translation>
</message>
<message>
+ <location line="+7"/>
<source>Strikeout</source>
<translation>刪除線</translation>
</message>
<message>
+ <location line="+7"/>
<source>Kerning</source>
<translation>上下çªå‡º</translation>
</message>
@@ -3176,6 +3626,7 @@ This indicates an inconsistency in the ui-file.</source>
<context>
<name>QtGradientDialog</name>
<message>
+ <location filename="../tools/shared/qtgradienteditor/qtgradientdialog.ui"/>
<source>Edit Gradient</source>
<translation>編輯漸層</translation>
</message>
@@ -3183,219 +3634,274 @@ This indicates an inconsistency in the ui-file.</source>
<context>
<name>QtGradientEditor</name>
<message>
- <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.cpp" line="405"/>
+ <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.cpp" line="+435"/>
<source>Start X</source>
<translation>起點 X 座標</translation>
</message>
<message>
+ <location line="+4"/>
<source>Start Y</source>
<translation>起點 Y 座標</translation>
</message>
<message>
+ <location line="+4"/>
<source>Final X</source>
<translation>終點 X 座標</translation>
</message>
<message>
+ <location line="+4"/>
<source>Final Y</source>
<translation>終點 Y 座標</translation>
</message>
<message>
+ <location line="+7"/>
+ <location line="+24"/>
<source>Central X</source>
<translation>中心 X 座標</translation>
</message>
<message>
+ <location line="-20"/>
+ <location line="+24"/>
<source>Central Y</source>
<translation>中心 Y 座標</translation>
</message>
<message>
+ <location line="-20"/>
<source>Focal X</source>
<translation>焦點 X 座標</translation>
</message>
<message>
+ <location line="+4"/>
<source>Focal Y</source>
<translation>焦點 Y 座標</translation>
</message>
<message>
+ <location line="+4"/>
<source>Radius</source>
<translation>åŠå¾‘</translation>
</message>
<message>
+ <location line="+16"/>
<source>Angle</source>
<translation>角度</translation>
</message>
<message>
+ <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.ui"/>
<source>Form</source>
<translation>表單</translation>
</message>
<message>
+ <location/>
<source>Gradient Editor</source>
<translation>漸層編輯器</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>æ­¤å€åŸŸé¡¯ç¤ºæ­£åœ¨ç·¨è¼¯ä¸­çš„漸層é è¦½ã€‚它也å…許您用拖放來編輯此漸層型態的一些åƒæ•¸ï¼Œå¦‚起點與終點,åŠå¾‘等等。</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>漸層åœæ­¢é»žç·¨è¼¯å™¨</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>這個å€åŸŸå¯ä»¥è®“您編輯漸層åœæ­¢é»žã€‚雙擊ç¾æœ‰çš„åœæ­¢é»žå¯ä»¥è¤‡è£½ä¸€ä»½ã€‚在åœæ­¢é»žå¤–雙擊å¯ä»¥ç”¢ç”Ÿæ–°çš„åœæ­¢é»žã€‚拖放åœæ­¢é»žå¯ä»¥æ”¹è®Šä½ç½®ã€‚點擊滑鼠å³éµæœƒå‡ºç¾é¸å–®ï¼Œå¯ä»¥é¸æ“‡æ›´å¤šå‹•ä½œã€‚</translation>
</message>
<message>
+ <location/>
<source>Zoom</source>
<translation>縮放</translation>
</message>
<message>
+ <location/>
<source>Reset Zoom</source>
<translation>é‡ç½®ç¸®æ”¾</translation>
</message>
<message>
+ <location/>
<source>Position</source>
<translation>ä½ç½®</translation>
</message>
<message>
+ <location/>
<source>Hue</source>
<translation>色調</translation>
</message>
<message>
+ <location/>
<source>H</source>
<translation>H</translation>
</message>
<message>
+ <location/>
<source>Saturation</source>
<translation>飽和度</translation>
</message>
<message>
+ <location/>
<source>S</source>
<translation>S</translation>
</message>
<message>
+ <location/>
<source>Sat</source>
<translation>Sat</translation>
</message>
<message>
+ <location/>
<source>Value</source>
<translation>數值</translation>
</message>
<message>
+ <location/>
<source>V</source>
<translation>V</translation>
</message>
<message>
+ <location/>
<source>Val</source>
<translation>Val</translation>
</message>
<message>
+ <location/>
<source>Alpha</source>
<translation>Alpha</translation>
</message>
<message>
+ <location/>
<source>A</source>
<translation>A</translation>
</message>
<message>
+ <location/>
<source>Type</source>
<translation>åž‹æ…‹</translation>
</message>
<message>
+ <location/>
<source>Spread</source>
<translation>散布</translation>
</message>
<message>
+ <location/>
<source>Color</source>
<translation>é¡è‰²</translation>
</message>
<message>
+ <location/>
<source>Current stop&apos;s color</source>
<translation>ç›®å‰åœæ­¢é»žçš„é¡è‰²</translation>
</message>
<message>
+ <location/>
<source>Show HSV specification</source>
<translation>顯示 HSV è¦æ ¼</translation>
</message>
<message>
+ <location/>
<source>HSV</source>
<translation>HSV</translation>
</message>
<message>
+ <location/>
<source>Show RGB specification</source>
<translation>顯示 RGB è¦æ ¼</translation>
</message>
<message>
+ <location/>
<source>RGB</source>
<translation>RGB</translation>
</message>
<message>
+ <location/>
<source>Current stop&apos;s position</source>
<translation>ç›®å‰åœæ­¢é»žä½ç½®</translation>
</message>
<message>
+ <location/>
<source>%</source>
<translation>%</translation>
</message>
<message>
+ <location/>
<source>Zoom In</source>
<translation>放大</translation>
</message>
<message>
+ <location/>
<source>Zoom Out</source>
<translation>縮å°</translation>
</message>
<message>
+ <location/>
<source>Toggle details extension</source>
<translation>切æ›è©³æƒ…延伸</translation>
</message>
<message>
+ <location/>
<source>&gt;</source>
<translation>&gt;</translation>
</message>
<message>
+ <location/>
<source>Linear Type</source>
<translation>線性型態</translation>
</message>
<message>
+ <location/>
<source>...</source>
<translation>...</translation>
</message>
<message>
+ <location/>
<source>Radial Type</source>
<translation>放射型態</translation>
</message>
<message>
+ <location/>
<source>Conical Type</source>
<translation>圓éŒåž‹æ…‹</translation>
</message>
<message>
+ <location/>
<source>Pad Spread</source>
<translation>填補散布</translation>
</message>
<message>
+ <location/>
<source>Repeat Spread</source>
<translation>é‡è¦†æ•£å¸ƒ</translation>
</message>
<message>
+ <location/>
<source>Reflect Spread</source>
<translation>å射散布</translation>
</message>
@@ -3403,31 +3909,37 @@ This indicates an inconsistency in the ui-file.</source>
<context>
<name>QtGradientStopsWidget</name>
<message>
- <location filename="../tools/shared/qtgradienteditor/qtgradientstopswidget.cpp" line="919"/>
+ <location filename="../tools/shared/qtgradienteditor/qtgradientstopswidget.cpp" line="+949"/>
<source>New Stop</source>
<translation>新增åœæ­¢é»ž</translation>
</message>
<message>
+ <location line="+1"/>
<source>Delete</source>
<translation>刪除</translation>
</message>
<message>
+ <location line="+1"/>
<source>Flip All</source>
<translation>全部翻轉</translation>
</message>
<message>
+ <location line="+1"/>
<source>Select All</source>
<translation>全部é¸å–</translation>
</message>
<message>
+ <location line="+1"/>
<source>Zoom In</source>
<translation>放大</translation>
</message>
<message>
+ <location line="+1"/>
<source>Zoom Out</source>
<translation>縮å°</translation>
</message>
<message>
+ <location line="+1"/>
<source>Reset Zoom</source>
<translation>é‡ç½®ç¸®æ”¾</translation>
</message>
@@ -3435,35 +3947,46 @@ This indicates an inconsistency in the ui-file.</source>
<context>
<name>QtGradientView</name>
<message>
- <location filename="../tools/shared/qtgradienteditor/qtgradientview.cpp" line="77"/>
+ <location filename="../tools/shared/qtgradienteditor/qtgradientview.cpp" line="+107"/>
<source>Grad</source>
<translation>漸層</translation>
</message>
<message>
+ <location line="+26"/>
<source>Remove Gradient</source>
<translation>移除漸層</translation>
</message>
<message>
+ <location line="+1"/>
<source>Are you sure you want to remove the selected gradient?</source>
<translation>您確定è¦ç§»é™¤é¸å–的漸層嗎?</translation>
</message>
<message>
+ <location line="+74"/>
+ <location filename="../tools/shared/qtgradienteditor/qtgradientview.ui"/>
<source>New...</source>
<translation>新增...</translation>
</message>
<message>
+ <location line="+1"/>
+ <location filename="../tools/shared/qtgradienteditor/qtgradientview.ui"/>
<source>Edit...</source>
<translation>編輯...</translation>
</message>
<message>
+ <location line="+1"/>
+ <location filename="../tools/shared/qtgradienteditor/qtgradientview.ui"/>
<source>Rename</source>
<translation>é‡æ–°å‘½å</translation>
</message>
<message>
+ <location line="+1"/>
+ <location filename="../tools/shared/qtgradienteditor/qtgradientview.ui"/>
<source>Remove</source>
<translation>移除</translation>
</message>
<message>
+ <location filename="../tools/shared/qtgradienteditor/qtgradientview.ui"/>
<source>Gradient View</source>
<translation>漸層檢視</translation>
</message>
@@ -3471,6 +3994,8 @@ This indicates an inconsistency in the ui-file.</source>
<context>
<name>QtGradientViewDialog</name>
<message>
+ <location filename="../tools/shared/qtgradienteditor/qtgradientviewdialog.h" line="+62"/>
+ <location filename="../tools/shared/qtgradienteditor/qtgradientviewdialog.ui"/>
<source>Select Gradient</source>
<translation>é¸æ“‡æ¼¸å±¤</translation>
</message>
@@ -3478,7 +4003,7 @@ This indicates an inconsistency in the ui-file.</source>
<context>
<name>QtKeySequenceEdit</name>
<message>
- <location filename="../tools/shared/qtpropertybrowser/qtpropertybrowserutils.cpp" line="221"/>
+ <location filename="../tools/shared/qtpropertybrowser/qtpropertybrowserutils.cpp" line="+221"/>
<source>Clear Shortcut</source>
<translation>清除æ·å¾‘</translation>
</message>
@@ -3486,14 +4011,17 @@ This indicates an inconsistency in the ui-file.</source>
<context>
<name>QtLocalePropertyManager</name>
<message>
+ <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="-3561"/>
<source>%1, %2</source>
<translation>%1,%2</translation>
</message>
<message>
+ <location line="+53"/>
<source>Language</source>
<translation>語言</translation>
</message>
<message>
+ <location line="+8"/>
<source>Country</source>
<translation>國家</translation>
</message>
@@ -3501,14 +4029,17 @@ This indicates an inconsistency in the ui-file.</source>
<context>
<name>QtPointFPropertyManager</name>
<message>
+ <location line="+415"/>
<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>
@@ -3516,14 +4047,17 @@ This indicates an inconsistency in the ui-file.</source>
<context>
<name>QtPointPropertyManager</name>
<message>
+ <location line="-322"/>
<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>
@@ -3531,10 +4065,12 @@ This indicates an inconsistency in the ui-file.</source>
<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>
@@ -3542,23 +4078,27 @@ This indicates an inconsistency in the ui-file.</source>
<context>
<name>QtRectFPropertyManager</name>
<message>
- <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="1705"/>
+ <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="+1716"/>
<source>[(%1, %2), %3 x %4]</source>
<translation>[(%1, %2), %3x%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>寬度</translation>
</message>
<message>
+ <location line="+9"/>
<source>Height</source>
<translation>高度</translation>
</message>
@@ -3566,22 +4106,27 @@ This indicates an inconsistency in the ui-file.</source>
<context>
<name>QtRectPropertyManager</name>
<message>
+ <location line="-614"/>
<source>[(%1, %2), %3 x %4]</source>
<translation>[(%1, %2), %3x%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>寬度</translation>
</message>
<message>
+ <location line="+8"/>
<source>Height</source>
<translation>高度</translation>
</message>
@@ -3589,41 +4134,52 @@ This indicates an inconsistency in the ui-file.</source>
<context>
<name>QtResourceEditorDialog</name>
<message>
- <location filename="../tools/designer/src/lib/shared/qtresourceeditordialog.cpp" line="46"/>
+ <location filename="../tools/designer/src/lib/shared/qtresourceeditordialog.cpp" line="+76"/>
<source>%1 already exists.
Do you want to replace it?</source>
<translation>%1 已存在。
您è¦å–代它嗎?</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>此檔案似乎ä¸æ˜¯è³‡æºæª”;應該是元素 %2 但是找到元素 %1。</translation>
</message>
<message>
+ <location line="+902"/>
<source>%1 [read-only]</source>
<translation>%1 [唯讀]</translation>
</message>
<message>
+ <location line="+2"/>
+ <location line="+198"/>
<source>%1 [missing]</source>
<translation>%1 [éºå¤±]</translation>
</message>
<message>
+ <location line="-72"/>
<source>&lt;no prefix&gt;</source>
<translation>&lt;沒有å‰ç½®å­—串&gt;</translation>
</message>
<message>
+ <location line="+320"/>
+ <location line="+567"/>
<source>New Resource File</source>
<translation>新資æºæª”</translation>
</message>
<message>
+ <location line="-565"/>
+ <location line="+25"/>
<source>Resource files (*.qrc)</source>
<translation>資æºæª” (*.qrc)</translation>
</message>
<message>
+ <location line="-2"/>
<source>Import Resource File</source>
<translation>匯入資æºæª”</translation>
</message>
<message>
+ <location line="+112"/>
<source>newPrefix</source>
<translation>æ–°å‰ç½®å­—串</translation>
</message>
@@ -3632,48 +4188,63 @@ Do you want to replace it?</source>
<translation type="obsolete">&lt;p&gt;&lt;b&gt;警告:&lt;/b&gt;檔案:&lt;/p&gt;&lt;p&gt;%1&lt;/p&gt;&lt;p&gt;放在目å‰è³‡æºæª”目錄之外。&lt;/p&gt;&lt;p&gt;您å¯ä»¥æŒ‰ä¸‹&lt;/p&gt;&lt;table&gt;&lt;tr&gt;&lt;th&gt;複製&lt;/th&gt;&lt;td&gt;來將檔案複製到資æºæª”目錄中。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;複製為...&lt;/th&gt;&lt;td&gt;來將檔案複製到æŸä¸€å€‹è³‡æºæª”çš„å­ç›®éŒ„。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;ä¿æŒ&lt;/th&gt;&lt;td&gt;使用它目å‰çš„ä½ç½®ã€‚&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</translation>
</message>
<message>
+ <location line="+49"/>
<source>Add Files</source>
<translation>新增檔案</translation>
</message>
<message>
+ <location line="+21"/>
<source>Incorrect Path</source>
<translation>ä¸æ­£ç¢ºçš„路徑</translation>
</message>
<message>
+ <location line="+3"/>
+ <location line="+19"/>
+ <location line="+212"/>
+ <location line="+7"/>
<source>Copy</source>
<translation>複製</translation>
</message>
<message>
+ <location line="-236"/>
<source>Copy As...</source>
<translation>複製為...</translation>
</message>
<message>
+ <location line="+2"/>
<source>Keep</source>
<translation>ä¿æŒ</translation>
</message>
<message>
+ <location line="+2"/>
<source>Skip</source>
<translation>ç•¥éŽ</translation>
</message>
<message>
+ <location line="+87"/>
<source>Clone Prefix</source>
<translation>複製å‰ç½®å­—串</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>請輸入您è¦è¤‡è£½æª”案的檔å的後置字串。
å¯ä»¥ç”¨èªžè¨€çš„延伸代碼,例如 &quot;_tw&quot;。</translation>
</message>
<message>
+ <location line="+113"/>
+ <location line="+4"/>
<source>Copy As</source>
<translation>複製為</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;é¸å–的檔案:&lt;/p&gt;&lt;p&gt;%1&lt;/p&gt;&lt;p&gt;在目å‰çš„資æºæª”目錄:&lt;/p&gt;&lt;p&gt;%2&lt;/p&gt;&lt;p&gt;之外。請é¸æ“‡åœ¨è©²ç›®éŒ„之內的路徑存放。&lt;/p&gt;</translation>
</message>
<message>
+ <location line="+20"/>
<source>Could not overwrite %1.</source>
<translation>無法覆寫 %1。</translation>
</message>
@@ -3688,14 +4259,17 @@ to:
%2</translation>
</message>
<message>
+ <location line="-289"/>
<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;警告:&lt;/b&gt;檔案&lt;/p&gt;&lt;p&gt;%1&lt;/p&gt;&lt;p&gt;放在目å‰è³‡æºæª”的父目錄以外。&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;è¦è§£æ±ºæ­¤å•é¡Œï¼Œè«‹æŒ‰&lt;/p&gt;&lt;table&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;複製&lt;/th&gt;&lt;td&gt;將該檔案複製到資æºæª”的父目錄。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;複製為...&lt;/th&gt;&lt;td&gt;將該檔案複製到資æºæª”的父目錄底下的æŸå€‹å­ç›®éŒ„。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;ä¿æŒ&lt;/th&gt;&lt;td&gt;則ä¸ç§»å‹•è©²æª”案。&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</translation>
</message>
<message>
+ <location line="+288"/>
<source>Could not copy
%1
to
@@ -3706,120 +4280,153 @@ to
%2</translation>
</message>
<message>
+ <location line="+35"/>
<source>A parse error occurred at line %1, column %2 of %3:
%4</source>
<translation>%3 中發生剖æžéŒ¯èª¤æ–¼è¡Œ %1 欄 %2:
%4</translation>
</message>
<message>
+ <location line="+12"/>
<source>Save Resource File</source>
<translation>儲存資æºæª”</translation>
</message>
<message>
+ <location line="+1"/>
<source>Could not write %1: %2</source>
<translation>無法寫入 %1:%2</translation>
</message>
<message>
+ <location line="+34"/>
<source>Edit Resources</source>
<translation>編輯資æº</translation>
</message>
<message>
+ <location line="+35"/>
<source>New...</source>
<translation>新增...</translation>
</message>
<message>
+ <location line="+2"/>
<source>Open...</source>
<translation>é–‹å•Ÿ...</translation>
</message>
<message>
+ <location line="+1"/>
<source>Open Resource File</source>
<translation>開啟資æºæª”</translation>
</message>
<message>
+ <location line="+1"/>
+ <location line="+11"/>
<source>Remove</source>
<translation>移除</translation>
</message>
<message>
+ <location line="-10"/>
+ <location line="+11"/>
<source>Move Up</source>
<translation>上移</translation>
</message>
<message>
+ <location line="-10"/>
+ <location line="+11"/>
<source>Move Down</source>
<translation>下移</translation>
</message>
<message>
+ <location line="-9"/>
+ <location line="+1"/>
<source>Add Prefix</source>
<translation>新增å‰ç½®å­—串</translation>
</message>
<message>
+ <location line="+1"/>
<source>Add Files...</source>
<translation>新增檔案...</translation>
</message>
<message>
+ <location line="+1"/>
<source>Change Prefix</source>
<translation>變更å‰ç½®å­—串</translation>
</message>
<message>
+ <location line="+1"/>
<source>Change Language</source>
<translation>變更語言</translation>
</message>
<message>
+ <location line="+1"/>
<source>Change Alias</source>
<translation>變更別å</translation>
</message>
<message>
+ <location line="+1"/>
<source>Clone Prefix...</source>
<translation>複製å‰ç½®å­—串...</translation>
</message>
<message>
+ <location line="+37"/>
<source>Prefix / Path</source>
<translation>å‰ç½®å­—串/路徑</translation>
</message>
<message>
+ <location line="+1"/>
<source>Language / Alias</source>
<translation>語言/別å</translation>
</message>
<message>
+ <location line="+119"/>
<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;警告:&lt;/b&gt;é‡æ–°è¼‰å…¥è³‡æº&lt;/p&gt;&lt;pre&gt;%1&lt;/pre&gt; &lt;p&gt;時發生å•é¡Œã€‚&lt;/p&gt;&lt;/html&gt;</translation>
</message>
<message>
+ <location line="+2"/>
<source>Resource Warning</source>
<translation>資æºè­¦å‘Š</translation>
</message>
<message>
+ <location filename="../tools/designer/src/lib/shared/qtresourceeditordialog.ui"/>
<source>Dialog</source>
<translation>å°è©±æ¡†</translation>
</message>
<message>
+ <location/>
<source>New File</source>
<translation>新增檔案</translation>
</message>
<message>
+ <location/>
<source>N</source>
<translation>N</translation>
</message>
<message>
+ <location/>
<source>Remove File</source>
<translation>移除檔案</translation>
</message>
<message>
+ <location/>
<source>R</source>
<translation>R</translation>
</message>
<message>
+ <location/>
<source>I</source>
<translation>I</translation>
</message>
<message>
+ <location/>
<source>New Resource</source>
<translation>新增資æº</translation>
</message>
<message>
+ <location/>
<source>A</source>
<translation>A</translation>
</message>
<message>
+ <location/>
<source>Remove Resource or File</source>
<translation>移除資æºæˆ–檔案</translation>
</message>
@@ -3831,21 +4438,24 @@ to
<context>
<name>QtResourceView</name>
<message>
- <location filename="../tools/designer/src/lib/shared/qtresourceview.cpp" line="404"/>
+ <location filename="../tools/designer/src/lib/shared/qtresourceview.cpp" line="+435"/>
<source>Size: %1 x %2
%3</source>
<translation>大å°ï¼š%1x%2
%3</translation>
</message>
<message>
+ <location line="+18"/>
<source>Edit Resources...</source>
<translation>編輯資æº...</translation>
</message>
<message>
+ <location line="+5"/>
<source>Reload</source>
<translation>é‡æ–°è¼‰å…¥</translation>
</message>
<message>
+ <location line="+5"/>
<source>Copy Path</source>
<translation>複製路徑</translation>
</message>
@@ -3853,6 +4463,7 @@ to
<context>
<name>QtResourceViewDialog</name>
<message>
+ <location line="+247"/>
<source>Select Resource</source>
<translation>é¸æ“‡è³‡æº</translation>
</message>
@@ -3860,14 +4471,17 @@ to
<context>
<name>QtSizeFPropertyManager</name>
<message>
+ <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="-537"/>
<source>%1 x %2</source>
<translation>%1x%2</translation>
</message>
<message>
+ <location line="+130"/>
<source>Width</source>
<translation>寬度</translation>
</message>
<message>
+ <location line="+9"/>
<source>Height</source>
<translation>高度</translation>
</message>
@@ -3875,22 +4489,33 @@ to
<context>
<name>QtSizePolicyPropertyManager</name>
<message>
+ <location line="+1719"/>
+ <location line="+1"/>
+ <source>&lt;Invalid&gt;</source>
+ <translation type="unfinished"></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>水平政策</translation>
</message>
<message>
+ <location line="+9"/>
<source>Vertical Policy</source>
<translation>垂直政策</translation>
</message>
<message>
+ <location line="+9"/>
<source>Horizontal Stretch</source>
<translation>水平伸展</translation>
</message>
<message>
+ <location line="+8"/>
<source>Vertical Stretch</source>
<translation>垂直伸展</translation>
</message>
@@ -3898,14 +4523,17 @@ to
<context>
<name>QtSizePropertyManager</name>
<message>
+ <location line="-2298"/>
<source>%1 x %2</source>
<translation>%1x%2</translation>
</message>
<message>
+ <location line="+96"/>
<source>Width</source>
<translation>寬度</translation>
</message>
<message>
+ <location line="+8"/>
<source>Height</source>
<translation>高度</translation>
</message>
@@ -3913,87 +4541,107 @@ to
<context>
<name>QtToolBarDialog</name>
<message>
- <location filename="../tools/shared/qttoolbardialog/qttoolbardialog.cpp" line="1214"/>
+ <location filename="../tools/shared/qttoolbardialog/qttoolbardialog.cpp" line="+1244"/>
<source>Custom Toolbar</source>
<translation>自訂工具列</translation>
</message>
<message>
+ <location line="+545"/>
<source>&lt; S E P A R A T O R &gt;</source>
<translation>&lt;分隔器&gt;</translation>
</message>
<message>
+ <location filename="../tools/shared/qttoolbardialog/qttoolbardialog.ui"/>
<source>Customize Toolbars</source>
<translation>自訂工具列</translation>
</message>
<message>
+ <location/>
<source>1</source>
<translation>1</translation>
</message>
<message>
+ <location/>
<source>Actions</source>
<translation>動作</translation>
</message>
<message>
+ <location/>
<source>Toolbars</source>
<translation>工具列</translation>
</message>
<message>
+ <location/>
<source>Add new toolbar</source>
<translation>新增工具列</translation>
</message>
<message>
+ <location/>
<source>New</source>
<translation>新增</translation>
</message>
<message>
+ <location/>
<source>Remove selected toolbar</source>
<translation>移除é¸å–的工具列</translation>
</message>
<message>
+ <location/>
<source>Remove</source>
<translation>移除</translation>
</message>
<message>
+ <location/>
<source>Rename toolbar</source>
<translation>é‡æ–°å‘½å工具列</translation>
</message>
<message>
+ <location/>
<source>Rename</source>
<translation>é‡æ–°å‘½å</translation>
</message>
<message>
+ <location/>
<source>Move action up</source>
<translation>將動作上移</translation>
</message>
<message>
+ <location/>
<source>Up</source>
<translation>上</translation>
</message>
<message>
+ <location/>
<source>Remove action from toolbar</source>
<translation>從工具列移除動作</translation>
</message>
<message>
+ <location/>
<source>&lt;-</source>
<translation>&lt;-</translation>
</message>
<message>
+ <location/>
<source>Add action to toolbar</source>
<translation>新增動作到工具列</translation>
</message>
<message>
+ <location/>
<source>-&gt;</source>
<translation>-&gt;</translation>
</message>
<message>
+ <location/>
<source>Move action down</source>
<translation>將動作下移</translation>
</message>
<message>
+ <location/>
<source>Down</source>
<translation>下</translation>
</message>
<message>
+ <location/>
<source>Current Toolbar Actions</source>
<translation>ç›®å‰å·¥å…·åˆ—的動作</translation>
</message>
@@ -4001,11 +4649,12 @@ to
<context>
<name>QtTreePropertyBrowser</name>
<message>
- <location filename="../tools/shared/qtpropertybrowser/qttreepropertybrowser.cpp" line="407"/>
+ <location filename="../tools/shared/qtpropertybrowser/qttreepropertybrowser.cpp" line="+442"/>
<source>Property</source>
<translation>屬性</translation>
</message>
<message>
+ <location line="+1"/>
<source>Value</source>
<translation>數值</translation>
</message>
@@ -4013,53 +4662,64 @@ to
<context>
<name>SaveFormAsTemplate</name>
<message>
- <location filename="../tools/designer/src/designer/saveformastemplate.cpp" line="42"/>
+ <location filename="../tools/designer/src/designer/saveformastemplate.cpp" line="+72"/>
<source>Add path...</source>
<translation>新增路徑...</translation>
</message>
<message>
+ <location line="+23"/>
<source>Template Exists</source>
<translation>樣本已存在</translation>
</message>
<message>
+ <location line="+1"/>
<source>A template with the name %1 already exists.
Do you want overwrite the template?</source>
<translation>å稱為 %1 的樣本已存在。
您è¦è¦†å¯«æ­¤æ¨£æœ¬å—Žï¼Ÿ</translation>
</message>
<message>
+ <location line="+3"/>
<source>Overwrite Template</source>
<translation>覆寫樣本</translation>
</message>
<message>
+ <location line="+7"/>
<source>Open Error</source>
<translation>開啟錯誤</translation>
</message>
<message>
+ <location line="+1"/>
<source>There was an error opening template %1 for writing. Reason: %2</source>
<translation>開啟樣本 %1 以寫入時失敗。ç†ç”±ï¼š%2</translation>
</message>
<message>
+ <location line="+13"/>
<source>Write Error</source>
<translation>寫入錯誤</translation>
</message>
<message>
+ <location line="+1"/>
<source>There was an error writing the template %1 to disk. Reason: %2</source>
<translation>將樣本 %1 寫入ç£ç¢Ÿæ™‚發生錯誤。ç†ç”±ï¼š%2</translation>
</message>
<message>
+ <location line="+27"/>
<source>Pick a directory to save templates in</source>
<translation>è«‹é¸æ“‡è¦å„²å­˜æ¨£æœ¬çš„目錄</translation>
</message>
<message>
+ <location filename="../tools/designer/src/designer/saveformastemplate.ui"/>
<source>Save Form As Template</source>
<translation>將表單存為樣本</translation>
</message>
<message>
+ <location/>
<source>&amp;Category:</source>
<translation>分類(&amp;C):</translation>
</message>
<message>
+ <location/>
<source>&amp;Name:</source>
<translation>å稱(&amp;N):</translation>
</message>
@@ -4067,7 +4727,7 @@ Do you want overwrite the template?</source>
<context>
<name>ScriptErrorDialog</name>
<message>
- <location filename="../tools/designer/src/lib/shared/scripterrordialog.cpp" line="33"/>
+ <location filename="../tools/designer/src/lib/shared/scripterrordialog.cpp" line="+63"/>
<source>An error occurred while running the scripts for &quot;%1&quot;:
</source>
<translation>執行 %1 的文稿時發生錯誤:
@@ -4077,17 +4737,30 @@ Do you want overwrite the template?</source>
<context>
<name>SelectSignalDialog</name>
<message>
+ <location filename="../tools/designer/src/lib/shared/selectsignaldialog.ui"/>
<source>Go to slot</source>
<translation>跳到信號槽</translation>
</message>
<message>
+ <location/>
<source>Select signal</source>
<translation>é¸æ“‡ä¿¡è™Ÿ</translation>
</message>
+ <message>
+ <location/>
+ <source>signal</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location/>
+ <source>class</source>
+ <translation type="unfinished"></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>發é€è€…(%1),信號(%2),接收者(%3),信號槽(%4)</translation>
</message>
@@ -4095,26 +4768,32 @@ Do you want overwrite the template?</source>
<context>
<name>SignalSlotDialogClass</name>
<message>
+ <location filename="../tools/designer/src/lib/shared/signalslotdialog.ui"/>
<source>Signals and slots</source>
<translation>信號與信號槽</translation>
</message>
<message>
+ <location/>
<source>Slots</source>
<translation>信號槽</translation>
</message>
<message>
+ <location/>
<source>Add</source>
<translation>新增</translation>
</message>
<message>
+ <location/>
<source>...</source>
<translation>...</translation>
</message>
<message>
+ <location/>
<source>Delete</source>
<translation>刪除</translation>
</message>
<message>
+ <location/>
<source>Signals</source>
<translation>信號</translation>
</message>
@@ -4122,11 +4801,12 @@ Do you want overwrite the template?</source>
<context>
<name>Spacer</name>
<message>
- <location filename="../tools/designer/src/lib/shared/spacer_widget.cpp" line="245"/>
+ <location filename="../tools/designer/src/lib/shared/spacer_widget.cpp" line="+275"/>
<source>Horizontal Spacer &apos;%1&apos;, %2 x %3</source>
<translation>水平空間 %1,%2x%3</translation>
</message>
<message>
+ <location line="+0"/>
<source>Vertical Spacer &apos;%1&apos;, %2 x %3</source>
<translation>垂直空間 %1,%2x%3</translation>
</message>
@@ -4134,35 +4814,41 @@ Do you want overwrite the template?</source>
<context>
<name>TemplateOptionsPage</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/templateoptionspage.cpp" line="126"/>
+ <location filename="../tools/designer/src/components/formeditor/templateoptionspage.cpp" line="+156"/>
<source>Template Paths</source>
+ <extracomment>Tab in preferences dialog</extracomment>
<translation>樣本路徑</translation>
</message>
</context>
<context>
<name>ToolBarManager</name>
<message>
- <location filename="../tools/designer/src/designer/mainwindow.cpp" line="89"/>
+ <location filename="../tools/designer/src/designer/mainwindow.cpp" line="+89"/>
<source>Configure Toolbars...</source>
<translation>設定工具列...</translation>
</message>
<message>
+ <location line="+15"/>
<source>Window</source>
<translation>視窗</translation>
</message>
<message>
+ <location line="+1"/>
<source>Help</source>
<translation>說明</translation>
</message>
<message>
+ <location line="+7"/>
<source>Style</source>
<translation>樣å¼</translation>
</message>
<message>
+ <location line="+2"/>
<source>Dock views</source>
<translation>嵌入檢視</translation>
</message>
<message>
+ <location line="+6"/>
<source>Toolbars</source>
<translation>工具列</translation>
</message>
@@ -4170,19 +4856,21 @@ Do you want overwrite the template?</source>
<context>
<name>VersionDialog</name>
<message>
- <location filename="../tools/designer/src/designer/versiondialog.cpp" line="141"/>
+ <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;版本 %2</translation>
</message>
<message>
<source> Open Source Edition</source>
- <translation> 開放æºç¢¼ç‰ˆæœ¬</translation>
+ <translation type="obsolete"> 開放æºç¢¼ç‰ˆæœ¬</translation>
</message>
<message>
+ <location line="+1"/>
<source>Qt Designer</source>
<translation>Qt 設計家</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 設計家是一套圖形使用者介é¢æ‡‰ç”¨ç¨‹å¼ï¼Œç”¨æ–¼è¨­è¨ˆ Qt 的應用程å¼ã€‚&lt;br /&gt;</translation>
</message>
@@ -4192,25 +4880,26 @@ Do you want overwrite the template?</source>
</message>
<message>
<source>This program is licensed to you under the terms of the Qt Commercial License Agreement. For details, see the file LICENSE that came with this software distribution.&lt;br/&gt;</source>
- <translation>此程å¼ä»¥ Qt 商業授權åŒæ„書(Qt Commerical License Agreement)授權給您。詳情請åƒç…§ LICENSE 檔。&lt;br /&gt;</translation>
+ <translation type="obsolete">此程å¼ä»¥ Qt 商業授權åŒæ„書(Qt Commerical License Agreement)授權給您。詳情請åƒç…§ LICENSE 檔。&lt;br /&gt;</translation>
</message>
<message>
+ <location line="+5"/>
<source>%1&lt;br/&gt;%2&lt;br/&gt;Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).&lt;br/&gt;&lt;br/&gt;The program is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.&lt;br/&gt; </source>
<translation>%1&lt;br/&gt;%2&lt;br/&gt;Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).&lt;br/&gt;&lt;br/&gt;The program is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.&lt;br/&gt; </translation>
</message>
<message>
<source>This version of Qt Designer is part of the Qt Open Source Edition, for use in the development of Open Source applications. Qt is a comprehensive C++ framework for cross-platform application development.&lt;br/&gt;&lt;br/&gt;You need a commercial Qt license for development of proprietary (closed source) applications. Please see &lt;a href=&quot;http://qtsoftware.com/company/about/businessmodel&quot;&gt;http://qtsoftware.com/company/about/businessmodel.html&lt;/a&gt; for an overview of Qt licensing.&lt;br/&gt;</source>
- <translation>此版本的 Qt 設計家是 Qt 開放æºç¢¼ç‰ˆæœ¬çš„一部份,åªèƒ½ç”¨æ–¼é–‹ç™¼é–‹æ”¾æºç¢¼çš„應用程å¼ã€‚Qt 為一個跨平å°çš„,強大的 C++ 應用程å¼é–‹ç™¼æ¡†æž¶ã€‚您需è¦å•†æ¥­ç‰ˆçš„ Qt 授權æ‰èƒ½ç™¼å±•ç§æœ‰ï¼ˆå°é–‰ï¼‰æ‡‰ç”¨ç¨‹å¼è»Ÿé«”。關於 Qt 授權的概è¦ï¼Œè«‹åƒè€ƒ &lt;a href=&quot;http://qtsoftware.com/company/about/businessmodel&quot;&gt;http://qtsoftware.com/company/about/businessmodel.html&lt;/a&gt;。&lt;br/&gt;</translation>
+ <translation type="obsolete">此版本的 Qt 設計家是 Qt 開放æºç¢¼ç‰ˆæœ¬çš„一部份,åªèƒ½ç”¨æ–¼é–‹ç™¼é–‹æ”¾æºç¢¼çš„應用程å¼ã€‚Qt 為一個跨平å°çš„,強大的 C++ 應用程å¼é–‹ç™¼æ¡†æž¶ã€‚您需è¦å•†æ¥­ç‰ˆçš„ Qt 授權æ‰èƒ½ç™¼å±•ç§æœ‰ï¼ˆå°é–‰ï¼‰æ‡‰ç”¨ç¨‹å¼è»Ÿé«”。關於 Qt 授權的概è¦ï¼Œè«‹åƒè€ƒ &lt;a href=&quot;http://qtsoftware.com/company/about/businessmodel&quot;&gt;http://qtsoftware.com/company/about/businessmodel.html&lt;/a&gt;。&lt;br/&gt;</translation>
</message>
<message>
<source>This program is licensed to you under the terms of the Qt %1 License Agreement. For details, see the license file that came with this software distribution.&lt;br/&gt;</source>
- <translation>此程å¼ä»¥ Qt %1 授權åŒæ„書授權給您。詳情請åƒç…§æ­¤è»Ÿé«”套件中的授權檔。&lt;br /&gt;</translation>
+ <translation type="obsolete">此程å¼ä»¥ Qt %1 授權åŒæ„書授權給您。詳情請åƒç…§æ­¤è»Ÿé«”套件中的授權檔。&lt;br /&gt;</translation>
</message>
</context>
<context>
<name>WidgetDataBase</name>
<message>
- <location filename="../tools/designer/src/lib/shared/widgetdatabase.cpp" line="786"/>
+ <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>此檔案包å«äº†è‡ªè¨‚元件 %1,其基礎類別(%2)與在元件資料庫目å‰çš„項目(%3)ä¸åŒã€‚元件資料庫並未åšæ›´å‹•ã€‚</translation>
</message>
@@ -4218,23 +4907,27 @@ Do you want overwrite the template?</source>
<context>
<name>qdesigner_internal::ActionEditor</name>
<message>
- <location filename="../tools/designer/src/lib/shared/actioneditor.cpp" line="111"/>
+ <location filename="../tools/designer/src/lib/shared/actioneditor.cpp" line="+143"/>
<source>Actions</source>
<translation>動作</translation>
</message>
<message>
+ <location line="-16"/>
<source>New...</source>
<translation>新增...</translation>
</message>
<message>
+ <location line="+7"/>
<source>Delete</source>
<translation>刪除</translation>
</message>
<message>
+ <location line="+307"/>
<source>New action</source>
<translation>新動作</translation>
</message>
<message>
+ <location line="+98"/>
<source>Edit action</source>
<translation>編輯動作</translation>
</message>
@@ -4247,46 +4940,62 @@ Do you want overwrite the template?</source>
<translation type="obsolete">功能尚未實作ï¼</translation>
</message>
<message>
+ <location line="-411"/>
<source>Edit...</source>
<translation>編輯...</translation>
</message>
<message>
+ <location line="+1"/>
+ <source>Go to slot...</source>
+ <translation type="unfinished">跳到信號槽...</translation>
+ </message>
+ <message>
+ <location line="+1"/>
<source>Copy</source>
<translation>複製</translation>
</message>
<message>
+ <location line="+1"/>
<source>Cut</source>
<translation>剪下</translation>
</message>
<message>
+ <location line="+1"/>
<source>Paste</source>
<translation>貼上</translation>
</message>
<message>
+ <location line="+1"/>
<source>Select all</source>
<translation>全部é¸å–</translation>
</message>
<message>
+ <location line="+54"/>
<source>Configure Action Editor</source>
<translation>設定動作編輯器</translation>
</message>
<message>
+ <location line="+3"/>
<source>Icon View</source>
<translation>圖示檢視</translation>
</message>
<message>
+ <location line="+6"/>
<source>Detailed View</source>
<translation>詳情檢視</translation>
</message>
<message>
+ <location line="+412"/>
<source>Remove actions</source>
<translation>移除動作</translation>
</message>
<message>
+ <location line="+0"/>
<source>Remove action &apos;%1&apos;</source>
<translation>移除動作 %1</translation>
</message>
<message>
+ <location line="+186"/>
<source>Used In</source>
<translation>使用於</translation>
</message>
@@ -4301,27 +5010,32 @@ Do you want overwrite the template?</source>
<context>
<name>qdesigner_internal::ActionModel</name>
<message>
- <location filename="../tools/designer/src/lib/shared/actionrepository.cpp" line="64"/>
+ <location filename="../tools/designer/src/lib/shared/actionrepository.cpp" line="+95"/>
<source>Name</source>
<translation>å稱</translation>
</message>
<message>
+ <location line="+1"/>
<source>Used</source>
<translation>已使用</translation>
</message>
<message>
+ <location line="+1"/>
<source>Text</source>
<translation>文字</translation>
</message>
<message>
+ <location line="+1"/>
<source>Shortcut</source>
<translation>æ·å¾‘</translation>
</message>
<message>
+ <location line="+1"/>
<source>Checkable</source>
<translation>å¯å‹¾é¸</translation>
</message>
<message>
+ <location line="+1"/>
<source>ToolTip</source>
<translation>工具æ示</translation>
</message>
@@ -4329,27 +5043,31 @@ Do you want overwrite the template?</source>
<context>
<name>qdesigner_internal::BuddyEditor</name>
<message>
- <location filename="../tools/designer/src/components/buddyeditor/buddyeditor.cpp" line="235"/>
+ <location filename="../tools/designer/src/components/buddyeditor/buddyeditor.cpp" line="+265"/>
<source>Add buddy</source>
<translation>新增åŒä¼´</translation>
</message>
<message>
+ <location line="+52"/>
<source>Remove buddies</source>
<translation>移除åŒä¼´</translation>
</message>
<message numerus="yes">
+ <location line="+24"/>
<source>Remove %n buddies</source>
<translation>
<numerusform>移除 %n 個項目</numerusform>
</translation>
</message>
<message numerus="yes">
+ <location line="+51"/>
<source>Add %n buddies</source>
<translation>
<numerusform>新增 %n 個項目</numerusform>
</translation>
</message>
<message>
+ <location line="+47"/>
<source>Set automatically</source>
<translation>自動設定</translation>
</message>
@@ -4357,7 +5075,7 @@ Do you want overwrite the template?</source>
<context>
<name>qdesigner_internal::BuddyEditorPlugin</name>
<message>
- <location filename="../tools/designer/src/components/buddyeditor/buddyeditor_plugin.cpp" line="47"/>
+ <location filename="../tools/designer/src/components/buddyeditor/buddyeditor_plugin.cpp" line="+77"/>
<source>Edit Buddies</source>
<translation>編輯åŒä¼´</translation>
</message>
@@ -4365,7 +5083,7 @@ Do you want overwrite the template?</source>
<context>
<name>qdesigner_internal::BuddyEditorTool</name>
<message>
- <location filename="../tools/designer/src/components/buddyeditor/buddyeditor_tool.cpp" line="30"/>
+ <location filename="../tools/designer/src/components/buddyeditor/buddyeditor_tool.cpp" line="+60"/>
<source>Edit Buddies</source>
<translation>編輯åŒä¼´</translation>
</message>
@@ -4373,11 +5091,12 @@ Do you want overwrite the template?</source>
<context>
<name>qdesigner_internal::ButtonGroupMenu</name>
<message>
- <location filename="../tools/designer/src/components/taskmenu/button_taskmenu.cpp" line="7"/>
+ <location filename="../tools/designer/src/components/taskmenu/button_taskmenu.cpp" line="+7"/>
<source>Select members</source>
<translation>é¸æ“‡æˆå“¡</translation>
</message>
<message>
+ <location line="+1"/>
<source>Break</source>
<translation>打斷</translation>
</message>
@@ -4385,26 +5104,32 @@ Do you want overwrite the template?</source>
<context>
<name>qdesigner_internal::ButtonTaskMenu</name>
<message>
+ <location line="+121"/>
<source>Assign to button group</source>
<translation>指定按éµç¾¤çµ„</translation>
</message>
<message>
+ <location line="+2"/>
<source>Button group</source>
<translation>按éµç¾¤çµ„</translation>
</message>
<message>
+ <location line="+1"/>
<source>New button group</source>
<translation>新增按éµç¾¤çµ„</translation>
</message>
<message>
+ <location line="+1"/>
<source>Change text...</source>
<translation>變更文字...</translation>
</message>
<message>
+ <location line="+1"/>
<source>None</source>
<translation>ç„¡</translation>
</message>
<message>
+ <location line="+101"/>
<source>Button group &apos;%1&apos;</source>
<translation>按éµç¾¤çµ„ %1</translation>
</message>
@@ -4412,47 +5137,57 @@ Do you want overwrite the template?</source>
<context>
<name>qdesigner_internal::CodeDialog</name>
<message>
- <location filename="../tools/designer/src/lib/shared/codedialog.cpp" line="69"/>
+ <location filename="../tools/designer/src/lib/shared/codedialog.cpp" line="+99"/>
<source>Save...</source>
<translation>儲存...</translation>
</message>
<message>
+ <location line="+4"/>
<source>Copy All</source>
<translation>全部複製</translation>
</message>
<message>
+ <location line="+5"/>
<source>&amp;Find in Text...</source>
<translation>在文字中尋找(&amp;F)...</translation>
</message>
<message>
+ <location line="+75"/>
<source>A temporary form file could not be created in %1.</source>
<translation>無法於 %1 建立暫存表單檔。</translation>
</message>
<message>
+ <location line="+6"/>
<source>The temporary form file %1 could not be written.</source>
<translation>無法寫入暫存表單檔 %1。</translation>
</message>
<message>
+ <location line="+21"/>
<source>%1 - [Code]</source>
<translation>%1─[æºç¢¼]</translation>
</message>
<message>
+ <location line="+23"/>
<source>Save Code</source>
<translation>儲存程å¼ç¢¼</translation>
</message>
<message>
+ <location line="+0"/>
<source>Header Files (*.%1)</source>
<translation>標頭檔 (*.%1)</translation>
</message>
<message>
+ <location line="+6"/>
<source>The file %1 could not be opened: %2</source>
<translation>檔案 %1 無法開啟:%2</translation>
</message>
<message>
+ <location line="+5"/>
<source>The file %1 could not be written: %2</source>
<translation>檔案 %1 無法寫入:%2</translation>
</message>
<message>
+ <location line="+11"/>
<source>%1 - Error</source>
<translation>%1─錯誤</translation>
</message>
@@ -4460,7 +5195,7 @@ Do you want overwrite the template?</source>
<context>
<name>qdesigner_internal::ColorAction</name>
<message>
- <location filename="../tools/designer/src/lib/shared/richtexteditor.cpp" line="220"/>
+ <location filename="../tools/designer/src/lib/shared/richtexteditor.cpp" line="+250"/>
<source>Text Color</source>
<translation>文字é¡è‰²</translation>
</message>
@@ -4468,11 +5203,12 @@ Do you want overwrite the template?</source>
<context>
<name>qdesigner_internal::ComboBoxTaskMenu</name>
<message>
- <location filename="../tools/designer/src/components/taskmenu/combobox_taskmenu.cpp" line="42"/>
+ <location filename="../tools/designer/src/components/taskmenu/combobox_taskmenu.cpp" line="+72"/>
<source>Edit Items...</source>
<translation>編輯項目...</translation>
</message>
<message>
+ <location line="+38"/>
<source>Change Combobox Contents</source>
<translation>變更下拉å¼é¸å–®å…§å®¹</translation>
</message>
@@ -4480,7 +5216,7 @@ Do you want overwrite the template?</source>
<context>
<name>qdesigner_internal::CommandLinkButtonTaskMenu</name>
<message>
- <location filename="../tools/designer/src/components/taskmenu/button_taskmenu.cpp" line="156"/>
+ <location filename="../tools/designer/src/components/taskmenu/button_taskmenu.cpp" line="+156"/>
<source>Change description...</source>
<translation>變更æè¿°...</translation>
</message>
@@ -4503,15 +5239,17 @@ Do you want overwrite the template?</source>
<context>
<name>qdesigner_internal::ConnectionEdit</name>
<message>
- <location filename="../tools/designer/src/lib/shared/connectionedit.cpp" line="1313"/>
+ <location filename="../tools/designer/src/lib/shared/connectionedit.cpp" line="+1313"/>
<source>Select All</source>
<translation>全部é¸å–</translation>
</message>
<message>
+ <location line="+3"/>
<source>Deselect All</source>
<translation>全部å–消é¸å–</translation>
</message>
<message>
+ <location line="+5"/>
<source>Delete</source>
<translation>刪除</translation>
</message>
@@ -4519,38 +5257,47 @@ Do you want overwrite the template?</source>
<context>
<name>qdesigner_internal::ConnectionModel</name>
<message>
+ <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditorwindow.cpp" line="-465"/>
<source>Sender</source>
<translation>發é€è€…</translation>
</message>
<message>
+ <location line="+1"/>
<source>Signal</source>
<translation>信號</translation>
</message>
<message>
+ <location line="+1"/>
<source>Receiver</source>
<translation>接收者</translation>
</message>
<message>
+ <location line="+1"/>
<source>Slot</source>
<translation>信號槽</translation>
</message>
<message>
+ <location line="+90"/>
<source>&lt;sender&gt;</source>
<translation>&lt;發é€è€…&gt;</translation>
</message>
<message>
+ <location line="+1"/>
<source>&lt;signal&gt;</source>
<translation>&lt;信號&gt;</translation>
</message>
<message>
+ <location line="+1"/>
<source>&lt;receiver&gt;</source>
<translation>&lt;接收者&gt;</translation>
</message>
<message>
+ <location line="+1"/>
<source>&lt;slot&gt;</source>
<translation>&lt;信號槽&gt;</translation>
</message>
<message>
+ <location line="+110"/>
<source>Signal and Slot Editor</source>
<translation>信號與信號槽編輯器</translation>
</message>
@@ -4559,6 +5306,7 @@ Do you want overwrite the template?</source>
<translation type="obsolete">連線已存在。&lt;br&gt;發é€è€…(%1),信號(%2),接收者(%3),信號槽(%4)</translation>
</message>
<message>
+ <location line="-2"/>
<source>The connection already exists!&lt;br&gt;%1</source>
<translation>連線已存在ï¼&lt;br&gt;%1</translation>
</message>
@@ -4570,35 +5318,42 @@ Do you want overwrite the template?</source>
<translation type="obsolete">刪除é é¢</translation>
</message>
<message>
- <location filename="../tools/designer/src/components/taskmenu/containerwidget_taskmenu.cpp" line="82"/>
+ <location filename="../tools/designer/src/components/taskmenu/containerwidget_taskmenu.cpp" line="+112"/>
<source>Insert Page Before Current Page</source>
<translation>在目å‰é é¢ä¹‹å‰æ’å…¥</translation>
</message>
<message>
+ <location line="+4"/>
<source>Insert Page After Current Page</source>
<translation>在目å‰é é¢ä¹‹å¾Œæ’å…¥</translation>
</message>
<message>
+ <location line="-32"/>
<source>Delete</source>
<translation>刪除</translation>
</message>
<message>
+ <location line="+25"/>
<source>Insert</source>
<translation>æ’å…¥</translation>
</message>
<message>
+ <location line="+15"/>
<source>Add Subwindow</source>
<translation>新增å­è¦–窗</translation>
</message>
<message>
+ <location line="+38"/>
<source>Subwindow</source>
<translation>å­è¦–窗</translation>
</message>
<message>
+ <location line="+2"/>
<source>Page</source>
<translation>é é¢</translation>
</message>
<message>
+ <location line="+1"/>
<source>Page %1 of %2</source>
<translation>第 %1 é ï¼Œå…± %2 é </translation>
</message>
@@ -4606,46 +5361,59 @@ Do you want overwrite the template?</source>
<context>
<name>qdesigner_internal::DPI_Chooser</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/dpi_chooser.cpp" line="27"/>
+ <location filename="../tools/designer/src/components/formeditor/dpi_chooser.cpp" line="+27"/>
<source>System (%1 x %2)</source>
+ <extracomment>System resolution</extracomment>
<translation>系統(%1 x %2)</translation>
</message>
<message>
+ <location line="+7"/>
<source>User defined</source>
<translation>使用者定義</translation>
</message>
<message>
+ <location line="+18"/>
<source> x </source>
+ <extracomment>DPI X/Y separator</extracomment>
<translation> x</translation>
</message>
</context>
<context>
<name>qdesigner_internal::DesignerPropertyManager</name>
<message>
+ <location filename="../tools/designer/src/components/propertyeditor/designerpropertymanager.cpp" line="+644"/>
+ <location line="+6"/>
<source>AlignLeft</source>
<translation>置左å°é½Š</translation>
</message>
<message>
+ <location line="-5"/>
<source>AlignHCenter</source>
<translation>置中å°é½Š</translation>
</message>
<message>
+ <location line="+1"/>
<source>AlignRight</source>
<translation>ç½®å³å°é½Š</translation>
</message>
<message>
+ <location line="+1"/>
<source>AlignJustify</source>
<translation>å…©é‚Šå°é½Š</translation>
</message>
<message>
+ <location line="+9"/>
<source>AlignTop</source>
<translation>置頂å°é½Š</translation>
</message>
<message>
+ <location line="+1"/>
+ <location line="+4"/>
<source>AlignVCenter</source>
<translation>垂直置中</translation>
</message>
<message>
+ <location line="-3"/>
<source>AlignBottom</source>
<translation>置底å°é½Š</translation>
</message>
@@ -4662,68 +5430,87 @@ Do you want overwrite the template?</source>
<translation type="obsolete">é è¨­å鋸齒</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>自訂(%n 個角色)</numerusform>
</translation>
</message>
<message>
+ <location line="+1"/>
<source>Inherited</source>
<translation>繼承</translation>
</message>
<message>
+ <location line="+566"/>
<source>Horizontal</source>
<translation>æ°´å¹³</translation>
</message>
<message>
+ <location line="+9"/>
<source>Vertical</source>
<translation>åž‚ç›´</translation>
</message>
<message>
+ <location line="+15"/>
<source>Normal Off</source>
<translation>正常時關閉</translation>
</message>
<message>
+ <location line="+1"/>
<source>Normal On</source>
<translation>正常時開啟</translation>
</message>
<message>
+ <location line="+1"/>
<source>Disabled Off</source>
<translation>關閉時關閉</translation>
</message>
<message>
+ <location line="+1"/>
<source>Disabled On</source>
<translation>關閉時開啟</translation>
</message>
<message>
+ <location line="+1"/>
<source>Active Off</source>
<translation>啟用時關閉</translation>
</message>
<message>
+ <location line="+1"/>
<source>Active On</source>
<translation>啟用時開啟</translation>
</message>
<message>
+ <location line="+1"/>
<source>Selected Off</source>
<translation>é¸æ“‡æ™‚關閉</translation>
</message>
<message>
+ <location line="+1"/>
<source>Selected On</source>
<translation>é¸æ“‡æ™‚é–‹å•Ÿ</translation>
</message>
<message>
+ <location line="+7"/>
+ <location line="+21"/>
<source>translatable</source>
<translation>å¯ç¿»è­¯</translation>
</message>
<message>
+ <location line="-15"/>
+ <location line="+21"/>
<source>disambiguation</source>
<translation>澄清</translation>
</message>
<message>
+ <location line="-15"/>
+ <location line="+21"/>
<source>comment</source>
<translation>註解</translation>
</message>
@@ -4735,39 +5522,48 @@ Do you want overwrite the template?</source>
<context>
<name>qdesigner_internal::DeviceProfileDialog</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/deviceprofiledialog.cpp" line="33"/>
+ <location filename="../tools/designer/src/components/formeditor/deviceprofiledialog.cpp" line="+63"/>
<source>Device Profiles (*.%1)</source>
<translation>è£ç½®è¨­å®šæª”(*.%1)</translation>
</message>
<message>
+ <location line="+31"/>
<source>Default</source>
<translation>é è¨­</translation>
</message>
<message>
+ <location line="+67"/>
<source>Save Profile</source>
<translation>儲存設定檔</translation>
</message>
<message>
+ <location line="+10"/>
<source>Save Profile - Error</source>
<translation>儲存設定檔 ─ 錯誤</translation>
</message>
<message>
+ <location line="+0"/>
<source>Unable to open the file &apos;%1&apos; for writing: %2</source>
<translation>無法開啟檔案 %1 以寫入:%2</translation>
</message>
<message>
+ <location line="+8"/>
<source>Open profile</source>
<translation>開啟設定檔</translation>
</message>
<message>
+ <location line="+6"/>
+ <location line="+6"/>
<source>Open Profile - Error</source>
<translation>開啟設定檔 ─ 錯誤</translation>
</message>
<message>
+ <location line="-6"/>
<source>Unable to open the file &apos;%1&apos; for reading: %2</source>
<translation>無法開啟檔案 %1 以讀å–:%2</translation>
</message>
<message>
+ <location line="+6"/>
<source>&apos;%1&apos; is not a valid profile: %2</source>
<translation>%1 ä¸æ˜¯åˆæ³•çš„設定檔:%2</translation>
</message>
@@ -4775,46 +5571,57 @@ Do you want overwrite the template?</source>
<context>
<name>qdesigner_internal::Dialog</name>
<message>
+ <location filename="../tools/designer/src/components/propertyeditor/stringlisteditor.ui"/>
<source>Dialog</source>
<translation>å°è©±æ¡†</translation>
</message>
<message>
+ <location/>
<source>StringList</source>
<translation>字串列表</translation>
</message>
<message>
+ <location/>
<source>New String</source>
<translation>新增字串</translation>
</message>
<message>
+ <location/>
<source>&amp;New</source>
<translation>新增(&amp;N)</translation>
</message>
<message>
+ <location/>
<source>Delete String</source>
<translation>刪除字串</translation>
</message>
<message>
+ <location/>
<source>&amp;Delete</source>
<translation>刪除(&amp;D)</translation>
</message>
<message>
+ <location/>
<source>&amp;Value:</source>
<translation>數值(&amp;V):</translation>
</message>
<message>
+ <location/>
<source>Move String Up</source>
<translation>字串上移</translation>
</message>
<message>
+ <location/>
<source>Up</source>
<translation>上</translation>
</message>
<message>
+ <location/>
<source>Move String Down</source>
<translation>字串下移</translation>
</message>
<message>
+ <location/>
<source>Down</source>
<translation>下</translation>
</message>
@@ -4861,14 +5668,60 @@ Do you want overwrite the template?</source>
<context>
<name>qdesigner_internal::EmbeddedOptionsControl</name>
<message>
+ <location filename="../tools/designer/src/components/formeditor/embeddedoptionspage.cpp" line="-256"/>
+ <source>Add a profile</source>
+ <translation type="unfinished">新增設定檔</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Edit the selected profile</source>
+ <translation type="unfinished">編輯é¸å–的設定檔</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Delete the selected profile</source>
+ <translation type="unfinished">刪除é¸å–的設定檔</translation>
+ </message>
+ <message>
+ <location line="+22"/>
+ <source>Add Profile</source>
+ <translation type="unfinished">新增設定檔</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>New profile</source>
+ <translation type="unfinished">新增設定檔</translation>
+ </message>
+ <message>
+ <location line="+35"/>
+ <source>Edit Profile</source>
+ <translation type="unfinished">編輯設定檔</translation>
+ </message>
+ <message>
+ <location line="+26"/>
+ <source>Delete Profile</source>
+ <translation type="unfinished">刪除設定檔</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Would you like to delete the profile &apos;%1&apos;?</source>
+ <translation type="unfinished">您è¦åˆªé™¤è¨­å®šæª” %1 嗎?</translation>
+ </message>
+ <message>
+ <location line="+55"/>
+ <source>Default</source>
+ <translation type="unfinished">é è¨­</translation>
+ </message>
+ <message>
+ <location line="-160"/>
<source>None</source>
- <translation type="obsolete">ç„¡</translation>
+ <translation type="unfinished">ç„¡</translation>
</message>
</context>
<context>
<name>qdesigner_internal::FilterWidget</name>
<message>
- <location filename="../tools/designer/src/lib/shared/filterwidget.cpp" line="155"/>
+ <location filename="../tools/designer/src/lib/shared/filterwidget.cpp" line="+185"/>
<source>&lt;Filter&gt;</source>
<translation>&lt;éŽæ¿¾å™¨&gt;</translation>
</message>
@@ -4895,11 +5748,12 @@ Do you want overwrite the template?</source>
<context>
<name>qdesigner_internal::FormEditor</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/formeditor.cpp" line="160"/>
+ <location filename="../tools/designer/src/components/formeditor/formeditor.cpp" line="+190"/>
<source>Resource File Changed</source>
<translation>資æºæª”已變更</translation>
</message>
<message>
+ <location line="+1"/>
<source>The file &quot;%1&quot; has changed outside Designer. Do you want to reload it?</source>
<translation>檔案 %1 在設計器之外被人更動éŽã€‚您è¦é‡æ–°è¼‰å…¥å—Žï¼Ÿ</translation>
</message>
@@ -4907,7 +5761,7 @@ Do you want overwrite the template?</source>
<context>
<name>qdesigner_internal::FormLayoutMenu</name>
<message>
- <location filename="../tools/designer/src/lib/shared/formlayoutmenu.cpp" line="24"/>
+ <location filename="../tools/designer/src/lib/shared/formlayoutmenu.cpp" line="+24"/>
<source>Add form layout row...</source>
<translation>新增表單佈局列...</translation>
</message>
@@ -4915,10 +5769,12 @@ Do you want overwrite the template?</source>
<context>
<name>qdesigner_internal::FormWindow</name>
<message>
+ <location filename="../tools/designer/src/components/formeditor/formwindow.cpp" line="-1267"/>
<source>Edit contents</source>
<translation>編輯內容</translation>
</message>
<message>
+ <location line="+1"/>
<source>F2</source>
<translation>F2</translation>
</message>
@@ -4927,10 +5783,13 @@ Do you want overwrite the template?</source>
<translation type="obsolete">æ’入元件 %1</translation>
</message>
<message>
+ <location line="+841"/>
<source>Resize</source>
<translation>é‡æ–°èª¿æ•´å¤§å°</translation>
</message>
<message>
+ <location line="+218"/>
+ <location line="+15"/>
<source>Key Move</source>
<translation>éµç§»å‹•</translation>
</message>
@@ -4939,6 +5798,7 @@ Do you want overwrite the template?</source>
<translation type="obsolete">貼上</translation>
</message>
<message>
+ <location line="+276"/>
<source>Paste error</source>
<translation>貼上錯誤</translation>
</message>
@@ -4955,54 +5815,67 @@ and then paste again.</source>
<translation type="obsolete">打斷佈局</translation>
</message>
<message>
+ <location line="+442"/>
<source>Lay out</source>
<translation>佈局</translation>
</message>
<message>
+ <location line="+493"/>
+ <location line="+55"/>
<source>Drop widget</source>
<translation>丟棄元件</translation>
</message>
<message numerus="yes">
+ <location line="-1055"/>
<source>Paste %n action(s)</source>
<translation>
<numerusform>貼上 %n 個動作</numerusform>
</translation>
</message>
<message>
+ <location line="-511"/>
<source>Insert widget &apos;%1&apos;</source>
<translation>æ’入元件 %1</translation>
</message>
<message numerus="yes">
+ <location line="+513"/>
<source>Paste %n widget(s)</source>
<translation>
<numerusform>貼上 %n 個元件</numerusform>
</translation>
</message>
<message>
+ <location line="+1"/>
<source>Paste (%1 widgets, %2 actions)</source>
<translation>貼上(%1 個元件,%2 個動作)</translation>
</message>
<message>
+ <location line="+56"/>
<source>Cannot paste widgets. Designer could not find a container without a layout to paste into.</source>
<translation>無法貼上元件。設計器找ä¸åˆ°æ²’有佈局的容器來貼上。</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>請先打斷您è¦è²¼ä¸Šçš„容器佈局,å†é¸æ“‡è©²å®¹å™¨ï¼Œä¸¦é‡æ–°è²¼ä¸Šã€‚</translation>
</message>
<message>
+ <location line="+187"/>
<source>Raise widgets</source>
<translation>抬å‡å…ƒä»¶</translation>
</message>
<message>
+ <location line="+17"/>
<source>Lower widgets</source>
<translation>é™ä½Žå…ƒä»¶</translation>
</message>
<message>
+ <location line="+201"/>
<source>Select Ancestor</source>
<translation>é¸æ“‡ç¥–å…ˆ</translation>
</message>
<message>
+ <location line="+576"/>
<source>A QMainWindow-based form does not contain a central widget.</source>
<translation>QMainWindow 為基底的表單並未包å«ä¸­å¤®å…ƒä»¶ã€‚</translation>
</message>
@@ -5010,11 +5883,12 @@ and then paste again.</source>
<context>
<name>qdesigner_internal::FormWindowBase</name>
<message>
- <location filename="../tools/designer/src/lib/shared/formwindowbase.cpp" line="363"/>
+ <location filename="../tools/designer/src/lib/shared/formwindowbase.cpp" line="+397"/>
<source>Delete</source>
<translation>刪除</translation>
</message>
<message>
+ <location line="+0"/>
<source>Delete &apos;%1&apos;</source>
<translation>刪除 &apos;%1&apos;</translation>
</message>
@@ -5022,160 +5896,200 @@ and then paste again.</source>
<context>
<name>qdesigner_internal::FormWindowManager</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/formwindowmanager.cpp" line="337"/>
+ <location filename="../tools/designer/src/components/formeditor/formwindowmanager.cpp" line="+368"/>
<source>Cu&amp;t</source>
<translation>剪下(&amp;T)</translation>
</message>
<message>
+ <location line="+3"/>
<source>Cuts the selected widgets and puts them on the clipboard</source>
<translation>剪下é¸å–的元件,並放到剪貼簿中</translation>
</message>
<message>
+ <location line="+5"/>
<source>&amp;Copy</source>
<translation>複製(&amp;C)</translation>
</message>
<message>
+ <location line="+3"/>
<source>Copies the selected widgets to the clipboard</source>
<translation>å°‡é¸å–的元件複製進剪貼簿</translation>
</message>
<message>
+ <location line="+5"/>
<source>&amp;Paste</source>
<translation>貼上(&amp;P)</translation>
</message>
<message>
+ <location line="+3"/>
<source>Pastes the clipboard&apos;s contents</source>
<translation>貼上剪貼簿中的內容</translation>
</message>
<message>
+ <location line="+5"/>
<source>&amp;Delete</source>
<translation>刪除(&amp;D)</translation>
</message>
<message>
+ <location line="+2"/>
<source>Deletes the selected widgets</source>
<translation>刪除é¸å–的元件</translation>
</message>
<message>
+ <location line="+5"/>
<source>Select &amp;All</source>
<translation>全部é¸å–(&amp;A)</translation>
</message>
<message>
+ <location line="+3"/>
<source>Selects all widgets</source>
<translation>é¸æ“‡æ‰€æœ‰çš„元件</translation>
</message>
<message>
+ <location line="+5"/>
<source>Bring to &amp;Front</source>
<translation>帶到å‰æ™¯(&amp;F)</translation>
</message>
<message>
+ <location line="+3"/>
+ <location line="+1"/>
<source>Raises the selected widgets</source>
<translation>抬å‡é¸å–的元件</translation>
</message>
<message>
+ <location line="+4"/>
<source>Send to &amp;Back</source>
<translation>é€å›žèƒŒæ™¯(&amp;B)</translation>
</message>
<message>
+ <location line="+3"/>
+ <location line="+1"/>
<source>Lowers the selected widgets</source>
<translation>é™ä½Žé¸å–的元件</translation>
</message>
<message>
+ <location line="+4"/>
<source>Adjust &amp;Size</source>
<translation>調整大å°(&amp;S)</translation>
</message>
<message>
+ <location line="+3"/>
<source>Adjusts the size of the selected widget</source>
<translation>調整é¸å–的元件大å°</translation>
</message>
<message>
+ <location line="+6"/>
<source>Lay Out &amp;Horizontally</source>
<translation>水平佈局(&amp;H)</translation>
</message>
<message>
+ <location line="+3"/>
<source>Lays out the selected widgets horizontally</source>
<translation>å°‡é¸å–的元件åšæ°´å¹³ä½ˆå±€</translation>
</message>
<message>
+ <location line="+6"/>
<source>Lay Out &amp;Vertically</source>
<translation>垂直佈局(&amp;V)</translation>
</message>
<message>
+ <location line="+3"/>
<source>Lays out the selected widgets vertically</source>
<translation>å°‡é¸å–的元件åšåž‚直佈局</translation>
</message>
<message>
+ <location line="+16"/>
<source>Lay Out in a &amp;Grid</source>
<translation>使用格線佈局(&amp;G)</translation>
</message>
<message>
+ <location line="+3"/>
<source>Lays out the selected widgets in a grid</source>
<translation>å°‡é¸å–的元件佈局在格線內</translation>
</message>
<message>
+ <location line="+7"/>
<source>Lay Out Horizontally in S&amp;plitter</source>
<translation>以水平分離佈局(&amp;P)</translation>
</message>
<message>
+ <location line="+3"/>
<source>Lays out the selected widgets horizontally in a splitter</source>
<translation>å°‡é¸å–的元件在分離器中åšæ°´å¹³ä½ˆå±€</translation>
</message>
<message>
+ <location line="+7"/>
<source>Lay Out Vertically in Sp&amp;litter</source>
<translation>以垂直分離佈局(&amp;L)</translation>
</message>
<message>
+ <location line="+3"/>
<source>Lays out the selected widgets vertically in a splitter</source>
<translation>å°‡é¸å–的元件在分離器中åšåž‚直佈局</translation>
</message>
<message>
+ <location line="+7"/>
<source>&amp;Break Layout</source>
<translation>打斷佈局(&amp;B)</translation>
</message>
<message>
+ <location line="+3"/>
<source>Breaks the selected layout</source>
<translation>打斷é¸å–的佈局</translation>
</message>
<message>
+ <location line="+13"/>
<source>&amp;Preview...</source>
<translation>é è¦½(&amp;P)...</translation>
</message>
<message>
+ <location line="+2"/>
<source>Preview current form</source>
<translation>é è¦½ç›®å‰çš„表單</translation>
</message>
<message>
+ <location line="+14"/>
<source>Form &amp;Settings...</source>
<translation>表單設定(&amp;S)...</translation>
</message>
<message>
+ <location line="+78"/>
<source>Break Layout</source>
<translation>打斷佈局</translation>
</message>
<message>
+ <location line="+26"/>
<source>Adjust Size</source>
<translation>調整大å°</translation>
</message>
<message>
+ <location line="+43"/>
<source>Could not create form preview</source>
<comment>Title of warning message box</comment>
<translation>無法建立表單é è¦½</translation>
</message>
<message>
+ <location line="+341"/>
<source>Form Settings - %1</source>
<translation>表單設定─%1</translation>
</message>
<message>
+ <location line="-560"/>
<source>Lay Out in a &amp;Form Layout</source>
<translation>在表單中佈局(&amp;F)</translation>
</message>
<message>
+ <location line="+3"/>
<source>Lays out the selected widgets in a form layout</source>
<translation>å°‡é¸å–的元件於表單中佈局</translation>
</message>
<message>
+ <location line="+45"/>
<source>Si&amp;mplify Grid Layout</source>
<translation>簡化格線佈局(&amp;M)</translation>
</message>
<message>
+ <location line="+2"/>
<source>Removes empty columns and rows</source>
<translation>移除空的欄與列</translation>
</message>
@@ -5183,11 +6097,12 @@ and then paste again.</source>
<context>
<name>qdesigner_internal::FormWindowSettings</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/formwindowsettings.cpp" line="162"/>
+ <location filename="../tools/designer/src/components/formeditor/formwindowsettings.cpp" line="+193"/>
<source>None</source>
<translation>ç„¡</translation>
</message>
<message>
+ <location line="+1"/>
<source>Device Profile: %1</source>
<translation>è£ç½®è¨­å®šæª”:%1</translation>
</message>
@@ -5206,30 +6121,37 @@ and then paste again.</source>
<context>
<name>qdesigner_internal::GridPanel</name>
<message>
+ <location filename="../tools/designer/src/lib/shared/gridpanel.ui"/>
<source>Form</source>
<translation>表單</translation>
</message>
<message>
+ <location/>
<source>Grid</source>
<translation>格線</translation>
</message>
<message>
+ <location/>
<source>Visible</source>
<translation>å¯è¦‹çš„</translation>
</message>
<message>
+ <location/>
<source>Grid &amp;X</source>
<translation>X 軸格線(&amp;X)</translation>
</message>
<message>
+ <location/>
<source>Snap</source>
<translation>貼齊</translation>
</message>
<message>
+ <location/>
<source>Reset</source>
<translation>é‡ç½®</translation>
</message>
<message>
+ <location/>
<source>Grid &amp;Y</source>
<translation>Y 軸格線(&amp;Y)</translation>
</message>
@@ -5237,7 +6159,7 @@ and then paste again.</source>
<context>
<name>qdesigner_internal::GroupBoxTaskMenu</name>
<message>
- <location filename="../tools/designer/src/components/taskmenu/groupbox_taskmenu.cpp" line="56"/>
+ <location filename="../tools/designer/src/components/taskmenu/groupbox_taskmenu.cpp" line="+86"/>
<source>Change title...</source>
<translation>變更標題...</translation>
</message>
@@ -5245,6 +6167,7 @@ and then paste again.</source>
<context>
<name>qdesigner_internal::HtmlTextEdit</name>
<message>
+ <location filename="../tools/designer/src/lib/shared/richtexteditor.cpp" line="-58"/>
<source>Insert HTML entity</source>
<translation>æ’å…¥ HTML entity</translation>
</message>
@@ -5252,75 +6175,92 @@ and then paste again.</source>
<context>
<name>qdesigner_internal::IconSelector</name>
<message>
- <location filename="../tools/designer/src/lib/shared/iconselector.cpp" line="210"/>
+ <location filename="../tools/designer/src/lib/shared/iconselector.cpp" line="+211"/>
<source>The pixmap file &apos;%1&apos; cannot be read.</source>
<translation>無法讀å–åƒç´ æª” %1。</translation>
</message>
<message>
+ <location line="+6"/>
<source>The file &apos;%1&apos; does not appear to be a valid pixmap file: %2</source>
<translation>檔案 %1 似乎ä¸æ˜¯åˆæ³•çš„åƒç´ æª”:%2</translation>
</message>
<message>
+ <location line="+9"/>
<source>The file &apos;%1&apos; could not be read: %2</source>
<translation>檔案 %1 無法讀å–:%2</translation>
</message>
<message>
+ <location line="+33"/>
<source>Choose a Pixmap</source>
<translation>é¸æ“‡åƒç´ åœ–</translation>
</message>
<message>
+ <location line="+7"/>
<source>Pixmap Read Error</source>
<translation>åƒç´ åœ–讀å–錯誤</translation>
</message>
<message>
+ <location line="+55"/>
<source>...</source>
<translation>...</translation>
</message>
<message>
+ <location line="+6"/>
<source>Normal Off</source>
<translation>正常時關閉</translation>
</message>
<message>
+ <location line="+1"/>
<source>Normal On</source>
<translation>正常時開啟</translation>
</message>
<message>
+ <location line="+1"/>
<source>Disabled Off</source>
<translation>關閉時關閉</translation>
</message>
<message>
+ <location line="+1"/>
<source>Disabled On</source>
<translation>關閉時開啟</translation>
</message>
<message>
+ <location line="+1"/>
<source>Active Off</source>
<translation>啟用時關閉</translation>
</message>
<message>
+ <location line="+1"/>
<source>Active On</source>
<translation>啟用時開啟</translation>
</message>
<message>
+ <location line="+1"/>
<source>Selected Off</source>
<translation>é¸æ“‡æ™‚關閉</translation>
</message>
<message>
+ <location line="+1"/>
<source>Selected On</source>
<translation>é¸æ“‡æ™‚é–‹å•Ÿ</translation>
</message>
<message>
+ <location line="+8"/>
<source>Choose Resource...</source>
<translation>é¸æ“‡è³‡æº...</translation>
</message>
<message>
+ <location line="+1"/>
<source>Choose File...</source>
<translation>é¸æ“‡æª”案...</translation>
</message>
<message>
+ <location line="+1"/>
<source>Reset</source>
<translation>é‡ç½®</translation>
</message>
<message>
+ <location line="+1"/>
<source>Reset All</source>
<translation>全部é‡ç½®</translation>
</message>
@@ -5328,47 +6268,58 @@ and then paste again.</source>
<context>
<name>qdesigner_internal::ItemListEditor</name>
<message>
- <location filename="../tools/designer/src/components/taskmenu/itemlisteditor.cpp" line="349"/>
+ <location filename="../tools/designer/src/components/taskmenu/itemlisteditor.cpp" line="+358"/>
<source>Properties &amp;&lt;&lt;</source>
<translation>屬性 &amp;&lt;&lt;</translation>
</message>
<message>
+ <location line="+2"/>
+ <location filename="../tools/designer/src/components/taskmenu/itemlisteditor.ui"/>
<source>Properties &amp;&gt;&gt;</source>
<translation>屬性 &amp;&gt;&gt;</translation>
</message>
<message>
+ <location filename="../tools/designer/src/components/taskmenu/itemlisteditor.ui"/>
<source>Items List</source>
<translation>項目列表</translation>
</message>
<message>
+ <location/>
<source>New Item</source>
<translation>新增項目</translation>
</message>
<message>
+ <location/>
<source>&amp;New</source>
<translation>新增(&amp;N)</translation>
</message>
<message>
+ <location/>
<source>Delete Item</source>
<translation>刪除項目</translation>
</message>
<message>
+ <location/>
<source>&amp;Delete</source>
<translation>刪除(&amp;D)</translation>
</message>
<message>
+ <location/>
<source>Move Item Up</source>
<translation>將項目上移</translation>
</message>
<message>
+ <location/>
<source>U</source>
<translation>U</translation>
</message>
<message>
+ <location/>
<source>Move Item Down</source>
<translation>將項目下移</translation>
</message>
<message>
+ <location/>
<source>D</source>
<translation>D</translation>
</message>
@@ -5376,11 +6327,12 @@ and then paste again.</source>
<context>
<name>qdesigner_internal::LabelTaskMenu</name>
<message>
- <location filename="../tools/designer/src/components/taskmenu/label_taskmenu.cpp" line="59"/>
+ <location filename="../tools/designer/src/components/taskmenu/label_taskmenu.cpp" line="+89"/>
<source>Change rich text...</source>
<translation>變更 rich text...</translation>
</message>
<message>
+ <location line="+1"/>
<source>Change plain text...</source>
<translation>變更純文字...</translation>
</message>
@@ -5388,7 +6340,7 @@ and then paste again.</source>
<context>
<name>qdesigner_internal::LineEditTaskMenu</name>
<message>
- <location filename="../tools/designer/src/components/taskmenu/lineedit_taskmenu.cpp" line="54"/>
+ <location filename="../tools/designer/src/components/taskmenu/lineedit_taskmenu.cpp" line="+84"/>
<source>Change text...</source>
<translation>變更文字...</translation>
</message>
@@ -5396,15 +6348,17 @@ and then paste again.</source>
<context>
<name>qdesigner_internal::ListWidgetEditor</name>
<message>
- <location filename="../tools/designer/src/components/taskmenu/listwidgeteditor.cpp" line="75"/>
+ <location filename="../tools/designer/src/components/taskmenu/listwidgeteditor.cpp" line="+105"/>
<source>Edit List Widget</source>
<translation>編輯列表元件</translation>
</message>
<message>
+ <location line="+19"/>
<source>Edit Combobox</source>
<translation>編輯下拉å¼é¸å–®</translation>
</message>
<message>
+ <location line="-51"/>
<source>New Item</source>
<translation>新增項目</translation>
</message>
@@ -5484,11 +6438,12 @@ and then paste again.</source>
<context>
<name>qdesigner_internal::ListWidgetTaskMenu</name>
<message>
- <location filename="../tools/designer/src/components/taskmenu/listwidget_taskmenu.cpp" line="41"/>
+ <location filename="../tools/designer/src/components/taskmenu/listwidget_taskmenu.cpp" line="+71"/>
<source>Edit Items...</source>
<translation>編輯項目...</translation>
</message>
<message>
+ <location line="+38"/>
<source>Change List Contents</source>
<translation>變更列表內容</translation>
</message>
@@ -5496,19 +6451,22 @@ and then paste again.</source>
<context>
<name>qdesigner_internal::MdiContainerWidgetTaskMenu</name>
<message>
- <location filename="../tools/designer/src/components/taskmenu/containerwidget_taskmenu.cpp" line="118"/>
+ <location filename="../tools/designer/src/components/taskmenu/containerwidget_taskmenu.cpp" line="+118"/>
<source>Next Subwindow</source>
<translation>下一個å­è¦–窗</translation>
</message>
<message>
+ <location line="+1"/>
<source>Previous Subwindow</source>
<translation>å‰ä¸€å€‹å­è¦–窗</translation>
</message>
<message>
+ <location line="+1"/>
<source>Tile</source>
<translation>鋪排</translation>
</message>
<message>
+ <location line="+1"/>
<source>Cascade</source>
<translation>串接</translation>
</message>
@@ -5516,7 +6474,7 @@ and then paste again.</source>
<context>
<name>qdesigner_internal::MenuTaskMenu</name>
<message>
- <location filename="../tools/designer/src/components/taskmenu/menutaskmenu.cpp" line="30"/>
+ <location filename="../tools/designer/src/components/taskmenu/menutaskmenu.cpp" line="+60"/>
<source>Remove</source>
<translation>移除</translation>
</message>
@@ -5524,7 +6482,7 @@ and then paste again.</source>
<context>
<name>qdesigner_internal::MorphMenu</name>
<message>
- <location filename="../tools/designer/src/lib/shared/morphmenu.cpp" line="264"/>
+ <location filename="../tools/designer/src/lib/shared/morphmenu.cpp" line="+264"/>
<source>Morph into</source>
<translation>變型為</translation>
</message>
@@ -5532,34 +6490,42 @@ and then paste again.</source>
<context>
<name>qdesigner_internal::NewActionDialog</name>
<message>
+ <location filename="../tools/designer/src/lib/shared/newactiondialog.ui"/>
<source>New Action...</source>
<translation>新增動作...</translation>
</message>
<message>
+ <location/>
<source>&amp;Text:</source>
<translation>文字(&amp;T)</translation>
</message>
<message>
+ <location/>
<source>Shortcut:</source>
<translation>æ·å¾‘:</translation>
</message>
<message>
+ <location/>
<source>Checkable:</source>
<translation>å¯å‹¾é¸ï¼š</translation>
</message>
<message>
+ <location/>
<source>ToolTip:</source>
<translation>工具æ示:</translation>
</message>
<message>
+ <location/>
<source>...</source>
<translation>...</translation>
</message>
<message>
+ <location/>
<source>&amp;Icon:</source>
<translation>圖示(&amp;I)</translation>
</message>
<message>
+ <location/>
<source>Object &amp;name:</source>
<translation>物件å稱(&amp;N):</translation>
</message>
@@ -5567,11 +6533,12 @@ and then paste again.</source>
<context>
<name>qdesigner_internal::NewDynamicPropertyDialog</name>
<message>
- <location filename="../tools/designer/src/components/propertyeditor/newdynamicpropertydialog.cpp" line="104"/>
+ <location filename="../tools/designer/src/components/propertyeditor/newdynamicpropertydialog.cpp" line="+134"/>
<source>Set Property Name</source>
<translation>設定屬性å稱</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>ç›®å‰çš„物件已經有å為 %1 的屬性了。
@@ -5584,25 +6551,29 @@ Please select another name.</source>
è«‹é¸æ“‡å¦å¤–çš„å稱。</translation>
</message>
<message>
+ <location filename="../tools/designer/src/components/propertyeditor/newdynamicpropertydialog.ui"/>
<source>Create Dynamic Property</source>
<translation>建立動態屬性</translation>
</message>
<message>
+ <location/>
<source>Property Name</source>
<translation>屬性å稱</translation>
</message>
<message>
+ <location/>
<source>Property Type</source>
<translation>屬性型態</translation>
</message>
<message>
- <location filename="../tools/designer/src/components/propertyeditor/newdynamicpropertydialog.cpp" line="4"/>
+ <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>å‰ç½®å­—串 &apos;_q_&apos; 是ä¿ç•™çµ¦ Qt 函å¼åº«ç”¨çš„。
è«‹é¸æ“‡å…¶å®ƒå­—串。</translation>
</message>
<message>
+ <location filename="../tools/designer/src/components/propertyeditor/newdynamicpropertydialog.ui"/>
<source>horizontalSpacer</source>
<translation>水平間隔</translation>
</message>
@@ -5610,62 +6581,78 @@ Please select another name.</source>
<context>
<name>qdesigner_internal::NewFormWidget</name>
<message>
+ <location filename="../tools/designer/src/lib/shared/newformwidget.cpp" line="-391"/>
<source>Default size</source>
<translation>é è¨­å¤§å°</translation>
</message>
<message>
+ <location line="+1"/>
<source>QVGA portrait (240x320)</source>
<translation>QVGA 縱å‘(240 x 320)</translation>
</message>
<message>
+ <location line="+1"/>
<source>QVGA landscape (320x240)</source>
<translation>QVGA æ©«å‘(320 x 240)</translation>
</message>
<message>
+ <location line="+1"/>
<source>VGA portrait (480x640)</source>
<translation>VGA 縱å‘(480 x 640)</translation>
</message>
<message>
+ <location line="+1"/>
<source>VGA landscape (640x480)</source>
<translation>VGA æ©«å‘(640 x 480)</translation>
</message>
<message>
+ <location line="+66"/>
<source>Widgets</source>
+ <extracomment>New Form Dialog Categories</extracomment>
<translation>元件</translation>
</message>
<message>
+ <location line="+1"/>
<source>Custom Widgets</source>
<translation>自訂元件</translation>
</message>
<message>
+ <location line="+18"/>
<source>None</source>
<translation>ç„¡</translation>
</message>
<message>
+ <location line="+57"/>
<source>Error loading form</source>
<translation>載入表單時發生錯誤</translation>
</message>
<message>
+ <location line="+312"/>
<source>Internal error: No template selected.</source>
<translation>內部錯誤:沒有é¸æ“‡æ¨£æœ¬ã€‚</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>é¸æ“‡é è¦½çš„樣本</translation>
</message>
<message>
+ <location/>
<source>Embedded Design</source>
<translation>嵌入å¼è¨­è¨ˆ</translation>
</message>
<message>
+ <location/>
<source>Device:</source>
<translation>è£ç½®ï¼š</translation>
</message>
<message>
+ <location/>
<source>Screen Size:</source>
<translation>螢幕大å°ï¼š</translation>
</message>
@@ -5673,31 +6660,37 @@ Please select another name.</source>
<context>
<name>qdesigner_internal::NewPromotedClassPanel</name>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_promotiondialog.cpp" line="66"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_promotiondialog.cpp" line="+96"/>
<source>Add</source>
<translation>新增</translation>
</message>
<message>
+ <location line="+2"/>
<source>New Promoted Class</source>
<translation>新增æå‡çš„元件</translation>
</message>
<message>
+ <location line="+15"/>
<source>Base class name:</source>
<translation>基底類別å稱:</translation>
</message>
<message>
+ <location line="+1"/>
<source>Promoted class name:</source>
<translation>æå‡çš„類別å稱:</translation>
</message>
<message>
+ <location line="+1"/>
<source>Header file:</source>
<translation>標頭檔:</translation>
</message>
<message>
+ <location line="+1"/>
<source>Global include</source>
<translation>全域引入</translation>
</message>
<message>
+ <location line="+11"/>
<source>Reset</source>
<translation>é‡ç½®</translation>
</message>
@@ -5721,7 +6714,7 @@ Please select another name.</source>
<translation type="obsolete">分隔器</translation>
</message>
<message>
- <location filename="../tools/designer/src/components/objectinspector/objectinspector.cpp" line="727"/>
+ <location filename="../tools/designer/src/components/objectinspector/objectinspector.cpp" line="+758"/>
<source>&amp;Find in Text...</source>
<translation>在文字中尋找(&amp;F)...</translation>
</message>
@@ -5729,6 +6722,7 @@ Please select another name.</source>
<context>
<name>qdesigner_internal::ObjectInspector::ObjectInspectorPrivate</name>
<message>
+ <location line="-438"/>
<source>Change Current Page</source>
<translation>變更目å‰çš„é é¢</translation>
</message>
@@ -5736,15 +6730,17 @@ Please select another name.</source>
<context>
<name>qdesigner_internal::OrderDialog</name>
<message>
- <location filename="../tools/designer/src/lib/shared/orderdialog.cpp" line="83"/>
+ <location filename="../tools/designer/src/lib/shared/orderdialog.cpp" line="+113"/>
<source>Index %1 (%2)</source>
<translation>索引 %1(%2)</translation>
</message>
<message>
+ <location filename="../tools/designer/src/lib/shared/orderdialog.ui"/>
<source>Change Page Order</source>
<translation>變更é é¢é †åº</translation>
</message>
<message>
+ <location/>
<source>Page Order</source>
<translation>é é¢é †åº</translation>
</message>
@@ -5757,15 +6753,17 @@ Please select another name.</source>
<translation type="obsolete">下</translation>
</message>
<message>
- <location filename="../tools/designer/src/lib/shared/orderdialog.cpp" line="3"/>
+ <location filename="../tools/designer/src/lib/shared/orderdialog.cpp" line="+3"/>
<source>%1 %2</source>
<translation>%1 %2</translation>
</message>
<message>
+ <location filename="../tools/designer/src/lib/shared/orderdialog.ui"/>
<source>Move page up</source>
<translation>é é¢ä¸Šç§»</translation>
</message>
<message>
+ <location/>
<source>Move page down</source>
<translation>é é¢ä¸‹ç§»</translation>
</message>
@@ -5773,38 +6771,47 @@ Please select another name.</source>
<context>
<name>qdesigner_internal::PaletteEditor</name>
<message>
+ <location filename="../tools/designer/src/components/propertyeditor/paletteeditor.ui"/>
<source>Edit Palette</source>
<translation>編輯調色盤</translation>
</message>
<message>
+ <location/>
<source>Tune Palette</source>
<translation>調整調色盤</translation>
</message>
<message>
+ <location/>
<source>Show Details</source>
<translation>顯示詳情</translation>
</message>
<message>
+ <location/>
<source>Compute Details</source>
<translation>計算詳情</translation>
</message>
<message>
+ <location/>
<source>Quick</source>
<translation>å¿«</translation>
</message>
<message>
+ <location/>
<source>Preview</source>
<translation>é è¦½</translation>
</message>
<message>
+ <location/>
<source>Disabled</source>
<translation>已關閉</translation>
</message>
<message>
+ <location/>
<source>Inactive</source>
<translation>未啟動</translation>
</message>
<message>
+ <location/>
<source>Active</source>
<translation>å•Ÿå‹•</translation>
</message>
@@ -5812,7 +6819,7 @@ Please select another name.</source>
<context>
<name>qdesigner_internal::PaletteEditorButton</name>
<message>
- <location filename="../tools/designer/src/components/propertyeditor/paletteeditorbutton.cpp" line="31"/>
+ <location filename="../tools/designer/src/components/propertyeditor/paletteeditorbutton.cpp" line="+61"/>
<source>Change Palette</source>
<translation>變更調色盤</translation>
</message>
@@ -5820,19 +6827,22 @@ Please select another name.</source>
<context>
<name>qdesigner_internal::PaletteModel</name>
<message>
- <location filename="../tools/designer/src/components/propertyeditor/paletteeditor.cpp" line="351"/>
+ <location filename="../tools/designer/src/components/propertyeditor/paletteeditor.cpp" line="+381"/>
<source>Color Role</source>
<translation>é¡è‰²è§’色</translation>
</message>
<message>
+ <location line="+2"/>
<source>Active</source>
<translation>å•Ÿå‹•</translation>
</message>
<message>
+ <location line="+2"/>
<source>Inactive</source>
<translation>未啟動</translation>
</message>
<message>
+ <location line="+2"/>
<source>Disabled</source>
<translation>已關閉</translation>
</message>
@@ -5840,22 +6850,28 @@ Please select another name.</source>
<context>
<name>qdesigner_internal::PixmapEditor</name>
<message>
+ <location filename="../tools/designer/src/components/propertyeditor/designerpropertymanager.cpp" line="-1539"/>
<source>Copy Path</source>
<translation>複製路徑</translation>
</message>
<message>
+ <location line="+1"/>
<source>Paste Path</source>
<translation>貼上路徑</translation>
</message>
<message>
+ <location line="-3"/>
<source>Choose Resource...</source>
<translation>é¸æ“‡è³‡æº...</translation>
</message>
<message>
+ <location line="+1"/>
<source>Choose File...</source>
<translation>é¸æ“‡æª”案...</translation>
</message>
<message>
+ <location line="+8"/>
+ <location line="+16"/>
<source>...</source>
<translation>...</translation>
</message>
@@ -5863,15 +6879,61 @@ Please select another name.</source>
<context>
<name>qdesigner_internal::PlainTextEditorDialog</name>
<message>
- <location filename="../tools/designer/src/lib/shared/plaintexteditor.cpp" line="39"/>
+ <location filename="../tools/designer/src/lib/shared/plaintexteditor.cpp" line="+69"/>
<source>Edit text</source>
<translation>編輯文字</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>組件</translation>
+ </message>
+ <message>
+ <location line="+13"/>
+ <source>Plugin Information</source>
+ <translation>外掛程å¼è³‡è¨Š</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Refresh</source>
+ <translation>刷新</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Scan for newly installed custom widget plugins.</source>
+ <translation>掃æ是å¦æœ‰æ–°å®‰è£çš„自訂元件外掛程å¼ã€‚</translation>
+ </message>
+ <message>
+ <location line="+48"/>
+ <source>Qt Designer couldn&apos;t find any plugins</source>
+ <translation>Qt 設計家找ä¸åˆ°ä»»ä½•çš„外掛程å¼ã€‚</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Qt Designer found the following plugins</source>
+ <translation>Qt 設計家找到以下的外掛程å¼</translation>
+ </message>
+ <message>
+ <location line="+55"/>
+ <source>New custom widget plugins have been found.</source>
+ <translation>找到新的自訂元件外掛程å¼ã€‚</translation>
+ </message>
+ <message>
+ <source>TextLabel</source>
+ <translation type="obsolete">文字標籤</translation>
+ </message>
+ <message>
+ <source>1</source>
+ <translation type="obsolete">1</translation>
+ </message>
+</context>
+<context>
<name>qdesigner_internal::PreviewActionGroup</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/previewactiongroup.cpp" line="65"/>
+ <location filename="../tools/designer/src/components/formeditor/previewactiongroup.cpp" line="+95"/>
<source>%1 Style</source>
<translation>%1 樣å¼</translation>
</message>
@@ -5879,27 +6941,32 @@ Please select another name.</source>
<context>
<name>qdesigner_internal::PreviewConfigurationWidget::PreviewConfigurationWidgetPrivate</name>
<message>
- <location filename="../tools/designer/src/lib/shared/previewconfigurationwidget.cpp" line="118"/>
+ <location filename="../tools/designer/src/lib/shared/previewconfigurationwidget.cpp" line="+118"/>
<source>Load Custom Device Skin</source>
<translation>載入自訂è£ç½®å¤–觀</translation>
</message>
<message>
+ <location line="+2"/>
<source>All QVFB Skins (*.%1)</source>
<translation>所有 QVFB 外觀檔 (*.%1)</translation>
</message>
<message>
+ <location line="+16"/>
<source>%1 - Duplicate Skin</source>
<translation>%1─複製外觀</translation>
</message>
<message>
+ <location line="+1"/>
<source>The skin &apos;%1&apos; already exists.</source>
<translation>外觀 %1 已存在。</translation>
</message>
<message>
+ <location line="+14"/>
<source>%1 - Error</source>
<translation>%1─錯誤</translation>
</message>
<message>
+ <location line="+1"/>
<source>%1 is not a valid skin directory:
%2</source>
<translation>%1 ä¸æ˜¯åˆæ³•çš„外觀目錄:
@@ -5909,7 +6976,7 @@ Please select another name.</source>
<context>
<name>qdesigner_internal::PreviewDeviceSkin</name>
<message>
- <location filename="../tools/designer/src/lib/shared/previewmanager.cpp" line="188"/>
+ <location filename="../tools/designer/src/lib/shared/previewmanager.cpp" line="+218"/>
<source>&amp;Close</source>
<translation>關閉(&amp;C)</translation>
</message>
@@ -5917,6 +6984,7 @@ Please select another name.</source>
<context>
<name>qdesigner_internal::PreviewManager</name>
<message>
+ <location line="+345"/>
<source>%1 - [Preview]</source>
<translation>%1─[é è¦½]</translation>
</message>
@@ -5928,46 +6996,57 @@ Please select another name.</source>
<context>
<name>qdesigner_internal::PreviewWidget</name>
<message>
+ <location filename="../tools/designer/src/components/propertyeditor/previewwidget.ui"/>
<source>Preview Window</source>
<translation>é è¦½è¦–窗</translation>
</message>
<message>
+ <location/>
<source>LineEdit</source>
<translation>行編輯器</translation>
</message>
<message>
+ <location/>
<source>ComboBox</source>
<translation>下拉å¼é¸å–®</translation>
</message>
<message>
+ <location/>
<source>PushButton</source>
<translation>按éµ</translation>
</message>
<message>
+ <location/>
<source>ButtonGroup2</source>
<translation>按éµç¾¤çµ„2</translation>
</message>
<message>
+ <location/>
<source>CheckBox1</source>
<translation>勾é¸ç›’1</translation>
</message>
<message>
+ <location/>
<source>CheckBox2</source>
<translation>勾é¸ç›’2</translation>
</message>
<message>
+ <location/>
<source>ButtonGroup</source>
<translation>按éµç¾¤çµ„</translation>
</message>
<message>
+ <location/>
<source>RadioButton1</source>
<translation>å–®é¸åœ“鈕1</translation>
</message>
<message>
+ <location/>
<source>RadioButton2</source>
<translation>å–®é¸åœ“鈕2</translation>
</message>
<message>
+ <location/>
<source>RadioButton3</source>
<translation>å–®é¸åœ“鈕3</translation>
</message>
@@ -5975,19 +7054,22 @@ Please select another name.</source>
<context>
<name>qdesigner_internal::PromotionModel</name>
<message>
- <location filename="../tools/designer/src/lib/shared/promotionmodel.cpp" line="17"/>
+ <location filename="../tools/designer/src/lib/shared/promotionmodel.cpp" line="+17"/>
<source>Name</source>
<translation>å稱</translation>
</message>
<message>
+ <location line="+1"/>
<source>Header file</source>
<translation>標頭檔</translation>
</message>
<message>
+ <location line="+1"/>
<source>Global include</source>
<translation>全域引入</translation>
</message>
<message>
+ <location line="+1"/>
<source>Usage</source>
<translation>用法</translation>
</message>
@@ -5995,23 +7077,27 @@ Please select another name.</source>
<context>
<name>qdesigner_internal::PromotionTaskMenu</name>
<message>
- <location filename="../tools/designer/src/lib/shared/promotiontaskmenu.cpp" line="55"/>
+ <location filename="../tools/designer/src/lib/shared/promotiontaskmenu.cpp" line="+85"/>
<source>Promoted widgets...</source>
<translation>å·²æå‡å…ƒä»¶</translation>
</message>
<message>
+ <location line="+1"/>
<source>Promote to ...</source>
<translation>æå‡åˆ°...</translation>
</message>
<message>
+ <location line="+2"/>
<source>Promote to</source>
<translation>æå‡åˆ°</translation>
</message>
<message>
+ <location line="+1"/>
<source>Demote to %1</source>
<translation>é™ç´šåˆ° %1</translation>
</message>
<message>
+ <location line="-2"/>
<source>Change signals/slots...</source>
<translation>變更信號/信號槽...</translation>
</message>
@@ -6019,43 +7105,52 @@ Please select another name.</source>
<context>
<name>qdesigner_internal::PropertyEditor</name>
<message>
- <location filename="../tools/designer/src/components/propertyeditor/propertyeditor.cpp" line="222"/>
+ <location filename="../tools/designer/src/components/propertyeditor/propertyeditor.cpp" line="+188"/>
<source>Add Dynamic Property...</source>
<translation>新增動態屬性...</translation>
</message>
<message>
+ <location line="+1"/>
<source>Remove Dynamic Property</source>
<translation>移除動態屬性</translation>
</message>
<message>
+ <location line="+1"/>
<source>Sorting</source>
<translation>排åº</translation>
</message>
<message>
+ <location line="+1"/>
<source>Color Groups</source>
<translation>é¡è‰²ç¾¤çµ„</translation>
</message>
<message>
+ <location line="+1"/>
<source>Tree View</source>
<translation>樹狀檢視</translation>
</message>
<message>
+ <location line="+1"/>
<source>Drop Down Button View</source>
<translation>放下按éµæª¢è¦–</translation>
</message>
<message>
+ <location line="+49"/>
<source>String...</source>
<translation>字串...</translation>
</message>
<message>
+ <location line="+3"/>
<source>Bool...</source>
<translation>布林值...</translation>
</message>
<message>
+ <location line="+4"/>
<source>Other...</source>
<translation>其它...</translation>
</message>
<message>
+ <location line="+7"/>
<source>Configure Property Editor</source>
<translation>設定屬性編輯器</translation>
</message>
@@ -6066,6 +7161,7 @@ Please select another name.</source>
%2</translation>
</message>
<message>
+ <location line="+533"/>
<source>Object: %1
Class: %2</source>
<translation>物件:%1
@@ -6075,7 +7171,7 @@ Class: %2</source>
<context>
<name>qdesigner_internal::PropertyLineEdit</name>
<message>
- <location filename="../tools/designer/src/lib/shared/propertylineedit.cpp" line="58"/>
+ <location filename="../tools/designer/src/lib/shared/propertylineedit.cpp" line="+88"/>
<source>Insert line break</source>
<translation>æ’入行中斷</translation>
</message>
@@ -6083,23 +7179,27 @@ Class: %2</source>
<context>
<name>qdesigner_internal::QDesignerPromotionDialog</name>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_promotiondialog.cpp" line="85"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_promotiondialog.cpp" line="+85"/>
<source>Promoted Widgets</source>
<translation>å·²æå‡å…ƒä»¶</translation>
</message>
<message>
+ <location line="+7"/>
<source>Promoted Classes</source>
<translation>å·²æå‡é¡žåˆ¥</translation>
</message>
<message>
+ <location line="+60"/>
<source>Promote</source>
<translation>æå‡</translation>
</message>
<message>
+ <location line="+169"/>
<source>%1 - Error</source>
<translation>%1─錯誤</translation>
</message>
<message>
+ <location line="-17"/>
<source>Change signals/slots...</source>
<translation>變更信號/信號槽...</translation>
</message>
@@ -6107,19 +7207,22 @@ Class: %2</source>
<context>
<name>qdesigner_internal::QDesignerResource</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/qdesigner_resource.cpp" line="277"/>
+ <location filename="../tools/designer/src/components/formeditor/qdesigner_resource.cpp" line="+277"/>
<source>Loading qrc file</source>
<translation>載入 qrc 檔</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>找ä¸åˆ°æŒ‡å®šçš„ qrc 檔 &lt;p&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/p&gt;&lt;p&gt;您è¦æ›´æ–°ä½ç½®å—Žï¼Ÿ&lt;/p&gt;</translation>
</message>
<message>
+ <location line="+6"/>
<source>New location for %1</source>
<translation>%1 çš„æ–°ä½ç½®</translation>
</message>
<message>
+ <location line="+1"/>
<source>Resource files (*.qrc)</source>
<translation>資æºæª” (*.qrc)</translation>
</message>
@@ -6127,87 +7230,112 @@ Class: %2</source>
<context>
<name>qdesigner_internal::QDesignerTaskMenu</name>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_taskmenu.cpp" line="68"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_taskmenu.cpp" line="+68"/>
<source>Change objectName...</source>
<translation>變更物件å稱...</translation>
</message>
<message>
+ <location line="+1"/>
<source>Change toolTip...</source>
<translation>變更工具æ示...</translation>
</message>
<message>
+ <location line="+1"/>
<source>Change whatsThis...</source>
<translation>變更「這是什麼?ã€...</translation>
</message>
<message>
+ <location line="+1"/>
<source>Change styleSheet...</source>
<translation>變更樣å¼è¡¨...</translation>
</message>
<message>
+ <location line="+3"/>
<source>Create Menu Bar</source>
<translation>建立é¸å–®åˆ—</translation>
</message>
<message>
+ <location line="+1"/>
<source>Add Tool Bar</source>
<translation>新增工具列</translation>
</message>
<message>
+ <location line="+1"/>
<source>Create Status Bar</source>
<translation>建立狀態列</translation>
</message>
<message>
+ <location line="+1"/>
<source>Remove Status Bar</source>
<translation>移除狀態列</translation>
</message>
<message>
+ <location line="+1"/>
<source>Change script...</source>
<translation>變更文稿...</translation>
</message>
<message>
+ <location line="+1"/>
<source>Change signals/slots...</source>
<translation>變更信號/信號槽...</translation>
</message>
<message>
+ <location line="+1"/>
<source>Go to slot...</source>
<translation>跳到信號槽...</translation>
</message>
<message>
+ <location line="+3"/>
<source>Size Constraints</source>
<translation>大å°é™åˆ¶</translation>
</message>
<message>
+ <location line="+4"/>
<source>Set Minimum Width</source>
<translation>設定最å°å¯¬åº¦</translation>
</message>
<message>
+ <location line="+4"/>
<source>Set Minimum Height</source>
<translation>設定最å°é«˜åº¦</translation>
</message>
<message>
+ <location line="+4"/>
<source>Set Minimum Size</source>
<translation>設定最å°å¤§å°</translation>
</message>
<message>
+ <location line="+6"/>
<source>Set Maximum Width</source>
<translation>設定最大寬度</translation>
</message>
<message>
+ <location line="+4"/>
<source>Set Maximum Height</source>
<translation>設定最大高度</translation>
</message>
<message>
+ <location line="+4"/>
<source>Set Maximum Size</source>
<translation>設定最大大å°</translation>
</message>
<message>
+ <location line="+235"/>
<source>Edit ToolTip</source>
<translation>編輯工具æ示</translation>
</message>
<message>
+ <location line="+5"/>
<source>Edit WhatsThis</source>
<translation>編輯「這是什麼ã€</translation>
</message>
+ <message>
+ <location line="+144"/>
+ <source>no signals available</source>
+ <translation type="unfinished"></translation>
+ </message>
<message numerus="yes">
+ <location line="+67"/>
<source>Set size constraint on %n widget(s)</source>
<translation>
<numerusform>設定 %n 個元件的大å°é™åˆ¶</numerusform>
@@ -6217,16 +7345,20 @@ Class: %2</source>
<context>
<name>qdesigner_internal::QDesignerWidgetBox</name>
<message>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_widgetbox.cpp" line="+127"/>
+ <location line="+13"/>
<source>Unexpected element &lt;%1&gt;</source>
<translation>未é æœŸçš„元素 &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>在元件 %3 çš„ XML 代碼第 %1 行第 %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>元件 %1 çš„ XML æºç¢¼æœªåŒ…å«ä»»ä½•å…ƒä»¶å…ƒç´ ã€‚
@@ -6274,8 +7406,8 @@ Class: %2</source>
<translation type="obsolete">é¡è‰²æ¨£å¼</translation>
</message>
<message>
- <source>Rename<byte value="x9"/>F2</source>
- <translation type="obsolete">é‡æ–°å‘½å<byte value="x9"/>F2</translation>
+ <source>Rename F2</source>
+ <translation type="obsolete">é‡æ–°å‘½å F2</translation>
</message>
<message>
<source>Form</source>
@@ -6458,27 +7590,32 @@ Class: %2</source>
<context>
<name>qdesigner_internal::QtGradientEditor</name>
<message>
- <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.cpp" line="289"/>
+ <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.cpp" line="+289"/>
<source>Linear</source>
<translation>線性</translation>
</message>
<message>
+ <location line="+1"/>
<source>Radial</source>
<translation>放射狀</translation>
</message>
<message>
+ <location line="+1"/>
<source>Conical</source>
<translation>圓éŒç‹€</translation>
</message>
<message>
+ <location line="+20"/>
<source>Pad</source>
<translation>墊å­ç‹€</translation>
</message>
<message>
+ <location line="+1"/>
<source>Repeat</source>
<translation>é‡è¦†</translation>
</message>
<message>
+ <location line="+1"/>
<source>Reflect</source>
<translation>åå°„</translation>
</message>
@@ -6538,59 +7675,73 @@ Class: %2</source>
<context>
<name>qdesigner_internal::QtGradientStopsController</name>
<message>
- <location filename="../tools/shared/qtgradienteditor/qtgradientstopscontroller.cpp" line="147"/>
+ <location filename="../tools/shared/qtgradienteditor/qtgradientstopscontroller.cpp" line="+177"/>
<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>色調</translation>
</message>
<message>
+ <location line="-3"/>
<source>Sat</source>
<translation>飽和度</translation>
</message>
<message>
+ <location line="+1"/>
<source>Val</source>
<translation>數值</translation>
</message>
<message>
+ <location line="+3"/>
<source>Saturation</source>
<translation>飽和度</translation>
</message>
<message>
+ <location line="+1"/>
<source>Value</source>
<translation>數值</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>ç´…</translation>
</message>
<message>
+ <location line="+1"/>
<source>Green</source>
<translation>綠</translation>
</message>
<message>
+ <location line="+1"/>
<source>Blue</source>
<translation>è—</translation>
</message>
@@ -6759,23 +7910,27 @@ Class: %2</source>
<context>
<name>qdesigner_internal::RichTextEditorDialog</name>
<message>
- <location filename="../tools/designer/src/lib/shared/richtexteditor.cpp" line="436"/>
+ <location filename="../tools/designer/src/lib/shared/richtexteditor.cpp" line="+436"/>
<source>Edit text</source>
<translation>編輯文字</translation>
</message>
<message>
+ <location line="+30"/>
<source>&amp;OK</source>
<translation>確定(&amp;O)</translation>
</message>
<message>
+ <location line="+2"/>
<source>&amp;Cancel</source>
<translation>å–消(&amp;C)</translation>
</message>
<message>
+ <location line="-9"/>
<source>Rich Text</source>
<translation>Rich Text</translation>
</message>
<message>
+ <location line="+1"/>
<source>Source</source>
<translation>來æº</translation>
</message>
@@ -6783,58 +7938,72 @@ Class: %2</source>
<context>
<name>qdesigner_internal::RichTextEditorToolBar</name>
<message>
+ <location line="-294"/>
<source>Bold</source>
<translation>ç²—é«”</translation>
</message>
<message>
+ <location line="+1"/>
<source>CTRL+B</source>
<translation>CTRL+B</translation>
</message>
<message>
+ <location line="+5"/>
<source>Italic</source>
<translation>斜體</translation>
</message>
<message>
+ <location line="+1"/>
<source>CTRL+I</source>
<translation>CTRL+I</translation>
</message>
<message>
+ <location line="+5"/>
<source>Underline</source>
<translation>底線</translation>
</message>
<message>
+ <location line="+1"/>
<source>CTRL+U</source>
<translation>CTRL+U</translation>
</message>
<message>
+ <location line="+13"/>
<source>Left Align</source>
<translation>置左å°é½Š</translation>
</message>
<message>
+ <location line="+5"/>
<source>Center</source>
<translation>置中</translation>
</message>
<message>
+ <location line="+5"/>
<source>Right Align</source>
<translation>ç½®å³å°é½Š</translation>
</message>
<message>
+ <location line="+5"/>
<source>Justify</source>
<translation>å…©é‚Šå°é½Š</translation>
</message>
<message>
+ <location line="+9"/>
<source>Superscript</source>
<translation>上標</translation>
</message>
<message>
+ <location line="+6"/>
<source>Subscript</source>
<translation>下標</translation>
</message>
<message>
+ <location line="+9"/>
<source>Insert &amp;Link</source>
<translation>æ’入連çµ(&amp;L)</translation>
</message>
<message>
+ <location line="+5"/>
<source>Insert &amp;Image</source>
<translation>æ’入影åƒ(&amp;I)</translation>
</message>
@@ -6842,15 +8011,17 @@ Class: %2</source>
<context>
<name>qdesigner_internal::ScriptDialog</name>
<message>
- <location filename="../tools/designer/src/lib/shared/scriptdialog.cpp" line="38"/>
+ <location filename="../tools/designer/src/lib/shared/scriptdialog.cpp" line="+68"/>
<source>Edit script</source>
<translation>編輯文稿</translation>
</message>
<message>
+ <location line="+5"/>
<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;請輸入載入表單時è¦åŸ·è¡Œçš„文稿片段。&lt;br&gt;元件與å­å…ƒä»¶å¯ä»¥ç”¨è®Šæ•¸ &lt;i&gt;widget&lt;/i&gt; 與 &lt;i&gt;childWidgets&lt;/i&gt; 來存å–。</translation>
</message>
<message>
+ <location line="+50"/>
<source>Syntax error</source>
<translation>語法錯誤</translation>
</message>
@@ -6858,7 +8029,7 @@ Class: %2</source>
<context>
<name>qdesigner_internal::ScriptErrorDialog</name>
<message>
- <location filename="../tools/designer/src/lib/shared/scripterrordialog.cpp" line="27"/>
+ <location filename="../tools/designer/src/lib/shared/scripterrordialog.cpp" line="+27"/>
<source>Script errors</source>
<translation>文稿錯誤</translation>
</message>
@@ -6873,19 +8044,23 @@ Class: %2</source>
<context>
<name>qdesigner_internal::SignalSlotDialog</name>
<message>
- <location filename="../tools/designer/src/lib/shared/signalslotdialog.cpp" line="199"/>
+ <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>已經有一個信號槽,其簽章為 %1。</translation>
</message>
<message>
+ <location line="+5"/>
<source>There is already a signal with the signature &apos;%1&apos;.</source>
<translation>已經有一個信號,其簽章為 %1。</translation>
</message>
<message>
+ <location line="+7"/>
<source>%1 - Duplicate Signature</source>
<translation>%1─複製簽章</translation>
</message>
<message>
+ <location line="+21"/>
+ <location line="+76"/>
<source>Signals/Slots of %1</source>
<translation>%1 的信號與信號槽</translation>
</message>
@@ -6893,11 +8068,12 @@ Class: %2</source>
<context>
<name>qdesigner_internal::SignalSlotEditorPlugin</name>
<message>
- <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditor_plugin.cpp" line="46"/>
+ <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditor_plugin.cpp" line="+76"/>
<source>Edit Signals/Slots</source>
<translation>編輯信號與信號槽</translation>
</message>
<message>
+ <location line="+2"/>
<source>F4</source>
<translation>F4</translation>
</message>
@@ -6905,7 +8081,7 @@ Class: %2</source>
<context>
<name>qdesigner_internal::SignalSlotEditorTool</name>
<message>
- <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditor_tool.cpp" line="32"/>
+ <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditor_tool.cpp" line="+62"/>
<source>Edit Signals/Slots</source>
<translation>編輯信號與信號槽</translation>
</message>
@@ -6913,7 +8089,7 @@ Class: %2</source>
<context>
<name>qdesigner_internal::StatusBarTaskMenu</name>
<message>
- <location filename="../tools/designer/src/components/taskmenu/toolbar_taskmenu.cpp" line="55"/>
+ <location filename="../tools/designer/src/components/taskmenu/toolbar_taskmenu.cpp" line="+85"/>
<source>Remove</source>
<translation>移除</translation>
</message>
@@ -6925,7 +8101,7 @@ Class: %2</source>
<translation type="obsolete">變更字串列表</translation>
</message>
<message>
- <location filename="../tools/designer/src/components/propertyeditor/stringlisteditorbutton.cpp" line="30"/>
+ <location filename="../tools/designer/src/components/propertyeditor/stringlisteditorbutton.cpp" line="+60"/>
<source>Change String List</source>
<translation>變更字串列表</translation>
</message>
@@ -6933,31 +8109,38 @@ Class: %2</source>
<context>
<name>qdesigner_internal::StyleSheetEditorDialog</name>
<message>
- <location filename="../tools/designer/src/lib/shared/stylesheeteditor.cpp" line="71"/>
+ <location filename="../tools/designer/src/lib/shared/stylesheeteditor.cpp" line="+101"/>
<source>Edit Style Sheet</source>
<translation>編輯樣å¼è¡¨</translation>
</message>
<message>
+ <location line="-7"/>
+ <location line="+283"/>
<source>Valid Style Sheet</source>
<translation>åˆæ³•æ¨£å¼è¡¨</translation>
</message>
<message>
+ <location line="+3"/>
<source>Invalid Style Sheet</source>
<translation>ä¸åˆæ³•çš„樣å¼è¡¨</translation>
</message>
<message>
+ <location line="-284"/>
<source>Add Resource...</source>
<translation>新增資æº...</translation>
</message>
<message>
+ <location line="+1"/>
<source>Add Gradient...</source>
<translation>新增漸層...</translation>
</message>
<message>
+ <location line="+1"/>
<source>Add Color...</source>
<translation>新增é¡è‰²...</translation>
</message>
<message>
+ <location line="+1"/>
<source>Add Font...</source>
<translation>新增字型...</translation>
</message>
@@ -6986,23 +8169,27 @@ Class: %2</source>
<context>
<name>qdesigner_internal::TabOrderEditor</name>
<message>
- <location filename="../tools/designer/src/components/tabordereditor/tabordereditor.cpp" line="333"/>
+ <location filename="../tools/designer/src/components/tabordereditor/tabordereditor.cpp" line="+363"/>
<source>Start from Here</source>
<translation>從這裡開始</translation>
</message>
<message>
+ <location line="+3"/>
<source>Restart</source>
<translation>é‡æ–°é–‹å§‹</translation>
</message>
<message>
+ <location line="+2"/>
<source>Tab Order List...</source>
<translation>定ä½é»žé †åºåˆ—表...</translation>
</message>
<message>
+ <location line="+44"/>
<source>Tab Order List</source>
<translation>定ä½é»žé †åºåˆ—表</translation>
</message>
<message>
+ <location line="+1"/>
<source>Tab Order</source>
<translation>定ä½é»žé †åº</translation>
</message>
@@ -7010,7 +8197,7 @@ Class: %2</source>
<context>
<name>qdesigner_internal::TabOrderEditorPlugin</name>
<message>
- <location filename="../tools/designer/src/components/tabordereditor/tabordereditor_plugin.cpp" line="47"/>
+ <location filename="../tools/designer/src/components/tabordereditor/tabordereditor_plugin.cpp" line="+77"/>
<source>Edit Tab Order</source>
<translation>編輯定ä½é»žé †åº</translation>
</message>
@@ -7018,7 +8205,7 @@ Class: %2</source>
<context>
<name>qdesigner_internal::TabOrderEditorTool</name>
<message>
- <location filename="../tools/designer/src/components/tabordereditor/tabordereditor_tool.cpp" line="31"/>
+ <location filename="../tools/designer/src/components/tabordereditor/tabordereditor_tool.cpp" line="+61"/>
<source>Edit Tab Order</source>
<translation>編輯定ä½é»žé †åº</translation>
</message>
@@ -7026,35 +8213,43 @@ Class: %2</source>
<context>
<name>qdesigner_internal::TableWidgetEditor</name>
<message>
- <location filename="../tools/designer/src/components/taskmenu/tablewidgeteditor.cpp" line="41"/>
+ <location filename="../tools/designer/src/components/taskmenu/tablewidgeteditor.cpp" line="+71"/>
<source>New Column</source>
<translation>新增欄ä½</translation>
</message>
<message>
+ <location line="+3"/>
<source>New Row</source>
<translation>新增列</translation>
</message>
<message>
+ <location line="+8"/>
<source>&amp;Columns</source>
<translation>欄(&amp;C)</translation>
</message>
<message>
+ <location line="+1"/>
<source>&amp;Rows</source>
<translation>列(&amp;R)</translation>
</message>
<message>
+ <location line="+137"/>
<source>Properties &amp;&lt;&lt;</source>
<translation>屬性 &amp;&lt;&lt;</translation>
</message>
<message>
+ <location line="+2"/>
+ <location filename="../tools/designer/src/components/taskmenu/tablewidgeteditor.ui"/>
<source>Properties &amp;&gt;&gt;</source>
<translation>屬性 &amp;&gt;&gt;</translation>
</message>
<message>
+ <location filename="../tools/designer/src/components/taskmenu/tablewidgeteditor.ui"/>
<source>Edit Table Widget</source>
<translation>編輯表格元件</translation>
</message>
<message>
+ <location/>
<source>&amp;Items</source>
<translation>é …ç›®(&amp;I)</translation>
</message>
@@ -7119,6 +8314,7 @@ Class: %2</source>
<translation type="obsolete">é‡ç½®åˆ—åƒç´ åœ–</translation>
</message>
<message>
+ <location/>
<source>Table Items</source>
<translation>表格項目</translation>
</message>
@@ -7182,7 +8378,7 @@ Class: %2</source>
<context>
<name>qdesigner_internal::TableWidgetTaskMenu</name>
<message>
- <location filename="../tools/designer/src/components/taskmenu/tablewidget_taskmenu.cpp" line="38"/>
+ <location filename="../tools/designer/src/components/taskmenu/tablewidget_taskmenu.cpp" line="+68"/>
<source>Edit Items...</source>
<translation>編輯項目...</translation>
</message>
@@ -7190,18 +8386,22 @@ Class: %2</source>
<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>è«‹é¸æ“‡è¦å„²å­˜æ¨£æœ¬çš„目錄</translation>
</message>
<message>
+ <location filename="../tools/designer/src/components/formeditor/templateoptionspage.ui"/>
<source>Form</source>
<translation>表單</translation>
</message>
<message>
+ <location/>
<source>Additional Template Paths</source>
<translation>é¡å¤–樣本路徑</translation>
</message>
<message>
+ <location/>
<source>...</source>
<translation>...</translation>
</message>
@@ -7209,19 +8409,22 @@ Class: %2</source>
<context>
<name>qdesigner_internal::TextEditTaskMenu</name>
<message>
- <location filename="../tools/designer/src/components/taskmenu/textedit_taskmenu.cpp" line="33"/>
+ <location filename="../tools/designer/src/components/taskmenu/textedit_taskmenu.cpp" line="+63"/>
<source>Change HTML...</source>
<translation>變更 HTML...</translation>
</message>
<message>
+ <location line="-1"/>
<source>Edit HTML</source>
<translation>編輯 HTML</translation>
</message>
<message>
+ <location line="+10"/>
<source>Edit Text</source>
<translation>編輯文字</translation>
</message>
<message>
+ <location line="+1"/>
<source>Change Plain Text...</source>
<translation>變更純文字...</translation>
</message>
@@ -7229,18 +8432,22 @@ Class: %2</source>
<context>
<name>qdesigner_internal::TextEditor</name>
<message>
+ <location filename="../tools/designer/src/components/propertyeditor/designerpropertymanager.cpp" line="-201"/>
<source>Choose Resource...</source>
<translation>é¸æ“‡è³‡æº...</translation>
</message>
<message>
+ <location line="+1"/>
<source>Choose File...</source>
<translation>é¸æ“‡æª”案...</translation>
</message>
<message>
+ <location line="+120"/>
<source>Choose a File</source>
<translation>é¸æ“‡æª”案</translation>
</message>
<message>
+ <location line="-115"/>
<source>...</source>
<translation>...</translation>
</message>
@@ -7248,23 +8455,27 @@ Class: %2</source>
<context>
<name>qdesigner_internal::ToolBarEventFilter</name>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_toolbar.cpp" line="209"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_toolbar.cpp" line="+239"/>
<source>Insert Separator</source>
<translation>æ’入分隔器</translation>
</message>
<message>
+ <location line="-65"/>
<source>Remove action &apos;%1&apos;</source>
<translation>移除動作 %1</translation>
</message>
<message>
+ <location line="+7"/>
<source>Remove Toolbar &apos;%1&apos;</source>
<translation>移除工具列 %1</translation>
</message>
<message>
+ <location line="-28"/>
<source>Insert Separator before &apos;%1&apos;</source>
<translation>在 %1 之å‰æ’入分隔器</translation>
</message>
<message>
+ <location line="+9"/>
<source>Append Separator</source>
<translation>附加分隔器</translation>
</message>
@@ -7279,27 +8490,34 @@ Class: %2</source>
<context>
<name>qdesigner_internal::TreeWidgetEditor</name>
<message>
- <location filename="../tools/designer/src/components/taskmenu/treewidgeteditor.cpp" line="50"/>
+ <location filename="../tools/designer/src/components/taskmenu/treewidgeteditor.cpp" line="+80"/>
<source>&amp;Columns</source>
<translation>欄(&amp;C)</translation>
</message>
<message>
+ <location line="+69"/>
<source>Per column properties</source>
<translation>æ¯æ¬„屬性</translation>
</message>
<message>
+ <location line="+1"/>
<source>Common properties</source>
<translation>å…±åŒå±¬æ€§</translation>
</message>
<message>
+ <location line="+53"/>
+ <location filename="../tools/designer/src/components/taskmenu/treewidgeteditor.ui"/>
<source>New Item</source>
<translation>新增項目</translation>
</message>
<message>
+ <location line="+194"/>
<source>Properties &amp;&lt;&lt;</source>
<translation>屬性 &amp;&lt;&lt;</translation>
</message>
<message>
+ <location line="+2"/>
+ <location filename="../tools/designer/src/components/taskmenu/treewidgeteditor.ui"/>
<source>Properties &amp;&gt;&gt;</source>
<translation>屬性 &amp;&gt;&gt;</translation>
</message>
@@ -7308,18 +8526,22 @@ Class: %2</source>
<translation type="obsolete">新增å­é …ç›®</translation>
</message>
<message>
+ <location line="-327"/>
<source>New Column</source>
<translation>新增欄ä½</translation>
</message>
<message>
+ <location filename="../tools/designer/src/components/taskmenu/treewidgeteditor.ui"/>
<source>Edit Tree Widget</source>
<translation>編輯樹狀圖元件</translation>
</message>
<message>
+ <location/>
<source>&amp;Items</source>
<translation>é …ç›®(&amp;I)</translation>
</message>
<message>
+ <location/>
<source>Tree Items</source>
<translation>樹狀圖項目</translation>
</message>
@@ -7352,14 +8574,18 @@ Class: %2</source>
<translation type="obsolete">新增項目(&amp;N)</translation>
</message>
<message>
+ <location filename="../tools/designer/src/components/taskmenu/treewidgeteditor.cpp" line="+150"/>
+ <location filename="../tools/designer/src/components/taskmenu/treewidgeteditor.ui"/>
<source>New Subitem</source>
<translation>新增å­é …ç›®</translation>
</message>
<message>
+ <location filename="../tools/designer/src/components/taskmenu/treewidgeteditor.ui"/>
<source>New &amp;Subitem</source>
<translation>新增å­é …ç›®(&amp;S)</translation>
</message>
<message>
+ <location/>
<source>Delete Item</source>
<translation>刪除項目</translation>
</message>
@@ -7368,34 +8594,42 @@ Class: %2</source>
<translation type="obsolete">刪除項目(&amp;D)</translation>
</message>
<message>
+ <location/>
<source>Move Item Left (before Parent Item)</source>
<translation>將項目左移(在父項目之å‰ï¼‰</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>將項目å³ç§»ï¼ˆç§»åˆ°å³é„°é …目的第一個å­é …目)</translation>
</message>
<message>
+ <location/>
<source>R</source>
<translation>R</translation>
</message>
<message>
+ <location/>
<source>Move Item Up</source>
<translation>將項目上移</translation>
</message>
<message>
+ <location/>
<source>U</source>
<translation>U</translation>
</message>
<message>
+ <location/>
<source>Move Item Down</source>
<translation>將項目下移</translation>
</message>
<message>
+ <location/>
<source>D</source>
<translation>D</translation>
</message>
@@ -7448,14 +8682,17 @@ Class: %2</source>
<translation type="obsolete">樹狀圖欄ä½</translation>
</message>
<message>
+ <location/>
<source>1</source>
<translation>1</translation>
</message>
<message>
+ <location/>
<source>&amp;New</source>
<translation>新增(&amp;N)</translation>
</message>
<message>
+ <location/>
<source>&amp;Delete</source>
<translation>刪除(&amp;D)</translation>
</message>
@@ -7467,7 +8704,7 @@ Class: %2</source>
<context>
<name>qdesigner_internal::TreeWidgetTaskMenu</name>
<message>
- <location filename="../tools/designer/src/components/taskmenu/treewidget_taskmenu.cpp" line="37"/>
+ <location filename="../tools/designer/src/components/taskmenu/treewidget_taskmenu.cpp" line="+67"/>
<source>Edit Items...</source>
<translation>編輯項目...</translation>
</message>
@@ -7475,7 +8712,7 @@ Class: %2</source>
<context>
<name>qdesigner_internal::WidgetBox</name>
<message>
- <location filename="../tools/designer/src/components/widgetbox/widgetbox_dnditem.cpp" line="83"/>
+ <location filename="../tools/designer/src/components/widgetbox/widgetbox_dnditem.cpp" line="+113"/>
<source>Warning: Widget creation failed in the widget box. This could be caused by invalid custom widget XML.</source>
<translation>警告:在元件盒內建立元件失敗。å¯èƒ½æ˜¯ä¸åˆæ³•çš„自訂元件 XML 造æˆçš„。</translation>
</message>
@@ -7510,34 +8747,42 @@ Class: %2</source>
<context>
<name>qdesigner_internal::WidgetBoxTreeWidget</name>
<message>
+ <location filename="../tools/designer/src/components/widgetbox/widgetboxtreewidget.cpp" line="-268"/>
<source>Scratchpad</source>
<translation>æš«å­˜</translation>
</message>
<message>
+ <location line="+370"/>
<source>Custom Widgets</source>
<translation>自訂元件</translation>
</message>
<message>
+ <location line="+260"/>
<source>Expand all</source>
<translation>全部展開</translation>
</message>
<message>
+ <location line="+1"/>
<source>Collapse all</source>
<translation>全部折疊</translation>
</message>
<message>
+ <location line="+3"/>
<source>List View</source>
<translation>列表檢視</translation>
</message>
<message>
+ <location line="+1"/>
<source>Icon View</source>
<translation>圖示檢視</translation>
</message>
<message>
+ <location line="+15"/>
<source>Remove</source>
<translation>移除</translation>
</message>
<message>
+ <location line="+2"/>
<source>Edit name</source>
<translation>編輯å稱</translation>
</message>
@@ -7545,6 +8790,7 @@ Class: %2</source>
<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>類別å稱為 %1 的自訂元件外掛程å¼æ‰¾åˆ°äº†ç›¸åŒå稱的類別。</translation>
</message>
@@ -7552,7 +8798,7 @@ Class: %2</source>
<context>
<name>qdesigner_internal::WidgetEditorTool</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/tool_widgeteditor.cpp" line="41"/>
+ <location filename="../tools/designer/src/components/formeditor/tool_widgeteditor.cpp" line="+71"/>
<source>Edit Widgets</source>
<translation>編輯元件</translation>
</message>
@@ -7560,29 +8806,34 @@ Class: %2</source>
<context>
<name>qdesigner_internal::WidgetFactory</name>
<message>
- <location filename="../tools/designer/src/lib/shared/widgetfactory.cpp" line="237"/>
+ <location filename="../tools/designer/src/lib/shared/widgetfactory.cpp" line="+267"/>
<source>The custom widget factory registered for widgets of class %1 returned 0.</source>
<translation>類別 %1 的元件的自訂元件工廠註冊時傳回值 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>當使用類別 %1 的元件所註冊的自訂元件工廠建立元件時,發生類別å稱ä¸ç›¸ç¬¦çš„錯誤。它傳回的元件為類別 %2 的元件。</translation>
</message>
<message>
+ <location line="+99"/>
<source>%1 Widget</source>
<translation>%1 元件</translation>
</message>
<message>
+ <location line="+90"/>
<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>在建立佈局時,容器 %1(%2)裡目å‰çš„é é¢ç„¡æ³•è¢«æ±ºå®šã€‚這表示介é¢æª”中å¯èƒ½æœ‰ä¸ç›¸ç¬¦çš„情æ³ã€‚å¯èƒ½åœ¨å®¹å™¨å…ƒä»¶è£¡å·²ç¶“建構了一個佈局。</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>您試圖將一個佈局新增到元件 %1(%2)中,但該元件已經有一個型態為 %3 的未管ç†ä½ˆå±€ã€‚
這表示在 ui 檔中有發生ä¸ä¸€è‡´çš„情æ³ã€‚</translation>
</message>
<message>
+ <location line="+211"/>
<source>Cannot create style &apos;%1&apos;.</source>
<translation>ç„¡æ³•å»ºç«‹æ¨£å¼ %1。</translation>
</message>
@@ -7590,10 +8841,12 @@ This indicates an inconsistency in the ui-file.</source>
<context>
<name>qdesigner_internal::WizardContainerWidgetTaskMenu</name>
<message>
+ <location filename="../tools/designer/src/components/taskmenu/containerwidget_taskmenu.cpp" line="-49"/>
<source>Next</source>
<translation>下一個</translation>
</message>
<message>
+ <location line="+1"/>
<source>Back</source>
<translation>返回</translation>
</message>
@@ -7601,8 +8854,9 @@ This indicates an inconsistency in the ui-file.</source>
<context>
<name>qdesigner_internal::ZoomMenu</name>
<message>
- <location filename="../tools/designer/src/lib/shared/zoomwidget.cpp" line="54"/>
+ <location filename="../tools/designer/src/lib/shared/zoomwidget.cpp" line="+84"/>
<source>%1 %</source>
+ <extracomment>Zoom factor</extracomment>
<translation>%1 %</translation>
</message>
</context>
diff --git a/translations/linguist_de.qm b/translations/linguist_de.qm
index f411122..a39c3bf 100644
--- a/translations/linguist_de.qm
+++ b/translations/linguist_de.qm
Binary files differ
diff --git a/translations/linguist_de.ts b/translations/linguist_de.ts
index 925b6c2..cb8e4d2 100644
--- a/translations/linguist_de.ts
+++ b/translations/linguist_de.ts
@@ -1,12 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS><TS version="2.0" language="de">
-<defaultcodec></defaultcodec>
+<!DOCTYPE TS>
+<TS version="2.0" language="de">
<context>
<name></name>
<message>
- <location filename="../tools/linguist/linguist/phrasebookbox.cpp" line="+29"/>
+ <location filename="../tools/linguist/linguist/phrasebookbox.cpp" line="+59"/>
<source>(New Entry)</source>
- <translation type="unfinished"></translation>
+ <translation>(Neuer Eintrag)</translation>
</message>
</context>
<context>
@@ -19,7 +19,7 @@
<context>
<name>AboutDialog</name>
<message>
- <location filename="../tools/linguist/linguist/mainwindow.cpp" line="+1318"/>
+ <location filename="../tools/linguist/linguist/mainwindow.cpp" line="+1357"/>
<source>Qt Linguist</source>
<translation>QT Linguist</translation>
</message>
@@ -27,9 +27,9 @@
<context>
<name>BatchTranslationDialog</name>
<message>
- <location filename="../tools/linguist/linguist/batchtranslationdialog.cpp" line="+49"/>
+ <location filename="../tools/linguist/linguist/batchtranslationdialog.cpp" line="+79"/>
<source>Batch Translation of &apos;%1&apos; - Qt Linguist</source>
- <translation type="unfinished"></translation>
+ <translation>Automatische Ãœbersetzung von &apos;%1&apos; - Qt Linguist</translation>
</message>
<message>
<location line="+37"/>
@@ -57,90 +57,102 @@
<message>
<location filename="../tools/linguist/linguist/batchtranslation.ui"/>
<source>Qt Linguist - Batch Translation</source>
- <translation type="unfinished">Qt Linguist - Automatische Ãœbersetzung</translation>
+ <translation>Qt Linguist - Automatische Ãœbersetzung</translation>
</message>
<message>
<location/>
<source>Options</source>
- <translation type="unfinished">Optionen</translation>
+ <translation>Optionen</translation>
</message>
<message>
<location/>
<source>Set translated entries to finished</source>
- <translation type="unfinished">Markiere Ãœbersetzung als erledigt</translation>
+ <translation>Markiere Ãœbersetzung als erledigt</translation>
</message>
<message>
<location/>
<source>Retranslate entries with existing translation</source>
- <translation type="unfinished"></translation>
+ <translation>Einträge mit bereits existierender Übersetzung neu übersetzen</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 type="unfinished"></translation>
+ <translation>Beachten Sie, dass die geänderten Einträge in den Status &apos;unerledigt&apos; zurückgesetzt werden, wenn &apos;Markiere Übersetzung als erledigt&apos; deaktiviert ist.</translation>
</message>
<message>
<location/>
<source>Translate also finished entries</source>
- <translation type="unfinished"></translation>
+ <translation>Erledigte Einträge übersetzen</translation>
</message>
<message>
<location/>
<source>Phrase book preference</source>
- <translation type="unfinished">Wörterbücher</translation>
+ <translation>Wörterbücher</translation>
</message>
<message>
<location/>
<source>Move up</source>
- <translation type="unfinished">Nach oben</translation>
+ <translation>Nach oben</translation>
</message>
<message>
<location/>
<source>Move down</source>
- <translation type="unfinished">Nach unten</translation>
+ <translation>Nach unten</translation>
</message>
<message>
<location/>
<source>The batch translator will search through the selected phrase books in the order given above.</source>
- <translation type="unfinished"></translation>
+ <translation>Der automatische Übersetzer wird in der angegebenen Reihenfolge durch die ausgewählten Wörterbücher gehen.</translation>
</message>
<message>
<location/>
<source>&amp;Run</source>
- <translation type="unfinished">&amp;Ausführen</translation>
+ <translation>&amp;Ausführen</translation>
</message>
<message>
<location/>
<source>Cancel</source>
- <translation type="unfinished">Abbrechen</translation>
+ <translation>Abbrechen</translation>
</message>
</context>
<context>
<name>DataModel</name>
<message>
- <location filename="../tools/linguist/linguist/messagemodel.cpp" line="+184"/>
+ <location filename="../tools/linguist/linguist/messagemodel.cpp" line="+214"/>
<source>&lt;qt&gt;Duplicate messages found in &apos;%1&apos;:</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;qt&gt;Mehrfach vorhandene Meldungen in &apos;%1&apos;:</translation>
</message>
<message>
<location line="+4"/>
<source>&lt;p&gt;[more duplicates omitted]</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;p&gt;[weitere mehrfach vorhandene Nachrichten weggelassen]</translation>
</message>
<message>
<location line="+3"/>
<source>&lt;p&gt;* Context: %1&lt;br&gt;* Source: %2</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;p&gt;* Kontext: %1&lt;br&gt;* Quelle: %2</translation>
</message>
<message>
<location line="+3"/>
<source>&lt;br&gt;* Comment: %3</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;br&gt;* Kommentar: %3</translation>
</message>
<message>
- <location line="+121"/>
+ <location line="+70"/>
+ <source>Linguist does not know the plural rules for &apos;%1&apos;.
+Will assume a single universal form.</source>
+ <translation>Die Regeln zur Pluralbildung der Sprache &apos;%1&apos; sind in Linguist nicht definiert.
+Es wird mit einer einfachen Universalform gearbeitet.</translation>
+ </message>
+ <message>
+ <location line="+56"/>
<source>Cannot create &apos;%2&apos;: %1</source>
- <translation type="unfinished"></translation>
+ <translation>&apos;%2&apos; kann nicht erzeugt werden: %1</translation>
+ </message>
+ <message>
+ <location line="+56"/>
+ <source>Universal Form</source>
+ <translation>Universalform</translation>
</message>
</context>
<context>
@@ -201,7 +213,7 @@
<context>
<name>ErrorsView</name>
<message>
- <location filename="../tools/linguist/linguist/errorsview.cpp" line="+46"/>
+ <location filename="../tools/linguist/linguist/errorsview.cpp" line="+76"/>
<source>Accelerator possibly superfluous in translation.</source>
<translation>Zusätzliche Kurztaste im Übersetzungstext.</translation>
</message>
@@ -228,7 +240,7 @@
<message>
<location line="+3"/>
<source>Translation does not contain the necessary %n place marker.</source>
- <translation type="unfinished"></translation>
+ <translation>Der erforderliche Platzhalter (%n) fehlt in der Ãœbersetzung.</translation>
</message>
<message>
<location line="+3"/>
@@ -300,37 +312,37 @@
<message>
<location/>
<source>Find</source>
- <translation type="unfinished"></translation>
+ <translation>Suchen</translation>
</message>
<message>
<location/>
<source>&amp;Find what:</source>
- <translation type="unfinished"></translation>
+ <translation>&amp;Suchmuster:</translation>
</message>
<message>
<location/>
<source>&amp;Source texts</source>
- <translation type="unfinished"></translation>
+ <translation>&amp;Quelltexte</translation>
</message>
<message>
<location/>
<source>&amp;Translations</source>
- <translation type="unfinished"></translation>
+ <translation>&amp;Ãœbersetzungen</translation>
</message>
<message>
<location/>
<source>&amp;Match case</source>
- <translation type="unfinished"></translation>
+ <translation>&amp;Groß-/Kleinschreibung beachten</translation>
</message>
<message>
<location/>
<source>&amp;Comments</source>
- <translation type="unfinished"></translation>
+ <translation>&amp;Kommentare</translation>
</message>
<message>
<location/>
<source>Ignore &amp;accelerators</source>
- <translation type="unfinished"></translation>
+ <translation>Tastenkürzel &amp;ignorieren</translation>
</message>
<message>
<location/>
@@ -373,7 +385,7 @@
<context>
<name>LRelease</name>
<message numerus="yes">
- <location filename="../tools/linguist/shared/qm.cpp" line="+653"/>
+ <location filename="../tools/linguist/shared/qm.cpp" line="+715"/>
<source> Generated %n translation(s) (%1 finished and %2 unfinished)
</source>
<translation>
@@ -601,102 +613,102 @@ p, li { white-space: pre-wrap; }
<message>
<location/>
<source>Previous unfinished item.</source>
- <translation type="unfinished"></translation>
+ <translation>Vorherige Unerledigte</translation>
</message>
<message>
<location/>
<source>Move to the previous unfinished item.</source>
- <translation type="unfinished"></translation>
+ <translation>Gehe zum vorangehenden unerledigten Eintrag.</translation>
</message>
<message>
<location/>
<source>Next unfinished item.</source>
- <translation type="unfinished"></translation>
+ <translation>Nächste Unerledigte</translation>
</message>
<message>
<location/>
<source>Move to the next unfinished item.</source>
- <translation type="unfinished"></translation>
+ <translation>Gehe zum nächsten unerledigten Eintrag.</translation>
</message>
<message>
<location/>
<source>Move to previous item.</source>
- <translation type="unfinished"></translation>
+ <translation>Gehe zum vorigen Eintrag.</translation>
</message>
<message>
<location/>
<source>Move to the previous item.</source>
- <translation type="unfinished"></translation>
+ <translation>Gehe zum vorigen Eintrag.</translation>
</message>
<message>
<location/>
<source>Next item.</source>
- <translation type="unfinished"></translation>
+ <translation>Nächster EIntrag.</translation>
</message>
<message>
<location/>
<source>Move to the next item.</source>
- <translation type="unfinished"></translation>
+ <translation>Gehe zum nächsten Eintrag.</translation>
</message>
<message>
<location/>
<source>Mark item as done and move to the next unfinished item.</source>
- <translation type="unfinished"></translation>
+ <translation>Markiere Eintrag als erledigt und gehe zum nächsten unerledigten Eintrag.</translation>
</message>
<message>
<location/>
<source>Mark this item as done and move to the next unfinished item.</source>
- <translation type="unfinished"></translation>
+ <translation>Markiert diesen Eintrag als erledigt und geht zum nächsten unerledigten Eintrag.</translation>
</message>
<message>
<location/>
<source>Copy from source text</source>
- <translation type="unfinished"></translation>
+ <translation>Ãœbernehme &amp;Ursprungstext</translation>
</message>
<message>
<location/>
<source>Toggle the validity check of accelerators.</source>
- <translation type="unfinished"></translation>
+ <translation>Schalte Prüfung der Tastenkürzel um.</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 type="unfinished"></translation>
+ <translation>Schalte Prüfung der Tastenkürzel um; das heisst, die Übereinstimmung der kaufmännischen Und-Zeichen in Quelle und Übersetzung. Bei Fehlschlag wird eine Warnung im Hinweis-Fenster angezeigt.</translation>
</message>
<message>
<location/>
<source>Toggle the validity check of ending punctuation.</source>
- <translation type="unfinished"></translation>
+ <translation>Schalte Prüfung der Satzendezeichen am Ende des Textes um.</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 type="unfinished"></translation>
+ <translation>Schaltet die Prüfung der Satzendezeichen am Ende des Textes um. Bei Fehlschlag wird eine Warnung im Hinweis-Fenster angezeigt.</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 type="unfinished"></translation>
+ <translation>Schaltet die Prüfung der Verwendung der Wörterbuchvorschläge um. Bei Fehlschlag wird eine Warnung im Hinweis-Fenster angezeigt.</translation>
</message>
<message>
<location/>
<source>Toggle the validity check of place markers.</source>
- <translation type="unfinished"></translation>
+ <translation>Schaltet die Prüfung der Platzhalter um.</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 type="unfinished"></translation>
+ <translation>Schaltet die Prüfung der Platzhalter um; das heisst, ob %1, %2,... in Quelltext und Übersetzung übereinstimmend verwendet werden. Bei Fehlschlag wird eine Warnung im Hinweis-Fenster angezeigt.</translation>
</message>
<message>
<location/>
<source>Open Read-O&amp;nly...</source>
- <translation type="unfinished"></translation>
+ <translation>Schr&amp;eibgeschützt öffnen...</translation>
</message>
<message>
<location/>
<source>&amp;Save All</source>
- <translation type="unfinished"></translation>
+ <translation>&amp;Alles Speichern</translation>
</message>
<message>
<location/>
@@ -756,22 +768,22 @@ p, li { white-space: pre-wrap; }
<message>
<location/>
<source>Recently Opened &amp;Files</source>
- <translation type="unfinished"></translation>
+ <translation>Zu&amp;letzt bearbeitete Dateien</translation>
</message>
<message>
<location/>
<source>Save</source>
- <translation type="unfinished"></translation>
+ <translation>Speichern</translation>
</message>
<message>
<location/>
<source>Print a list of all the translation units in the current translation source file.</source>
- <translation type="unfinished"></translation>
+ <translation>Liste aller Ãœbersetzungseinheiten in der aktuellen Ãœbersetzungsdatei drucken.</translation>
</message>
<message>
<location/>
<source>Undo the last editing operation performed on the current translation.</source>
- <translation type="unfinished"></translation>
+ <translation>Mache die letzte Änderung an der Übersetzung rückgängig.</translation>
</message>
<message>
<location/>
@@ -891,12 +903,12 @@ p, li { white-space: pre-wrap; }
<message>
<location/>
<source>Close</source>
- <translation type="unfinished">Schließen</translation>
+ <translation>Schließen</translation>
</message>
<message>
<location/>
<source>&amp;Close All</source>
- <translation type="unfinished"></translation>
+ <translation>A&amp;lle schließen</translation>
</message>
<message>
<location/>
@@ -922,9 +934,8 @@ p, li { white-space: pre-wrap; }
<translation type="obsolete">Gehe zum nächsten unerledigten Eintrag.</translation>
</message>
<message>
- <location/>
<source>Ctrl+L</source>
- <translation>Ctrl+L</translation>
+ <translation type="obsolete">Ctrl+L</translation>
</message>
<message>
<location/>
@@ -950,9 +961,8 @@ p, li { white-space: pre-wrap; }
<translation type="obsolete">Gehe zum nächsten Eintrag.</translation>
</message>
<message>
- <location/>
<source>Ctrl+Shift+L</source>
- <translation>Ctrl+Shift+L</translation>
+ <translation type="obsolete">Ctrl+Shift+L</translation>
</message>
<message>
<location/>
@@ -1153,57 +1163,57 @@ p, li { white-space: pre-wrap; }
<translation>Eryeuge eine Qt Nachrichtendatei aus der aktuellen Ãœbersetzungsdatei. Der Dateiname wird automatisch aus dem Namen der .ts Datei abgeleitet.</translation>
</message>
<message>
- <location filename="../tools/linguist/linguist/mainwindow.cpp" line="-1965"/>
+ <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="+165"/>
+ <location line="+195"/>
<source>Source text</source>
- <translation type="unfinished">Ursprungstext</translation>
+ <translation>Ursprungstext</translation>
</message>
<message>
<location line="+1"/>
<location line="+25"/>
<source>Index</source>
- <translation type="unfinished">Index</translation>
+ <translation>Index</translation>
</message>
<message>
<location line="-2"/>
<location line="+61"/>
<source>Context</source>
- <translation type="unfinished">Kontext</translation>
+ <translation>Kontext</translation>
</message>
<message>
<location line="-60"/>
<source>Items</source>
- <translation type="unfinished">Einträge</translation>
+ <translation>Einträge</translation>
</message>
<message>
<location line="+77"/>
<source>This panel lists the source contexts.</source>
- <translation type="unfinished">Dieser Bereich zeigt die Kontexte an.</translation>
+ <translation>Dieser Bereich zeigt die Kontexte an.</translation>
</message>
<message>
<location line="+15"/>
<source>Strings</source>
- <translation type="unfinished">Zeichenketten</translation>
+ <translation>Zeichenketten</translation>
</message>
<message>
<location line="+39"/>
<source>Phrases and guesses</source>
- <translation type="unfinished">Wörterbuch und Vorschläge</translation>
+ <translation>Wörterbuch und Vorschläge</translation>
</message>
<message>
<location line="+10"/>
<source>Sources and Forms</source>
- <translation type="unfinished"></translation>
+ <translation>Quelldateien und Formulare</translation>
</message>
<message>
<location line="+15"/>
<source>Warnings</source>
- <translation type="unfinished">Warnungen</translation>
+ <translation>Hinweise</translation>
</message>
<message>
<location line="+59"/>
@@ -1212,127 +1222,131 @@ p, li { white-space: pre-wrap; }
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+124"/>
+ <location line="+125"/>
<source>Loading...</source>
- <translation type="unfinished">Lade...</translation>
+ <translation>Lade...</translation>
</message>
<message>
+ <location line="+32"/>
<location line="+22"/>
- <location line="+20"/>
<source>Loading File - Qt Linguist</source>
- <translation type="unfinished"></translation>
+ <translation>Laden - Qt Linguist</translation>
</message>
<message>
- <location line="-19"/>
+ <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 type="unfinished"></translation>
+ <translation>Die Datei &apos;%1&apos; scheint nicht zu den bereits geöffneten Dateien &apos;%2&apos; zu passen.
+
+Sollen die bereits geöffneten Dateien vorher geschlossen werden?</translation>
</message>
<message>
- <location line="+20"/>
+ <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 type="unfinished"></translation>
+ <translation>Die Datei &apos;%1&apos; scheint nicht zu der Datei &apos;%2&apos; zu passen, die ebenfalls geladen wird.
+
+Soll die erstgenannte Datei übersprungen werden?</translation>
</message>
<message numerus="yes">
- <location line="+49"/>
+ <location line="+61"/>
<source>%n translation unit(s) loaded.</source>
- <translation type="unfinished">
- <numerusform></numerusform>
- <numerusform></numerusform>
+ <translation>
+ <numerusform>Eine Ãœbersetzungseinheit geladen.</numerusform>
+ <numerusform>%n Ãœbersetzungseinheiten geladen.</numerusform>
</translation>
</message>
<message>
- <location line="+92"/>
+ <location line="+93"/>
<source>Related files (%1);;</source>
- <translation type="unfinished"></translation>
+ <translation>Verwandte Dateien (%1);;</translation>
</message>
<message>
<location line="+4"/>
<source>Open Translation Files</source>
- <translation type="unfinished"></translation>
+ <translation>Übersetzungsdateien öffnen</translation>
</message>
<message>
- <location line="+9"/>
- <location line="+30"/>
+ <location line="+10"/>
+ <location line="+31"/>
<source>File saved.</source>
- <translation type="unfinished">Datei gespeichert.</translation>
+ <translation>Datei gespeichert.</translation>
</message>
<message>
- <location line="+14"/>
- <location line="+1184"/>
+ <location line="+15"/>
+ <location line="+1164"/>
<location filename="../tools/linguist/linguist/mainwindow.ui"/>
<source>Release</source>
- <translation type="unfinished">Freigeben</translation>
+ <translation>Freigeben</translation>
</message>
<message>
- <location line="-1183"/>
+ <location line="-1163"/>
<source>Qt message files for released applications (*.qm)
All files (*)</source>
- <translation type="unfinished">Qt Nachrichtendateien (*.qm)
+ <translation>Qt Nachrichtendateien (*.qm)
Alle Dateien (*)</translation>
</message>
<message>
<location line="+3"/>
<location line="+12"/>
<source>File created.</source>
- <translation type="unfinished">Datei erzeugt.</translation>
+ <translation>Datei erzeugt.</translation>
</message>
<message>
<location line="+27"/>
<location line="+355"/>
<source>Printing...</source>
- <translation type="unfinished">Drucke...</translation>
+ <translation>Drucke...</translation>
</message>
<message>
<location line="-347"/>
<source>Context: %1</source>
- <translation type="unfinished">Kontext: %1</translation>
+ <translation>Kontext: %1</translation>
</message>
<message>
<location line="+32"/>
<source>finished</source>
- <translation type="unfinished">erledigt</translation>
+ <translation>erledigt</translation>
</message>
<message>
<location line="+3"/>
<source>unresolved</source>
- <translation type="unfinished">ungelöst</translation>
+ <translation>ungelöst</translation>
</message>
<message>
<location line="+3"/>
<source>obsolete</source>
- <translation type="unfinished">veraltet</translation>
+ <translation>veraltet</translation>
</message>
<message>
<location line="+15"/>
<location line="+307"/>
<source>Printing... (page %1)</source>
- <translation type="unfinished">Drucke... (Seite %1)</translation>
+ <translation>Drucke... (Seite %1)</translation>
</message>
<message>
<location line="-300"/>
<location line="+307"/>
<source>Printing completed</source>
- <translation type="unfinished">Drucken beendet</translation>
+ <translation>Drucken beendet</translation>
</message>
<message>
<location line="-305"/>
<location line="+307"/>
<source>Printing aborted</source>
- <translation type="unfinished">Drucken abgebrochen</translation>
+ <translation>Drucken abgebrochen</translation>
</message>
<message>
<location line="-232"/>
<source>Search wrapped.</source>
- <translation type="unfinished">Suche beginnt von oben.</translation>
+ <translation>Suche beginnt von oben.</translation>
</message>
<message>
<location line="+17"/>
<location line="+278"/>
- <location line="+60"/>
+ <location line="+40"/>
<location line="+24"/>
<location line="+22"/>
<location line="+516"/>
@@ -1344,10 +1358,10 @@ Alle Dateien (*)</translation>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-1224"/>
+ <location line="-1204"/>
<location line="+102"/>
<source>Cannot find the string &apos;%1&apos;.</source>
- <translation type="unfinished">Kann Zeichenkette &apos;%1&apos; nicht finden.</translation>
+ <translation>Kann Zeichenkette &apos;%1&apos; nicht finden.</translation>
</message>
<message numerus="yes">
<source>Translated %n entries to &apos;%1&apos;</source>
@@ -1359,59 +1373,59 @@ Alle Dateien (*)</translation>
<message>
<location line="-82"/>
<source>Search And Translate in &apos;%1&apos; - Qt Linguist</source>
- <translation type="unfinished"></translation>
+ <translation>Suchen und übersetzen &apos;%1&apos; - Qt Linguist</translation>
</message>
<message>
<location line="+34"/>
<location line="+23"/>
<location line="+24"/>
<source>Translate - Qt Linguist</source>
- <translation type="unfinished"></translation>
+ <translation>Ãœbersetzung - Qt Linguist</translation>
</message>
<message numerus="yes">
<location line="-46"/>
<source>Translated %n entry(s)</source>
- <translation type="unfinished">
- <numerusform></numerusform>
- <numerusform></numerusform>
+ <translation>
+ <numerusform>Ein Eintrag übersetzt</numerusform>
+ <numerusform>%n Einträge übersetzt</numerusform>
</translation>
</message>
<message>
<location line="+23"/>
<source>No more occurrences of &apos;%1&apos;. Start over?</source>
- <translation type="unfinished"></translation>
+ <translation>Keine weiteren Fundstellen von &apos;%1&apos;. Von vorn beginnen?</translation>
</message>
<message>
<location line="+30"/>
<source>Create New Phrase Book</source>
- <translation type="unfinished">Erzeugen eines neuen Wörterbuchs</translation>
+ <translation>Erzeugen eines neuen Wörterbuchs</translation>
</message>
<message>
<location line="+1"/>
<source>Qt phrase books (*.qph)
All files (*)</source>
- <translation type="unfinished">Qt Wörterbücher (*.qph)
+ <translation>Qt Wörterbücher (*.qph)
Alle Dateien (*)</translation>
</message>
<message>
<location line="+11"/>
<source>Phrase book created.</source>
- <translation type="unfinished">Wörterbuch erzeugt.</translation>
+ <translation>Wörterbuch erzeugt.</translation>
</message>
<message>
<location line="+17"/>
<source>Open Phrase Book</source>
- <translation type="unfinished">Öffne Wörterbuch</translation>
+ <translation>Öffne Wörterbuch</translation>
</message>
<message>
<location line="+1"/>
<source>Qt phrase books (*.qph);;All files (*)</source>
- <translation type="unfinished">Qt Wörterbücher (*.qph);;Alle Dateien (*)</translation>
+ <translation>Qt Wörterbücher (*.qph);;Alle Dateien (*)</translation>
</message>
<message numerus="yes">
<location line="+7"/>
<source>%n phrase(s) loaded.</source>
- <translation type="unfinished">
+ <translation>
<numerusform>Ein Wörterbucheintrag geladen.</numerusform>
<numerusform>%n Wörterbucheinträge geladen.</numerusform>
</translation>
@@ -1421,67 +1435,51 @@ Alle Dateien (*)</translation>
<location line="+3"/>
<location line="+7"/>
<source>Add to phrase book</source>
- <translation type="unfinished">Hinzufügen zum Wörterbuch</translation>
+ <translation>Hinzufügen zum Wörterbuch</translation>
</message>
<message>
<location line="-9"/>
<source>No appropriate phrasebook found.</source>
- <translation type="unfinished"></translation>
+ <translation>Es wurde kein geeignetes Wörterbuch gefunden.</translation>
</message>
<message>
<location line="+3"/>
<source>Adding entry to phrasebook %1</source>
- <translation type="unfinished"></translation>
+ <translation>Eintrag zu Wörterbuch %1 hinzufügen</translation>
</message>
<message>
<location line="+7"/>
<source>Select phrase book to add to</source>
- <translation type="unfinished">Zu welchem Wörterbuch soll der Eintrag hinzugefügt werden?</translation>
+ <translation>Zu welchem Wörterbuch soll der Eintrag hinzugefügt werden?</translation>
</message>
<message>
<location line="+29"/>
<source>Unable to launch Qt Assistant (%1)</source>
- <translation type="unfinished">Kann Qt Assistant nicht starten (%1)</translation>
+ <translation>Kann Qt Assistant nicht starten (%1)</translation>
</message>
<message>
<location line="+17"/>
<source>Version %1</source>
- <translation type="unfinished">Version %1</translation>
+ <translation>Version %1</translation>
</message>
<message>
- <location line="+2"/>
<source> Open Source Edition</source>
- <translation type="unfinished">Open Source Edition</translation>
- </message>
- <message>
- <location line="+7"/>
- <source>This version of Qt Linguist is part of the Qt Open Source Edition, for use in the development of Open Source applications. Qt is a comprehensive C++ framework for cross-platform application development.&lt;br/&gt;&lt;br/&gt;You need a commercial Qt license for development of proprietary (closed source) applications. Please see &lt;tt&gt;http://qtsoftware.com/company/model.html&lt;/tt&gt; for an overview of Qt licensing.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location line="+8"/>
- <source>This program is licensed to you under the terms of the Qt %1 License Agreement. For details, see the license file that came with this software distribution.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location line="+4"/>
- <source>This program is licensed to you under the terms of the Qt Commercial License Agreement. For details, see the file LICENSE that came with this software distribution.</source>
- <translation type="unfinished"></translation>
+ <translation type="obsolete">Open Source Edition</translation>
</message>
<message>
- <location line="+5"/>
+ <location line="+6"/>
<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;%2&lt;/p&gt;&lt;p&gt;Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).&lt;/p&gt;&lt;p&gt;The program is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.&lt;/p&gt;</source>
- <translation type="unfinished">&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 ist ein Werkzeug zum Ãœbersetzen von Qt Anwendungen.&lt;/p&gt;&lt;p&gt;%2&lt;/p&gt;&lt;p&gt;Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).&lt;/p&gt;&lt;p&gt;The program is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.&lt;/p&gt;</translation>
+ <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 ist ein Werkzeug zum Ãœbersetzen von Qt Anwendungen.&lt;/p&gt;&lt;p&gt;%2&lt;/p&gt;&lt;p&gt;Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).&lt;/p&gt;&lt;p&gt;The program is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.&lt;/p&gt;</translation>
</message>
<message>
<location line="+41"/>
<source>Do you want to save the modified files?</source>
- <translation type="unfinished"></translation>
+ <translation>Möchten Sie die geänderten Dateien speichern?</translation>
</message>
<message>
<location line="+22"/>
<source>Do you want to save &apos;%1&apos;?</source>
- <translation type="unfinished">Wollen Sie &apos;%1&apos; speichern?</translation>
+ <translation>Möchten Sie &apos;%1&apos; speichern?</translation>
</message>
<message>
<location line="+43"/>
@@ -1497,99 +1495,99 @@ Alle Dateien (*)</translation>
<location line="+267"/>
<location line="+12"/>
<source>No untranslated translation units left.</source>
- <translation type="unfinished"></translation>
+ <translation>Es wurden alle Ãœbersetzungseinheiten abgearbeitet.</translation>
</message>
<message>
<location line="+176"/>
<source>&amp;Window</source>
- <translation type="unfinished">&amp;Fenster</translation>
+ <translation>&amp;Fenster</translation>
</message>
<message>
<location line="+2"/>
<source>Minimize</source>
- <translation type="unfinished">Minimieren</translation>
+ <translation>Minimieren</translation>
</message>
<message>
<location line="+1"/>
<source>Ctrl+M</source>
- <translation type="unfinished">Ctrl+M</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+12"/>
<source>Display the manual for %1.</source>
- <translation type="unfinished">Zeige Handbuch für %1 an.</translation>
+ <translation>Zeige Handbuch für %1 an.</translation>
</message>
<message>
<location line="+1"/>
<source>Display information about %1.</source>
- <translation type="unfinished">Zeige Informationen über %1 an.</translation>
+ <translation>Zeige Informationen über %1 an.</translation>
</message>
<message>
<location line="+70"/>
<source>&amp;Save &apos;%1&apos;</source>
- <translation type="unfinished"></translation>
+ <translation>&apos;%1&apos; &amp;Speichern</translation>
</message>
<message>
<location line="+1"/>
<source>Save &apos;%1&apos; &amp;As...</source>
- <translation type="unfinished"></translation>
+ <translation>Speichere &apos;%1&apos; &amp;unter...</translation>
</message>
<message>
<location line="+1"/>
<source>Release &apos;%1&apos;</source>
- <translation type="unfinished"></translation>
+ <translation>&apos;%1&apos; freigeben</translation>
</message>
<message>
<location line="+1"/>
<source>Release &apos;%1&apos; As...</source>
- <translation type="unfinished"></translation>
+ <translation>Gebe &apos;%1&apos;frei unter ...</translation>
</message>
<message>
<location line="+1"/>
<source>&amp;Close &apos;%1&apos;</source>
- <translation type="unfinished"></translation>
+ <translation>&apos;%1&apos; &amp;Schließen</translation>
</message>
<message>
<location line="+6"/>
<location line="+13"/>
<source>&amp;Close</source>
- <translation type="unfinished">&amp;Schließen</translation>
+ <translation>&amp;Schließen</translation>
</message>
<message>
<location line="-10"/>
<source>Save All</source>
- <translation type="unfinished"></translation>
+ <translation>Alles speichern</translation>
</message>
<message>
<location line="+1"/>
<location filename="../tools/linguist/linguist/mainwindow.ui"/>
<source>&amp;Release All</source>
- <translation type="unfinished"></translation>
+ <translation>Alles f&amp;reigeben</translation>
</message>
<message>
<location line="+1"/>
<source>Close All</source>
- <translation type="unfinished">Alle schließen</translation>
+ <translation>Alle schließen</translation>
</message>
<message>
<location line="+23"/>
<source>Translation File &amp;Settings for &apos;%1&apos;...</source>
- <translation type="unfinished"></translation>
+ <translation>Einstellungen der Übersetzungs&amp;datei für &apos;%1&apos;...</translation>
</message>
<message>
<location line="+1"/>
<source>&amp;Batch Translation of &apos;%1&apos;...</source>
- <translation type="unfinished"></translation>
+ <translation>&amp;Automatische Ãœbersetzung von &apos;%1&apos;...</translation>
</message>
<message>
<location line="+1"/>
<source>Search And &amp;Translate in &apos;%1&apos;...</source>
- <translation type="unfinished"></translation>
+ <translation>Suchen und &amp;Ãœbersetzen in &apos;%1&apos;...</translation>
</message>
<message>
<location line="+4"/>
<source>Search And &amp;Translate...</source>
- <translation type="unfinished"></translation>
+ <translation>Suchen und &amp;Ãœbersetzen...</translation>
</message>
<message>
<location line="+51"/>
@@ -1624,37 +1622,37 @@ Alle Dateien (*)</translation>
<message>
<location line="+84"/>
<source>Cannot read from phrase book &apos;%1&apos;.</source>
- <translation type="unfinished">Kann Wörterbuch &apos;%1&apos; nicht lesen.</translation>
+ <translation>Kann Wörterbuch &apos;%1&apos; nicht lesen.</translation>
</message>
<message>
<location line="+15"/>
<source>Close this phrase book.</source>
- <translation type="unfinished">Schließe dieses Wörterbuch.</translation>
+ <translation>Schließe dieses Wörterbuch.</translation>
</message>
<message>
<location line="+4"/>
<source>Enables you to add, modify, or delete entries in this phrase book.</source>
- <translation type="unfinished"></translation>
+ <translation>Erlaubt das Hinzufügen, Ändern und Entfernen von Einträgen aus dem Wörterbuch.</translation>
</message>
<message>
<location line="+5"/>
<source>Print the entries in this phrase book.</source>
- <translation type="unfinished"></translation>
+ <translation>Drucke die Einträge des Wörterbuchs.</translation>
</message>
<message>
<location line="+16"/>
<source>Cannot create phrase book &apos;%1&apos;.</source>
- <translation type="unfinished">Kann Wörterbuch &apos;%1&apos; nicht erzeugen.</translation>
+ <translation>Kann Wörterbuch &apos;%1&apos; nicht erzeugen.</translation>
</message>
<message>
<location line="+10"/>
<source>Do you want to save phrase book &apos;%1&apos;?</source>
- <translation type="unfinished"></translation>
+ <translation>Möchten Sie das Wörterbuch &apos;%1&apos; speichern?</translation>
</message>
<message>
- <location line="+312"/>
+ <location line="+314"/>
<source>All</source>
- <translation type="unfinished"></translation>
+ <translation>Alle</translation>
</message>
<message>
<location filename="../tools/linguist/linguist/mainwindow.ui"/>
@@ -1672,7 +1670,7 @@ Alle Dateien (*)</translation>
<translation>F5</translation>
</message>
<message>
- <location filename="../tools/linguist/linguist/mainwindow.cpp" line="-525"/>
+ <location filename="../tools/linguist/linguist/mainwindow.cpp" line="-527"/>
<location filename="../tools/linguist/linguist/mainwindow.ui"/>
<source>Translation File &amp;Settings...</source>
<translation>E&amp;instellungen...</translation>
@@ -1695,33 +1693,43 @@ Alle Dateien (*)</translation>
<source>Ctrl+T</source>
<translation>Ctrl+T</translation>
</message>
+ <message>
+ <location/>
+ <source>Ctrl+J</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location/>
+ <source>Ctrl+Shift+J</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>MessageEditor</name>
<message>
- <location filename="../tools/linguist/linguist/messageeditor.cpp" line="+42"/>
+ <location filename="../tools/linguist/linguist/messageeditor.cpp" line="+72"/>
<source>German</source>
- <translation type="unfinished">Deutsch</translation>
+ <translation>Deutsch</translation>
</message>
<message>
<location line="+1"/>
<source>Japanese</source>
- <translation type="unfinished">Japanisch</translation>
+ <translation>Japanisch</translation>
</message>
<message>
<location line="+1"/>
<source>French</source>
- <translation type="unfinished">Französisch</translation>
+ <translation>Französisch</translation>
</message>
<message>
<location line="+1"/>
<source>Polish</source>
- <translation type="unfinished">Polnisch</translation>
+ <translation>Polnisch</translation>
</message>
<message>
<location line="+1"/>
<source>Chinese</source>
- <translation type="unfinished">Chinesisch</translation>
+ <translation>Chinesisch</translation>
</message>
<message>
<location line="+50"/>
@@ -1729,59 +1737,59 @@ Alle Dateien (*)</translation>
<translation>Dieser Bereich erlaubt die Darstellung und Änderung der Übersetzung eines Textes.</translation>
</message>
<message>
- <location line="+25"/>
+ <location line="+18"/>
<source>Source text</source>
- <translation type="unfinished">Ursprungstext</translation>
+ <translation>Ursprungstext</translation>
</message>
<message>
<location line="+2"/>
<source>This area shows the source text.</source>
- <translation type="unfinished">Dieser Bereich zeigt den Ursprungstext.</translation>
+ <translation>Dieser Bereich zeigt den Ursprungstext.</translation>
</message>
<message>
<location line="+3"/>
<source>Source text (Plural)</source>
- <translation type="unfinished"></translation>
+ <translation>Ursprungstext (Plural)</translation>
</message>
<message>
<location line="+2"/>
<source>This area shows the plural form of the source text.</source>
- <translation type="unfinished"></translation>
+ <translation>Dieser Bereich zeigt die Pluralform des Ursprungstexts.</translation>
</message>
<message>
<location line="+3"/>
<source>Developer comments</source>
- <translation type="unfinished"></translation>
+ <translation>Hinweise des Entwicklers</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 type="unfinished">Dieser Bereich zeigt eventuelle Kommentare und den Kontext, in dem der Text auftritt.</translation>
+ <translation>Dieser Bereich zeigt eventuelle Kommentare und den Kontext, in dem der Text auftritt.</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 type="unfinished"></translation>
+ <translation>Hier können Sie Hinweise für den eigenen Gebrauch eintragen. Diese haben keinen Einflusse auf die Übersetzung.</translation>
</message>
<message>
<location line="+205"/>
<source>%1 translation (%2)</source>
- <translation type="unfinished">Ãœbersetzung %1 (%2)</translation>
+ <translation>Ãœbersetzung %1 (%2)</translation>
</message>
<message>
<location line="+19"/>
<source>This is where you can enter or modify the translation of the above source text.</source>
- <translation type="unfinished"></translation>
+ <translation>Hier können Sie die Übersetzung des Ursprungstextes eingeben bzw. ändern.</translation>
</message>
<message>
<location line="+5"/>
<source>%1 translation</source>
- <translation type="unfinished">Ãœbersetzung %1</translation>
+ <translation>Ãœbersetzung %1</translation>
</message>
<message>
<location line="+1"/>
<source>%1 translator comments</source>
- <translation type="unfinished"></translation>
+ <translation>%1 Hinweise des Ãœbersetzers</translation>
</message>
<message>
<location line="+138"/>
@@ -1834,24 +1842,24 @@ Zeile: %2</translation>
<translation type="obsolete">Index</translation>
</message>
<message>
- <location filename="../tools/linguist/linguist/messagemodel.cpp" line="+861"/>
+ <location filename="../tools/linguist/linguist/messagemodel.cpp" line="+832"/>
<source>Completion status for %1</source>
- <translation type="unfinished"></translation>
+ <translation>Bearbeitungsstand von %1</translation>
</message>
<message>
<location line="+15"/>
<source>&lt;file header&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;Dateikopf&gt;</translation>
</message>
<message>
<location line="+2"/>
<source>&lt;context comment&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;Kontexthinweis&gt;</translation>
</message>
<message>
<location line="+71"/>
<source>&lt;unnamed context&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;unbenannter Kontext&gt;</translation>
</message>
</context>
<context>
@@ -1864,7 +1872,7 @@ Zeile: %2</translation>
<context>
<name>MsgEdit</name>
<message>
- <location filename="../tools/linguist/linguist/messageeditor.cpp" line="-549"/>
+ <location filename="../tools/linguist/linguist/messageeditor.cpp" line="-572"/>
<source></source>
<comment>This is the right panel of the main window.</comment>
<translation></translation>
@@ -1877,13 +1885,13 @@ Zeile: %2</translation>
<translation type="obsolete">%1 - %2[*]</translation>
</message>
<message>
- <location filename="../tools/linguist/linguist/phrasebookbox.cpp" line="-17"/>
+ <location filename="../tools/linguist/linguist/phrasebookbox.cpp" line="-47"/>
<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="+25"/>
+ <location line="+55"/>
<source>%1[*] - Qt Linguist</source>
<translation type="unfinished"></translation>
</message>
@@ -1909,7 +1917,7 @@ Zeile: %2</translation>
<message>
<location/>
<source>This window allows you to add, modify, or delete entries in a phrase book.</source>
- <translation type="unfinished"></translation>
+ <translation>Dieses Fenster erlaubt das Hinzufügen, Ändern und Entfernen von Einträgen aus dem Wörterbuch.</translation>
</message>
<message>
<location/>
@@ -1949,22 +1957,22 @@ Zeile: %2</translation>
<message>
<location/>
<source>&amp;New Entry</source>
- <translation type="unfinished"></translation>
+ <translation>&amp;Neuer Eintrag</translation>
</message>
<message>
<location/>
<source>Click here to remove the entry from the phrase book.</source>
- <translation type="unfinished"></translation>
+ <translation>Entferne den Eintrag aus dem Wörterbuch.</translation>
</message>
<message>
<location/>
<source>&amp;Remove Entry</source>
- <translation type="unfinished"></translation>
+ <translation>&amp;Entferne Eintrag</translation>
</message>
<message>
<location/>
<source>Settin&amp;gs...</source>
- <translation type="unfinished"></translation>
+ <translation>&amp;Einstellungen...</translation>
</message>
<message>
<source>&amp;New Phrase</source>
@@ -2002,7 +2010,7 @@ Zeile: %2</translation>
<context>
<name>PhraseModel</name>
<message>
- <location filename="../tools/linguist/linguist/phrasemodel.cpp" line="+87"/>
+ <location filename="../tools/linguist/linguist/phrasemodel.cpp" line="+117"/>
<source>Source phrase</source>
<translation>Ursprungstext</translation>
</message>
@@ -2020,7 +2028,7 @@ Zeile: %2</translation>
<context>
<name>PhraseView</name>
<message>
- <location filename="../tools/linguist/linguist/phraseview.cpp" line="+91"/>
+ <location filename="../tools/linguist/linguist/phraseview.cpp" line="+121"/>
<source>Insert</source>
<translation>Einfügen</translation>
</message>
@@ -2048,74 +2056,80 @@ Zeile: %2</translation>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../tools/linguist/linguist/mainwindow.cpp" line="-1296"/>
+ <location filename="../tools/linguist/linguist/mainwindow.cpp" line="-1279"/>
<source>Translation files (%1);;</source>
- <translation type="unfinished"></translation>
+ <translation>Ãœbersetzungsdateien (%1);;</translation>
</message>
<message>
<location line="+5"/>
<source>All files (*)</source>
- <translation type="unfinished"></translation>
+ <translation>Alle Dateien (*)</translation>
</message>
<message>
- <location filename="../tools/linguist/linguist/messagemodel.cpp" line="-1086"/>
+ <location filename="../tools/linguist/linguist/messagemodel.cpp" line="-1118"/>
<location line="+18"/>
- <location line="+101"/>
+ <location line="+67"/>
+ <location line="+39"/>
<location line="+17"/>
<location line="+15"/>
- <location filename="../tools/linguist/linguist/phrase.cpp" line="+166"/>
+ <location filename="../tools/linguist/linguist/phrase.cpp" line="+196"/>
<source>Qt Linguist</source>
<translation>Qt Linguist</translation>
</message>
<message>
- <location filename="../tools/linguist/shared/cpp.cpp" line="+1039"/>
+ <location filename="../tools/linguist/shared/cpp.cpp" line="+1072"/>
<source>C++ source files</source>
- <translation type="unfinished"></translation>
+ <translation>C++-Quelltextdateien&apos;</translation>
</message>
<message>
- <location filename="../tools/linguist/shared/java.cpp" line="+624"/>
+ <location filename="../tools/linguist/shared/java.cpp" line="+646"/>
<source>Java source files</source>
- <translation type="unfinished"></translation>
+ <translation>Java-Quelltextdateien</translation>
</message>
<message>
- <location filename="../tools/linguist/shared/po.cpp" line="+584"/>
+ <location filename="../tools/linguist/shared/po.cpp" line="+651"/>
<source>GNU Gettext localization files</source>
- <translation type="unfinished"></translation>
+ <translation>GNU-Gettext Ãœbersetzungsdateien</translation>
</message>
<message>
- <location filename="../tools/linguist/shared/qscript.cpp" line="+2369"/>
+ <location filename="../tools/linguist/shared/qscript.cpp" line="+2399"/>
<source>Qt Script source files</source>
- <translation type="unfinished"></translation>
+ <translation>Qt-Skript-Quelltextdateien</translation>
</message>
<message>
- <location filename="../tools/linguist/shared/ts.cpp" line="+617"/>
+ <location filename="../tools/linguist/shared/ts.cpp" line="+752"/>
<source>Qt translation sources (format 1.1)</source>
- <translation type="unfinished"></translation>
+ <translation>Qt-Ãœbersetzungsdateien (Formatversion 1.1)</translation>
</message>
<message>
<location line="+8"/>
<source>Qt translation sources (format 2.0)</source>
- <translation type="unfinished"></translation>
+ <translation>Qt-Ãœbersetzungsdateien (Formatversion 2.0)</translation>
</message>
<message>
<location line="+9"/>
- <source>Qt translation sources</source>
- <translation type="unfinished"></translation>
+ <source>Qt translation sources (latest format)</source>
+ <translation>Qt Ãœbersetzungsdateien (aktuelles Format)</translation>
</message>
<message>
- <location filename="../tools/linguist/shared/ui.cpp" line="+171"/>
+ <location filename="../tools/linguist/shared/ui.cpp" line="+213"/>
<source>Qt Designer form files</source>
- <translation type="unfinished"></translation>
+ <translation>Qt Designer Formulardateien</translation>
</message>
<message>
<location line="+9"/>
<source>Qt Jambi form files</source>
- <translation type="unfinished"></translation>
+ <translation>Qt Jambi Formulardateien</translation>
</message>
<message>
- <location filename="../tools/linguist/shared/xliff.cpp" line="+778"/>
+ <location filename="../tools/linguist/shared/xliff.cpp" line="+817"/>
<source>XLIFF localization files</source>
- <translation type="unfinished"></translation>
+ <translation>XLIFF Ãœbersetzungsdateien</translation>
+ </message>
+ <message>
+ <location filename="../tools/linguist/shared/qph.cpp" line="+192"/>
+ <source>Qt Linguist &apos;Phrase Book&apos;</source>
+ <translation>Qt Linguist-Wörterbuch</translation>
</message>
</context>
<context>
@@ -2155,7 +2169,7 @@ Zeile: %2</translation>
<context>
<name>SourceCodeView</name>
<message>
- <location filename="../tools/linguist/linguist/sourcecodeview.cpp" line="+40"/>
+ <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;Quelltext nicht verfügbar&lt;/i&gt;</translation>
</message>
@@ -2214,7 +2228,7 @@ Zeile: %2</translation>
<message>
<location/>
<source>Close</source>
- <translation type="unfinished">Schließen</translation>
+ <translation>Schließen</translation>
</message>
</context>
<context>
@@ -2710,7 +2724,7 @@ Alle Dateien (*)</translation>
<context>
<name>TranslationSettingsDialog</name>
<message>
- <location filename="../tools/linguist/linguist/translationsettingsdialog.cpp" line="+38"/>
+ <location filename="../tools/linguist/linguist/translationsettingsdialog.cpp" line="+68"/>
<source>Any Country</source>
<translation>Land</translation>
</message>
@@ -2718,27 +2732,27 @@ Alle Dateien (*)</translation>
<location line="+11"/>
<location line="+8"/>
<source>Settings for &apos;%1&apos; - Qt Linguist</source>
- <translation type="unfinished"></translation>
+ <translation>Einstellungen für &apos;%1&apos; - Qt Linguist</translation>
</message>
<message>
<location filename="../tools/linguist/linguist/translationsettings.ui"/>
<source>Source language</source>
- <translation type="unfinished"></translation>
+ <translation>Ursprungssprache</translation>
</message>
<message>
<location/>
<source>Language</source>
- <translation type="unfinished">Sprache</translation>
+ <translation>Sprache</translation>
</message>
<message>
<location/>
<source>Country/Region</source>
- <translation type="unfinished">Land/Region</translation>
+ <translation>Land/Region</translation>
</message>
<message>
<location/>
<source>Target language</source>
- <translation type="unfinished">Zielsprache</translation>
+ <translation>Zielsprache</translation>
</message>
</context>
<context>
diff --git a/translations/linguist_fr.ts b/translations/linguist_fr.ts
index ad346bf..b8317b2 100644
--- a/translations/linguist_fr.ts
+++ b/translations/linguist_fr.ts
@@ -1,9 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS><TS version="2.0">
+<!DOCTYPE TS>
+<TS version="2.0">
<context>
<name></name>
<message>
- <location filename="../tools/linguist/linguist/phrasebookbox.cpp" line="+29"/>
+ <location filename="../tools/linguist/linguist/phrasebookbox.cpp" line="+59"/>
<source>(New Entry)</source>
<translation type="unfinished"></translation>
</message>
@@ -11,7 +12,7 @@
<context>
<name>AboutDialog</name>
<message>
- <location filename="../tools/linguist/linguist/mainwindow.cpp" line="+1318"/>
+ <location filename="../tools/linguist/linguist/mainwindow.cpp" line="+1357"/>
<source>Qt Linguist</source>
<translation type="unfinished"></translation>
</message>
@@ -19,7 +20,7 @@
<context>
<name>BatchTranslationDialog</name>
<message>
- <location filename="../tools/linguist/linguist/batchtranslationdialog.cpp" line="+49"/>
+ <location filename="../tools/linguist/linguist/batchtranslationdialog.cpp" line="+79"/>
<source>Batch Translation of &apos;%1&apos; - Qt Linguist</source>
<translation type="unfinished"></translation>
</message>
@@ -109,7 +110,7 @@
<context>
<name>DataModel</name>
<message>
- <location filename="../tools/linguist/linguist/messagemodel.cpp" line="+184"/>
+ <location filename="../tools/linguist/linguist/messagemodel.cpp" line="+214"/>
<source>&lt;qt&gt;Duplicate messages found in &apos;%1&apos;:</source>
<translation type="unfinished"></translation>
</message>
@@ -129,15 +130,26 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+121"/>
+ <location line="+70"/>
+ <source>Linguist does not know the plural rules for &apos;%1&apos;.
+Will assume a single universal form.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+56"/>
<source>Cannot create &apos;%2&apos;: %1</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <location line="+56"/>
+ <source>Universal Form</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>ErrorsView</name>
<message>
- <location filename="../tools/linguist/linguist/errorsview.cpp" line="+46"/>
+ <location filename="../tools/linguist/linguist/errorsview.cpp" line="+76"/>
<source>Accelerator possibly superfluous in translation.</source>
<translation type="unfinished"></translation>
</message>
@@ -274,7 +286,7 @@
<context>
<name>LRelease</name>
<message numerus="yes">
- <location filename="../tools/linguist/shared/qm.cpp" line="+653"/>
+ <location filename="../tools/linguist/shared/qm.cpp" line="+715"/>
<source> Generated %n translation(s) (%1 finished and %2 unfinished)
</source>
<translation type="unfinished">
@@ -707,11 +719,6 @@
</message>
<message>
<location/>
- <source>Ctrl+L</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location/>
<source>P&amp;rev</source>
<translation type="unfinished"></translation>
</message>
@@ -727,11 +734,6 @@
</message>
<message>
<location/>
- <source>Ctrl+Shift+L</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location/>
<source>&amp;Done and Next</source>
<translation type="unfinished"></translation>
</message>
@@ -909,13 +911,13 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../tools/linguist/linguist/mainwindow.cpp" line="-1965"/>
+ <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="+165"/>
+ <location line="+195"/>
<source>Source text</source>
<translation type="unfinished"></translation>
</message>
@@ -968,39 +970,39 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+124"/>
+ <location line="+125"/>
<source>Loading...</source>
<translation type="unfinished"></translation>
</message>
<message>
+ <location line="+32"/>
<location line="+22"/>
- <location line="+20"/>
<source>Loading File - Qt Linguist</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-19"/>
+ <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 type="unfinished"></translation>
</message>
<message>
- <location line="+20"/>
+ <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 type="unfinished"></translation>
</message>
<message numerus="yes">
- <location line="+49"/>
+ <location line="+61"/>
<source>%n translation unit(s) loaded.</source>
<translation type="unfinished">
<numerusform></numerusform>
</translation>
</message>
<message>
- <location line="+92"/>
+ <location line="+93"/>
<source>Related files (%1);;</source>
<translation type="unfinished"></translation>
</message>
@@ -1010,20 +1012,20 @@ Skip loading the first named file?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+9"/>
- <location line="+30"/>
+ <location line="+10"/>
+ <location line="+31"/>
<source>File saved.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+14"/>
- <location line="+1184"/>
+ <location line="+15"/>
+ <location line="+1164"/>
<location filename="../tools/linguist/linguist/mainwindow.ui"/>
<source>Release</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-1183"/>
+ <location line="-1163"/>
<source>Qt message files for released applications (*.qm)
All files (*)</source>
<translation type="unfinished"></translation>
@@ -1086,7 +1088,7 @@ All files (*)</source>
<message>
<location line="+17"/>
<location line="+278"/>
- <location line="+60"/>
+ <location line="+40"/>
<location line="+24"/>
<location line="+22"/>
<location line="+516"/>
@@ -1098,7 +1100,7 @@ All files (*)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-1224"/>
+ <location line="-1204"/>
<location line="+102"/>
<source>Cannot find the string &apos;%1&apos;.</source>
<translation type="unfinished"></translation>
@@ -1193,27 +1195,7 @@ All files (*)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+2"/>
- <source> Open Source Edition</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location line="+7"/>
- <source>This version of Qt Linguist is part of the Qt Open Source Edition, for use in the development of Open Source applications. Qt is a comprehensive C++ framework for cross-platform application development.&lt;br/&gt;&lt;br/&gt;You need a commercial Qt license for development of proprietary (closed source) applications. Please see &lt;tt&gt;http://qtsoftware.com/company/model.html&lt;/tt&gt; for an overview of Qt licensing.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location line="+8"/>
- <source>This program is licensed to you under the terms of the Qt %1 License Agreement. For details, see the license file that came with this software distribution.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location line="+4"/>
- <source>This program is licensed to you under the terms of the Qt Commercial License Agreement. For details, see the file LICENSE that came with this software distribution.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location line="+5"/>
+ <location line="+6"/>
<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;%2&lt;/p&gt;&lt;p&gt;Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).&lt;/p&gt;&lt;p&gt;The program is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
@@ -1396,7 +1378,7 @@ All files (*)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+312"/>
+ <location line="+314"/>
<source>All</source>
<translation type="unfinished"></translation>
</message>
@@ -1416,7 +1398,7 @@ All files (*)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../tools/linguist/linguist/mainwindow.cpp" line="-525"/>
+ <location filename="../tools/linguist/linguist/mainwindow.cpp" line="-527"/>
<location filename="../tools/linguist/linguist/mainwindow.ui"/>
<source>Translation File &amp;Settings...</source>
<translation type="unfinished"></translation>
@@ -1431,11 +1413,21 @@ All files (*)</source>
<source>Ctrl+T</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <location/>
+ <source>Ctrl+J</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location/>
+ <source>Ctrl+Shift+J</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>MessageEditor</name>
<message>
- <location filename="../tools/linguist/linguist/messageeditor.cpp" line="+42"/>
+ <location filename="../tools/linguist/linguist/messageeditor.cpp" line="+72"/>
<source>German</source>
<translation type="unfinished"></translation>
</message>
@@ -1529,7 +1521,7 @@ Line: %2</source>
<context>
<name>MessageModel</name>
<message>
- <location filename="../tools/linguist/linguist/messagemodel.cpp" line="+861"/>
+ <location filename="../tools/linguist/linguist/messagemodel.cpp" line="+832"/>
<source>Completion status for %1</source>
<translation type="unfinished"></translation>
</message>
@@ -1552,7 +1544,7 @@ Line: %2</source>
<context>
<name>MsgEdit</name>
<message>
- <location filename="../tools/linguist/linguist/messageeditor.cpp" line="-547"/>
+ <location filename="../tools/linguist/linguist/messageeditor.cpp" line="-577"/>
<source></source>
<comment>This is the right panel of the main window.</comment>
<translation></translation>
@@ -1561,13 +1553,13 @@ Line: %2</source>
<context>
<name>PhraseBookBox</name>
<message>
- <location filename="../tools/linguist/linguist/phrasebookbox.cpp" line="-15"/>
+ <location filename="../tools/linguist/linguist/phrasebookbox.cpp" line="-45"/>
<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="+23"/>
+ <location line="+53"/>
<source>%1[*] - Qt Linguist</source>
<translation type="unfinished"></translation>
</message>
@@ -1670,7 +1662,7 @@ Line: %2</source>
<context>
<name>PhraseModel</name>
<message>
- <location filename="../tools/linguist/linguist/phrasemodel.cpp" line="+87"/>
+ <location filename="../tools/linguist/linguist/phrasemodel.cpp" line="+117"/>
<source>Source phrase</source>
<translation type="unfinished"></translation>
</message>
@@ -1688,7 +1680,7 @@ Line: %2</source>
<context>
<name>PhraseView</name>
<message>
- <location filename="../tools/linguist/linguist/phraseview.cpp" line="+91"/>
+ <location filename="../tools/linguist/linguist/phraseview.cpp" line="+121"/>
<source>Insert</source>
<translation type="unfinished"></translation>
</message>
@@ -1716,7 +1708,7 @@ Line: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../tools/linguist/linguist/mainwindow.cpp" line="-1296"/>
+ <location filename="../tools/linguist/linguist/mainwindow.cpp" line="-1279"/>
<source>Translation files (%1);;</source>
<translation type="unfinished"></translation>
</message>
@@ -1726,37 +1718,38 @@ Line: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../tools/linguist/linguist/messagemodel.cpp" line="-1086"/>
+ <location filename="../tools/linguist/linguist/messagemodel.cpp" line="-1118"/>
<location line="+18"/>
- <location line="+101"/>
+ <location line="+67"/>
+ <location line="+39"/>
<location line="+17"/>
<location line="+15"/>
- <location filename="../tools/linguist/linguist/phrase.cpp" line="+166"/>
+ <location filename="../tools/linguist/linguist/phrase.cpp" line="+196"/>
<source>Qt Linguist</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../tools/linguist/shared/cpp.cpp" line="+1039"/>
+ <location filename="../tools/linguist/shared/cpp.cpp" line="+1072"/>
<source>C++ source files</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../tools/linguist/shared/java.cpp" line="+624"/>
+ <location filename="../tools/linguist/shared/java.cpp" line="+646"/>
<source>Java source files</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../tools/linguist/shared/po.cpp" line="+584"/>
+ <location filename="../tools/linguist/shared/po.cpp" line="+651"/>
<source>GNU Gettext localization files</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../tools/linguist/shared/qscript.cpp" line="+2369"/>
+ <location filename="../tools/linguist/shared/qscript.cpp" line="+2399"/>
<source>Qt Script source files</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../tools/linguist/shared/ts.cpp" line="+617"/>
+ <location filename="../tools/linguist/shared/ts.cpp" line="+752"/>
<source>Qt translation sources (format 1.1)</source>
<translation type="unfinished"></translation>
</message>
@@ -1767,11 +1760,11 @@ Line: %2</source>
</message>
<message>
<location line="+9"/>
- <source>Qt translation sources</source>
+ <source>Qt translation sources (latest format)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../tools/linguist/shared/ui.cpp" line="+171"/>
+ <location filename="../tools/linguist/shared/ui.cpp" line="+213"/>
<source>Qt Designer form files</source>
<translation type="unfinished"></translation>
</message>
@@ -1781,15 +1774,20 @@ Line: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../tools/linguist/shared/xliff.cpp" line="+778"/>
+ <location filename="../tools/linguist/shared/xliff.cpp" line="+817"/>
<source>XLIFF localization files</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <location filename="../tools/linguist/shared/qph.cpp" line="+192"/>
+ <source>Qt Linguist &apos;Phrase Book&apos;</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>SourceCodeView</name>
<message>
- <location filename="../tools/linguist/linguist/sourcecodeview.cpp" line="+40"/>
+ <location filename="../tools/linguist/linguist/sourcecodeview.cpp" line="+70"/>
<source>&lt;i&gt;Source code not available&lt;/i&gt;</source>
<translation type="unfinished"></translation>
</message>
@@ -1932,7 +1930,7 @@ Line: %2</source>
<context>
<name>TranslationSettingsDialog</name>
<message>
- <location filename="../tools/linguist/linguist/translationsettingsdialog.cpp" line="+38"/>
+ <location filename="../tools/linguist/linguist/translationsettingsdialog.cpp" line="+68"/>
<source>Any Country</source>
<translation type="unfinished"></translation>
</message>
diff --git a/translations/linguist_ja.ts b/translations/linguist_ja.ts
index 41c24ca..7af3ebb 100644
--- a/translations/linguist_ja.ts
+++ b/translations/linguist_ja.ts
@@ -1,9 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS><TS version="2.0" language="ja">
+<!DOCTYPE TS>
+<TS version="2.0" language="ja">
<context>
<name></name>
<message>
- <location filename="../tools/linguist/linguist/phrasebookbox.cpp" line="+29"/>
+ <location filename="../tools/linguist/linguist/phrasebookbox.cpp" line="+59"/>
<source>(New Entry)</source>
<translation type="unfinished"></translation>
</message>
@@ -18,7 +19,7 @@
<context>
<name>AboutDialog</name>
<message>
- <location filename="../tools/linguist/linguist/mainwindow.cpp" line="+1318"/>
+ <location filename="../tools/linguist/linguist/mainwindow.cpp" line="+1357"/>
<source>Qt Linguist</source>
<translation>Qt Linguist</translation>
</message>
@@ -30,7 +31,7 @@
<translation type="obsolete">%1 é …ç›®ãŒä¸€æ‹¬ç¿»è¨³ã•ã‚Œã¾ã—ãŸ</translation>
</message>
<message>
- <location filename="../tools/linguist/linguist/batchtranslationdialog.cpp" line="+86"/>
+ <location filename="../tools/linguist/linguist/batchtranslationdialog.cpp" line="+116"/>
<source>&amp;Cancel</source>
<translation>キャンセル(&amp;C)</translation>
</message>
@@ -135,7 +136,7 @@
<context>
<name>DataModel</name>
<message>
- <location filename="../tools/linguist/linguist/messagemodel.cpp" line="+184"/>
+ <location filename="../tools/linguist/linguist/messagemodel.cpp" line="+214"/>
<source>&lt;qt&gt;Duplicate messages found in &apos;%1&apos;:</source>
<translation type="unfinished"></translation>
</message>
@@ -155,10 +156,21 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+121"/>
+ <location line="+70"/>
+ <source>Linguist does not know the plural rules for &apos;%1&apos;.
+Will assume a single universal form.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+56"/>
<source>Cannot create &apos;%2&apos;: %1</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <location line="+56"/>
+ <source>Universal Form</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>EditorPage</name>
@@ -186,7 +198,7 @@
<context>
<name>ErrorsView</name>
<message>
- <location filename="../tools/linguist/linguist/errorsview.cpp" line="+46"/>
+ <location filename="../tools/linguist/linguist/errorsview.cpp" line="+76"/>
<source>Accelerator possibly superfluous in translation.</source>
<translation type="unfinished">訳ã«ä½™åˆ†ãªã‚¢ã‚¯ã‚»ãƒ©ãƒ¬ãƒ¼ã‚¿ãŒã¤ã„ã¦ã„ã¾ã™ã€‚</translation>
</message>
@@ -373,7 +385,7 @@
<context>
<name>LRelease</name>
<message numerus="yes">
- <location filename="../tools/linguist/shared/qm.cpp" line="+653"/>
+ <location filename="../tools/linguist/shared/qm.cpp" line="+715"/>
<source> Generated %n translation(s) (%1 finished and %2 unfinished)
</source>
<translation type="unfinished">
@@ -507,9 +519,8 @@
<translation>Ctrl+K</translation>
</message>
<message>
- <location/>
<source>Ctrl+L</source>
- <translation>Ctrl+L</translation>
+ <translation type="obsolete">Ctrl+L</translation>
</message>
<message>
<location/>
@@ -552,9 +563,8 @@
<translation>Ctrl+Shift+K</translation>
</message>
<message>
- <location/>
<source>Ctrl+Shift+L</source>
- <translation>Ctrl+Shift+L</translation>
+ <translation type="obsolete">Ctrl+Shift+L</translation>
</message>
<message>
<location/>
@@ -838,13 +848,13 @@
<translation type="obsolete">ソート順åºã‚’åˆæœŸçŠ¶æ…‹ã«(&amp;R)</translation>
</message>
<message>
- <location filename="../tools/linguist/linguist/mainwindow.cpp" line="-1965"/>
+ <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="+165"/>
+ <location line="+195"/>
<source>Source text</source>
<translation type="unfinished">ソーステキスト</translation>
</message>
@@ -897,39 +907,39 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+124"/>
+ <location line="+125"/>
<source>Loading...</source>
<translation type="unfinished">ロードã—ã¦ã„ã¾ã™...</translation>
</message>
<message>
+ <location line="+32"/>
<location line="+22"/>
- <location line="+20"/>
<source>Loading File - Qt Linguist</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-19"/>
+ <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 type="unfinished"></translation>
</message>
<message>
- <location line="+20"/>
+ <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 type="unfinished"></translation>
</message>
<message numerus="yes">
- <location line="+49"/>
+ <location line="+61"/>
<source>%n translation unit(s) loaded.</source>
<translation type="unfinished">
<numerusform></numerusform>
</translation>
</message>
<message>
- <location line="+92"/>
+ <location line="+93"/>
<source>Related files (%1);;</source>
<translation type="unfinished"></translation>
</message>
@@ -939,20 +949,20 @@ Skip loading the first named file?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+9"/>
- <location line="+30"/>
+ <location line="+10"/>
+ <location line="+31"/>
<source>File saved.</source>
<translation type="unfinished">ファイルãŒä¿å­˜ã•ã‚Œã¾ã—ãŸã€‚</translation>
</message>
<message>
- <location line="+14"/>
- <location line="+1184"/>
+ <location line="+15"/>
+ <location line="+1164"/>
<location filename="../tools/linguist/linguist/mainwindow.ui"/>
<source>Release</source>
<translation type="unfinished">リリース</translation>
</message>
<message>
- <location line="-1183"/>
+ <location line="-1163"/>
<source>Qt message files for released applications (*.qm)
All files (*)</source>
<translation type="unfinished">リリースã•ã‚ŒãŸã‚¢ãƒ—リケーション用㮠Qt メッセージファイル (*.qm)
@@ -1016,7 +1026,7 @@ All files (*)</source>
<message>
<location line="+17"/>
<location line="+278"/>
- <location line="+60"/>
+ <location line="+40"/>
<location line="+24"/>
<location line="+22"/>
<location line="+516"/>
@@ -1028,7 +1038,7 @@ All files (*)</source>
<translation type="unfinished">Qt Linguist</translation>
</message>
<message>
- <location line="-1224"/>
+ <location line="-1204"/>
<location line="+102"/>
<source>Cannot find the string &apos;%1&apos;.</source>
<translation type="unfinished">文字列 &apos;%1&apos; ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。</translation>
@@ -1134,27 +1144,19 @@ All files (*)</source>
<translation type="unfinished">ãƒãƒ¼ã‚¸ãƒ§ãƒ³ %1</translation>
</message>
<message>
- <location line="+2"/>
<source> Open Source Edition</source>
- <translation type="unfinished"> オープンソース版</translation>
+ <translation type="obsolete"> オープンソース版</translation>
</message>
<message>
- <location line="+7"/>
<source>This version of Qt Linguist is part of the Qt Open Source Edition, for use in the development of Open Source applications. Qt is a comprehensive C++ framework for cross-platform application development.&lt;br/&gt;&lt;br/&gt;You need a commercial Qt license for development of proprietary (closed source) applications. Please see &lt;tt&gt;http://qtsoftware.com/company/model.html&lt;/tt&gt; for an overview of Qt licensing.</source>
- <translation type="unfinished">ã“ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã® Qt Linguist ã¯ã€ オープンソースアプリケーションを開発ã™ã‚‹ãŸã‚ã® Qt オープンソース版ã®ä¸€éƒ¨ã§ã™ã€‚Qt ã¯ã€ã‚¯ãƒ­ã‚¹ãƒ—ラットフォームãªã‚¢ãƒ—リケーションを開発ã™ã‚‹ãŸã‚ã®åŒ…括的㪠C++ ã®ãƒ•ãƒ¬ãƒ¼ãƒ ãƒ¯ãƒ¼ã‚¯ã§ã™ã€‚&lt;br/&gt;&lt;br/&gt;独å çš„ãªï¼ˆã‚½ãƒ¼ã‚¹ãŒéš ã•ã‚ŒãŸï¼‰ã‚¢ãƒ—リケーションを開発ã™ã‚‹ã«ã¯ã€Qt ã®å•†ç”¨ãƒ©ã‚¤ã‚»ãƒ³ã‚¹ãŒå¿…è¦ã§ã™ã€‚Qt ã®ãƒ©ã‚¤ã‚»ãƒ³ã‚¹ã®æ¦‚è¦ã«ã¤ã„ã¦ã¯ &lt;tt&gt;http://qtsoftware.com/company/model.html&lt;/tt&gt; ã‚’ã”覧ãã ã•ã„。</translation>
- </message>
- <message>
- <location line="+8"/>
- <source>This program is licensed to you under the terms of the Qt %1 License Agreement. For details, see the license file that came with this software distribution.</source>
- <translation type="unfinished"></translation>
+ <translation type="obsolete">ã“ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã® Qt Linguist ã¯ã€ オープンソースアプリケーションを開発ã™ã‚‹ãŸã‚ã® Qt オープンソース版ã®ä¸€éƒ¨ã§ã™ã€‚Qt ã¯ã€ã‚¯ãƒ­ã‚¹ãƒ—ラットフォームãªã‚¢ãƒ—リケーションを開発ã™ã‚‹ãŸã‚ã®åŒ…括的㪠C++ ã®ãƒ•ãƒ¬ãƒ¼ãƒ ãƒ¯ãƒ¼ã‚¯ã§ã™ã€‚&lt;br/&gt;&lt;br/&gt;独å çš„ãªï¼ˆã‚½ãƒ¼ã‚¹ãŒéš ã•ã‚ŒãŸï¼‰ã‚¢ãƒ—リケーションを開発ã™ã‚‹ã«ã¯ã€Qt ã®å•†ç”¨ãƒ©ã‚¤ã‚»ãƒ³ã‚¹ãŒå¿…è¦ã§ã™ã€‚Qt ã®ãƒ©ã‚¤ã‚»ãƒ³ã‚¹ã®æ¦‚è¦ã«ã¤ã„ã¦ã¯ &lt;tt&gt;http://qtsoftware.com/company/model.html&lt;/tt&gt; ã‚’ã”覧ãã ã•ã„。</translation>
</message>
<message>
- <location line="+4"/>
<source>This program is licensed to you under the terms of the Qt Commercial License Agreement. For details, see the file LICENSE that came with this software distribution.</source>
- <translation type="unfinished">ã“ã®ãƒ—ログラムã¯ã€Qt 商用ライセンス契約書ã®å®šã‚ã‚‹æ¡ä»¶ã®ä¸‹ã§ã‚ãªãŸã®åˆ©ç”¨ãŒèªã‚られã¦ã„ã¾ã™ã€‚詳細ã¯ã€ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¨ä¸€ç·’ã«é…布ã•ã‚Œã‚‹ LICENSE ファイルをå‚ç…§ã—ã¦ãã ã•ã„。</translation>
+ <translation type="obsolete">ã“ã®ãƒ—ログラムã¯ã€Qt 商用ライセンス契約書ã®å®šã‚ã‚‹æ¡ä»¶ã®ä¸‹ã§ã‚ãªãŸã®åˆ©ç”¨ãŒèªã‚られã¦ã„ã¾ã™ã€‚詳細ã¯ã€ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¨ä¸€ç·’ã«é…布ã•ã‚Œã‚‹ LICENSE ファイルをå‚ç…§ã—ã¦ãã ã•ã„。</translation>
</message>
<message>
- <location line="+5"/>
+ <location line="+6"/>
<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;%2&lt;/p&gt;&lt;p&gt;Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).&lt;/p&gt;&lt;p&gt;The program is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.&lt;/p&gt;</source>
<translation type="unfinished">&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 ã¯ã€Qt アプリケーションã®ç¿»è¨³ã‚’è¡Œã†ãƒ„ールã§ã™ã€‚&lt;/p&gt;&lt;p&gt;%2&lt;/p&gt;&lt;p&gt;Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). å…¨ã¦ã®æ¨©åˆ©ã¯ä¿è­·ã•ã‚Œã¦ã„ã¾ã™ã€‚&lt;/p&gt;&lt;p&gt;ã“ã®ãƒ—ログラムã¯ã€ã€Œè¨­è¨ˆã€ã€ã€Œå¸‚場性ã€ãŠã‚ˆã³ã€Œç‰¹å®šã®ç›®çš„ã¸ã®é©åˆæ€§ã€ã‚‚å«ã‚€ã€ã‚らゆる種類ã®ã€Œä¿è¨¼ãŒãªãã€ã€ã€Œãã®ã¾ã¾ã§ã€æä¾›ã•ã‚Œã¾ã™ã€‚&lt;/p&gt;</translation>
</message>
@@ -1320,7 +1322,7 @@ All files (*)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+312"/>
+ <location line="+314"/>
<source>All</source>
<translation type="unfinished"></translation>
</message>
@@ -1409,7 +1411,7 @@ All files (*)</source>
<translation type="obsolete">ツール(&amp;L)</translation>
</message>
<message>
- <location filename="../tools/linguist/linguist/mainwindow.cpp" line="-459"/>
+ <location filename="../tools/linguist/linguist/mainwindow.cpp" line="-461"/>
<location filename="../tools/linguist/linguist/mainwindow.ui"/>
<source>Translation</source>
<translation>翻訳</translation>
@@ -1645,6 +1647,16 @@ All files (*)</source>
<source>Ctrl+T</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <location/>
+ <source>Ctrl+J</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location/>
+ <source>Ctrl+Shift+J</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>MessageEditor</name>
@@ -1693,7 +1705,7 @@ All files (*)</source>
<translation type="obsolete">タブ</translation>
</message>
<message>
- <location filename="../tools/linguist/linguist/messageeditor.cpp" line="+42"/>
+ <location filename="../tools/linguist/linguist/messageeditor.cpp" line="+72"/>
<source>German</source>
<translation type="unfinished"></translation>
</message>
@@ -1807,7 +1819,7 @@ Line: %2</source>
<translation type="obsolete">項目数</translation>
</message>
<message>
- <location filename="../tools/linguist/linguist/messagemodel.cpp" line="+861"/>
+ <location filename="../tools/linguist/linguist/messagemodel.cpp" line="+832"/>
<source>Completion status for %1</source>
<translation type="unfinished"></translation>
</message>
@@ -1837,7 +1849,7 @@ Line: %2</source>
<context>
<name>MsgEdit</name>
<message>
- <location filename="../tools/linguist/linguist/messageeditor.cpp" line="-547"/>
+ <location filename="../tools/linguist/linguist/messageeditor.cpp" line="-577"/>
<source></source>
<comment>This is the right panel of the main window.</comment>
<translation></translation>
@@ -1973,7 +1985,7 @@ Line: %2</source>
<translation>訳(&amp;T):</translation>
</message>
<message>
- <location filename="../tools/linguist/linguist/phrasebookbox.cpp" line="-113"/>
+ <location filename="../tools/linguist/linguist/phrasebookbox.cpp" line="-143"/>
<source></source>
<comment>Go to Phrase &gt; Edit Phrase Book... The dialog that pops up is a PhraseBookBox.</comment>
<translation></translation>
@@ -1982,7 +1994,7 @@ Line: %2</source>
<context>
<name>PhraseModel</name>
<message>
- <location filename="../tools/linguist/linguist/phrasemodel.cpp" line="+91"/>
+ <location filename="../tools/linguist/linguist/phrasemodel.cpp" line="+121"/>
<source>Definition</source>
<translation>定義</translation>
</message>
@@ -2000,7 +2012,7 @@ Line: %2</source>
<context>
<name>PhraseView</name>
<message>
- <location filename="../tools/linguist/linguist/phraseview.cpp" line="+91"/>
+ <location filename="../tools/linguist/linguist/phraseview.cpp" line="+121"/>
<source>Insert</source>
<translation type="unfinished"></translation>
</message>
@@ -2028,7 +2040,7 @@ Line: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../tools/linguist/linguist/mainwindow.cpp" line="-1296"/>
+ <location filename="../tools/linguist/linguist/mainwindow.cpp" line="-1279"/>
<source>Translation files (%1);;</source>
<translation type="unfinished"></translation>
</message>
@@ -2038,37 +2050,38 @@ Line: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../tools/linguist/linguist/messagemodel.cpp" line="-1086"/>
+ <location filename="../tools/linguist/linguist/messagemodel.cpp" line="-1118"/>
<location line="+18"/>
- <location line="+101"/>
+ <location line="+67"/>
+ <location line="+39"/>
<location line="+17"/>
<location line="+15"/>
- <location filename="../tools/linguist/linguist/phrase.cpp" line="+166"/>
+ <location filename="../tools/linguist/linguist/phrase.cpp" line="+196"/>
<source>Qt Linguist</source>
<translation>Qt Linguist</translation>
</message>
<message>
- <location filename="../tools/linguist/shared/cpp.cpp" line="+1039"/>
+ <location filename="../tools/linguist/shared/cpp.cpp" line="+1072"/>
<source>C++ source files</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../tools/linguist/shared/java.cpp" line="+624"/>
+ <location filename="../tools/linguist/shared/java.cpp" line="+646"/>
<source>Java source files</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../tools/linguist/shared/po.cpp" line="+584"/>
+ <location filename="../tools/linguist/shared/po.cpp" line="+651"/>
<source>GNU Gettext localization files</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../tools/linguist/shared/qscript.cpp" line="+2369"/>
+ <location filename="../tools/linguist/shared/qscript.cpp" line="+2399"/>
<source>Qt Script source files</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../tools/linguist/shared/ts.cpp" line="+617"/>
+ <location filename="../tools/linguist/shared/ts.cpp" line="+752"/>
<source>Qt translation sources (format 1.1)</source>
<translation type="unfinished"></translation>
</message>
@@ -2079,11 +2092,11 @@ Line: %2</source>
</message>
<message>
<location line="+9"/>
- <source>Qt translation sources</source>
+ <source>Qt translation sources (latest format)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../tools/linguist/shared/ui.cpp" line="+171"/>
+ <location filename="../tools/linguist/shared/ui.cpp" line="+213"/>
<source>Qt Designer form files</source>
<translation type="unfinished"></translation>
</message>
@@ -2093,10 +2106,15 @@ Line: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../tools/linguist/shared/xliff.cpp" line="+778"/>
+ <location filename="../tools/linguist/shared/xliff.cpp" line="+817"/>
<source>XLIFF localization files</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <location filename="../tools/linguist/shared/qph.cpp" line="+192"/>
+ <source>Qt Linguist &apos;Phrase Book&apos;</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>QtWindowListMenu</name>
@@ -2127,7 +2145,7 @@ Line: %2</source>
<context>
<name>SourceCodeView</name>
<message>
- <location filename="../tools/linguist/linguist/sourcecodeview.cpp" line="+40"/>
+ <location filename="../tools/linguist/linguist/sourcecodeview.cpp" line="+70"/>
<source>&lt;i&gt;Source code not available&lt;/i&gt;</source>
<translation type="unfinished"></translation>
</message>
@@ -2688,7 +2706,7 @@ All files (*)</source>
<context>
<name>TranslationSettingsDialog</name>
<message>
- <location filename="../tools/linguist/linguist/translationsettingsdialog.cpp" line="+38"/>
+ <location filename="../tools/linguist/linguist/translationsettingsdialog.cpp" line="+68"/>
<source>Any Country</source>
<translation>指定ã—ãªã„</translation>
</message>
diff --git a/translations/linguist_pl.ts b/translations/linguist_pl.ts
index 12b98d5..efed849 100644
--- a/translations/linguist_pl.ts
+++ b/translations/linguist_pl.ts
@@ -1,10 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS><TS version="2.0" language="pl">
-<defaultcodec></defaultcodec>
+<!DOCTYPE TS>
+<TS version="2.0" language="pl">
<context>
<name></name>
<message>
- <location filename="../tools/linguist/linguist/phrasebookbox.cpp" line="+29"/>
+ <location filename="../tools/linguist/linguist/phrasebookbox.cpp" line="+59"/>
<source>(New Entry)</source>
<translation>(Nowe wyrażenie)</translation>
</message>
@@ -12,7 +12,7 @@
<context>
<name>AboutDialog</name>
<message>
- <location filename="../tools/linguist/linguist/mainwindow.cpp" line="+1318"/>
+ <location filename="../tools/linguist/linguist/mainwindow.cpp" line="+1357"/>
<source>Qt Linguist</source>
<translation>Qt Linguist</translation>
</message>
@@ -20,7 +20,7 @@
<context>
<name>BatchTranslationDialog</name>
<message numerus="yes">
- <location filename="../tools/linguist/linguist/batchtranslationdialog.cpp" line="+129"/>
+ <location filename="../tools/linguist/linguist/batchtranslationdialog.cpp" line="+159"/>
<source>Batch translated %n entries</source>
<translation>
<numerusform>Automat przetłumaczył %n wpis</numerusform>
@@ -112,7 +112,7 @@
<context>
<name>DataModel</name>
<message>
- <location filename="../tools/linguist/linguist/messagemodel.cpp" line="+184"/>
+ <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;Znaleziono powtórzenia w &apos;%1&apos;:</translation>
</message>
@@ -132,15 +132,26 @@
<translation>&lt;br&gt;* Komentarz: %3</translation>
</message>
<message>
- <location line="+121"/>
+ <location line="+70"/>
+ <source>Linguist does not know the plural rules for &apos;%1&apos;.
+Will assume a single universal form.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+56"/>
<source>Cannot create &apos;%2&apos;: %1</source>
<translation>Nie można utworzyć &apos;%2&apos;: %1</translation>
</message>
+ <message>
+ <location line="+56"/>
+ <source>Universal Form</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>ErrorsView</name>
<message>
- <location filename="../tools/linguist/linguist/errorsview.cpp" line="+46"/>
+ <location filename="../tools/linguist/linguist/errorsview.cpp" line="+76"/>
<source>Accelerator possibly superfluous in translation.</source>
<translation>Prawdopodobnie nadmiarowy klawisz skrótu w tłumaczeniu.</translation>
</message>
@@ -277,7 +288,7 @@
<context>
<name>LRelease</name>
<message numerus="yes">
- <location filename="../tools/linguist/shared/qm.cpp" line="+653"/>
+ <location filename="../tools/linguist/shared/qm.cpp" line="+715"/>
<source> Generated %n translation(s) (%1 finished and %2 unfinished)
</source>
<translation>
@@ -406,9 +417,8 @@
<translation>Ctrl+K</translation>
</message>
<message>
- <location/>
<source>Ctrl+L</source>
- <translation>Ctrl+L</translation>
+ <translation type="obsolete">Ctrl+L</translation>
</message>
<message>
<location/>
@@ -451,9 +461,8 @@
<translation>Ctrl+Shift+K</translation>
</message>
<message>
- <location/>
<source>Ctrl+Shift+L</source>
- <translation>Ctrl+Shift+L</translation>
+ <translation type="obsolete">Ctrl+Shift+L</translation>
</message>
<message>
<location/>
@@ -676,13 +685,13 @@
<translation>Zamienia tłumaczenia we wszystkich pasujących do wzorca wpisach.</translation>
</message>
<message>
- <location filename="../tools/linguist/linguist/mainwindow.cpp" line="-1965"/>
+ <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="+165"/>
+ <location line="+195"/>
<source>Source text</source>
<translation>Tekst źródłowy</translation>
</message>
@@ -735,18 +744,18 @@
<translation> MOD </translation>
</message>
<message>
- <location line="+124"/>
+ <location line="+125"/>
<source>Loading...</source>
<translation>Åadowanie...</translation>
</message>
<message>
+ <location line="+32"/>
<location line="+22"/>
- <location line="+20"/>
<source>Loading File - Qt Linguist</source>
<translation>Wczytywanie pliku - Qt Linguist</translation>
</message>
<message>
- <location line="-19"/>
+ <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>
@@ -755,7 +764,7 @@ Close the open file(s) first?</source>
Czy chcesz najpierw zamknąć otwarty plik (pliki)?</translation>
</message>
<message>
- <location line="+20"/>
+ <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>
@@ -764,7 +773,7 @@ Skip loading the first named file?</source>
Czy chcesz pominąć pierwszy plik?</translation>
</message>
<message numerus="yes">
- <location line="+49"/>
+ <location line="+61"/>
<source>%n translation unit(s) loaded.</source>
<translation>
<numerusform>Załadowano %n część z tłumaczeniami.</numerusform>
@@ -773,7 +782,7 @@ Czy chcesz pominąć pierwszy plik?</translation>
</translation>
</message>
<message>
- <location line="+92"/>
+ <location line="+93"/>
<source>Related files (%1);;</source>
<translation>ZwiÄ…zane pliki (%1);;</translation>
</message>
@@ -783,20 +792,20 @@ Czy chcesz pominąć pierwszy plik?</translation>
<translation>Otwórz pliki z tłumaczeniami</translation>
</message>
<message>
- <location line="+9"/>
- <location line="+30"/>
+ <location line="+10"/>
+ <location line="+31"/>
<source>File saved.</source>
<translation>Plik zachowany.</translation>
</message>
<message>
- <location line="+14"/>
- <location line="+1184"/>
+ <location line="+15"/>
+ <location line="+1164"/>
<location filename="../tools/linguist/linguist/mainwindow.ui"/>
<source>Release</source>
<translation>Wydaj</translation>
</message>
<message>
- <location line="-1183"/>
+ <location line="-1163"/>
<source>Qt message files for released applications (*.qm)
All files (*)</source>
<translation>Pliki z wydanymi tłumaczeniami (*.qm)
@@ -860,7 +869,7 @@ Wszystkie pliki (*)</translation>
<message>
<location line="+17"/>
<location line="+278"/>
- <location line="+60"/>
+ <location line="+40"/>
<location line="+24"/>
<location line="+22"/>
<location line="+516"/>
@@ -872,7 +881,7 @@ Wszystkie pliki (*)</translation>
<translation>Qt Linguist</translation>
</message>
<message>
- <location line="-1224"/>
+ <location line="-1204"/>
<location line="+102"/>
<source>Cannot find the string &apos;%1&apos;.</source>
<translation>Nie można znaleźć tekstu &apos;%1&apos;.</translation>
@@ -984,27 +993,19 @@ Wszystkie pliki (*)</translation>
<translation>Wersja %1</translation>
</message>
<message>
- <location line="+2"/>
<source> Open Source Edition</source>
- <translation> Wydanie Open Source</translation>
+ <translation type="obsolete"> Wydanie Open Source</translation>
</message>
<message>
- <location line="+7"/>
<source>This version of Qt Linguist is part of the Qt Open Source Edition, for use in the development of Open Source applications. Qt is a comprehensive C++ framework for cross-platform application development.&lt;br/&gt;&lt;br/&gt;You need a commercial Qt license for development of proprietary (closed source) applications. Please see &lt;tt&gt;http://qtsoftware.com/company/model.html&lt;/tt&gt; for an overview of Qt licensing.</source>
- <translation type="unfinished">Ta wersja Qt Linguist jest częścią wydania Qt Open Source, przeznaczonego do tworzenia aplikacji Open Source. Qt zawiera obszerny zestaw bibliotek wykorzystywanych do pisania przenośnych aplikacji.&lt;br/&gt;&lt;br/&gt;Aby móc tworzyć przy pomocy Qt własne aplikacje bez publikowania kodu (closed source) potrzebujesz wydania komercyjnego. Opis sposobów licencjonowania Qt znajduje się na stronie &lt;a href=&quot;http://qtsoftware.com/company/model.html&quot;&gt;qtsoftware.com/company/model.html&lt;/a&gt;.</translation>
+ <translation type="obsolete">Ta wersja Qt Linguist jest częścią wydania Qt Open Source, przeznaczonego do tworzenia aplikacji Open Source. Qt zawiera obszerny zestaw bibliotek wykorzystywanych do pisania przenośnych aplikacji.&lt;br/&gt;&lt;br/&gt;Aby móc tworzyć przy pomocy Qt własne aplikacje bez publikowania kodu (closed source) potrzebujesz wydania komercyjnego. Opis sposobów licencjonowania Qt znajduje się na stronie &lt;a href=&quot;http://qtsoftware.com/company/model.html&quot;&gt;qtsoftware.com/company/model.html&lt;/a&gt;.</translation>
</message>
<message>
- <location line="+8"/>
- <source>This program is licensed to you under the terms of the Qt %1 License Agreement. For details, see the license file that came with this software distribution.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location line="+4"/>
<source>This program is licensed to you under the terms of the Qt Commercial License Agreement. For details, see the file LICENSE that came with this software distribution.</source>
- <translation type="unfinished">Ten program wydany jest na licencji Qt Commercial. Aby sprawdzić szczegóły licencji, proszę sprawdzić plik LICENSE, który dołączany jest do pakietu Qt.</translation>
+ <translation type="obsolete">Ten program wydany jest na licencji Qt Commercial. Aby sprawdzić szczegóły licencji, proszę sprawdzić plik LICENSE, który dołączany jest do pakietu Qt.</translation>
</message>
<message>
- <location line="+5"/>
+ <location line="+6"/>
<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;%2&lt;/p&gt;&lt;p&gt;Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).&lt;/p&gt;&lt;p&gt;The program is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
@@ -1170,7 +1171,7 @@ Wszystkie pliki (*)</translation>
<translation>Czy chcesz zachować książke wyrażeń &apos;%1&apos;?</translation>
</message>
<message>
- <location line="+312"/>
+ <location line="+314"/>
<source>All</source>
<translation>Wszystko</translation>
</message>
@@ -1240,7 +1241,7 @@ Wszystkie pliki (*)</translation>
<translation>&amp;TÅ‚umaczenie</translation>
</message>
<message>
- <location filename="../tools/linguist/linguist/mainwindow.cpp" line="-459"/>
+ <location filename="../tools/linguist/linguist/mainwindow.cpp" line="-461"/>
<location filename="../tools/linguist/linguist/mainwindow.ui"/>
<source>Translation</source>
<translation>TÅ‚umaczenie</translation>
@@ -1468,11 +1469,21 @@ Wszystkie pliki (*)</translation>
<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>Przełącz sprawdzanie zgodności znaczników, tzn. czy: %1, %2, ... są spójnie użyte w tekście źródłowym i tłumaczeniu. W przypadku niezgodności pojawia się komunikat w oknie z ostrzeżeniami.</translation>
</message>
+ <message>
+ <location/>
+ <source>Ctrl+J</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location/>
+ <source>Ctrl+Shift+J</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>MessageEditor</name>
<message>
- <location filename="../tools/linguist/linguist/messageeditor.cpp" line="+42"/>
+ <location filename="../tools/linguist/linguist/messageeditor.cpp" line="+72"/>
<source>German</source>
<translation>Niemieckie</translation>
</message>
@@ -1567,7 +1578,7 @@ Linia: %2</translation>
<context>
<name>MessageModel</name>
<message>
- <location filename="../tools/linguist/linguist/messagemodel.cpp" line="+861"/>
+ <location filename="../tools/linguist/linguist/messagemodel.cpp" line="+832"/>
<source>Completion status for %1</source>
<translation>Stan ukończenia dla %1</translation>
</message>
@@ -1590,7 +1601,7 @@ Linia: %2</translation>
<context>
<name>MsgEdit</name>
<message>
- <location filename="../tools/linguist/linguist/messageeditor.cpp" line="-547"/>
+ <location filename="../tools/linguist/linguist/messageeditor.cpp" line="-577"/>
<source></source>
<comment>This is the right panel of the main window.</comment>
<translation></translation>
@@ -1699,7 +1710,7 @@ Linia: %2</translation>
<translation>&amp;TÅ‚umaczenie:</translation>
</message>
<message>
- <location filename="../tools/linguist/linguist/phrasebookbox.cpp" line="-113"/>
+ <location filename="../tools/linguist/linguist/phrasebookbox.cpp" line="-143"/>
<source></source>
<comment>Go to Phrase &gt; Edit Phrase Book... The dialog that pops up is a PhraseBookBox.</comment>
<translation></translation>
@@ -1708,7 +1719,7 @@ Linia: %2</translation>
<context>
<name>PhraseModel</name>
<message>
- <location filename="../tools/linguist/linguist/phrasemodel.cpp" line="+91"/>
+ <location filename="../tools/linguist/linguist/phrasemodel.cpp" line="+121"/>
<source>Definition</source>
<translation>Definicja</translation>
</message>
@@ -1726,7 +1737,7 @@ Linia: %2</translation>
<context>
<name>PhraseView</name>
<message>
- <location filename="../tools/linguist/linguist/phraseview.cpp" line="+91"/>
+ <location filename="../tools/linguist/linguist/phraseview.cpp" line="+121"/>
<source>Insert</source>
<translation>Wstaw</translation>
</message>
@@ -1754,7 +1765,7 @@ Linia: %2</translation>
<translation>Skompilowane tłumaczenia Qt</translation>
</message>
<message>
- <location filename="../tools/linguist/linguist/mainwindow.cpp" line="-1296"/>
+ <location filename="../tools/linguist/linguist/mainwindow.cpp" line="-1279"/>
<source>Translation files (%1);;</source>
<translation>Pliki z tłumaczeniami (%1);;</translation>
</message>
@@ -1764,37 +1775,38 @@ Linia: %2</translation>
<translation>Wszystkie pliki (*)</translation>
</message>
<message>
- <location filename="../tools/linguist/linguist/messagemodel.cpp" line="-1086"/>
+ <location filename="../tools/linguist/linguist/messagemodel.cpp" line="-1118"/>
<location line="+18"/>
- <location line="+101"/>
+ <location line="+67"/>
+ <location line="+39"/>
<location line="+17"/>
<location line="+15"/>
- <location filename="../tools/linguist/linguist/phrase.cpp" line="+166"/>
+ <location filename="../tools/linguist/linguist/phrase.cpp" line="+196"/>
<source>Qt Linguist</source>
<translation>Qt Linguist</translation>
</message>
<message>
- <location filename="../tools/linguist/shared/cpp.cpp" line="+1039"/>
+ <location filename="../tools/linguist/shared/cpp.cpp" line="+1072"/>
<source>C++ source files</source>
<translation>Pliki źródłowe C++</translation>
</message>
<message>
- <location filename="../tools/linguist/shared/java.cpp" line="+624"/>
+ <location filename="../tools/linguist/shared/java.cpp" line="+646"/>
<source>Java source files</source>
<translation>Pliki źródłowe Java</translation>
</message>
<message>
- <location filename="../tools/linguist/shared/po.cpp" line="+584"/>
+ <location filename="../tools/linguist/shared/po.cpp" line="+651"/>
<source>GNU Gettext localization files</source>
<translation>Pliki GNU Gettext</translation>
</message>
<message>
- <location filename="../tools/linguist/shared/qscript.cpp" line="+2369"/>
+ <location filename="../tools/linguist/shared/qscript.cpp" line="+2399"/>
<source>Qt Script source files</source>
<translation>Pliki źródłowe Qt Script</translation>
</message>
<message>
- <location filename="../tools/linguist/shared/ts.cpp" line="+617"/>
+ <location filename="../tools/linguist/shared/ts.cpp" line="+752"/>
<source>Qt translation sources (format 1.1)</source>
<translation>Źródła tlumaczeń Qt (format 1.1)</translation>
</message>
@@ -1805,11 +1817,15 @@ Linia: %2</translation>
</message>
<message>
<location line="+9"/>
+ <source>Qt translation sources (latest format)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<source>Qt translation sources</source>
- <translation>Źródła tlumaczeń Qt</translation>
+ <translation type="obsolete">Źródła tlumaczeń Qt</translation>
</message>
<message>
- <location filename="../tools/linguist/shared/ui.cpp" line="+171"/>
+ <location filename="../tools/linguist/shared/ui.cpp" line="+213"/>
<source>Qt Designer form files</source>
<translation>Pliki z formularzami Qt Designer</translation>
</message>
@@ -1819,15 +1835,20 @@ Linia: %2</translation>
<translation>Pliki z formularzami Qt Jambi</translation>
</message>
<message>
- <location filename="../tools/linguist/shared/xliff.cpp" line="+778"/>
+ <location filename="../tools/linguist/shared/xliff.cpp" line="+817"/>
<source>XLIFF localization files</source>
<translation>Pliki XLIFF</translation>
</message>
+ <message>
+ <location filename="../tools/linguist/shared/qph.cpp" line="+192"/>
+ <source>Qt Linguist &apos;Phrase Book&apos;</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>SourceCodeView</name>
<message>
- <location filename="../tools/linguist/linguist/sourcecodeview.cpp" line="+40"/>
+ <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;Kod źródłowy nie jest dostępny&lt;/i&gt;</translation>
</message>
@@ -1970,7 +1991,7 @@ Linia: %2</translation>
<context>
<name>TranslationSettingsDialog</name>
<message>
- <location filename="../tools/linguist/linguist/translationsettingsdialog.cpp" line="+38"/>
+ <location filename="../tools/linguist/linguist/translationsettingsdialog.cpp" line="+68"/>
<source>Any Country</source>
<translation>Dowolny kraj</translation>
</message>
diff --git a/translations/linguist_untranslated.ts b/translations/linguist_untranslated.ts
index 5690378..ae3ff20 100644
--- a/translations/linguist_untranslated.ts
+++ b/translations/linguist_untranslated.ts
@@ -1,9 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS><TS version="2.0">
+<!DOCTYPE TS>
+<TS version="2.0">
<context>
<name></name>
<message>
- <location filename="../tools/linguist/linguist/phrasebookbox.cpp" line="+29"/>
+ <location filename="../tools/linguist/linguist/phrasebookbox.cpp" line="+59"/>
<source>(New Entry)</source>
<translation type="unfinished"></translation>
</message>
@@ -11,7 +12,7 @@
<context>
<name>AboutDialog</name>
<message>
- <location filename="../tools/linguist/linguist/mainwindow.cpp" line="+1318"/>
+ <location filename="../tools/linguist/linguist/mainwindow.cpp" line="+1357"/>
<source>Qt Linguist</source>
<translation type="unfinished"></translation>
</message>
@@ -19,7 +20,7 @@
<context>
<name>BatchTranslationDialog</name>
<message>
- <location filename="../tools/linguist/linguist/batchtranslationdialog.cpp" line="+49"/>
+ <location filename="../tools/linguist/linguist/batchtranslationdialog.cpp" line="+79"/>
<source>Batch Translation of &apos;%1&apos; - Qt Linguist</source>
<translation type="unfinished"></translation>
</message>
@@ -109,7 +110,7 @@
<context>
<name>DataModel</name>
<message>
- <location filename="../tools/linguist/linguist/messagemodel.cpp" line="+184"/>
+ <location filename="../tools/linguist/linguist/messagemodel.cpp" line="+214"/>
<source>&lt;qt&gt;Duplicate messages found in &apos;%1&apos;:</source>
<translation type="unfinished"></translation>
</message>
@@ -129,15 +130,26 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+121"/>
+ <location line="+70"/>
+ <source>Linguist does not know the plural rules for &apos;%1&apos;.
+Will assume a single universal form.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+56"/>
<source>Cannot create &apos;%2&apos;: %1</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <location line="+56"/>
+ <source>Universal Form</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>ErrorsView</name>
<message>
- <location filename="../tools/linguist/linguist/errorsview.cpp" line="+46"/>
+ <location filename="../tools/linguist/linguist/errorsview.cpp" line="+76"/>
<source>Accelerator possibly superfluous in translation.</source>
<translation type="unfinished"></translation>
</message>
@@ -274,7 +286,7 @@
<context>
<name>LRelease</name>
<message numerus="yes">
- <location filename="../tools/linguist/shared/qm.cpp" line="+653"/>
+ <location filename="../tools/linguist/shared/qm.cpp" line="+715"/>
<source> Generated %n translation(s) (%1 finished and %2 unfinished)
</source>
<translation type="unfinished">
@@ -572,11 +584,6 @@
</message>
<message>
<location/>
- <source>Ctrl+L</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location/>
<source>P&amp;rev</source>
<translation type="unfinished"></translation>
</message>
@@ -592,11 +599,6 @@
</message>
<message>
<location/>
- <source>Ctrl+Shift+L</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location/>
<source>&amp;Done and Next</source>
<translation type="unfinished"></translation>
</message>
@@ -743,13 +745,13 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../tools/linguist/linguist/mainwindow.cpp" line="-1965"/>
+ <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="+165"/>
+ <location line="+195"/>
<source>Source text</source>
<translation type="unfinished"></translation>
</message>
@@ -802,39 +804,39 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+124"/>
+ <location line="+125"/>
<source>Loading...</source>
<translation type="unfinished"></translation>
</message>
<message>
+ <location line="+32"/>
<location line="+22"/>
- <location line="+20"/>
<source>Loading File - Qt Linguist</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-19"/>
+ <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 type="unfinished"></translation>
</message>
<message>
- <location line="+20"/>
+ <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 type="unfinished"></translation>
</message>
<message numerus="yes">
- <location line="+49"/>
+ <location line="+61"/>
<source>%n translation unit(s) loaded.</source>
<translation type="unfinished">
<numerusform></numerusform>
</translation>
</message>
<message>
- <location line="+92"/>
+ <location line="+93"/>
<source>Related files (%1);;</source>
<translation type="unfinished"></translation>
</message>
@@ -844,20 +846,20 @@ Skip loading the first named file?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+9"/>
- <location line="+30"/>
+ <location line="+10"/>
+ <location line="+31"/>
<source>File saved.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+14"/>
- <location line="+1184"/>
+ <location line="+15"/>
+ <location line="+1164"/>
<location filename="../tools/linguist/linguist/mainwindow.ui"/>
<source>Release</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-1183"/>
+ <location line="-1163"/>
<source>Qt message files for released applications (*.qm)
All files (*)</source>
<translation type="unfinished"></translation>
@@ -920,7 +922,7 @@ All files (*)</source>
<message>
<location line="+17"/>
<location line="+278"/>
- <location line="+60"/>
+ <location line="+40"/>
<location line="+24"/>
<location line="+22"/>
<location line="+516"/>
@@ -932,7 +934,7 @@ All files (*)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-1224"/>
+ <location line="-1204"/>
<location line="+102"/>
<source>Cannot find the string &apos;%1&apos;.</source>
<translation type="unfinished"></translation>
@@ -1027,27 +1029,7 @@ All files (*)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+2"/>
- <source> Open Source Edition</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location line="+7"/>
- <source>This version of Qt Linguist is part of the Qt Open Source Edition, for use in the development of Open Source applications. Qt is a comprehensive C++ framework for cross-platform application development.&lt;br/&gt;&lt;br/&gt;You need a commercial Qt license for development of proprietary (closed source) applications. Please see &lt;tt&gt;http://qtsoftware.com/company/model.html&lt;/tt&gt; for an overview of Qt licensing.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location line="+8"/>
- <source>This program is licensed to you under the terms of the Qt %1 License Agreement. For details, see the license file that came with this software distribution.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location line="+4"/>
- <source>This program is licensed to you under the terms of the Qt Commercial License Agreement. For details, see the file LICENSE that came with this software distribution.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location line="+5"/>
+ <location line="+6"/>
<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;%2&lt;/p&gt;&lt;p&gt;Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).&lt;/p&gt;&lt;p&gt;The program is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
@@ -1230,7 +1212,7 @@ All files (*)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+312"/>
+ <location line="+314"/>
<source>All</source>
<translation type="unfinished"></translation>
</message>
@@ -1410,7 +1392,7 @@ All files (*)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../tools/linguist/linguist/mainwindow.cpp" line="-524"/>
+ <location filename="../tools/linguist/linguist/mainwindow.cpp" line="-526"/>
<location filename="../tools/linguist/linguist/mainwindow.ui"/>
<source>&amp;Batch Translation...</source>
<translation type="unfinished"></translation>
@@ -1431,11 +1413,21 @@ All files (*)</source>
<source>Ctrl+T</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <location/>
+ <source>Ctrl+J</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location/>
+ <source>Ctrl+Shift+J</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>MessageEditor</name>
<message>
- <location filename="../tools/linguist/linguist/messageeditor.cpp" line="+42"/>
+ <location filename="../tools/linguist/linguist/messageeditor.cpp" line="+72"/>
<source>German</source>
<translation type="unfinished"></translation>
</message>
@@ -1529,7 +1521,7 @@ Line: %2</source>
<context>
<name>MessageModel</name>
<message>
- <location filename="../tools/linguist/linguist/messagemodel.cpp" line="+861"/>
+ <location filename="../tools/linguist/linguist/messagemodel.cpp" line="+832"/>
<source>Completion status for %1</source>
<translation type="unfinished"></translation>
</message>
@@ -1552,7 +1544,7 @@ Line: %2</source>
<context>
<name>MsgEdit</name>
<message>
- <location filename="../tools/linguist/linguist/messageeditor.cpp" line="-547"/>
+ <location filename="../tools/linguist/linguist/messageeditor.cpp" line="-577"/>
<source></source>
<comment>This is the right panel of the main window.</comment>
<translation></translation>
@@ -1661,7 +1653,7 @@ Line: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../tools/linguist/linguist/phrasebookbox.cpp" line="-114"/>
+ <location filename="../tools/linguist/linguist/phrasebookbox.cpp" line="-144"/>
<source></source>
<comment>Go to Phrase &gt; Edit Phrase Book... The dialog that pops up is a PhraseBookBox.</comment>
<translation></translation>
@@ -1670,7 +1662,7 @@ Line: %2</source>
<context>
<name>PhraseModel</name>
<message>
- <location filename="../tools/linguist/linguist/phrasemodel.cpp" line="+87"/>
+ <location filename="../tools/linguist/linguist/phrasemodel.cpp" line="+117"/>
<source>Source phrase</source>
<translation type="unfinished"></translation>
</message>
@@ -1688,7 +1680,7 @@ Line: %2</source>
<context>
<name>PhraseView</name>
<message>
- <location filename="../tools/linguist/linguist/phraseview.cpp" line="+91"/>
+ <location filename="../tools/linguist/linguist/phraseview.cpp" line="+121"/>
<source>Insert</source>
<translation type="unfinished"></translation>
</message>
@@ -1716,7 +1708,7 @@ Line: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../tools/linguist/linguist/mainwindow.cpp" line="-1296"/>
+ <location filename="../tools/linguist/linguist/mainwindow.cpp" line="-1279"/>
<source>Translation files (%1);;</source>
<translation type="unfinished"></translation>
</message>
@@ -1726,37 +1718,38 @@ Line: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../tools/linguist/linguist/messagemodel.cpp" line="-1086"/>
+ <location filename="../tools/linguist/linguist/messagemodel.cpp" line="-1118"/>
<location line="+18"/>
- <location line="+101"/>
+ <location line="+67"/>
+ <location line="+39"/>
<location line="+17"/>
<location line="+15"/>
- <location filename="../tools/linguist/linguist/phrase.cpp" line="+166"/>
+ <location filename="../tools/linguist/linguist/phrase.cpp" line="+196"/>
<source>Qt Linguist</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../tools/linguist/shared/cpp.cpp" line="+1039"/>
+ <location filename="../tools/linguist/shared/cpp.cpp" line="+1072"/>
<source>C++ source files</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../tools/linguist/shared/java.cpp" line="+624"/>
+ <location filename="../tools/linguist/shared/java.cpp" line="+646"/>
<source>Java source files</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../tools/linguist/shared/po.cpp" line="+584"/>
+ <location filename="../tools/linguist/shared/po.cpp" line="+651"/>
<source>GNU Gettext localization files</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../tools/linguist/shared/qscript.cpp" line="+2369"/>
+ <location filename="../tools/linguist/shared/qscript.cpp" line="+2399"/>
<source>Qt Script source files</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../tools/linguist/shared/ts.cpp" line="+617"/>
+ <location filename="../tools/linguist/shared/ts.cpp" line="+752"/>
<source>Qt translation sources (format 1.1)</source>
<translation type="unfinished"></translation>
</message>
@@ -1767,11 +1760,11 @@ Line: %2</source>
</message>
<message>
<location line="+9"/>
- <source>Qt translation sources</source>
+ <source>Qt translation sources (latest format)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../tools/linguist/shared/ui.cpp" line="+171"/>
+ <location filename="../tools/linguist/shared/ui.cpp" line="+213"/>
<source>Qt Designer form files</source>
<translation type="unfinished"></translation>
</message>
@@ -1781,15 +1774,20 @@ Line: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../tools/linguist/shared/xliff.cpp" line="+778"/>
+ <location filename="../tools/linguist/shared/xliff.cpp" line="+817"/>
<source>XLIFF localization files</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <location filename="../tools/linguist/shared/qph.cpp" line="+192"/>
+ <source>Qt Linguist &apos;Phrase Book&apos;</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>SourceCodeView</name>
<message>
- <location filename="../tools/linguist/linguist/sourcecodeview.cpp" line="+40"/>
+ <location filename="../tools/linguist/linguist/sourcecodeview.cpp" line="+70"/>
<source>&lt;i&gt;Source code not available&lt;/i&gt;</source>
<translation type="unfinished"></translation>
</message>
@@ -1932,7 +1930,7 @@ Line: %2</source>
<context>
<name>TranslationSettingsDialog</name>
<message>
- <location filename="../tools/linguist/linguist/translationsettingsdialog.cpp" line="+38"/>
+ <location filename="../tools/linguist/linguist/translationsettingsdialog.cpp" line="+68"/>
<source>Any Country</source>
<translation type="unfinished"></translation>
</message>
diff --git a/translations/linguist_zh_CN.ts b/translations/linguist_zh_CN.ts
index a9ecdb6..3a81543 100644
--- a/translations/linguist_zh_CN.ts
+++ b/translations/linguist_zh_CN.ts
@@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.0" language="zh">
-<defaultcodec></defaultcodec>
<context>
<name></name>
<message>
@@ -9,7 +8,7 @@
<translation type="obsolete">(新短语)</translation>
</message>
<message>
- <location filename="../tools/linguist/linguist/phrasebookbox.cpp" line="+29"/>
+ <location filename="../tools/linguist/linguist/phrasebookbox.cpp" line="+59"/>
<source>(New Entry)</source>
<translation>(新æ¡ç›®ï¼‰</translation>
</message>
@@ -17,7 +16,7 @@
<context>
<name>AboutDialog</name>
<message>
- <location filename="../tools/linguist/linguist/mainwindow.cpp" line="+1318"/>
+ <location filename="../tools/linguist/linguist/mainwindow.cpp" line="+1357"/>
<source>Qt Linguist</source>
<translation>Qt 语言家</translation>
</message>
@@ -25,7 +24,7 @@
<context>
<name>BatchTranslationDialog</name>
<message numerus="yes">
- <location filename="../tools/linguist/linguist/batchtranslationdialog.cpp" line="+129"/>
+ <location filename="../tools/linguist/linguist/batchtranslationdialog.cpp" line="+159"/>
<source>Batch translated %n entries</source>
<translation>
<numerusform>å·²ç»æ‰¹ç¿»è¯‘ %n 个æ¡ç›®</numerusform>
@@ -115,7 +114,7 @@
<context>
<name>DataModel</name>
<message>
- <location filename="../tools/linguist/linguist/messagemodel.cpp" line="+184"/>
+ <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;在“%1â€ä¸­æ‰¾åˆ°çš„é‡å¤ä¿¡æ¯ï¼š</translation>
</message>
@@ -135,10 +134,21 @@
<translation>&lt;br&gt;* 注释:%3</translation>
</message>
<message>
- <location line="+121"/>
+ <location line="+70"/>
+ <source>Linguist does not know the plural rules for &apos;%1&apos;.
+Will assume a single universal form.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+56"/>
<source>Cannot create &apos;%2&apos;: %1</source>
<translation>ä¸èƒ½åˆ›å»º&apos;%2&apos;: %1</translation>
</message>
+ <message>
+ <location line="+56"/>
+ <source>Universal Form</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>EditorPage</name>
@@ -198,7 +208,7 @@
<context>
<name>ErrorsView</name>
<message>
- <location filename="../tools/linguist/linguist/errorsview.cpp" line="+46"/>
+ <location filename="../tools/linguist/linguist/errorsview.cpp" line="+76"/>
<source>Accelerator possibly superfluous in translation.</source>
<translation>译文中å¯èƒ½åŠ é€Ÿé”®è¿‡å¤šã€‚</translation>
</message>
@@ -342,7 +352,7 @@
<context>
<name>LRelease</name>
<message numerus="yes">
- <location filename="../tools/linguist/shared/qm.cpp" line="+653"/>
+ <location filename="../tools/linguist/shared/qm.cpp" line="+715"/>
<source> Generated %n translation(s) (%1 finished and %2 unfinished)
</source>
<translation>
@@ -538,9 +548,8 @@ p, li { white-space: pre-wrap; }
<translation>Ctrl+K</translation>
</message>
<message>
- <location/>
<source>Ctrl+L</source>
- <translation>Ctrl+L</translation>
+ <translation type="obsolete">Ctrl+L</translation>
</message>
<message>
<location/>
@@ -583,9 +592,8 @@ p, li { white-space: pre-wrap; }
<translation>Ctrl+Shift+K</translation>
</message>
<message>
- <location/>
<source>Ctrl+Shift+L</source>
- <translation>Ctrl+Shift+L</translation>
+ <translation type="obsolete">Ctrl+Shift+L</translation>
</message>
<message>
<location/>
@@ -816,13 +824,13 @@ p, li { white-space: pre-wrap; }
<translation>替æ¢æ‰€æœ‰å’Œæœç´¢çš„æºæ–‡åŒ¹é…çš„æ¡ç›®çš„译文。</translation>
</message>
<message>
- <location filename="../tools/linguist/linguist/mainwindow.cpp" line="-1965"/>
+ <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="+165"/>
+ <location line="+195"/>
<source>Source text</source>
<translation>æºæ–‡</translation>
</message>
@@ -875,18 +883,18 @@ p, li { white-space: pre-wrap; }
<translation>已修改</translation>
</message>
<message>
- <location line="+124"/>
+ <location line="+125"/>
<source>Loading...</source>
<translation>正在载入...</translation>
</message>
<message>
+ <location line="+32"/>
<location line="+22"/>
- <location line="+20"/>
<source>Loading File - Qt Linguist</source>
<translation>正在载入文件 - Qt 语言家</translation>
</message>
<message>
- <location line="-19"/>
+ <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>
@@ -895,7 +903,7 @@ Close the open file(s) first?</source>
è¦å°†æ‰“开的文件先关闭么?</translation>
</message>
<message>
- <location line="+20"/>
+ <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>
@@ -904,14 +912,14 @@ Skip loading the first named file?</source>
è¦è·³è¿‡å¯¹ç¬¬ä¸€ä¸ªæ–‡ä»¶çš„加载么?</translation>
</message>
<message numerus="yes">
- <location line="+49"/>
+ <location line="+61"/>
<source>%n translation unit(s) loaded.</source>
<translation>
<numerusform>%n 个翻译å•å…ƒå·²ç»è¢«åŠ è½½ã€‚</numerusform>
</translation>
</message>
<message>
- <location line="+92"/>
+ <location line="+93"/>
<source>Related files (%1);;</source>
<translation>相关文件(%1);;</translation>
</message>
@@ -921,20 +929,20 @@ Skip loading the first named file?</source>
<translation>打开翻译文件</translation>
</message>
<message>
- <location line="+9"/>
- <location line="+30"/>
+ <location line="+10"/>
+ <location line="+31"/>
<source>File saved.</source>
<translation>文件已ä¿å­˜ã€‚</translation>
</message>
<message>
- <location line="+14"/>
- <location line="+1184"/>
+ <location line="+15"/>
+ <location line="+1164"/>
<location filename="../tools/linguist/linguist/mainwindow.ui"/>
<source>Release</source>
<translation>å‘布</translation>
</message>
<message>
- <location line="-1183"/>
+ <location line="-1163"/>
<source>Qt message files for released applications (*.qm)
All files (*)</source>
<translation>用于å‘布应用程åºçš„ Qt 消æ¯æ–‡ä»¶ (*.qm)
@@ -998,7 +1006,7 @@ All files (*)</source>
<message>
<location line="+17"/>
<location line="+278"/>
- <location line="+60"/>
+ <location line="+40"/>
<location line="+24"/>
<location line="+22"/>
<location line="+516"/>
@@ -1010,7 +1018,7 @@ All files (*)</source>
<translation>Qt 语言家</translation>
</message>
<message>
- <location line="-1224"/>
+ <location line="-1204"/>
<location line="+102"/>
<source>Cannot find the string &apos;%1&apos;.</source>
<translation>无法找到字符串“%1â€ã€‚</translation>
@@ -1116,27 +1124,23 @@ All files (*)</source>
<translation>%1 版本</translation>
</message>
<message>
- <location line="+2"/>
<source> Open Source Edition</source>
- <translation>å¼€æºç‰ˆæœ¬</translation>
+ <translation type="obsolete">å¼€æºç‰ˆæœ¬</translation>
</message>
<message>
- <location line="+7"/>
<source>This version of Qt Linguist is part of the Qt Open Source Edition, for use in the development of Open Source applications. Qt is a comprehensive C++ framework for cross-platform application development.&lt;br/&gt;&lt;br/&gt;You need a commercial Qt license for development of proprietary (closed source) applications. Please see &lt;tt&gt;http://qtsoftware.com/company/model.html&lt;/tt&gt; for an overview of Qt licensing.</source>
- <translation>这个版本的 Qt 语言家是 Qt å¼€æºç‰ˆæœ¬çš„一部分,用于开å‘å¼€æºåº”用程åºã€‚Qt 是一个用于跨平å°åº”用程åºå¼€å‘çš„ç»¼åˆ C++ 框架。&lt;br/&gt;&lt;br/&gt;å¼€å‘商业(闭æºï¼‰åº”用程åºï¼Œä½ éœ€è¦å•†ä¸š Qt 许å¯ã€‚对于 Qt 许å¯çš„概览,请å‚考&lt;tt&gt;http://qtsoftware.com/company/model.html&lt;/tt&gt;。</translation>
+ <translation type="obsolete">这个版本的 Qt 语言家是 Qt å¼€æºç‰ˆæœ¬çš„一部分,用于开å‘å¼€æºåº”用程åºã€‚Qt 是一个用于跨平å°åº”用程åºå¼€å‘çš„ç»¼åˆ C++ 框架。&lt;br/&gt;&lt;br/&gt;å¼€å‘商业(闭æºï¼‰åº”用程åºï¼Œä½ éœ€è¦å•†ä¸š Qt 许å¯ã€‚对于 Qt 许å¯çš„概览,请å‚考&lt;tt&gt;http://qtsoftware.com/company/model.html&lt;/tt&gt;。</translation>
</message>
<message>
- <location line="+8"/>
<source>This program is licensed to you under the terms of the Qt %1 License Agreement. For details, see the license file that came with this software distribution.</source>
- <translation>我们已ç»å…许您在 Qt %1 许å¯å议下使用本程åºã€‚有关细节,请阅读本软件å‘行中所带的å议文件。</translation>
+ <translation type="obsolete">我们已ç»å…许您在 Qt %1 许å¯å议下使用本程åºã€‚有关细节,请阅读本软件å‘行中所带的å议文件。</translation>
</message>
<message>
- <location line="+4"/>
<source>This program is licensed to you under the terms of the Qt Commercial License Agreement. For details, see the file LICENSE that came with this software distribution.</source>
- <translation>我们已ç»å…许您在 Qt 商业许å¯å议下使用本程åºã€‚有关细节,请阅读本软件å‘行中所带的 LICENSE 文件。</translation>
+ <translation type="obsolete">我们已ç»å…许您在 Qt 商业许å¯å议下使用本程åºã€‚有关细节,请阅读本软件å‘行中所带的 LICENSE 文件。</translation>
</message>
<message>
- <location line="+5"/>
+ <location line="+6"/>
<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;%2&lt;/p&gt;&lt;p&gt;Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).&lt;/p&gt;&lt;p&gt;The program is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.&lt;/p&gt;</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 语言家是一个用于为 Qt 应用程åºæ·»åŠ ç¿»è¯‘的工具。&lt;/p&gt;&lt;p&gt;%2&lt;/p&gt;&lt;p&gt;版æƒæ‰€æœ‰ (C) 2000-$THISYEAR$ Nokiaå…¬å¸å’Œ/或它的å­å…¬å¸ã€‚所有æƒåˆ©å·²è¢«ä¿ç•™ã€‚&lt;/p&gt;&lt;p&gt;本程åºæ˜¯åœ¨&lt;b&gt;没有任何担ä¿ï¼ˆå…¶ä¸­åŒ…括任何特定目的的设计ã€å•†ä¸šå’Œé€‚当性的担ä¿ï¼‰&lt;/b&gt;çš„æ¡ä»¶ä¸‹æ供的。&lt;/p&gt;</translation>
</message>
@@ -1302,7 +1306,7 @@ All files (*)</source>
<translation>是å¦ä¿å­˜çŸ­è¯­ä¹¦&apos;%1&apos;?</translation>
</message>
<message>
- <location line="+312"/>
+ <location line="+314"/>
<source>All</source>
<translation>全部</translation>
</message>
@@ -1376,7 +1380,7 @@ All files (*)</source>
<translation>译文(&amp;T)</translation>
</message>
<message>
- <location filename="../tools/linguist/linguist/mainwindow.cpp" line="-459"/>
+ <location filename="../tools/linguist/linguist/mainwindow.cpp" line="-461"/>
<location filename="../tools/linguist/linguist/mainwindow.ui"/>
<source>Translation</source>
<translation>译文</translation>
@@ -1624,6 +1628,16 @@ All files (*)</source>
<source>Toggle the validity check of ending punctuation. If the check fails, a message is shown in the warnings window.</source>
<translation>切æ¢ç»“æŸæ ‡ç‚¹æœ‰æ•ˆæ€§æ£€æŸ¥ã€‚如果检查失败,会在警告窗å£ä¸­æ˜¾ç¤ºä¸€æ¡æ¶ˆæ¯ã€‚</translation>
</message>
+ <message>
+ <location/>
+ <source>Ctrl+J</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location/>
+ <source>Ctrl+Shift+J</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>MessageEditor</name>
@@ -1652,7 +1666,7 @@ All files (*)</source>
<translation type="obsolete">制表符</translation>
</message>
<message>
- <location filename="../tools/linguist/linguist/messageeditor.cpp" line="+42"/>
+ <location filename="../tools/linguist/linguist/messageeditor.cpp" line="+72"/>
<source>German</source>
<translation>德语</translation>
</message>
@@ -1762,7 +1776,7 @@ Line: %2</source>
<translation type="obsolete">索引</translation>
</message>
<message>
- <location filename="../tools/linguist/linguist/messagemodel.cpp" line="+861"/>
+ <location filename="../tools/linguist/linguist/messagemodel.cpp" line="+832"/>
<source>Completion status for %1</source>
<translation>%1 的完æˆçŠ¶æ€</translation>
</message>
@@ -1792,7 +1806,7 @@ Line: %2</source>
<context>
<name>MsgEdit</name>
<message>
- <location filename="../tools/linguist/linguist/messageeditor.cpp" line="-549"/>
+ <location filename="../tools/linguist/linguist/messageeditor.cpp" line="-579"/>
<source></source>
<comment>This is the right panel of the main window.</comment>
<translation></translation>
@@ -1801,13 +1815,13 @@ Line: %2</source>
<context>
<name>PhraseBookBox</name>
<message>
- <location filename="../tools/linguist/linguist/phrasebookbox.cpp" line="-17"/>
+ <location filename="../tools/linguist/linguist/phrasebookbox.cpp" line="-47"/>
<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="+25"/>
+ <location line="+55"/>
<source>%1[*] - Qt Linguist</source>
<translation>%1[*] - Qt 语言家</translation>
</message>
@@ -1930,7 +1944,7 @@ Line: %2</source>
<context>
<name>PhraseModel</name>
<message>
- <location filename="../tools/linguist/linguist/phrasemodel.cpp" line="+91"/>
+ <location filename="../tools/linguist/linguist/phrasemodel.cpp" line="+121"/>
<source>Definition</source>
<translation>准确度</translation>
</message>
@@ -1948,7 +1962,7 @@ Line: %2</source>
<context>
<name>PhraseView</name>
<message>
- <location filename="../tools/linguist/linguist/phraseview.cpp" line="+91"/>
+ <location filename="../tools/linguist/linguist/phraseview.cpp" line="+121"/>
<source>Insert</source>
<translation>æ’å…¥</translation>
</message>
@@ -1976,7 +1990,7 @@ Line: %2</source>
<translation>已编译的 Qt 翻译</translation>
</message>
<message>
- <location filename="../tools/linguist/linguist/mainwindow.cpp" line="-1296"/>
+ <location filename="../tools/linguist/linguist/mainwindow.cpp" line="-1279"/>
<source>Translation files (%1);;</source>
<translation>翻译文件(%1);;</translation>
</message>
@@ -1986,37 +2000,38 @@ Line: %2</source>
<translation>全部文件(*)</translation>
</message>
<message>
- <location filename="../tools/linguist/linguist/messagemodel.cpp" line="-1086"/>
+ <location filename="../tools/linguist/linguist/messagemodel.cpp" line="-1118"/>
<location line="+18"/>
- <location line="+101"/>
+ <location line="+67"/>
+ <location line="+39"/>
<location line="+17"/>
<location line="+15"/>
- <location filename="../tools/linguist/linguist/phrase.cpp" line="+166"/>
+ <location filename="../tools/linguist/linguist/phrase.cpp" line="+196"/>
<source>Qt Linguist</source>
<translation>Qt 语言家</translation>
</message>
<message>
- <location filename="../tools/linguist/shared/cpp.cpp" line="+1039"/>
+ <location filename="../tools/linguist/shared/cpp.cpp" line="+1072"/>
<source>C++ source files</source>
<translation>C++æºæ–‡ä»¶</translation>
</message>
<message>
- <location filename="../tools/linguist/shared/java.cpp" line="+624"/>
+ <location filename="../tools/linguist/shared/java.cpp" line="+646"/>
<source>Java source files</source>
<translation>Javaæºæ–‡ä»¶</translation>
</message>
<message>
- <location filename="../tools/linguist/shared/po.cpp" line="+584"/>
+ <location filename="../tools/linguist/shared/po.cpp" line="+651"/>
<source>GNU Gettext localization files</source>
<translation>GNU Gettext 本地化文件</translation>
</message>
<message>
- <location filename="../tools/linguist/shared/qscript.cpp" line="+2369"/>
+ <location filename="../tools/linguist/shared/qscript.cpp" line="+2399"/>
<source>Qt Script source files</source>
<translation>Qt脚本æºæ–‡ä»¶</translation>
</message>
<message>
- <location filename="../tools/linguist/shared/ts.cpp" line="+617"/>
+ <location filename="../tools/linguist/shared/ts.cpp" line="+752"/>
<source>Qt translation sources (format 1.1)</source>
<translation>Qt翻译æºï¼ˆæ ¼å¼1.1)</translation>
</message>
@@ -2027,11 +2042,15 @@ Line: %2</source>
</message>
<message>
<location line="+9"/>
+ <source>Qt translation sources (latest format)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<source>Qt translation sources</source>
- <translation>Qt翻译æº</translation>
+ <translation type="obsolete">Qt翻译æº</translation>
</message>
<message>
- <location filename="../tools/linguist/shared/ui.cpp" line="+171"/>
+ <location filename="../tools/linguist/shared/ui.cpp" line="+213"/>
<source>Qt Designer form files</source>
<translation>Qt设计师表å•æ–‡ä»¶</translation>
</message>
@@ -2041,10 +2060,15 @@ Line: %2</source>
<translation>Qt Jambi表å•æ–‡ä»¶</translation>
</message>
<message>
- <location filename="../tools/linguist/shared/xliff.cpp" line="+778"/>
+ <location filename="../tools/linguist/shared/xliff.cpp" line="+817"/>
<source>XLIFF localization files</source>
<translation>XLIFF 本地化文件</translation>
</message>
+ <message>
+ <location filename="../tools/linguist/shared/qph.cpp" line="+192"/>
+ <source>Qt Linguist &apos;Phrase Book&apos;</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>QtWindowListMenu</name>
@@ -2083,7 +2107,7 @@ Line: %2</source>
<context>
<name>SourceCodeView</name>
<message>
- <location filename="../tools/linguist/linguist/sourcecodeview.cpp" line="+40"/>
+ <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;æºä»£ç ä¸å¯ç”¨&lt;/i&gt;</translation>
</message>
@@ -2651,7 +2675,7 @@ XLIFF 本地化文件 (*.xlf)
<context>
<name>TranslationSettingsDialog</name>
<message>
- <location filename="../tools/linguist/linguist/translationsettingsdialog.cpp" line="+38"/>
+ <location filename="../tools/linguist/linguist/translationsettingsdialog.cpp" line="+68"/>
<source>Any Country</source>
<translation>ä»»æ„国家</translation>
</message>
diff --git a/translations/linguist_zh_TW.ts b/translations/linguist_zh_TW.ts
index 47aff95..7bb7e57 100644
--- a/translations/linguist_zh_TW.ts
+++ b/translations/linguist_zh_TW.ts
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS><TS version="1.1" language="zh_TW">
-<defaultcodec></defaultcodec>
+<!DOCTYPE TS>
+<TS version="2.0" language="zh_TW">
<context>
<name></name>
<message>
@@ -8,7 +8,7 @@
<translation type="obsolete">(新片語)</translation>
</message>
<message>
- <location filename="../tools/linguist/linguist/phrasebookbox.cpp" line="29"/>
+ <location filename="../tools/linguist/linguist/phrasebookbox.cpp" line="+59"/>
<source>(New Entry)</source>
<translation>(新項目)</translation>
</message>
@@ -23,7 +23,7 @@
<context>
<name>AboutDialog</name>
<message>
- <location filename="../tools/linguist/linguist/mainwindow.cpp" line="1318"/>
+ <location filename="../tools/linguist/linguist/mainwindow.cpp" line="+1357"/>
<source>Qt Linguist</source>
<translation>Qt 語言家</translation>
</message>
@@ -31,73 +31,89 @@
<context>
<name>BatchTranslationDialog</name>
<message>
- <location filename="../tools/linguist/linguist/batchtranslationdialog.cpp" line="49"/>
+ <location filename="../tools/linguist/linguist/batchtranslationdialog.cpp" line="+79"/>
<source>Batch Translation of &apos;%1&apos; - Qt Linguist</source>
<translation>批次翻譯 %1 ─ Qt 語言家</translation>
</message>
<message>
+ <location line="+37"/>
<source>Searching, please wait...</source>
<translation>æœå°‹ä¸­ï¼Œè«‹ç¨å€™...</translation>
</message>
<message>
+ <location line="+0"/>
<source>&amp;Cancel</source>
<translation>å–消(&amp;C)</translation>
</message>
<message>
+ <location line="+42"/>
<source>Linguist batch translator</source>
<translation>語言家批次翻譯器</translation>
</message>
<message numerus="yes">
+ <location line="+1"/>
<source>Batch translated %n entries</source>
<translation>
<numerusform>已批次翻譯 %n 個æ¢ç›®</numerusform>
</translation>
</message>
<message>
+ <location filename="../tools/linguist/linguist/batchtranslation.ui"/>
<source>Qt Linguist - Batch Translation</source>
<translation>Qt 語言家─批次翻譯</translation>
</message>
<message>
+ <location/>
<source>Options</source>
<translation>é¸é …</translation>
</message>
<message>
+ <location/>
<source>Set translated entries to finished</source>
<translation>將已翻譯æ¢ç›®è¨­ç‚ºå®Œæˆ</translation>
</message>
<message>
+ <location/>
<source>Retranslate entries with existing translation</source>
<translation>以ç¾æœ‰çš„翻譯來é‡æ–°ç¿»è­¯é …ç›®</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>注æ„,若上述的「將已翻譯æ¢ç›®è¨­ç‚ºå®Œæˆã€æœªè¢«å‹¾é¸ï¼Œå‰‡è®Šæ›´çš„項目將會設為「未完æˆã€ã€‚</translation>
</message>
<message>
+ <location/>
<source>Translate also finished entries</source>
<translation>也å°å·²å®Œæˆçš„é …ç›®åšç¿»è­¯</translation>
</message>
<message>
+ <location/>
<source>Phrase book preference</source>
<translation>片語書喜好設定</translation>
</message>
<message>
+ <location/>
<source>Move up</source>
<translation>上移</translation>
</message>
<message>
+ <location/>
<source>Move down</source>
<translation>下移</translation>
</message>
<message>
+ <location/>
<source>The batch translator will search through the selected phrase books in the order given above.</source>
<translation>批次翻譯器會ä¾æŒ‡å®šçš„é †åºæœå°‹é¸å–的片語書。</translation>
</message>
<message>
+ <location/>
<source>&amp;Run</source>
<translation>執行(&amp;R)</translation>
</message>
<message>
+ <location/>
<source>Cancel</source>
<translation>å–消</translation>
</message>
@@ -105,26 +121,41 @@
<context>
<name>DataModel</name>
<message>
- <location filename="../tools/linguist/linguist/messagemodel.cpp" line="184"/>
+ <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;複製在 %1 找到的訊æ¯ï¼š</translation>
</message>
<message>
+ <location line="+4"/>
<source>&lt;p&gt;[more duplicates omitted]</source>
<translation>&lt;p&gt;[çœç•¥æ›´å¤šè¤‡è£½]</translation>
</message>
<message>
+ <location line="+3"/>
<source>&lt;p&gt;* Context: %1&lt;br&gt;* Source: %2</source>
<translation>&lt;p&gt;* 內文:%1&lt;br&gt;* æºç¢¼ï¼š%2</translation>
</message>
<message>
+ <location line="+3"/>
<source>&lt;br&gt;* Comment: %3</source>
<translation>&lt;br&gt;* 註解:%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 type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+56"/>
<source>Cannot create &apos;%2&apos;: %1</source>
<translation>無法建立 %2:%1</translation>
</message>
+ <message>
+ <location line="+56"/>
+ <source>Universal Form</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>EditorPage</name>
@@ -196,31 +227,37 @@
<context>
<name>ErrorsView</name>
<message>
- <location filename="../tools/linguist/linguist/errorsview.cpp" line="46"/>
+ <location filename="../tools/linguist/linguist/errorsview.cpp" line="+76"/>
<source>Accelerator possibly superfluous in translation.</source>
<translation>翻譯中的快æ·éµå¯èƒ½éŽå¤šã€‚</translation>
</message>
<message>
+ <location line="+3"/>
<source>Accelerator possibly missing in translation.</source>
<translation>翻譯中的快æ·éµå¯èƒ½æœ‰éºå¤±ã€‚</translation>
</message>
<message>
+ <location line="+3"/>
<source>Translation does not end with the same punctuation as the source text.</source>
<translation>翻譯沒有以與原始訊æ¯ç›¸åŒçš„標點çµæŸã€‚</translation>
</message>
<message>
+ <location line="+3"/>
<source>A phrase book suggestion for &apos;%1&apos; was ignored.</source>
<translation>å° %1 的片語書建議已被忽略。</translation>
</message>
<message>
+ <location line="+3"/>
<source>Translation does not refer to the same place markers as in the source text.</source>
<translation>翻譯中使用了原始訊æ¯ä¸­æ²’有的åƒæ•¸ç¬¦ã€‚</translation>
</message>
<message>
+ <location line="+3"/>
<source>Translation does not contain the necessary %n place marker.</source>
<translation>翻譯中未包å«å¿…須的 %n åƒæ•¸ç¬¦ã€‚</translation>
</message>
<message>
+ <location line="+3"/>
<source>Unknown error</source>
<translation>未知的錯誤</translation>
</message>
@@ -232,6 +269,7 @@
<translation type="obsolete">Qt 語言家</translation>
</message>
<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>此視窗讓您æœå°‹ç¿»è­¯æºç¢¼æª”中的一些文字。</translation>
</message>
@@ -240,14 +278,17 @@
<translation type="obsolete">è¦æœå°‹çš„文字:</translation>
</message>
<message>
+ <location/>
<source>Type in the text to search for.</source>
<translation>請輸入è¦æœå°‹çš„文字。</translation>
</message>
<message>
+ <location/>
<source>Options</source>
<translation>é¸é …</translation>
</message>
<message>
+ <location/>
<source>Source texts are searched when checked.</source>
<translation>勾é¸æ­¤é …目的話,會æœå°‹åŽŸå§‹è¨Šæ¯ä¸­çš„文字。</translation>
</message>
@@ -256,6 +297,7 @@
<translation type="obsolete">原始訊æ¯æ–‡å­—</translation>
</message>
<message>
+ <location/>
<source>Translations are searched when checked.</source>
<translation>勾é¸æ­¤é …目的話,會æœå°‹å·²ç¿»è­¯çš„文字。</translation>
</message>
@@ -264,6 +306,7 @@
<translation type="obsolete">翻譯</translation>
</message>
<message>
+ <location/>
<source>Texts such as &apos;TeX&apos; and &apos;tex&apos; are considered as different when checked.</source>
<translation>勾é¸æ­¤é …目的話,TeX 與 tex 會被èªç‚ºæ˜¯å…©å€‹ä¸åŒçš„字串。</translation>
</message>
@@ -272,6 +315,7 @@
<translation type="obsolete">符åˆå¤§å°å¯«</translation>
</message>
<message>
+ <location/>
<source>Comments and contexts are searched when checked.</source>
<translation>勾é¸æ­¤é …目的話,會æœå°‹è¨»è§£èˆ‡å…§æ–‡ã€‚</translation>
</message>
@@ -280,51 +324,62 @@
<translation type="obsolete">註解</translation>
</message>
<message>
+ <location/>
<source>Click here to find the next occurrence of the text you typed in.</source>
<translation>點é¸é€™è£¡ä»¥å°‹æ‰¾ä¸‹ä¸€ç­†ç¬¦åˆçš„字串。</translation>
</message>
<message>
+ <location/>
<source>Find Next</source>
<translation>尋找下一個</translation>
</message>
<message>
+ <location/>
<source>Click here to close this window.</source>
<translation>點é¸é€™è£¡ä»¥é—œé–‰è¦–窗。</translation>
</message>
<message>
+ <location/>
<source>Cancel</source>
<translation>å–消</translation>
</message>
<message>
+ <location/>
<source>Find</source>
<translation>尋找</translation>
</message>
<message>
+ <location/>
<source>&amp;Find what:</source>
<translation>尋找什麼(&amp;F):</translation>
</message>
<message>
+ <location/>
<source>&amp;Source texts</source>
<translation>來æºæ–‡å­—(&amp;S)</translation>
</message>
<message>
+ <location/>
<source>&amp;Translations</source>
<translation>翻譯(&amp;T)</translation>
</message>
<message>
+ <location/>
<source>&amp;Match case</source>
<translation>符åˆå¤§å°å¯«(&amp;M)</translation>
</message>
<message>
+ <location/>
<source>&amp;Comments</source>
<translation>註解(&amp;C)</translation>
</message>
<message>
+ <location/>
<source>Ignore &amp;accelerators</source>
<translation>忽略快æ·éµ(&amp;A)</translation>
</message>
<message>
- <location filename="../tools/linguist/linguist/finddialog.cpp" line="14"/>
+ <location filename="../tools/linguist/linguist/finddialog.cpp" line="+14"/>
<source></source>
<comment>Choose Edit|Find from the menu bar or press Ctrl+F to pop up the Find dialog</comment>
<translation></translation>
@@ -359,7 +414,7 @@
<context>
<name>LRelease</name>
<message numerus="yes">
- <location filename="../tools/linguist/shared/qm.cpp" line="653"/>
+ <location filename="../tools/linguist/shared/qm.cpp" line="+715"/>
<source> Generated %n translation(s) (%1 finished and %2 unfinished)
</source>
<translation>
@@ -368,6 +423,7 @@
</translation>
</message>
<message numerus="yes">
+ <location line="+4"/>
<source> Ignored %n untranslated source text(s)
</source>
<translation>
@@ -462,38 +518,47 @@ p, li { white-space: pre-wrap; }
<context>
<name>MainWindow</name>
<message>
+ <location filename="../tools/linguist/linguist/mainwindow.ui"/>
<source>MainWindow</source>
<translation>主視窗</translation>
</message>
<message>
+ <location/>
<source>&amp;Phrases</source>
<translation>片語(&amp;P)</translation>
</message>
<message>
+ <location/>
<source>&amp;Close Phrase Book</source>
<translation>關閉片語書(&amp;C)</translation>
</message>
<message>
+ <location/>
<source>&amp;Edit Phrase Book</source>
<translation>編輯片語書(&amp;E)</translation>
</message>
<message>
+ <location/>
<source>&amp;Print Phrase Book</source>
<translation>列å°ç‰‡èªžæ›¸(&amp;P)</translation>
</message>
<message>
+ <location/>
<source>V&amp;alidation</source>
<translation>確èª(&amp;A)</translation>
</message>
<message>
+ <location/>
<source>&amp;View</source>
<translation>檢視(&amp;V)</translation>
</message>
<message>
+ <location/>
<source>Vie&amp;ws</source>
<translation>檢視(&amp;W)</translation>
</message>
<message>
+ <location/>
<source>&amp;Toolbars</source>
<translation>工具列(&amp;T)</translation>
</message>
@@ -502,14 +567,17 @@ p, li { white-space: pre-wrap; }
<translation type="obsolete">工具(&amp;L)</translation>
</message>
<message>
+ <location/>
<source>&amp;Help</source>
<translation>說明(&amp;H)</translation>
</message>
<message>
+ <location/>
<source>&amp;Translation</source>
<translation>翻譯(&amp;T)</translation>
</message>
<message>
+ <location/>
<source>&amp;File</source>
<translation>檔案(&amp;F)</translation>
</message>
@@ -518,6 +586,7 @@ p, li { white-space: pre-wrap; }
<translation type="obsolete">最近開啟的檔案(&amp;C)</translation>
</message>
<message>
+ <location/>
<source>&amp;Edit</source>
<translation>編輯(&amp;E)</translation>
</message>
@@ -530,63 +599,80 @@ p, li { white-space: pre-wrap; }
<translation type="obsolete">é–‹å•Ÿ(&amp;O)</translation>
</message>
<message>
+ <location/>
<source>Open a Qt translation source file (TS file) for editing</source>
<translation>é–‹å•Ÿ Qt 翻譯æºç¢¼æª” (TS 檔) 來編輯</translation>
</message>
<message>
+ <location/>
<source>Ctrl+O</source>
<translation>Ctrl+Q</translation>
</message>
<message>
+ <location/>
<source>E&amp;xit</source>
<translation>離開(&amp;X)</translation>
</message>
<message>
+ <location/>
<source>Close this window and exit.</source>
<translation>關閉視窗並離開。</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;S)</translation>
</message>
<message>
+ <location filename="../tools/linguist/linguist/mainwindow.ui"/>
<source>Save changes made to this Qt translation source file</source>
<translation>儲存å°æ­¤æª”案的變更</translation>
</message>
<message>
+ <location/>
<source>Open Read-O&amp;nly...</source>
<translation>以唯讀模å¼é–‹å•Ÿ(&amp;N)...</translation>
</message>
<message>
+ <location/>
<source>&amp;Save All</source>
<translation>全部儲存(&amp;S)</translation>
</message>
<message>
+ <location/>
<source>Ctrl+S</source>
<translation>Ctrl+S</translation>
</message>
<message>
+ <location filename="../tools/linguist/linguist/mainwindow.cpp" line="-14"/>
+ <location line="+11"/>
+ <location filename="../tools/linguist/linguist/mainwindow.ui"/>
<source>Save &amp;As...</source>
<translation>å¦å­˜æ–°æª”(&amp;A)...</translation>
</message>
<message>
+ <location filename="../tools/linguist/linguist/mainwindow.ui"/>
<source>Save As...</source>
<translation>å¦å­˜æ–°æª”...</translation>
</message>
<message>
+ <location/>
<source>Save changes made to this Qt translation source file into a new file.</source>
<translation>將此檔存æˆå¦ä¸€å€‹æª”案。</translation>
</message>
<message>
- <location filename="../tools/linguist/linguist/mainwindow.cpp" line="4"/>
+ <location filename="../tools/linguist/linguist/mainwindow.cpp" line="+4"/>
<source>&amp;Release</source>
<translation>釋出(&amp;R)</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>以目å‰çš„訊æ¯æª”來建立é©ç”¨æ–¼é‡‹å‡ºæ‡‰ç”¨ç¨‹å¼çš„ Qt 訊æ¯æª”。</translation>
</message>
@@ -599,10 +685,12 @@ p, li { white-space: pre-wrap; }
<translation type="obsolete">列å°ç›®å‰ Qt 翻譯æºç¢¼æª”中所有的片語清單。</translation>
</message>
<message>
+ <location/>
<source>Ctrl+P</source>
<translation>Ctrl+P</translation>
</message>
<message>
+ <location/>
<source>&amp;Undo</source>
<translation>復原(&amp;U)</translation>
</message>
@@ -611,66 +699,82 @@ p, li { white-space: pre-wrap; }
<translation type="obsolete">復原上次的編輯動作。</translation>
</message>
<message>
+ <location/>
<source>Ctrl+Z</source>
<translation>Ctrl+Z</translation>
</message>
<message>
+ <location/>
<source>&amp;Redo</source>
<translation>é‡åš(&amp;R)</translation>
</message>
<message>
+ <location/>
<source>Redo an undone editing operation performed on the translation.</source>
<translation>é‡åšä¸Šæ¬¡å¾©åŽŸçš„動作。</translation>
</message>
<message>
+ <location/>
<source>Ctrl+Y</source>
<translation>Ctrl+Y</translation>
</message>
<message>
+ <location/>
<source>Cu&amp;t</source>
<translation>剪下(&amp;T)</translation>
</message>
<message>
+ <location/>
<source>Copy the selected translation text to the clipboard and deletes it.</source>
<translation>å°‡é¸å–的翻譯文字剪下。</translation>
</message>
<message>
+ <location/>
<source>Ctrl+X</source>
<translation>Ctrl+X</translation>
</message>
<message>
+ <location/>
<source>&amp;Copy</source>
<translation>複製(&amp;C)</translation>
</message>
<message>
+ <location/>
<source>Copy the selected translation text to the clipboard.</source>
<translation>複製所é¸å–的文字到剪貼簿中。</translation>
</message>
<message>
+ <location/>
<source>Ctrl+C</source>
<translation>Ctrl+C</translation>
</message>
<message>
+ <location/>
<source>&amp;Paste</source>
<translation>貼上(&amp;P)</translation>
</message>
<message>
+ <location/>
<source>Paste the clipboard text into the translation.</source>
<translation>將剪貼簿內容貼到翻譯å€ã€‚</translation>
</message>
<message>
+ <location/>
<source>Ctrl+V</source>
<translation>Ctrl+V</translation>
</message>
<message>
+ <location/>
<source>Select &amp;All</source>
<translation>全部é¸å–(&amp;A)</translation>
</message>
<message>
+ <location/>
<source>Select the whole translation text.</source>
<translation>é¸æ“‡æ•´å€‹ç¿»è­¯æ–‡å­—。</translation>
</message>
<message>
+ <location/>
<source>Ctrl+A</source>
<translation>Ctrl+A</translation>
</message>
@@ -679,26 +783,32 @@ p, li { white-space: pre-wrap; }
<translation type="obsolete">尋找(&amp;F)</translation>
</message>
<message>
+ <location/>
<source>Search for some text in the translation source file.</source>
<translation>在翻譯æºç¢¼æª”中尋找文字。</translation>
</message>
<message>
+ <location/>
<source>Ctrl+F</source>
<translation>Ctrl+F</translation>
</message>
<message>
+ <location/>
<source>Find &amp;Next</source>
<translation>尋找下一個(&amp;N)</translation>
</message>
<message>
+ <location/>
<source>Continue the search where it was left.</source>
<translation>繼續尋找下一個。</translation>
</message>
<message>
+ <location/>
<source>F3</source>
<translation>F3</translation>
</message>
<message>
+ <location/>
<source>&amp;Prev Unfinished</source>
<translation>å‰ä¸€å€‹æœªå®Œæˆçš„æ¢ç›®(&amp;P)</translation>
</message>
@@ -707,10 +817,12 @@ p, li { white-space: pre-wrap; }
<translation type="obsolete">移到å‰ä¸€å€‹æœªå®Œæˆçš„æ¢ç›®ã€‚</translation>
</message>
<message>
+ <location/>
<source>Ctrl+K</source>
<translation>Ctrl+K</translation>
</message>
<message>
+ <location/>
<source>&amp;Next Unfinished</source>
<translation>下一個未完æˆçš„æ¢ç›®(&amp;N)</translation>
</message>
@@ -720,9 +832,10 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<source>Ctrl+L</source>
- <translation>Ctrl+L</translation>
+ <translation type="obsolete">Ctrl+L</translation>
</message>
<message>
+ <location/>
<source>P&amp;rev</source>
<translation>å‰ä¸€å€‹(&amp;R)</translation>
</message>
@@ -731,10 +844,12 @@ p, li { white-space: pre-wrap; }
<translation type="obsolete">移到å‰ä¸€å€‹æ¢ç›®ã€‚</translation>
</message>
<message>
+ <location/>
<source>Ctrl+Shift+K</source>
<translation>Ctrl+Shift+K</translation>
</message>
<message>
+ <location/>
<source>Ne&amp;xt</source>
<translation>下一個(&amp;X)</translation>
</message>
@@ -744,9 +859,10 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<source>Ctrl+Shift+L</source>
- <translation>Ctrl+Shift+L</translation>
+ <translation type="obsolete">Ctrl+Shift+L</translation>
</message>
<message>
+ <location/>
<source>&amp;Done and Next</source>
<translation>完æˆä¸¦è·³åˆ°ä¸‹ä¸€å€‹(&amp;D)</translation>
</message>
@@ -759,14 +875,17 @@ p, li { white-space: pre-wrap; }
<translation type="obsolete">複製原始訊æ¯(&amp;B)</translation>
</message>
<message>
+ <location/>
<source>Copies the source text into the translation field.</source>
<translation>將原始訊æ¯è¤‡è£½åˆ°ç¿»è­¯æ¬„ä½ä¸­ã€‚</translation>
</message>
<message>
+ <location/>
<source>Ctrl+B</source>
<translation>Ctrl+B</translation>
</message>
<message>
+ <location/>
<source>&amp;Accelerators</source>
<translation>å¿«æ·éµ(&amp;A)</translation>
</message>
@@ -775,6 +894,7 @@ p, li { white-space: pre-wrap; }
<translation type="obsolete">切æ›æ˜¯å¦è¦æª¢æŸ¥å¿«æ·éµæ˜¯å¦æœ‰åŠ å…¥ç¿»è­¯ä¸­ã€‚</translation>
</message>
<message>
+ <location/>
<source>&amp;Ending Punctuation</source>
<translation>çµæŸçš„標點(&amp;E)</translation>
</message>
@@ -783,14 +903,17 @@ p, li { white-space: pre-wrap; }
<translation type="obsolete">切æ›æ˜¯å¦è¦æª¢æŸ¥çµæŸçš„標點。</translation>
</message>
<message>
+ <location/>
<source>&amp;Phrase matches</source>
<translation>片語翻譯建議(&amp;P)</translation>
</message>
<message>
+ <location/>
<source>Toggle checking that phrase suggestions are used.</source>
<translation>切æ›æ˜¯å¦è¦ä½¿ç”¨ç‰‡èªžç¿»è­¯å»ºè­°ã€‚</translation>
</message>
<message>
+ <location/>
<source>Place &amp;Marker Matches</source>
<translation>åƒæ•¸ç¬¦è™Ÿ(&amp;M)</translation>
</message>
@@ -803,10 +926,12 @@ p, li { white-space: pre-wrap; }
<translation type="obsolete">新增片語書(&amp;N)</translation>
</message>
<message>
+ <location/>
<source>Create a new phrase book.</source>
<translation>建立新的片語書。</translation>
</message>
<message>
+ <location/>
<source>Ctrl+N</source>
<translation>Ctrl+N</translation>
</message>
@@ -815,10 +940,12 @@ p, li { white-space: pre-wrap; }
<translation type="obsolete">開啟片語書(&amp;O)</translation>
</message>
<message>
+ <location/>
<source>Open a phrase book to assist translation.</source>
<translation>開啟片語書以å”助翻譯。</translation>
</message>
<message>
+ <location/>
<source>Ctrl+H</source>
<translation>Ctrl+H</translation>
</message>
@@ -827,18 +954,22 @@ p, li { white-space: pre-wrap; }
<translation type="obsolete">åå‘排åº(&amp;R)</translation>
</message>
<message>
+ <location/>
<source>Sort the items back in the same order as in the message file.</source>
<translation>ä¾è¨Šæ¯æª”中的順åºåå‘排列。</translation>
</message>
<message>
+ <location/>
<source>&amp;Display guesses</source>
<translation>顯示猜測(&amp;D)</translation>
</message>
<message>
+ <location/>
<source>Set whether or not to display translation guesses.</source>
<translation>設定是å¦è¦é¡¯ç¤ºçŒœæ¸¬çš„翻譯。</translation>
</message>
<message>
+ <location/>
<source>&amp;Statistics</source>
<translation>統計(&amp;S)</translation>
</message>
@@ -847,38 +978,47 @@ p, li { white-space: pre-wrap; }
<translation type="obsolete">設定是å¦è¦é¡¯ç¤ºç¿»è­¯çµ±è¨ˆã€‚</translation>
</message>
<message>
+ <location/>
<source>&amp;Manual</source>
<translation>手冊(&amp;M)</translation>
</message>
<message>
+ <location/>
<source>F1</source>
<translation>F1</translation>
</message>
<message>
+ <location/>
<source>About Qt Linguist</source>
<translation>關於 Qt 語言家</translation>
</message>
<message>
+ <location/>
<source>About Qt</source>
<translation>關於 Qt</translation>
</message>
<message>
+ <location/>
<source>Display information about the Qt toolkit by Trolltech.</source>
<translation>顯示關於 Qt 的資訊。</translation>
</message>
<message>
+ <location/>
<source>&amp;What&apos;s This?</source>
<translation>這是什麼?(&amp;W)</translation>
</message>
<message>
+ <location/>
<source>What&apos;s This?</source>
<translation>這是什麼?</translation>
</message>
<message>
+ <location/>
<source>Enter What&apos;s This? mode.</source>
<translation>進入「這是什麼?ã€æ¨¡å¼ã€‚</translation>
</message>
<message>
+ <location/>
<source>Shift+F1</source>
<translation>Shift+F1</translation>
</message>
@@ -887,6 +1027,7 @@ p, li { white-space: pre-wrap; }
<translation type="obsolete">æœå°‹ä¸¦ç¿»è­¯(&amp;S)</translation>
</message>
<message>
+ <location/>
<source>Replace the translation on all entries that matches the search source text.</source>
<translation>在所有æ¢ç›®ä¸­æœå°‹ï¼Œä¸¦å–代符åˆè€…。</translation>
</message>
@@ -895,14 +1036,19 @@ p, li { white-space: pre-wrap; }
<translation type="obsolete">批次翻譯(&amp;B)</translation>
</message>
<message>
+ <location/>
<source>Batch translate all entries using the information in the phrase books.</source>
<translation>使用片語書中的資訊來批次翻譯所有的æ¢ç›®ã€‚</translation>
</message>
<message>
+ <location filename="../tools/linguist/linguist/mainwindow.cpp" line="-13"/>
+ <location line="+10"/>
+ <location filename="../tools/linguist/linguist/mainwindow.ui"/>
<source>Release As...</source>
<translation>釋出為...</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. The filename will automatically be determined from the name of the .ts file.</source>
<translation>以目å‰çš„訊æ¯æª”來建立é©ç”¨æ–¼é‡‹å‡ºæ‡‰ç”¨ç¨‹å¼çš„ Qt 訊æ¯æª”。檔å會自動由此檔的å‰é¢ä¸€éƒ¨ä»½ä¾†æ±ºå®šã€‚</translation>
</message>
@@ -912,55 +1058,71 @@ p, li { white-space: pre-wrap; }
<translation></translation>
</message>
<message>
+ <location filename="../tools/linguist/linguist/mainwindow.cpp" line="-1809"/>
<source>Source text</source>
<translation>原始訊æ¯æ–‡å­—</translation>
</message>
<message>
+ <location line="+1"/>
+ <location line="+25"/>
<source>Index</source>
<translation>索引</translation>
</message>
<message>
+ <location line="-2"/>
+ <location line="+61"/>
<source>Context</source>
<translation>內文</translation>
</message>
<message>
+ <location line="-60"/>
<source>Items</source>
<translation>æ¢ç›®</translation>
</message>
<message>
+ <location line="+77"/>
<source>This panel lists the source contexts.</source>
<translation>æ­¤é¢æ¿åˆ—出æºç¢¼æª”中的內容。</translation>
</message>
<message>
+ <location line="+15"/>
<source>Strings</source>
<translation>字串</translation>
</message>
<message>
+ <location line="+39"/>
<source>Phrases and guesses</source>
<translation>片語與猜測</translation>
</message>
<message>
+ <location line="+10"/>
<source>Sources and Forms</source>
<translation>來æºèˆ‡è¡¨å–®</translation>
</message>
<message>
+ <location line="+15"/>
<source>Warnings</source>
<translation>警告</translation>
</message>
<message>
+ <location line="+59"/>
<source> MOD </source>
<comment>status bar: file(s) modified</comment>
<translation>已變更</translation>
</message>
<message>
+ <location line="+125"/>
<source>Loading...</source>
<translation>載入中...</translation>
</message>
<message>
+ <location line="+32"/>
+ <location line="+22"/>
<source>Loading File - Qt Linguist</source>
<translation>載入檔案中 ─ Qt 語言家</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>
@@ -969,6 +1131,7 @@ Close the open file(s) first?</source>
è¦å°‡é–‹å•Ÿçš„檔案先關閉嗎?</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>
@@ -977,78 +1140,114 @@ Skip loading the first named file?</source>
è¦è·³éŽè¼‰å…¥ç¬¬ä¸€å€‹æª”案嗎?</translation>
</message>
<message numerus="yes">
+ <location line="+61"/>
<source>%n translation unit(s) loaded.</source>
<translation>
<numerusform>載入 %n 個翻譯單ä½ã€‚</numerusform>
</translation>
</message>
<message>
+ <location line="+93"/>
<source>Related files (%1);;</source>
<translation>é—œè¯æª”案(%1);;</translation>
</message>
<message>
+ <location line="+4"/>
<source>Open Translation Files</source>
<translation>開啟翻譯檔</translation>
</message>
<message>
+ <location line="+10"/>
+ <location line="+31"/>
<source>File saved.</source>
<translation>檔案已儲存。</translation>
</message>
<message>
+ <location line="+15"/>
+ <location line="+1164"/>
+ <location filename="../tools/linguist/linguist/mainwindow.ui"/>
<source>Release</source>
<translation>釋出</translation>
</message>
<message>
+ <location line="-1163"/>
<source>Qt message files for released applications (*.qm)
All files (*)</source>
<translation>釋出的應用程å¼ä½¿ç”¨çš„ Qt 訊æ¯æª” (*.qm)
所有檔案 (*)</translation>
</message>
<message>
+ <location line="+3"/>
+ <location line="+12"/>
<source>File created.</source>
<translation>檔案已建立。</translation>
</message>
<message>
+ <location line="+27"/>
+ <location line="+355"/>
<source>Printing...</source>
<translation>列å°ä¸­...</translation>
</message>
<message>
+ <location line="-347"/>
<source>Context: %1</source>
<translation>內文:%1</translation>
</message>
<message>
+ <location line="+32"/>
<source>finished</source>
<translation>已完æˆ</translation>
</message>
<message>
+ <location line="+3"/>
<source>unresolved</source>
<translation>未解決</translation>
</message>
<message>
+ <location line="+3"/>
<source>obsolete</source>
<translation>已棄用</translation>
</message>
<message>
+ <location line="+15"/>
+ <location line="+307"/>
<source>Printing... (page %1)</source>
<translation>列å°ä¸­...(第 %1 é ï¼‰</translation>
</message>
<message>
+ <location line="-300"/>
+ <location line="+307"/>
<source>Printing completed</source>
<translation>列å°å·²å®Œæˆ</translation>
</message>
<message>
+ <location line="-305"/>
+ <location line="+307"/>
<source>Printing aborted</source>
<translation>列å°å·²ä¸­æ­¢</translation>
</message>
<message>
+ <location line="-232"/>
<source>Search wrapped.</source>
<translation>æœå°‹æŠ˜å›žã€‚</translation>
</message>
<message>
+ <location line="+17"/>
+ <location line="+278"/>
+ <location line="+40"/>
+ <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 語言家</translation>
</message>
<message>
+ <location line="-1204"/>
+ <location line="+102"/>
<source>Cannot find the string &apos;%1&apos;.</source>
<translation>無法找到字串 %1。</translation>
</message>
@@ -1063,244 +1262,311 @@ All files (*)</source>
</translation>
</message>
<message>
+ <location line="-82"/>
<source>Search And Translate in &apos;%1&apos; - Qt Linguist</source>
<translation>在 %1 å…§æœå°‹ä¸¦ç¿»è­¯ ─ Qt 語言家</translation>
</message>
<message>
+ <location line="+34"/>
+ <location line="+23"/>
+ <location line="+24"/>
<source>Translate - Qt Linguist</source>
<translation>翻譯 ─ Qt 語言家</translation>
</message>
<message numerus="yes">
+ <location line="-46"/>
<source>Translated %n entry(s)</source>
<translation>
<numerusform>已翻譯 %n 個æ¢ç›®</numerusform>
</translation>
</message>
<message>
+ <location line="+23"/>
<source>No more occurrences of &apos;%1&apos;. Start over?</source>
<translation>找ä¸åˆ°æ›´å¤šçš„ %1。è¦å¾žé ­é–‹å§‹å—Žï¼Ÿ</translation>
</message>
<message>
+ <location line="+30"/>
<source>Create New Phrase Book</source>
<translation>建立新的片語書</translation>
</message>
<message>
+ <location line="+1"/>
<source>Qt phrase books (*.qph)
All files (*)</source>
<translation>Qt 片語書 (*.qph)
所有檔案 (*)</translation>
</message>
<message>
+ <location line="+11"/>
<source>Phrase book created.</source>
<translation>片語書已建立。</translation>
</message>
<message>
+ <location line="+17"/>
<source>Open Phrase Book</source>
<translation>開啟片語書</translation>
</message>
<message>
+ <location line="+1"/>
<source>Qt phrase books (*.qph);;All files (*)</source>
<translation>Qt 片語書 (*.qph);;所有檔案 (*)</translation>
</message>
<message numerus="yes">
+ <location line="+7"/>
<source>%n phrase(s) loaded.</source>
<translation>
<numerusform>已載入 %n 個片語。</numerusform>
</translation>
</message>
<message>
+ <location line="+93"/>
+ <location line="+3"/>
+ <location line="+7"/>
<source>Add to phrase book</source>
<translation>新增到片語書</translation>
</message>
<message>
+ <location line="-9"/>
<source>No appropriate phrasebook found.</source>
<translation>找ä¸åˆ°åˆé©çš„片語書。</translation>
</message>
<message>
+ <location line="+3"/>
<source>Adding entry to phrasebook %1</source>
<translation>新增項目到片語書 %1</translation>
</message>
<message>
+ <location line="+7"/>
<source>Select phrase book to add to</source>
<translation>é¸å–è¦æ–°å¢žåˆ°å“ªå€‹ç‰‡èªžæ›¸</translation>
</message>
<message>
+ <location line="+29"/>
<source>Unable to launch Qt Assistant (%1)</source>
<translation>無法啟動 Qt å°å¹«æ‰‹ï¼ˆ%1)</translation>
</message>
<message>
+ <location line="+17"/>
<source>Version %1</source>
<translation>版本 %1</translation>
</message>
<message>
<source> Open Source Edition</source>
- <translation> 開放æºç¢¼ç‰ˆæœ¬</translation>
+ <translation type="obsolete"> 開放æºç¢¼ç‰ˆæœ¬</translation>
</message>
<message>
<source>This version of Qt Linguist is part of the Qt Open Source Edition, for use in the development of Open Source applications. Qt is a comprehensive C++ framework for cross-platform application development.&lt;br/&gt;&lt;br/&gt;You need a commercial Qt license for development of proprietary (closed source) applications. Please see &lt;tt&gt;http://qtsoftware.com/company/model.html&lt;/tt&gt; for an overview of Qt licensing.</source>
- <translation>此版本的 Qt 語言家是 Qt 開放æºç¢¼ç‰ˆæœ¬çš„一部份,åªèƒ½ç”¨æ–¼é–‹ç™¼é–‹æ”¾æºç¢¼çš„應用程å¼ã€‚Qt 為一個跨平å°çš„,強大的 C++ 應用程å¼é–‹ç™¼æ¡†æž¶ã€‚&lt;br/&gt;&lt;br/&gt;您需è¦å•†æ¥­ç‰ˆçš„ Qt 授權æ‰èƒ½ç™¼å±•ç§æœ‰ï¼ˆå°é–‰ï¼‰æ‡‰ç”¨ç¨‹å¼è»Ÿé«”。關於 Qt 授權的概è¦ï¼Œè«‹åƒè€ƒ &lt;tt&gt;http://qtsoftware.com/company/model.html&lt;/tt&gt;。</translation>
+ <translation type="obsolete">此版本的 Qt 語言家是 Qt 開放æºç¢¼ç‰ˆæœ¬çš„一部份,åªèƒ½ç”¨æ–¼é–‹ç™¼é–‹æ”¾æºç¢¼çš„應用程å¼ã€‚Qt 為一個跨平å°çš„,強大的 C++ 應用程å¼é–‹ç™¼æ¡†æž¶ã€‚&lt;br/&gt;&lt;br/&gt;您需è¦å•†æ¥­ç‰ˆçš„ Qt 授權æ‰èƒ½ç™¼å±•ç§æœ‰ï¼ˆå°é–‰ï¼‰æ‡‰ç”¨ç¨‹å¼è»Ÿé«”。關於 Qt 授權的概è¦ï¼Œè«‹åƒè€ƒ &lt;tt&gt;http://qtsoftware.com/company/model.html&lt;/tt&gt;。</translation>
</message>
<message>
<source>This program is licensed to you under the terms of the Qt %1 License Agreement. For details, see the license file that came with this software distribution.</source>
- <translation>此程å¼ä»¥ Qt %1授權åŒæ„書授權給您。詳情請åƒç…§ LICENSE 檔。</translation>
+ <translation type="obsolete">此程å¼ä»¥ Qt %1授權åŒæ„書授權給您。詳情請åƒç…§ LICENSE 檔。</translation>
</message>
<message>
<source>This program is licensed to you under the terms of the Qt Commercial License Agreement. For details, see the file LICENSE that came with this software distribution.</source>
- <translation>此程å¼ä»¥ Qt 商業授權åŒæ„書(Qt Commerical License Agreement)授權給您。詳情請åƒç…§ LICENSE 檔。</translation>
+ <translation type="obsolete">此程å¼ä»¥ Qt 商業授權åŒæ„書(Qt Commerical License Agreement)授權給您。詳情請åƒç…§ LICENSE 檔。</translation>
</message>
<message>
+ <location line="+6"/>
<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;%2&lt;/p&gt;&lt;p&gt;Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).&lt;/p&gt;&lt;p&gt;The program is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.&lt;/p&gt;</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 語言家是一套新增 Qt 應用程å¼çš„翻譯的工具。&lt;/p&gt;&lt;p&gt;%2&lt;/p&gt;&lt;p&gt;Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).&lt;/p&gt;&lt;p&gt;The program is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.&lt;/p&gt;</translation>
</message>
<message>
+ <location line="+41"/>
<source>Do you want to save the modified files?</source>
<translation>您è¦å„²å­˜å·²è®Šæ›´çš„檔案嗎?</translation>
</message>
<message>
+ <location line="+22"/>
<source>Do you want to save &apos;%1&apos;?</source>
<translation>您確定è¦å„²å­˜ %1 嗎?</translation>
</message>
<message>
+ <location line="+43"/>
<source>Qt Linguist[*]</source>
<translation>Qt 語言家 [*]</translation>
</message>
<message>
+ <location line="+2"/>
<source>%1[*] - Qt Linguist</source>
<translation>%1 [*] ─ Qt 語言家</translation>
</message>
<message>
+ <location line="+267"/>
+ <location line="+12"/>
<source>No untranslated translation units left.</source>
<translation>沒有任何未翻譯的翻譯單ä½ã€‚</translation>
</message>
<message>
+ <location line="+176"/>
<source>&amp;Window</source>
<translation>視窗(&amp;W)</translation>
</message>
<message>
+ <location line="+2"/>
<source>Minimize</source>
<translation>最å°åŒ–</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>顯示 %1 的手冊。</translation>
</message>
<message>
+ <location line="+1"/>
<source>Display information about %1.</source>
<translation>顯示 %1 的資訊。</translation>
</message>
<message>
+ <location line="+70"/>
<source>&amp;Save &apos;%1&apos;</source>
<translation>儲存 &apos;%1&apos; (&amp;S)</translation>
</message>
<message>
+ <location line="+1"/>
<source>Save &apos;%1&apos; &amp;As...</source>
<translation>å¦å­˜ &apos;%1&apos; 為(&amp;A)...</translation>
</message>
<message>
+ <location line="+1"/>
<source>Release &apos;%1&apos;</source>
<translation>釋出 &apos;%1&apos;</translation>
</message>
<message>
+ <location line="+1"/>
<source>Release &apos;%1&apos; As...</source>
<translation>釋出 &apos;%1&apos; 為...</translation>
</message>
<message>
+ <location line="+1"/>
<source>&amp;Close &apos;%1&apos;</source>
<translation>關閉 &apos;%1&apos;(&amp;C)</translation>
</message>
<message>
+ <location line="+6"/>
+ <location line="+13"/>
<source>&amp;Close</source>
<translation>關閉(&amp;C)</translation>
</message>
<message>
+ <location line="-10"/>
<source>Save All</source>
<translation>全部儲存</translation>
</message>
<message>
+ <location line="+1"/>
+ <location filename="../tools/linguist/linguist/mainwindow.ui"/>
<source>&amp;Release All</source>
<translation>全部釋出(&amp;R)</translation>
</message>
<message>
+ <location line="+1"/>
<source>Close All</source>
<translation>全部關閉</translation>
</message>
<message>
+ <location line="+23"/>
<source>Translation File &amp;Settings for &apos;%1&apos;...</source>
<translation>%1 的翻譯檔設定(&amp;S)...</translation>
</message>
<message>
+ <location line="+1"/>
<source>&amp;Batch Translation of &apos;%1&apos;...</source>
<translation>%1 的批次翻譯(&amp;B)...</translation>
</message>
<message>
+ <location line="+1"/>
<source>Search And &amp;Translate in &apos;%1&apos;...</source>
<translation>在 %1 å…§æœå°‹ä¸¦ç¿»è­¯(&amp;T)...</translation>
</message>
<message>
+ <location line="+4"/>
<source>Search And &amp;Translate...</source>
<translation>æœå°‹ä¸¦ç¿»è­¯(&amp;T)...</translation>
</message>
<message>
+ <location line="+51"/>
+ <location filename="../tools/linguist/linguist/mainwindow.ui"/>
<source>File</source>
<translation>檔案</translation>
</message>
<message>
+ <location line="+7"/>
+ <location filename="../tools/linguist/linguist/mainwindow.ui"/>
<source>Edit</source>
<translation>編輯</translation>
</message>
<message>
+ <location line="+6"/>
+ <location filename="../tools/linguist/linguist/mainwindow.ui"/>
<source>Translation</source>
<translation>翻譯</translation>
</message>
<message>
+ <location line="+6"/>
+ <location filename="../tools/linguist/linguist/mainwindow.ui"/>
<source>Validation</source>
<translation>確èª</translation>
</message>
<message>
+ <location line="+7"/>
+ <location filename="../tools/linguist/linguist/mainwindow.ui"/>
<source>Help</source>
<translation>說明</translation>
</message>
<message>
+ <location line="+84"/>
<source>Cannot read from phrase book &apos;%1&apos;.</source>
<translation>無法從片語書 %1 中讀å–。</translation>
</message>
<message>
+ <location line="+15"/>
<source>Close this phrase book.</source>
<translation>關閉片語書。</translation>
</message>
<message>
+ <location line="+4"/>
<source>Enables you to add, modify, or delete entries in this phrase book.</source>
<translation>å…許您從此片語書中新增ã€è®Šæ›´æˆ–移除片語。</translation>
</message>
<message>
+ <location line="+5"/>
<source>Print the entries in this phrase book.</source>
<translation>列å°æ­¤ç‰‡èªžæ›¸ä¸­çš„æ¢ç›®ã€‚</translation>
</message>
<message>
+ <location line="+16"/>
<source>Cannot create phrase book &apos;%1&apos;.</source>
<translation>無法建立片語書 %1。</translation>
</message>
<message>
+ <location line="+10"/>
<source>Do you want to save phrase book &apos;%1&apos;?</source>
<translation>您è¦å„²å­˜ç‰‡èªžæ›¸ %1 嗎?</translation>
</message>
<message>
+ <location line="+314"/>
<source>All</source>
<translation>全部</translation>
</message>
<message>
+ <location filename="../tools/linguist/linguist/mainwindow.ui"/>
<source>Open/Refresh Form &amp;Preview</source>
<translation>é–‹å•Ÿ/刷新表單é è¦½(&amp;P)</translation>
</message>
<message>
+ <location/>
<source>Form Preview Tool</source>
<translation>表單é è¦½å·¥å…·</translation>
</message>
<message>
+ <location/>
<source>F5</source>
<translation>F5</translation>
</message>
@@ -1321,42 +1587,54 @@ All files (*)</source>
<translation type="obsolete">最近開啟的檔案(&amp;C)</translation>
</message>
<message>
+ <location/>
<source>&amp;Open...</source>
<translation>é–‹å•Ÿ(&amp;O)...</translation>
</message>
<message>
+ <location/>
<source>&amp;Print...</source>
<translation>列å°(&amp;P)...</translation>
</message>
<message>
+ <location/>
<source>&amp;Find...</source>
<translation>尋找(&amp;F)...</translation>
</message>
<message>
+ <location/>
<source>&amp;New Phrase Book...</source>
<translation>新增片語書(&amp;N)...</translation>
</message>
<message>
+ <location/>
<source>&amp;Open Phrase Book...</source>
<translation>開啟片語書(&amp;O)...</translation>
</message>
<message>
+ <location/>
<source>&amp;Reset Sorting</source>
<translation>é‡ç½®æŽ’åº(&amp;R)</translation>
</message>
<message>
+ <location/>
<source>Display translation statistics.</source>
<translation>顯示翻譯統計。</translation>
</message>
<message>
+ <location/>
<source>&amp;Search And Translate...</source>
<translation>æœå°‹ä¸¦ç¿»è­¯(&amp;S)...</translation>
</message>
<message>
+ <location filename="../tools/linguist/linguist/mainwindow.cpp" line="-526"/>
+ <location filename="../tools/linguist/linguist/mainwindow.ui"/>
<source>&amp;Batch Translation...</source>
<translation>批次翻譯(&amp;B)...</translation>
</message>
<message>
+ <location line="-1"/>
+ <location filename="../tools/linguist/linguist/mainwindow.ui"/>
<source>Translation File &amp;Settings...</source>
<translation>翻譯檔案設定(&amp;S)...</translation>
</message>
@@ -1369,94 +1647,117 @@ All files (*)</source>
<translation type="obsolete">編輯è¦é¡¯ç¤ºå“ªä¸€ç¨®èªžè¨€ã€‚</translation>
</message>
<message>
+ <location filename="../tools/linguist/linguist/mainwindow.ui"/>
<source>&amp;Add to Phrase Book</source>
<translation>新增到片語書(&amp;A)</translation>
</message>
<message>
+ <location/>
<source>Ctrl+T</source>
<translation>Ctrl+T</translation>
</message>
<message>
+ <location/>
<source>Previous unfinished item.</source>
<translation>å‰ä¸€å€‹æœªå®Œæˆçš„æ¢ç›®ã€‚</translation>
</message>
<message>
+ <location/>
<source>Recently Opened &amp;Files</source>
<translation>最近開啟的檔案(&amp;F)</translation>
</message>
<message>
+ <location/>
<source>Save</source>
<translation>儲存</translation>
</message>
<message>
+ <location/>
<source>Print a list of all the translation units in the current translation source file.</source>
<translation>列å°ç›®å‰ç¿»è­¯æºç¢¼æª”中所有的起翻譯單ä½ã€‚</translation>
</message>
<message>
+ <location/>
<source>Undo the last editing operation performed on the current translation.</source>
<translation>復原上次å°ç›®å‰ç¿»è­¯åŸ·è¡Œçš„的編輯動作。</translation>
</message>
<message>
+ <location/>
<source>Move to the previous unfinished item.</source>
<translation>移到å‰ä¸€å€‹æœªå®Œæˆçš„æ¢ç›®ã€‚</translation>
</message>
<message>
+ <location/>
<source>Next unfinished item.</source>
<translation>下一個未完æˆçš„æ¢ç›®ã€‚</translation>
</message>
<message>
+ <location/>
<source>Move to the next unfinished item.</source>
<translation>移到下一個未完æˆçš„æ¢ç›®ã€‚</translation>
</message>
<message>
+ <location/>
<source>Move to previous item.</source>
<translation>移到å‰ä¸€å€‹æ¢ç›®ã€‚</translation>
</message>
<message>
+ <location/>
<source>Move to the previous item.</source>
<translation>移到å‰ä¸€å€‹æ¢ç›®ã€‚</translation>
</message>
<message>
+ <location/>
<source>Next item.</source>
<translation>下一個æ¢ç›®ã€‚</translation>
</message>
<message>
+ <location/>
<source>Move to the next item.</source>
<translation>移到下一個æ¢ç›®ã€‚</translation>
</message>
<message>
+ <location/>
<source>Mark item as done and move to the next unfinished item.</source>
<translation>標記此æ¢ç›®ç‚ºå®Œæˆï¼Œä¸¦ç§»åˆ°ä¸‹ä¸€å€‹æœªå®Œæˆçš„æ¢ç›®ã€‚</translation>
</message>
<message>
+ <location/>
<source>Mark this item as done and move to the next unfinished item.</source>
<translation>標記此æ¢ç›®ç‚ºå®Œæˆï¼Œä¸¦ç§»åˆ°ä¸‹ä¸€å€‹æœªå®Œæˆçš„æ¢ç›®ã€‚</translation>
</message>
<message>
+ <location/>
<source>Copy from source text</source>
<translation>複製原始訊æ¯</translation>
</message>
<message>
+ <location/>
<source>Toggle the validity check of accelerators.</source>
<translation>切æ›æ˜¯å¦è¦æª¢æŸ¥å¿«æ·éµæ˜¯å¦æœ‰åŠ å…¥ç¿»è­¯ä¸­ã€‚</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>切æ›æ˜¯å¦è¦æª¢æŸ¥å¿«æ·éµæ˜¯å¦æœ‰åŠ å…¥ç¿»è­¯ä¸­ï¼Œä¹Ÿå°±æ˜¯æª¢æŸ¥æºç¢¼ä¸­çš„å¿«æ·éµç¬¦è™Ÿæ•¸é‡èˆ‡ç¿»è­¯æ–‡å­—中是å¦ç›¸åŒã€‚若是沒有,則會在警告視窗中顯示訊æ¯ã€‚</translation>
</message>
<message>
+ <location/>
<source>Toggle the validity check of ending punctuation.</source>
<translation>切æ›æ˜¯å¦è¦æª¢æŸ¥çµæŸçš„標點。</translation>
</message>
<message>
+ <location/>
<source>Close</source>
<translation>關閉</translation>
</message>
<message>
+ <location/>
<source>&amp;Close All</source>
<translation>全部關閉(&amp;C)</translation>
</message>
<message>
+ <location/>
<source>Ctrl+W</source>
<translation>Ctrl+W</translation>
</message>
@@ -1465,21 +1766,35 @@ All files (*)</source>
<translation type="obsolete">切æ›æ˜¯å¦è¦æª¢æŸ¥çµæŸçš„標點。若是ä¸ç›¸ç¬¦ï¼Œå‰‡æœƒåœ¨è­¦å‘Šè¦–窗中顯示訊æ¯ã€‚</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>切æ›æª¢æŸ¥æ˜¯å¦ä½¿ç”¨å»ºè­°çš„片語。若是沒有,則會在警告視窗中顯示訊æ¯ã€‚</translation>
</message>
<message>
+ <location/>
<source>Toggle the validity check of place markers.</source>
<translation>切æ›æ˜¯å¦æª¢æŸ¥åƒæ•¸ç¬¦è™Ÿçš„正確性。</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>切æ›æ˜¯å¦æª¢æŸ¥åƒæ•¸ç¬¦è™Ÿçš„正確性。也就是æºç¢¼ä¸­çš„ %1,%2 等是å¦èˆ‡ç¿»è­¯æ–‡å­—中的相符。若是沒有,則會在警告視窗中顯示訊æ¯ã€‚</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>切æ›æ˜¯å¦æª¢æŸ¥çµæŸçš„標點。如果檢查çµæžœä¸æ­£ç¢ºï¼Œæœƒåœ¨è­¦å‘Šè¦–窗中顯示訊æ¯ã€‚</translation>
</message>
+ <message>
+ <location/>
+ <source>Ctrl+J</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location/>
+ <source>Ctrl+Shift+J</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>MessageEditor</name>
@@ -1520,71 +1835,87 @@ All files (*)</source>
<translation type="obsolete">片語與猜測:</translation>
</message>
<message>
- <location filename="../tools/linguist/linguist/messageeditor.cpp" line="42"/>
+ <location filename="../tools/linguist/linguist/messageeditor.cpp" line="+72"/>
<source>German</source>
<translation>å¾·æ–‡</translation>
</message>
<message>
+ <location line="+1"/>
<source>Japanese</source>
<translation>日文</translation>
</message>
<message>
+ <location line="+1"/>
<source>French</source>
<translation>法文</translation>
</message>
<message>
+ <location line="+1"/>
<source>Polish</source>
<translation>波蘭文</translation>
</message>
<message>
+ <location line="+1"/>
<source>Chinese</source>
<translation>中文</translation>
</message>
<message>
+ <location line="+50"/>
<source>This whole panel allows you to view and edit the translation of some source text.</source>
<translation>這整個é¢æ¿å¯ä»¥è®“您檢視與編輯æŸäº›åŽŸå§‹è¨Šæ¯çš„翻譯檔。</translation>
</message>
<message>
+ <location line="+25"/>
<source>Source text</source>
<translation>原始訊æ¯æ–‡å­—</translation>
</message>
<message>
+ <location line="+2"/>
<source>This area shows the source text.</source>
<translation>æ­¤å€åŸŸé¡¯ç¤ºåŽŸå§‹è¨Šæ¯æ–‡å­—。</translation>
</message>
<message>
+ <location line="+3"/>
<source>Source text (Plural)</source>
<translation>原始訊æ¯æ–‡å­—(複數型)</translation>
</message>
<message>
+ <location line="+2"/>
<source>This area shows the plural form of the source text.</source>
<translation>æ­¤å€åŸŸé¡¯ç¤ºåŽŸå§‹è¨Šæ¯æ–‡å­—的複數型。</translation>
</message>
<message>
+ <location line="+3"/>
<source>Developer comments</source>
<translation>開發者æ示</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>æ­¤å€åŸŸé¡¯ç¤ºè¨»è§£ï¼Œèªªæ˜Žæ­¤æ–‡å­—的內容å”助您翻譯。</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>您å¯ä»¥åœ¨æ­¤è¼¸å…¥æ‚¨è‡ªå·±çš„註解。它們ä¸æœƒå°æ‡‰ç”¨ç¨‹å¼çš„訊æ¯é€ æˆå½±éŸ¿ã€‚</translation>
</message>
<message>
+ <location line="+205"/>
<source>%1 translation (%2)</source>
<translation>%1 翻譯(%2)</translation>
</message>
<message>
+ <location line="+19"/>
<source>This is where you can enter or modify the translation of the above source text.</source>
<translation>您å¯ä»¥åœ¨æ­¤è¼¸å…¥æˆ–變更æŸäº›åŽŸå§‹è¨Šæ¯çš„翻譯。</translation>
</message>
<message>
+ <location line="+5"/>
<source>%1 translation</source>
<translation>%1 翻譯</translation>
</message>
<message>
+ <location line="+1"/>
<source>%1 translator comments</source>
<translation>%1 翻譯註解</translation>
</message>
@@ -1605,6 +1936,7 @@ All files (*)</source>
<translation type="obsolete">您å¯ä»¥åœ¨æ­¤è¼¸å…¥æˆ–變更æŸäº›åŽŸå§‹è¨Šæ¯çš„翻譯。</translation>
</message>
<message>
+ <location line="+138"/>
<source>&apos;%1&apos;
Line: %2</source>
<translation>&apos;%1&apos;
@@ -1634,19 +1966,22 @@ Line: %2</source>
<translation type="obsolete">索引</translation>
</message>
<message>
- <location filename="../tools/linguist/linguist/messagemodel.cpp" line="861"/>
+ <location filename="../tools/linguist/linguist/messagemodel.cpp" line="+832"/>
<source>Completion status for %1</source>
<translation>%1 的完æˆç‹€æ…‹</translation>
</message>
<message>
+ <location line="+15"/>
<source>&lt;file header&gt;</source>
<translation>&lt;檔案標頭&gt;</translation>
</message>
<message>
+ <location line="+2"/>
<source>&lt;context comment&gt;</source>
<translation>&lt;內文註解&gt;</translation>
</message>
<message>
+ <location line="+71"/>
<source>&lt;unnamed context&gt;</source>
<translation>&lt;未命å內文&gt;</translation>
</message>
@@ -1680,19 +2015,22 @@ Line: %2</source>
<context>
<name>PhraseBookBox</name>
<message>
- <location filename="../tools/linguist/linguist/phrasebookbox.cpp" line="8"/>
+ <location filename="../tools/linguist/linguist/phrasebookbox.cpp" line="+8"/>
<source>%1[*] - Qt Linguist</source>
<translation>%1 [*] ─ Qt 語言家</translation>
</message>
<message>
+ <location line="+90"/>
<source>Qt Linguist</source>
<translation>Qt 語言家</translation>
</message>
<message>
+ <location line="+1"/>
<source>Cannot save phrase book &apos;%1&apos;.</source>
<translation>無法儲存片語書 %1。</translation>
</message>
<message>
+ <location filename="../tools/linguist/linguist/phrasebookbox.ui"/>
<source>Edit Phrase Book</source>
<translation>編輯片語書</translation>
</message>
@@ -1701,26 +2039,32 @@ Line: %2</source>
<translation type="obsolete">此視窗讓您å¯ä»¥æ–°å¢žã€è®Šæ›´èˆ‡åˆªé™¤ç‰‡èªžã€‚</translation>
</message>
<message>
+ <location/>
<source>&amp;Translation:</source>
<translation>翻譯(&amp;T):</translation>
</message>
<message>
+ <location/>
<source>This is the phrase in the target language corresponding to the source phrase.</source>
<translation>這是跟原始訊æ¯ç›¸é—œçš„目標語言的片語。</translation>
</message>
<message>
+ <location/>
<source>S&amp;ource phrase:</source>
<translation>原始訊æ¯ç‰‡èªž(&amp;O):</translation>
</message>
<message>
+ <location/>
<source>This is a definition for the source phrase.</source>
<translation>這是原始訊æ¯ç‰‡èªžçš„定義。</translation>
</message>
<message>
+ <location/>
<source>This is the phrase in the source language.</source>
<translation>這是原始語言的片語。</translation>
</message>
<message>
+ <location/>
<source>&amp;Definition:</source>
<translation>定義(&amp;D):</translation>
</message>
@@ -1729,6 +2073,7 @@ Line: %2</source>
<translation type="obsolete">新增片語(&amp;N)</translation>
</message>
<message>
+ <location/>
<source>Click here to add the phrase to the phrase book.</source>
<translation>點é¸é€™è£¡å°‡ç‰‡èªžæ–°å¢žåˆ°ç‰‡èªžæ›¸ä¸­ã€‚</translation>
</message>
@@ -1741,38 +2086,47 @@ Line: %2</source>
<translation type="obsolete">點é¸é€™è£¡ä»¥å¾žç‰‡èªžæ›¸ä¸­ç§»é™¤ç‰‡èªžã€‚</translation>
</message>
<message>
+ <location/>
<source>&amp;Save</source>
<translation>儲存(&amp;S)</translation>
</message>
<message>
+ <location/>
<source>Click here to save the changes made.</source>
<translation>點擊這裡以儲存變更。</translation>
</message>
<message>
+ <location/>
<source>This window allows you to add, modify, or delete entries in a phrase book.</source>
<translation>此視窗讓您å¯ä»¥æ–°å¢žã€è®Šæ›´èˆ‡åˆªé™¤ç‰‡èªžæ›¸ä¸­çš„æ¢ç›®ã€‚</translation>
</message>
<message>
+ <location/>
<source>&amp;New Entry</source>
<translation>æ–°æ¢ç›®(&amp;N)</translation>
</message>
<message>
+ <location/>
<source>Click here to remove the entry from the phrase book.</source>
<translation>點擊此處以從片語書中移除æ¢ç›®ã€‚</translation>
</message>
<message>
+ <location/>
<source>&amp;Remove Entry</source>
<translation>移除æ¢ç›®(&amp;R)</translation>
</message>
<message>
+ <location/>
<source>Settin&amp;gs...</source>
<translation>設定(&amp;G)...</translation>
</message>
<message>
+ <location/>
<source>Close</source>
<translation>關閉</translation>
</message>
<message>
+ <location/>
<source>Click here to close this window.</source>
<translation>點é¸é€™è£¡ä»¥é—œé–‰è¦–窗。</translation>
</message>
@@ -1789,15 +2143,17 @@ Line: %2</source>
<context>
<name>PhraseModel</name>
<message>
- <location filename="../tools/linguist/linguist/phrasemodel.cpp" line="87"/>
+ <location filename="../tools/linguist/linguist/phrasemodel.cpp" line="+117"/>
<source>Source phrase</source>
<translation>原始片語</translation>
</message>
<message>
+ <location line="+2"/>
<source>Translation</source>
<translation>翻譯</translation>
</message>
<message>
+ <location line="+2"/>
<source>Definition</source>
<translation>定義</translation>
</message>
@@ -1805,19 +2161,22 @@ Line: %2</source>
<context>
<name>PhraseView</name>
<message>
- <location filename="../tools/linguist/linguist/phraseview.cpp" line="91"/>
+ <location filename="../tools/linguist/linguist/phraseview.cpp" line="+121"/>
<source>Insert</source>
<translation>æ’å…¥</translation>
</message>
<message>
+ <location line="+3"/>
<source>Edit</source>
<translation>編輯</translation>
</message>
<message>
+ <location line="+113"/>
<source>Guess (%1)</source>
<translation>猜測(%1)</translation>
</message>
<message>
+ <location line="+2"/>
<source>Guess</source>
<translation>猜測</translation>
</message>
@@ -1825,70 +2184,90 @@ Line: %2</source>
<context>
<name>QObject</name>
<message>
- <location filename="../tools/linguist/shared/qm.cpp" line="12"/>
+ <location filename="../tools/linguist/shared/qm.cpp" line="+12"/>
<source>Compiled Qt translations</source>
<translation>已編譯的 Qt 翻譯</translation>
</message>
<message>
+ <location filename="../tools/linguist/linguist/mainwindow.cpp" line="-1279"/>
<source>Translation files (%1);;</source>
<translation>翻譯檔(%1):</translation>
</message>
<message>
+ <location line="+5"/>
<source>All files (*)</source>
<translation>所有檔案(*)</translation>
</message>
<message>
- <location filename="../tools/linguist/linguist/phrase.cpp" line="166"/>
+ <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 語言家</translation>
</message>
<message>
- <location filename="../tools/linguist/shared/cpp.cpp" line="1039"/>
+ <location filename="../tools/linguist/shared/cpp.cpp" line="+1072"/>
<source>C++ source files</source>
<translation>C++ 程å¼æª”</translation>
</message>
<message>
- <location filename="../tools/linguist/shared/java.cpp" line="624"/>
+ <location filename="../tools/linguist/shared/java.cpp" line="+646"/>
<source>Java source files</source>
<translation>Java 程å¼æª”</translation>
</message>
<message>
- <location filename="../tools/linguist/shared/po.cpp" line="584"/>
+ <location filename="../tools/linguist/shared/po.cpp" line="+651"/>
<source>GNU Gettext localization files</source>
<translation>GNU Gettext 地域化檔案</translation>
</message>
<message>
- <location filename="../tools/linguist/shared/qscript.cpp" line="2369"/>
+ <location filename="../tools/linguist/shared/qscript.cpp" line="+2399"/>
<source>Qt Script source files</source>
<translation>Qt 文稿程å¼æª”</translation>
</message>
<message>
- <location filename="../tools/linguist/shared/ts.cpp" line="617"/>
+ <location filename="../tools/linguist/shared/ts.cpp" line="+752"/>
<source>Qt translation sources (format 1.1)</source>
<translation>Qt 翻譯æºç¢¼æª”(1.1 æ ¼å¼ï¼‰</translation>
</message>
<message>
+ <location line="+8"/>
<source>Qt translation sources (format 2.0)</source>
<translation>Qt 翻譯æºç¢¼æª”(2.0 æ ¼å¼ï¼‰</translation>
</message>
<message>
+ <location line="+9"/>
+ <source>Qt translation sources (latest format)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<source>Qt translation sources</source>
- <translation>Qt 翻譯æºç¢¼</translation>
+ <translation type="obsolete">Qt 翻譯æºç¢¼</translation>
</message>
<message>
- <location filename="../tools/linguist/shared/ui.cpp" line="171"/>
+ <location filename="../tools/linguist/shared/ui.cpp" line="+213"/>
<source>Qt Designer form files</source>
<translation>Qt 設計器表單檔</translation>
</message>
<message>
+ <location line="+9"/>
<source>Qt Jambi form files</source>
<translation>Qt Jambi 表單檔</translation>
</message>
<message>
- <location filename="../tools/linguist/shared/xliff.cpp" line="778"/>
+ <location filename="../tools/linguist/shared/xliff.cpp" line="+817"/>
<source>XLIFF localization files</source>
<translation>XLIFF 地域化檔案</translation>
</message>
+ <message>
+ <location filename="../tools/linguist/shared/qph.cpp" line="+192"/>
+ <source>Qt Linguist &apos;Phrase Book&apos;</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>QtWindowListMenu</name>
@@ -1927,15 +2306,17 @@ Line: %2</source>
<context>
<name>SourceCodeView</name>
<message>
- <location filename="../tools/linguist/linguist/sourcecodeview.cpp" line="40"/>
+ <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;沒有原始碼&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;沒有檔案 %1&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;檔案 %1 無法讀å–&lt;/i&gt;</translation>
</message>
@@ -1962,6 +2343,7 @@ Line: %2</source>
<context>
<name>Statistics</name>
<message>
+ <location filename="../tools/linguist/linguist/statistics.ui"/>
<source>Statistics</source>
<translation>統計</translation>
</message>
@@ -1970,30 +2352,37 @@ Line: %2</source>
<translation type="obsolete">關閉(&amp;C)</translation>
</message>
<message>
+ <location/>
<source>Translation</source>
<translation>翻譯</translation>
</message>
<message>
+ <location/>
<source>Source</source>
<translation>來æº</translation>
</message>
<message>
+ <location/>
<source>0</source>
<translation>0</translation>
</message>
<message>
+ <location/>
<source>Words:</source>
<translation>單字:</translation>
</message>
<message>
+ <location/>
<source>Characters:</source>
<translation>字元:</translation>
</message>
<message>
+ <location/>
<source>Characters (with spaces):</source>
<translation>字元(å«ç©ºç™½ï¼‰ï¼š</translation>
</message>
<message>
+ <location/>
<source>Close</source>
<translation>關閉</translation>
</message>
@@ -2467,7 +2856,7 @@ All files (*)</source>
<translation type="obsolete">您è¦å„²å­˜ç‰‡èªžæ›¸ %1 嗎?</translation>
</message>
<message>
- <location filename="../tools/linguist/linguist/trwindow.cpp" line="14"/>
+ <location filename="../tools/linguist/linguist/trwindow.cpp" line="+14"/>
<source></source>
<comment>This is the application&apos;s main window.</comment>
<translation></translation>
@@ -2480,58 +2869,72 @@ All files (*)</source>
<translation type="obsolete">Qt 語言家</translation>
</message>
<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>此視窗讓您æœå°‹ç¿»è­¯æºç¢¼æª”中的一些文字。</translation>
</message>
<message>
+ <location/>
<source>Type in the text to search for.</source>
<translation>請輸入è¦æœå°‹çš„文字。</translation>
</message>
<message>
+ <location/>
<source>Find &amp;source text:</source>
<translation>尋找原始訊æ¯(&amp;S):</translation>
</message>
<message>
+ <location/>
<source>&amp;Translate to:</source>
<translation>翻譯為(&amp;T):</translation>
</message>
<message>
+ <location/>
<source>Search options</source>
<translation>æœå°‹é¸é …</translation>
</message>
<message>
+ <location/>
<source>Texts such as &apos;TeX&apos; and &apos;tex&apos; are considered as different when checked.</source>
<translation>勾é¸æ­¤é …目的話,TeX 與 tex 會被èªç‚ºæ˜¯å…©å€‹ä¸åŒçš„字串。</translation>
</message>
<message>
+ <location/>
<source>Match &amp;case</source>
<translation>符åˆå¤§å°å¯«(&amp;C)</translation>
</message>
<message>
+ <location/>
<source>Mark new translation as &amp;finished</source>
<translation>將新翻譯標記為完æˆ(&amp;F)</translation>
</message>
<message>
+ <location/>
<source>Click here to find the next occurrence of the text you typed in.</source>
<translation>點é¸é€™è£¡ä»¥å°‹æ‰¾ä¸‹ä¸€ç­†ç¬¦åˆçš„字串。</translation>
</message>
<message>
+ <location/>
<source>Find Next</source>
<translation>尋找下一個</translation>
</message>
<message>
+ <location/>
<source>Translate</source>
<translation>翻譯</translation>
</message>
<message>
+ <location/>
<source>Translate All</source>
<translation>全部翻譯</translation>
</message>
<message>
+ <location/>
<source>Click here to close this window.</source>
<translation>點é¸é€™è£¡ä»¥é—œé–‰è¦–窗。</translation>
</message>
<message>
+ <location/>
<source>Cancel</source>
<translation>å–消</translation>
</message>
@@ -2558,27 +2961,33 @@ All files (*)</source>
<context>
<name>TranslationSettingsDialog</name>
<message>
- <location filename="../tools/linguist/linguist/translationsettingsdialog.cpp" line="38"/>
+ <location filename="../tools/linguist/linguist/translationsettingsdialog.cpp" line="+68"/>
<source>Any Country</source>
<translation>任何國家</translation>
</message>
<message>
+ <location line="+11"/>
+ <location line="+8"/>
<source>Settings for &apos;%1&apos; - Qt Linguist</source>
<translation>%1 的設定 ─ Qt 語言家</translation>
</message>
<message>
+ <location filename="../tools/linguist/linguist/translationsettings.ui"/>
<source>Source language</source>
<translation>原始語言</translation>
</message>
<message>
+ <location/>
<source>Language</source>
<translation>語言</translation>
</message>
<message>
+ <location/>
<source>Country/Region</source>
<translation>國家/地å€</translation>
</message>
<message>
+ <location/>
<source>Target language</source>
<translation>目標語言</translation>
</message>
diff --git a/translations/qt_ar.ts b/translations/qt_ar.ts
index 76a1956..b5a60e2 100644
--- a/translations/qt_ar.ts
+++ b/translations/qt_ar.ts
@@ -4,7 +4,7 @@
<context>
<name>AudioOutput</name>
<message>
- <location filename="../src/3rdparty/phonon/phonon/audiooutput.cpp" line="+374"/>
+ <location filename="../src/3rdparty/phonon/phonon/audiooutput.cpp" line="+375"/>
<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="unfinished"></translation>
</message>
@@ -22,7 +22,7 @@
<context>
<name>CloseButton</name>
<message>
- <location filename="../src/gui/widgets/qtabbar.cpp" line="+2217"/>
+ <location filename="../src/gui/widgets/qtabbar.cpp" line="+2251"/>
<source>Close Tab</source>
<translation type="unfinished"></translation>
</message>
@@ -85,7 +85,7 @@
<context>
<name>Phonon::Gstreamer::MediaObject</name>
<message>
- <location filename="../src/3rdparty/phonon/gstreamer/mediaobject.cpp" line="+88"/>
+ <location filename="../src/3rdparty/phonon/gstreamer/mediaobject.cpp" line="+90"/>
<source>Cannot start playback.
Check your Gstreamer installation and make sure you
@@ -98,24 +98,24 @@ have libgstreamer-plugins-base installed.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+653"/>
- <location line="+9"/>
+ <location line="+676"/>
+ <location line="+8"/>
<location line="+15"/>
- <location line="+7"/>
- <location line="+5"/>
- <location line="+20"/>
- <location line="+317"/>
+ <location line="+9"/>
+ <location line="+6"/>
+ <location line="+19"/>
+ <location line="+335"/>
<location line="+24"/>
<source>Could not open media source.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-381"/>
+ <location line="-403"/>
<source>Invalid source type.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+355"/>
+ <location line="+377"/>
<source>Could not locate media source.</source>
<translation type="unfinished"></translation>
</message>
@@ -149,7 +149,7 @@ have libgstreamer-plugins-base installed.</source>
<context>
<name>Q3Accel</name>
<message>
- <location filename="../src/qt3support/other/q3accel.cpp" line="+451"/>
+ <location filename="../src/qt3support/other/q3accel.cpp" line="+481"/>
<source>%1, %2 not defined</source>
<translation type="unfinished"></translation>
</message>
@@ -162,7 +162,7 @@ have libgstreamer-plugins-base installed.</source>
<context>
<name>Q3DataTable</name>
<message>
- <location filename="../src/qt3support/sql/q3datatable.cpp" line="+253"/>
+ <location filename="../src/qt3support/sql/q3datatable.cpp" line="+285"/>
<source>True</source>
<translation type="unfinished">صحيح</translation>
</message>
@@ -190,7 +190,7 @@ have libgstreamer-plugins-base installed.</source>
<context>
<name>Q3FileDialog</name>
<message>
- <location filename="../src/qt3support/dialogs/q3filedialog.cpp" line="+834"/>
+ <location filename="../src/qt3support/dialogs/q3filedialog.cpp" line="+864"/>
<source>Copy or Move a File</source>
<translation type="unfinished">نسخ أو تحريك ملÙÙ‘</translation>
</message>
@@ -215,7 +215,7 @@ have libgstreamer-plugins-base installed.</source>
<location line="-157"/>
<location line="+49"/>
<location line="+2153"/>
- <location filename="../src/qt3support/dialogs/q3filedialog_mac.cpp" line="+80"/>
+ <location filename="../src/qt3support/dialogs/q3filedialog_mac.cpp" line="+110"/>
<source>All Files (*)</source>
<translation type="unfinished">جميع الملÙّات (*)</translation>
</message>
@@ -355,7 +355,7 @@ have libgstreamer-plugins-base installed.</source>
<message>
<location line="+704"/>
<location line="+2100"/>
- <location filename="../src/qt3support/dialogs/q3filedialog_win.cpp" line="+307"/>
+ <location filename="../src/qt3support/dialogs/q3filedialog_win.cpp" line="+337"/>
<source>Open</source>
<translation type="unfinished">Ùتح</translation>
</message>
@@ -523,7 +523,7 @@ Check path and filename.</source>
<context>
<name>Q3LocalFs</name>
<message>
- <location filename="../src/qt3support/network/q3localfs.cpp" line="+100"/>
+ <location filename="../src/qt3support/network/q3localfs.cpp" line="+130"/>
<location line="+10"/>
<source>Could not read directory
%1</source>
@@ -573,7 +573,7 @@ to
<context>
<name>Q3MainWindow</name>
<message>
- <location filename="../src/qt3support/widgets/q3mainwindow.cpp" line="+2021"/>
+ <location filename="../src/qt3support/widgets/q3mainwindow.cpp" line="+2051"/>
<source>Line up</source>
<translation type="unfinished">تصÙÙŠÙ</translation>
</message>
@@ -586,7 +586,7 @@ to
<context>
<name>Q3NetworkProtocol</name>
<message>
- <location filename="../src/qt3support/network/q3networkprotocol.cpp" line="+824"/>
+ <location filename="../src/qt3support/network/q3networkprotocol.cpp" line="+854"/>
<source>Operation stopped by the user</source>
<translation type="unfinished">أوقÙت العمليّة من طر٠المستعمل</translation>
</message>
@@ -594,7 +594,7 @@ to
<context>
<name>Q3ProgressDialog</name>
<message>
- <location filename="../src/qt3support/dialogs/q3progressdialog.cpp" line="+194"/>
+ <location filename="../src/qt3support/dialogs/q3progressdialog.cpp" line="+224"/>
<location line="+61"/>
<source>Cancel</source>
<translation type="unfinished">إلغاء</translation>
@@ -603,7 +603,7 @@ to
<context>
<name>Q3TabDialog</name>
<message>
- <location filename="../src/qt3support/dialogs/q3tabdialog.cpp" line="+159"/>
+ <location filename="../src/qt3support/dialogs/q3tabdialog.cpp" line="+189"/>
<location line="+814"/>
<source>OK</source>
<translation type="unfinished">مواÙقة</translation>
@@ -632,7 +632,7 @@ to
<context>
<name>Q3TextEdit</name>
<message>
- <location filename="../src/qt3support/text/q3textedit.cpp" line="+5399"/>
+ <location filename="../src/qt3support/text/q3textedit.cpp" line="+5429"/>
<source>&amp;Undo</source>
<translation type="unfinished">&amp;تراجع</translation>
</message>
@@ -671,7 +671,7 @@ to
<context>
<name>Q3TitleBar</name>
<message>
- <location filename="../src/plugins/accessible/compat/q3complexwidgets.cpp" line="+216"/>
+ <location filename="../src/plugins/accessible/compat/q3complexwidgets.cpp" line="+246"/>
<source>System</source>
<translation type="unfinished"></translation>
</message>
@@ -739,7 +739,7 @@ to
<context>
<name>Q3ToolBar</name>
<message>
- <location filename="../src/qt3support/widgets/q3toolbar.cpp" line="+662"/>
+ <location filename="../src/qt3support/widgets/q3toolbar.cpp" line="+692"/>
<source>More...</source>
<translation type="unfinished">أكثر...</translation>
</message>
@@ -747,7 +747,7 @@ to
<context>
<name>Q3UrlOperator</name>
<message>
- <location filename="../src/qt3support/network/q3urloperator.cpp" line="+356"/>
+ <location filename="../src/qt3support/network/q3urloperator.cpp" line="+386"/>
<location line="+260"/>
<location line="+4"/>
<source>The protocol `%1&apos; is not supported</source>
@@ -799,7 +799,7 @@ to
<context>
<name>Q3Wizard</name>
<message>
- <location filename="../src/qt3support/dialogs/q3wizard.cpp" line="+147"/>
+ <location filename="../src/qt3support/dialogs/q3wizard.cpp" line="+177"/>
<source>&amp;Cancel</source>
<translation type="unfinished">&amp;إلغاء</translation>
</message>
@@ -827,9 +827,9 @@ to
<context>
<name>QAbstractSocket</name>
<message>
- <location filename="../src/network/socket/qabstractsocket.cpp" line="+838"/>
- <location filename="../src/network/socket/qhttpsocketengine.cpp" line="+585"/>
- <location filename="../src/network/socket/qsocks5socketengine.cpp" line="+627"/>
+ <location filename="../src/network/socket/qabstractsocket.cpp" line="+868"/>
+ <location filename="../src/network/socket/qhttpsocketengine.cpp" line="+615"/>
+ <location filename="../src/network/socket/qsocks5socketengine.cpp" line="+657"/>
<location line="+26"/>
<source>Host not found</source>
<translation type="unfinished"></translation>
@@ -872,7 +872,7 @@ to
<context>
<name>QAbstractSpinBox</name>
<message>
- <location filename="../src/gui/widgets/qabstractspinbox.cpp" line="+1169"/>
+ <location filename="../src/gui/widgets/qabstractspinbox.cpp" line="+1199"/>
<source>&amp;Step up</source>
<translation type="unfinished"></translation>
</message>
@@ -890,13 +890,13 @@ to
<context>
<name>QApplication</name>
<message>
- <location filename="../src/gui/kernel/qapplication.cpp" line="+2212"/>
+ <location filename="../src/gui/kernel/qapplication.cpp" line="+2248"/>
<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>RTL</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qmessagebox.h" line="+322"/>
+ <location filename="../src/gui/dialogs/qmessagebox.h" line="+352"/>
<source>Executable &apos;%1&apos; requires Qt %2, found Qt %3.</source>
<translation>البرنامج &apos;%1&apos; يتطلّب Qt %2، تمّ إيجاد Qt %3.</translation>
</message>
@@ -906,7 +906,7 @@ to
<translation>خطأ: مكتبة Qt غير مواÙقة</translation>
</message>
<message>
- <location filename="../src/gui/accessible/qaccessibleobject.cpp" line="+346"/>
+ <location filename="../src/gui/accessible/qaccessibleobject.cpp" line="+376"/>
<source>Activate</source>
<translation type="unfinished"></translation>
</message>
@@ -942,7 +942,7 @@ to
<context>
<name>QCheckBox</name>
<message>
- <location filename="../src/plugins/accessible/widgets/simplewidgets.cpp" line="+84"/>
+ <location filename="../src/plugins/accessible/widgets/simplewidgets.cpp" line="+114"/>
<source>Uncheck</source>
<translation type="unfinished"></translation>
</message>
@@ -960,7 +960,7 @@ to
<context>
<name>QColorDialog</name>
<message>
- <location filename="../src/gui/dialogs/qcolordialog.cpp" line="+1219"/>
+ <location filename="../src/gui/dialogs/qcolordialog.cpp" line="+1253"/>
<source>Hu&amp;e:</source>
<translation>ال&amp;صّبغة:</translation>
</message>
@@ -1034,13 +1034,13 @@ to
<context>
<name>QComboBox</name>
<message>
- <location filename="../src/plugins/accessible/widgets/complexwidgets.cpp" line="+1741"/>
+ <location filename="../src/plugins/accessible/widgets/complexwidgets.cpp" line="+1771"/>
<location line="+65"/>
<source>Open</source>
<translation type="unfinished">Ùتح</translation>
</message>
<message>
- <location filename="../src/gui/itemviews/qitemeditorfactory.cpp" line="+514"/>
+ <location filename="../src/gui/itemviews/qitemeditorfactory.cpp" line="+544"/>
<source>False</source>
<translation type="unfinished">خاطئ</translation>
</message>
@@ -1058,7 +1058,7 @@ to
<context>
<name>QCoreApplication</name>
<message>
- <location filename="../src/corelib/kernel/qsystemsemaphore_unix.cpp" line="+89"/>
+ <location filename="../src/corelib/kernel/qsystemsemaphore_unix.cpp" line="+119"/>
<source>%1: key is empty</source>
<comment>QSystemSemaphore</comment>
<translation type="unfinished"></translation>
@@ -1079,12 +1079,12 @@ to
<context>
<name>QDB2Driver</name>
<message>
- <location filename="../src/sql/drivers/db2/qsql_db2.cpp" line="+1217"/>
+ <location filename="../src/sql/drivers/db2/qsql_db2.cpp" line="+1276"/>
<source>Unable to connect</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+263"/>
+ <location line="+303"/>
<source>Unable to commit transaction</source>
<translation type="unfinished"></translation>
</message>
@@ -1102,8 +1102,8 @@ to
<context>
<name>QDB2Result</name>
<message>
- <location line="-986"/>
- <location line="+242"/>
+ <location line="-1043"/>
+ <location line="+243"/>
<source>Unable to execute statement</source>
<translation type="unfinished"></translation>
</message>
@@ -1118,7 +1118,7 @@ to
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+91"/>
+ <location line="+92"/>
<source>Unable to fetch record %1</source>
<translation type="unfinished"></translation>
</message>
@@ -1136,7 +1136,7 @@ to
<context>
<name>QDateTimeEdit</name>
<message>
- <location filename="../src/gui/widgets/qdatetimeedit.cpp" line="+2265"/>
+ <location filename="../src/gui/widgets/qdatetimeedit.cpp" line="+2295"/>
<source>AM</source>
<translation type="unfinished"></translation>
</message>
@@ -1159,7 +1159,7 @@ to
<context>
<name>QDial</name>
<message>
- <location filename="../src/plugins/accessible/widgets/rangecontrols.cpp" line="+921"/>
+ <location filename="../src/plugins/accessible/widgets/rangecontrols.cpp" line="+951"/>
<source>QDial</source>
<translation type="unfinished"></translation>
</message>
@@ -1177,7 +1177,7 @@ to
<context>
<name>QDialog</name>
<message>
- <location filename="../src/gui/dialogs/qdialog.cpp" line="+567"/>
+ <location filename="../src/gui/dialogs/qdialog.cpp" line="+597"/>
<source>What&apos;s This?</source>
<translation>ما هذا؟</translation>
</message>
@@ -1190,9 +1190,9 @@ to
<context>
<name>QDialogButtonBox</name>
<message>
- <location filename="../src/gui/dialogs/qmessagebox.cpp" line="+1830"/>
+ <location filename="../src/gui/dialogs/qmessagebox.cpp" line="+1866"/>
<location line="+464"/>
- <location filename="../src/gui/widgets/qdialogbuttonbox.cpp" line="+531"/>
+ <location filename="../src/gui/widgets/qdialogbuttonbox.cpp" line="+561"/>
<source>OK</source>
<translation type="unfinished">مواÙقة</translation>
</message>
@@ -1315,7 +1315,7 @@ to
<context>
<name>QDirModel</name>
<message>
- <location filename="../src/gui/itemviews/qdirmodel.cpp" line="+423"/>
+ <location filename="../src/gui/itemviews/qdirmodel.cpp" line="+453"/>
<source>Name</source>
<translation type="unfinished">الإسم</translation>
</message>
@@ -1345,7 +1345,7 @@ to
<context>
<name>QDockWidget</name>
<message>
- <location filename="../src/plugins/accessible/widgets/qaccessiblewidgets.cpp" line="+1209"/>
+ <location filename="../src/plugins/accessible/widgets/qaccessiblewidgets.cpp" line="+1239"/>
<source>Close</source>
<translation type="unfinished">إغلاق</translation>
</message>
@@ -1376,7 +1376,7 @@ to
<context>
<name>QErrorMessage</name>
<message>
- <location filename="../src/gui/dialogs/qerrormessage.cpp" line="+361"/>
+ <location filename="../src/gui/dialogs/qerrormessage.cpp" line="+391"/>
<source>&amp;Show this message again</source>
<translation>أ&amp;عرض مجدّداهذاالبلاغ</translation>
</message>
@@ -1404,13 +1404,18 @@ to
<context>
<name>QFile</name>
<message>
- <location filename="../src/corelib/io/qfile.cpp" line="+678"/>
- <location line="+130"/>
+ <location filename="../src/corelib/io/qfile.cpp" line="+708"/>
+ <location line="+141"/>
<source>Destination file exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+12"/>
+ <location line="-108"/>
+ <source>Cannot remove source file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+120"/>
<source>Cannot open %1 for input</source>
<translation type="unfinished"></translation>
</message>
@@ -1433,8 +1438,8 @@ to
<context>
<name>QFileDialog</name>
<message>
- <location filename="../src/gui/dialogs/qfiledialog.cpp" line="+484"/>
- <location line="+423"/>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="+515"/>
+ <location line="+444"/>
<source>All Files (*)</source>
<translation>جميع الملÙّات (*)</translation>
</message>
@@ -1457,13 +1462,13 @@ to
<translation type="unfinished">معاينة Ù…Ùصّلة</translation>
</message>
<message>
- <location filename="../src/gui/itemviews/qfileiconprovider.cpp" line="+384"/>
+ <location filename="../src/gui/itemviews/qfileiconprovider.cpp" line="+414"/>
<location line="+1"/>
<source>File</source>
<translation type="unfinished">ملÙÙ‘</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-440"/>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-461"/>
<source>Open</source>
<translation>Ùتح</translation>
</message>
@@ -1473,26 +1478,26 @@ to
<translation type="unfinished">Ø­Ùظ تحت</translation>
</message>
<message>
- <location line="+653"/>
+ <location line="+678"/>
<location line="+50"/>
- <location line="+1440"/>
+ <location line="+1471"/>
<location line="+75"/>
<source>&amp;Open</source>
<translation>&amp;Ùتح</translation>
</message>
<message>
- <location line="-1565"/>
+ <location line="-1596"/>
<location line="+50"/>
<source>&amp;Save</source>
<translation>&amp;Ø­Ùظ</translation>
</message>
<message>
- <location line="+1790"/>
+ <location line="+1822"/>
<source>Recent Places</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-2464"/>
+ <location line="-2521"/>
<source>&amp;Rename</source>
<translation type="unfinished">ت&amp;غيير الإسم</translation>
</message>
@@ -1507,33 +1512,33 @@ to
<translation type="unfinished">ع&amp;رض الملÙّات المخÙية</translation>
</message>
<message>
- <location line="+1908"/>
+ <location line="+1964"/>
<source>New Folder</source>
<translation type="unfinished">دليل جديد</translation>
</message>
<message>
- <location line="-1943"/>
+ <location line="-1999"/>
<source>Find Directory</source>
<translation type="unfinished">إيجاد الدّليل</translation>
</message>
<message>
- <location line="+660"/>
+ <location line="+685"/>
<source>Directories</source>
<translation>دلائل</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfiledialog_win.cpp" line="+130"/>
+ <location filename="../src/gui/dialogs/qfiledialog_win.cpp" line="+160"/>
<source>All Files (*.*)</source>
<translation type="unfinished">جميع الملÙّات (*.*)</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-619"/>
- <location line="+623"/>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-644"/>
+ <location line="+648"/>
<source>Directory:</source>
<translation type="unfinished">دليل:</translation>
</message>
<message>
- <location line="+807"/>
+ <location line="+828"/>
<source>%1 already exists.
Do you want to replace it?</source>
<translation type="unfinished"></translation>
@@ -1564,14 +1569,14 @@ Please verify the correct file name was given.</source>
</message>
<message>
<location filename="../src/gui/dialogs/qfiledialog.cpp" line="-54"/>
- <location line="+851"/>
+ <location line="+862"/>
<source>%1
Directory not found.
Please verify the correct directory name was given.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-217"/>
+ <location line="-218"/>
<source>&apos;%1&apos; is write protected.
Do you want to delete it anyway?</source>
<translation type="unfinished"></translation>
@@ -1597,7 +1602,7 @@ Do you want to delete it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-2062"/>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-2118"/>
<source>Show </source>
<translation type="unfinished"></translation>
</message>
@@ -1613,19 +1618,19 @@ Do you want to delete it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+631"/>
+ <location line="+656"/>
<location line="+38"/>
<source>&amp;Choose</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qsidebar.cpp" line="+388"/>
+ <location filename="../src/gui/dialogs/qsidebar.cpp" line="+418"/>
<source>Remove</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-662"/>
- <location line="+627"/>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-687"/>
+ <location line="+652"/>
<source>File &amp;name:</source>
<translation type="unfinished">Ø¥&amp;سم الملÙÙ‘:</translation>
</message>
@@ -1645,7 +1650,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QFileSystemModel</name>
<message>
- <location filename="../src/gui/dialogs/qfilesystemmodel.cpp" line="+707"/>
+ <location filename="../src/gui/dialogs/qfilesystemmodel.cpp" line="+744"/>
<source>%1 TB</source>
<translation type="unfinished"></translation>
</message>
@@ -1707,7 +1712,7 @@ Do you want to delete it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfilesystemmodel_p.h" line="+204"/>
+ <location filename="../src/gui/dialogs/qfilesystemmodel_p.h" line="+234"/>
<source>My Computer</source>
<translation type="unfinished"></translation>
</message>
@@ -1720,7 +1725,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QFontDatabase</name>
<message>
- <location filename="../src/gui/text/qfontdatabase.cpp" line="+60"/>
+ <location filename="../src/gui/text/qfontdatabase.cpp" line="+90"/>
<location line="+1176"/>
<source>Normal</source>
<translation type="unfinished"></translation>
@@ -1937,7 +1942,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QFontDialog</name>
<message>
- <location filename="../src/gui/dialogs/qfontdialog.cpp" line="+742"/>
+ <location filename="../src/gui/dialogs/qfontdialog.cpp" line="+772"/>
<source>&amp;Font</source>
<translation>ال&amp;خطّ</translation>
</message>
@@ -1986,7 +1991,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QFtp</name>
<message>
- <location filename="../src/qt3support/network/q3ftp.cpp" line="+2273"/>
+ <location filename="../src/qt3support/network/q3ftp.cpp" line="+2303"/>
<source>Host %1 found</source>
<translation type="unfinished">تمّ إيجاد المضي٠%1</translation>
</message>
@@ -1996,7 +2001,7 @@ Do you want to delete it anyway?</source>
<translation type="unfinished">تمّ إيجاد المضيÙ</translation>
</message>
<message>
- <location filename="../src/network/access/qftp.cpp" line="+973"/>
+ <location filename="../src/network/access/qftp.cpp" line="+1003"/>
<location filename="../src/qt3support/network/q3ftp.cpp" line="-1456"/>
<location line="+1451"/>
<source>Connected to host %1</source>
@@ -2132,7 +2137,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QHostInfo</name>
<message>
- <location filename="../src/network/kernel/qhostinfo_p.h" line="+153"/>
+ <location filename="../src/network/kernel/qhostinfo_p.h" line="+183"/>
<source>Unknown error</source>
<translation type="unfinished">خطأ مجهول</translation>
</message>
@@ -2140,11 +2145,11 @@ Do you want to delete it anyway?</source>
<context>
<name>QHostInfoAgent</name>
<message>
- <location filename="../src/network/kernel/qhostinfo_unix.cpp" line="+148"/>
+ <location filename="../src/network/kernel/qhostinfo_unix.cpp" line="+178"/>
<location line="+9"/>
<location line="+64"/>
<location line="+31"/>
- <location filename="../src/network/kernel/qhostinfo_win.cpp" line="+150"/>
+ <location filename="../src/network/kernel/qhostinfo_win.cpp" line="+180"/>
<location line="+9"/>
<location line="+40"/>
<location line="+27"/>
@@ -2170,13 +2175,13 @@ Do you want to delete it anyway?</source>
<context>
<name>QHttp</name>
<message>
- <location filename="../src/network/access/qhttpnetworkconnection.cpp" line="+1712"/>
- <location filename="../src/qt3support/network/q3http.cpp" line="+1806"/>
+ <location filename="../src/network/access/qhttpnetworkconnection.cpp" line="+876"/>
+ <location filename="../src/qt3support/network/q3http.cpp" line="+1836"/>
<source>Connection refused</source>
<translation>رÙض الوصل</translation>
</message>
<message>
- <location filename="../src/network/access/qhttp.cpp" line="+2597"/>
+ <location filename="../src/network/access/qhttp.cpp" line="+2631"/>
<location filename="../src/network/access/qhttpnetworkconnection.cpp" line="-4"/>
<location filename="../src/qt3support/network/q3http.cpp" line="+3"/>
<source>Host %1 not found</source>
@@ -2189,12 +2194,12 @@ Do you want to delete it anyway?</source>
<translation>طول المحتوى خاطئ</translation>
</message>
<message>
- <location line="-2200"/>
+ <location line="-2204"/>
<source>HTTPS connection requested but SSL support not compiled in</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+2282"/>
+ <location line="+2286"/>
<location filename="../src/network/access/qhttpnetworkconnection.cpp" line="+10"/>
<location line="+19"/>
<location filename="../src/qt3support/network/q3http.cpp" line="+48"/>
@@ -2233,21 +2238,21 @@ Do you want to delete it anyway?</source>
<translation type="unfinished">وصل مغلق</translation>
</message>
<message>
- <location filename="../src/network/access/qhttp.cpp" line="-1073"/>
- <location line="+816"/>
+ <location filename="../src/network/access/qhttp.cpp" line="-1077"/>
+ <location line="+820"/>
<location filename="../src/qt3support/network/q3http.cpp" line="-1152"/>
<location line="+567"/>
<source>Unknown error</source>
<translation>خطأ مجهول</translation>
</message>
<message>
- <location line="-564"/>
+ <location line="-568"/>
<location filename="../src/qt3support/network/q3http.cpp" line="-370"/>
<source>Request aborted</source>
<translation>تمّ إبطال الطّلب</translation>
</message>
<message>
- <location line="+575"/>
+ <location line="+579"/>
<location filename="../src/qt3support/network/q3http.cpp" line="+381"/>
<source>No server set to connect to</source>
<translation>ليس هناك أيّ خادم للوصل</translation>
@@ -2265,7 +2270,12 @@ Do you want to delete it anyway?</source>
<translation>صديرة استجابة الHTTP غير صالحة</translation>
</message>
<message>
- <location line="+120"/>
+ <location line="+28"/>
+ <source>Unknown authentication method</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+97"/>
<location line="+48"/>
<location filename="../src/qt3support/network/q3http.cpp" line="+40"/>
<location line="+47"/>
@@ -2288,7 +2298,7 @@ Do you want to delete it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-133"/>
+ <location line="-138"/>
<source>Connection refused (or timed out)</source>
<translation type="unfinished"></translation>
</message>
@@ -2369,7 +2379,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QIBaseDriver</name>
<message>
- <location filename="../src/sql/drivers/ibase/qsql_ibase.cpp" line="+1378"/>
+ <location filename="../src/sql/drivers/ibase/qsql_ibase.cpp" line="+1428"/>
<source>Error opening database</source>
<translation type="unfinished"></translation>
</message>
@@ -2392,7 +2402,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QIBaseResult</name>
<message>
- <location line="-1077"/>
+ <location line="-1097"/>
<source>Unable to create BLOB</source>
<translation type="unfinished"></translation>
</message>
@@ -2412,7 +2422,7 @@ Do you want to delete it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+124"/>
+ <location line="+125"/>
<location line="+189"/>
<source>Could not find array</source>
<translation type="unfinished"></translation>
@@ -2482,7 +2492,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QIODevice</name>
<message>
- <location filename="../src/corelib/global/qglobal.cpp" line="+1830"/>
+ <location filename="../src/corelib/global/qglobal.cpp" line="+1869"/>
<source>Permission denied</source>
<translation type="unfinished"></translation>
</message>
@@ -2502,7 +2512,7 @@ Do you want to delete it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/corelib/io/qiodevice.cpp" line="+1506"/>
+ <location filename="../src/corelib/io/qiodevice.cpp" line="+1536"/>
<source>Unknown error</source>
<translation type="unfinished">خطأ مجهول</translation>
</message>
@@ -2510,7 +2520,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QInputContext</name>
<message>
- <location filename="../src/gui/inputmethod/qinputcontextfactory.cpp" line="+212"/>
+ <location filename="../src/gui/inputmethod/qinputcontextfactory.cpp" line="+242"/>
<source>XIM</source>
<translation type="unfinished"></translation>
</message>
@@ -2533,7 +2543,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QInputDialog</name>
<message>
- <location filename="../src/gui/dialogs/qinputdialog.cpp" line="+193"/>
+ <location filename="../src/gui/dialogs/qinputdialog.cpp" line="+223"/>
<source>Enter a value:</source>
<translation type="unfinished"></translation>
</message>
@@ -2541,7 +2551,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QLibrary</name>
<message>
- <location filename="../src/corelib/plugin/qlibrary.cpp" line="+348"/>
+ <location filename="../src/corelib/plugin/qlibrary.cpp" line="+378"/>
<source>Could not mmap &apos;%1&apos;: %2</source>
<translation type="unfinished"></translation>
</message>
@@ -2572,7 +2582,7 @@ Do you want to delete it anyway?</source>
</message>
<message>
<location line="-377"/>
- <location filename="../src/corelib/plugin/qpluginloader.cpp" line="+250"/>
+ <location filename="../src/corelib/plugin/qpluginloader.cpp" line="+280"/>
<source>The shared library was not found.</source>
<translation type="unfinished"></translation>
</message>
@@ -2587,8 +2597,8 @@ Do you want to delete it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/corelib/plugin/qlibrary_unix.cpp" line="+179"/>
- <location filename="../src/corelib/plugin/qlibrary_win.cpp" line="+69"/>
+ <location filename="../src/corelib/plugin/qlibrary_unix.cpp" line="+209"/>
+ <location filename="../src/corelib/plugin/qlibrary_win.cpp" line="+99"/>
<source>Cannot load library %1: %2</source>
<translation type="unfinished"></translation>
</message>
@@ -2608,7 +2618,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QLineEdit</name>
<message>
- <location filename="../src/gui/widgets/qlineedit.cpp" line="+2649"/>
+ <location filename="../src/gui/widgets/qlineedit.cpp" line="+2680"/>
<source>&amp;Undo</source>
<translation type="unfinished">&amp;تراجع</translation>
</message>
@@ -2646,8 +2656,8 @@ Do you want to delete it anyway?</source>
<context>
<name>QLocalServer</name>
<message>
- <location filename="../src/network/socket/qlocalserver.cpp" line="+196"/>
- <location filename="../src/network/socket/qlocalserver_unix.cpp" line="+201"/>
+ <location filename="../src/network/socket/qlocalserver.cpp" line="+226"/>
+ <location filename="../src/network/socket/qlocalserver_unix.cpp" line="+231"/>
<source>%1: Name error</source>
<translation type="unfinished"></translation>
</message>
@@ -2663,7 +2673,7 @@ Do you want to delete it anyway?</source>
</message>
<message>
<location line="+5"/>
- <location filename="../src/network/socket/qlocalserver_win.cpp" line="+127"/>
+ <location filename="../src/network/socket/qlocalserver_win.cpp" line="+158"/>
<source>%1: Unknown error %2</source>
<translation type="unfinished"></translation>
</message>
@@ -2671,8 +2681,8 @@ Do you want to delete it anyway?</source>
<context>
<name>QLocalSocket</name>
<message>
- <location filename="../src/network/socket/qlocalsocket_tcp.cpp" line="+102"/>
- <location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+104"/>
+ <location filename="../src/network/socket/qlocalsocket_tcp.cpp" line="+132"/>
+ <location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+134"/>
<source>%1: Connection refused</source>
<translation type="unfinished"></translation>
</message>
@@ -2685,7 +2695,7 @@ Do you want to delete it anyway?</source>
<message>
<location line="+3"/>
<location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+3"/>
- <location filename="../src/network/socket/qlocalsocket_win.cpp" line="+50"/>
+ <location filename="../src/network/socket/qlocalsocket_win.cpp" line="+80"/>
<location line="+43"/>
<source>%1: Invalid name</source>
<translation type="unfinished"></translation>
@@ -2742,7 +2752,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QMYSQLDriver</name>
<message>
- <location filename="../src/sql/drivers/mysql/qsql_mysql.cpp" line="+1200"/>
+ <location filename="../src/sql/drivers/mysql/qsql_mysql.cpp" line="+1231"/>
<source>Unable to open database &apos;</source>
<translation type="unfinished"></translation>
</message>
@@ -2752,7 +2762,7 @@ Do you want to delete it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+123"/>
+ <location line="+127"/>
<source>Unable to begin transaction</source>
<translation type="unfinished"></translation>
</message>
@@ -2770,7 +2780,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QMYSQLResult</name>
<message>
- <location line="-917"/>
+ <location line="-922"/>
<source>Unable to fetch data</source>
<translation type="unfinished"></translation>
</message>
@@ -2785,7 +2795,7 @@ Do you want to delete it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+189"/>
+ <location line="+190"/>
<location line="+8"/>
<source>Unable to prepare statement</source>
<translation type="unfinished"></translation>
@@ -2830,7 +2840,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QMdiArea</name>
<message>
- <location filename="../src/gui/widgets/qmdiarea.cpp" line="+260"/>
+ <location filename="../src/gui/widgets/qmdiarea.cpp" line="+290"/>
<source>(Untitled)</source>
<translation type="unfinished"></translation>
</message>
@@ -2838,7 +2848,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QMdiSubWindow</name>
<message>
- <location filename="../src/gui/widgets/qmdisubwindow.cpp" line="+250"/>
+ <location filename="../src/gui/widgets/qmdisubwindow.cpp" line="+280"/>
<source>%1 - [%2]</source>
<translation type="unfinished">%1 - [%2]</translation>
</message>
@@ -2931,7 +2941,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QMenu</name>
<message>
- <location filename="../src/plugins/accessible/widgets/qaccessiblemenu.cpp" line="+127"/>
+ <location filename="../src/plugins/accessible/widgets/qaccessiblemenu.cpp" line="+157"/>
<location line="+225"/>
<source>Close</source>
<translation type="unfinished">إغلاق</translation>
@@ -2988,7 +2998,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QMessageBox</name>
<message>
- <location filename="../src/gui/dialogs/qmessagebox.cpp" line="-1958"/>
+ <location filename="../src/gui/dialogs/qmessagebox.cpp" line="-1964"/>
<location line="+852"/>
<location filename="../src/gui/dialogs/qmessagebox.h" line="-52"/>
<location line="+8"/>
@@ -2996,22 +3006,17 @@ Do you want to delete it anyway?</source>
<translation>مواÙقة</translation>
</message>
<message>
- <location line="+503"/>
+ <location line="+509"/>
<source>About Qt</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-502"/>
+ <location line="-508"/>
<source>Help</source>
<translation type="unfinished">مساعدة</translation>
</message>
<message>
- <location line="+487"/>
- <source>&lt;p&gt;This program uses Qt version %1.&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location line="-1584"/>
+ <location line="-1097"/>
<source>Show Details...</source>
<translation type="unfinished"></translation>
</message>
@@ -3022,19 +3027,14 @@ Do you want to delete it anyway?</source>
</message>
<message>
<location line="+1570"/>
- <source>&lt;h3&gt;About Qt&lt;/h3&gt;%1&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 a Nokia product. See &lt;a href=&quot;http://qtsoftware.com/qt/&quot;&gt;qtsoftware.com/qt/&lt;/a&gt; for more information.&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location line="+15"/>
- <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://qtsoftware.com/company/model/&quot;&gt;qtsoftware.com/company/model/&lt;/a&gt; for an overview of Qt licensing.&lt;/p&gt;</source>
+ <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://www.qtsoftware.com/products/licensing&quot;&gt;www.qtsoftware.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://www.qtsoftware.com/qt/&quot;&gt;www.qtsoftware.com/qt&lt;/a&gt; for more information.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>QMultiInputContext</name>
<message>
- <location filename="../src/plugins/inputmethods/imsw-multi/qmultiinputcontext.cpp" line="+58"/>
+ <location filename="../src/plugins/inputmethods/imsw-multi/qmultiinputcontext.cpp" line="+88"/>
<source>Select IM</source>
<translation type="unfinished"></translation>
</message>
@@ -3042,7 +3042,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QMultiInputContextPlugin</name>
<message>
- <location filename="../src/plugins/inputmethods/imsw-multi/qmultiinputcontextplugin.cpp" line="+65"/>
+ <location filename="../src/plugins/inputmethods/imsw-multi/qmultiinputcontextplugin.cpp" line="+95"/>
<source>Multiple input method switcher</source>
<translation type="unfinished"></translation>
</message>
@@ -3055,7 +3055,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QNativeSocketEngine</name>
<message>
- <location filename="../src/network/socket/qnativesocketengine.cpp" line="+176"/>
+ <location filename="../src/network/socket/qnativesocketengine.cpp" line="+206"/>
<source>The remote host closed the connection</source>
<translation type="unfinished"></translation>
</message>
@@ -3188,7 +3188,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QNetworkAccessCacheBackend</name>
<message>
- <location filename="../src/network/access/qnetworkaccesscachebackend.cpp" line="+35"/>
+ <location filename="../src/network/access/qnetworkaccesscachebackend.cpp" line="+65"/>
<source>Error opening %1</source>
<translation type="unfinished"></translation>
</message>
@@ -3196,7 +3196,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QNetworkAccessFileBackend</name>
<message>
- <location filename="../src/network/access/qnetworkaccessfilebackend.cpp" line="+69"/>
+ <location filename="../src/network/access/qnetworkaccessfilebackend.cpp" line="+99"/>
<source>Request for opening non-local file %1</source>
<translation type="unfinished"></translation>
</message>
@@ -3224,7 +3224,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QNetworkAccessFtpBackend</name>
<message>
- <location filename="../src/network/access/qnetworkaccessftpbackend.cpp" line="+135"/>
+ <location filename="../src/network/access/qnetworkaccessftpbackend.cpp" line="+165"/>
<source>No suitable proxy found</source>
<translation type="unfinished"></translation>
</message>
@@ -3234,7 +3234,7 @@ Do you want to delete it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+131"/>
+ <location line="+130"/>
<source>Logging in to %1 failed: authentication required</source>
<translation type="unfinished"></translation>
</message>
@@ -3252,7 +3252,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QNetworkAccessHttpBackend</name>
<message>
- <location filename="../src/network/access/qnetworkaccesshttpbackend.cpp" line="+565"/>
+ <location filename="../src/network/access/qnetworkaccesshttpbackend.cpp" line="+597"/>
<source>No suitable proxy found</source>
<translation type="unfinished"></translation>
</message>
@@ -3265,7 +3265,7 @@ Do you want to delete it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/network/access/qnetworkreplyimpl.cpp" line="+37"/>
+ <location filename="../src/network/access/qnetworkreplyimpl.cpp" line="+68"/>
<source>Protocol &quot;%1&quot; is unknown</source>
<translation type="unfinished"></translation>
</message>
@@ -3273,7 +3273,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QNetworkReplyImpl</name>
<message>
- <location line="+422"/>
+ <location line="+432"/>
<location line="+22"/>
<source>Operation canceled</source>
<translation type="unfinished"></translation>
@@ -3282,7 +3282,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QOCIDriver</name>
<message>
- <location filename="../src/sql/drivers/oci/qsql_oci.cpp" line="+2027"/>
+ <location filename="../src/sql/drivers/oci/qsql_oci.cpp" line="+2069"/>
<source>Unable to logon</source>
<translation type="unfinished"></translation>
</message>
@@ -3311,7 +3311,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QOCIResult</name>
<message>
- <location line="-976"/>
+ <location line="-963"/>
<location line="+161"/>
<location line="+15"/>
<source>Unable to bind column for batch execute</source>
@@ -3338,18 +3338,12 @@ Do you want to delete it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+29"/>
- <location line="+37"/>
+ <location line="+36"/>
<source>Unable to bind value</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-20"/>
- <source>Unable to execute select statement</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location line="+32"/>
+ <location line="+19"/>
<source>Unable to execute statement</source>
<translation type="unfinished"></translation>
</message>
@@ -3357,7 +3351,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QODBCDriver</name>
<message>
- <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="+1657"/>
+ <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="+1785"/>
<source>Unable to connect</source>
<translation type="unfinished"></translation>
</message>
@@ -3367,7 +3361,7 @@ Do you want to delete it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+234"/>
+ <location line="+242"/>
<source>Unable to disable autocommit</source>
<translation type="unfinished"></translation>
</message>
@@ -3390,19 +3384,19 @@ Do you want to delete it anyway?</source>
<context>
<name>QODBCResult</name>
<message>
- <location line="-1204"/>
+ <location line="-1218"/>
<location line="+349"/>
<source>QODBCResult::reset: Unable to set &apos;SQL_CURSOR_STATIC&apos; as statement attribute. Please check your ODBC driver configuration</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="-332"/>
- <location line="+625"/>
+ <location line="+626"/>
<source>Unable to execute statement</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-554"/>
+ <location line="-555"/>
<source>Unable to fetch next</source>
<translation type="unfinished"></translation>
</message>
@@ -3412,19 +3406,19 @@ Do you want to delete it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+267"/>
+ <location line="+268"/>
<source>Unable to bind variable</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/sql/drivers/db2/qsql_db2.cpp" line="+194"/>
- <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="-474"/>
- <location line="+577"/>
+ <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="-475"/>
+ <location line="+578"/>
<source>Unable to fetch last</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="-671"/>
+ <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="-672"/>
<source>Unable to fetch</source>
<translation type="unfinished"></translation>
</message>
@@ -3442,12 +3436,12 @@ Do you want to delete it anyway?</source>
<context>
<name>QObject</name>
<message>
- <location filename="../src/gui/util/qdesktopservices_mac.cpp" line="+134"/>
+ <location filename="../src/gui/util/qdesktopservices_mac.cpp" line="+165"/>
<source>Home</source>
<translation type="unfinished">منزل</translation>
</message>
<message>
- <location filename="../src/network/access/qnetworkaccessdatabackend.cpp" line="+44"/>
+ <location filename="../src/network/access/qnetworkaccessdatabackend.cpp" line="+74"/>
<source>Operation not supported on %1</source>
<translation type="unfinished"></translation>
</message>
@@ -3457,7 +3451,7 @@ Do you want to delete it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/network/access/qnetworkaccessdebugpipebackend.cpp" line="+145"/>
+ <location filename="../src/network/access/qnetworkaccessdebugpipebackend.cpp" line="+175"/>
<source>Write error writing to %1: %2</source>
<translation type="unfinished"></translation>
</message>
@@ -3482,7 +3476,7 @@ Do you want to delete it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/network/kernel/qhostinfo.cpp" line="+147"/>
+ <location filename="../src/network/kernel/qhostinfo.cpp" line="+177"/>
<location line="+57"/>
<source>No host name given</source>
<translation type="unfinished"></translation>
@@ -3491,7 +3485,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QPPDOptionsModel</name>
<message>
- <location filename="../src/gui/dialogs/qprintdialog_unix.cpp" line="+1165"/>
+ <location filename="../src/gui/dialogs/qprintdialog_unix.cpp" line="+1195"/>
<source>Name</source>
<translation type="unfinished">الإسم</translation>
</message>
@@ -3504,7 +3498,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QPSQLDriver</name>
<message>
- <location filename="../src/sql/drivers/psql/qsql_psql.cpp" line="+732"/>
+ <location filename="../src/sql/drivers/psql/qsql_psql.cpp" line="+763"/>
<source>Unable to connect</source>
<translation type="unfinished"></translation>
</message>
@@ -3524,7 +3518,7 @@ Do you want to delete it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+336"/>
+ <location line="+358"/>
<source>Unable to subscribe</source>
<translation type="unfinished"></translation>
</message>
@@ -3537,12 +3531,12 @@ Do you want to delete it anyway?</source>
<context>
<name>QPSQLResult</name>
<message>
- <location line="-1035"/>
+ <location line="-1058"/>
<source>Unable to create query</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+373"/>
+ <location line="+374"/>
<source>Unable to prepare statement</source>
<translation type="unfinished"></translation>
</message>
@@ -3550,7 +3544,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QPageSetupWidget</name>
<message>
- <location filename="../src/gui/dialogs/qpagesetupdialog_unix.cpp" line="+274"/>
+ <location filename="../src/gui/dialogs/qpagesetupdialog_unix.cpp" line="+304"/>
<source>Centimeters (cm)</source>
<translation type="unfinished"></translation>
</message>
@@ -3666,7 +3660,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QPrintDialog</name>
<message>
- <location filename="../src/gui/painting/qprinterinfo_unix.cpp" line="+68"/>
+ <location filename="../src/gui/painting/qprinterinfo_unix.cpp" line="+98"/>
<source>locally connected</source>
<translation>موصل محليّا</translation>
</message>
@@ -3683,7 +3677,7 @@ Do you want to delete it anyway?</source>
<translation>مجهول</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qprintdialog_win.cpp" line="+238"/>
+ <location filename="../src/gui/dialogs/qprintdialog_win.cpp" line="+268"/>
<source>OK</source>
<translation type="unfinished">مواÙقة</translation>
</message>
@@ -3700,7 +3694,7 @@ Do you want to delete it anyway?</source>
<translation type="obsolete">الطّابعة</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qprintdialog_qws.cpp" line="+345"/>
+ <location filename="../src/gui/dialogs/qprintdialog_qws.cpp" line="+375"/>
<source>Print all</source>
<translation type="unfinished">طباعة الجميع</translation>
</message>
@@ -3880,7 +3874,7 @@ Do you want to delete it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qabstractprintdialog.cpp" line="+80"/>
+ <location filename="../src/gui/dialogs/qabstractprintdialog.cpp" line="+110"/>
<location line="+13"/>
<location filename="../src/gui/dialogs/qprintdialog_win.cpp" line="-2"/>
<source>Print</source>
@@ -4128,13 +4122,13 @@ Please choose a different file name.</source>
<context>
<name>QPrintPreviewDialog</name>
<message>
- <location filename="../src/gui/dialogs/qabstractpagesetupdialog.cpp" line="+38"/>
+ <location filename="../src/gui/dialogs/qabstractpagesetupdialog.cpp" line="+68"/>
<location line="+12"/>
<source>Page Setup</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qprintpreviewdialog.cpp" line="+222"/>
+ <location filename="../src/gui/dialogs/qprintpreviewdialog.cpp" line="+252"/>
<source>%1%</source>
<translation type="unfinished"></translation>
</message>
@@ -4412,8 +4406,8 @@ Please choose a different file name.</source>
<context>
<name>QProcess</name>
<message>
- <location filename="../src/corelib/io/qprocess_unix.cpp" line="+445"/>
- <location filename="../src/corelib/io/qprocess_win.cpp" line="+117"/>
+ <location filename="../src/corelib/io/qprocess_unix.cpp" line="+475"/>
+ <location filename="../src/corelib/io/qprocess_win.cpp" line="+147"/>
<source>Could not open input redirection for reading</source>
<translation type="unfinished"></translation>
</message>
@@ -4442,7 +4436,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/corelib/io/qprocess.cpp" line="+503"/>
+ <location filename="../src/corelib/io/qprocess.cpp" line="+533"/>
<location line="+52"/>
<location filename="../src/corelib/io/qprocess_win.cpp" line="-211"/>
<location line="+50"/>
@@ -4462,6 +4456,11 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
+ <location line="+912"/>
+ <source>No program defined</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<location filename="../src/corelib/io/qprocess_win.cpp" line="-341"/>
<source>Process failed to start</source>
<translation type="unfinished"></translation>
@@ -4470,7 +4469,7 @@ Please choose a different file name.</source>
<context>
<name>QProgressDialog</name>
<message>
- <location filename="../src/gui/dialogs/qprogressdialog.cpp" line="+152"/>
+ <location filename="../src/gui/dialogs/qprogressdialog.cpp" line="+182"/>
<source>Cancel</source>
<translation>إلغاء</translation>
</message>
@@ -4494,7 +4493,7 @@ Please choose a different file name.</source>
<context>
<name>QRegExp</name>
<message>
- <location filename="../src/corelib/tools/qregexp.cpp" line="+34"/>
+ <location filename="../src/corelib/tools/qregexp.cpp" line="+64"/>
<source>no error occurred</source>
<translation>لم يحدث هناك أيّ خطأ</translation>
</message>
@@ -4542,7 +4541,7 @@ Please choose a different file name.</source>
<context>
<name>QSQLite2Driver</name>
<message>
- <location filename="../src/sql/drivers/sqlite2/qsql_sqlite2.cpp" line="+353"/>
+ <location filename="../src/sql/drivers/sqlite2/qsql_sqlite2.cpp" line="+396"/>
<source>Error to open database</source>
<translation type="unfinished"></translation>
</message>
@@ -4565,12 +4564,12 @@ Please choose a different file name.</source>
<context>
<name>QSQLite2Result</name>
<message>
- <location line="-310"/>
+ <location line="-323"/>
<source>Unable to fetch results</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+139"/>
+ <location line="+147"/>
<source>Unable to execute statement</source>
<translation type="unfinished"></translation>
</message>
@@ -4578,7 +4577,7 @@ Please choose a different file name.</source>
<context>
<name>QSQLiteDriver</name>
<message>
- <location filename="../src/sql/drivers/sqlite/qsql_sqlite.cpp" line="+498"/>
+ <location filename="../src/sql/drivers/sqlite/qsql_sqlite.cpp" line="+528"/>
<source>Error opening database</source>
<translation type="unfinished"></translation>
</message>
@@ -4641,12 +4640,12 @@ Please choose a different file name.</source>
<context>
<name>QScrollBar</name>
<message>
- <location filename="../src/gui/widgets/qscrollbar.cpp" line="+419"/>
+ <location filename="../src/gui/widgets/qscrollbar.cpp" line="+448"/>
<source>Scroll here</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+3"/>
+ <location line="+2"/>
<source>Left edge</source>
<translation type="unfinished"></translation>
</message>
@@ -4656,7 +4655,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+2"/>
+ <location line="+1"/>
<source>Right edge</source>
<translation type="unfinished"></translation>
</message>
@@ -4666,7 +4665,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+3"/>
+ <location line="+2"/>
<source>Page left</source>
<translation type="unfinished"></translation>
</message>
@@ -4677,7 +4676,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+2"/>
+ <location line="+1"/>
<source>Page right</source>
<translation type="unfinished"></translation>
</message>
@@ -4688,7 +4687,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+3"/>
+ <location line="+2"/>
<source>Scroll left</source>
<translation type="unfinished"></translation>
</message>
@@ -4698,7 +4697,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+2"/>
+ <location line="+1"/>
<source>Scroll right</source>
<translation type="unfinished"></translation>
</message>
@@ -4726,7 +4725,7 @@ Please choose a different file name.</source>
<context>
<name>QSharedMemory</name>
<message>
- <location filename="../src/corelib/kernel/qsharedmemory.cpp" line="+177"/>
+ <location filename="../src/corelib/kernel/qsharedmemory.cpp" line="+207"/>
<source>%1: unable to set key on lock</source>
<translation type="unfinished"></translation>
</message>
@@ -4737,7 +4736,7 @@ Please choose a different file name.</source>
</message>
<message>
<location line="+168"/>
- <location filename="../src/corelib/kernel/qsharedmemory_p.h" line="+118"/>
+ <location filename="../src/corelib/kernel/qsharedmemory_p.h" line="+148"/>
<source>%1: unable to lock</source>
<translation type="unfinished"></translation>
</message>
@@ -4747,8 +4746,8 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/corelib/kernel/qsharedmemory_unix.cpp" line="+48"/>
- <location filename="../src/corelib/kernel/qsharedmemory_win.cpp" line="+57"/>
+ <location filename="../src/corelib/kernel/qsharedmemory_unix.cpp" line="+78"/>
+ <location filename="../src/corelib/kernel/qsharedmemory_win.cpp" line="+87"/>
<source>%1: permission denied</source>
<translation type="unfinished"></translation>
</message>
@@ -4826,7 +4825,7 @@ Please choose a different file name.</source>
<context>
<name>QShortcut</name>
<message>
- <location filename="../src/gui/kernel/qkeysequence.cpp" line="+343"/>
+ <location filename="../src/gui/kernel/qkeysequence.cpp" line="+373"/>
<source>Space</source>
<translation type="unfinished">Ùراغ</translation>
</message>
@@ -5407,7 +5406,7 @@ Please choose a different file name.</source>
<context>
<name>QSql</name>
<message>
- <location filename="../src/qt3support/sql/q3sqlmanager_p.cpp" line="+860"/>
+ <location filename="../src/qt3support/sql/q3sqlmanager_p.cpp" line="+890"/>
<source>Delete</source>
<translation>حذÙ</translation>
</message>
@@ -5464,7 +5463,7 @@ Please choose a different file name.</source>
<context>
<name>QSslSocket</name>
<message>
- <location filename="../src/network/ssl/qsslsocket_openssl.cpp" line="+539"/>
+ <location filename="../src/network/ssl/qsslsocket_openssl.cpp" line="+569"/>
<source>Unable to write data: %1</source>
<translation type="unfinished"></translation>
</message>
@@ -5523,7 +5522,7 @@ Please choose a different file name.</source>
<name>QSystemSemaphore</name>
<message>
<location filename="../src/corelib/kernel/qsystemsemaphore_unix.cpp" line="-41"/>
- <location filename="../src/corelib/kernel/qsystemsemaphore_win.cpp" line="+36"/>
+ <location filename="../src/corelib/kernel/qsystemsemaphore_win.cpp" line="+66"/>
<source>%1: out of resources</source>
<translation type="unfinished"></translation>
</message>
@@ -5553,7 +5552,7 @@ Please choose a different file name.</source>
<context>
<name>QTDSDriver</name>
<message>
- <location filename="../src/sql/drivers/tds/qsql_tds.cpp" line="+552"/>
+ <location filename="../src/sql/drivers/tds/qsql_tds.cpp" line="+584"/>
<source>Unable to open connection</source>
<translation type="unfinished"></translation>
</message>
@@ -5579,7 +5578,7 @@ Please choose a different file name.</source>
<context>
<name>QTcpServer</name>
<message>
- <location filename="../src/network/socket/qtcpserver.cpp" line="+252"/>
+ <location filename="../src/network/socket/qtcpserver.cpp" line="+282"/>
<source>Operation on socket is not supported</source>
<translation type="unfinished"></translation>
</message>
@@ -5587,7 +5586,7 @@ Please choose a different file name.</source>
<context>
<name>QTextControl</name>
<message>
- <location filename="../src/gui/text/qtextcontrol.cpp" line="+1942"/>
+ <location filename="../src/gui/text/qtextcontrol.cpp" line="+1973"/>
<source>&amp;Undo</source>
<translation type="unfinished">&amp;تراجع</translation>
</message>
@@ -5645,7 +5644,7 @@ Please choose a different file name.</source>
<context>
<name>QUdpSocket</name>
<message>
- <location filename="../src/network/socket/qudpsocket.cpp" line="+139"/>
+ <location filename="../src/network/socket/qudpsocket.cpp" line="+169"/>
<source>This platform does not support IPv6</source>
<translation type="unfinished"></translation>
</message>
@@ -5653,7 +5652,7 @@ Please choose a different file name.</source>
<context>
<name>QUndoGroup</name>
<message>
- <location filename="../src/gui/util/qundogroup.cpp" line="+356"/>
+ <location filename="../src/gui/util/qundogroup.cpp" line="+386"/>
<source>Undo</source>
<translation type="unfinished">تراجع</translation>
</message>
@@ -5666,7 +5665,7 @@ Please choose a different file name.</source>
<context>
<name>QUndoModel</name>
<message>
- <location filename="../src/gui/util/qundoview.cpp" line="+71"/>
+ <location filename="../src/gui/util/qundoview.cpp" line="+101"/>
<source>&lt;empty&gt;</source>
<translation type="unfinished"></translation>
</message>
@@ -5674,7 +5673,7 @@ Please choose a different file name.</source>
<context>
<name>QUndoStack</name>
<message>
- <location filename="../src/gui/util/qundostack.cpp" line="+804"/>
+ <location filename="../src/gui/util/qundostack.cpp" line="+834"/>
<source>Undo</source>
<translation type="unfinished">تراجع</translation>
</message>
@@ -5745,7 +5744,7 @@ Please choose a different file name.</source>
<context>
<name>QWebFrame</name>
<message>
- <location filename="../src/3rdparty/webkit/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp" line="+686"/>
+ <location filename="../src/3rdparty/webkit/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp" line="+692"/>
<source>Request cancelled</source>
<translation type="unfinished"></translation>
</message>
@@ -6155,7 +6154,7 @@ Please choose a different file name.</source>
</translation>
</message>
<message>
- <location filename="../src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp" line="+1342"/>
+ <location filename="../src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp" line="+1322"/>
<source>JavaScript Alert - %1</source>
<translation type="unfinished"></translation>
</message>
@@ -6231,6 +6230,11 @@ Please choose a different file name.</source>
</message>
<message>
<location line="+3"/>
+ <source>Select all</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
<source>Select to the next character</source>
<translation type="unfinished"></translation>
</message>
@@ -6299,11 +6303,21 @@ Please choose a different file name.</source>
<source>Delete to the end of the word</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <location line="+33"/>
+ <source>Insert a new paragraph</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Insert a new line</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>QWhatsThisAction</name>
<message>
- <location filename="../src/gui/kernel/qwhatsthis.cpp" line="+492"/>
+ <location filename="../src/gui/kernel/qwhatsthis.cpp" line="+522"/>
<source>What&apos;s This?</source>
<translation type="unfinished">ما هذا؟</translation>
</message>
@@ -6311,7 +6325,7 @@ Please choose a different file name.</source>
<context>
<name>QWidget</name>
<message>
- <location filename="../src/gui/kernel/qwidget.cpp" line="+5290"/>
+ <location filename="../src/gui/kernel/qwidget.cpp" line="+5326"/>
<source>*</source>
<translation type="unfinished"></translation>
</message>
@@ -6319,7 +6333,7 @@ Please choose a different file name.</source>
<context>
<name>QWizard</name>
<message>
- <location filename="../src/gui/dialogs/qwizard.cpp" line="+605"/>
+ <location filename="../src/gui/dialogs/qwizard.cpp" line="+637"/>
<source>&lt; &amp;Back</source>
<translation type="unfinished">&lt; &amp;رجوع</translation>
</message>
@@ -6381,7 +6395,7 @@ Please choose a different file name.</source>
<context>
<name>QWorkspace</name>
<message>
- <location filename="../src/gui/widgets/qworkspace.cpp" line="+1064"/>
+ <location filename="../src/gui/widgets/qworkspace.cpp" line="+1094"/>
<source>&amp;Restore</source>
<translation type="unfinished">ا&amp;ستعاد</translation>
</message>
@@ -6451,7 +6465,7 @@ Please choose a different file name.</source>
<context>
<name>QXml</name>
<message>
- <location filename="../src/xml/sax/qxml.cpp" line="+28"/>
+ <location filename="../src/xml/sax/qxml.cpp" line="+58"/>
<source>no error occurred</source>
<translation>لم يحدث هناك أيّ خطأ</translation>
</message>
@@ -6569,8 +6583,8 @@ Please choose a different file name.</source>
<context>
<name>QXmlStream</name>
<message>
- <location filename="../src/corelib/xml/qxmlstream.cpp" line="+562"/>
- <location filename="../src/corelib/xml/qxmlstream_p.h" line="+1739"/>
+ <location filename="../src/corelib/xml/qxmlstream.cpp" line="+592"/>
+ <location filename="../src/corelib/xml/qxmlstream_p.h" line="+1769"/>
<source>Extra content at end of document.</source>
<translation type="unfinished"></translation>
</message>
@@ -6754,7 +6768,7 @@ Please choose a different file name.</source>
<context>
<name>QtXmlPatterns</name>
<message>
- <location filename="../src/xmlpatterns/acceltree/qacceltreebuilder.cpp" line="+175"/>
+ <location filename="../src/xmlpatterns/acceltree/qacceltreebuilder.cpp" line="+205"/>
<source>An %1-attribute with value %2 has already been declared.</source>
<translation type="unfinished"></translation>
</message>
@@ -6764,12 +6778,12 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/api/qiodevicedelegate.cpp" line="+54"/>
+ <location filename="../src/xmlpatterns/api/qiodevicedelegate.cpp" line="+84"/>
<source>Network timeout.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/api/qxmlserializer.cpp" line="+290"/>
+ <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 type="unfinished"></translation>
</message>
@@ -6779,7 +6793,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qabstractdatetime.cpp" line="+50"/>
+ <location filename="../src/xmlpatterns/data/qabstractdatetime.cpp" line="+80"/>
<source>Year %1 is invalid because it begins with %2.</source>
<translation type="unfinished"></translation>
</message>
@@ -6819,7 +6833,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qabstractduration.cpp" line="+69"/>
+ <location filename="../src/xmlpatterns/data/qabstractduration.cpp" line="+99"/>
<location line="+15"/>
<source>At least one component must be present.</source>
<translation type="unfinished"></translation>
@@ -6830,7 +6844,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qabstractfloatmathematician.cpp" line="+34"/>
+ <location filename="../src/xmlpatterns/data/qabstractfloatmathematician.cpp" line="+64"/>
<source>No operand in an integer division, %1, can be %2.</source>
<translation type="unfinished"></translation>
</message>
@@ -6845,17 +6859,17 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qanyuri_p.h" line="+102"/>
+ <location filename="../src/xmlpatterns/data/qanyuri_p.h" line="+132"/>
<source>%1 is not a valid value of type %2.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qatomiccasters_p.h" line="+193"/>
+ <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 type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qatomicmathematicians.cpp" line="+35"/>
+ <location filename="../src/xmlpatterns/data/qatomicmathematicians.cpp" line="+65"/>
<source>Integer division (%1) by zero (%2) is undefined.</source>
<translation type="unfinished"></translation>
</message>
@@ -6886,17 +6900,17 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qatomicvalue.cpp" line="+49"/>
+ <location filename="../src/xmlpatterns/data/qatomicvalue.cpp" line="+79"/>
<source>A value of type %1 cannot have an Effective Boolean Value.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qboolean.cpp" line="+48"/>
+ <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 type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qderivedinteger_p.h" line="+372"/>
+ <location filename="../src/xmlpatterns/data/qderivedinteger_p.h" line="+402"/>
<source>Value %1 of type %2 exceeds maximum (%3).</source>
<translation type="unfinished"></translation>
</message>
@@ -6906,7 +6920,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qhexbinary.cpp" line="+61"/>
+ <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 type="unfinished"></translation>
</message>
@@ -6916,7 +6930,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qarithmeticexpression.cpp" line="+177"/>
+ <location filename="../src/xmlpatterns/expr/qarithmeticexpression.cpp" line="+207"/>
<source>Operator %1 cannot be used on type %2.</source>
<translation type="unfinished"></translation>
</message>
@@ -6926,7 +6940,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qattributenamevalidator.cpp" line="+36"/>
+ <location filename="../src/xmlpatterns/expr/qattributenamevalidator.cpp" line="+66"/>
<source>The namespace URI in the name for a computed attribute cannot be %1.</source>
<translation type="unfinished"></translation>
</message>
@@ -6936,7 +6950,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qcastas.cpp" line="+58"/>
+ <location filename="../src/xmlpatterns/expr/qcastas.cpp" line="+88"/>
<source>Type error in cast, expected %1, received %2.</source>
<translation type="unfinished"></translation>
</message>
@@ -6946,7 +6960,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qcastingplatform.cpp" line="+104"/>
+ <location filename="../src/xmlpatterns/expr/qcastingplatform.cpp" line="+134"/>
<source>No casting is possible with %1 as the target type.</source>
<translation type="unfinished"></translation>
</message>
@@ -6971,7 +6985,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qcommentconstructor.cpp" line="+37"/>
+ <location filename="../src/xmlpatterns/expr/qcommentconstructor.cpp" line="+67"/>
<source>A comment cannot contain %1</source>
<translation type="unfinished"></translation>
</message>
@@ -6981,7 +6995,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qcomparisonplatform.cpp" line="+137"/>
+ <location filename="../src/xmlpatterns/expr/qcomparisonplatform.cpp" line="+167"/>
<source>No comparisons can be done involving the type %1.</source>
<translation type="unfinished"></translation>
</message>
@@ -6991,12 +7005,12 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qdocumentcontentvalidator.cpp" line="+56"/>
+ <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 type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qexpressionfactory.cpp" line="+139"/>
+ <location filename="../src/xmlpatterns/expr/qexpressionfactory.cpp" line="+169"/>
<source>A library module cannot be evaluated directly. It must be imported from a main module.</source>
<translation type="unfinished"></translation>
</message>
@@ -7006,7 +7020,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qgenericpredicate.cpp" line="+76"/>
+ <location filename="../src/xmlpatterns/expr/qgenericpredicate.cpp" line="+106"/>
<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 type="unfinished"></translation>
</message>
@@ -7016,7 +7030,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qncnameconstructor_p.h" line="+83"/>
+ <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 type="unfinished"></translation>
</message>
@@ -7026,33 +7040,33 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qpath.cpp" line="+79"/>
+ <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 type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qprocessinginstructionconstructor.cpp" line="+54"/>
+ <location filename="../src/xmlpatterns/expr/qprocessinginstructionconstructor.cpp" line="+84"/>
<source>The data of a processing instruction cannot contain the string %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qqnameconstructor.cpp" line="+52"/>
+ <location filename="../src/xmlpatterns/expr/qqnameconstructor.cpp" line="+82"/>
<source>No namespace binding exists for the prefix %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qqnameconstructor_p.h" line="+126"/>
+ <location filename="../src/xmlpatterns/expr/qqnameconstructor_p.h" line="+156"/>
<source>No namespace binding exists for the prefix %1 in %2</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+12"/>
- <location filename="../src/xmlpatterns/functions/qqnamefns.cpp" line="+39"/>
+ <location filename="../src/xmlpatterns/functions/qqnamefns.cpp" line="+69"/>
<source>%1 is an invalid %2</source>
<translation type="unfinished"></translation>
</message>
<message numerus="yes">
- <location filename="../src/xmlpatterns/functions/qabstractfunctionfactory.cpp" line="+47"/>
+ <location filename="../src/xmlpatterns/functions/qabstractfunctionfactory.cpp" line="+77"/>
<source>%1 takes at most %n argument(s). %2 is therefore invalid.</source>
<translation type="unfinished">
<numerusform></numerusform>
@@ -7066,7 +7080,7 @@ Please choose a different file name.</source>
</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qaggregatefns.cpp" line="+90"/>
+ <location filename="../src/xmlpatterns/functions/qaggregatefns.cpp" line="+120"/>
<source>The first argument to %1 cannot be of type %2. It must be a numeric type, xs:yearMonthDuration or xs:dayTimeDuration.</source>
<translation type="unfinished"></translation>
</message>
@@ -7081,27 +7095,27 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qassemblestringfns.cpp" line="+58"/>
+ <location filename="../src/xmlpatterns/functions/qassemblestringfns.cpp" line="+88"/>
<source>%1 is not a valid XML 1.0 character.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qcomparingaggregator.cpp" line="+167"/>
+ <location filename="../src/xmlpatterns/functions/qcomparingaggregator.cpp" line="+197"/>
<source>The first argument to %1 cannot be of type %2.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qdatetimefn.cpp" line="+56"/>
+ <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 type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qerrorfn.cpp" line="+31"/>
+ <location filename="../src/xmlpatterns/functions/qerrorfn.cpp" line="+61"/>
<source>%1 was called.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qpatternmatchingfns.cpp" line="+64"/>
+ <location filename="../src/xmlpatterns/functions/qpatternmatchingfns.cpp" line="+94"/>
<source>%1 must be followed by %2 or %3, not at the end of the replacement string.</source>
<translation type="unfinished"></translation>
</message>
@@ -7116,7 +7130,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qpatternplatform.cpp" line="+62"/>
+ <location filename="../src/xmlpatterns/functions/qpatternplatform.cpp" line="+92"/>
<source>%1 matches newline characters</source>
<translation type="unfinished"></translation>
</message>
@@ -7151,17 +7165,17 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qsequencefns.cpp" line="+317"/>
+ <location filename="../src/xmlpatterns/functions/qsequencefns.cpp" line="+347"/>
<source>It will not be possible to retrieve %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qcontextnodechecker.cpp" line="+24"/>
+ <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 type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qsequencegeneratingfns.cpp" line="+249"/>
+ <location filename="../src/xmlpatterns/functions/qsequencegeneratingfns.cpp" line="+279"/>
<source>The default collection is undefined</source>
<translation type="unfinished"></translation>
</message>
@@ -7171,12 +7185,12 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qstringvaluefns.cpp" line="+222"/>
+ <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 type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qtimezonefns.cpp" line="+57"/>
+ <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 type="unfinished"></translation>
</message>
@@ -7186,17 +7200,17 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/janitors/qcardinalityverifier.cpp" line="+28"/>
+ <location filename="../src/xmlpatterns/janitors/qcardinalityverifier.cpp" line="+58"/>
<source>Required cardinality is %1; got cardinality %2.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/janitors/qitemverifier.cpp" line="+37"/>
+ <location filename="../src/xmlpatterns/janitors/qitemverifier.cpp" line="+67"/>
<source>The item %1 did not match the required type %2.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="+319"/>
+ <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="+379"/>
<location line="+7253"/>
<source>%1 is an unknown schema type.</source>
<translation type="unfinished"></translation>
@@ -7217,7 +7231,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/parser/qparsercontext.cpp" line="+63"/>
+ <location filename="../src/xmlpatterns/parser/qparsercontext.cpp" line="+93"/>
<source>The variable %1 is unused</source>
<translation type="unfinished"></translation>
</message>
@@ -7499,7 +7513,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/type/qcardinality.cpp" line="+25"/>
+ <location filename="../src/xmlpatterns/type/qcardinality.cpp" line="+55"/>
<source>empty</source>
<translation type="unfinished"></translation>
</message>
@@ -7524,7 +7538,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/type/qtypechecker.cpp" line="+33"/>
+ <location filename="../src/xmlpatterns/type/qtypechecker.cpp" line="+63"/>
<source>Required type is %1, but %2 was found.</source>
<translation type="unfinished"></translation>
</message>
@@ -7539,7 +7553,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/utils/qoutputvalidator.cpp" line="+56"/>
+ <location filename="../src/xmlpatterns/utils/qoutputvalidator.cpp" line="+86"/>
<source>It&apos;s not possible to add attributes after any other kind of node.</source>
<translation type="unfinished"></translation>
</message>
@@ -7549,12 +7563,12 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/utils/qxpathhelper_p.h" line="+90"/>
+ <location filename="../src/xmlpatterns/utils/qxpathhelper_p.h" line="+120"/>
<source>Only the Unicode Codepoint Collation is supported(%1). %2 is unsupported.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/acceltree/qacceltreeresourceloader.cpp" line="+284"/>
+ <location filename="../src/xmlpatterns/acceltree/qacceltreeresourceloader.cpp" line="+314"/>
<source>%1 is an unsupported encoding.</source>
<translation type="unfinished"></translation>
</message>
@@ -7569,13 +7583,13 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qapplytemplate.cpp" line="+89"/>
+ <location filename="../src/xmlpatterns/expr/qapplytemplate.cpp" line="+119"/>
<source>Ambiguous rule match.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qcomputednamespaceconstructor.cpp" line="+39"/>
- <source>In a namespace constructor, the value for a namespace value cannot be an empty string.</source>
+ <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 type="unfinished"></translation>
</message>
<message>
@@ -7594,12 +7608,12 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qevaluationcache.cpp" line="+87"/>
+ <location filename="../src/xmlpatterns/expr/qevaluationcache.cpp" line="+117"/>
<source>Circularity detected</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qtemplate.cpp" line="+115"/>
+ <location filename="../src/xmlpatterns/expr/qtemplate.cpp" line="+145"/>
<source>The parameter %1 is required, but no corresponding %2 is supplied.</source>
<translation type="unfinished"></translation>
</message>
@@ -7609,12 +7623,12 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qunparsedtextfn.cpp" line="+35"/>
+ <location filename="../src/xmlpatterns/functions/qunparsedtextfn.cpp" line="+65"/>
<source>The URI cannot have a fragment</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/parser/qxslttokenizer.cpp" line="+489"/>
+ <location filename="../src/xmlpatterns/parser/qxslttokenizer.cpp" line="+519"/>
<source>Element %1 is not allowed at this location.</source>
<translation type="unfinished"></translation>
</message>
@@ -7669,7 +7683,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/parser/qmaintainingreader.cpp" line="+153"/>
+ <location filename="../src/xmlpatterns/parser/qmaintainingreader.cpp" line="+183"/>
<source>Attribute %1 cannot appear on the element %2. Only the standard attributes can appear.</source>
<translation type="unfinished"></translation>
</message>
@@ -7744,7 +7758,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+432"/>
+ <location line="+434"/>
<source>Element %1 cannot have a sequence constructor.</source>
<translation type="unfinished"></translation>
</message>
diff --git a/translations/qt_de.qm b/translations/qt_de.qm
index 5d68bf7..9ea09a7 100644
--- a/translations/qt_de.qm
+++ b/translations/qt_de.qm
Binary files differ
diff --git a/translations/qt_de.ts b/translations/qt_de.ts
index 640ad40..33f9ea8 100644
--- a/translations/qt_de.ts
+++ b/translations/qt_de.ts
@@ -1,11 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.0" language="de">
-<defaultcodec></defaultcodec>
<context>
<name>AudioOutput</name>
<message>
- <location filename="../src/3rdparty/phonon/phonon/audiooutput.cpp" line="+374"/>
+ <location filename="../src/3rdparty/phonon/phonon/audiooutput.cpp" line="+375"/>
<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;Das Audiogerät &lt;b&gt;%1&lt;/b&gt; funktioniert nicht.&lt;br/&gt;Es wird stattdessen &lt;b&gt;%2&lt;/b&gt; verwendet.&lt;/html&gt;</translation>
</message>
@@ -23,7 +22,7 @@
<context>
<name>CloseButton</name>
<message>
- <location filename="../src/gui/widgets/qtabbar.cpp" line="+2217"/>
+ <location filename="../src/gui/widgets/qtabbar.cpp" line="+2252"/>
<source>Close Tab</source>
<translation>Schließen</translation>
</message>
@@ -81,7 +80,7 @@ Die Audio- und Video-Unterstützung wurde abgeschaltet</translation>
<context>
<name>Phonon::Gstreamer::MediaObject</name>
<message>
- <location filename="../src/3rdparty/phonon/gstreamer/mediaobject.cpp" line="+88"/>
+ <location filename="../src/3rdparty/phonon/gstreamer/mediaobject.cpp" line="+90"/>
<source>Cannot start playback.
Check your Gstreamer installation and make sure you
@@ -95,24 +94,24 @@ Bitte prüfen Sie die Gstreamer-Installation und stellen Sie sicher, dass das Pa
<translation>Es sind nicht alle erforderlichen Codecs installiert. Um diesen Inhalt abzuspielen, muss der folgende Codec installiert werden: %0</translation>
</message>
<message>
- <location line="+653"/>
- <location line="+9"/>
+ <location line="+676"/>
+ <location line="+8"/>
<location line="+15"/>
- <location line="+7"/>
- <location line="+5"/>
- <location line="+20"/>
- <location line="+317"/>
+ <location line="+9"/>
+ <location line="+6"/>
+ <location line="+19"/>
+ <location line="+335"/>
<location line="+24"/>
<source>Could not open media source.</source>
<translation>Die Medienquelle konnte nicht geöffnet werden.</translation>
</message>
<message>
- <location line="-381"/>
+ <location line="-403"/>
<source>Invalid source type.</source>
<translation>Ungültiger Typ der Medienquelle.</translation>
</message>
<message>
- <location line="+355"/>
+ <location line="+377"/>
<source>Could not locate media source.</source>
<translation>Die Medienquelle konnte nicht gefunden werden.</translation>
</message>
@@ -146,7 +145,7 @@ Bitte prüfen Sie die Gstreamer-Installation und stellen Sie sicher, dass das Pa
<context>
<name>Q3Accel</name>
<message>
- <location filename="../src/qt3support/other/q3accel.cpp" line="+451"/>
+ <location filename="../src/qt3support/other/q3accel.cpp" line="+481"/>
<source>%1, %2 not defined</source>
<translation>%1, %2 sind nicht definiert</translation>
</message>
@@ -159,7 +158,7 @@ Bitte prüfen Sie die Gstreamer-Installation und stellen Sie sicher, dass das Pa
<context>
<name>Q3DataTable</name>
<message>
- <location filename="../src/qt3support/sql/q3datatable.cpp" line="+253"/>
+ <location filename="../src/qt3support/sql/q3datatable.cpp" line="+285"/>
<source>True</source>
<translation>Wahr</translation>
</message>
@@ -187,7 +186,7 @@ Bitte prüfen Sie die Gstreamer-Installation und stellen Sie sicher, dass das Pa
<context>
<name>Q3FileDialog</name>
<message>
- <location filename="../src/qt3support/dialogs/q3filedialog.cpp" line="+834"/>
+ <location filename="../src/qt3support/dialogs/q3filedialog.cpp" line="+865"/>
<source>Copy or Move a File</source>
<translation>Datei kopieren oder verschieben</translation>
</message>
@@ -204,7 +203,7 @@ Bitte prüfen Sie die Gstreamer-Installation und stellen Sie sicher, dass das Pa
</message>
<message>
<location line="-22"/>
- <location line="+1575"/>
+ <location line="+1579"/>
<source>Cancel</source>
<translation>Abbrechen</translation>
</message>
@@ -212,7 +211,7 @@ Bitte prüfen Sie die Gstreamer-Installation und stellen Sie sicher, dass das Pa
<location line="-157"/>
<location line="+49"/>
<location line="+2153"/>
- <location filename="../src/qt3support/dialogs/q3filedialog_mac.cpp" line="+80"/>
+ <location filename="../src/qt3support/dialogs/q3filedialog_mac.cpp" line="+110"/>
<source>All Files (*)</source>
<translation>Alle Dateien (*)</translation>
</message>
@@ -352,7 +351,7 @@ Bitte prüfen Sie die Gstreamer-Installation und stellen Sie sicher, dass das Pa
<message>
<location line="+704"/>
<location line="+2100"/>
- <location filename="../src/qt3support/dialogs/q3filedialog_win.cpp" line="+307"/>
+ <location filename="../src/qt3support/dialogs/q3filedialog_win.cpp" line="+337"/>
<source>Open</source>
<translation>Öffnen</translation>
</message>
@@ -520,7 +519,7 @@ Datei konnte nicht gefunden werden.
<context>
<name>Q3LocalFs</name>
<message>
- <location filename="../src/qt3support/network/q3localfs.cpp" line="+100"/>
+ <location filename="../src/qt3support/network/q3localfs.cpp" line="+130"/>
<location line="+10"/>
<source>Could not read directory
%1</source>
@@ -570,7 +569,7 @@ nach
<context>
<name>Q3MainWindow</name>
<message>
- <location filename="../src/qt3support/widgets/q3mainwindow.cpp" line="+2021"/>
+ <location filename="../src/qt3support/widgets/q3mainwindow.cpp" line="+2051"/>
<source>Line up</source>
<translation>Ausrichten</translation>
</message>
@@ -583,7 +582,7 @@ nach
<context>
<name>Q3NetworkProtocol</name>
<message>
- <location filename="../src/qt3support/network/q3networkprotocol.cpp" line="+824"/>
+ <location filename="../src/qt3support/network/q3networkprotocol.cpp" line="+854"/>
<source>Operation stopped by the user</source>
<translation>Operation von Benutzer angehalten</translation>
</message>
@@ -591,7 +590,7 @@ nach
<context>
<name>Q3ProgressDialog</name>
<message>
- <location filename="../src/qt3support/dialogs/q3progressdialog.cpp" line="+194"/>
+ <location filename="../src/qt3support/dialogs/q3progressdialog.cpp" line="+224"/>
<location line="+61"/>
<source>Cancel</source>
<translation>Abbrechen</translation>
@@ -600,7 +599,7 @@ nach
<context>
<name>Q3TabDialog</name>
<message>
- <location filename="../src/qt3support/dialogs/q3tabdialog.cpp" line="+159"/>
+ <location filename="../src/qt3support/dialogs/q3tabdialog.cpp" line="+189"/>
<location line="+814"/>
<source>OK</source>
<translation>OK</translation>
@@ -629,7 +628,7 @@ nach
<context>
<name>Q3TextEdit</name>
<message>
- <location filename="../src/qt3support/text/q3textedit.cpp" line="+5399"/>
+ <location filename="../src/qt3support/text/q3textedit.cpp" line="+5429"/>
<source>&amp;Undo</source>
<translation>&amp;Rückgängig</translation>
</message>
@@ -668,7 +667,7 @@ nach
<context>
<name>Q3TitleBar</name>
<message>
- <location filename="../src/plugins/accessible/compat/q3complexwidgets.cpp" line="+216"/>
+ <location filename="../src/plugins/accessible/compat/q3complexwidgets.cpp" line="+246"/>
<source>System</source>
<translation>System</translation>
</message>
@@ -736,7 +735,7 @@ nach
<context>
<name>Q3ToolBar</name>
<message>
- <location filename="../src/qt3support/widgets/q3toolbar.cpp" line="+662"/>
+ <location filename="../src/qt3support/widgets/q3toolbar.cpp" line="+692"/>
<source>More...</source>
<translation>Mehr...</translation>
</message>
@@ -744,7 +743,7 @@ nach
<context>
<name>Q3UrlOperator</name>
<message>
- <location filename="../src/qt3support/network/q3urloperator.cpp" line="+356"/>
+ <location filename="../src/qt3support/network/q3urloperator.cpp" line="+386"/>
<location line="+260"/>
<location line="+4"/>
<source>The protocol `%1&apos; is not supported</source>
@@ -796,7 +795,7 @@ nach
<context>
<name>Q3Wizard</name>
<message>
- <location filename="../src/qt3support/dialogs/q3wizard.cpp" line="+147"/>
+ <location filename="../src/qt3support/dialogs/q3wizard.cpp" line="+177"/>
<source>&amp;Cancel</source>
<translation>&amp;Abbrechen</translation>
</message>
@@ -824,9 +823,9 @@ nach
<context>
<name>QAbstractSocket</name>
<message>
- <location filename="../src/network/socket/qabstractsocket.cpp" line="+838"/>
- <location filename="../src/network/socket/qhttpsocketengine.cpp" line="+585"/>
- <location filename="../src/network/socket/qsocks5socketengine.cpp" line="+627"/>
+ <location filename="../src/network/socket/qabstractsocket.cpp" line="+868"/>
+ <location filename="../src/network/socket/qhttpsocketengine.cpp" line="+615"/>
+ <location filename="../src/network/socket/qsocks5socketengine.cpp" line="+657"/>
<location line="+26"/>
<source>Host not found</source>
<translation>Rechner konnte nicht gefunden werden</translation>
@@ -869,7 +868,7 @@ nach
<context>
<name>QAbstractSpinBox</name>
<message>
- <location filename="../src/gui/widgets/qabstractspinbox.cpp" line="+1169"/>
+ <location filename="../src/gui/widgets/qabstractspinbox.cpp" line="+1199"/>
<source>&amp;Step up</source>
<translation>&amp;Inkrementieren</translation>
</message>
@@ -887,13 +886,13 @@ nach
<context>
<name>QApplication</name>
<message>
- <location filename="../src/gui/kernel/qapplication.cpp" line="+2212"/>
+ <location filename="../src/gui/kernel/qapplication.cpp" line="+2247"/>
<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>
<message>
- <location filename="../src/gui/dialogs/qmessagebox.h" line="+322"/>
+ <location filename="../src/gui/dialogs/qmessagebox.h" line="+352"/>
<source>Executable &apos;%1&apos; requires Qt %2, found Qt %3.</source>
<translation>Die Anwendung &apos;%1&apos; benötigt Qt %2; es wurde aber Qt %3 gefunden.</translation>
</message>
@@ -903,7 +902,7 @@ nach
<translation>Qt Bibliothek ist inkompatibel</translation>
</message>
<message>
- <location filename="../src/gui/accessible/qaccessibleobject.cpp" line="+346"/>
+ <location filename="../src/gui/accessible/qaccessibleobject.cpp" line="+376"/>
<source>Activate</source>
<translation>Aktivieren</translation>
</message>
@@ -939,7 +938,7 @@ nach
<context>
<name>QCheckBox</name>
<message>
- <location filename="../src/plugins/accessible/widgets/simplewidgets.cpp" line="+84"/>
+ <location filename="../src/plugins/accessible/widgets/simplewidgets.cpp" line="+114"/>
<source>Uncheck</source>
<translation>Löschen</translation>
</message>
@@ -957,7 +956,7 @@ nach
<context>
<name>QColorDialog</name>
<message>
- <location filename="../src/gui/dialogs/qcolordialog.cpp" line="+1219"/>
+ <location filename="../src/gui/dialogs/qcolordialog.cpp" line="+1253"/>
<source>Hu&amp;e:</source>
<translation>Farb&amp;ton:</translation>
</message>
@@ -1015,13 +1014,13 @@ nach
<context>
<name>QComboBox</name>
<message>
- <location filename="../src/plugins/accessible/widgets/complexwidgets.cpp" line="+1741"/>
+ <location filename="../src/plugins/accessible/widgets/complexwidgets.cpp" line="+1771"/>
<location line="+65"/>
<source>Open</source>
<translation>Öffnen</translation>
</message>
<message>
- <location filename="../src/gui/itemviews/qitemeditorfactory.cpp" line="+514"/>
+ <location filename="../src/gui/itemviews/qitemeditorfactory.cpp" line="+544"/>
<source>False</source>
<translation>Falsch</translation>
</message>
@@ -1039,7 +1038,7 @@ nach
<context>
<name>QCoreApplication</name>
<message>
- <location filename="../src/corelib/kernel/qsystemsemaphore_unix.cpp" line="+89"/>
+ <location filename="../src/corelib/kernel/qsystemsemaphore_unix.cpp" line="+119"/>
<source>%1: key is empty</source>
<comment>QSystemSemaphore</comment>
<translation>%1: Ungültige Schlüsselangabe (leer)</translation>
@@ -1060,12 +1059,12 @@ nach
<context>
<name>QDB2Driver</name>
<message>
- <location filename="../src/sql/drivers/db2/qsql_db2.cpp" line="+1217"/>
+ <location filename="../src/sql/drivers/db2/qsql_db2.cpp" line="+1276"/>
<source>Unable to connect</source>
<translation>Es kann keine Verbindung aufgebaut werden</translation>
</message>
<message>
- <location line="+263"/>
+ <location line="+303"/>
<source>Unable to commit transaction</source>
<translation>Die Transaktion konnte nicht durchgeführt werden (Operation &apos;commit&apos; fehlgeschlagen)</translation>
</message>
@@ -1083,8 +1082,8 @@ nach
<context>
<name>QDB2Result</name>
<message>
- <location line="-986"/>
- <location line="+242"/>
+ <location line="-1043"/>
+ <location line="+243"/>
<source>Unable to execute statement</source>
<translation>Der Befehl konnte nicht ausgeführt werden</translation>
</message>
@@ -1099,7 +1098,7 @@ nach
<translation>Die Variable konnte nicht gebunden werden</translation>
</message>
<message>
- <location line="+91"/>
+ <location line="+92"/>
<source>Unable to fetch record %1</source>
<translation>Der Datensatz %1 konnte nicht abgeholt werden</translation>
</message>
@@ -1117,7 +1116,7 @@ nach
<context>
<name>QDateTimeEdit</name>
<message>
- <location filename="../src/gui/widgets/qdatetimeedit.cpp" line="+2265"/>
+ <location filename="../src/gui/widgets/qdatetimeedit.cpp" line="+2295"/>
<source>AM</source>
<translation>AM</translation>
</message>
@@ -1140,7 +1139,7 @@ nach
<context>
<name>QDial</name>
<message>
- <location filename="../src/plugins/accessible/widgets/rangecontrols.cpp" line="+921"/>
+ <location filename="../src/plugins/accessible/widgets/rangecontrols.cpp" line="+951"/>
<source>QDial</source>
<translation>QDial</translation>
</message>
@@ -1158,7 +1157,7 @@ nach
<context>
<name>QDialog</name>
<message>
- <location filename="../src/gui/dialogs/qdialog.cpp" line="+567"/>
+ <location filename="../src/gui/dialogs/qdialog.cpp" line="+597"/>
<source>What&apos;s This?</source>
<translation>Direkthilfe</translation>
</message>
@@ -1171,9 +1170,9 @@ nach
<context>
<name>QDialogButtonBox</name>
<message>
- <location filename="../src/gui/dialogs/qmessagebox.cpp" line="+1830"/>
+ <location filename="../src/gui/dialogs/qmessagebox.cpp" line="+1869"/>
<location line="+464"/>
- <location filename="../src/gui/widgets/qdialogbuttonbox.cpp" line="+531"/>
+ <location filename="../src/gui/widgets/qdialogbuttonbox.cpp" line="+561"/>
<source>OK</source>
<translation>OK</translation>
</message>
@@ -1296,7 +1295,7 @@ nach
<context>
<name>QDirModel</name>
<message>
- <location filename="../src/gui/itemviews/qdirmodel.cpp" line="+423"/>
+ <location filename="../src/gui/itemviews/qdirmodel.cpp" line="+453"/>
<source>Name</source>
<translation>Name</translation>
</message>
@@ -1326,7 +1325,7 @@ nach
<context>
<name>QDockWidget</name>
<message>
- <location filename="../src/plugins/accessible/widgets/qaccessiblewidgets.cpp" line="+1209"/>
+ <location filename="../src/plugins/accessible/widgets/qaccessiblewidgets.cpp" line="+1239"/>
<source>Close</source>
<translation>Schließen</translation>
</message>
@@ -1357,7 +1356,7 @@ nach
<context>
<name>QErrorMessage</name>
<message>
- <location filename="../src/gui/dialogs/qerrormessage.cpp" line="+361"/>
+ <location filename="../src/gui/dialogs/qerrormessage.cpp" line="+391"/>
<source>&amp;Show this message again</source>
<translation>Diese Meldung noch einmal an&amp;zeigen</translation>
</message>
@@ -1385,13 +1384,18 @@ nach
<context>
<name>QFile</name>
<message>
- <location filename="../src/corelib/io/qfile.cpp" line="+678"/>
- <location line="+130"/>
+ <location filename="../src/corelib/io/qfile.cpp" line="+708"/>
+ <location line="+141"/>
<source>Destination file exists</source>
<translation>Die Zieldatei existiert bereits</translation>
</message>
<message>
- <location line="+12"/>
+ <location line="-108"/>
+ <source>Cannot remove source file</source>
+ <translation>Die Quelldatei kann nicht entfernt werden</translation>
+ </message>
+ <message>
+ <location line="+120"/>
<source>Cannot open %1 for input</source>
<translation>%1 konnte nicht zum Lesen geöffnet werden</translation>
</message>
@@ -1414,8 +1418,8 @@ nach
<context>
<name>QFileDialog</name>
<message>
- <location filename="../src/gui/dialogs/qfiledialog.cpp" line="+484"/>
- <location line="+423"/>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="+514"/>
+ <location line="+447"/>
<source>All Files (*)</source>
<translation>Alle Dateien (*)</translation>
</message>
@@ -1438,13 +1442,13 @@ nach
<translation>Details</translation>
</message>
<message>
- <location filename="../src/gui/itemviews/qfileiconprovider.cpp" line="+384"/>
+ <location filename="../src/gui/itemviews/qfileiconprovider.cpp" line="+414"/>
<location line="+1"/>
<source>File</source>
<translation>Datei</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-440"/>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-464"/>
<source>Open</source>
<translation>Öffnen</translation>
</message>
@@ -1454,26 +1458,26 @@ nach
<translation>Speichern unter</translation>
</message>
<message>
- <location line="+653"/>
+ <location line="+681"/>
<location line="+50"/>
- <location line="+1440"/>
+ <location line="+1467"/>
<location line="+75"/>
<source>&amp;Open</source>
<translation>&amp;Öffnen</translation>
</message>
<message>
- <location line="-1565"/>
+ <location line="-1592"/>
<location line="+50"/>
<source>&amp;Save</source>
<translation>S&amp;peichern</translation>
</message>
<message>
- <location line="+1790"/>
+ <location line="+1818"/>
<source>Recent Places</source>
<translation>Zuletzt besucht</translation>
</message>
<message>
- <location line="-2464"/>
+ <location line="-2520"/>
<source>&amp;Rename</source>
<translation>&amp;Umbenennen</translation>
</message>
@@ -1488,33 +1492,33 @@ nach
<translation>&amp;Versteckte Dateien anzeigen</translation>
</message>
<message>
- <location line="+1908"/>
+ <location line="+1963"/>
<source>New Folder</source>
<translation>Neues Verzeichnis</translation>
</message>
<message>
- <location line="-1943"/>
+ <location line="-1998"/>
<source>Find Directory</source>
<translation>Verzeichnis suchen</translation>
</message>
<message>
- <location line="+660"/>
+ <location line="+688"/>
<source>Directories</source>
<translation>Verzeichnisse</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfiledialog_win.cpp" line="+130"/>
+ <location filename="../src/gui/dialogs/qfiledialog_win.cpp" line="+160"/>
<source>All Files (*.*)</source>
<translation>Alle Dateien (*.*)</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-619"/>
- <location line="+623"/>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-647"/>
+ <location line="+651"/>
<source>Directory:</source>
<translation>Verzeichnis:</translation>
</message>
<message>
- <location line="+807"/>
+ <location line="+825"/>
<source>%1 already exists.
Do you want to replace it?</source>
<translation>Die Datei %1 existiert bereits.
@@ -1548,7 +1552,7 @@ Stellen Sie sicher, dass der Dateiname richtig ist.</translation>
</message>
<message>
<location filename="../src/gui/dialogs/qfiledialog.cpp" line="-54"/>
- <location line="+851"/>
+ <location line="+861"/>
<source>%1
Directory not found.
Please verify the correct directory name was given.</source>
@@ -1557,7 +1561,7 @@ Das Verzeichnis konnte nicht gefunden werden.
Stellen Sie sicher, dass der Verzeichnisname richtig ist.</translation>
</message>
<message>
- <location line="-217"/>
+ <location line="-218"/>
<source>&apos;%1&apos; is write protected.
Do you want to delete it anyway?</source>
<translation>&apos;%1&apos; ist schreibgeschützt.
@@ -1584,7 +1588,7 @@ Möchten sie die Datei trotzdem löschen?</translation>
<translation>Unbekannt</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-2062"/>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-2117"/>
<source>Show </source>
<translation>Anzeigen </translation>
</message>
@@ -1600,19 +1604,19 @@ Möchten sie die Datei trotzdem löschen?</translation>
<translation>&amp;Neues Verzeichnis</translation>
</message>
<message>
- <location line="+631"/>
+ <location line="+659"/>
<location line="+38"/>
<source>&amp;Choose</source>
<translation>&amp;Auswählen</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qsidebar.cpp" line="+388"/>
+ <location filename="../src/gui/dialogs/qsidebar.cpp" line="+437"/>
<source>Remove</source>
<translation>Löschen</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-662"/>
- <location line="+627"/>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-690"/>
+ <location line="+655"/>
<source>File &amp;name:</source>
<translation>Datei&amp;name:</translation>
</message>
@@ -1632,7 +1636,7 @@ Möchten sie die Datei trotzdem löschen?</translation>
<context>
<name>QFileSystemModel</name>
<message>
- <location filename="../src/gui/dialogs/qfilesystemmodel.cpp" line="+707"/>
+ <location filename="../src/gui/dialogs/qfilesystemmodel.cpp" line="+744"/>
<source>%1 TB</source>
<translation>%1 TB</translation>
</message>
@@ -1694,7 +1698,7 @@ Möchten sie die Datei trotzdem löschen?</translation>
<translation>Änderungsdatum</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfilesystemmodel_p.h" line="+204"/>
+ <location filename="../src/gui/dialogs/qfilesystemmodel_p.h" line="+242"/>
<source>My Computer</source>
<translation>Mein Computer</translation>
</message>
@@ -1707,7 +1711,7 @@ Möchten sie die Datei trotzdem löschen?</translation>
<context>
<name>QFontDatabase</name>
<message>
- <location filename="../src/gui/text/qfontdatabase.cpp" line="+60"/>
+ <location filename="../src/gui/text/qfontdatabase.cpp" line="+90"/>
<location line="+1176"/>
<source>Normal</source>
<translation>Normal</translation>
@@ -1924,7 +1928,7 @@ Möchten sie die Datei trotzdem löschen?</translation>
<context>
<name>QFontDialog</name>
<message>
- <location filename="../src/gui/dialogs/qfontdialog.cpp" line="+742"/>
+ <location filename="../src/gui/dialogs/qfontdialog.cpp" line="+772"/>
<source>&amp;Font</source>
<translation>&amp;Schriftart</translation>
</message>
@@ -1973,7 +1977,7 @@ Möchten sie die Datei trotzdem löschen?</translation>
<context>
<name>QFtp</name>
<message>
- <location filename="../src/qt3support/network/q3ftp.cpp" line="+2273"/>
+ <location filename="../src/qt3support/network/q3ftp.cpp" line="+2303"/>
<source>Host %1 found</source>
<translation>Rechner %1 gefunden</translation>
</message>
@@ -1983,7 +1987,7 @@ Möchten sie die Datei trotzdem löschen?</translation>
<translation>Rechner gefunden</translation>
</message>
<message>
- <location filename="../src/network/access/qftp.cpp" line="+973"/>
+ <location filename="../src/network/access/qftp.cpp" line="+1003"/>
<location filename="../src/qt3support/network/q3ftp.cpp" line="-1456"/>
<location line="+1451"/>
<source>Connected to host %1</source>
@@ -2119,7 +2123,7 @@ Möchten sie die Datei trotzdem löschen?</translation>
<context>
<name>QHostInfo</name>
<message>
- <location filename="../src/network/kernel/qhostinfo_p.h" line="+153"/>
+ <location filename="../src/network/kernel/qhostinfo_p.h" line="+183"/>
<source>Unknown error</source>
<translation>Unbekannter Fehler</translation>
</message>
@@ -2127,11 +2131,11 @@ Möchten sie die Datei trotzdem löschen?</translation>
<context>
<name>QHostInfoAgent</name>
<message>
- <location filename="../src/network/kernel/qhostinfo_unix.cpp" line="+148"/>
+ <location filename="../src/network/kernel/qhostinfo_unix.cpp" line="+178"/>
<location line="+9"/>
<location line="+64"/>
<location line="+31"/>
- <location filename="../src/network/kernel/qhostinfo_win.cpp" line="+150"/>
+ <location filename="../src/network/kernel/qhostinfo_win.cpp" line="+180"/>
<location line="+9"/>
<location line="+40"/>
<location line="+27"/>
@@ -2157,13 +2161,13 @@ Möchten sie die Datei trotzdem löschen?</translation>
<context>
<name>QHttp</name>
<message>
- <location filename="../src/network/access/qhttpnetworkconnection.cpp" line="+1712"/>
- <location filename="../src/qt3support/network/q3http.cpp" line="+1806"/>
+ <location filename="../src/network/access/qhttpnetworkconnection.cpp" line="+901"/>
+ <location filename="../src/qt3support/network/q3http.cpp" line="+1836"/>
<source>Connection refused</source>
<translation>Verbindung verweigert</translation>
</message>
<message>
- <location filename="../src/network/access/qhttp.cpp" line="+2597"/>
+ <location filename="../src/network/access/qhttp.cpp" line="+2631"/>
<location filename="../src/network/access/qhttpnetworkconnection.cpp" line="-4"/>
<location filename="../src/qt3support/network/q3http.cpp" line="+3"/>
<source>Host %1 not found</source>
@@ -2215,21 +2219,21 @@ Möchten sie die Datei trotzdem löschen?</translation>
<translation>Verbindung beendet</translation>
</message>
<message>
- <location filename="../src/network/access/qhttp.cpp" line="-1073"/>
- <location line="+816"/>
+ <location filename="../src/network/access/qhttp.cpp" line="-1077"/>
+ <location line="+820"/>
<location filename="../src/qt3support/network/q3http.cpp" line="-1152"/>
<location line="+567"/>
<source>Unknown error</source>
<translation>Unbekannter Fehler</translation>
</message>
<message>
- <location line="-564"/>
+ <location line="-568"/>
<location filename="../src/qt3support/network/q3http.cpp" line="-370"/>
<source>Request aborted</source>
<translation>Anfrage wurde abgebrochen</translation>
</message>
<message>
- <location line="+575"/>
+ <location line="+579"/>
<location filename="../src/qt3support/network/q3http.cpp" line="+381"/>
<source>No server set to connect to</source>
<translation>Für die Verbindung wurde kein Server-Rechner angegeben</translation>
@@ -2247,7 +2251,12 @@ Möchten sie die Datei trotzdem löschen?</translation>
<translation>Der Kopfteil der HTTP-Antwort ist ungültig</translation>
</message>
<message>
- <location line="+120"/>
+ <location line="+28"/>
+ <source>Unknown authentication method</source>
+ <translation>Unbekannte Authentifizierungsmethode</translation>
+ </message>
+ <message>
+ <location line="+97"/>
<location line="+48"/>
<location filename="../src/qt3support/network/q3http.cpp" line="+40"/>
<location line="+47"/>
@@ -2295,12 +2304,12 @@ Möchten sie die Datei trotzdem löschen?</translation>
<translation>Es wurde ein unbekanntes Protokoll angegeben</translation>
</message>
<message>
- <location filename="../src/network/access/qhttp.cpp" line="-133"/>
+ <location filename="../src/network/access/qhttp.cpp" line="-138"/>
<source>Connection refused (or timed out)</source>
<translation>Verbindung verweigert oder Zeitlimit überschritten</translation>
</message>
<message>
- <location line="-2259"/>
+ <location line="-2263"/>
<source>HTTPS connection requested but SSL support not compiled in</source>
<translation>Die angeforderte HTTPS-Verbindung kann nicht aufgebaut werden, da keine SSL-Unterstützung vorhanden ist</translation>
</message>
@@ -2356,7 +2365,7 @@ Möchten sie die Datei trotzdem löschen?</translation>
<context>
<name>QIBaseDriver</name>
<message>
- <location filename="../src/sql/drivers/ibase/qsql_ibase.cpp" line="+1378"/>
+ <location filename="../src/sql/drivers/ibase/qsql_ibase.cpp" line="+1435"/>
<source>Error opening database</source>
<translation>Die Datenbankverbindung konnte nicht geöffnet werden</translation>
</message>
@@ -2379,7 +2388,7 @@ Möchten sie die Datei trotzdem löschen?</translation>
<context>
<name>QIBaseResult</name>
<message>
- <location line="-1077"/>
+ <location line="-1097"/>
<source>Unable to create BLOB</source>
<translation>Es konnte kein BLOB erzeugt werden</translation>
</message>
@@ -2399,7 +2408,7 @@ Möchten sie die Datei trotzdem löschen?</translation>
<translation>Der BLOB konnte nicht gelesen werden</translation>
</message>
<message>
- <location line="+124"/>
+ <location line="+125"/>
<location line="+189"/>
<source>Could not find array</source>
<translation>Das Feld konnte nicht gefunden werden</translation>
@@ -2469,7 +2478,7 @@ Möchten sie die Datei trotzdem löschen?</translation>
<context>
<name>QIODevice</name>
<message>
- <location filename="../src/corelib/global/qglobal.cpp" line="+1830"/>
+ <location filename="../src/corelib/global/qglobal.cpp" line="+1869"/>
<source>Permission denied</source>
<translation>Zugriff verweigert</translation>
</message>
@@ -2489,7 +2498,7 @@ Möchten sie die Datei trotzdem löschen?</translation>
<translation>Kein freier Speicherplatz auf dem Gerät vorhanden</translation>
</message>
<message>
- <location filename="../src/corelib/io/qiodevice.cpp" line="+1506"/>
+ <location filename="../src/corelib/io/qiodevice.cpp" line="+1536"/>
<source>Unknown error</source>
<translation>Unbekannter Fehler</translation>
</message>
@@ -2497,7 +2506,7 @@ Möchten sie die Datei trotzdem löschen?</translation>
<context>
<name>QInputContext</name>
<message>
- <location filename="../src/gui/inputmethod/qinputcontextfactory.cpp" line="+212"/>
+ <location filename="../src/gui/inputmethod/qinputcontextfactory.cpp" line="+242"/>
<source>XIM</source>
<translation>XIM</translation>
</message>
@@ -2520,7 +2529,7 @@ Möchten sie die Datei trotzdem löschen?</translation>
<context>
<name>QInputDialog</name>
<message>
- <location filename="../src/gui/dialogs/qinputdialog.cpp" line="+193"/>
+ <location filename="../src/gui/dialogs/qinputdialog.cpp" line="+223"/>
<source>Enter a value:</source>
<translation>Geben Sie einen Wert ein:</translation>
</message>
@@ -2528,7 +2537,7 @@ Möchten sie die Datei trotzdem löschen?</translation>
<context>
<name>QLibrary</name>
<message>
- <location filename="../src/corelib/plugin/qlibrary.cpp" line="+348"/>
+ <location filename="../src/corelib/plugin/qlibrary.cpp" line="+378"/>
<source>Could not mmap &apos;%1&apos;: %2</source>
<translation>Operation mmap fehlgeschlagen für &apos;%1&apos;: %2</translation>
</message>
@@ -2559,7 +2568,7 @@ Möchten sie die Datei trotzdem löschen?</translation>
</message>
<message>
<location line="-377"/>
- <location filename="../src/corelib/plugin/qpluginloader.cpp" line="+250"/>
+ <location filename="../src/corelib/plugin/qpluginloader.cpp" line="+280"/>
<source>The shared library was not found.</source>
<translation>Die dynamische Bibliothek konnte nicht gefunden werden.</translation>
</message>
@@ -2574,8 +2583,8 @@ Möchten sie die Datei trotzdem löschen?</translation>
<translation>Das Plugin &apos;%1&apos; verwendet eine inkompatible Qt-Bibliothek. (Im Debug- und Release-Modus erstellte Bibliotheken können nicht zusammen verwendet werden.)</translation>
</message>
<message>
- <location filename="../src/corelib/plugin/qlibrary_unix.cpp" line="+179"/>
- <location filename="../src/corelib/plugin/qlibrary_win.cpp" line="+69"/>
+ <location filename="../src/corelib/plugin/qlibrary_unix.cpp" line="+209"/>
+ <location filename="../src/corelib/plugin/qlibrary_win.cpp" line="+99"/>
<source>Cannot load library %1: %2</source>
<translation>Die Library %1 kann nicht geladen werden: %2</translation>
</message>
@@ -2595,7 +2604,7 @@ Möchten sie die Datei trotzdem löschen?</translation>
<context>
<name>QLineEdit</name>
<message>
- <location filename="../src/gui/widgets/qlineedit.cpp" line="+2679"/>
+ <location filename="../src/gui/widgets/qlineedit.cpp" line="+2710"/>
<source>Select All</source>
<translation>Alles auswählen</translation>
</message>
@@ -2633,8 +2642,8 @@ Möchten sie die Datei trotzdem löschen?</translation>
<context>
<name>QLocalServer</name>
<message>
- <location filename="../src/network/socket/qlocalserver.cpp" line="+196"/>
- <location filename="../src/network/socket/qlocalserver_unix.cpp" line="+201"/>
+ <location filename="../src/network/socket/qlocalserver.cpp" line="+226"/>
+ <location filename="../src/network/socket/qlocalserver_unix.cpp" line="+233"/>
<source>%1: Name error</source>
<translation>%1: Fehlerhafter Name</translation>
</message>
@@ -2650,7 +2659,7 @@ Möchten sie die Datei trotzdem löschen?</translation>
</message>
<message>
<location line="+5"/>
- <location filename="../src/network/socket/qlocalserver_win.cpp" line="+127"/>
+ <location filename="../src/network/socket/qlocalserver_win.cpp" line="+158"/>
<source>%1: Unknown error %2</source>
<translation>%1: Unbekannter Fehler %2</translation>
</message>
@@ -2658,8 +2667,8 @@ Möchten sie die Datei trotzdem löschen?</translation>
<context>
<name>QLocalSocket</name>
<message>
- <location filename="../src/network/socket/qlocalsocket_tcp.cpp" line="+102"/>
- <location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+104"/>
+ <location filename="../src/network/socket/qlocalsocket_tcp.cpp" line="+132"/>
+ <location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+134"/>
<source>%1: Connection refused</source>
<translation>%1: Der Aufbau einer Verbindung wurde verweigert</translation>
</message>
@@ -2672,7 +2681,7 @@ Möchten sie die Datei trotzdem löschen?</translation>
<message>
<location line="+3"/>
<location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+3"/>
- <location filename="../src/network/socket/qlocalsocket_win.cpp" line="+50"/>
+ <location filename="../src/network/socket/qlocalsocket_win.cpp" line="+80"/>
<location line="+43"/>
<source>%1: Invalid name</source>
<translation>%1: Ungültiger Name</translation>
@@ -2729,7 +2738,7 @@ Möchten sie die Datei trotzdem löschen?</translation>
<context>
<name>QMYSQLDriver</name>
<message>
- <location filename="../src/sql/drivers/mysql/qsql_mysql.cpp" line="+1200"/>
+ <location filename="../src/sql/drivers/mysql/qsql_mysql.cpp" line="+1252"/>
<source>Unable to open database &apos;</source>
<translation>Die Datenbankverbindung konnte nicht geöffnet werden &apos;</translation>
</message>
@@ -2739,7 +2748,7 @@ Möchten sie die Datei trotzdem löschen?</translation>
<translation>Es kann keine Verbindung aufgebaut werden</translation>
</message>
<message>
- <location line="+123"/>
+ <location line="+127"/>
<source>Unable to begin transaction</source>
<translation>Es konnte keine Transaktion gestartet werden</translation>
</message>
@@ -2757,12 +2766,12 @@ Möchten sie die Datei trotzdem löschen?</translation>
<context>
<name>QMYSQLResult</name>
<message>
- <location line="-917"/>
+ <location line="-935"/>
<source>Unable to fetch data</source>
<translation>Es konnten keine Daten abgeholt werden</translation>
</message>
<message>
- <location line="+176"/>
+ <location line="+183"/>
<source>Unable to execute query</source>
<translation>Die Abfrage konnte nicht ausgeführt werden</translation>
</message>
@@ -2772,13 +2781,13 @@ Möchten sie die Datei trotzdem löschen?</translation>
<translation>Das Ergebnis konnte nicht gespeichert werden</translation>
</message>
<message>
- <location line="+189"/>
+ <location line="+194"/>
<location line="+8"/>
<source>Unable to prepare statement</source>
<translation>Der Befehl konnte nicht initialisiert werden</translation>
</message>
<message>
- <location line="+34"/>
+ <location line="+36"/>
<source>Unable to reset statement</source>
<translation>Der Befehl konnte nicht zurückgesetzt werden</translation>
</message>
@@ -2804,7 +2813,7 @@ Möchten sie die Datei trotzdem löschen?</translation>
<translation>Die Ergebnisse des Befehls konnten nicht gespeichert werden</translation>
</message>
<message>
- <location line="-253"/>
+ <location line="-257"/>
<source>Unable to execute next query</source>
<translation>Die folgende Abfrage kann nicht ausgeführt werden</translation>
</message>
@@ -2817,7 +2826,7 @@ Möchten sie die Datei trotzdem löschen?</translation>
<context>
<name>QMdiArea</name>
<message>
- <location filename="../src/gui/widgets/qmdiarea.cpp" line="+260"/>
+ <location filename="../src/gui/widgets/qmdiarea.cpp" line="+290"/>
<source>(Untitled)</source>
<translation>(Unbenannt)</translation>
</message>
@@ -2825,7 +2834,7 @@ Möchten sie die Datei trotzdem löschen?</translation>
<context>
<name>QMdiSubWindow</name>
<message>
- <location filename="../src/gui/widgets/qmdisubwindow.cpp" line="+250"/>
+ <location filename="../src/gui/widgets/qmdisubwindow.cpp" line="+280"/>
<source>%1 - [%2]</source>
<translation>%1 - [%2]</translation>
</message>
@@ -2918,7 +2927,7 @@ Möchten sie die Datei trotzdem löschen?</translation>
<context>
<name>QMenu</name>
<message>
- <location filename="../src/plugins/accessible/widgets/qaccessiblemenu.cpp" line="+127"/>
+ <location filename="../src/plugins/accessible/widgets/qaccessiblemenu.cpp" line="+157"/>
<location line="+225"/>
<source>Close</source>
<translation>Schließen</translation>
@@ -2940,7 +2949,7 @@ Möchten sie die Datei trotzdem löschen?</translation>
<context>
<name>QMessageBox</name>
<message>
- <location filename="../src/gui/dialogs/qmessagebox.cpp" line="-1958"/>
+ <location filename="../src/gui/dialogs/qmessagebox.cpp" line="-1964"/>
<location line="+852"/>
<location filename="../src/gui/dialogs/qmessagebox.h" line="-52"/>
<location line="+8"/>
@@ -2948,22 +2957,21 @@ Möchten sie die Datei trotzdem löschen?</translation>
<translation>OK</translation>
</message>
<message>
- <location line="+503"/>
+ <location line="+509"/>
<source>About Qt</source>
<translation>Ãœber Qt</translation>
</message>
<message>
- <location line="-502"/>
+ <location line="-508"/>
<source>Help</source>
<translation>Hilfe</translation>
</message>
<message>
- <location line="+487"/>
<source>&lt;p&gt;This program uses Qt version %1.&lt;/p&gt;</source>
- <translation>&lt;p&gt;Dieses Programm verwendet Qt-Version %1.&lt;/p&gt;</translation>
+ <translation type="obsolete">&lt;p&gt;Dieses Programm verwendet Qt-Version %1.&lt;/p&gt;</translation>
</message>
<message>
- <location line="-1584"/>
+ <location line="-1100"/>
<source>Show Details...</source>
<translation>Details einblenden...</translation>
</message>
@@ -2973,20 +2981,15 @@ Möchten sie die Datei trotzdem löschen?</translation>
<translation>Details ausblenden...</translation>
</message>
<message>
- <location line="+1570"/>
- <source>&lt;h3&gt;About Qt&lt;/h3&gt;%1&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 a Nokia product. See &lt;a href=&quot;http://qtsoftware.com/qt/&quot;&gt;qtsoftware.com/qt/&lt;/a&gt; for more information.&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location line="+15"/>
- <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://qtsoftware.com/company/model/&quot;&gt;qtsoftware.com/company/model/&lt;/a&gt; for an overview of Qt licensing.&lt;/p&gt;</source>
+ <location line="+1573"/>
+ <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://www.qtsoftware.com/products/licensing&quot;&gt;www.qtsoftware.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://www.qtsoftware.com/qt/&quot;&gt;www.qtsoftware.com/qt&lt;/a&gt; for more information.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>QMultiInputContext</name>
<message>
- <location filename="../src/plugins/inputmethods/imsw-multi/qmultiinputcontext.cpp" line="+58"/>
+ <location filename="../src/plugins/inputmethods/imsw-multi/qmultiinputcontext.cpp" line="+88"/>
<source>Select IM</source>
<translation>Eingabemethode auswählen</translation>
</message>
@@ -2994,7 +2997,7 @@ Möchten sie die Datei trotzdem löschen?</translation>
<context>
<name>QMultiInputContextPlugin</name>
<message>
- <location filename="../src/plugins/inputmethods/imsw-multi/qmultiinputcontextplugin.cpp" line="+65"/>
+ <location filename="../src/plugins/inputmethods/imsw-multi/qmultiinputcontextplugin.cpp" line="+95"/>
<source>Multiple input method switcher</source>
<translation>Umschalter für Eingabemethoden</translation>
</message>
@@ -3007,7 +3010,7 @@ Möchten sie die Datei trotzdem löschen?</translation>
<context>
<name>QNativeSocketEngine</name>
<message>
- <location filename="../src/network/socket/qnativesocketengine.cpp" line="+176"/>
+ <location filename="../src/network/socket/qnativesocketengine.cpp" line="+206"/>
<source>The remote host closed the connection</source>
<translation>Der entfernte Rechner hat die Verbindung geschlossen</translation>
</message>
@@ -3140,7 +3143,7 @@ Möchten sie die Datei trotzdem löschen?</translation>
<context>
<name>QNetworkAccessCacheBackend</name>
<message>
- <location filename="../src/network/access/qnetworkaccesscachebackend.cpp" line="+35"/>
+ <location filename="../src/network/access/qnetworkaccesscachebackend.cpp" line="+65"/>
<source>Error opening %1</source>
<translation>%1 konnte nicht geöffnet werden</translation>
</message>
@@ -3148,7 +3151,7 @@ Möchten sie die Datei trotzdem löschen?</translation>
<context>
<name>QNetworkAccessFileBackend</name>
<message>
- <location filename="../src/network/access/qnetworkaccessfilebackend.cpp" line="+69"/>
+ <location filename="../src/network/access/qnetworkaccessfilebackend.cpp" line="+99"/>
<source>Request for opening non-local file %1</source>
<translation>Anforderung zum Öffnen einer Datei über Netzwerk %1</translation>
</message>
@@ -3176,7 +3179,7 @@ Möchten sie die Datei trotzdem löschen?</translation>
<context>
<name>QNetworkAccessFtpBackend</name>
<message>
- <location filename="../src/network/access/qnetworkaccessftpbackend.cpp" line="+135"/>
+ <location filename="../src/network/access/qnetworkaccessftpbackend.cpp" line="+165"/>
<source>No suitable proxy found</source>
<translation>Es konnte kein geeigneter Proxy-Server gefunden werden</translation>
</message>
@@ -3186,7 +3189,7 @@ Möchten sie die Datei trotzdem löschen?</translation>
<translation>%1 kann nicht geöffnet werden: Es handelt sich um ein Verzeichnis</translation>
</message>
<message>
- <location line="+131"/>
+ <location line="+130"/>
<source>Logging in to %1 failed: authentication required</source>
<translation>Die Anmeldung bei %1 schlug fehl: Es ist eine Authentifizierung erforderlich</translation>
</message>
@@ -3204,7 +3207,7 @@ Möchten sie die Datei trotzdem löschen?</translation>
<context>
<name>QNetworkAccessHttpBackend</name>
<message>
- <location filename="../src/network/access/qnetworkaccesshttpbackend.cpp" line="+565"/>
+ <location filename="../src/network/access/qnetworkaccesshttpbackend.cpp" line="+597"/>
<source>No suitable proxy found</source>
<translation>Es konnte kein geeigneter Proxy-Server gefunden werden</translation>
</message>
@@ -3217,7 +3220,7 @@ Möchten sie die Datei trotzdem löschen?</translation>
<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="+37"/>
+ <location filename="../src/network/access/qnetworkreplyimpl.cpp" line="+68"/>
<source>Protocol &quot;%1&quot; is unknown</source>
<translation>Das Protokoll &quot;%1&quot; ist unbekannt</translation>
</message>
@@ -3225,7 +3228,7 @@ Möchten sie die Datei trotzdem löschen?</translation>
<context>
<name>QNetworkReplyImpl</name>
<message>
- <location line="+422"/>
+ <location line="+432"/>
<location line="+22"/>
<source>Operation canceled</source>
<translation>Operation abgebrochen</translation>
@@ -3234,7 +3237,7 @@ Möchten sie die Datei trotzdem löschen?</translation>
<context>
<name>QOCIDriver</name>
<message>
- <location filename="../src/sql/drivers/oci/qsql_oci.cpp" line="+2027"/>
+ <location filename="../src/sql/drivers/oci/qsql_oci.cpp" line="+2069"/>
<source>Unable to logon</source>
<translation>Logon-Vorgang fehlgeschlagen</translation>
</message>
@@ -3263,7 +3266,7 @@ Möchten sie die Datei trotzdem löschen?</translation>
<context>
<name>QOCIResult</name>
<message>
- <location line="-976"/>
+ <location line="-963"/>
<location line="+161"/>
<location line="+15"/>
<source>Unable to bind column for batch execute</source>
@@ -3290,18 +3293,16 @@ Möchten sie die Datei trotzdem löschen?</translation>
<translation>Der Befehl konnte nicht initialisiert werden</translation>
</message>
<message>
- <location line="+29"/>
- <location line="+37"/>
+ <location line="+36"/>
<source>Unable to bind value</source>
<translation>Der Wert konnte nicht gebunden werden</translation>
</message>
<message>
- <location line="-20"/>
<source>Unable to execute select statement</source>
- <translation>Die &apos;select&apos;-Abfrage konnte nicht ausgeführt werden</translation>
+ <translation type="obsolete">Die &apos;select&apos;-Abfrage konnte nicht ausgeführt werden</translation>
</message>
<message>
- <location line="+32"/>
+ <location line="+19"/>
<source>Unable to execute statement</source>
<translation>Der Befehl konnte nicht ausgeführt werden</translation>
</message>
@@ -3309,7 +3310,7 @@ Möchten sie die Datei trotzdem löschen?</translation>
<context>
<name>QODBCDriver</name>
<message>
- <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="+1657"/>
+ <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="+1781"/>
<source>Unable to connect</source>
<translation>Es kann keine Verbindung aufgebaut werden</translation>
</message>
@@ -3319,7 +3320,7 @@ Möchten sie die Datei trotzdem löschen?</translation>
<translation>Es kann keine Verbindung aufgebaut werden weil der Treiber die benötigte Funktionalität nicht vollständig unterstützt</translation>
</message>
<message>
- <location line="+234"/>
+ <location line="+242"/>
<source>Unable to disable autocommit</source>
<translation>&apos;autocommit&apos; konnte nicht deaktiviert werden</translation>
</message>
@@ -3342,19 +3343,19 @@ Möchten sie die Datei trotzdem löschen?</translation>
<context>
<name>QODBCResult</name>
<message>
- <location line="-1204"/>
+ <location line="-1218"/>
<location line="+349"/>
<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; konnte nicht als Attribut des Befehls gesetzt werden. Bitte prüfen Sie die Konfiguration Ihres ODBC-Treibers</translation>
</message>
<message>
<location line="-332"/>
- <location line="+625"/>
+ <location line="+626"/>
<source>Unable to execute statement</source>
<translation>Der Befehl konnte nicht ausgeführt werden</translation>
</message>
<message>
- <location line="-554"/>
+ <location line="-555"/>
<source>Unable to fetch next</source>
<translation>Der nächste Datensatz konnte nicht abgeholt werden</translation>
</message>
@@ -3364,19 +3365,19 @@ Möchten sie die Datei trotzdem löschen?</translation>
<translation>Der Befehl konnte nicht initialisiert werden</translation>
</message>
<message>
- <location line="+267"/>
+ <location line="+268"/>
<source>Unable to bind variable</source>
<translation>Die Variable konnte nicht gebunden werden</translation>
</message>
<message>
<location filename="../src/sql/drivers/db2/qsql_db2.cpp" line="+194"/>
- <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="-474"/>
- <location line="+577"/>
+ <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="-475"/>
+ <location line="+578"/>
<source>Unable to fetch last</source>
<translation>Der letzte Datensatz konnte nicht abgeholt werden</translation>
</message>
<message>
- <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="-671"/>
+ <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="-672"/>
<source>Unable to fetch</source>
<translation>Es konnten keine Daten abgeholt werden</translation>
</message>
@@ -3394,12 +3395,12 @@ Möchten sie die Datei trotzdem löschen?</translation>
<context>
<name>QObject</name>
<message>
- <location filename="../src/gui/util/qdesktopservices_mac.cpp" line="+134"/>
+ <location filename="../src/gui/util/qdesktopservices_mac.cpp" line="+165"/>
<source>Home</source>
<translation>Pos1</translation>
</message>
<message>
- <location filename="../src/network/access/qnetworkaccessdatabackend.cpp" line="+44"/>
+ <location filename="../src/network/access/qnetworkaccessdatabackend.cpp" line="+74"/>
<source>Operation not supported on %1</source>
<translation>Diese Operation wird von %1 nicht unterstützt</translation>
</message>
@@ -3409,7 +3410,7 @@ Möchten sie die Datei trotzdem löschen?</translation>
<translation>Ungültiger URI: %1</translation>
</message>
<message>
- <location filename="../src/network/access/qnetworkaccessdebugpipebackend.cpp" line="+145"/>
+ <location filename="../src/network/access/qnetworkaccessdebugpipebackend.cpp" line="+175"/>
<source>Write error writing to %1: %2</source>
<translation>Fehler beim Schreiben zur Datei %1: %2</translation>
</message>
@@ -3434,7 +3435,7 @@ Möchten sie die Datei trotzdem löschen?</translation>
<translation>Protokollfehler: Ein leeres Datenpaket wurde empfangen</translation>
</message>
<message>
- <location filename="../src/network/kernel/qhostinfo.cpp" line="+147"/>
+ <location filename="../src/network/kernel/qhostinfo.cpp" line="+177"/>
<location line="+57"/>
<source>No host name given</source>
<translation>Es wurde kein Hostname angegeben</translation>
@@ -3443,7 +3444,7 @@ Möchten sie die Datei trotzdem löschen?</translation>
<context>
<name>QPPDOptionsModel</name>
<message>
- <location filename="../src/gui/dialogs/qprintdialog_unix.cpp" line="+1165"/>
+ <location filename="../src/gui/dialogs/qprintdialog_unix.cpp" line="+1197"/>
<source>Name</source>
<translation>Name</translation>
</message>
@@ -3456,7 +3457,7 @@ Möchten sie die Datei trotzdem löschen?</translation>
<context>
<name>QPSQLDriver</name>
<message>
- <location filename="../src/sql/drivers/psql/qsql_psql.cpp" line="+732"/>
+ <location filename="../src/sql/drivers/psql/qsql_psql.cpp" line="+763"/>
<source>Unable to connect</source>
<translation>Es kann keine Verbindung aufgebaut werden</translation>
</message>
@@ -3476,7 +3477,7 @@ Möchten sie die Datei trotzdem löschen?</translation>
<translation>Die Transaktion konnte nicht rückgängig gemacht werden (Operation &apos;rollback&apos; fehlgeschlagen)</translation>
</message>
<message>
- <location line="+336"/>
+ <location line="+358"/>
<source>Unable to subscribe</source>
<translation>Die Registrierung schlug fehl</translation>
</message>
@@ -3489,12 +3490,12 @@ Möchten sie die Datei trotzdem löschen?</translation>
<context>
<name>QPSQLResult</name>
<message>
- <location line="-1035"/>
+ <location line="-1058"/>
<source>Unable to create query</source>
<translation>Es konnte keine Abfrage erzeugt werden</translation>
</message>
<message>
- <location line="+373"/>
+ <location line="+374"/>
<source>Unable to prepare statement</source>
<translation>Der Befehl konnte nicht initialisiert werden</translation>
</message>
@@ -3502,7 +3503,7 @@ Möchten sie die Datei trotzdem löschen?</translation>
<context>
<name>QPageSetupWidget</name>
<message>
- <location filename="../src/gui/dialogs/qpagesetupdialog_unix.cpp" line="+274"/>
+ <location filename="../src/gui/dialogs/qpagesetupdialog_unix.cpp" line="+304"/>
<source>Centimeters (cm)</source>
<translation>Zentimeter (cm)</translation>
</message>
@@ -3618,7 +3619,7 @@ Möchten sie die Datei trotzdem löschen?</translation>
<context>
<name>QPrintDialog</name>
<message>
- <location filename="../src/gui/painting/qprinterinfo_unix.cpp" line="+68"/>
+ <location filename="../src/gui/painting/qprinterinfo_unix.cpp" line="+98"/>
<source>locally connected</source>
<translation>direkt verbunden</translation>
</message>
@@ -3635,12 +3636,12 @@ Möchten sie die Datei trotzdem löschen?</translation>
<translation>unbekannt</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qprintdialog_win.cpp" line="+238"/>
+ <location filename="../src/gui/dialogs/qprintdialog_win.cpp" line="+268"/>
<source>OK</source>
<translation>OK</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qprintdialog_qws.cpp" line="+345"/>
+ <location filename="../src/gui/dialogs/qprintdialog_qws.cpp" line="+375"/>
<source>Print all</source>
<translation>Alles drucken</translation>
</message>
@@ -3805,7 +3806,7 @@ Möchten sie die Datei trotzdem löschen?</translation>
<translation>Auswahl drucken</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qabstractprintdialog.cpp" line="+80"/>
+ <location filename="../src/gui/dialogs/qabstractprintdialog.cpp" line="+110"/>
<location line="+13"/>
<location filename="../src/gui/dialogs/qprintdialog_win.cpp" line="-2"/>
<source>Print</source>
@@ -4008,7 +4009,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<translation>Benutzerdefiniert</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qprintdialog_unix.cpp" line="-522"/>
+ <location filename="../src/gui/dialogs/qprintdialog_unix.cpp" line="-524"/>
<location line="+68"/>
<source>&amp;Options &gt;&gt;</source>
<translation>&amp;Einstellungen &gt;&gt;</translation>
@@ -4029,7 +4030,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<translation>Druck in Postscript-Datei</translation>
</message>
<message>
- <location line="+45"/>
+ <location line="+47"/>
<source>Local file</source>
<translation>Lokale Datei</translation>
</message>
@@ -4039,7 +4040,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<translation>Schreiben der Datei %1</translation>
</message>
<message>
- <location line="-367"/>
+ <location line="-369"/>
<source>&amp;Print</source>
<translation>&amp;Drucken</translation>
</message>
@@ -4047,7 +4048,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<context>
<name>QPrintPreviewDialog</name>
<message>
- <location filename="../src/gui/dialogs/qprintpreviewdialog.cpp" line="+222"/>
+ <location filename="../src/gui/dialogs/qprintpreviewdialog.cpp" line="+252"/>
<source>%1%</source>
<translation>%1%</translation>
</message>
@@ -4147,7 +4148,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<translation>PostScript exportieren</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qabstractpagesetupdialog.cpp" line="+38"/>
+ <location filename="../src/gui/dialogs/qabstractpagesetupdialog.cpp" line="+68"/>
<location line="+12"/>
<source>Page Setup</source>
<translation>Seite einrichten</translation>
@@ -4320,8 +4321,8 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<context>
<name>QProcess</name>
<message>
- <location filename="../src/corelib/io/qprocess_unix.cpp" line="+445"/>
- <location filename="../src/corelib/io/qprocess_win.cpp" line="+117"/>
+ <location filename="../src/corelib/io/qprocess_unix.cpp" line="+475"/>
+ <location filename="../src/corelib/io/qprocess_win.cpp" line="+147"/>
<source>Could not open input redirection for reading</source>
<translation>Die Eingabeumleitung konnte nicht zum Lesen geöffnet werden</translation>
</message>
@@ -4350,7 +4351,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<translation>Zeitüberschreitung</translation>
</message>
<message>
- <location filename="../src/corelib/io/qprocess.cpp" line="+503"/>
+ <location filename="../src/corelib/io/qprocess.cpp" line="+533"/>
<location line="+52"/>
<location filename="../src/corelib/io/qprocess_win.cpp" line="-211"/>
<location line="+50"/>
@@ -4370,6 +4371,11 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<translation>Der Prozess ist abgestürzt</translation>
</message>
<message>
+ <location line="+912"/>
+ <source>No program defined</source>
+ <translation>Es wurde kein Programm angegeben</translation>
+ </message>
+ <message>
<location filename="../src/corelib/io/qprocess_win.cpp" line="-341"/>
<source>Process failed to start</source>
<translation>Das Starten des Prozesses schlug fehl</translation>
@@ -4378,7 +4384,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<context>
<name>QProgressDialog</name>
<message>
- <location filename="../src/gui/dialogs/qprogressdialog.cpp" line="+152"/>
+ <location filename="../src/gui/dialogs/qprogressdialog.cpp" line="+182"/>
<source>Cancel</source>
<translation>Abbrechen</translation>
</message>
@@ -4402,7 +4408,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<context>
<name>QRegExp</name>
<message>
- <location filename="../src/corelib/tools/qregexp.cpp" line="+34"/>
+ <location filename="../src/corelib/tools/qregexp.cpp" line="+64"/>
<source>no error occurred</source>
<translation>kein Fehler</translation>
</message>
@@ -4450,7 +4456,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<context>
<name>QSQLite2Driver</name>
<message>
- <location filename="../src/sql/drivers/sqlite2/qsql_sqlite2.cpp" line="+353"/>
+ <location filename="../src/sql/drivers/sqlite2/qsql_sqlite2.cpp" line="+396"/>
<source>Error to open database</source>
<translation>Die Datenbankverbindung konnte nicht geöffnet werden</translation>
</message>
@@ -4473,12 +4479,12 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<context>
<name>QSQLite2Result</name>
<message>
- <location line="-310"/>
+ <location line="-323"/>
<source>Unable to fetch results</source>
<translation>Das Ergebnis konnte nicht abgeholt werden</translation>
</message>
<message>
- <location line="+139"/>
+ <location line="+147"/>
<source>Unable to execute statement</source>
<translation>Der Befehl konnte nicht ausgeführt werden</translation>
</message>
@@ -4486,7 +4492,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<context>
<name>QSQLiteDriver</name>
<message>
- <location filename="../src/sql/drivers/sqlite/qsql_sqlite.cpp" line="+498"/>
+ <location filename="../src/sql/drivers/sqlite/qsql_sqlite.cpp" line="+528"/>
<source>Error opening database</source>
<translation>Die Datenbankverbindung konnte nicht geöffnet werden</translation>
</message>
@@ -4549,12 +4555,12 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<context>
<name>QScrollBar</name>
<message>
- <location filename="../src/gui/widgets/qscrollbar.cpp" line="+419"/>
+ <location filename="../src/gui/widgets/qscrollbar.cpp" line="+448"/>
<source>Scroll here</source>
<translation>Hierher scrollen</translation>
</message>
<message>
- <location line="+3"/>
+ <location line="+2"/>
<source>Left edge</source>
<translation>Linker Rand</translation>
</message>
@@ -4564,7 +4570,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<translation>Anfang</translation>
</message>
<message>
- <location line="+2"/>
+ <location line="+1"/>
<source>Right edge</source>
<translation>Rechter Rand</translation>
</message>
@@ -4574,7 +4580,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<translation>Ende</translation>
</message>
<message>
- <location line="+3"/>
+ <location line="+2"/>
<source>Page left</source>
<translation>Eine Seite nach links</translation>
</message>
@@ -4585,7 +4591,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<translation>Eine Seite nach oben</translation>
</message>
<message>
- <location line="+2"/>
+ <location line="+1"/>
<source>Page right</source>
<translation>Eine Seite nach rechts</translation>
</message>
@@ -4596,7 +4602,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<translation>Eine Seite nach unten</translation>
</message>
<message>
- <location line="+3"/>
+ <location line="+2"/>
<source>Scroll left</source>
<translation>Nach links scrollen</translation>
</message>
@@ -4606,7 +4612,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<translation>Nach oben scrollen</translation>
</message>
<message>
- <location line="+2"/>
+ <location line="+1"/>
<source>Scroll right</source>
<translation>Nach rechts scrollen</translation>
</message>
@@ -4634,13 +4640,13 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<context>
<name>QSharedMemory</name>
<message>
- <location filename="../src/corelib/kernel/qsharedmemory.cpp" line="+258"/>
+ <location filename="../src/corelib/kernel/qsharedmemory.cpp" line="+288"/>
<source>%1: create size is less then 0</source>
<translation>%1: Die Größenangabe für die Erzeugung ist kleiner als Null</translation>
</message>
<message>
<location line="+168"/>
- <location filename="../src/corelib/kernel/qsharedmemory_p.h" line="+118"/>
+ <location filename="../src/corelib/kernel/qsharedmemory_p.h" line="+148"/>
<source>%1: unable to lock</source>
<translation>%1: Sperrung fehlgeschlagen</translation>
</message>
@@ -4650,8 +4656,8 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<translation>%1: Die Sperrung konnte nicht aufgehoben werden</translation>
</message>
<message>
- <location filename="../src/corelib/kernel/qsharedmemory_unix.cpp" line="+48"/>
- <location filename="../src/corelib/kernel/qsharedmemory_win.cpp" line="+57"/>
+ <location filename="../src/corelib/kernel/qsharedmemory_unix.cpp" line="+78"/>
+ <location filename="../src/corelib/kernel/qsharedmemory_win.cpp" line="+87"/>
<source>%1: permission denied</source>
<translation>%1: Zugriff verweigert</translation>
</message>
@@ -4734,7 +4740,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<context>
<name>QShortcut</name>
<message>
- <location filename="../src/gui/kernel/qkeysequence.cpp" line="+343"/>
+ <location filename="../src/gui/kernel/qkeysequence.cpp" line="+373"/>
<source>Space</source>
<translation>Leertaste</translation>
</message>
@@ -5315,7 +5321,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<context>
<name>QSql</name>
<message>
- <location filename="../src/qt3support/sql/q3sqlmanager_p.cpp" line="+860"/>
+ <location filename="../src/qt3support/sql/q3sqlmanager_p.cpp" line="+890"/>
<source>Delete</source>
<translation>Löschen</translation>
</message>
@@ -5372,7 +5378,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<context>
<name>QSslSocket</name>
<message>
- <location filename="../src/network/ssl/qsslsocket_openssl.cpp" line="+539"/>
+ <location filename="../src/network/ssl/qsslsocket_openssl.cpp" line="+569"/>
<source>Unable to write data: %1</source>
<translation>Die Daten konnten nicht geschrieben werden: %1</translation>
</message>
@@ -5436,7 +5442,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
</message>
<message>
<location line="+5"/>
- <location filename="../src/corelib/kernel/qsystemsemaphore_win.cpp" line="+36"/>
+ <location filename="../src/corelib/kernel/qsystemsemaphore_win.cpp" line="+66"/>
<source>%1: out of resources</source>
<translation>%1: Keine Ressourcen mehr verfügbar</translation>
</message>
@@ -5461,7 +5467,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<context>
<name>QTDSDriver</name>
<message>
- <location filename="../src/sql/drivers/tds/qsql_tds.cpp" line="+552"/>
+ <location filename="../src/sql/drivers/tds/qsql_tds.cpp" line="+584"/>
<source>Unable to open connection</source>
<translation>Die Datenbankverbindung konnte nicht geöffnet werden</translation>
</message>
@@ -5487,7 +5493,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<context>
<name>QTcpServer</name>
<message>
- <location filename="../src/network/socket/qtcpserver.cpp" line="+252"/>
+ <location filename="../src/network/socket/qtcpserver.cpp" line="+282"/>
<source>Operation on socket is not supported</source>
<translation>Diese Socketoperation wird nicht unterstützt</translation>
</message>
@@ -5495,7 +5501,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<context>
<name>QTextControl</name>
<message>
- <location filename="../src/gui/text/qtextcontrol.cpp" line="+1942"/>
+ <location filename="../src/gui/text/qtextcontrol.cpp" line="+1973"/>
<source>&amp;Undo</source>
<translation>&amp;Rückgängig</translation>
</message>
@@ -5553,7 +5559,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<context>
<name>QUdpSocket</name>
<message>
- <location filename="../src/network/socket/qudpsocket.cpp" line="+139"/>
+ <location filename="../src/network/socket/qudpsocket.cpp" line="+169"/>
<source>This platform does not support IPv6</source>
<translation>Diese Plattform unterstützt kein IPv6</translation>
</message>
@@ -5561,7 +5567,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<context>
<name>QUndoGroup</name>
<message>
- <location filename="../src/gui/util/qundogroup.cpp" line="+356"/>
+ <location filename="../src/gui/util/qundogroup.cpp" line="+386"/>
<source>Undo</source>
<translation>Rückgängig</translation>
</message>
@@ -5574,7 +5580,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<context>
<name>QUndoModel</name>
<message>
- <location filename="../src/gui/util/qundoview.cpp" line="+71"/>
+ <location filename="../src/gui/util/qundoview.cpp" line="+101"/>
<source>&lt;empty&gt;</source>
<translation>&lt;leer&gt;</translation>
</message>
@@ -5582,7 +5588,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<context>
<name>QUndoStack</name>
<message>
- <location filename="../src/gui/util/qundostack.cpp" line="+804"/>
+ <location filename="../src/gui/util/qundostack.cpp" line="+834"/>
<source>Undo</source>
<translation>Rückgängig</translation>
</message>
@@ -5653,7 +5659,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<context>
<name>QWebFrame</name>
<message>
- <location filename="../src/3rdparty/webkit/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp" line="+686"/>
+ <location filename="../src/3rdparty/webkit/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp" line="+692"/>
<source>Request cancelled</source>
<translation>Anfrage wurde abgebrochen</translation>
</message>
@@ -5979,7 +5985,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<translation>%1 (%2x%3 Pixel)</translation>
</message>
<message>
- <location filename="../src/3rdparty/webkit/WebCore/platform/network/qt/QNetworkReplyHandler.cpp" line="+382"/>
+ <location filename="../src/3rdparty/webkit/WebCore/platform/network/qt/QNetworkReplyHandler.cpp" line="+384"/>
<source>Bad HTTP request</source>
<translation>Ungültige HTTP-Anforderung</translation>
</message>
@@ -6064,22 +6070,22 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
</translation>
</message>
<message>
- <location filename="../src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp" line="+1342"/>
+ <location filename="../src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp" line="+1322"/>
<source>JavaScript Alert - %1</source>
<translation>JavaScript-Hinweis - %1</translation>
</message>
<message>
<location line="+15"/>
<source>JavaScript Confirm - %1</source>
- <translation type="unfinished">JavaScript-Bestätigung - %1</translation>
+ <translation>JavaScript-Bestätigung - %1</translation>
</message>
<message>
<location line="+17"/>
<source>JavaScript Prompt - %1</source>
- <translation type="unfinished">JavaScript-Eingabeaufforderung - %1</translation>
+ <translation>JavaScript-Eingabeaufforderung - %1</translation>
</message>
<message>
- <location line="+333"/>
+ <location line="+340"/>
<source>Move the cursor to the next character</source>
<translation>Positionsmarke auf folgendes Zeichen setzen</translation>
</message>
@@ -6140,6 +6146,11 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
</message>
<message>
<location line="+3"/>
+ <source>Select all</source>
+ <translation>Alles auswählen</translation>
+ </message>
+ <message>
+ <location line="+3"/>
<source>Select to the next character</source>
<translation>Bis zum folgenden Zeichen markieren</translation>
</message>
@@ -6208,11 +6219,21 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<source>Delete to the end of the word</source>
<translation>Bis zum Ende des Wortes löschen</translation>
</message>
+ <message>
+ <location line="+33"/>
+ <source>Insert a new paragraph</source>
+ <translation>Neuen Abschnitt einfügen</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Insert a new line</source>
+ <translation>Neue Zeile einfügen</translation>
+ </message>
</context>
<context>
<name>QWhatsThisAction</name>
<message>
- <location filename="../src/gui/kernel/qwhatsthis.cpp" line="+492"/>
+ <location filename="../src/gui/kernel/qwhatsthis.cpp" line="+522"/>
<source>What&apos;s This?</source>
<translation>Direkthilfe</translation>
</message>
@@ -6220,7 +6241,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<context>
<name>QWidget</name>
<message>
- <location filename="../src/gui/kernel/qwidget.cpp" line="+5290"/>
+ <location filename="../src/gui/kernel/qwidget.cpp" line="+5340"/>
<source>*</source>
<translation>*</translation>
</message>
@@ -6228,7 +6249,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<context>
<name>QWizard</name>
<message>
- <location filename="../src/gui/dialogs/qwizard.cpp" line="+617"/>
+ <location filename="../src/gui/dialogs/qwizard.cpp" line="+649"/>
<source>Cancel</source>
<translation>Abbrechen</translation>
</message>
@@ -6286,7 +6307,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<context>
<name>QWorkspace</name>
<message>
- <location filename="../src/gui/widgets/qworkspace.cpp" line="+1064"/>
+ <location filename="../src/gui/widgets/qworkspace.cpp" line="+1094"/>
<source>&amp;Restore</source>
<translation>Wieder&amp;herstellen</translation>
</message>
@@ -6356,7 +6377,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<context>
<name>QXml</name>
<message>
- <location filename="../src/xml/sax/qxml.cpp" line="+28"/>
+ <location filename="../src/xml/sax/qxml.cpp" line="+58"/>
<source>no error occurred</source>
<translation>kein Fehler</translation>
</message>
@@ -6474,8 +6495,8 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<context>
<name>QXmlStream</name>
<message>
- <location filename="../src/corelib/xml/qxmlstream.cpp" line="+562"/>
- <location filename="../src/corelib/xml/qxmlstream_p.h" line="+1739"/>
+ <location filename="../src/corelib/xml/qxmlstream.cpp" line="+592"/>
+ <location filename="../src/corelib/xml/qxmlstream_p.h" line="+1769"/>
<source>Extra content at end of document.</source>
<translation>Überzähliger Inhalt nach Ende des Dokumentes.</translation>
</message>
@@ -6659,38 +6680,38 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<context>
<name>QtXmlPatterns</name>
<message>
- <location filename="../src/xmlpatterns/data/qabstractduration.cpp" line="+69"/>
+ <location filename="../src/xmlpatterns/data/qabstractduration.cpp" line="+99"/>
<location line="+15"/>
<source>At least one component must be present.</source>
<translation>Es muss mindestens eine Komponente vorhanden sein.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qabstractfloatmathematician.cpp" line="+34"/>
+ <location filename="../src/xmlpatterns/data/qabstractfloatmathematician.cpp" line="+64"/>
<source>No operand in an integer division, %1, can be %2.</source>
<translation>Bei der Ganzzahldivision %1 darf kein Operand %2 sein.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qanyuri_p.h" line="+102"/>
+ <location filename="../src/xmlpatterns/data/qanyuri_p.h" line="+132"/>
<source>%1 is not a valid value of type %2.</source>
<translation>%1 ist kein gültiger Wert des Typs %2.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qatomiccasters_p.h" line="+193"/>
+ <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>Bei einer &quot;cast&quot;-Operation von %1 zu %2 darf der Wert nicht %3 sein.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qboolean.cpp" line="+48"/>
+ <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>Der effektive Boolesche Wert einer Sequenz aus zwei oder mehreren atomaren Werten kann nicht berechnet werden.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qcomparisonplatform.cpp" line="+151"/>
+ <location filename="../src/xmlpatterns/expr/qcomparisonplatform.cpp" line="+181"/>
<source>Operator %1 is not available between atomic values of type %2 and %3.</source>
<translation>Der Operator %1 kann auf atomare Werte der Typen %2 und %3 nicht angewandt werden.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qcastingplatform.cpp" line="+119"/>
+ <location filename="../src/xmlpatterns/expr/qcastingplatform.cpp" line="+149"/>
<source>It is not possible to cast from %1 to %2.</source>
<translation>Es kann keine &quot;cast&quot;-Operation von %1 zu %2 durchgeführt werden.</translation>
</message>
@@ -6715,33 +6736,33 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<translation>Mit dem Typ %1 können keine Vergleichsoperationen durchgeführt werden.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qprocessinginstructionconstructor.cpp" line="+54"/>
+ <location filename="../src/xmlpatterns/expr/qprocessinginstructionconstructor.cpp" line="+84"/>
<source>The data of a processing instruction cannot contain the string %1</source>
<translation>Die Daten einer Processing-Anweisung dürfen nicht die Zeichenkette %1 enthalten</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qqnameconstructor_p.h" line="+138"/>
- <location filename="../src/xmlpatterns/functions/qqnamefns.cpp" line="+39"/>
+ <location filename="../src/xmlpatterns/expr/qqnameconstructor_p.h" line="+168"/>
+ <location filename="../src/xmlpatterns/functions/qqnamefns.cpp" line="+69"/>
<source>%1 is an invalid %2</source>
<translation>%1 ist kein gültiges %2</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qassemblestringfns.cpp" line="+58"/>
+ <location filename="../src/xmlpatterns/functions/qassemblestringfns.cpp" line="+88"/>
<source>%1 is not a valid XML 1.0 character.</source>
<translation>%1 ist kein gültiges XML 1.0 Zeichen.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qcomparingaggregator.cpp" line="+167"/>
+ <location filename="../src/xmlpatterns/functions/qcomparingaggregator.cpp" line="+197"/>
<source>The first argument to %1 cannot be of type %2.</source>
<translation>Das erste Argument von %1 kann nicht vom Typ %2 sein.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qerrorfn.cpp" line="+31"/>
+ <location filename="../src/xmlpatterns/functions/qerrorfn.cpp" line="+61"/>
<source>%1 was called.</source>
<translation>%1 wurde gerufen.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qpatternmatchingfns.cpp" line="+103"/>
+ <location filename="../src/xmlpatterns/functions/qpatternmatchingfns.cpp" line="+133"/>
<source>In the replacement string, %1 must be followed by at least one digit when not escaped.</source>
<translation>In der Ersetzung muss auf %1 eine Ziffer folgen, wenn es nicht durch ein Escape-Zeichen geschützt ist.</translation>
</message>
@@ -6751,7 +6772,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<translation>In der Ersetzung kann %1 nur verwendet werden, um sich selbst oder %2 schützen, nicht jedoch für %3</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qpatternplatform.cpp" line="+62"/>
+ <location filename="../src/xmlpatterns/functions/qpatternplatform.cpp" line="+92"/>
<source>%1 matches newline characters</source>
<translation>Der Ausdruck &apos;%1&apos; schließt Zeilenvorschübe ein</translation>
</message>
@@ -6766,12 +6787,12 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<translation>%1 ist kein gültiger regulärer Ausdruck: %2</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qsequencefns.cpp" line="+317"/>
+ <location filename="../src/xmlpatterns/functions/qsequencefns.cpp" line="+346"/>
<source>It will not be possible to retrieve %1.</source>
<translation>%1 kann nicht bestimmt werden.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qsequencegeneratingfns.cpp" line="+249"/>
+ <location filename="../src/xmlpatterns/functions/qsequencegeneratingfns.cpp" line="+279"/>
<source>The default collection is undefined</source>
<translation>Für eine Kollektion ist keine Vorgabe definiert</translation>
</message>
@@ -6781,12 +6802,12 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<translation>%1 kann nicht bestimmt werden</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/janitors/qitemverifier.cpp" line="+37"/>
+ <location filename="../src/xmlpatterns/janitors/qitemverifier.cpp" line="+67"/>
<source>The item %1 did not match the required type %2.</source>
<translation>Das Element %1 entspricht nicht dem erforderlichen Typ %2.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="+319"/>
+ <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="+379"/>
<location line="+7253"/>
<source>%1 is an unknown schema type.</source>
<translation>%1 ist ein unbekannter Schema-Typ.</translation>
@@ -6802,7 +6823,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<translation>Die Initialisierung der Variable %1 hängt von ihrem eigenem Wert ab</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/parser/qparsercontext.cpp" line="+63"/>
+ <location filename="../src/xmlpatterns/parser/qparsercontext.cpp" line="+93"/>
<source>The variable %1 is unused</source>
<translation>Die Variable %1 wird nicht verwendet</translation>
</message>
@@ -6923,7 +6944,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<translation>%1 befindet sich nicht unter den Attributdeklarationen im Bereich. Schema-Import wird nicht unterstützt.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/type/qcardinality.cpp" line="+25"/>
+ <location filename="../src/xmlpatterns/type/qcardinality.cpp" line="+55"/>
<source>empty</source>
<translation>leer</translation>
</message>
@@ -6948,27 +6969,27 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<translation>kein oder mehrere</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/type/qtypechecker.cpp" line="+126"/>
+ <location filename="../src/xmlpatterns/type/qtypechecker.cpp" line="+156"/>
<source>The focus is undefined.</source>
<translation>Es ist kein Fokus definiert.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/utils/qoutputvalidator.cpp" line="+63"/>
+ <location filename="../src/xmlpatterns/utils/qoutputvalidator.cpp" line="+93"/>
<source>An attribute by name %1 has already been created.</source>
<translation>Es wurde bereits ein Attribut mit dem Namen %1 erzeugt.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/api/qiodevicedelegate.cpp" line="+54"/>
+ <location filename="../src/xmlpatterns/api/qiodevicedelegate.cpp" line="+84"/>
<source>Network timeout.</source>
<translation>Das Zeitlimit der Netzwerkoperation wurde überschritten.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/api/qxmlserializer.cpp" line="+290"/>
+ <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>Das Element %1 kann nicht serialisiert werden, da es außerhalb des Dokumentenelements erscheint.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qabstractdatetime.cpp" line="+50"/>
+ <location filename="../src/xmlpatterns/data/qabstractdatetime.cpp" line="+80"/>
<source>Year %1 is invalid because it begins with %2.</source>
<translation>%1 ist keine gültige Jahresangabe, da es mit %2 beginnt.</translation>
</message>
@@ -7013,7 +7034,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<translation>Bei Vorhandensein eines %1-Begrenzers muss mindestens eine Komponente vorhanden sein.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qatomicmathematicians.cpp" line="+171"/>
+ <location filename="../src/xmlpatterns/data/qatomicmathematicians.cpp" line="+201"/>
<location line="+32"/>
<source>Dividing a value of type %1 by %2 (not-a-number) is not allowed.</source>
<translation>Die Division eines Werts des Typs %1 durch %2 (kein numerischer Wert) ist nicht zulässig.</translation>
@@ -7029,12 +7050,12 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<translation>Die Multiplikation eines Werts des Typs %1 mit %2 oder %3 (positiv oder negativ unendlich) ist nicht zulässig.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qatomicvalue.cpp" line="+49"/>
+ <location filename="../src/xmlpatterns/data/qatomicvalue.cpp" line="+79"/>
<source>A value of type %1 cannot have an Effective Boolean Value.</source>
<translation>Ein Wert des Typs %1 kann keinen effektiven Booleschen Wert haben.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qderivedinteger_p.h" line="+372"/>
+ <location filename="../src/xmlpatterns/data/qderivedinteger_p.h" line="+402"/>
<source>Value %1 of type %2 exceeds maximum (%3).</source>
<translation>Der Wert %1 des Typs %2 überschreitet das Maximum (%3).</translation>
</message>
@@ -7044,7 +7065,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<translation>Der Wert %1 des Typs %2 unterschreitet das Minimum (%3).</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qhexbinary.cpp" line="+61"/>
+ <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>Die Stellenzahl eines Wertes des Typs %1 muss geradzahlig sein. Das ist bei %2 nicht der Fall.</translation>
</message>
@@ -7054,7 +7075,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<translation>%1 ist kein gültiger Wert des Typs %2.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qarithmeticexpression.cpp" line="+177"/>
+ <location filename="../src/xmlpatterns/expr/qarithmeticexpression.cpp" line="+207"/>
<source>Operator %1 cannot be used on type %2.</source>
<translation>Der Operator %1 kann nicht auf den Typ %2 angewandt werden.</translation>
</message>
@@ -7064,7 +7085,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<translation>Der Operator %1 kann nicht auf atomare Werte der Typen %2 und %3 angewandt werden.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qattributenamevalidator.cpp" line="+36"/>
+ <location filename="../src/xmlpatterns/expr/qattributenamevalidator.cpp" line="+66"/>
<source>The namespace URI in the name for a computed attribute cannot be %1.</source>
<translation>Der Namensraum-URI im Namen eines berechneten Attributes darf nicht %1 sein</translation>
</message>
@@ -7074,7 +7095,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<translation>Der Name eines berechneten Attributes darf keinen Namensraum-URI %1 mit dem lokalen Namen %2 haben.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qcastas.cpp" line="+58"/>
+ <location filename="../src/xmlpatterns/expr/qcastas.cpp" line="+88"/>
<source>Type error in cast, expected %1, received %2.</source>
<translation>Typfehler bei &quot;cast&quot;-Operation; es wurde %1 erwartet, aber %2 empfangen.</translation>
</message>
@@ -7084,7 +7105,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<translation>Bei einer &quot;cast&quot;-Operation zum Typ %1 oder abgeleitetenTypen muss der Quellwert ein Zeichenketten-Literal oder ein Wert gleichen Typs sein. Der Typ %2 ist ungültig.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qcommentconstructor.cpp" line="+37"/>
+ <location filename="../src/xmlpatterns/expr/qcommentconstructor.cpp" line="+67"/>
<source>A comment cannot contain %1</source>
<translation>Ein Kommentar darf nicht&apos;%1 enthalten</translation>
</message>
@@ -7094,12 +7115,12 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<translation>Ein Kommentar darf nicht auf %1 enden.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qdocumentcontentvalidator.cpp" line="+56"/>
+ <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>Ein Attributknoten darf nicht als Kind eines Dokumentknotens erscheinen. Es erschien ein Attributknoten mit dem Namen %1.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qexpressionfactory.cpp" line="+139"/>
+ <location filename="../src/xmlpatterns/expr/qexpressionfactory.cpp" line="+169"/>
<source>A library module cannot be evaluated directly. It must be imported from a main module.</source>
<translation>Ein Bibliotheksmodul kann nicht direkt ausgewertet werden, er muss von einem Hauptmodul importiert werden.</translation>
</message>
@@ -7109,7 +7130,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<translation>Es existiert keine Vorlage mit dem Namen %1.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qgenericpredicate.cpp" line="+76"/>
+ <location filename="../src/xmlpatterns/expr/qgenericpredicate.cpp" line="+106"/>
<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>Werte des Typs %1 dürfen keine Prädikate sein. Für Prädikate sind nur numerische oder effektiv Boolesche Typen zulässig.</translation>
</message>
@@ -7119,17 +7140,17 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<translation>Ein positionales Prädikat muss sich als einfacher, numerischer Wert auswerten lassen.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qncnameconstructor_p.h" line="+107"/>
+ <location filename="../src/xmlpatterns/expr/qncnameconstructor_p.h" line="+137"/>
<source>%1 is not a valid target name in a processing instruction. It must be a %2 value, e.g. %3.</source>
<translation>%1 ist kein gültiger Zielname einer Processing-Anweisung, es muss ein %2 Wert wie zum Beispiel %3 sein.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qpath.cpp" line="+79"/>
+ <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>Der letzte Schritt eines Pfades kann entweder nur Knoten oder nur atomare Werte enthalten. Sie dürfen nicht zusammen auftreten.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qqnameconstructor.cpp" line="+52"/>
+ <location filename="../src/xmlpatterns/expr/qqnameconstructor.cpp" line="+82"/>
<source>No namespace binding exists for the prefix %1</source>
<translation>Es existiert keine Namensraum-Bindung für den Präfix %1</translation>
</message>
@@ -7139,7 +7160,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<translation>Es existiert keine Namensraum-Bindung für den Präfix %1 in %2</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qaggregatefns.cpp" line="+90"/>
+ <location filename="../src/xmlpatterns/functions/qaggregatefns.cpp" line="+120"/>
<source>The first argument to %1 cannot be of type %2. It must be a numeric type, xs:yearMonthDuration or xs:dayTimeDuration.</source>
<translation>Das erste Argument von %1 darf nicht vom Typ %2 sein; es muss numerisch, xs:yearMonthDuration oder xs:dayTimeDuration sein.</translation>
</message>
@@ -7154,7 +7175,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<translation>Das zweite Argument von %1 kann nicht vom Typ %2 sein, es muss einer der Typen %3, %4 oder %5 sein.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qdatetimefn.cpp" line="+56"/>
+ <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>Wenn beide Werte mit Zeitzonen angegeben werden, müssen diese übereinstimmen. %1 und %2 sind daher unzulässig.</translation>
</message>
@@ -7184,17 +7205,17 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<translation>Es kann kein Präfix angegeben werden, wenn das erste Argument leer oder eine leere Zeichenkette (kein Namensraum) ist. Es wurde der Präfix %1 angegeben.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qstringvaluefns.cpp" line="+222"/>
+ <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>Die Normalisierungsform %1 wird nicht unterstützt. Die unterstützten Normalisierungsformen sind %2, %3, %4 and %5, und &quot;kein&quot; (eine leere Zeichenkette steht für &quot;keine Normalisierung&quot;).</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qtimezonefns.cpp" line="+57"/>
+ <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>Eine Zeitzonen-Differenz muss im Bereich %1..%2 (einschließlich) liegen. %3 liegt außerhalb des Bereiches.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/janitors/qcardinalityverifier.cpp" line="+28"/>
+ <location filename="../src/xmlpatterns/janitors/qcardinalityverifier.cpp" line="+58"/>
<source>Required cardinality is %1; got cardinality %2.</source>
<translation>Die erforderliche Kardinalität ist %1 (gegenwärtig %2).</translation>
</message>
@@ -7349,12 +7370,12 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<translation>Attribute dürfen nicht auf andere Knoten folgen.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/utils/qxpathhelper_p.h" line="+90"/>
+ <location filename="../src/xmlpatterns/utils/qxpathhelper_p.h" line="+120"/>
<source>Only the Unicode Codepoint Collation is supported(%1). %2 is unsupported.</source>
<translation>Es wird nur Unicode Codepoint Collation unterstützt (%1). %2 wird nicht unterstützt.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/acceltree/qacceltreebuilder.cpp" line="+175"/>
+ <location filename="../src/xmlpatterns/acceltree/qacceltreebuilder.cpp" line="+205"/>
<source>An %1-attribute with value %2 has already been declared.</source>
<translation>Das Element hat bereits ein Attribut mit dem Namen %1 mit dem Wert %2.</translation>
</message>
@@ -7399,7 +7420,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<translation>%2 ist kein gültiger Zielname einer Processing-Anweisung, da dieser nicht %1 sein darf (ungeachtet der Groß/Kleinschreibung).</translation>
</message>
<message numerus="yes">
- <location filename="../src/xmlpatterns/functions/qabstractfunctionfactory.cpp" line="+47"/>
+ <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 hat nur %n Argument; die Angabe %2 ist daher ungültig.</numerusform>
@@ -7415,7 +7436,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qcontextnodechecker.cpp" line="+24"/>
+ <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>Der übergeordnete Knoten des zweiten Arguments der Funktion %1 muss ein Dokumentknoten sein, was bei %2 nicht der Fall ist.</translation>
</message>
@@ -7461,7 +7482,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<translation>Das Attributelement %1 kann nicht serialisiert werden, da es auf der höchsten Ebene erscheint.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/acceltree/qacceltreeresourceloader.cpp" line="+284"/>
+ <location filename="../src/xmlpatterns/acceltree/qacceltreeresourceloader.cpp" line="+314"/>
<source>%1 is an unsupported encoding.</source>
<translation>Das Encoding %1 wird nicht unterstützt.</translation>
</message>
@@ -7476,13 +7497,17 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<translation>Der Code-Punkt %1 aus %2 mit Encoding %3 ist kein gültiges XML-Zeichen.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qapplytemplate.cpp" line="+89"/>
+ <location filename="../src/xmlpatterns/expr/qapplytemplate.cpp" line="+119"/>
<source>Ambiguous rule match.</source>
<translation>Mehrdeutige Regel.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qcomputednamespaceconstructor.cpp" line="+39"/>
<source>In a namespace constructor, the value for a namespace value cannot be an empty string.</source>
+ <translation type="obsolete">Im Konstruktor eines Namensraums darf der Wert des Namensraumes keine leere Zeichenkette sein.</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>Im Konstruktor eines Namensraums darf der Wert des Namensraumes keine leere Zeichenkette sein.</translation>
</message>
<message>
@@ -7501,12 +7526,12 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<translation>An %2 kann nur der Präfix %1 gebunden werden (und umgekehrt).</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qevaluationcache.cpp" line="+87"/>
+ <location filename="../src/xmlpatterns/expr/qevaluationcache.cpp" line="+117"/>
<source>Circularity detected</source>
<translation>Es wurde eine zirkuläre Abhängigkeit festgestellt.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qtemplate.cpp" line="+115"/>
+ <location filename="../src/xmlpatterns/expr/qtemplate.cpp" line="+145"/>
<source>The parameter %1 is required, but no corresponding %2 is supplied.</source>
<translation>Es wurde kein entsprechendes %2 für den erforderlichen Parameter %1 angegeben.</translation>
</message>
@@ -7516,12 +7541,12 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<translation>Es existiert kein entsprechendes %2 für den übergebenen Parameter %1.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qunparsedtextfn.cpp" line="+35"/>
+ <location filename="../src/xmlpatterns/functions/qunparsedtextfn.cpp" line="+65"/>
<source>The URI cannot have a fragment</source>
<translation>Der URI darf kein Fragment enthalten.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/parser/qxslttokenizer.cpp" line="+489"/>
+ <location filename="../src/xmlpatterns/parser/qxslttokenizer.cpp" line="+519"/>
<source>Element %1 is not allowed at this location.</source>
<translation>Das Element %1 darf nicht an dieser Stelle stehen.</translation>
</message>
@@ -7576,7 +7601,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<translation>Im %1-Attribut des Elements %2 muss mindestens ein Modus angegeben werden.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/parser/qmaintainingreader.cpp" line="+153"/>
+ <location filename="../src/xmlpatterns/parser/qmaintainingreader.cpp" line="+183"/>
<source>Attribute %1 cannot appear on the element %2. Only the standard attributes can appear.</source>
<translation>Das Element %2 kann nur die Standardattribute haben, nicht jedoch %1.</translation>
</message>
@@ -7651,7 +7676,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<translation>Das Element %1 kann keine Kindelemente haben.</translation>
</message>
<message>
- <location line="+432"/>
+ <location line="+434"/>
<source>Element %1 cannot have a sequence constructor.</source>
<translation>Das Element %1 kann keinen Sequenzkonstruktor haben.</translation>
</message>
diff --git a/translations/qt_es.ts b/translations/qt_es.ts
index 294b009..ee1e88c 100644
--- a/translations/qt_es.ts
+++ b/translations/qt_es.ts
@@ -4,7 +4,7 @@
<context>
<name>AudioOutput</name>
<message>
- <location filename="../src/3rdparty/phonon/phonon/audiooutput.cpp" line="+374"/>
+ <location filename="../src/3rdparty/phonon/phonon/audiooutput.cpp" line="+375"/>
<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="unfinished"></translation>
</message>
@@ -22,7 +22,7 @@
<context>
<name>CloseButton</name>
<message>
- <location filename="../src/gui/widgets/qtabbar.cpp" line="+2217"/>
+ <location filename="../src/gui/widgets/qtabbar.cpp" line="+2251"/>
<source>Close Tab</source>
<translation type="unfinished"></translation>
</message>
@@ -89,7 +89,7 @@
<context>
<name>Phonon::Gstreamer::MediaObject</name>
<message>
- <location filename="../src/3rdparty/phonon/gstreamer/mediaobject.cpp" line="+88"/>
+ <location filename="../src/3rdparty/phonon/gstreamer/mediaobject.cpp" line="+90"/>
<source>Cannot start playback.
Check your Gstreamer installation and make sure you
@@ -102,24 +102,24 @@ have libgstreamer-plugins-base installed.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+653"/>
- <location line="+9"/>
+ <location line="+676"/>
+ <location line="+8"/>
<location line="+15"/>
- <location line="+7"/>
- <location line="+5"/>
- <location line="+20"/>
- <location line="+317"/>
+ <location line="+9"/>
+ <location line="+6"/>
+ <location line="+19"/>
+ <location line="+335"/>
<location line="+24"/>
<source>Could not open media source.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-381"/>
+ <location line="-403"/>
<source>Invalid source type.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+355"/>
+ <location line="+377"/>
<source>Could not locate media source.</source>
<translation type="unfinished"></translation>
</message>
@@ -153,7 +153,7 @@ have libgstreamer-plugins-base installed.</source>
<context>
<name>Q3Accel</name>
<message>
- <location filename="../src/qt3support/other/q3accel.cpp" line="+451"/>
+ <location filename="../src/qt3support/other/q3accel.cpp" line="+481"/>
<source>%1, %2 not defined</source>
<translation>La secuencia %1, %2 no está definida</translation>
</message>
@@ -166,7 +166,7 @@ have libgstreamer-plugins-base installed.</source>
<context>
<name>Q3DataTable</name>
<message>
- <location filename="../src/qt3support/sql/q3datatable.cpp" line="+253"/>
+ <location filename="../src/qt3support/sql/q3datatable.cpp" line="+285"/>
<source>True</source>
<translation>Verdadero</translation>
</message>
@@ -194,7 +194,7 @@ have libgstreamer-plugins-base installed.</source>
<context>
<name>Q3FileDialog</name>
<message>
- <location filename="../src/qt3support/dialogs/q3filedialog.cpp" line="+834"/>
+ <location filename="../src/qt3support/dialogs/q3filedialog.cpp" line="+864"/>
<source>Copy or Move a File</source>
<translation>Copiar o mover un fichero</translation>
</message>
@@ -219,7 +219,7 @@ have libgstreamer-plugins-base installed.</source>
<location line="-157"/>
<location line="+49"/>
<location line="+2153"/>
- <location filename="../src/qt3support/dialogs/q3filedialog_mac.cpp" line="+80"/>
+ <location filename="../src/qt3support/dialogs/q3filedialog_mac.cpp" line="+110"/>
<source>All Files (*)</source>
<translation>Todos los ficheros (*)</translation>
</message>
@@ -359,7 +359,7 @@ have libgstreamer-plugins-base installed.</source>
<message>
<location line="+704"/>
<location line="+2100"/>
- <location filename="../src/qt3support/dialogs/q3filedialog_win.cpp" line="+307"/>
+ <location filename="../src/qt3support/dialogs/q3filedialog_win.cpp" line="+337"/>
<source>Open</source>
<translation>Abrir</translation>
</message>
@@ -527,7 +527,7 @@ Compruebe la ruta y el nombre del fichero.</translation>
<context>
<name>Q3LocalFs</name>
<message>
- <location filename="../src/qt3support/network/q3localfs.cpp" line="+100"/>
+ <location filename="../src/qt3support/network/q3localfs.cpp" line="+130"/>
<location line="+10"/>
<source>Could not read directory
%1</source>
@@ -577,7 +577,7 @@ a
<context>
<name>Q3MainWindow</name>
<message>
- <location filename="../src/qt3support/widgets/q3mainwindow.cpp" line="+2021"/>
+ <location filename="../src/qt3support/widgets/q3mainwindow.cpp" line="+2051"/>
<source>Line up</source>
<translation>Alinear</translation>
</message>
@@ -590,7 +590,7 @@ a
<context>
<name>Q3NetworkProtocol</name>
<message>
- <location filename="../src/qt3support/network/q3networkprotocol.cpp" line="+824"/>
+ <location filename="../src/qt3support/network/q3networkprotocol.cpp" line="+854"/>
<source>Operation stopped by the user</source>
<translation>Operación detenida por el usuario</translation>
</message>
@@ -598,7 +598,7 @@ a
<context>
<name>Q3ProgressDialog</name>
<message>
- <location filename="../src/qt3support/dialogs/q3progressdialog.cpp" line="+194"/>
+ <location filename="../src/qt3support/dialogs/q3progressdialog.cpp" line="+224"/>
<location line="+61"/>
<source>Cancel</source>
<translation>Cancelar</translation>
@@ -607,7 +607,7 @@ a
<context>
<name>Q3TabDialog</name>
<message>
- <location filename="../src/qt3support/dialogs/q3tabdialog.cpp" line="+159"/>
+ <location filename="../src/qt3support/dialogs/q3tabdialog.cpp" line="+189"/>
<location line="+814"/>
<source>OK</source>
<translation>Aceptar</translation>
@@ -636,7 +636,7 @@ a
<context>
<name>Q3TextEdit</name>
<message>
- <location filename="../src/qt3support/text/q3textedit.cpp" line="+5399"/>
+ <location filename="../src/qt3support/text/q3textedit.cpp" line="+5429"/>
<source>&amp;Undo</source>
<translation>&amp;Deshacer</translation>
</message>
@@ -675,7 +675,7 @@ a
<context>
<name>Q3TitleBar</name>
<message>
- <location filename="../src/plugins/accessible/compat/q3complexwidgets.cpp" line="+216"/>
+ <location filename="../src/plugins/accessible/compat/q3complexwidgets.cpp" line="+246"/>
<source>System</source>
<translation>Sistema</translation>
</message>
@@ -743,7 +743,7 @@ a
<context>
<name>Q3ToolBar</name>
<message>
- <location filename="../src/qt3support/widgets/q3toolbar.cpp" line="+662"/>
+ <location filename="../src/qt3support/widgets/q3toolbar.cpp" line="+692"/>
<source>More...</source>
<translation>Más...</translation>
</message>
@@ -751,7 +751,7 @@ a
<context>
<name>Q3UrlOperator</name>
<message>
- <location filename="../src/qt3support/network/q3urloperator.cpp" line="+356"/>
+ <location filename="../src/qt3support/network/q3urloperator.cpp" line="+386"/>
<location line="+260"/>
<location line="+4"/>
<source>The protocol `%1&apos; is not supported</source>
@@ -803,7 +803,7 @@ a
<context>
<name>Q3Wizard</name>
<message>
- <location filename="../src/qt3support/dialogs/q3wizard.cpp" line="+147"/>
+ <location filename="../src/qt3support/dialogs/q3wizard.cpp" line="+177"/>
<source>&amp;Cancel</source>
<translation>&amp;Cancelar</translation>
</message>
@@ -831,9 +831,9 @@ a
<context>
<name>QAbstractSocket</name>
<message>
- <location filename="../src/network/socket/qabstractsocket.cpp" line="+838"/>
- <location filename="../src/network/socket/qhttpsocketengine.cpp" line="+585"/>
- <location filename="../src/network/socket/qsocks5socketengine.cpp" line="+627"/>
+ <location filename="../src/network/socket/qabstractsocket.cpp" line="+868"/>
+ <location filename="../src/network/socket/qhttpsocketengine.cpp" line="+615"/>
+ <location filename="../src/network/socket/qsocks5socketengine.cpp" line="+657"/>
<location line="+26"/>
<source>Host not found</source>
<translation>Equipo no encontrado</translation>
@@ -876,7 +876,7 @@ a
<context>
<name>QAbstractSpinBox</name>
<message>
- <location filename="../src/gui/widgets/qabstractspinbox.cpp" line="+1169"/>
+ <location filename="../src/gui/widgets/qabstractspinbox.cpp" line="+1199"/>
<source>&amp;Step up</source>
<translation>&amp;Aumentar</translation>
</message>
@@ -894,12 +894,12 @@ a
<context>
<name>QApplication</name>
<message>
- <location filename="../src/gui/accessible/qaccessibleobject.cpp" line="+346"/>
+ <location filename="../src/gui/accessible/qaccessibleobject.cpp" line="+376"/>
<source>Activate</source>
<translation>Activar</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qmessagebox.h" line="+322"/>
+ <location filename="../src/gui/dialogs/qmessagebox.h" line="+352"/>
<source>Executable &apos;%1&apos; requires Qt %2, found Qt %3.</source>
<translation>El ejecutable «%1» requiere Qt %2 (se encontró Qt %3).</translation>
</message>
@@ -909,7 +909,7 @@ a
<translation>Error: biblioteca Qt incompatible</translation>
</message>
<message>
- <location filename="../src/gui/kernel/qapplication.cpp" line="+2212"/>
+ <location filename="../src/gui/kernel/qapplication.cpp" line="+2248"/>
<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>
@@ -946,7 +946,7 @@ a
<context>
<name>QCheckBox</name>
<message>
- <location filename="../src/plugins/accessible/widgets/simplewidgets.cpp" line="+84"/>
+ <location filename="../src/plugins/accessible/widgets/simplewidgets.cpp" line="+114"/>
<source>Uncheck</source>
<translation>Desmarcar</translation>
</message>
@@ -964,7 +964,7 @@ a
<context>
<name>QColorDialog</name>
<message>
- <location filename="../src/gui/dialogs/qcolordialog.cpp" line="+1219"/>
+ <location filename="../src/gui/dialogs/qcolordialog.cpp" line="+1253"/>
<source>Hu&amp;e:</source>
<translation>&amp;Tono:</translation>
</message>
@@ -1038,13 +1038,13 @@ a
<context>
<name>QComboBox</name>
<message>
- <location filename="../src/plugins/accessible/widgets/complexwidgets.cpp" line="+1741"/>
+ <location filename="../src/plugins/accessible/widgets/complexwidgets.cpp" line="+1771"/>
<location line="+65"/>
<source>Open</source>
<translation>Abrir</translation>
</message>
<message>
- <location filename="../src/gui/itemviews/qitemeditorfactory.cpp" line="+514"/>
+ <location filename="../src/gui/itemviews/qitemeditorfactory.cpp" line="+544"/>
<source>False</source>
<translation>Falso</translation>
</message>
@@ -1062,7 +1062,7 @@ a
<context>
<name>QCoreApplication</name>
<message>
- <location filename="../src/corelib/kernel/qsystemsemaphore_unix.cpp" line="+89"/>
+ <location filename="../src/corelib/kernel/qsystemsemaphore_unix.cpp" line="+119"/>
<source>%1: key is empty</source>
<comment>QSystemSemaphore</comment>
<translation type="unfinished"></translation>
@@ -1083,12 +1083,12 @@ a
<context>
<name>QDB2Driver</name>
<message>
- <location filename="../src/sql/drivers/db2/qsql_db2.cpp" line="+1217"/>
+ <location filename="../src/sql/drivers/db2/qsql_db2.cpp" line="+1276"/>
<source>Unable to connect</source>
<translation>Imposible establecer una conexión</translation>
</message>
<message>
- <location line="+263"/>
+ <location line="+303"/>
<source>Unable to commit transaction</source>
<translation>Incapaz de enviar la transacción</translation>
</message>
@@ -1106,8 +1106,8 @@ a
<context>
<name>QDB2Result</name>
<message>
- <location line="-986"/>
- <location line="+242"/>
+ <location line="-1043"/>
+ <location line="+243"/>
<source>Unable to execute statement</source>
<translation>Imposible ejecutar la instrucción</translation>
</message>
@@ -1122,7 +1122,7 @@ a
<translation>No es posible ligar la variable</translation>
</message>
<message>
- <location line="+91"/>
+ <location line="+92"/>
<source>Unable to fetch record %1</source>
<translation>Imposible obtener el registro %1</translation>
</message>
@@ -1140,7 +1140,7 @@ a
<context>
<name>QDateTimeEdit</name>
<message>
- <location filename="../src/gui/widgets/qdatetimeedit.cpp" line="+2265"/>
+ <location filename="../src/gui/widgets/qdatetimeedit.cpp" line="+2295"/>
<source>AM</source>
<translation>AM</translation>
</message>
@@ -1163,7 +1163,7 @@ a
<context>
<name>QDial</name>
<message>
- <location filename="../src/plugins/accessible/widgets/rangecontrols.cpp" line="+921"/>
+ <location filename="../src/plugins/accessible/widgets/rangecontrols.cpp" line="+951"/>
<source>QDial</source>
<translation>QDial</translation>
</message>
@@ -1181,7 +1181,7 @@ a
<context>
<name>QDialog</name>
<message>
- <location filename="../src/gui/dialogs/qdialog.cpp" line="+567"/>
+ <location filename="../src/gui/dialogs/qdialog.cpp" line="+597"/>
<source>What&apos;s This?</source>
<translation>¿Qué es esto?</translation>
</message>
@@ -1194,9 +1194,9 @@ a
<context>
<name>QDialogButtonBox</name>
<message>
- <location filename="../src/gui/dialogs/qmessagebox.cpp" line="+1830"/>
+ <location filename="../src/gui/dialogs/qmessagebox.cpp" line="+1866"/>
<location line="+464"/>
- <location filename="../src/gui/widgets/qdialogbuttonbox.cpp" line="+531"/>
+ <location filename="../src/gui/widgets/qdialogbuttonbox.cpp" line="+561"/>
<source>OK</source>
<translation>Aceptar</translation>
</message>
@@ -1319,7 +1319,7 @@ a
<context>
<name>QDirModel</name>
<message>
- <location filename="../src/gui/itemviews/qdirmodel.cpp" line="+423"/>
+ <location filename="../src/gui/itemviews/qdirmodel.cpp" line="+453"/>
<source>Name</source>
<translation>Nombre</translation>
</message>
@@ -1355,7 +1355,7 @@ a
<context>
<name>QDockWidget</name>
<message>
- <location filename="../src/plugins/accessible/widgets/qaccessiblewidgets.cpp" line="+1209"/>
+ <location filename="../src/plugins/accessible/widgets/qaccessiblewidgets.cpp" line="+1239"/>
<source>Close</source>
<translation>Cerrar</translation>
</message>
@@ -1386,7 +1386,7 @@ a
<context>
<name>QErrorMessage</name>
<message>
- <location filename="../src/gui/dialogs/qerrormessage.cpp" line="+162"/>
+ <location filename="../src/gui/dialogs/qerrormessage.cpp" line="+192"/>
<source>Debug Message:</source>
<translation>Mensaje de depuración:</translation>
</message>
@@ -1414,13 +1414,18 @@ a
<context>
<name>QFile</name>
<message>
- <location filename="../src/corelib/io/qfile.cpp" line="+678"/>
- <location line="+130"/>
+ <location filename="../src/corelib/io/qfile.cpp" line="+708"/>
+ <location line="+141"/>
<source>Destination file exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+12"/>
+ <location line="-108"/>
+ <source>Cannot remove source file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+120"/>
<source>Cannot open %1 for input</source>
<translation type="unfinished"></translation>
</message>
@@ -1443,37 +1448,37 @@ a
<context>
<name>QFileDialog</name>
<message>
- <location filename="../src/gui/dialogs/qfiledialog.cpp" line="+484"/>
- <location line="+423"/>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="+515"/>
+ <location line="+444"/>
<source>All Files (*)</source>
<translation>Todos los ficheros (*)</translation>
</message>
<message>
- <location line="+218"/>
+ <location line="+222"/>
<source>Directories</source>
<translation>Directorios</translation>
</message>
<message>
<location line="-3"/>
<location line="+50"/>
- <location line="+1440"/>
+ <location line="+1471"/>
<location line="+75"/>
<source>&amp;Open</source>
<translation>&amp;Abrir</translation>
</message>
<message>
- <location line="-1565"/>
+ <location line="-1596"/>
<location line="+50"/>
<source>&amp;Save</source>
<translation>&amp;Guardar</translation>
</message>
<message>
- <location line="-705"/>
+ <location line="-730"/>
<source>Open</source>
<translation>Abrir</translation>
</message>
<message>
- <location line="+1469"/>
+ <location line="+1515"/>
<source>%1 already exists.
Do you want to replace it?</source>
<translation>El fichero %1 ya existe.
@@ -1494,7 +1499,7 @@ Verifique que el nombre del fichero es correcto.</translation>
<translation>Mi equipo</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-1458"/>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-1504"/>
<source>&amp;Rename</source>
<translation>Cambia&amp;r de nombre</translation>
</message>
@@ -1540,7 +1545,7 @@ Verifique que el nombre del fichero es correcto.</translation>
</message>
<message>
<location filename="../src/gui/dialogs/qfiledialog.cpp" line="+6"/>
- <location line="+623"/>
+ <location line="+648"/>
<source>Directory:</source>
<translation>Directorio:</translation>
</message>
@@ -1553,8 +1558,8 @@ Fichero no encontrado.
Compruebe que el nombre del fichero es correcto</translation>
</message>
<message>
- <location line="+773"/>
- <location line="+851"/>
+ <location line="+794"/>
+ <location line="+862"/>
<source>%1
Directory not found.
Please verify the correct directory name was given.</source>
@@ -1563,7 +1568,7 @@ Directorio no encontrado.
Verique que el nombre del directorio es correcto.</translation>
</message>
<message>
- <location line="-217"/>
+ <location line="-218"/>
<source>&apos;%1&apos; is write protected.
Do you want to delete it anyway?</source>
<translation>«%1» está protegido contra escritura.
@@ -1580,22 +1585,22 @@ Do you want to delete it anyway?</source>
<translation>No fue posible borrar el directorio.</translation>
</message>
<message>
- <location line="+406"/>
+ <location line="+407"/>
<source>Recent Places</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfiledialog_win.cpp" line="+130"/>
+ <location filename="../src/gui/dialogs/qfiledialog_win.cpp" line="+160"/>
<source>All Files (*.*)</source>
<translation>Todos los ficheros (*.*)</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-2493"/>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-2550"/>
<source>Save As</source>
<translation>Guardar como</translation>
</message>
<message>
- <location filename="../src/gui/itemviews/qfileiconprovider.cpp" line="+381"/>
+ <location filename="../src/gui/itemviews/qfileiconprovider.cpp" line="+411"/>
<source>Drive</source>
<translation>Unidad</translation>
</message>
@@ -1627,29 +1632,29 @@ Do you want to delete it anyway?</source>
<translation>Siguiente (histórico)</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfiledialog.cpp" line="+1914"/>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="+1970"/>
<source>New Folder</source>
<translation>Nueva carpeta</translation>
</message>
<message>
- <location line="-1907"/>
+ <location line="-1963"/>
<source>&amp;New Folder</source>
<translation>&amp;Nueva carpeta</translation>
</message>
<message>
- <location line="+631"/>
+ <location line="+656"/>
<location line="+38"/>
<source>&amp;Choose</source>
<translation>&amp;Seleccionar</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qsidebar.cpp" line="+388"/>
+ <location filename="../src/gui/dialogs/qsidebar.cpp" line="+418"/>
<source>Remove</source>
<translation>Eliminar</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-662"/>
- <location line="+627"/>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-687"/>
+ <location line="+652"/>
<source>File &amp;name:</source>
<translation>&amp;Nombre de fichero:</translation>
</message>
@@ -1669,7 +1674,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QFileSystemModel</name>
<message>
- <location filename="../src/gui/dialogs/qfilesystemmodel.cpp" line="+707"/>
+ <location filename="../src/gui/dialogs/qfilesystemmodel.cpp" line="+744"/>
<source>%1 TB</source>
<translation>%1 TiB</translation>
</message>
@@ -1731,7 +1736,7 @@ All other platforms</comment>
<translation>Última modificación</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfilesystemmodel_p.h" line="+204"/>
+ <location filename="../src/gui/dialogs/qfilesystemmodel_p.h" line="+234"/>
<source>My Computer</source>
<translation>Mi equipo</translation>
</message>
@@ -1750,7 +1755,7 @@ All other platforms</comment>
<context>
<name>QFontDatabase</name>
<message>
- <location filename="../src/gui/text/qfontdatabase.cpp" line="+60"/>
+ <location filename="../src/gui/text/qfontdatabase.cpp" line="+90"/>
<location line="+1176"/>
<source>Normal</source>
<translation type="unfinished"></translation>
@@ -1967,7 +1972,7 @@ All other platforms</comment>
<context>
<name>QFontDialog</name>
<message>
- <location filename="../src/gui/dialogs/qfontdialog.cpp" line="+742"/>
+ <location filename="../src/gui/dialogs/qfontdialog.cpp" line="+772"/>
<source>&amp;Font</source>
<translation>&amp;Tipo de letra</translation>
</message>
@@ -2016,8 +2021,8 @@ All other platforms</comment>
<context>
<name>QFtp</name>
<message>
- <location filename="../src/network/access/qftp.cpp" line="+796"/>
- <location filename="../src/qt3support/network/q3ftp.cpp" line="+653"/>
+ <location filename="../src/network/access/qftp.cpp" line="+826"/>
+ <location filename="../src/qt3support/network/q3ftp.cpp" line="+683"/>
<source>Not connected</source>
<translation>No conectado</translation>
</message>
@@ -2162,7 +2167,7 @@ All other platforms</comment>
<context>
<name>QHostInfo</name>
<message>
- <location filename="../src/network/kernel/qhostinfo_p.h" line="+153"/>
+ <location filename="../src/network/kernel/qhostinfo_p.h" line="+183"/>
<source>Unknown error</source>
<translation>Error desconocido</translation>
</message>
@@ -2170,11 +2175,11 @@ All other platforms</comment>
<context>
<name>QHostInfoAgent</name>
<message>
- <location filename="../src/network/kernel/qhostinfo_unix.cpp" line="+148"/>
+ <location filename="../src/network/kernel/qhostinfo_unix.cpp" line="+178"/>
<location line="+9"/>
<location line="+64"/>
<location line="+31"/>
- <location filename="../src/network/kernel/qhostinfo_win.cpp" line="+150"/>
+ <location filename="../src/network/kernel/qhostinfo_win.cpp" line="+180"/>
<location line="+9"/>
<location line="+40"/>
<location line="+27"/>
@@ -2200,26 +2205,26 @@ All other platforms</comment>
<context>
<name>QHttp</name>
<message>
- <location filename="../src/network/access/qhttp.cpp" line="+335"/>
+ <location filename="../src/network/access/qhttp.cpp" line="+365"/>
<source>HTTPS connection requested but SSL support not compiled in</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+1209"/>
- <location line="+816"/>
- <location filename="../src/qt3support/network/q3http.cpp" line="+1130"/>
+ <location line="+820"/>
+ <location filename="../src/qt3support/network/q3http.cpp" line="+1160"/>
<location line="+567"/>
<source>Unknown error</source>
<translation>Error desconocido</translation>
</message>
<message>
- <location line="-564"/>
+ <location line="-568"/>
<location filename="../src/qt3support/network/q3http.cpp" line="-370"/>
<source>Request aborted</source>
<translation>Solicitud interrumpida</translation>
</message>
<message>
- <location line="+575"/>
+ <location line="+579"/>
<location filename="../src/qt3support/network/q3http.cpp" line="+381"/>
<source>No server set to connect to</source>
<translation>No se ha indicado ningún servidor al que conectarse</translation>
@@ -2237,18 +2242,23 @@ All other platforms</comment>
<translation>El servidor cerró la conexión inesperadamente</translation>
</message>
<message>
- <location line="+357"/>
+ <location line="+179"/>
+ <source>Unknown authentication method</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+183"/>
<source>Error writing response to device</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/network/access/qhttpnetworkconnection.cpp" line="+1712"/>
+ <location filename="../src/network/access/qhttpnetworkconnection.cpp" line="+876"/>
<location filename="../src/qt3support/network/q3http.cpp" line="+38"/>
<source>Connection refused</source>
<translation>Conexión rechazada</translation>
</message>
<message>
- <location filename="../src/network/access/qhttp.cpp" line="-299"/>
+ <location filename="../src/network/access/qhttp.cpp" line="-304"/>
<location filename="../src/network/access/qhttpnetworkconnection.cpp" line="-4"/>
<location filename="../src/qt3support/network/q3http.cpp" line="+3"/>
<source>Host %1 not found</source>
@@ -2269,7 +2279,7 @@ All other platforms</comment>
<translation>Cabecera de respuesta HTTP no válida</translation>
</message>
<message>
- <location line="+120"/>
+ <location line="+125"/>
<location line="+48"/>
<location filename="../src/qt3support/network/q3http.cpp" line="+40"/>
<location line="+47"/>
@@ -2318,7 +2328,7 @@ All other platforms</comment>
<translation>Se precisa autenticación</translation>
</message>
<message>
- <location line="-133"/>
+ <location line="-138"/>
<source>Connection refused (or timed out)</source>
<translation type="unfinished"></translation>
</message>
@@ -2399,7 +2409,7 @@ All other platforms</comment>
<context>
<name>QIBaseDriver</name>
<message>
- <location filename="../src/sql/drivers/ibase/qsql_ibase.cpp" line="+1378"/>
+ <location filename="../src/sql/drivers/ibase/qsql_ibase.cpp" line="+1428"/>
<source>Error opening database</source>
<translation>Error al abrir la base de datos</translation>
</message>
@@ -2422,7 +2432,7 @@ All other platforms</comment>
<context>
<name>QIBaseResult</name>
<message>
- <location line="-1077"/>
+ <location line="-1097"/>
<source>Unable to create BLOB</source>
<translation>Imposible crear un BLOB</translation>
</message>
@@ -2442,7 +2452,7 @@ All other platforms</comment>
<translation>Imposible leer el BLOB</translation>
</message>
<message>
- <location line="+124"/>
+ <location line="+125"/>
<location line="+189"/>
<source>Could not find array</source>
<translation>No fue posible encontrar la tabla</translation>
@@ -2512,7 +2522,7 @@ All other platforms</comment>
<context>
<name>QIODevice</name>
<message>
- <location filename="../src/corelib/global/qglobal.cpp" line="+1830"/>
+ <location filename="../src/corelib/global/qglobal.cpp" line="+1869"/>
<source>Permission denied</source>
<translation>Permiso denegado</translation>
</message>
@@ -2532,7 +2542,7 @@ All other platforms</comment>
<translation>No queda espacio en el dispositivo</translation>
</message>
<message>
- <location filename="../src/corelib/io/qiodevice.cpp" line="+1506"/>
+ <location filename="../src/corelib/io/qiodevice.cpp" line="+1536"/>
<source>Unknown error</source>
<translation>Error desconocido</translation>
</message>
@@ -2540,7 +2550,7 @@ All other platforms</comment>
<context>
<name>QInputContext</name>
<message>
- <location filename="../src/gui/inputmethod/qinputcontextfactory.cpp" line="+212"/>
+ <location filename="../src/gui/inputmethod/qinputcontextfactory.cpp" line="+242"/>
<source>XIM</source>
<translation>XIM</translation>
</message>
@@ -2563,7 +2573,7 @@ All other platforms</comment>
<context>
<name>QInputDialog</name>
<message>
- <location filename="../src/gui/dialogs/qinputdialog.cpp" line="+193"/>
+ <location filename="../src/gui/dialogs/qinputdialog.cpp" line="+223"/>
<source>Enter a value:</source>
<translation type="unfinished"></translation>
</message>
@@ -2583,7 +2593,7 @@ All other platforms</comment>
<translation type="obsolete">QLibrary::resolve_sys: Símbolo «%1» no definido en %2 (%3)</translation>
</message>
<message>
- <location filename="../src/corelib/plugin/qlibrary.cpp" line="+348"/>
+ <location filename="../src/corelib/plugin/qlibrary.cpp" line="+378"/>
<source>Could not mmap &apos;%1&apos;: %2</source>
<translation>No fu posible establecer la proyección en memoria de «%1»: %2</translation>
</message>
@@ -2614,7 +2624,7 @@ All other platforms</comment>
</message>
<message>
<location line="-377"/>
- <location filename="../src/corelib/plugin/qpluginloader.cpp" line="+250"/>
+ <location filename="../src/corelib/plugin/qpluginloader.cpp" line="+280"/>
<source>The shared library was not found.</source>
<translation>No se ha encontrado la biblioteca compartida.</translation>
</message>
@@ -2629,8 +2639,8 @@ All other platforms</comment>
<translation>El complemento «%1» usa una biblioteca Qt incompatible. (No se pueden mezclar las bibliotecas «debug» y «release».)</translation>
</message>
<message>
- <location filename="../src/corelib/plugin/qlibrary_unix.cpp" line="+179"/>
- <location filename="../src/corelib/plugin/qlibrary_win.cpp" line="+69"/>
+ <location filename="../src/corelib/plugin/qlibrary_unix.cpp" line="+209"/>
+ <location filename="../src/corelib/plugin/qlibrary_win.cpp" line="+99"/>
<source>Cannot load library %1: %2</source>
<translation type="unfinished"></translation>
</message>
@@ -2650,7 +2660,7 @@ All other platforms</comment>
<context>
<name>QLineEdit</name>
<message>
- <location filename="../src/gui/widgets/qlineedit.cpp" line="+2649"/>
+ <location filename="../src/gui/widgets/qlineedit.cpp" line="+2680"/>
<source>&amp;Undo</source>
<translation>&amp;Deshacer</translation>
</message>
@@ -2688,8 +2698,8 @@ All other platforms</comment>
<context>
<name>QLocalServer</name>
<message>
- <location filename="../src/network/socket/qlocalserver.cpp" line="+196"/>
- <location filename="../src/network/socket/qlocalserver_unix.cpp" line="+201"/>
+ <location filename="../src/network/socket/qlocalserver.cpp" line="+226"/>
+ <location filename="../src/network/socket/qlocalserver_unix.cpp" line="+231"/>
<source>%1: Name error</source>
<translation type="unfinished"></translation>
</message>
@@ -2705,7 +2715,7 @@ All other platforms</comment>
</message>
<message>
<location line="+5"/>
- <location filename="../src/network/socket/qlocalserver_win.cpp" line="+127"/>
+ <location filename="../src/network/socket/qlocalserver_win.cpp" line="+158"/>
<source>%1: Unknown error %2</source>
<translation type="unfinished"></translation>
</message>
@@ -2713,8 +2723,8 @@ All other platforms</comment>
<context>
<name>QLocalSocket</name>
<message>
- <location filename="../src/network/socket/qlocalsocket_tcp.cpp" line="+102"/>
- <location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+104"/>
+ <location filename="../src/network/socket/qlocalsocket_tcp.cpp" line="+132"/>
+ <location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+134"/>
<source>%1: Connection refused</source>
<translation type="unfinished"></translation>
</message>
@@ -2727,7 +2737,7 @@ All other platforms</comment>
<message>
<location line="+3"/>
<location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+3"/>
- <location filename="../src/network/socket/qlocalsocket_win.cpp" line="+50"/>
+ <location filename="../src/network/socket/qlocalsocket_win.cpp" line="+80"/>
<location line="+43"/>
<source>%1: Invalid name</source>
<translation type="unfinished"></translation>
@@ -2784,7 +2794,7 @@ All other platforms</comment>
<context>
<name>QMYSQLDriver</name>
<message>
- <location filename="../src/sql/drivers/mysql/qsql_mysql.cpp" line="+1200"/>
+ <location filename="../src/sql/drivers/mysql/qsql_mysql.cpp" line="+1231"/>
<source>Unable to open database &apos;</source>
<translation>Imposible abrir la base de datos &apos;</translation>
</message>
@@ -2794,7 +2804,7 @@ All other platforms</comment>
<translation>No es posible establecer una conexión</translation>
</message>
<message>
- <location line="+123"/>
+ <location line="+127"/>
<source>Unable to begin transaction</source>
<translation>No es posible iniciar la transacción</translation>
</message>
@@ -2812,7 +2822,7 @@ All other platforms</comment>
<context>
<name>QMYSQLResult</name>
<message>
- <location line="-917"/>
+ <location line="-922"/>
<source>Unable to fetch data</source>
<translation>No es posible obtener los datos</translation>
</message>
@@ -2827,7 +2837,7 @@ All other platforms</comment>
<translation>No es posible almacenar el resultado</translation>
</message>
<message>
- <location line="+189"/>
+ <location line="+190"/>
<location line="+8"/>
<source>Unable to prepare statement</source>
<translation>No es posible preparar la instrucción</translation>
@@ -2872,7 +2882,7 @@ All other platforms</comment>
<context>
<name>QMdiArea</name>
<message>
- <location filename="../src/gui/widgets/qmdiarea.cpp" line="+260"/>
+ <location filename="../src/gui/widgets/qmdiarea.cpp" line="+290"/>
<source>(Untitled)</source>
<translation type="unfinished"></translation>
</message>
@@ -2880,7 +2890,7 @@ All other platforms</comment>
<context>
<name>QMdiSubWindow</name>
<message>
- <location filename="../src/gui/widgets/qmdisubwindow.cpp" line="+250"/>
+ <location filename="../src/gui/widgets/qmdisubwindow.cpp" line="+280"/>
<source>%1 - [%2]</source>
<translation>%1 - [%2]</translation>
</message>
@@ -2973,7 +2983,7 @@ All other platforms</comment>
<context>
<name>QMenu</name>
<message>
- <location filename="../src/plugins/accessible/widgets/qaccessiblemenu.cpp" line="+127"/>
+ <location filename="../src/plugins/accessible/widgets/qaccessiblemenu.cpp" line="+157"/>
<location line="+225"/>
<source>Close</source>
<translation>Cerrar</translation>
@@ -3046,7 +3056,7 @@ All other platforms</comment>
<context>
<name>QMessageBox</name>
<message>
- <location filename="../src/gui/dialogs/qmessagebox.cpp" line="-1105"/>
+ <location filename="../src/gui/dialogs/qmessagebox.cpp" line="-1111"/>
<source>Help</source>
<translation>Ayuda</translation>
</message>
@@ -3059,21 +3069,20 @@ All other platforms</comment>
<translation>Aceptar</translation>
</message>
<message>
- <location line="+503"/>
+ <location line="+509"/>
<source>About Qt</source>
<translation>Acerca de Qt</translation>
</message>
<message>
- <location line="-15"/>
<source>&lt;p&gt;This program uses Qt version %1.&lt;/p&gt;</source>
- <translation>&lt;p&gt;Este programa utiliza la versión %1 de Qt.&lt;/p&gt;</translation>
+ <translation type="obsolete">&lt;p&gt;Este programa utiliza la versión %1 de Qt.&lt;/p&gt;</translation>
</message>
<message>
<source>&lt;h3&gt;About Qt&lt;/h3&gt;%1&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 Qtopia Core.&lt;/p&gt;&lt;p&gt;Qt is a Trolltech product. See &lt;a href=&quot;http://qtsoftware.com/qt/&quot;&gt;qtsoftware.com/qt/&lt;/a&gt; for more information.&lt;/p&gt;</source>
<translation type="obsolete">&lt;h3&gt;Acerca de Qt&lt;/h3&gt;%1&lt;p&gt;Qt es un toolkit en C++ para desarrollo de aplicaciones multiplataforma.&lt;/p&gt;&lt;p&gt;Qt proporciona portabilidad del código entre MS&amp;nbsp;Windows, Mac&amp;nbsp;OS&amp;nbsp;X, Linux y todas las variantes comerciales de Unix importantes. Qt también está disponible para sistemas empotrados bajo el nombre Qtopia Core.&lt;/p&gt;&lt;p&gt;Qt es un producto de Trolltech. Visite &lt;a href=&quot;http://qtsoftware.com/qt/&quot;&gt;qtsoftware.com/qt/&lt;/a&gt; para obtener más información.&lt;/p&gt;</translation>
</message>
<message>
- <location line="-1584"/>
+ <location line="-1605"/>
<source>Show Details...</source>
<translation>Mostrar los detalles...</translation>
</message>
@@ -3084,19 +3093,18 @@ All other platforms</comment>
</message>
<message>
<location line="+1570"/>
- <source>&lt;h3&gt;About Qt&lt;/h3&gt;%1&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 a Nokia product. See &lt;a href=&quot;http://qtsoftware.com/qt/&quot;&gt;qtsoftware.com/qt/&lt;/a&gt; for more information.&lt;/p&gt;</source>
+ <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://www.qtsoftware.com/products/licensing&quot;&gt;www.qtsoftware.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://www.qtsoftware.com/qt/&quot;&gt;www.qtsoftware.com/qt&lt;/a&gt; for more information.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+15"/>
<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://qtsoftware.com/company/model/&quot;&gt;qtsoftware.com/company/model/&lt;/a&gt; for an overview of Qt licensing.&lt;/p&gt;</source>
- <translation>&lt;p&gt;Este programa utiliza Qt Open Source Edition versión %1.&lt;/p&gt;&lt;p&gt;Qt Open Source Edition está dirigida al desarrollo de aplicaciones libres. Para desarrollar aplicaciones privativas (de código cerrado) necesita una licencia comercial de Qt.&lt;/p&gt;&lt;p&gt;Visite &lt;a href=&quot;http://qtsoftware.com/company/model/&quot;&gt;qtsoftware.com/company/model/&lt;/a&gt; para obtener una visión global de las licencias de Qt.&lt;/p&gt;</translation>
+ <translation type="obsolete">&lt;p&gt;Este programa utiliza Qt Open Source Edition versión %1.&lt;/p&gt;&lt;p&gt;Qt Open Source Edition está dirigida al desarrollo de aplicaciones libres. Para desarrollar aplicaciones privativas (de código cerrado) necesita una licencia comercial de Qt.&lt;/p&gt;&lt;p&gt;Visite &lt;a href=&quot;http://qtsoftware.com/company/model/&quot;&gt;qtsoftware.com/company/model/&lt;/a&gt; para obtener una visión global de las licencias de Qt.&lt;/p&gt;</translation>
</message>
</context>
<context>
<name>QMultiInputContext</name>
<message>
- <location filename="../src/plugins/inputmethods/imsw-multi/qmultiinputcontext.cpp" line="+58"/>
+ <location filename="../src/plugins/inputmethods/imsw-multi/qmultiinputcontext.cpp" line="+88"/>
<source>Select IM</source>
<translation>Seleccionar IM</translation>
</message>
@@ -3104,7 +3112,7 @@ All other platforms</comment>
<context>
<name>QMultiInputContextPlugin</name>
<message>
- <location filename="../src/plugins/inputmethods/imsw-multi/qmultiinputcontextplugin.cpp" line="+65"/>
+ <location filename="../src/plugins/inputmethods/imsw-multi/qmultiinputcontextplugin.cpp" line="+95"/>
<source>Multiple input method switcher</source>
<translation>Seleccionador de varios métodos de entrada</translation>
</message>
@@ -3117,7 +3125,7 @@ All other platforms</comment>
<context>
<name>QNativeSocketEngine</name>
<message>
- <location filename="../src/network/socket/qnativesocketengine.cpp" line="+176"/>
+ <location filename="../src/network/socket/qnativesocketengine.cpp" line="+206"/>
<source>The remote host closed the connection</source>
<translation>El equipo remoto ha cerrado la conexión</translation>
</message>
@@ -3250,7 +3258,7 @@ All other platforms</comment>
<context>
<name>QNetworkAccessCacheBackend</name>
<message>
- <location filename="../src/network/access/qnetworkaccesscachebackend.cpp" line="+35"/>
+ <location filename="../src/network/access/qnetworkaccesscachebackend.cpp" line="+65"/>
<source>Error opening %1</source>
<translation type="unfinished"></translation>
</message>
@@ -3258,7 +3266,7 @@ All other platforms</comment>
<context>
<name>QNetworkAccessFileBackend</name>
<message>
- <location filename="../src/network/access/qnetworkaccessfilebackend.cpp" line="+69"/>
+ <location filename="../src/network/access/qnetworkaccessfilebackend.cpp" line="+99"/>
<source>Request for opening non-local file %1</source>
<translation type="unfinished"></translation>
</message>
@@ -3286,7 +3294,7 @@ All other platforms</comment>
<context>
<name>QNetworkAccessFtpBackend</name>
<message>
- <location filename="../src/network/access/qnetworkaccessftpbackend.cpp" line="+135"/>
+ <location filename="../src/network/access/qnetworkaccessftpbackend.cpp" line="+165"/>
<source>No suitable proxy found</source>
<translation type="unfinished"></translation>
</message>
@@ -3296,7 +3304,7 @@ All other platforms</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+131"/>
+ <location line="+130"/>
<source>Logging in to %1 failed: authentication required</source>
<translation type="unfinished"></translation>
</message>
@@ -3314,7 +3322,7 @@ All other platforms</comment>
<context>
<name>QNetworkAccessHttpBackend</name>
<message>
- <location filename="../src/network/access/qnetworkaccesshttpbackend.cpp" line="+565"/>
+ <location filename="../src/network/access/qnetworkaccesshttpbackend.cpp" line="+597"/>
<source>No suitable proxy found</source>
<translation type="unfinished"></translation>
</message>
@@ -3327,7 +3335,7 @@ All other platforms</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/network/access/qnetworkreplyimpl.cpp" line="+37"/>
+ <location filename="../src/network/access/qnetworkreplyimpl.cpp" line="+68"/>
<source>Protocol &quot;%1&quot; is unknown</source>
<translation type="unfinished"></translation>
</message>
@@ -3335,7 +3343,7 @@ All other platforms</comment>
<context>
<name>QNetworkReplyImpl</name>
<message>
- <location line="+422"/>
+ <location line="+432"/>
<location line="+22"/>
<source>Operation canceled</source>
<translation type="unfinished"></translation>
@@ -3344,7 +3352,7 @@ All other platforms</comment>
<context>
<name>QOCIDriver</name>
<message>
- <location filename="../src/sql/drivers/oci/qsql_oci.cpp" line="+2027"/>
+ <location filename="../src/sql/drivers/oci/qsql_oci.cpp" line="+2069"/>
<source>Unable to logon</source>
<translation>No es posible abrir sesión</translation>
</message>
@@ -3373,7 +3381,7 @@ All other platforms</comment>
<context>
<name>QOCIResult</name>
<message>
- <location line="-976"/>
+ <location line="-963"/>
<location line="+161"/>
<location line="+15"/>
<source>Unable to bind column for batch execute</source>
@@ -3400,18 +3408,16 @@ All other platforms</comment>
<translation>No es posible preparar la instrucción</translation>
</message>
<message>
- <location line="+29"/>
- <location line="+37"/>
+ <location line="+36"/>
<source>Unable to bind value</source>
<translation>No es posible ligar el valor</translation>
</message>
<message>
- <location line="-20"/>
<source>Unable to execute select statement</source>
- <translation>No es posible ejecutar la instrucción select</translation>
+ <translation type="obsolete">No es posible ejecutar la instrucción select</translation>
</message>
<message>
- <location line="+32"/>
+ <location line="+19"/>
<source>Unable to execute statement</source>
<translation>No es posible ejecutar la instrucción</translation>
</message>
@@ -3419,7 +3425,7 @@ All other platforms</comment>
<context>
<name>QODBCDriver</name>
<message>
- <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="+1657"/>
+ <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="+1785"/>
<source>Unable to connect</source>
<translation>No es posible establecer una conexión</translation>
</message>
@@ -3429,7 +3435,7 @@ All other platforms</comment>
<translation>No es posible conectarse - El controlador no ofrece todas las funciones necesarias</translation>
</message>
<message>
- <location line="+234"/>
+ <location line="+242"/>
<source>Unable to disable autocommit</source>
<translation>No es posible inhabilitar el envío automático</translation>
</message>
@@ -3452,19 +3458,19 @@ All other platforms</comment>
<context>
<name>QODBCResult</name>
<message>
- <location line="-1204"/>
+ <location line="-1218"/>
<location line="+349"/>
<source>QODBCResult::reset: Unable to set &apos;SQL_CURSOR_STATIC&apos; as statement attribute. Please check your ODBC driver configuration</source>
<translation>QODBCResult::reset: No es posible establecer «SQL_CURSOR_STATIC» como atributo de instrucción. Compruebe la configuración de su controlador ODBC</translation>
</message>
<message>
<location line="-332"/>
- <location line="+625"/>
+ <location line="+626"/>
<source>Unable to execute statement</source>
<translation>No es posible ejecutar la instrucción</translation>
</message>
<message>
- <location line="-554"/>
+ <location line="-555"/>
<source>Unable to fetch next</source>
<translation>No es posible obtener el siguiente</translation>
</message>
@@ -3474,19 +3480,19 @@ All other platforms</comment>
<translation>No es posible preparar la instrucción</translation>
</message>
<message>
- <location line="+267"/>
+ <location line="+268"/>
<source>Unable to bind variable</source>
<translation>No es posible ligar la variable</translation>
</message>
<message>
<location filename="../src/sql/drivers/db2/qsql_db2.cpp" line="+194"/>
- <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="-474"/>
- <location line="+577"/>
+ <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="-475"/>
+ <location line="+578"/>
<source>Unable to fetch last</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="-671"/>
+ <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="-672"/>
<source>Unable to fetch</source>
<translation type="unfinished"></translation>
</message>
@@ -3504,12 +3510,12 @@ All other platforms</comment>
<context>
<name>QObject</name>
<message>
- <location filename="../src/gui/util/qdesktopservices_mac.cpp" line="+134"/>
+ <location filename="../src/gui/util/qdesktopservices_mac.cpp" line="+165"/>
<source>Home</source>
<translation>Inicio</translation>
</message>
<message>
- <location filename="../src/network/access/qnetworkaccessdatabackend.cpp" line="+44"/>
+ <location filename="../src/network/access/qnetworkaccessdatabackend.cpp" line="+74"/>
<source>Operation not supported on %1</source>
<translation type="unfinished"></translation>
</message>
@@ -3519,7 +3525,7 @@ All other platforms</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/network/access/qnetworkaccessdebugpipebackend.cpp" line="+145"/>
+ <location filename="../src/network/access/qnetworkaccessdebugpipebackend.cpp" line="+175"/>
<source>Write error writing to %1: %2</source>
<translation type="unfinished"></translation>
</message>
@@ -3544,7 +3550,7 @@ All other platforms</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/network/kernel/qhostinfo.cpp" line="+147"/>
+ <location filename="../src/network/kernel/qhostinfo.cpp" line="+177"/>
<location line="+57"/>
<source>No host name given</source>
<translation type="unfinished"></translation>
@@ -3553,7 +3559,7 @@ All other platforms</comment>
<context>
<name>QPPDOptionsModel</name>
<message>
- <location filename="../src/gui/dialogs/qprintdialog_unix.cpp" line="+1165"/>
+ <location filename="../src/gui/dialogs/qprintdialog_unix.cpp" line="+1195"/>
<source>Name</source>
<translation type="unfinished">Nombre</translation>
</message>
@@ -3566,7 +3572,7 @@ All other platforms</comment>
<context>
<name>QPSQLDriver</name>
<message>
- <location filename="../src/sql/drivers/psql/qsql_psql.cpp" line="+732"/>
+ <location filename="../src/sql/drivers/psql/qsql_psql.cpp" line="+763"/>
<source>Unable to connect</source>
<translation>No es posible establecer conexión</translation>
</message>
@@ -3586,7 +3592,7 @@ All other platforms</comment>
<translation>No fue posible anular la transacción</translation>
</message>
<message>
- <location line="+336"/>
+ <location line="+358"/>
<source>Unable to subscribe</source>
<translation type="unfinished"></translation>
</message>
@@ -3599,12 +3605,12 @@ All other platforms</comment>
<context>
<name>QPSQLResult</name>
<message>
- <location line="-1035"/>
+ <location line="-1058"/>
<source>Unable to create query</source>
<translation>No es posible crear la consulta</translation>
</message>
<message>
- <location line="+373"/>
+ <location line="+374"/>
<source>Unable to prepare statement</source>
<translation type="unfinished"></translation>
</message>
@@ -3612,7 +3618,7 @@ All other platforms</comment>
<context>
<name>QPageSetupWidget</name>
<message>
- <location filename="../src/gui/dialogs/qpagesetupdialog_unix.cpp" line="+274"/>
+ <location filename="../src/gui/dialogs/qpagesetupdialog_unix.cpp" line="+304"/>
<source>Centimeters (cm)</source>
<translation type="unfinished"></translation>
</message>
@@ -3728,7 +3734,7 @@ All other platforms</comment>
<context>
<name>QPrintDialog</name>
<message>
- <location filename="../src/gui/painting/qprinterinfo_unix.cpp" line="+68"/>
+ <location filename="../src/gui/painting/qprinterinfo_unix.cpp" line="+98"/>
<source>locally connected</source>
<translation>conectado localmente</translation>
</message>
@@ -3749,7 +3755,7 @@ All other platforms</comment>
<translation type="obsolete">Imprimir en color si es posible</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qprintdialog_qws.cpp" line="+345"/>
+ <location filename="../src/gui/dialogs/qprintdialog_qws.cpp" line="+375"/>
<source>Print all</source>
<translation>Imprimir todo</translation>
</message>
@@ -3934,7 +3940,7 @@ All other platforms</comment>
<translation>Sobre US Common #10 (105 x 241 mm)</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qprintdialog_win.cpp" line="+238"/>
+ <location filename="../src/gui/dialogs/qprintdialog_win.cpp" line="+268"/>
<source>OK</source>
<translation>Aceptar</translation>
</message>
@@ -3955,7 +3961,7 @@ All other platforms</comment>
<translation type="obsolete">Fuente del papel:</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qabstractprintdialog.cpp" line="+80"/>
+ <location filename="../src/gui/dialogs/qabstractprintdialog.cpp" line="+110"/>
<location line="+13"/>
<location filename="../src/gui/dialogs/qprintdialog_win.cpp" line="-2"/>
<source>Print</source>
@@ -4257,13 +4263,13 @@ Elija un nombre de fichero diferente.</translation>
<context>
<name>QPrintPreviewDialog</name>
<message>
- <location filename="../src/gui/dialogs/qabstractpagesetupdialog.cpp" line="+38"/>
+ <location filename="../src/gui/dialogs/qabstractpagesetupdialog.cpp" line="+68"/>
<location line="+12"/>
<source>Page Setup</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qprintpreviewdialog.cpp" line="+222"/>
+ <location filename="../src/gui/dialogs/qprintpreviewdialog.cpp" line="+252"/>
<source>%1%</source>
<translation type="unfinished"></translation>
</message>
@@ -4545,8 +4551,8 @@ Elija un nombre de fichero diferente.</translation>
<context>
<name>QProcess</name>
<message>
- <location filename="../src/corelib/io/qprocess_unix.cpp" line="+445"/>
- <location filename="../src/corelib/io/qprocess_win.cpp" line="+117"/>
+ <location filename="../src/corelib/io/qprocess_unix.cpp" line="+475"/>
+ <location filename="../src/corelib/io/qprocess_win.cpp" line="+147"/>
<source>Could not open input redirection for reading</source>
<translation type="unfinished"></translation>
</message>
@@ -4575,7 +4581,7 @@ Elija un nombre de fichero diferente.</translation>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/corelib/io/qprocess.cpp" line="+503"/>
+ <location filename="../src/corelib/io/qprocess.cpp" line="+533"/>
<location line="+52"/>
<location filename="../src/corelib/io/qprocess_win.cpp" line="-211"/>
<location line="+50"/>
@@ -4595,6 +4601,11 @@ Elija un nombre de fichero diferente.</translation>
<translation type="unfinished"></translation>
</message>
<message>
+ <location line="+912"/>
+ <source>No program defined</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<location filename="../src/corelib/io/qprocess_win.cpp" line="-341"/>
<source>Process failed to start</source>
<translation type="unfinished"></translation>
@@ -4603,7 +4614,7 @@ Elija un nombre de fichero diferente.</translation>
<context>
<name>QProgressDialog</name>
<message>
- <location filename="../src/gui/dialogs/qprogressdialog.cpp" line="+152"/>
+ <location filename="../src/gui/dialogs/qprogressdialog.cpp" line="+182"/>
<source>Cancel</source>
<translation>Cancelar</translation>
</message>
@@ -4627,7 +4638,7 @@ Elija un nombre de fichero diferente.</translation>
<context>
<name>QRegExp</name>
<message>
- <location filename="../src/corelib/tools/qregexp.cpp" line="+34"/>
+ <location filename="../src/corelib/tools/qregexp.cpp" line="+64"/>
<source>no error occurred</source>
<translation>no se ha producido ningún error</translation>
</message>
@@ -4675,7 +4686,7 @@ Elija un nombre de fichero diferente.</translation>
<context>
<name>QSQLite2Driver</name>
<message>
- <location filename="../src/sql/drivers/sqlite2/qsql_sqlite2.cpp" line="+353"/>
+ <location filename="../src/sql/drivers/sqlite2/qsql_sqlite2.cpp" line="+396"/>
<source>Error to open database</source>
<translation>Error al abrir la base de datos</translation>
</message>
@@ -4698,12 +4709,12 @@ Elija un nombre de fichero diferente.</translation>
<context>
<name>QSQLite2Result</name>
<message>
- <location line="-310"/>
+ <location line="-323"/>
<source>Unable to fetch results</source>
<translation>No es posible obtener los resultados</translation>
</message>
<message>
- <location line="+139"/>
+ <location line="+147"/>
<source>Unable to execute statement</source>
<translation>No es posible ejecutar la instrucción</translation>
</message>
@@ -4711,7 +4722,7 @@ Elija un nombre de fichero diferente.</translation>
<context>
<name>QSQLiteDriver</name>
<message>
- <location filename="../src/sql/drivers/sqlite/qsql_sqlite.cpp" line="+498"/>
+ <location filename="../src/sql/drivers/sqlite/qsql_sqlite.cpp" line="+528"/>
<source>Error opening database</source>
<translation>Error al abrir la base de datos</translation>
</message>
@@ -4778,12 +4789,12 @@ Elija un nombre de fichero diferente.</translation>
<context>
<name>QScrollBar</name>
<message>
- <location filename="../src/gui/widgets/qscrollbar.cpp" line="+419"/>
+ <location filename="../src/gui/widgets/qscrollbar.cpp" line="+448"/>
<source>Scroll here</source>
<translation>Desplazar hasta aquí</translation>
</message>
<message>
- <location line="+3"/>
+ <location line="+2"/>
<source>Left edge</source>
<translation>Borde izquierdo</translation>
</message>
@@ -4793,7 +4804,7 @@ Elija un nombre de fichero diferente.</translation>
<translation>Parte superior</translation>
</message>
<message>
- <location line="+2"/>
+ <location line="+1"/>
<source>Right edge</source>
<translation>Borde derecho</translation>
</message>
@@ -4803,7 +4814,7 @@ Elija un nombre de fichero diferente.</translation>
<translation>Parte inferior</translation>
</message>
<message>
- <location line="+3"/>
+ <location line="+2"/>
<source>Page left</source>
<translation>Una página a la izquierda</translation>
</message>
@@ -4814,7 +4825,7 @@ Elija un nombre de fichero diferente.</translation>
<translation>Una página hacia arriba</translation>
</message>
<message>
- <location line="+2"/>
+ <location line="+1"/>
<source>Page right</source>
<translation>Una página a la derecha</translation>
</message>
@@ -4825,7 +4836,7 @@ Elija un nombre de fichero diferente.</translation>
<translation>Una página hacia abajo</translation>
</message>
<message>
- <location line="+3"/>
+ <location line="+2"/>
<source>Scroll left</source>
<translation>Desplazar hacia la izquierda</translation>
</message>
@@ -4835,7 +4846,7 @@ Elija un nombre de fichero diferente.</translation>
<translation>Desplazar hacia arriba</translation>
</message>
<message>
- <location line="+2"/>
+ <location line="+1"/>
<source>Scroll right</source>
<translation>Desplazar hacia la derecha</translation>
</message>
@@ -4863,7 +4874,7 @@ Elija un nombre de fichero diferente.</translation>
<context>
<name>QSharedMemory</name>
<message>
- <location filename="../src/corelib/kernel/qsharedmemory.cpp" line="+177"/>
+ <location filename="../src/corelib/kernel/qsharedmemory.cpp" line="+207"/>
<source>%1: unable to set key on lock</source>
<translation type="unfinished"></translation>
</message>
@@ -4874,7 +4885,7 @@ Elija un nombre de fichero diferente.</translation>
</message>
<message>
<location line="+168"/>
- <location filename="../src/corelib/kernel/qsharedmemory_p.h" line="+118"/>
+ <location filename="../src/corelib/kernel/qsharedmemory_p.h" line="+148"/>
<source>%1: unable to lock</source>
<translation type="unfinished"></translation>
</message>
@@ -4884,8 +4895,8 @@ Elija un nombre de fichero diferente.</translation>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/corelib/kernel/qsharedmemory_unix.cpp" line="+48"/>
- <location filename="../src/corelib/kernel/qsharedmemory_win.cpp" line="+57"/>
+ <location filename="../src/corelib/kernel/qsharedmemory_unix.cpp" line="+78"/>
+ <location filename="../src/corelib/kernel/qsharedmemory_win.cpp" line="+87"/>
<source>%1: permission denied</source>
<translation type="unfinished"></translation>
</message>
@@ -4963,7 +4974,7 @@ Elija un nombre de fichero diferente.</translation>
<context>
<name>QShortcut</name>
<message>
- <location filename="../src/gui/kernel/qkeysequence.cpp" line="+343"/>
+ <location filename="../src/gui/kernel/qkeysequence.cpp" line="+373"/>
<source>Space</source>
<translation>Espacio</translation>
</message>
@@ -5548,7 +5559,7 @@ Elija un nombre de fichero diferente.</translation>
<context>
<name>QSql</name>
<message>
- <location filename="../src/qt3support/sql/q3sqlmanager_p.cpp" line="+860"/>
+ <location filename="../src/qt3support/sql/q3sqlmanager_p.cpp" line="+890"/>
<source>Delete</source>
<translation>Borrar</translation>
</message>
@@ -5605,7 +5616,7 @@ Elija un nombre de fichero diferente.</translation>
<context>
<name>QSslSocket</name>
<message>
- <location filename="../src/network/ssl/qsslsocket_openssl.cpp" line="+539"/>
+ <location filename="../src/network/ssl/qsslsocket_openssl.cpp" line="+569"/>
<source>Unable to write data: %1</source>
<translation>No es posible escribir los datos: %1</translation>
</message>
@@ -5668,7 +5679,7 @@ Elija un nombre de fichero diferente.</translation>
<name>QSystemSemaphore</name>
<message>
<location filename="../src/corelib/kernel/qsystemsemaphore_unix.cpp" line="-41"/>
- <location filename="../src/corelib/kernel/qsystemsemaphore_win.cpp" line="+36"/>
+ <location filename="../src/corelib/kernel/qsystemsemaphore_win.cpp" line="+66"/>
<source>%1: out of resources</source>
<translation type="unfinished"></translation>
</message>
@@ -5698,7 +5709,7 @@ Elija un nombre de fichero diferente.</translation>
<context>
<name>QTDSDriver</name>
<message>
- <location filename="../src/sql/drivers/tds/qsql_tds.cpp" line="+552"/>
+ <location filename="../src/sql/drivers/tds/qsql_tds.cpp" line="+584"/>
<source>Unable to open connection</source>
<translation>No es posible abrir la conexión</translation>
</message>
@@ -5728,7 +5739,7 @@ Elija un nombre de fichero diferente.</translation>
<translation type="obsolete">Operación socket no admitida</translation>
</message>
<message>
- <location filename="../src/network/socket/qtcpserver.cpp" line="+252"/>
+ <location filename="../src/network/socket/qtcpserver.cpp" line="+282"/>
<source>Operation on socket is not supported</source>
<translation type="unfinished"></translation>
</message>
@@ -5736,7 +5747,7 @@ Elija un nombre de fichero diferente.</translation>
<context>
<name>QTextControl</name>
<message>
- <location filename="../src/gui/text/qtextcontrol.cpp" line="+1942"/>
+ <location filename="../src/gui/text/qtextcontrol.cpp" line="+1973"/>
<source>&amp;Undo</source>
<translation>&amp;Deshacer</translation>
</message>
@@ -5794,7 +5805,7 @@ Elija un nombre de fichero diferente.</translation>
<context>
<name>QUdpSocket</name>
<message>
- <location filename="../src/network/socket/qudpsocket.cpp" line="+139"/>
+ <location filename="../src/network/socket/qudpsocket.cpp" line="+169"/>
<source>This platform does not support IPv6</source>
<translation>La plataforma no contempla IPv6</translation>
</message>
@@ -5802,7 +5813,7 @@ Elija un nombre de fichero diferente.</translation>
<context>
<name>QUndoGroup</name>
<message>
- <location filename="../src/gui/util/qundogroup.cpp" line="+356"/>
+ <location filename="../src/gui/util/qundogroup.cpp" line="+386"/>
<source>Undo</source>
<translation>Deshacer</translation>
</message>
@@ -5815,7 +5826,7 @@ Elija un nombre de fichero diferente.</translation>
<context>
<name>QUndoModel</name>
<message>
- <location filename="../src/gui/util/qundoview.cpp" line="+71"/>
+ <location filename="../src/gui/util/qundoview.cpp" line="+101"/>
<source>&lt;empty&gt;</source>
<translation>&lt;vacío&gt;</translation>
</message>
@@ -5823,7 +5834,7 @@ Elija un nombre de fichero diferente.</translation>
<context>
<name>QUndoStack</name>
<message>
- <location filename="../src/gui/util/qundostack.cpp" line="+804"/>
+ <location filename="../src/gui/util/qundostack.cpp" line="+834"/>
<source>Undo</source>
<translation>Deshacer</translation>
</message>
@@ -5894,7 +5905,7 @@ Elija un nombre de fichero diferente.</translation>
<context>
<name>QWebFrame</name>
<message>
- <location filename="../src/3rdparty/webkit/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp" line="+686"/>
+ <location filename="../src/3rdparty/webkit/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp" line="+692"/>
<source>Request cancelled</source>
<translation type="unfinished"></translation>
</message>
@@ -6305,7 +6316,7 @@ Elija un nombre de fichero diferente.</translation>
</translation>
</message>
<message>
- <location filename="../src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp" line="+1342"/>
+ <location filename="../src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp" line="+1322"/>
<source>JavaScript Alert - %1</source>
<translation type="unfinished"></translation>
</message>
@@ -6381,6 +6392,11 @@ Elija un nombre de fichero diferente.</translation>
</message>
<message>
<location line="+3"/>
+ <source>Select all</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
<source>Select to the next character</source>
<translation type="unfinished"></translation>
</message>
@@ -6449,11 +6465,21 @@ Elija un nombre de fichero diferente.</translation>
<source>Delete to the end of the word</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <location line="+33"/>
+ <source>Insert a new paragraph</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Insert a new line</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>QWhatsThisAction</name>
<message>
- <location filename="../src/gui/kernel/qwhatsthis.cpp" line="+492"/>
+ <location filename="../src/gui/kernel/qwhatsthis.cpp" line="+522"/>
<source>What&apos;s This?</source>
<translation>¿Qué es esto?</translation>
</message>
@@ -6461,7 +6487,7 @@ Elija un nombre de fichero diferente.</translation>
<context>
<name>QWidget</name>
<message>
- <location filename="../src/gui/kernel/qwidget.cpp" line="+5290"/>
+ <location filename="../src/gui/kernel/qwidget.cpp" line="+5326"/>
<source>*</source>
<translation>*</translation>
</message>
@@ -6469,7 +6495,7 @@ Elija un nombre de fichero diferente.</translation>
<context>
<name>QWizard</name>
<message>
- <location filename="../src/gui/dialogs/qwizard.cpp" line="+605"/>
+ <location filename="../src/gui/dialogs/qwizard.cpp" line="+637"/>
<source>Go Back</source>
<translation>Precedente</translation>
</message>
@@ -6531,7 +6557,7 @@ Elija un nombre de fichero diferente.</translation>
<context>
<name>QWorkspace</name>
<message>
- <location filename="../src/gui/widgets/qworkspace.cpp" line="+1064"/>
+ <location filename="../src/gui/widgets/qworkspace.cpp" line="+1094"/>
<source>&amp;Restore</source>
<translation>&amp;Restaurar</translation>
</message>
@@ -6601,7 +6627,7 @@ Elija un nombre de fichero diferente.</translation>
<context>
<name>QXml</name>
<message>
- <location filename="../src/xml/sax/qxml.cpp" line="+28"/>
+ <location filename="../src/xml/sax/qxml.cpp" line="+58"/>
<source>no error occurred</source>
<translation>no se ha producido ningún error</translation>
</message>
@@ -6719,8 +6745,8 @@ Elija un nombre de fichero diferente.</translation>
<context>
<name>QXmlStream</name>
<message>
- <location filename="../src/corelib/xml/qxmlstream.cpp" line="+562"/>
- <location filename="../src/corelib/xml/qxmlstream_p.h" line="+1739"/>
+ <location filename="../src/corelib/xml/qxmlstream.cpp" line="+592"/>
+ <location filename="../src/corelib/xml/qxmlstream_p.h" line="+1769"/>
<source>Extra content at end of document.</source>
<translation>Contenido extra al final del documento.</translation>
</message>
@@ -6908,7 +6934,7 @@ Elija un nombre de fichero diferente.</translation>
<context>
<name>QtXmlPatterns</name>
<message>
- <location filename="../src/xmlpatterns/acceltree/qacceltreebuilder.cpp" line="+175"/>
+ <location filename="../src/xmlpatterns/acceltree/qacceltreebuilder.cpp" line="+205"/>
<source>An %1-attribute with value %2 has already been declared.</source>
<translation type="unfinished"></translation>
</message>
@@ -6918,12 +6944,12 @@ Elija un nombre de fichero diferente.</translation>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/api/qiodevicedelegate.cpp" line="+54"/>
+ <location filename="../src/xmlpatterns/api/qiodevicedelegate.cpp" line="+84"/>
<source>Network timeout.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/api/qxmlserializer.cpp" line="+290"/>
+ <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 type="unfinished"></translation>
</message>
@@ -6933,7 +6959,7 @@ Elija un nombre de fichero diferente.</translation>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qabstractdatetime.cpp" line="+50"/>
+ <location filename="../src/xmlpatterns/data/qabstractdatetime.cpp" line="+80"/>
<source>Year %1 is invalid because it begins with %2.</source>
<translation type="unfinished"></translation>
</message>
@@ -6973,7 +6999,7 @@ Elija un nombre de fichero diferente.</translation>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qabstractduration.cpp" line="+69"/>
+ <location filename="../src/xmlpatterns/data/qabstractduration.cpp" line="+99"/>
<location line="+15"/>
<source>At least one component must be present.</source>
<translation type="unfinished"></translation>
@@ -6984,7 +7010,7 @@ Elija un nombre de fichero diferente.</translation>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qabstractfloatmathematician.cpp" line="+34"/>
+ <location filename="../src/xmlpatterns/data/qabstractfloatmathematician.cpp" line="+64"/>
<source>No operand in an integer division, %1, can be %2.</source>
<translation type="unfinished"></translation>
</message>
@@ -6999,17 +7025,17 @@ Elija un nombre de fichero diferente.</translation>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qanyuri_p.h" line="+102"/>
+ <location filename="../src/xmlpatterns/data/qanyuri_p.h" line="+132"/>
<source>%1 is not a valid value of type %2.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qatomiccasters_p.h" line="+193"/>
+ <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 type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qatomicmathematicians.cpp" line="+35"/>
+ <location filename="../src/xmlpatterns/data/qatomicmathematicians.cpp" line="+65"/>
<source>Integer division (%1) by zero (%2) is undefined.</source>
<translation type="unfinished"></translation>
</message>
@@ -7040,17 +7066,17 @@ Elija un nombre de fichero diferente.</translation>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qatomicvalue.cpp" line="+49"/>
+ <location filename="../src/xmlpatterns/data/qatomicvalue.cpp" line="+79"/>
<source>A value of type %1 cannot have an Effective Boolean Value.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qboolean.cpp" line="+48"/>
+ <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 type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qderivedinteger_p.h" line="+372"/>
+ <location filename="../src/xmlpatterns/data/qderivedinteger_p.h" line="+402"/>
<source>Value %1 of type %2 exceeds maximum (%3).</source>
<translation type="unfinished"></translation>
</message>
@@ -7060,7 +7086,7 @@ Elija un nombre de fichero diferente.</translation>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qhexbinary.cpp" line="+61"/>
+ <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 type="unfinished"></translation>
</message>
@@ -7070,7 +7096,7 @@ Elija un nombre de fichero diferente.</translation>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qarithmeticexpression.cpp" line="+177"/>
+ <location filename="../src/xmlpatterns/expr/qarithmeticexpression.cpp" line="+207"/>
<source>Operator %1 cannot be used on type %2.</source>
<translation type="unfinished"></translation>
</message>
@@ -7080,7 +7106,7 @@ Elija un nombre de fichero diferente.</translation>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qattributenamevalidator.cpp" line="+36"/>
+ <location filename="../src/xmlpatterns/expr/qattributenamevalidator.cpp" line="+66"/>
<source>The namespace URI in the name for a computed attribute cannot be %1.</source>
<translation type="unfinished"></translation>
</message>
@@ -7090,7 +7116,7 @@ Elija un nombre de fichero diferente.</translation>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qcastas.cpp" line="+58"/>
+ <location filename="../src/xmlpatterns/expr/qcastas.cpp" line="+88"/>
<source>Type error in cast, expected %1, received %2.</source>
<translation type="unfinished"></translation>
</message>
@@ -7100,7 +7126,7 @@ Elija un nombre de fichero diferente.</translation>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qcastingplatform.cpp" line="+104"/>
+ <location filename="../src/xmlpatterns/expr/qcastingplatform.cpp" line="+134"/>
<source>No casting is possible with %1 as the target type.</source>
<translation type="unfinished"></translation>
</message>
@@ -7125,7 +7151,7 @@ Elija un nombre de fichero diferente.</translation>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qcommentconstructor.cpp" line="+37"/>
+ <location filename="../src/xmlpatterns/expr/qcommentconstructor.cpp" line="+67"/>
<source>A comment cannot contain %1</source>
<translation type="unfinished"></translation>
</message>
@@ -7135,7 +7161,7 @@ Elija un nombre de fichero diferente.</translation>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qcomparisonplatform.cpp" line="+137"/>
+ <location filename="../src/xmlpatterns/expr/qcomparisonplatform.cpp" line="+167"/>
<source>No comparisons can be done involving the type %1.</source>
<translation type="unfinished"></translation>
</message>
@@ -7145,12 +7171,12 @@ Elija un nombre de fichero diferente.</translation>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qdocumentcontentvalidator.cpp" line="+56"/>
+ <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 type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qexpressionfactory.cpp" line="+139"/>
+ <location filename="../src/xmlpatterns/expr/qexpressionfactory.cpp" line="+169"/>
<source>A library module cannot be evaluated directly. It must be imported from a main module.</source>
<translation type="unfinished"></translation>
</message>
@@ -7160,7 +7186,7 @@ Elija un nombre de fichero diferente.</translation>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qgenericpredicate.cpp" line="+76"/>
+ <location filename="../src/xmlpatterns/expr/qgenericpredicate.cpp" line="+106"/>
<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 type="unfinished"></translation>
</message>
@@ -7170,7 +7196,7 @@ Elija un nombre de fichero diferente.</translation>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qncnameconstructor_p.h" line="+83"/>
+ <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 type="unfinished"></translation>
</message>
@@ -7180,33 +7206,33 @@ Elija un nombre de fichero diferente.</translation>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qpath.cpp" line="+79"/>
+ <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 type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qprocessinginstructionconstructor.cpp" line="+54"/>
+ <location filename="../src/xmlpatterns/expr/qprocessinginstructionconstructor.cpp" line="+84"/>
<source>The data of a processing instruction cannot contain the string %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qqnameconstructor.cpp" line="+52"/>
+ <location filename="../src/xmlpatterns/expr/qqnameconstructor.cpp" line="+82"/>
<source>No namespace binding exists for the prefix %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qqnameconstructor_p.h" line="+126"/>
+ <location filename="../src/xmlpatterns/expr/qqnameconstructor_p.h" line="+156"/>
<source>No namespace binding exists for the prefix %1 in %2</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+12"/>
- <location filename="../src/xmlpatterns/functions/qqnamefns.cpp" line="+39"/>
+ <location filename="../src/xmlpatterns/functions/qqnamefns.cpp" line="+69"/>
<source>%1 is an invalid %2</source>
<translation type="unfinished"></translation>
</message>
<message numerus="yes">
- <location filename="../src/xmlpatterns/functions/qabstractfunctionfactory.cpp" line="+47"/>
+ <location filename="../src/xmlpatterns/functions/qabstractfunctionfactory.cpp" line="+77"/>
<source>%1 takes at most %n argument(s). %2 is therefore invalid.</source>
<translation type="unfinished">
<numerusform></numerusform>
@@ -7222,7 +7248,7 @@ Elija un nombre de fichero diferente.</translation>
</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qaggregatefns.cpp" line="+90"/>
+ <location filename="../src/xmlpatterns/functions/qaggregatefns.cpp" line="+120"/>
<source>The first argument to %1 cannot be of type %2. It must be a numeric type, xs:yearMonthDuration or xs:dayTimeDuration.</source>
<translation type="unfinished"></translation>
</message>
@@ -7237,27 +7263,27 @@ Elija un nombre de fichero diferente.</translation>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qassemblestringfns.cpp" line="+58"/>
+ <location filename="../src/xmlpatterns/functions/qassemblestringfns.cpp" line="+88"/>
<source>%1 is not a valid XML 1.0 character.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qcomparingaggregator.cpp" line="+167"/>
+ <location filename="../src/xmlpatterns/functions/qcomparingaggregator.cpp" line="+197"/>
<source>The first argument to %1 cannot be of type %2.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qdatetimefn.cpp" line="+56"/>
+ <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 type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qerrorfn.cpp" line="+31"/>
+ <location filename="../src/xmlpatterns/functions/qerrorfn.cpp" line="+61"/>
<source>%1 was called.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qpatternmatchingfns.cpp" line="+64"/>
+ <location filename="../src/xmlpatterns/functions/qpatternmatchingfns.cpp" line="+94"/>
<source>%1 must be followed by %2 or %3, not at the end of the replacement string.</source>
<translation type="unfinished"></translation>
</message>
@@ -7272,7 +7298,7 @@ Elija un nombre de fichero diferente.</translation>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qpatternplatform.cpp" line="+62"/>
+ <location filename="../src/xmlpatterns/functions/qpatternplatform.cpp" line="+92"/>
<source>%1 matches newline characters</source>
<translation type="unfinished"></translation>
</message>
@@ -7307,17 +7333,17 @@ Elija un nombre de fichero diferente.</translation>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qsequencefns.cpp" line="+317"/>
+ <location filename="../src/xmlpatterns/functions/qsequencefns.cpp" line="+347"/>
<source>It will not be possible to retrieve %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qcontextnodechecker.cpp" line="+24"/>
+ <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 type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qsequencegeneratingfns.cpp" line="+249"/>
+ <location filename="../src/xmlpatterns/functions/qsequencegeneratingfns.cpp" line="+279"/>
<source>The default collection is undefined</source>
<translation type="unfinished"></translation>
</message>
@@ -7327,12 +7353,12 @@ Elija un nombre de fichero diferente.</translation>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qstringvaluefns.cpp" line="+222"/>
+ <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 type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qtimezonefns.cpp" line="+57"/>
+ <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 type="unfinished"></translation>
</message>
@@ -7342,17 +7368,17 @@ Elija un nombre de fichero diferente.</translation>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/janitors/qcardinalityverifier.cpp" line="+28"/>
+ <location filename="../src/xmlpatterns/janitors/qcardinalityverifier.cpp" line="+58"/>
<source>Required cardinality is %1; got cardinality %2.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/janitors/qitemverifier.cpp" line="+37"/>
+ <location filename="../src/xmlpatterns/janitors/qitemverifier.cpp" line="+67"/>
<source>The item %1 did not match the required type %2.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="+319"/>
+ <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="+379"/>
<location line="+7253"/>
<source>%1 is an unknown schema type.</source>
<translation type="unfinished"></translation>
@@ -7373,7 +7399,7 @@ Elija un nombre de fichero diferente.</translation>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/parser/qparsercontext.cpp" line="+63"/>
+ <location filename="../src/xmlpatterns/parser/qparsercontext.cpp" line="+93"/>
<source>The variable %1 is unused</source>
<translation type="unfinished"></translation>
</message>
@@ -7655,7 +7681,7 @@ Elija un nombre de fichero diferente.</translation>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/type/qcardinality.cpp" line="+25"/>
+ <location filename="../src/xmlpatterns/type/qcardinality.cpp" line="+55"/>
<source>empty</source>
<translation type="unfinished"></translation>
</message>
@@ -7680,7 +7706,7 @@ Elija un nombre de fichero diferente.</translation>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/type/qtypechecker.cpp" line="+33"/>
+ <location filename="../src/xmlpatterns/type/qtypechecker.cpp" line="+63"/>
<source>Required type is %1, but %2 was found.</source>
<translation type="unfinished"></translation>
</message>
@@ -7695,7 +7721,7 @@ Elija un nombre de fichero diferente.</translation>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/utils/qoutputvalidator.cpp" line="+56"/>
+ <location filename="../src/xmlpatterns/utils/qoutputvalidator.cpp" line="+86"/>
<source>It&apos;s not possible to add attributes after any other kind of node.</source>
<translation type="unfinished"></translation>
</message>
@@ -7705,12 +7731,12 @@ Elija un nombre de fichero diferente.</translation>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/utils/qxpathhelper_p.h" line="+90"/>
+ <location filename="../src/xmlpatterns/utils/qxpathhelper_p.h" line="+120"/>
<source>Only the Unicode Codepoint Collation is supported(%1). %2 is unsupported.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/acceltree/qacceltreeresourceloader.cpp" line="+284"/>
+ <location filename="../src/xmlpatterns/acceltree/qacceltreeresourceloader.cpp" line="+314"/>
<source>%1 is an unsupported encoding.</source>
<translation type="unfinished"></translation>
</message>
@@ -7725,13 +7751,13 @@ Elija un nombre de fichero diferente.</translation>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qapplytemplate.cpp" line="+89"/>
+ <location filename="../src/xmlpatterns/expr/qapplytemplate.cpp" line="+119"/>
<source>Ambiguous rule match.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qcomputednamespaceconstructor.cpp" line="+39"/>
- <source>In a namespace constructor, the value for a namespace value cannot be an empty string.</source>
+ <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 type="unfinished"></translation>
</message>
<message>
@@ -7750,12 +7776,12 @@ Elija un nombre de fichero diferente.</translation>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qevaluationcache.cpp" line="+87"/>
+ <location filename="../src/xmlpatterns/expr/qevaluationcache.cpp" line="+117"/>
<source>Circularity detected</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qtemplate.cpp" line="+115"/>
+ <location filename="../src/xmlpatterns/expr/qtemplate.cpp" line="+145"/>
<source>The parameter %1 is required, but no corresponding %2 is supplied.</source>
<translation type="unfinished"></translation>
</message>
@@ -7765,12 +7791,12 @@ Elija un nombre de fichero diferente.</translation>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qunparsedtextfn.cpp" line="+35"/>
+ <location filename="../src/xmlpatterns/functions/qunparsedtextfn.cpp" line="+65"/>
<source>The URI cannot have a fragment</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/parser/qxslttokenizer.cpp" line="+489"/>
+ <location filename="../src/xmlpatterns/parser/qxslttokenizer.cpp" line="+519"/>
<source>Element %1 is not allowed at this location.</source>
<translation type="unfinished"></translation>
</message>
@@ -7825,7 +7851,7 @@ Elija un nombre de fichero diferente.</translation>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/parser/qmaintainingreader.cpp" line="+153"/>
+ <location filename="../src/xmlpatterns/parser/qmaintainingreader.cpp" line="+183"/>
<source>Attribute %1 cannot appear on the element %2. Only the standard attributes can appear.</source>
<translation type="unfinished"></translation>
</message>
@@ -7900,7 +7926,7 @@ Elija un nombre de fichero diferente.</translation>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+432"/>
+ <location line="+434"/>
<source>Element %1 cannot have a sequence constructor.</source>
<translation type="unfinished"></translation>
</message>
diff --git a/translations/qt_fr.ts b/translations/qt_fr.ts
index 2408e8b..37b334b 100644
--- a/translations/qt_fr.ts
+++ b/translations/qt_fr.ts
@@ -1,11 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.0" language="fr">
-<defaultcodec></defaultcodec>
<context>
<name>AudioOutput</name>
<message>
- <location filename="../src/3rdparty/phonon/phonon/audiooutput.cpp" line="+374"/>
+ <location filename="../src/3rdparty/phonon/phonon/audiooutput.cpp" line="+375"/>
<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;Le dispositif audio &lt;b&gt;%1&lt;/b&gt; ne fonctionne pas.&lt;br/&gt;Utilisation de &lt;b&gt;%2&lt;/b&gt;.&lt;/html&gt;</translation>
</message>
@@ -65,7 +64,7 @@
<context>
<name>CloseButton</name>
<message>
- <location filename="../src/gui/widgets/qtabbar.cpp" line="+2217"/>
+ <location filename="../src/gui/widgets/qtabbar.cpp" line="+2251"/>
<source>Close Tab</source>
<translation>Fermer l&apos;onglet</translation>
</message>
@@ -189,7 +188,7 @@ Le support audio et vidéo est désactivé</translation>
<context>
<name>Phonon::Gstreamer::MediaObject</name>
<message>
- <location filename="../src/3rdparty/phonon/gstreamer/mediaobject.cpp" line="+88"/>
+ <location filename="../src/3rdparty/phonon/gstreamer/mediaobject.cpp" line="+90"/>
<source>Cannot start playback.
Check your Gstreamer installation and make sure you
@@ -234,24 +233,24 @@ have libgstreamer-plugins-base installed.</source>
<translation>Un codec requis est manquant. Vous devez installer le codec suivant pour jouer le contenu: %0</translation>
</message>
<message>
- <location line="+653"/>
- <location line="+9"/>
+ <location line="+676"/>
+ <location line="+8"/>
<location line="+15"/>
- <location line="+7"/>
- <location line="+5"/>
- <location line="+20"/>
- <location line="+317"/>
+ <location line="+9"/>
+ <location line="+6"/>
+ <location line="+19"/>
+ <location line="+335"/>
<location line="+24"/>
<source>Could not open media source.</source>
<translation>Impossible d&apos;ouvrir le média source.</translation>
</message>
<message>
- <location line="-381"/>
+ <location line="-403"/>
<source>Invalid source type.</source>
<translation>Type de source invalide.</translation>
</message>
<message>
- <location line="+355"/>
+ <location line="+377"/>
<source>Could not locate media source.</source>
<translation>Impossible de localiser le média source.</translation>
</message>
@@ -285,7 +284,7 @@ have libgstreamer-plugins-base installed.</source>
<context>
<name>Q3Accel</name>
<message>
- <location filename="../src/qt3support/other/q3accel.cpp" line="+451"/>
+ <location filename="../src/qt3support/other/q3accel.cpp" line="+481"/>
<source>%1, %2 not defined</source>
<translation>La séquence %1, %2 n&apos;est pas définie</translation>
</message>
@@ -298,7 +297,7 @@ have libgstreamer-plugins-base installed.</source>
<context>
<name>Q3DataTable</name>
<message>
- <location filename="../src/qt3support/sql/q3datatable.cpp" line="+253"/>
+ <location filename="../src/qt3support/sql/q3datatable.cpp" line="+285"/>
<source>True</source>
<translation>Vrai</translation>
</message>
@@ -326,7 +325,7 @@ have libgstreamer-plugins-base installed.</source>
<context>
<name>Q3FileDialog</name>
<message>
- <location filename="../src/qt3support/dialogs/q3filedialog.cpp" line="+834"/>
+ <location filename="../src/qt3support/dialogs/q3filedialog.cpp" line="+864"/>
<source>Copy or Move a File</source>
<translation>Copie ou déplace un fichier</translation>
</message>
@@ -351,7 +350,7 @@ have libgstreamer-plugins-base installed.</source>
<location line="-157"/>
<location line="+49"/>
<location line="+2153"/>
- <location filename="../src/qt3support/dialogs/q3filedialog_mac.cpp" line="+80"/>
+ <location filename="../src/qt3support/dialogs/q3filedialog_mac.cpp" line="+110"/>
<source>All Files (*)</source>
<translation>Tous les fichiers (*)</translation>
</message>
@@ -491,7 +490,7 @@ have libgstreamer-plugins-base installed.</source>
<message>
<location line="+704"/>
<location line="+2100"/>
- <location filename="../src/qt3support/dialogs/q3filedialog_win.cpp" line="+307"/>
+ <location filename="../src/qt3support/dialogs/q3filedialog_win.cpp" line="+337"/>
<source>Open</source>
<translation>Ouvrir</translation>
</message>
@@ -659,7 +658,7 @@ Vérifier le chemin et le nom du fichier.</translation>
<context>
<name>Q3LocalFs</name>
<message>
- <location filename="../src/qt3support/network/q3localfs.cpp" line="+100"/>
+ <location filename="../src/qt3support/network/q3localfs.cpp" line="+130"/>
<location line="+10"/>
<source>Could not read directory
%1</source>
@@ -709,7 +708,7 @@ en
<context>
<name>Q3MainWindow</name>
<message>
- <location filename="../src/qt3support/widgets/q3mainwindow.cpp" line="+2021"/>
+ <location filename="../src/qt3support/widgets/q3mainwindow.cpp" line="+2051"/>
<source>Line up</source>
<translation>Aligner</translation>
</message>
@@ -722,7 +721,7 @@ en
<context>
<name>Q3NetworkProtocol</name>
<message>
- <location filename="../src/qt3support/network/q3networkprotocol.cpp" line="+824"/>
+ <location filename="../src/qt3support/network/q3networkprotocol.cpp" line="+854"/>
<source>Operation stopped by the user</source>
<translation>Opération interrompue par l&apos;utilisateur</translation>
</message>
@@ -730,7 +729,7 @@ en
<context>
<name>Q3ProgressDialog</name>
<message>
- <location filename="../src/qt3support/dialogs/q3progressdialog.cpp" line="+194"/>
+ <location filename="../src/qt3support/dialogs/q3progressdialog.cpp" line="+224"/>
<location line="+61"/>
<source>Cancel</source>
<translation>Annuler</translation>
@@ -739,7 +738,7 @@ en
<context>
<name>Q3TabDialog</name>
<message>
- <location filename="../src/qt3support/dialogs/q3tabdialog.cpp" line="+159"/>
+ <location filename="../src/qt3support/dialogs/q3tabdialog.cpp" line="+189"/>
<location line="+814"/>
<source>OK</source>
<translation>OK</translation>
@@ -768,7 +767,7 @@ en
<context>
<name>Q3TextEdit</name>
<message>
- <location filename="../src/qt3support/text/q3textedit.cpp" line="+5399"/>
+ <location filename="../src/qt3support/text/q3textedit.cpp" line="+5429"/>
<source>&amp;Undo</source>
<translation>&amp;Annuler</translation>
</message>
@@ -807,7 +806,7 @@ en
<context>
<name>Q3TitleBar</name>
<message>
- <location filename="../src/plugins/accessible/compat/q3complexwidgets.cpp" line="+216"/>
+ <location filename="../src/plugins/accessible/compat/q3complexwidgets.cpp" line="+246"/>
<source>System</source>
<translation>Système</translation>
</message>
@@ -875,7 +874,7 @@ en
<context>
<name>Q3ToolBar</name>
<message>
- <location filename="../src/qt3support/widgets/q3toolbar.cpp" line="+662"/>
+ <location filename="../src/qt3support/widgets/q3toolbar.cpp" line="+692"/>
<source>More...</source>
<translation>Reste...</translation>
</message>
@@ -883,7 +882,7 @@ en
<context>
<name>Q3UrlOperator</name>
<message>
- <location filename="../src/qt3support/network/q3urloperator.cpp" line="+356"/>
+ <location filename="../src/qt3support/network/q3urloperator.cpp" line="+386"/>
<location line="+260"/>
<location line="+4"/>
<source>The protocol `%1&apos; is not supported</source>
@@ -935,7 +934,7 @@ en
<context>
<name>Q3Wizard</name>
<message>
- <location filename="../src/qt3support/dialogs/q3wizard.cpp" line="+147"/>
+ <location filename="../src/qt3support/dialogs/q3wizard.cpp" line="+177"/>
<source>&amp;Cancel</source>
<translation>&amp;Annuler</translation>
</message>
@@ -963,9 +962,9 @@ en
<context>
<name>QAbstractSocket</name>
<message>
- <location filename="../src/network/socket/qabstractsocket.cpp" line="+838"/>
- <location filename="../src/network/socket/qhttpsocketengine.cpp" line="+585"/>
- <location filename="../src/network/socket/qsocks5socketengine.cpp" line="+627"/>
+ <location filename="../src/network/socket/qabstractsocket.cpp" line="+868"/>
+ <location filename="../src/network/socket/qhttpsocketengine.cpp" line="+615"/>
+ <location filename="../src/network/socket/qsocks5socketengine.cpp" line="+657"/>
<location line="+26"/>
<source>Host not found</source>
<translation>Hôte introuvable</translation>
@@ -1008,7 +1007,7 @@ en
<context>
<name>QAbstractSpinBox</name>
<message>
- <location filename="../src/gui/widgets/qabstractspinbox.cpp" line="+1169"/>
+ <location filename="../src/gui/widgets/qabstractspinbox.cpp" line="+1199"/>
<source>&amp;Step up</source>
<translation>&amp;Augmenter</translation>
</message>
@@ -1026,13 +1025,13 @@ en
<context>
<name>QApplication</name>
<message>
- <location filename="../src/gui/kernel/qapplication.cpp" line="+2212"/>
+ <location filename="../src/gui/kernel/qapplication.cpp" line="+2248"/>
<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>
<message>
- <location filename="../src/gui/dialogs/qmessagebox.h" line="+322"/>
+ <location filename="../src/gui/dialogs/qmessagebox.h" line="+352"/>
<source>Executable &apos;%1&apos; requires Qt %2, found Qt %3.</source>
<translation>L&apos;exécutable &apos;%1&apos; requiert Qt %2 (Qt %3 présent).</translation>
</message>
@@ -1042,7 +1041,7 @@ en
<translation>Erreur : bibliothèque Qt incompatible</translation>
</message>
<message>
- <location filename="../src/gui/accessible/qaccessibleobject.cpp" line="+346"/>
+ <location filename="../src/gui/accessible/qaccessibleobject.cpp" line="+376"/>
<source>Activate</source>
<translation>Activer</translation>
</message>
@@ -1078,7 +1077,7 @@ en
<context>
<name>QCheckBox</name>
<message>
- <location filename="../src/plugins/accessible/widgets/simplewidgets.cpp" line="+84"/>
+ <location filename="../src/plugins/accessible/widgets/simplewidgets.cpp" line="+114"/>
<source>Uncheck</source>
<translation>Décocher</translation>
</message>
@@ -1096,7 +1095,7 @@ en
<context>
<name>QColorDialog</name>
<message>
- <location filename="../src/gui/dialogs/qcolordialog.cpp" line="+1219"/>
+ <location filename="../src/gui/dialogs/qcolordialog.cpp" line="+1253"/>
<source>Hu&amp;e:</source>
<translation>&amp;Teinte :</translation>
</message>
@@ -1170,13 +1169,13 @@ en
<context>
<name>QComboBox</name>
<message>
- <location filename="../src/plugins/accessible/widgets/complexwidgets.cpp" line="+1741"/>
+ <location filename="../src/plugins/accessible/widgets/complexwidgets.cpp" line="+1771"/>
<location line="+65"/>
<source>Open</source>
<translation>Ouvrir</translation>
</message>
<message>
- <location filename="../src/gui/itemviews/qitemeditorfactory.cpp" line="+514"/>
+ <location filename="../src/gui/itemviews/qitemeditorfactory.cpp" line="+544"/>
<source>False</source>
<translation>Faux</translation>
</message>
@@ -1219,7 +1218,7 @@ en
<translation type="obsolete">%1: erreur inconnue %2</translation>
</message>
<message>
- <location filename="../src/corelib/kernel/qsystemsemaphore_unix.cpp" line="+89"/>
+ <location filename="../src/corelib/kernel/qsystemsemaphore_unix.cpp" line="+119"/>
<source>%1: key is empty</source>
<comment>QSystemSemaphore</comment>
<translation>%1: clé vide</translation>
@@ -1240,12 +1239,12 @@ en
<context>
<name>QDB2Driver</name>
<message>
- <location filename="../src/sql/drivers/db2/qsql_db2.cpp" line="+1217"/>
+ <location filename="../src/sql/drivers/db2/qsql_db2.cpp" line="+1276"/>
<source>Unable to connect</source>
<translation>Incapable d&apos;établir une connexion</translation>
</message>
<message>
- <location line="+263"/>
+ <location line="+303"/>
<source>Unable to commit transaction</source>
<translation>Incapable de soumettre la transaction</translation>
</message>
@@ -1263,8 +1262,8 @@ en
<context>
<name>QDB2Result</name>
<message>
- <location line="-986"/>
- <location line="+242"/>
+ <location line="-1043"/>
+ <location line="+243"/>
<source>Unable to execute statement</source>
<translation>Impossible d&apos;exécuter la requête</translation>
</message>
@@ -1279,7 +1278,7 @@ en
<translation>Impossible d&apos;attacher la variable</translation>
</message>
<message>
- <location line="+91"/>
+ <location line="+92"/>
<source>Unable to fetch record %1</source>
<translation>Impossible de récupérer l&apos;enregistrement %1</translation>
</message>
@@ -1297,7 +1296,7 @@ en
<context>
<name>QDateTimeEdit</name>
<message>
- <location filename="../src/gui/widgets/qdatetimeedit.cpp" line="+2265"/>
+ <location filename="../src/gui/widgets/qdatetimeedit.cpp" line="+2295"/>
<source>AM</source>
<translation>AM</translation>
</message>
@@ -1320,7 +1319,7 @@ en
<context>
<name>QDial</name>
<message>
- <location filename="../src/plugins/accessible/widgets/rangecontrols.cpp" line="+921"/>
+ <location filename="../src/plugins/accessible/widgets/rangecontrols.cpp" line="+951"/>
<source>QDial</source>
<translation></translation>
</message>
@@ -1338,7 +1337,7 @@ en
<context>
<name>QDialog</name>
<message>
- <location filename="../src/gui/dialogs/qdialog.cpp" line="+567"/>
+ <location filename="../src/gui/dialogs/qdialog.cpp" line="+597"/>
<source>What&apos;s This?</source>
<translation>Qu&apos;est-ce que c&apos;est ?</translation>
</message>
@@ -1351,9 +1350,9 @@ en
<context>
<name>QDialogButtonBox</name>
<message>
- <location filename="../src/gui/dialogs/qmessagebox.cpp" line="+1830"/>
+ <location filename="../src/gui/dialogs/qmessagebox.cpp" line="+1866"/>
<location line="+464"/>
- <location filename="../src/gui/widgets/qdialogbuttonbox.cpp" line="+531"/>
+ <location filename="../src/gui/widgets/qdialogbuttonbox.cpp" line="+561"/>
<source>OK</source>
<translation>OK</translation>
</message>
@@ -1476,7 +1475,7 @@ en
<context>
<name>QDirModel</name>
<message>
- <location filename="../src/gui/itemviews/qdirmodel.cpp" line="+423"/>
+ <location filename="../src/gui/itemviews/qdirmodel.cpp" line="+453"/>
<source>Name</source>
<translation>Nom</translation>
</message>
@@ -1506,7 +1505,7 @@ en
<context>
<name>QDockWidget</name>
<message>
- <location filename="../src/plugins/accessible/widgets/qaccessiblewidgets.cpp" line="+1209"/>
+ <location filename="../src/plugins/accessible/widgets/qaccessiblewidgets.cpp" line="+1239"/>
<source>Close</source>
<translation>Fermer</translation>
</message>
@@ -1537,7 +1536,7 @@ en
<context>
<name>QErrorMessage</name>
<message>
- <location filename="../src/gui/dialogs/qerrormessage.cpp" line="+361"/>
+ <location filename="../src/gui/dialogs/qerrormessage.cpp" line="+391"/>
<source>&amp;Show this message again</source>
<translation>&amp;Afficher ce message de nouveau</translation>
</message>
@@ -1565,13 +1564,18 @@ en
<context>
<name>QFile</name>
<message>
- <location filename="../src/corelib/io/qfile.cpp" line="+678"/>
- <location line="+130"/>
+ <location filename="../src/corelib/io/qfile.cpp" line="+708"/>
+ <location line="+141"/>
<source>Destination file exists</source>
<translation>Le fichier destination existe</translation>
</message>
<message>
- <location line="+12"/>
+ <location line="-108"/>
+ <source>Cannot remove source file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+120"/>
<source>Cannot open %1 for input</source>
<translation>Impossible d&apos;ouvrir %1 pour lecture</translation>
</message>
@@ -1612,26 +1616,26 @@ en
<translation>Affichage détaillé</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfiledialog.cpp" line="+467"/>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="+498"/>
<source>Open</source>
<translation>Ouvrir</translation>
</message>
<message>
- <location line="+655"/>
+ <location line="+680"/>
<location line="+50"/>
- <location line="+1440"/>
+ <location line="+1471"/>
<location line="+75"/>
<source>&amp;Open</source>
<translation>&amp;Ouvrir</translation>
</message>
<message>
- <location line="-1565"/>
+ <location line="-1596"/>
<location line="+50"/>
<source>&amp;Save</source>
<translation>&amp;Enregistrer</translation>
</message>
<message>
- <location line="-674"/>
+ <location line="-699"/>
<source>&amp;Rename</source>
<translation>&amp;Renommer</translation>
</message>
@@ -1646,23 +1650,23 @@ en
<translation>Afficher les fic&amp;hiers cachés</translation>
</message>
<message>
- <location line="+625"/>
+ <location line="+650"/>
<source>Directories</source>
<translation>Dossiers</translation>
</message>
<message>
- <location line="+1837"/>
+ <location line="+1869"/>
<source>Recent Places</source>
<translation>Emplacements récents</translation>
</message>
<message>
- <location line="-2478"/>
- <location line="+423"/>
+ <location line="-2535"/>
+ <location line="+444"/>
<source>All Files (*)</source>
<translation>Tous les fichiers (*)</translation>
</message>
<message>
- <location line="+1029"/>
+ <location line="+1054"/>
<source>%1 already exists.
Do you want to replace it?</source>
<translation>Le fichier %1 existe déjà. Voulez-vous l&apos;écraser ?</translation>
@@ -1694,8 +1698,8 @@ Veuillez vérifier que le nom du fichier est correct.</translation>
<translation>Fichiers de type :</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-1450"/>
- <location line="+623"/>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-1496"/>
+ <location line="+648"/>
<source>Directory:</source>
<translation>Dossier :</translation>
</message>
@@ -1708,8 +1712,8 @@ Fichier introuvable.
Veuillez vérifier que le nom du fichier est correct</translation>
</message>
<message>
- <location line="+773"/>
- <location line="+851"/>
+ <location line="+794"/>
+ <location line="+862"/>
<source>%1
Directory not found.
Please verify the correct directory name was given.</source>
@@ -1718,7 +1722,7 @@ Dossier introuvable.
Veuillez vérifier que le nom du dossier est correct.</translation>
</message>
<message>
- <location line="-217"/>
+ <location line="-218"/>
<source>&apos;%1&apos; is write protected.
Do you want to delete it anyway?</source>
<translation>&apos;%1&apos; est protégé en écriture.
@@ -1735,17 +1739,17 @@ Voulez-vous quand même le supprimer?</translation>
<translation>Impossible de supprimer le dossier.</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfiledialog_win.cpp" line="+130"/>
+ <location filename="../src/gui/dialogs/qfiledialog_win.cpp" line="+160"/>
<source>All Files (*.*)</source>
<translation>Tous les fichiers (*.*)</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-2087"/>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-2143"/>
<source>Save As</source>
<translation>Enregistrer sous</translation>
</message>
<message>
- <location filename="../src/gui/itemviews/qfileiconprovider.cpp" line="+381"/>
+ <location filename="../src/gui/itemviews/qfileiconprovider.cpp" line="+411"/>
<source>Drive</source>
<translation>Unité</translation>
</message>
@@ -1777,29 +1781,29 @@ Voulez-vous quand même le supprimer?</translation>
<translation>Successeur</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfiledialog.cpp" line="+1914"/>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="+1970"/>
<source>New Folder</source>
<translation>Nouveau dossier</translation>
</message>
<message>
- <location line="-1907"/>
+ <location line="-1963"/>
<source>&amp;New Folder</source>
<translation>&amp;Nouveau dossier</translation>
</message>
<message>
- <location line="+631"/>
+ <location line="+656"/>
<location line="+38"/>
<source>&amp;Choose</source>
<translation>&amp;Choisir</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qsidebar.cpp" line="+388"/>
+ <location filename="../src/gui/dialogs/qsidebar.cpp" line="+418"/>
<source>Remove</source>
<translation>Supprimer</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-662"/>
- <location line="+627"/>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-687"/>
+ <location line="+652"/>
<source>File &amp;name:</source>
<translation>&amp;Nom de fichier :</translation>
</message>
@@ -1819,7 +1823,7 @@ Voulez-vous quand même le supprimer?</translation>
<context>
<name>QFileSystemModel</name>
<message>
- <location filename="../src/gui/dialogs/qfilesystemmodel.cpp" line="+707"/>
+ <location filename="../src/gui/dialogs/qfilesystemmodel.cpp" line="+744"/>
<source>%1 TB</source>
<translation>%1 To</translation>
</message>
@@ -1881,7 +1885,7 @@ Voulez-vous quand même le supprimer?</translation>
<translation>Dernière modification</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfilesystemmodel_p.h" line="+204"/>
+ <location filename="../src/gui/dialogs/qfilesystemmodel_p.h" line="+234"/>
<source>My Computer</source>
<translation>Mon ordinateur</translation>
</message>
@@ -1894,7 +1898,7 @@ Voulez-vous quand même le supprimer?</translation>
<context>
<name>QFontDatabase</name>
<message>
- <location filename="../src/gui/text/qfontdatabase.cpp" line="+60"/>
+ <location filename="../src/gui/text/qfontdatabase.cpp" line="+90"/>
<location line="+1176"/>
<source>Normal</source>
<translation></translation>
@@ -2111,7 +2115,7 @@ Voulez-vous quand même le supprimer?</translation>
<context>
<name>QFontDialog</name>
<message>
- <location filename="../src/gui/dialogs/qfontdialog.cpp" line="+742"/>
+ <location filename="../src/gui/dialogs/qfontdialog.cpp" line="+772"/>
<source>&amp;Font</source>
<translation>&amp;Police</translation>
</message>
@@ -2160,7 +2164,7 @@ Voulez-vous quand même le supprimer?</translation>
<context>
<name>QFtp</name>
<message>
- <location filename="../src/qt3support/network/q3ftp.cpp" line="+2273"/>
+ <location filename="../src/qt3support/network/q3ftp.cpp" line="+2303"/>
<source>Host %1 found</source>
<translation>Hôte %1 trouvé</translation>
</message>
@@ -2170,7 +2174,7 @@ Voulez-vous quand même le supprimer?</translation>
<translation>Hôte trouvé</translation>
</message>
<message>
- <location filename="../src/network/access/qftp.cpp" line="+973"/>
+ <location filename="../src/network/access/qftp.cpp" line="+1003"/>
<location filename="../src/qt3support/network/q3ftp.cpp" line="-1456"/>
<location line="+1451"/>
<source>Connected to host %1</source>
@@ -2306,7 +2310,7 @@ Voulez-vous quand même le supprimer?</translation>
<context>
<name>QHostInfo</name>
<message>
- <location filename="../src/network/kernel/qhostinfo_p.h" line="+153"/>
+ <location filename="../src/network/kernel/qhostinfo_p.h" line="+183"/>
<source>Unknown error</source>
<translation>Erreur inconnue</translation>
</message>
@@ -2314,11 +2318,11 @@ Voulez-vous quand même le supprimer?</translation>
<context>
<name>QHostInfoAgent</name>
<message>
- <location filename="../src/network/kernel/qhostinfo_unix.cpp" line="+148"/>
+ <location filename="../src/network/kernel/qhostinfo_unix.cpp" line="+178"/>
<location line="+9"/>
<location line="+64"/>
<location line="+31"/>
- <location filename="../src/network/kernel/qhostinfo_win.cpp" line="+150"/>
+ <location filename="../src/network/kernel/qhostinfo_win.cpp" line="+180"/>
<location line="+9"/>
<location line="+40"/>
<location line="+27"/>
@@ -2344,13 +2348,13 @@ Voulez-vous quand même le supprimer?</translation>
<context>
<name>QHttp</name>
<message>
- <location filename="../src/network/access/qhttpnetworkconnection.cpp" line="+1712"/>
- <location filename="../src/qt3support/network/q3http.cpp" line="+1806"/>
+ <location filename="../src/network/access/qhttpnetworkconnection.cpp" line="+876"/>
+ <location filename="../src/qt3support/network/q3http.cpp" line="+1836"/>
<source>Connection refused</source>
<translation>Connexion refusée</translation>
</message>
<message>
- <location filename="../src/network/access/qhttp.cpp" line="+2597"/>
+ <location filename="../src/network/access/qhttp.cpp" line="+2631"/>
<location filename="../src/network/access/qhttpnetworkconnection.cpp" line="-4"/>
<location filename="../src/qt3support/network/q3http.cpp" line="+3"/>
<source>Host %1 not found</source>
@@ -2402,21 +2406,21 @@ Voulez-vous quand même le supprimer?</translation>
<translation>Connexion arrêtée</translation>
</message>
<message>
- <location filename="../src/network/access/qhttp.cpp" line="-1073"/>
- <location line="+816"/>
+ <location filename="../src/network/access/qhttp.cpp" line="-1077"/>
+ <location line="+820"/>
<location filename="../src/qt3support/network/q3http.cpp" line="-1152"/>
<location line="+567"/>
<source>Unknown error</source>
<translation>Erreur inconnue</translation>
</message>
<message>
- <location line="-564"/>
+ <location line="-568"/>
<location filename="../src/qt3support/network/q3http.cpp" line="-370"/>
<source>Request aborted</source>
<translation>Requête interrompue</translation>
</message>
<message>
- <location line="+575"/>
+ <location line="+579"/>
<location filename="../src/qt3support/network/q3http.cpp" line="+381"/>
<source>No server set to connect to</source>
<translation>Aucun serveur spécifié</translation>
@@ -2434,7 +2438,12 @@ Voulez-vous quand même le supprimer?</translation>
<translation>Entête de réponse HTTP invalide</translation>
</message>
<message>
- <location line="+120"/>
+ <location line="+28"/>
+ <source>Unknown authentication method</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+97"/>
<location line="+48"/>
<location filename="../src/qt3support/network/q3http.cpp" line="+40"/>
<location line="+47"/>
@@ -2482,12 +2491,12 @@ Voulez-vous quand même le supprimer?</translation>
<translation>le handshake SSL a échoué</translation>
</message>
<message>
- <location filename="../src/network/access/qhttp.cpp" line="-133"/>
+ <location filename="../src/network/access/qhttp.cpp" line="-138"/>
<source>Connection refused (or timed out)</source>
<translation>Connexion refusée (ou délai expiré)</translation>
</message>
<message>
- <location line="-2259"/>
+ <location line="-2263"/>
<source>HTTPS connection requested but SSL support not compiled in</source>
<translation>Connexion HTTPS requise mais le support SSL n&apos;est pas compilé</translation>
</message>
@@ -2543,7 +2552,7 @@ Voulez-vous quand même le supprimer?</translation>
<context>
<name>QIBaseDriver</name>
<message>
- <location filename="../src/sql/drivers/ibase/qsql_ibase.cpp" line="+1378"/>
+ <location filename="../src/sql/drivers/ibase/qsql_ibase.cpp" line="+1428"/>
<source>Error opening database</source>
<translation>Erreur d&apos;ouverture de la base de données</translation>
</message>
@@ -2566,7 +2575,7 @@ Voulez-vous quand même le supprimer?</translation>
<context>
<name>QIBaseResult</name>
<message>
- <location line="-1077"/>
+ <location line="-1097"/>
<source>Unable to create BLOB</source>
<translation>Impossible de créer un BLOB</translation>
</message>
@@ -2586,7 +2595,7 @@ Voulez-vous quand même le supprimer?</translation>
<translation>Impossible de lire le BLOB</translation>
</message>
<message>
- <location line="+124"/>
+ <location line="+125"/>
<location line="+189"/>
<source>Could not find array</source>
<translation>Impossible de trouver le tableau</translation>
@@ -2656,7 +2665,7 @@ Voulez-vous quand même le supprimer?</translation>
<context>
<name>QIODevice</name>
<message>
- <location filename="../src/corelib/global/qglobal.cpp" line="+1830"/>
+ <location filename="../src/corelib/global/qglobal.cpp" line="+1869"/>
<source>Permission denied</source>
<translation>Accès refusé</translation>
</message>
@@ -2676,7 +2685,7 @@ Voulez-vous quand même le supprimer?</translation>
<translation>Aucun espace disponible sur le périphérique</translation>
</message>
<message>
- <location filename="../src/corelib/io/qiodevice.cpp" line="+1506"/>
+ <location filename="../src/corelib/io/qiodevice.cpp" line="+1536"/>
<source>Unknown error</source>
<translation>Erreur inconnue</translation>
</message>
@@ -2684,7 +2693,7 @@ Voulez-vous quand même le supprimer?</translation>
<context>
<name>QInputContext</name>
<message>
- <location filename="../src/gui/inputmethod/qinputcontextfactory.cpp" line="+212"/>
+ <location filename="../src/gui/inputmethod/qinputcontextfactory.cpp" line="+242"/>
<source>XIM</source>
<translation>XIM</translation>
</message>
@@ -2707,7 +2716,7 @@ Voulez-vous quand même le supprimer?</translation>
<context>
<name>QInputDialog</name>
<message>
- <location filename="../src/gui/dialogs/qinputdialog.cpp" line="+193"/>
+ <location filename="../src/gui/dialogs/qinputdialog.cpp" line="+223"/>
<source>Enter a value:</source>
<translation>Entrer une valeur :</translation>
</message>
@@ -2727,7 +2736,7 @@ Voulez-vous quand même le supprimer?</translation>
<translation type="obsolete">QLibrary::resolve_sys: Symbole &quot;%1&quot; non défini dans %2 (%3)</translation>
</message>
<message>
- <location filename="../src/corelib/plugin/qlibrary.cpp" line="+348"/>
+ <location filename="../src/corelib/plugin/qlibrary.cpp" line="+378"/>
<source>Could not mmap &apos;%1&apos;: %2</source>
<translation>Impossible d&apos;établir la projection en mémoire de &apos;%1&apos; : %2</translation>
</message>
@@ -2758,7 +2767,7 @@ Voulez-vous quand même le supprimer?</translation>
</message>
<message>
<location line="-377"/>
- <location filename="../src/corelib/plugin/qpluginloader.cpp" line="+250"/>
+ <location filename="../src/corelib/plugin/qpluginloader.cpp" line="+280"/>
<source>The shared library was not found.</source>
<translation>La bibliothèque partagée est introuvable.</translation>
</message>
@@ -2773,8 +2782,8 @@ Voulez-vous quand même le supprimer?</translation>
<translation>Le plugin &apos;%1&apos; utilise une bibliothèque Qt incompatible. (Il est impossible de mélanger des bibliothèques &apos;debug&apos; et &apos;release&apos;.)</translation>
</message>
<message>
- <location filename="../src/corelib/plugin/qlibrary_unix.cpp" line="+179"/>
- <location filename="../src/corelib/plugin/qlibrary_win.cpp" line="+69"/>
+ <location filename="../src/corelib/plugin/qlibrary_unix.cpp" line="+209"/>
+ <location filename="../src/corelib/plugin/qlibrary_win.cpp" line="+99"/>
<source>Cannot load library %1: %2</source>
<translation>Impossible de charger la bibliothèque %1 : %2</translation>
</message>
@@ -2794,7 +2803,7 @@ Voulez-vous quand même le supprimer?</translation>
<context>
<name>QLineEdit</name>
<message>
- <location filename="../src/gui/widgets/qlineedit.cpp" line="+2679"/>
+ <location filename="../src/gui/widgets/qlineedit.cpp" line="+2710"/>
<source>Select All</source>
<translation>Tout sélectionner</translation>
</message>
@@ -2832,8 +2841,8 @@ Voulez-vous quand même le supprimer?</translation>
<context>
<name>QLocalServer</name>
<message>
- <location filename="../src/network/socket/qlocalserver.cpp" line="+196"/>
- <location filename="../src/network/socket/qlocalserver_unix.cpp" line="+201"/>
+ <location filename="../src/network/socket/qlocalserver.cpp" line="+226"/>
+ <location filename="../src/network/socket/qlocalserver_unix.cpp" line="+231"/>
<source>%1: Name error</source>
<translation>%1: Erreur de nom</translation>
</message>
@@ -2849,7 +2858,7 @@ Voulez-vous quand même le supprimer?</translation>
</message>
<message>
<location line="+5"/>
- <location filename="../src/network/socket/qlocalserver_win.cpp" line="+127"/>
+ <location filename="../src/network/socket/qlocalserver_win.cpp" line="+158"/>
<source>%1: Unknown error %2</source>
<translation>%1: Erreur inconnue %2</translation>
</message>
@@ -2857,8 +2866,8 @@ Voulez-vous quand même le supprimer?</translation>
<context>
<name>QLocalSocket</name>
<message>
- <location filename="../src/network/socket/qlocalsocket_tcp.cpp" line="+102"/>
- <location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+104"/>
+ <location filename="../src/network/socket/qlocalsocket_tcp.cpp" line="+132"/>
+ <location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+134"/>
<source>%1: Connection refused</source>
<translation>%1: Connexion refusée</translation>
</message>
@@ -2871,7 +2880,7 @@ Voulez-vous quand même le supprimer?</translation>
<message>
<location line="+3"/>
<location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+3"/>
- <location filename="../src/network/socket/qlocalsocket_win.cpp" line="+50"/>
+ <location filename="../src/network/socket/qlocalsocket_win.cpp" line="+80"/>
<location line="+43"/>
<source>%1: Invalid name</source>
<translation>%1: Nom invalide</translation>
@@ -2928,7 +2937,7 @@ Voulez-vous quand même le supprimer?</translation>
<context>
<name>QMYSQLDriver</name>
<message>
- <location filename="../src/sql/drivers/mysql/qsql_mysql.cpp" line="+1200"/>
+ <location filename="../src/sql/drivers/mysql/qsql_mysql.cpp" line="+1231"/>
<source>Unable to open database &apos;</source>
<translation>Impossible d&apos;ouvrir la base de données &apos;</translation>
</message>
@@ -2938,7 +2947,7 @@ Voulez-vous quand même le supprimer?</translation>
<translation>Impossible d&apos;établir une connexion</translation>
</message>
<message>
- <location line="+123"/>
+ <location line="+127"/>
<source>Unable to begin transaction</source>
<translation>Impossible de démarrer la transaction</translation>
</message>
@@ -2956,7 +2965,7 @@ Voulez-vous quand même le supprimer?</translation>
<context>
<name>QMYSQLResult</name>
<message>
- <location line="-917"/>
+ <location line="-922"/>
<source>Unable to fetch data</source>
<translation>Impossible de récuperer des données</translation>
</message>
@@ -2971,7 +2980,7 @@ Voulez-vous quand même le supprimer?</translation>
<translation>Impossible de stocker le résultat</translation>
</message>
<message>
- <location line="+189"/>
+ <location line="+190"/>
<location line="+8"/>
<source>Unable to prepare statement</source>
<translation>Impossible de préparer l&apos;instruction</translation>
@@ -3016,7 +3025,7 @@ Voulez-vous quand même le supprimer?</translation>
<context>
<name>QMdiArea</name>
<message>
- <location filename="../src/gui/widgets/qmdiarea.cpp" line="+260"/>
+ <location filename="../src/gui/widgets/qmdiarea.cpp" line="+290"/>
<source>(Untitled)</source>
<translation>(Sans titre)</translation>
</message>
@@ -3024,7 +3033,7 @@ Voulez-vous quand même le supprimer?</translation>
<context>
<name>QMdiSubWindow</name>
<message>
- <location filename="../src/gui/widgets/qmdisubwindow.cpp" line="+250"/>
+ <location filename="../src/gui/widgets/qmdisubwindow.cpp" line="+280"/>
<source>%1 - [%2]</source>
<translation>%1 - [%2]</translation>
</message>
@@ -3117,7 +3126,7 @@ Voulez-vous quand même le supprimer?</translation>
<context>
<name>QMenu</name>
<message>
- <location filename="../src/plugins/accessible/widgets/qaccessiblemenu.cpp" line="+127"/>
+ <location filename="../src/plugins/accessible/widgets/qaccessiblemenu.cpp" line="+157"/>
<location line="+225"/>
<source>Close</source>
<translation>Fermer</translation>
@@ -3190,7 +3199,7 @@ Voulez-vous quand même le supprimer?</translation>
<context>
<name>QMessageBox</name>
<message>
- <location filename="../src/gui/dialogs/qmessagebox.cpp" line="-1958"/>
+ <location filename="../src/gui/dialogs/qmessagebox.cpp" line="-1964"/>
<location line="+852"/>
<location filename="../src/gui/dialogs/qmessagebox.h" line="-52"/>
<location line="+8"/>
@@ -3198,26 +3207,25 @@ Voulez-vous quand même le supprimer?</translation>
<translation>OK</translation>
</message>
<message>
- <location line="+503"/>
+ <location line="+509"/>
<source>About Qt</source>
<translation>À propos de Qt</translation>
</message>
<message>
- <location line="-502"/>
+ <location line="-508"/>
<source>Help</source>
<translation>Aide</translation>
</message>
<message>
- <location line="+487"/>
<source>&lt;p&gt;This program uses Qt version %1.&lt;/p&gt;</source>
- <translation>&lt;p&gt;Ce programme utilise la version %1 de Qt.&lt;/p&gt;</translation>
+ <translation type="obsolete">&lt;p&gt;Ce programme utilise la version %1 de Qt.&lt;/p&gt;</translation>
</message>
<message>
<source>&lt;h3&gt;About Qt&lt;/h3&gt;%1&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 Qtopia Core.&lt;/p&gt;&lt;p&gt;Qt is a Trolltech product. See &lt;a href=&quot;http://qtsoftware.com/qt/&quot;&gt;qtsoftware.com/qt/&lt;/a&gt; for more information.&lt;/p&gt;</source>
<translation type="obsolete">&lt;h3&gt;A propos de Qt&lt;/h3&gt;%1&lt;p&gt;Qt est un toolkit C++ pour le développement d&apos;applications multi-platformes.&lt;/p&gt;&lt;p&gt;Qt fournit la portabilité du code source pour MS&amp;nbsp;Windows, Mac&amp;nbsp;OS&amp;nbsp;X, Linux et toutes les variantes commerciales majeures d&apos;Unix. Qt est aussi disponible pour les systèmes embarqués sous le nom Qtopia Core.&lt;/p&gt;&lt;p&gt;Qt est un produit de Trolltech. &lt;a href=&quot;http://qtsoftware.com/qt/&quot;&gt;qtsoftware.com/qt/&lt;/a&gt; for more information.&lt;/p&gt;</translation>
</message>
<message>
- <location line="-1584"/>
+ <location line="-1097"/>
<source>Show Details...</source>
<translation>Montrer les détails...</translation>
</message>
@@ -3228,13 +3236,16 @@ Voulez-vous quand même le supprimer?</translation>
</message>
<message>
<location line="+1570"/>
+ <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://www.qtsoftware.com/products/licensing&quot;&gt;www.qtsoftware.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://www.qtsoftware.com/qt/&quot;&gt;www.qtsoftware.com/qt&lt;/a&gt; for more information.&lt;/p&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<source>&lt;h3&gt;About Qt&lt;/h3&gt;%1&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 a Nokia product. See &lt;a href=&quot;http://qtsoftware.com/qt/&quot;&gt;qtsoftware.com/qt/&lt;/a&gt; for more information.&lt;/p&gt;</source>
- <translation>&lt;h3&gt;A propos de Qt&lt;/h3&gt;%1&lt;p&gt;Qt est un framework de développement d&apos;applications multi-plateforme.&lt;/p&gt;&lt;p&gt;Qt fournit la portabilité du code source surMS&amp;nbsp;Windows, Mac&amp;nbsp;OS&amp;nbsp;X, Linux, et toutes les variantes majeures d&apos;Unix. Qt est aussi disponible pour l&apos;embarqué avec Qt for Embedded Linux and Qt for Windows CE.&lt;/p&gt;&lt;p&gt;Qt est un produit de Nokia. Allez à &lt;a href=&quot;http://qtsoftware.com/qt/&quot;&gt;qtsoftware.com/qt/&lt;/a&gt; pour plus d&apos;informations.&lt;/p&gt;</translation>
+ <translation type="obsolete">&lt;h3&gt;A propos de Qt&lt;/h3&gt;%1&lt;p&gt;Qt est un framework de développement d&apos;applications multi-plateforme.&lt;/p&gt;&lt;p&gt;Qt fournit la portabilité du code source surMS&amp;nbsp;Windows, Mac&amp;nbsp;OS&amp;nbsp;X, Linux, et toutes les variantes majeures d&apos;Unix. Qt est aussi disponible pour l&apos;embarqué avec Qt for Embedded Linux and Qt for Windows CE.&lt;/p&gt;&lt;p&gt;Qt est un produit de Nokia. Allez à &lt;a href=&quot;http://qtsoftware.com/qt/&quot;&gt;qtsoftware.com/qt/&lt;/a&gt; pour plus d&apos;informations.&lt;/p&gt;</translation>
</message>
<message>
- <location line="+15"/>
<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://qtsoftware.com/company/model/&quot;&gt;qtsoftware.com/company/model/&lt;/a&gt; for an overview of Qt licensing.&lt;/p&gt;</source>
- <translation>&lt;p&gt;Ce programme utilise Qt Open Source Edition version %1.&lt;/p&gt;&lt;p&gt;Qt Open Source Edition est prévu pour le développement d&apos;applications Open Source. Vous devez avoir un license commerciale de Qt pour développer des applications propiétaires (Closed Source).&lt;/p&gt;&lt;p&gt;Vous pouvez aller sur &lt;a href=&quot;http://qtsoftware.com/company/model/&quot;&gt;qtsoftware.com/company/model/&lt;/a&gt; pour plus d&apos;informations sur les licenses Qt.&lt;/p&gt;</translation>
+ <translation type="obsolete">&lt;p&gt;Ce programme utilise Qt Open Source Edition version %1.&lt;/p&gt;&lt;p&gt;Qt Open Source Edition est prévu pour le développement d&apos;applications Open Source. Vous devez avoir un license commerciale de Qt pour développer des applications propiétaires (Closed Source).&lt;/p&gt;&lt;p&gt;Vous pouvez aller sur &lt;a href=&quot;http://qtsoftware.com/company/model/&quot;&gt;qtsoftware.com/company/model/&lt;/a&gt; pour plus d&apos;informations sur les licenses Qt.&lt;/p&gt;</translation>
</message>
<message>
<source>&lt;h3&gt;About Qt&lt;/h3&gt;%1&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 Embedded.&lt;/p&gt;&lt;p&gt;Qt is a Trolltech product. See &lt;a href=&quot;http://qtsoftware.com/qt/&quot;&gt;qtsoftware.com/qt/&lt;/a&gt; for more information.&lt;/p&gt;</source>
@@ -3244,7 +3255,7 @@ Voulez-vous quand même le supprimer?</translation>
<context>
<name>QMultiInputContext</name>
<message>
- <location filename="../src/plugins/inputmethods/imsw-multi/qmultiinputcontext.cpp" line="+58"/>
+ <location filename="../src/plugins/inputmethods/imsw-multi/qmultiinputcontext.cpp" line="+88"/>
<source>Select IM</source>
<translation>Sélectionner IM</translation>
</message>
@@ -3252,7 +3263,7 @@ Voulez-vous quand même le supprimer?</translation>
<context>
<name>QMultiInputContextPlugin</name>
<message>
- <location filename="../src/plugins/inputmethods/imsw-multi/qmultiinputcontextplugin.cpp" line="+65"/>
+ <location filename="../src/plugins/inputmethods/imsw-multi/qmultiinputcontextplugin.cpp" line="+95"/>
<source>Multiple input method switcher</source>
<translation>Sélectionneur de méthode de saisie</translation>
</message>
@@ -3265,7 +3276,7 @@ Voulez-vous quand même le supprimer?</translation>
<context>
<name>QNativeSocketEngine</name>
<message>
- <location filename="../src/network/socket/qnativesocketengine.cpp" line="+176"/>
+ <location filename="../src/network/socket/qnativesocketengine.cpp" line="+206"/>
<source>The remote host closed the connection</source>
<translation>L&apos;hôte distant a fermé la connexion</translation>
</message>
@@ -3398,7 +3409,7 @@ Voulez-vous quand même le supprimer?</translation>
<context>
<name>QNetworkAccessCacheBackend</name>
<message>
- <location filename="../src/network/access/qnetworkaccesscachebackend.cpp" line="+35"/>
+ <location filename="../src/network/access/qnetworkaccesscachebackend.cpp" line="+65"/>
<source>Error opening %1</source>
<translation>Erreur lors de l&apos;ouverture de %1</translation>
</message>
@@ -3406,7 +3417,7 @@ Voulez-vous quand même le supprimer?</translation>
<context>
<name>QNetworkAccessFileBackend</name>
<message>
- <location filename="../src/network/access/qnetworkaccessfilebackend.cpp" line="+69"/>
+ <location filename="../src/network/access/qnetworkaccessfilebackend.cpp" line="+99"/>
<source>Request for opening non-local file %1</source>
<translation>Requête d&apos;ouverture de fichier distant %1</translation>
</message>
@@ -3434,7 +3445,7 @@ Voulez-vous quand même le supprimer?</translation>
<context>
<name>QNetworkAccessFtpBackend</name>
<message>
- <location filename="../src/network/access/qnetworkaccessftpbackend.cpp" line="+135"/>
+ <location filename="../src/network/access/qnetworkaccessftpbackend.cpp" line="+165"/>
<source>No suitable proxy found</source>
<translation>Aucun proxy trouvé</translation>
</message>
@@ -3444,7 +3455,7 @@ Voulez-vous quand même le supprimer?</translation>
<translation>Impossible d&apos;ouvrir %1 : le chemin est un dossier</translation>
</message>
<message>
- <location line="+131"/>
+ <location line="+130"/>
<source>Logging in to %1 failed: authentication required</source>
<translation>Connexion à %1 a échoué : authentification requise</translation>
</message>
@@ -3462,7 +3473,7 @@ Voulez-vous quand même le supprimer?</translation>
<context>
<name>QNetworkAccessHttpBackend</name>
<message>
- <location filename="../src/network/access/qnetworkaccesshttpbackend.cpp" line="+565"/>
+ <location filename="../src/network/access/qnetworkaccesshttpbackend.cpp" line="+597"/>
<source>No suitable proxy found</source>
<translation>Aucun proxy trouvé</translation>
</message>
@@ -3475,7 +3486,7 @@ Voulez-vous quand même le supprimer?</translation>
<translation>Erreur lors du téléchargement de %1 - le serveur a répondu: %2</translation>
</message>
<message>
- <location filename="../src/network/access/qnetworkreplyimpl.cpp" line="+37"/>
+ <location filename="../src/network/access/qnetworkreplyimpl.cpp" line="+68"/>
<source>Protocol &quot;%1&quot; is unknown</source>
<translation>Le protocole &quot;%1&quot; est inconnu</translation>
</message>
@@ -3483,7 +3494,7 @@ Voulez-vous quand même le supprimer?</translation>
<context>
<name>QNetworkReplyImpl</name>
<message>
- <location line="+422"/>
+ <location line="+432"/>
<location line="+22"/>
<source>Operation canceled</source>
<translation>Opération annulée</translation>
@@ -3492,7 +3503,7 @@ Voulez-vous quand même le supprimer?</translation>
<context>
<name>QOCIDriver</name>
<message>
- <location filename="../src/sql/drivers/oci/qsql_oci.cpp" line="+2027"/>
+ <location filename="../src/sql/drivers/oci/qsql_oci.cpp" line="+2069"/>
<source>Unable to logon</source>
<translation>Impossible d&apos;ouvrir une session</translation>
</message>
@@ -3521,7 +3532,7 @@ Voulez-vous quand même le supprimer?</translation>
<context>
<name>QOCIResult</name>
<message>
- <location line="-976"/>
+ <location line="-963"/>
<location line="+161"/>
<location line="+15"/>
<source>Unable to bind column for batch execute</source>
@@ -3548,18 +3559,16 @@ Voulez-vous quand même le supprimer?</translation>
<translation>Impossible de préparer la requête</translation>
</message>
<message>
- <location line="+29"/>
- <location line="+37"/>
+ <location line="+36"/>
<source>Unable to bind value</source>
<translation>Impossible d&apos;attacher la valeur</translation>
</message>
<message>
- <location line="-20"/>
<source>Unable to execute select statement</source>
- <translation>Impossible d&apos;exéctuer la requête select</translation>
+ <translation type="obsolete">Impossible d&apos;exéctuer la requête select</translation>
</message>
<message>
- <location line="+32"/>
+ <location line="+19"/>
<source>Unable to execute statement</source>
<translation>Impossible d&apos;exéctuer la requête</translation>
</message>
@@ -3567,7 +3576,7 @@ Voulez-vous quand même le supprimer?</translation>
<context>
<name>QODBCDriver</name>
<message>
- <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="+1657"/>
+ <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="+1785"/>
<source>Unable to connect</source>
<translation>Incapable d&apos;établir une connexion</translation>
</message>
@@ -3577,7 +3586,7 @@ Voulez-vous quand même le supprimer?</translation>
<translation>Impossible de se connecter - Le pilote ne supporte pas toutes les fonctionnalités nécessaires</translation>
</message>
<message>
- <location line="+234"/>
+ <location line="+242"/>
<source>Unable to disable autocommit</source>
<translation>Impossible de désactiver l&apos;autocommit</translation>
</message>
@@ -3600,19 +3609,19 @@ Voulez-vous quand même le supprimer?</translation>
<context>
<name>QODBCResult</name>
<message>
- <location line="-1204"/>
+ <location line="-1218"/>
<location line="+349"/>
<source>QODBCResult::reset: Unable to set &apos;SQL_CURSOR_STATIC&apos; as statement attribute. Please check your ODBC driver configuration</source>
<translation>QODBCResult::reset: Impossible d&apos;utiliser &apos;SQL_CURSOR_STATIC&apos; comme attribut de requête. Veuillez vérifier la configuration de votre pilote ODBC</translation>
</message>
<message>
<location line="-332"/>
- <location line="+625"/>
+ <location line="+626"/>
<source>Unable to execute statement</source>
<translation>Impossible d&apos;exéctuer la requête</translation>
</message>
<message>
- <location line="-554"/>
+ <location line="-555"/>
<source>Unable to fetch next</source>
<translation>Impossible de récupérer le suivant</translation>
</message>
@@ -3622,19 +3631,19 @@ Voulez-vous quand même le supprimer?</translation>
<translation>Impossible de préparer la requête</translation>
</message>
<message>
- <location line="+267"/>
+ <location line="+268"/>
<source>Unable to bind variable</source>
<translation>Impossible d&apos;attacher la variable</translation>
</message>
<message>
<location filename="../src/sql/drivers/db2/qsql_db2.cpp" line="+194"/>
- <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="-474"/>
- <location line="+577"/>
+ <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="-475"/>
+ <location line="+578"/>
<source>Unable to fetch last</source>
<translation>Impossible de récupérer le dernier</translation>
</message>
<message>
- <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="-671"/>
+ <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="-672"/>
<source>Unable to fetch</source>
<translation>Impossible de récupérer</translation>
</message>
@@ -3652,12 +3661,12 @@ Voulez-vous quand même le supprimer?</translation>
<context>
<name>QObject</name>
<message>
- <location filename="../src/gui/util/qdesktopservices_mac.cpp" line="+134"/>
+ <location filename="../src/gui/util/qdesktopservices_mac.cpp" line="+165"/>
<source>Home</source>
<translation>Début</translation>
</message>
<message>
- <location filename="../src/network/access/qnetworkaccessdatabackend.cpp" line="+44"/>
+ <location filename="../src/network/access/qnetworkaccessdatabackend.cpp" line="+74"/>
<source>Operation not supported on %1</source>
<translation>Opération non supportée sur %1</translation>
</message>
@@ -3667,7 +3676,7 @@ Voulez-vous quand même le supprimer?</translation>
<translation>URI invalide : %1</translation>
</message>
<message>
- <location filename="../src/network/access/qnetworkaccessdebugpipebackend.cpp" line="+145"/>
+ <location filename="../src/network/access/qnetworkaccessdebugpipebackend.cpp" line="+175"/>
<source>Write error writing to %1: %2</source>
<translation>Erreur d&apos;écriture sur %1 : %2</translation>
</message>
@@ -3692,7 +3701,7 @@ Voulez-vous quand même le supprimer?</translation>
<translation>Erreur de protocole: paquet de taille 0 reçu</translation>
</message>
<message>
- <location filename="../src/network/kernel/qhostinfo.cpp" line="+147"/>
+ <location filename="../src/network/kernel/qhostinfo.cpp" line="+177"/>
<location line="+57"/>
<source>No host name given</source>
<translation>Nom d&apos;hôte manquant</translation>
@@ -3701,7 +3710,7 @@ Voulez-vous quand même le supprimer?</translation>
<context>
<name>QPPDOptionsModel</name>
<message>
- <location filename="../src/gui/dialogs/qprintdialog_unix.cpp" line="+1165"/>
+ <location filename="../src/gui/dialogs/qprintdialog_unix.cpp" line="+1195"/>
<source>Name</source>
<translation>Nom</translation>
</message>
@@ -3714,7 +3723,7 @@ Voulez-vous quand même le supprimer?</translation>
<context>
<name>QPSQLDriver</name>
<message>
- <location filename="../src/sql/drivers/psql/qsql_psql.cpp" line="+732"/>
+ <location filename="../src/sql/drivers/psql/qsql_psql.cpp" line="+763"/>
<source>Unable to connect</source>
<translation>Impossible d&apos;établir une connexion</translation>
</message>
@@ -3734,7 +3743,7 @@ Voulez-vous quand même le supprimer?</translation>
<translation>Impossible d&apos;annuler la transaction</translation>
</message>
<message>
- <location line="+336"/>
+ <location line="+358"/>
<source>Unable to subscribe</source>
<translation>Impossible de s&apos;inscrire</translation>
</message>
@@ -3747,12 +3756,12 @@ Voulez-vous quand même le supprimer?</translation>
<context>
<name>QPSQLResult</name>
<message>
- <location line="-1035"/>
+ <location line="-1058"/>
<source>Unable to create query</source>
<translation>Impossible de créer la requête</translation>
</message>
<message>
- <location line="+373"/>
+ <location line="+374"/>
<source>Unable to prepare statement</source>
<translation>Impossible de préparer la requête</translation>
</message>
@@ -3760,7 +3769,7 @@ Voulez-vous quand même le supprimer?</translation>
<context>
<name>QPageSetupWidget</name>
<message>
- <location filename="../src/gui/dialogs/qpagesetupdialog_unix.cpp" line="+274"/>
+ <location filename="../src/gui/dialogs/qpagesetupdialog_unix.cpp" line="+304"/>
<source>Centimeters (cm)</source>
<translation>Centimètres (cm)</translation>
</message>
@@ -3876,7 +3885,7 @@ Voulez-vous quand même le supprimer?</translation>
<context>
<name>QPrintDialog</name>
<message>
- <location filename="../src/gui/painting/qprinterinfo_unix.cpp" line="+68"/>
+ <location filename="../src/gui/painting/qprinterinfo_unix.cpp" line="+98"/>
<source>locally connected</source>
<translation>connecté en local</translation>
</message>
@@ -3887,7 +3896,7 @@ Voulez-vous quand même le supprimer?</translation>
<translation>inconnu</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qprintdialog_win.cpp" line="+238"/>
+ <location filename="../src/gui/dialogs/qprintdialog_win.cpp" line="+268"/>
<source>OK</source>
<translation>OK</translation>
</message>
@@ -3900,7 +3909,7 @@ Voulez-vous quand même le supprimer?</translation>
<translation type="obsolete">Imprimer en couleur si possible</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qprintdialog_qws.cpp" line="+345"/>
+ <location filename="../src/gui/dialogs/qprintdialog_qws.cpp" line="+375"/>
<source>Print all</source>
<translation>Imprimer tout</translation>
</message>
@@ -4103,7 +4112,7 @@ Voulez-vous quand même le supprimer?</translation>
<translation type="obsolete">Source du papier :</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qabstractprintdialog.cpp" line="+80"/>
+ <location filename="../src/gui/dialogs/qabstractprintdialog.cpp" line="+110"/>
<location line="+13"/>
<location filename="../src/gui/dialogs/qprintdialog_win.cpp" line="-2"/>
<source>Print</source>
@@ -4405,7 +4414,7 @@ Veuillez choisir un nom de fichier différent.</translation>
<context>
<name>QPrintPreviewDialog</name>
<message>
- <location filename="../src/gui/dialogs/qprintpreviewdialog.cpp" line="+222"/>
+ <location filename="../src/gui/dialogs/qprintpreviewdialog.cpp" line="+252"/>
<source>%1%</source>
<translation>%1%</translation>
</message>
@@ -4505,7 +4514,7 @@ Veuillez choisir un nom de fichier différent.</translation>
<translation>Exporter vers PostScript</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qabstractpagesetupdialog.cpp" line="+38"/>
+ <location filename="../src/gui/dialogs/qabstractpagesetupdialog.cpp" line="+68"/>
<location line="+12"/>
<source>Page Setup</source>
<translation>Configuration de la page</translation>
@@ -4693,8 +4702,8 @@ Veuillez choisir un nom de fichier différent.</translation>
<context>
<name>QProcess</name>
<message>
- <location filename="../src/corelib/io/qprocess_unix.cpp" line="+445"/>
- <location filename="../src/corelib/io/qprocess_win.cpp" line="+117"/>
+ <location filename="../src/corelib/io/qprocess_unix.cpp" line="+475"/>
+ <location filename="../src/corelib/io/qprocess_win.cpp" line="+147"/>
<source>Could not open input redirection for reading</source>
<translation>Impossible d&apos;ouvrir la redirection d&apos;entrée en lecture</translation>
</message>
@@ -4723,7 +4732,7 @@ Veuillez choisir un nom de fichier différent.</translation>
<translation>Operation de processus a expiré</translation>
</message>
<message>
- <location filename="../src/corelib/io/qprocess.cpp" line="+503"/>
+ <location filename="../src/corelib/io/qprocess.cpp" line="+533"/>
<location line="+52"/>
<location filename="../src/corelib/io/qprocess_win.cpp" line="-211"/>
<location line="+50"/>
@@ -4743,6 +4752,11 @@ Veuillez choisir un nom de fichier différent.</translation>
<translation>Le processus à planté</translation>
</message>
<message>
+ <location line="+912"/>
+ <source>No program defined</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<location filename="../src/corelib/io/qprocess_win.cpp" line="-341"/>
<source>Process failed to start</source>
<translation>Le processus n&apos;a pas démarré</translation>
@@ -4751,7 +4765,7 @@ Veuillez choisir un nom de fichier différent.</translation>
<context>
<name>QProgressDialog</name>
<message>
- <location filename="../src/gui/dialogs/qprogressdialog.cpp" line="+152"/>
+ <location filename="../src/gui/dialogs/qprogressdialog.cpp" line="+182"/>
<source>Cancel</source>
<translation>Annuler</translation>
</message>
@@ -4775,7 +4789,7 @@ Veuillez choisir un nom de fichier différent.</translation>
<context>
<name>QRegExp</name>
<message>
- <location filename="../src/corelib/tools/qregexp.cpp" line="+34"/>
+ <location filename="../src/corelib/tools/qregexp.cpp" line="+64"/>
<source>no error occurred</source>
<translation>aucune erreur ne s&apos;est produite</translation>
</message>
@@ -4823,7 +4837,7 @@ Veuillez choisir un nom de fichier différent.</translation>
<context>
<name>QSQLite2Driver</name>
<message>
- <location filename="../src/sql/drivers/sqlite2/qsql_sqlite2.cpp" line="+353"/>
+ <location filename="../src/sql/drivers/sqlite2/qsql_sqlite2.cpp" line="+396"/>
<source>Error to open database</source>
<translation>Erreur à l&apos;ouverture de la base de données</translation>
</message>
@@ -4846,12 +4860,12 @@ Veuillez choisir un nom de fichier différent.</translation>
<context>
<name>QSQLite2Result</name>
<message>
- <location line="-310"/>
+ <location line="-323"/>
<source>Unable to fetch results</source>
<translation>Impossible de récupérer les résultats</translation>
</message>
<message>
- <location line="+139"/>
+ <location line="+147"/>
<source>Unable to execute statement</source>
<translation>Impossible d&apos;exécuter la requête</translation>
</message>
@@ -4859,7 +4873,7 @@ Veuillez choisir un nom de fichier différent.</translation>
<context>
<name>QSQLiteDriver</name>
<message>
- <location filename="../src/sql/drivers/sqlite/qsql_sqlite.cpp" line="+498"/>
+ <location filename="../src/sql/drivers/sqlite/qsql_sqlite.cpp" line="+528"/>
<source>Error opening database</source>
<translation>Erreur lors de l&apos;ouverture de la base de données</translation>
</message>
@@ -4926,12 +4940,12 @@ Veuillez choisir un nom de fichier différent.</translation>
<context>
<name>QScrollBar</name>
<message>
- <location filename="../src/gui/widgets/qscrollbar.cpp" line="+419"/>
+ <location filename="../src/gui/widgets/qscrollbar.cpp" line="+448"/>
<source>Scroll here</source>
<translation>Défiler jusqu&apos;ici</translation>
</message>
<message>
- <location line="+3"/>
+ <location line="+2"/>
<source>Left edge</source>
<translation>Extrême gauche</translation>
</message>
@@ -4941,7 +4955,7 @@ Veuillez choisir un nom de fichier différent.</translation>
<translation>En haut</translation>
</message>
<message>
- <location line="+2"/>
+ <location line="+1"/>
<source>Right edge</source>
<translation>Extrême droite</translation>
</message>
@@ -4951,7 +4965,7 @@ Veuillez choisir un nom de fichier différent.</translation>
<translation>En bas</translation>
</message>
<message>
- <location line="+3"/>
+ <location line="+2"/>
<source>Page left</source>
<translation>Page précédente</translation>
</message>
@@ -4962,7 +4976,7 @@ Veuillez choisir un nom de fichier différent.</translation>
<translation>Page précédente</translation>
</message>
<message>
- <location line="+2"/>
+ <location line="+1"/>
<source>Page right</source>
<translation>Page suivante</translation>
</message>
@@ -4973,7 +4987,7 @@ Veuillez choisir un nom de fichier différent.</translation>
<translation>Page suivante</translation>
</message>
<message>
- <location line="+3"/>
+ <location line="+2"/>
<source>Scroll left</source>
<translation>Défiler vers la gauche</translation>
</message>
@@ -4983,7 +4997,7 @@ Veuillez choisir un nom de fichier différent.</translation>
<translation>Défiler vers le haut</translation>
</message>
<message>
- <location line="+2"/>
+ <location line="+1"/>
<source>Scroll right</source>
<translation>Défiler vers la droite</translation>
</message>
@@ -5011,7 +5025,7 @@ Veuillez choisir un nom de fichier différent.</translation>
<context>
<name>QSharedMemory</name>
<message>
- <location filename="../src/corelib/kernel/qsharedmemory.cpp" line="+177"/>
+ <location filename="../src/corelib/kernel/qsharedmemory.cpp" line="+207"/>
<source>%1: unable to set key on lock</source>
<translation>%1 : impossible d&apos;affecter la clé au verrou</translation>
</message>
@@ -5022,7 +5036,7 @@ Veuillez choisir un nom de fichier différent.</translation>
</message>
<message>
<location line="+168"/>
- <location filename="../src/corelib/kernel/qsharedmemory_p.h" line="+118"/>
+ <location filename="../src/corelib/kernel/qsharedmemory_p.h" line="+148"/>
<source>%1: unable to lock</source>
<translation>%1 : impossible de vérrouiller</translation>
</message>
@@ -5032,8 +5046,8 @@ Veuillez choisir un nom de fichier différent.</translation>
<translation>%1 : impossible de déverrouiller</translation>
</message>
<message>
- <location filename="../src/corelib/kernel/qsharedmemory_unix.cpp" line="+48"/>
- <location filename="../src/corelib/kernel/qsharedmemory_win.cpp" line="+57"/>
+ <location filename="../src/corelib/kernel/qsharedmemory_unix.cpp" line="+78"/>
+ <location filename="../src/corelib/kernel/qsharedmemory_win.cpp" line="+87"/>
<source>%1: permission denied</source>
<translation>%1 : permission refusée</translation>
</message>
@@ -5111,7 +5125,7 @@ Veuillez choisir un nom de fichier différent.</translation>
<context>
<name>QShortcut</name>
<message>
- <location filename="../src/gui/kernel/qkeysequence.cpp" line="+343"/>
+ <location filename="../src/gui/kernel/qkeysequence.cpp" line="+373"/>
<source>Space</source>
<translation>Espace</translation>
</message>
@@ -5697,7 +5711,7 @@ Veuillez choisir un nom de fichier différent.</translation>
<context>
<name>QSql</name>
<message>
- <location filename="../src/qt3support/sql/q3sqlmanager_p.cpp" line="+860"/>
+ <location filename="../src/qt3support/sql/q3sqlmanager_p.cpp" line="+890"/>
<source>Delete</source>
<translation>Supprimer</translation>
</message>
@@ -5754,7 +5768,7 @@ Veuillez choisir un nom de fichier différent.</translation>
<context>
<name>QSslSocket</name>
<message>
- <location filename="../src/network/ssl/qsslsocket_openssl.cpp" line="+539"/>
+ <location filename="../src/network/ssl/qsslsocket_openssl.cpp" line="+569"/>
<source>Unable to write data: %1</source>
<translation>Impossible d&apos;écrire les données : %1</translation>
</message>
@@ -5817,7 +5831,7 @@ Veuillez choisir un nom de fichier différent.</translation>
<name>QSystemSemaphore</name>
<message>
<location filename="../src/corelib/kernel/qsystemsemaphore_unix.cpp" line="-41"/>
- <location filename="../src/corelib/kernel/qsystemsemaphore_win.cpp" line="+36"/>
+ <location filename="../src/corelib/kernel/qsystemsemaphore_win.cpp" line="+66"/>
<source>%1: out of resources</source>
<translation>%1: plus de ressources disponibles</translation>
</message>
@@ -5847,7 +5861,7 @@ Veuillez choisir un nom de fichier différent.</translation>
<context>
<name>QTDSDriver</name>
<message>
- <location filename="../src/sql/drivers/tds/qsql_tds.cpp" line="+552"/>
+ <location filename="../src/sql/drivers/tds/qsql_tds.cpp" line="+584"/>
<source>Unable to open connection</source>
<translation>Impossible d&apos;ouvrir la connexion</translation>
</message>
@@ -5877,7 +5891,7 @@ Veuillez choisir un nom de fichier différent.</translation>
<translation type="obsolete">Operation socket non supportée</translation>
</message>
<message>
- <location filename="../src/network/socket/qtcpserver.cpp" line="+252"/>
+ <location filename="../src/network/socket/qtcpserver.cpp" line="+282"/>
<source>Operation on socket is not supported</source>
<translation>Opération sur le socket non supportée</translation>
</message>
@@ -5885,7 +5899,7 @@ Veuillez choisir un nom de fichier différent.</translation>
<context>
<name>QTextControl</name>
<message>
- <location filename="../src/gui/text/qtextcontrol.cpp" line="+1942"/>
+ <location filename="../src/gui/text/qtextcontrol.cpp" line="+1973"/>
<source>&amp;Undo</source>
<translation>&amp;Annuler</translation>
</message>
@@ -5943,7 +5957,7 @@ Veuillez choisir un nom de fichier différent.</translation>
<context>
<name>QUdpSocket</name>
<message>
- <location filename="../src/network/socket/qudpsocket.cpp" line="+139"/>
+ <location filename="../src/network/socket/qudpsocket.cpp" line="+169"/>
<source>This platform does not support IPv6</source>
<translation>Cette plateforme ne supporte pas IPv6</translation>
</message>
@@ -5951,7 +5965,7 @@ Veuillez choisir un nom de fichier différent.</translation>
<context>
<name>QUndoGroup</name>
<message>
- <location filename="../src/gui/util/qundogroup.cpp" line="+356"/>
+ <location filename="../src/gui/util/qundogroup.cpp" line="+386"/>
<source>Undo</source>
<translation>Annuler</translation>
</message>
@@ -5964,7 +5978,7 @@ Veuillez choisir un nom de fichier différent.</translation>
<context>
<name>QUndoModel</name>
<message>
- <location filename="../src/gui/util/qundoview.cpp" line="+71"/>
+ <location filename="../src/gui/util/qundoview.cpp" line="+101"/>
<source>&lt;empty&gt;</source>
<translation>&lt;vide&gt;</translation>
</message>
@@ -5972,7 +5986,7 @@ Veuillez choisir un nom de fichier différent.</translation>
<context>
<name>QUndoStack</name>
<message>
- <location filename="../src/gui/util/qundostack.cpp" line="+804"/>
+ <location filename="../src/gui/util/qundostack.cpp" line="+834"/>
<source>Undo</source>
<translation>Annuler</translation>
</message>
@@ -6043,7 +6057,7 @@ Veuillez choisir un nom de fichier différent.</translation>
<context>
<name>QWebFrame</name>
<message>
- <location filename="../src/3rdparty/webkit/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp" line="+686"/>
+ <location filename="../src/3rdparty/webkit/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp" line="+692"/>
<source>Request cancelled</source>
<translation>Requête annulée</translation>
</message>
@@ -6459,7 +6473,7 @@ Veuillez choisir un nom de fichier différent.</translation>
</translation>
</message>
<message>
- <location filename="../src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp" line="+1342"/>
+ <location filename="../src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp" line="+1322"/>
<source>JavaScript Alert - %1</source>
<translation>Alerte javascript - %1</translation>
</message>
@@ -6535,6 +6549,11 @@ Veuillez choisir un nom de fichier différent.</translation>
</message>
<message>
<location line="+3"/>
+ <source>Select all</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
<source>Select to the next character</source>
<translation>Sélectionner le caractère suivant</translation>
</message>
@@ -6603,11 +6622,21 @@ Veuillez choisir un nom de fichier différent.</translation>
<source>Delete to the end of the word</source>
<translation>Supprimer jusqu&apos;à la fin du mot</translation>
</message>
+ <message>
+ <location line="+33"/>
+ <source>Insert a new paragraph</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Insert a new line</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>QWhatsThisAction</name>
<message>
- <location filename="../src/gui/kernel/qwhatsthis.cpp" line="+492"/>
+ <location filename="../src/gui/kernel/qwhatsthis.cpp" line="+522"/>
<source>What&apos;s This?</source>
<translation>Qu&apos;est-ce que c&apos;est ?</translation>
</message>
@@ -6615,7 +6644,7 @@ Veuillez choisir un nom de fichier différent.</translation>
<context>
<name>QWidget</name>
<message>
- <location filename="../src/gui/kernel/qwidget.cpp" line="+5290"/>
+ <location filename="../src/gui/kernel/qwidget.cpp" line="+5326"/>
<source>*</source>
<translation>*</translation>
</message>
@@ -6623,7 +6652,7 @@ Veuillez choisir un nom de fichier différent.</translation>
<context>
<name>QWizard</name>
<message>
- <location filename="../src/gui/dialogs/qwizard.cpp" line="+605"/>
+ <location filename="../src/gui/dialogs/qwizard.cpp" line="+637"/>
<source>Go Back</source>
<translation>Précédent</translation>
</message>
@@ -6685,7 +6714,7 @@ Veuillez choisir un nom de fichier différent.</translation>
<context>
<name>QWorkspace</name>
<message>
- <location filename="../src/gui/widgets/qworkspace.cpp" line="+1064"/>
+ <location filename="../src/gui/widgets/qworkspace.cpp" line="+1094"/>
<source>&amp;Restore</source>
<translation>&amp;Restaurer</translation>
</message>
@@ -6755,7 +6784,7 @@ Veuillez choisir un nom de fichier différent.</translation>
<context>
<name>QXml</name>
<message>
- <location filename="../src/xml/sax/qxml.cpp" line="+28"/>
+ <location filename="../src/xml/sax/qxml.cpp" line="+58"/>
<source>no error occurred</source>
<translation>aucune erreur ne s&apos;est produite</translation>
</message>
@@ -6873,8 +6902,8 @@ Veuillez choisir un nom de fichier différent.</translation>
<context>
<name>QXmlStream</name>
<message>
- <location filename="../src/corelib/xml/qxmlstream.cpp" line="+562"/>
- <location filename="../src/corelib/xml/qxmlstream_p.h" line="+1739"/>
+ <location filename="../src/corelib/xml/qxmlstream.cpp" line="+592"/>
+ <location filename="../src/corelib/xml/qxmlstream_p.h" line="+1769"/>
<source>Extra content at end of document.</source>
<translation>Conteny supplémentaire à la fin du document.</translation>
</message>
@@ -7062,7 +7091,7 @@ Veuillez choisir un nom de fichier différent.</translation>
<context>
<name>QtXmlPatterns</name>
<message>
- <location filename="../src/xmlpatterns/acceltree/qacceltreebuilder.cpp" line="+175"/>
+ <location filename="../src/xmlpatterns/acceltree/qacceltreebuilder.cpp" line="+205"/>
<source>An %1-attribute with value %2 has already been declared.</source>
<translation>Un attribute %1 avec la valeur %2 est déjà déclaré.</translation>
</message>
@@ -7072,12 +7101,12 @@ Veuillez choisir un nom de fichier différent.</translation>
<translation>Un attribute %1 doit avoir un %2 valide, %3 ne l&apos;a pas.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/api/qiodevicedelegate.cpp" line="+54"/>
+ <location filename="../src/xmlpatterns/api/qiodevicedelegate.cpp" line="+84"/>
<source>Network timeout.</source>
<translation>Le réseau ne répond pas.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/api/qxmlserializer.cpp" line="+290"/>
+ <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>L&apos;élément %1 ne peut pas être sérialisé parce qu&apos;il est hors de l&apos;élément document.</translation>
</message>
@@ -7086,7 +7115,7 @@ Veuillez choisir un nom de fichier différent.</translation>
<translation type="obsolete">L&apos;élément attribute %1 ne peut pas être sérialisé parce qu&apos;il apparaît comme racine.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qabstractdatetime.cpp" line="+50"/>
+ <location filename="../src/xmlpatterns/data/qabstractdatetime.cpp" line="+80"/>
<source>Year %1 is invalid because it begins with %2.</source>
<translation>L&apos;année %1 est invalide parce qu&apos;elle commence par %2.</translation>
</message>
@@ -7126,7 +7155,7 @@ Veuillez choisir un nom de fichier différent.</translation>
<translation>Overflow : la date ne peut pas être représentée.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qabstractduration.cpp" line="+69"/>
+ <location filename="../src/xmlpatterns/data/qabstractduration.cpp" line="+99"/>
<location line="+15"/>
<source>At least one component must be present.</source>
<translation>Au moins un composant doit être présent.</translation>
@@ -7137,7 +7166,7 @@ Veuillez choisir un nom de fichier différent.</translation>
<translation>Au moins un composant doit apparaître après le délimiteur %1.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qabstractfloatmathematician.cpp" line="+34"/>
+ <location filename="../src/xmlpatterns/data/qabstractfloatmathematician.cpp" line="+64"/>
<source>No operand in an integer division, %1, can be %2.</source>
<translation>Pas d&apos;opérande dans une division entière, %1, peut être %2.</translation>
</message>
@@ -7152,17 +7181,17 @@ Veuillez choisir un nom de fichier différent.</translation>
<translation>Le second opérande dans une division, %1, ne peut être nul (%2).</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qanyuri_p.h" line="+102"/>
+ <location filename="../src/xmlpatterns/data/qanyuri_p.h" line="+132"/>
<source>%1 is not a valid value of type %2.</source>
<translation>%1 n&apos;est pas une valeur valide du type %2.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qatomiccasters_p.h" line="+193"/>
+ <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>En castant de %2 vers %1, la valeur source ne peut pas être %3.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qatomicmathematicians.cpp" line="+35"/>
+ <location filename="../src/xmlpatterns/data/qatomicmathematicians.cpp" line="+65"/>
<source>Integer division (%1) by zero (%2) is undefined.</source>
<translation>Division entière (%1) par zéro (%2) indéfinie.</translation>
</message>
@@ -7193,17 +7222,17 @@ Veuillez choisir un nom de fichier différent.</translation>
<translation>La multiplication d&apos;une valeur du type %1 par %2 ou %3 (plus ou moins infini) est interdite.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qatomicvalue.cpp" line="+49"/>
+ <location filename="../src/xmlpatterns/data/qatomicvalue.cpp" line="+79"/>
<source>A value of type %1 cannot have an Effective Boolean Value.</source>
<translation>Une valeur de type %1 ne peut pas avoir une Effective Boolean Value.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qboolean.cpp" line="+48"/>
+ <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>Effective Boolean Value ne peut être calculée pour une séquence contenant deux ou plus valeurs atomiques.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qderivedinteger_p.h" line="+372"/>
+ <location filename="../src/xmlpatterns/data/qderivedinteger_p.h" line="+402"/>
<source>Value %1 of type %2 exceeds maximum (%3).</source>
<translation>La valeur %1 de type %2 excède le maximum (%3).</translation>
</message>
@@ -7213,7 +7242,7 @@ Veuillez choisir un nom de fichier différent.</translation>
<translation>La valeur %1 de type %2 est inférieur au minimum (%3).</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qhexbinary.cpp" line="+61"/>
+ <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>Une valeur de type %1 doit contenir un nombre pair de chiffre. La valeur %2 n&apos;est pas conforme.</translation>
</message>
@@ -7223,7 +7252,7 @@ Veuillez choisir un nom de fichier différent.</translation>
<translation>%1 n&apos;est pas une valeur valide de type %2.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qarithmeticexpression.cpp" line="+177"/>
+ <location filename="../src/xmlpatterns/expr/qarithmeticexpression.cpp" line="+207"/>
<source>Operator %1 cannot be used on type %2.</source>
<translation>L&apos;opérateur %1 ne peut pas être utilisé pour le type %2.</translation>
</message>
@@ -7233,7 +7262,7 @@ Veuillez choisir un nom de fichier différent.</translation>
<translation>L&apos;opérateur %1 ne peut pas être utilisé pour des valeurs atomiques de type %2 ou %3.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qattributenamevalidator.cpp" line="+36"/>
+ <location filename="../src/xmlpatterns/expr/qattributenamevalidator.cpp" line="+66"/>
<source>The namespace URI in the name for a computed attribute cannot be %1.</source>
<translation>L&apos;URI de namespace dans le nom d&apos;un attribut calculé ne peut pas être %1.</translation>
</message>
@@ -7243,7 +7272,7 @@ Veuillez choisir un nom de fichier différent.</translation>
<translation>Le nom d&apos;un attribut calculé ne peut pas avoir l&apos;URI de namespace %1 avec le nom local %2.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qcastas.cpp" line="+58"/>
+ <location filename="../src/xmlpatterns/expr/qcastas.cpp" line="+88"/>
<source>Type error in cast, expected %1, received %2.</source>
<translation>Erreur de type lors du cast, attendu %1 mais reçu %2.</translation>
</message>
@@ -7253,7 +7282,7 @@ Veuillez choisir un nom de fichier différent.</translation>
<translation>En castant vers %1 ou des types dérivés, la valeur source doit être du même type ou une chaîne. Le type %2 n&apos;est pas autorisé.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qcastingplatform.cpp" line="+104"/>
+ <location filename="../src/xmlpatterns/expr/qcastingplatform.cpp" line="+134"/>
<source>No casting is possible with %1 as the target type.</source>
<translation>Aucun cast n&apos;est possible avec %1 comme type de destination.</translation>
</message>
@@ -7278,7 +7307,7 @@ Veuillez choisir un nom de fichier différent.</translation>
<translation>Echec en castant de %1 ver %2 : %3</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qcommentconstructor.cpp" line="+37"/>
+ <location filename="../src/xmlpatterns/expr/qcommentconstructor.cpp" line="+67"/>
<source>A comment cannot contain %1</source>
<translation>Un commentaire ne peut pas contenir %1</translation>
</message>
@@ -7288,7 +7317,7 @@ Veuillez choisir un nom de fichier différent.</translation>
<translation>Un commentaire ne peut pas finir par %1.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qcomparisonplatform.cpp" line="+137"/>
+ <location filename="../src/xmlpatterns/expr/qcomparisonplatform.cpp" line="+167"/>
<source>No comparisons can be done involving the type %1.</source>
<translation>Aucune comparaison ne peut être faite avec le type %1.</translation>
</message>
@@ -7298,12 +7327,12 @@ Veuillez choisir un nom de fichier différent.</translation>
<translation>L&apos;opérateur %1 n&apos;est pas disponible entre valeurs atomiques de type %2 et %3.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qdocumentcontentvalidator.cpp" line="+56"/>
+ <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>Un noeuds attribut ne peut être un fils d&apos;un noeuds document. C&apos;est pourquoi l&apos;attribut %1 est mal placé.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qexpressionfactory.cpp" line="+139"/>
+ <location filename="../src/xmlpatterns/expr/qexpressionfactory.cpp" line="+169"/>
<source>A library module cannot be evaluated directly. It must be imported from a main module.</source>
<translation>Un module de bibliothèque ne peut pas être évalué directement. Il doit être importé d&apos;un module principal.</translation>
</message>
@@ -7313,7 +7342,7 @@ Veuillez choisir un nom de fichier différent.</translation>
<translation>Aucun template nommé %1 n&apos;existe.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qgenericpredicate.cpp" line="+76"/>
+ <location filename="../src/xmlpatterns/expr/qgenericpredicate.cpp" line="+106"/>
<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>Une valeur de type %1 ne peut être un prédicat. Un prédicat doit être de type numérique ou un Effective Boolean Value.</translation>
</message>
@@ -7323,7 +7352,7 @@ Veuillez choisir un nom de fichier différent.</translation>
<translation>Un prédicat de position doit être évalué en une unique valeur numérique.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qncnameconstructor_p.h" line="+83"/>
+ <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>Le nom de destination dans une instruction de traitement ne peut être %1. %2 est invalide.</translation>
</message>
@@ -7333,33 +7362,33 @@ Veuillez choisir un nom de fichier différent.</translation>
<translation>%1 n&apos;est pas un nom de destination valide dans une instruction de traitement. Ce doit être une valeur %2, par ex. %3.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qpath.cpp" line="+79"/>
+ <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>La dernière étape dans un chemin doit contenir soit des noeuds soit des valeurs atomiques. Cela ne peut pas être un mélange des deux.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qprocessinginstructionconstructor.cpp" line="+54"/>
+ <location filename="../src/xmlpatterns/expr/qprocessinginstructionconstructor.cpp" line="+84"/>
<source>The data of a processing instruction cannot contain the string %1</source>
<translation>Les données d&apos;une instruction de traitement ne peut contenir la chaîne %1</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qqnameconstructor.cpp" line="+52"/>
+ <location filename="../src/xmlpatterns/expr/qqnameconstructor.cpp" line="+82"/>
<source>No namespace binding exists for the prefix %1</source>
<translation>Aucun lien de namespace n&apos;existe pour le préfixe %1</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qqnameconstructor_p.h" line="+126"/>
+ <location filename="../src/xmlpatterns/expr/qqnameconstructor_p.h" line="+156"/>
<source>No namespace binding exists for the prefix %1 in %2</source>
<translation>Aucun lien de namespace n&apos;existe pour le préfixe %1 dans %2</translation>
</message>
<message>
<location line="+12"/>
- <location filename="../src/xmlpatterns/functions/qqnamefns.cpp" line="+39"/>
+ <location filename="../src/xmlpatterns/functions/qqnamefns.cpp" line="+69"/>
<source>%1 is an invalid %2</source>
<translation>%1 est un ivalide %2</translation>
</message>
<message numerus="yes">
- <location filename="../src/xmlpatterns/functions/qabstractfunctionfactory.cpp" line="+47"/>
+ <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 prend au maximum %n argument. %2 est donc invalide.</numerusform>
@@ -7375,7 +7404,7 @@ Veuillez choisir un nom de fichier différent.</translation>
</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qaggregatefns.cpp" line="+90"/>
+ <location filename="../src/xmlpatterns/functions/qaggregatefns.cpp" line="+120"/>
<source>The first argument to %1 cannot be of type %2. It must be a numeric type, xs:yearMonthDuration or xs:dayTimeDuration.</source>
<translation>Le premier argument de %1 ne peut être du type %2. Il doit être de type numérique, xs:yearMonthDuration ou xs:dayTimeDuration.</translation>
</message>
@@ -7390,27 +7419,27 @@ Veuillez choisir un nom de fichier différent.</translation>
<translation>Le deuxième argument de %1 ne peut être du type %2. Il doit être de type %3, %4 ou %5.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qassemblestringfns.cpp" line="+58"/>
+ <location filename="../src/xmlpatterns/functions/qassemblestringfns.cpp" line="+88"/>
<source>%1 is not a valid XML 1.0 character.</source>
<translation>%1 n&apos;est pas un caractère XML 1.0 valide.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qcomparingaggregator.cpp" line="+167"/>
+ <location filename="../src/xmlpatterns/functions/qcomparingaggregator.cpp" line="+197"/>
<source>The first argument to %1 cannot be of type %2.</source>
<translation>Le premier argument de %1 ne peut être du type %2.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qdatetimefn.cpp" line="+56"/>
+ <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>Si les deux valeurs ont des décalages de zone, elle doivent avoir le même. %1 et %2 sont différents.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qerrorfn.cpp" line="+31"/>
+ <location filename="../src/xmlpatterns/functions/qerrorfn.cpp" line="+61"/>
<source>%1 was called.</source>
<translation>%1 a été appelé.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qpatternmatchingfns.cpp" line="+64"/>
+ <location filename="../src/xmlpatterns/functions/qpatternmatchingfns.cpp" line="+94"/>
<source>%1 must be followed by %2 or %3, not at the end of the replacement string.</source>
<translation>%1 doit être suivi par %2 ou %3, et non à la fin de la chaîne de remplacement.</translation>
</message>
@@ -7425,7 +7454,7 @@ Veuillez choisir un nom de fichier différent.</translation>
<translation>Dans la chaîne de remplacement, %1 peut seulement être utilisé pour échapper lui-même ou %2 mais pas %3</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qpatternplatform.cpp" line="+62"/>
+ <location filename="../src/xmlpatterns/functions/qpatternplatform.cpp" line="+92"/>
<source>%1 matches newline characters</source>
<translation>%1 correspond à des caractères de saut de ligne</translation>
</message>
@@ -7460,17 +7489,17 @@ Veuillez choisir un nom de fichier différent.</translation>
<translation>Si le premier argument est une sequence vide ou un chaîne vide (sans namespace), un préfixe ne peut être spécifié. Le préfixe %1 a été spécifié.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qsequencefns.cpp" line="+317"/>
+ <location filename="../src/xmlpatterns/functions/qsequencefns.cpp" line="+347"/>
<source>It will not be possible to retrieve %1.</source>
<translation>Il sera impossible de récupérer %1.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qcontextnodechecker.cpp" line="+24"/>
+ <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>Le noeuds racine du deuxième argument à la fonction %1 doit être un noeuds document. %2 n&apos;est pas un document.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qsequencegeneratingfns.cpp" line="+249"/>
+ <location filename="../src/xmlpatterns/functions/qsequencegeneratingfns.cpp" line="+279"/>
<source>The default collection is undefined</source>
<translation>I&apos;l n&apos;y a pas de collection par défaut</translation>
</message>
@@ -7480,12 +7509,12 @@ Veuillez choisir un nom de fichier différent.</translation>
<translation>%1 ne peut pas être récupéré</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qstringvaluefns.cpp" line="+222"/>
+ <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>Le forme de normalisation %1 n&apos;est pas supportée. Les formes supportées sont %2, %3, %4 et %5, et aucun, ie. une chaîne vide (pas de normalisation).</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qtimezonefns.cpp" line="+57"/>
+ <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>Un décalage de zone doit être dans l&apos;intervalle %1..%2 inclus. %3 est hors de l&apos;intervalle.</translation>
</message>
@@ -7494,17 +7523,17 @@ Veuillez choisir un nom de fichier différent.</translation>
<translation type="obsolete">%1 n&apos;est pas un nombre complet de minutes.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/janitors/qcardinalityverifier.cpp" line="+28"/>
+ <location filename="../src/xmlpatterns/janitors/qcardinalityverifier.cpp" line="+58"/>
<source>Required cardinality is %1; got cardinality %2.</source>
<translation>La cardinalité requise est %1; reçu %2.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/janitors/qitemverifier.cpp" line="+37"/>
+ <location filename="../src/xmlpatterns/janitors/qitemverifier.cpp" line="+67"/>
<source>The item %1 did not match the required type %2.</source>
<translation>L&apos;item %1 ne correspond pas au type requis %2.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="+319"/>
+ <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="+379"/>
<location line="+7253"/>
<source>%1 is an unknown schema type.</source>
<translation>%1 est un type de schema inconnu.</translation>
@@ -7525,7 +7554,7 @@ Veuillez choisir un nom de fichier différent.</translation>
<translation>Aucun variable nommée %1 existe</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/parser/qparsercontext.cpp" line="+63"/>
+ <location filename="../src/xmlpatterns/parser/qparsercontext.cpp" line="+93"/>
<source>The variable %1 is unused</source>
<translation>La variable %1 est inutilisée</translation>
</message>
@@ -7823,7 +7852,7 @@ Veuillez choisir un nom de fichier différent.</translation>
<translation>Le nom d&apos;une expression d&apos;extension doit être dans un namespace.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/type/qcardinality.cpp" line="+25"/>
+ <location filename="../src/xmlpatterns/type/qcardinality.cpp" line="+55"/>
<source>empty</source>
<translation>vide</translation>
</message>
@@ -7848,7 +7877,7 @@ Veuillez choisir un nom de fichier différent.</translation>
<translation>zéro ou plus</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/type/qtypechecker.cpp" line="+33"/>
+ <location filename="../src/xmlpatterns/type/qtypechecker.cpp" line="+63"/>
<source>Required type is %1, but %2 was found.</source>
<translation>Le type requis est %1, mais %2 a été reçu.</translation>
</message>
@@ -7863,7 +7892,7 @@ Veuillez choisir un nom de fichier différent.</translation>
<translation>Le focus est indéfini.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/utils/qoutputvalidator.cpp" line="+56"/>
+ <location filename="../src/xmlpatterns/utils/qoutputvalidator.cpp" line="+86"/>
<source>It&apos;s not possible to add attributes after any other kind of node.</source>
<translation>Il est impossible d&apos;ajouter des attributs après un autre type de noeuds.</translation>
</message>
@@ -7873,7 +7902,7 @@ Veuillez choisir un nom de fichier différent.</translation>
<translation>Un attribute de nom %1 a déjà été créé.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/utils/qxpathhelper_p.h" line="+90"/>
+ <location filename="../src/xmlpatterns/utils/qxpathhelper_p.h" line="+120"/>
<source>Only the Unicode Codepoint Collation is supported(%1). %2 is unsupported.</source>
<translation>Seule le Unicode CodepointCollation est supporté (%1), %2 n&apos;est pas supporté.</translation>
</message>
@@ -7888,7 +7917,7 @@ Veuillez choisir un nom de fichier différent.</translation>
<translation>L&apos;attribut %1 ne peut pas être sérialisé car il apparaît à la racine.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/acceltree/qacceltreeresourceloader.cpp" line="+284"/>
+ <location filename="../src/xmlpatterns/acceltree/qacceltreeresourceloader.cpp" line="+314"/>
<source>%1 is an unsupported encoding.</source>
<translation>%1 est un encodage non supporté.</translation>
</message>
@@ -7903,14 +7932,18 @@ Veuillez choisir un nom de fichier différent.</translation>
<translation>Le codepoint %1 dans %2 et utilisant l&apos;encodage %3 est un caractère XML invalide.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qapplytemplate.cpp" line="+89"/>
+ <location filename="../src/xmlpatterns/expr/qapplytemplate.cpp" line="+119"/>
<source>Ambiguous rule match.</source>
<translation>Corresonpdance aux règles ambigüe.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qcomputednamespaceconstructor.cpp" line="+39"/>
<source>In a namespace constructor, the value for a namespace value cannot be an empty string.</source>
- <translation>Dans un cosntructeur de namespace, la valeur pour un namespace ne peut pas être une chaîne vide.</translation>
+ <translation type="obsolete">Dans un cosntructeur de namespace, la valeur pour un namespace ne peut pas être une chaîne vide.</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 type="unfinished"></translation>
</message>
<message>
<location line="+11"/>
@@ -7928,12 +7961,12 @@ Veuillez choisir un nom de fichier différent.</translation>
<translation>Seul le préfixe %1 peut être lié à %2, et vice versa.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qevaluationcache.cpp" line="+87"/>
+ <location filename="../src/xmlpatterns/expr/qevaluationcache.cpp" line="+117"/>
<source>Circularity detected</source>
<translation>Circularité détectée</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qtemplate.cpp" line="+115"/>
+ <location filename="../src/xmlpatterns/expr/qtemplate.cpp" line="+145"/>
<source>The parameter %1 is required, but no corresponding %2 is supplied.</source>
<translation>Le paramètre %1 est requis, mais aucun %2 correspondant n&apos;est fourni.</translation>
</message>
@@ -7943,12 +7976,12 @@ Veuillez choisir un nom de fichier différent.</translation>
<translation>Le paramètre %1 est passé mais aucun %2 correspondant n&apos;existe.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qunparsedtextfn.cpp" line="+35"/>
+ <location filename="../src/xmlpatterns/functions/qunparsedtextfn.cpp" line="+65"/>
<source>The URI cannot have a fragment</source>
<translation>L&apos;URI ne peut pas avoir de fragments</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/parser/qxslttokenizer.cpp" line="+489"/>
+ <location filename="../src/xmlpatterns/parser/qxslttokenizer.cpp" line="+519"/>
<source>Element %1 is not allowed at this location.</source>
<translation>L&apos;élément %1 n&apos;est pas autorisé à cet emplacement.</translation>
</message>
@@ -8003,7 +8036,7 @@ Veuillez choisir un nom de fichier différent.</translation>
<translation>Au moins un mode doit être spécifié dans l&apos;attribut %1 sur l&apos;élément %2.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/parser/qmaintainingreader.cpp" line="+153"/>
+ <location filename="../src/xmlpatterns/parser/qmaintainingreader.cpp" line="+183"/>
<source>Attribute %1 cannot appear on the element %2. Only the standard attributes can appear.</source>
<translation>L&apos;attribut %1 ne peut pas apparaître sur l&apos;élément %2. Seuls les attributs standard le peuvent.</translation>
</message>
@@ -8078,7 +8111,7 @@ Veuillez choisir un nom de fichier différent.</translation>
<translation>L&apos;élément %1 ne peut pas avoir de fils.</translation>
</message>
<message>
- <location line="+432"/>
+ <location line="+434"/>
<source>Element %1 cannot have a sequence constructor.</source>
<translation>L&apos;élément %1 ne peut pas avoir un constructuer de séquence.</translation>
</message>
diff --git a/translations/qt_help_de.qm b/translations/qt_help_de.qm
index e28a97e..e3d8d87 100644
--- a/translations/qt_help_de.qm
+++ b/translations/qt_help_de.qm
Binary files differ
diff --git a/translations/qt_help_de.ts b/translations/qt_help_de.ts
index 45ddf03..8f67ec3 100644
--- a/translations/qt_help_de.ts
+++ b/translations/qt_help_de.ts
@@ -1,10 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS><TS version="2.0" language="de">
-<defaultcodec></defaultcodec>
+<!DOCTYPE TS>
+<TS version="2.0" language="de">
<context>
<name>QCLuceneResultWidget</name>
<message>
- <location filename="../tools/assistant/lib/qhelpsearchresultwidget.cpp" line="+80"/>
+ <location filename="../tools/assistant/lib/qhelpsearchresultwidget.cpp" line="+110"/>
<source>Search Results</source>
<translation>Ergebnisse</translation>
</message>
@@ -32,14 +32,14 @@
<context>
<name>QHelpCollectionHandler</name>
<message>
- <location filename="../tools/assistant/lib/qhelpcollectionhandler.cpp" line="+49"/>
+ <location filename="../tools/assistant/lib/qhelpcollectionhandler.cpp" line="+79"/>
<source>The collection file is not set up yet!</source>
<translation>Das &quot;Collection File&quot; ist noch nicht eingerichtet.</translation>
</message>
<message>
<location line="+22"/>
<source>Cannot load sqlite database driver!</source>
- <translation type="unfinished"></translation>
+ <translation>Der Datenbanktreiber für SQLite kann nicht geladen werden!</translation>
</message>
<message>
<location line="+11"/>
@@ -111,7 +111,7 @@
<context>
<name>QHelpDBReader</name>
<message>
- <location filename="../tools/assistant/lib/qhelpdbreader.cpp" line="+65"/>
+ <location filename="../tools/assistant/lib/qhelpdbreader.cpp" line="+95"/>
<source>Cannot open database &apos;%1&apos; &apos;%2&apos;: %3</source>
<translation>Kann Datenbank nicht öffnen: &apos;%1&apos; &apos;%2&apos;: %3</translation>
</message>
@@ -119,7 +119,7 @@
<context>
<name>QHelpEngineCore</name>
<message>
- <location filename="../tools/assistant/lib/qhelpenginecore.cpp" line="+482"/>
+ <location filename="../tools/assistant/lib/qhelpenginecore.cpp" line="+516"/>
<source>The specified namespace does not exist!</source>
<translation>Der angegebene Namensraum existiert nicht!</translation>
</message>
@@ -127,7 +127,7 @@
<context>
<name>QHelpEngineCorePrivate</name>
<message>
- <location line="-390"/>
+ <location line="-394"/>
<source>Cannot open documentation file %1: %2!</source>
<translation>Kann Dokumentations-Datei nicht öffnen: %1: %2!</translation>
</message>
@@ -135,7 +135,7 @@
<context>
<name>QHelpGenerator</name>
<message>
- <location filename="../tools/assistant/lib/qhelpgenerator.cpp" line="+127"/>
+ <location filename="../tools/assistant/lib/qhelpgenerator.cpp" line="+157"/>
<source>Invalid help data!</source>
<translation>Ungültige Hilfe-Daten!</translation>
</message>
@@ -180,7 +180,7 @@
<translation>Dokumentation erfolgreich generiert.</translation>
</message>
<message>
- <location line="+72"/>
+ <location line="+76"/>
<source>Some tables already exist!</source>
<translation>Einige Tabellen existieren bereits!</translation>
</message>
@@ -210,7 +210,7 @@
<translation>Kann Datei %1 nicht öffnen! Überspringe sie.</translation>
</message>
<message>
- <location line="+132"/>
+ <location line="+134"/>
<source>The filter %1 is already registered!</source>
<translation>Der Filter %1 is bereits registriert!</translation>
</message>
@@ -243,7 +243,7 @@
<context>
<name>QHelpSearchQueryWidget</name>
<message>
- <location filename="../tools/assistant/lib/qhelpsearchquerywidget.cpp" line="+170"/>
+ <location filename="../tools/assistant/lib/qhelpsearchquerywidget.cpp" line="+200"/>
<source>Search for:</source>
<translation>Suche nach:</translation>
</message>
@@ -286,7 +286,7 @@
<context>
<name>QHelpSearchResultWidget</name>
<message>
- <location filename="../tools/assistant/lib/qhelpsearchresultwidget.cpp" line="+232"/>
+ <location filename="../tools/assistant/lib/qhelpsearchresultwidget.cpp" line="+235"/>
<source>0 - 0 of 0 Hits</source>
<translation>0 - 0 von 0 Treffern</translation>
</message>
@@ -302,12 +302,12 @@
<context>
<name>QObject</name>
<message>
- <location filename="../tools/assistant/lib/qhelp_global.h" line="+53"/>
+ <location filename="../tools/assistant/lib/qhelp_global.h" line="+83"/>
<source>Untitled</source>
<translation>Ohne Titel</translation>
</message>
<message>
- <location filename="../tools/assistant/lib/qhelpprojectdata.cpp" line="+50"/>
+ <location filename="../tools/assistant/lib/qhelpprojectdata.cpp" line="+80"/>
<source>Unknown token.</source>
<translation>Unbekanntes Token.</translation>
</message>
diff --git a/translations/qt_help_ja.ts b/translations/qt_help_ja.ts
index 01ef482..5702cfd 100644
--- a/translations/qt_help_ja.ts
+++ b/translations/qt_help_ja.ts
@@ -1,9 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS><TS version="2.0">
+<!DOCTYPE TS>
+<TS version="2.0">
<context>
<name>QCLuceneResultWidget</name>
<message>
- <location filename="../tools/assistant/lib/qhelpsearchresultwidget.cpp" line="+80"/>
+ <location filename="../tools/assistant/lib/qhelpsearchresultwidget.cpp" line="+110"/>
<source>Search Results</source>
<translation type="unfinished"></translation>
</message>
@@ -31,7 +32,7 @@
<context>
<name>QHelpCollectionHandler</name>
<message>
- <location filename="../tools/assistant/lib/qhelpcollectionhandler.cpp" line="+49"/>
+ <location filename="../tools/assistant/lib/qhelpcollectionhandler.cpp" line="+79"/>
<source>The collection file is not set up yet!</source>
<translation type="unfinished"></translation>
</message>
@@ -110,7 +111,7 @@
<context>
<name>QHelpDBReader</name>
<message>
- <location filename="../tools/assistant/lib/qhelpdbreader.cpp" line="+65"/>
+ <location filename="../tools/assistant/lib/qhelpdbreader.cpp" line="+95"/>
<source>Cannot open database &apos;%1&apos; &apos;%2&apos;: %3</source>
<translation type="unfinished"></translation>
</message>
@@ -118,7 +119,7 @@
<context>
<name>QHelpEngineCore</name>
<message>
- <location filename="../tools/assistant/lib/qhelpenginecore.cpp" line="+482"/>
+ <location filename="../tools/assistant/lib/qhelpenginecore.cpp" line="+516"/>
<source>The specified namespace does not exist!</source>
<translation type="unfinished"></translation>
</message>
@@ -126,7 +127,7 @@
<context>
<name>QHelpEngineCorePrivate</name>
<message>
- <location line="-390"/>
+ <location line="-394"/>
<source>Cannot open documentation file %1: %2!</source>
<translation type="unfinished"></translation>
</message>
@@ -134,7 +135,7 @@
<context>
<name>QHelpGenerator</name>
<message>
- <location filename="../tools/assistant/lib/qhelpgenerator.cpp" line="+127"/>
+ <location filename="../tools/assistant/lib/qhelpgenerator.cpp" line="+157"/>
<source>Invalid help data!</source>
<translation type="unfinished"></translation>
</message>
@@ -179,7 +180,7 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+72"/>
+ <location line="+76"/>
<source>Some tables already exist!</source>
<translation type="unfinished"></translation>
</message>
@@ -209,7 +210,7 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+132"/>
+ <location line="+134"/>
<source>The filter %1 is already registered!</source>
<translation type="unfinished"></translation>
</message>
@@ -242,7 +243,7 @@
<context>
<name>QHelpSearchQueryWidget</name>
<message>
- <location filename="../tools/assistant/lib/qhelpsearchquerywidget.cpp" line="+170"/>
+ <location filename="../tools/assistant/lib/qhelpsearchquerywidget.cpp" line="+200"/>
<source>Search for:</source>
<translation type="unfinished"></translation>
</message>
@@ -285,7 +286,7 @@
<context>
<name>QHelpSearchResultWidget</name>
<message>
- <location filename="../tools/assistant/lib/qhelpsearchresultwidget.cpp" line="+232"/>
+ <location filename="../tools/assistant/lib/qhelpsearchresultwidget.cpp" line="+235"/>
<source>0 - 0 of 0 Hits</source>
<translation type="unfinished"></translation>
</message>
@@ -301,12 +302,12 @@
<context>
<name>QObject</name>
<message>
- <location filename="../tools/assistant/lib/qhelp_global.h" line="+53"/>
+ <location filename="../tools/assistant/lib/qhelp_global.h" line="+83"/>
<source>Untitled</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../tools/assistant/lib/qhelpprojectdata.cpp" line="+50"/>
+ <location filename="../tools/assistant/lib/qhelpprojectdata.cpp" line="+80"/>
<source>Unknown token.</source>
<translation type="unfinished"></translation>
</message>
diff --git a/translations/qt_help_pl.ts b/translations/qt_help_pl.ts
index 1b586bc..c85b46c 100644
--- a/translations/qt_help_pl.ts
+++ b/translations/qt_help_pl.ts
@@ -1,10 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS><TS version="2.0" language="pl">
-<defaultcodec></defaultcodec>
+<!DOCTYPE TS>
+<TS version="2.0" language="pl">
<context>
<name>QCLuceneResultWidget</name>
<message>
- <location filename="../tools/assistant/lib/qhelpsearchresultwidget.cpp" line="+80"/>
+ <location filename="../tools/assistant/lib/qhelpsearchresultwidget.cpp" line="+110"/>
<source>Search Results</source>
<translation>Wyniki wyszukiwania</translation>
</message>
@@ -32,7 +32,7 @@
<context>
<name>QHelpCollectionHandler</name>
<message>
- <location filename="../tools/assistant/lib/qhelpcollectionhandler.cpp" line="+49"/>
+ <location filename="../tools/assistant/lib/qhelpcollectionhandler.cpp" line="+79"/>
<source>The collection file is not set up yet!</source>
<translation>Plik z kolekcjÄ… nie jest jeszcze ustawiony!</translation>
</message>
@@ -115,7 +115,7 @@
<translation type="obsolete">Nie można otworzyć bazy danych!</translation>
</message>
<message>
- <location filename="../tools/assistant/lib/qhelpdbreader.cpp" line="+65"/>
+ <location filename="../tools/assistant/lib/qhelpdbreader.cpp" line="+95"/>
<source>Cannot open database &apos;%1&apos; &apos;%2&apos;: %3</source>
<translation>Nie można otworzyć bazy danych &apos;%1&apos; &apos;%2&apos;: %3</translation>
</message>
@@ -123,7 +123,7 @@
<context>
<name>QHelpEngineCore</name>
<message>
- <location filename="../tools/assistant/lib/qhelpenginecore.cpp" line="+482"/>
+ <location filename="../tools/assistant/lib/qhelpenginecore.cpp" line="+516"/>
<source>The specified namespace does not exist!</source>
<translation>Podana przestrzeń nazw nie istnieje!</translation>
</message>
@@ -131,7 +131,7 @@
<context>
<name>QHelpEngineCorePrivate</name>
<message>
- <location line="-390"/>
+ <location line="-394"/>
<source>Cannot open documentation file %1: %2!</source>
<translation>Nie można otworzyć pliku z dokumentacją %1: %2!</translation>
</message>
@@ -147,7 +147,7 @@
<context>
<name>QHelpGenerator</name>
<message>
- <location filename="../tools/assistant/lib/qhelpgenerator.cpp" line="+127"/>
+ <location filename="../tools/assistant/lib/qhelpgenerator.cpp" line="+157"/>
<source>Invalid help data!</source>
<translation>Niepoprawne dane pomocy!</translation>
</message>
@@ -200,7 +200,7 @@
<translation>Dokumentacja została poprawnie wygenerowana.</translation>
</message>
<message>
- <location line="+72"/>
+ <location line="+76"/>
<source>Some tables already exist!</source>
<translation>Niektóre tabele już istnieją!</translation>
</message>
@@ -230,7 +230,7 @@
<translation>Nie można otworzyć pliku %1! Zostaje on opuszczony.</translation>
</message>
<message>
- <location line="+132"/>
+ <location line="+134"/>
<source>The filter %1 is already registered!</source>
<translation>Filtr %1 jest już zarejestrowany!</translation>
</message>
@@ -263,7 +263,7 @@
<context>
<name>QHelpSearchQueryWidget</name>
<message>
- <location filename="../tools/assistant/lib/qhelpsearchquerywidget.cpp" line="+170"/>
+ <location filename="../tools/assistant/lib/qhelpsearchquerywidget.cpp" line="+200"/>
<source>Search for:</source>
<translation>Wyszukaj:</translation>
</message>
@@ -306,7 +306,7 @@
<context>
<name>QHelpSearchResultWidget</name>
<message>
- <location filename="../tools/assistant/lib/qhelpsearchresultwidget.cpp" line="+232"/>
+ <location filename="../tools/assistant/lib/qhelpsearchresultwidget.cpp" line="+235"/>
<source>0 - 0 of 0 Hits</source>
<translation>0 - 0 z 0 Trafień</translation>
</message>
@@ -322,7 +322,7 @@
<context>
<name>QObject</name>
<message>
- <location filename="../tools/assistant/lib/qhelp_global.h" line="+53"/>
+ <location filename="../tools/assistant/lib/qhelp_global.h" line="+83"/>
<source>Untitled</source>
<translation>Nienazwany</translation>
</message>
@@ -335,7 +335,7 @@
<translation type="obsolete">Nieznany znak w linii %1. Spodziewano siÄ™ &quot;QtHelpProject&quot;!</translation>
</message>
<message>
- <location filename="../tools/assistant/lib/qhelpprojectdata.cpp" line="+50"/>
+ <location filename="../tools/assistant/lib/qhelpprojectdata.cpp" line="+80"/>
<source>Unknown token.</source>
<translation>Nieznany znak.</translation>
</message>
diff --git a/translations/qt_help_untranslated.ts b/translations/qt_help_untranslated.ts
index 01ef482..5702cfd 100644
--- a/translations/qt_help_untranslated.ts
+++ b/translations/qt_help_untranslated.ts
@@ -1,9 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS><TS version="2.0">
+<!DOCTYPE TS>
+<TS version="2.0">
<context>
<name>QCLuceneResultWidget</name>
<message>
- <location filename="../tools/assistant/lib/qhelpsearchresultwidget.cpp" line="+80"/>
+ <location filename="../tools/assistant/lib/qhelpsearchresultwidget.cpp" line="+110"/>
<source>Search Results</source>
<translation type="unfinished"></translation>
</message>
@@ -31,7 +32,7 @@
<context>
<name>QHelpCollectionHandler</name>
<message>
- <location filename="../tools/assistant/lib/qhelpcollectionhandler.cpp" line="+49"/>
+ <location filename="../tools/assistant/lib/qhelpcollectionhandler.cpp" line="+79"/>
<source>The collection file is not set up yet!</source>
<translation type="unfinished"></translation>
</message>
@@ -110,7 +111,7 @@
<context>
<name>QHelpDBReader</name>
<message>
- <location filename="../tools/assistant/lib/qhelpdbreader.cpp" line="+65"/>
+ <location filename="../tools/assistant/lib/qhelpdbreader.cpp" line="+95"/>
<source>Cannot open database &apos;%1&apos; &apos;%2&apos;: %3</source>
<translation type="unfinished"></translation>
</message>
@@ -118,7 +119,7 @@
<context>
<name>QHelpEngineCore</name>
<message>
- <location filename="../tools/assistant/lib/qhelpenginecore.cpp" line="+482"/>
+ <location filename="../tools/assistant/lib/qhelpenginecore.cpp" line="+516"/>
<source>The specified namespace does not exist!</source>
<translation type="unfinished"></translation>
</message>
@@ -126,7 +127,7 @@
<context>
<name>QHelpEngineCorePrivate</name>
<message>
- <location line="-390"/>
+ <location line="-394"/>
<source>Cannot open documentation file %1: %2!</source>
<translation type="unfinished"></translation>
</message>
@@ -134,7 +135,7 @@
<context>
<name>QHelpGenerator</name>
<message>
- <location filename="../tools/assistant/lib/qhelpgenerator.cpp" line="+127"/>
+ <location filename="../tools/assistant/lib/qhelpgenerator.cpp" line="+157"/>
<source>Invalid help data!</source>
<translation type="unfinished"></translation>
</message>
@@ -179,7 +180,7 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+72"/>
+ <location line="+76"/>
<source>Some tables already exist!</source>
<translation type="unfinished"></translation>
</message>
@@ -209,7 +210,7 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+132"/>
+ <location line="+134"/>
<source>The filter %1 is already registered!</source>
<translation type="unfinished"></translation>
</message>
@@ -242,7 +243,7 @@
<context>
<name>QHelpSearchQueryWidget</name>
<message>
- <location filename="../tools/assistant/lib/qhelpsearchquerywidget.cpp" line="+170"/>
+ <location filename="../tools/assistant/lib/qhelpsearchquerywidget.cpp" line="+200"/>
<source>Search for:</source>
<translation type="unfinished"></translation>
</message>
@@ -285,7 +286,7 @@
<context>
<name>QHelpSearchResultWidget</name>
<message>
- <location filename="../tools/assistant/lib/qhelpsearchresultwidget.cpp" line="+232"/>
+ <location filename="../tools/assistant/lib/qhelpsearchresultwidget.cpp" line="+235"/>
<source>0 - 0 of 0 Hits</source>
<translation type="unfinished"></translation>
</message>
@@ -301,12 +302,12 @@
<context>
<name>QObject</name>
<message>
- <location filename="../tools/assistant/lib/qhelp_global.h" line="+53"/>
+ <location filename="../tools/assistant/lib/qhelp_global.h" line="+83"/>
<source>Untitled</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../tools/assistant/lib/qhelpprojectdata.cpp" line="+50"/>
+ <location filename="../tools/assistant/lib/qhelpprojectdata.cpp" line="+80"/>
<source>Unknown token.</source>
<translation type="unfinished"></translation>
</message>
diff --git a/translations/qt_help_zh_CN.ts b/translations/qt_help_zh_CN.ts
index 0f2d3ed..cc100b7 100644
--- a/translations/qt_help_zh_CN.ts
+++ b/translations/qt_help_zh_CN.ts
@@ -1,11 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.0" language="zh">
-<defaultcodec></defaultcodec>
<context>
<name>QCLuceneResultWidget</name>
<message>
- <location filename="../tools/assistant/lib/qhelpsearchresultwidget.cpp" line="+80"/>
+ <location filename="../tools/assistant/lib/qhelpsearchresultwidget.cpp" line="+110"/>
<source>Search Results</source>
<translation>æœç´¢ç»“æžœ</translation>
</message>
@@ -33,7 +32,7 @@
<context>
<name>QHelpCollectionHandler</name>
<message>
- <location filename="../tools/assistant/lib/qhelpcollectionhandler.cpp" line="+49"/>
+ <location filename="../tools/assistant/lib/qhelpcollectionhandler.cpp" line="+79"/>
<source>The collection file is not set up yet!</source>
<translation>还没有设置收è—文件呢ï¼</translation>
</message>
@@ -116,7 +115,7 @@
<translation type="obsolete">ä¸èƒ½æ‰“开数æ®åº“ï¼</translation>
</message>
<message>
- <location filename="../tools/assistant/lib/qhelpdbreader.cpp" line="+65"/>
+ <location filename="../tools/assistant/lib/qhelpdbreader.cpp" line="+95"/>
<source>Cannot open database &apos;%1&apos; &apos;%2&apos;: %3</source>
<translation>ä¸èƒ½æ‰“开数æ®åº““%1†“%2â€ï¼š%3</translation>
</message>
@@ -124,7 +123,7 @@
<context>
<name>QHelpEngineCore</name>
<message>
- <location filename="../tools/assistant/lib/qhelpenginecore.cpp" line="+482"/>
+ <location filename="../tools/assistant/lib/qhelpenginecore.cpp" line="+516"/>
<source>The specified namespace does not exist!</source>
<translation>指定的命å空间ä¸å­˜åœ¨ï¼</translation>
</message>
@@ -132,7 +131,7 @@
<context>
<name>QHelpEngineCorePrivate</name>
<message>
- <location line="-390"/>
+ <location line="-394"/>
<source>Cannot open documentation file %1: %2!</source>
<translation>ä¸èƒ½æ‰“开文档文件%1:%2ï¼</translation>
</message>
@@ -144,7 +143,7 @@
<context>
<name>QHelpGenerator</name>
<message>
- <location filename="../tools/assistant/lib/qhelpgenerator.cpp" line="+127"/>
+ <location filename="../tools/assistant/lib/qhelpgenerator.cpp" line="+157"/>
<source>Invalid help data!</source>
<translation>无效的帮助数æ®ï¼</translation>
</message>
@@ -179,7 +178,7 @@
<translation>文档已ç»è¢«æˆåŠŸç”Ÿæˆã€‚</translation>
</message>
<message>
- <location line="+72"/>
+ <location line="+76"/>
<source>Some tables already exist!</source>
<translation>一些表格已ç»å­˜åœ¨ï¼</translation>
</message>
@@ -209,7 +208,7 @@
<translation>ä¸èƒ½æ‰“开文件 %1ï¼æ­£åœ¨å¿½ç•¥å®ƒã€‚</translation>
</message>
<message>
- <location line="+132"/>
+ <location line="+134"/>
<source>The filter %1 is already registered!</source>
<translation>过滤器 %1 å·²ç»è¢«æ³¨å†Œï¼</translation>
</message>
@@ -239,7 +238,7 @@
<translation>ä¸èƒ½æ³¨å†Œå†…容ï¼</translation>
</message>
<message>
- <location line="-603"/>
+ <location line="-609"/>
<source>The file %1 cannot be overwritten!</source>
<translation>文件 %1 ä¸èƒ½è¢«è¦†ç›–ï¼</translation>
</message>
@@ -252,7 +251,7 @@
<context>
<name>QHelpSearchQueryWidget</name>
<message>
- <location filename="../tools/assistant/lib/qhelpsearchquerywidget.cpp" line="+170"/>
+ <location filename="../tools/assistant/lib/qhelpsearchquerywidget.cpp" line="+200"/>
<source>Search for:</source>
<translation>æœç´¢ï¼š</translation>
</message>
@@ -295,7 +294,7 @@
<context>
<name>QHelpSearchResultWidget</name>
<message>
- <location filename="../tools/assistant/lib/qhelpsearchresultwidget.cpp" line="+232"/>
+ <location filename="../tools/assistant/lib/qhelpsearchresultwidget.cpp" line="+235"/>
<source>0 - 0 of 0 Hits</source>
<translation>0 次点击中的 0 - 0</translation>
</message>
@@ -311,7 +310,7 @@
<context>
<name>QObject</name>
<message>
- <location filename="../tools/assistant/lib/qhelp_global.h" line="+53"/>
+ <location filename="../tools/assistant/lib/qhelp_global.h" line="+83"/>
<source>Untitled</source>
<translation>未命åçš„</translation>
</message>
@@ -324,7 +323,7 @@
<translation type="obsolete">在行 %1 的未知标记。需è¦â€œQtHelpProjectâ€ï¼</translation>
</message>
<message>
- <location filename="../tools/assistant/lib/qhelpprojectdata.cpp" line="+81"/>
+ <location filename="../tools/assistant/lib/qhelpprojectdata.cpp" line="+111"/>
<source>A virtual folder must not contain a &apos;/&apos; character!</source>
<translation>虚拟文件夹必须ä¸åŒ…å«â€œ/“字符ï¼</translation>
</message>
diff --git a/translations/qt_help_zh_TW.ts b/translations/qt_help_zh_TW.ts
index e2609d7..2e9340e 100644
--- a/translations/qt_help_zh_TW.ts
+++ b/translations/qt_help_zh_TW.ts
@@ -1,26 +1,30 @@
<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS><TS version="1.1" language="zh_TW">
-<defaultcodec></defaultcodec>
+<!DOCTYPE TS>
+<TS version="2.0" language="zh_TW">
<context>
<name>QCLuceneResultWidget</name>
<message>
- <location filename="../tools/assistant/lib/qhelpsearchresultwidget.cpp" line="80"/>
+ <location filename="../tools/assistant/lib/qhelpsearchresultwidget.cpp" line="+110"/>
<source>Search Results</source>
<translation>æœå°‹çµæžœ</translation>
</message>
<message>
+ <location line="+7"/>
<source>Note:</source>
<translation>備註:</translation>
</message>
<message>
+ <location line="+1"/>
<source>The search results may not be complete since the documentation is still being indexed!</source>
<translation>æœå°‹çµæžœå¯èƒ½ä¸å®Œæ•´ï¼Œå› ç‚ºæ–‡ä»¶ä»åœ¨å»ºç´¢å¼•ä¸­ï¼</translation>
</message>
<message>
+ <location line="+11"/>
<source>Your search did not match any documents.</source>
<translation>您的æœå°‹å­—串沒有出ç¾åœ¨ä»»ä½•æ–‡ä»¶ä¸­ã€‚</translation>
</message>
<message>
+ <location line="+4"/>
<source>(The reason for this might be that the documentation is still being indexed.)</source>
<translation>(有å¯èƒ½æ˜¯å› ç‚ºæ–‡ä»¶ä»åœ¨å»ºç´¢å¼•ä¸­ã€‚)</translation>
</message>
@@ -28,63 +32,78 @@
<context>
<name>QHelpCollectionHandler</name>
<message>
- <location filename="../tools/assistant/lib/qhelpcollectionhandler.cpp" line="49"/>
+ <location filename="../tools/assistant/lib/qhelpcollectionhandler.cpp" line="+79"/>
<source>The collection file is not set up yet!</source>
<translation>收集檔尚未設定。</translation>
</message>
<message>
+ <location line="+22"/>
<source>Cannot load sqlite database driver!</source>
<translation>無法載入 sqlite 資料庫驅動程å¼ï¼</translation>
</message>
<message>
+ <location line="+11"/>
+ <location line="+48"/>
<source>Cannot open collection file: %1</source>
<translation>無法開啟收集檔:%1</translation>
</message>
<message>
+ <location line="-39"/>
<source>Cannot create tables in file %1!</source>
<translation>無法在檔案 %1 裡建立表格。</translation>
</message>
<message>
+ <location line="+16"/>
<source>The specified collection file already exists!</source>
<translation>指定的收集檔已存在。</translation>
</message>
<message>
+ <location line="+5"/>
<source>Cannot create directory: %1</source>
<translation>無法建立目錄:%1</translation>
</message>
<message>
+ <location line="+23"/>
<source>Cannot copy collection file: %1</source>
<translation>無法複製收集檔:%1</translation>
</message>
<message>
+ <location line="+119"/>
<source>Unknown filter!</source>
<translation>未知的éŽæ¿¾å™¨ï¼</translation>
</message>
<message>
+ <location line="+55"/>
<source>Cannot register filter %1!</source>
<translation>無法註冊éŽæ¿¾å™¨ %1。</translation>
</message>
<message>
+ <location line="+44"/>
<source>Cannot open documentation file %1!</source>
<translation>無法開啟文件檔 %1。</translation>
</message>
<message>
+ <location line="+6"/>
<source>Invalid documentation file!</source>
<translation>ä¸åˆæ³•çš„文件檔ï¼</translation>
</message>
<message>
+ <location line="+34"/>
<source>The namespace %1 was not registered!</source>
<translation>命å空間 %1 尚未註冊。</translation>
</message>
<message>
+ <location line="+120"/>
<source>Namespace %1 already exists!</source>
<translation>命å空間 %1 已存在。</translation>
</message>
<message>
+ <location line="+13"/>
<source>Cannot register namespace!</source>
<translation>無法註冊命å空間。</translation>
</message>
<message>
+ <location line="+24"/>
<source>Cannot open database to optimize!</source>
<translation>無法開啟資料庫以進行最佳化。</translation>
</message>
@@ -96,7 +115,7 @@
<translation type="obsolete">無法開啟資料庫。</translation>
</message>
<message>
- <location filename="../tools/assistant/lib/qhelpdbreader.cpp" line="65"/>
+ <location filename="../tools/assistant/lib/qhelpdbreader.cpp" line="+95"/>
<source>Cannot open database &apos;%1&apos; &apos;%2&apos;: %3</source>
<translation>無法開啟資料庫 &apos;%1&apos; &apos;%2&apos;:%3</translation>
</message>
@@ -104,7 +123,7 @@
<context>
<name>QHelpEngineCore</name>
<message>
- <location filename="../tools/assistant/lib/qhelpenginecore.cpp" line="482"/>
+ <location filename="../tools/assistant/lib/qhelpenginecore.cpp" line="+516"/>
<source>The specified namespace does not exist!</source>
<translation>指定的命å空間ä¸å­˜åœ¨ã€‚</translation>
</message>
@@ -112,6 +131,7 @@
<context>
<name>QHelpEngineCorePrivate</name>
<message>
+ <location line="-394"/>
<source>Cannot open documentation file %1: %2!</source>
<translation>無法開啟文件檔 %1&apos;:%2ï¼</translation>
</message>
@@ -127,11 +147,12 @@
<context>
<name>QHelpGenerator</name>
<message>
- <location filename="../tools/assistant/lib/qhelpgenerator.cpp" line="127"/>
+ <location filename="../tools/assistant/lib/qhelpgenerator.cpp" line="+157"/>
<source>Invalid help data!</source>
<translation>ä¸åˆæ³•çš„說明資料。</translation>
</message>
<message>
+ <location line="+6"/>
<source>No output file name specified!</source>
<translation>沒有指定輸出檔å。</translation>
</message>
@@ -140,6 +161,7 @@
<translation type="obsolete">檔案 %1 已存在。</translation>
</message>
<message>
+ <location line="+14"/>
<source>Building up file structure...</source>
<translation>建立檔案çµæ§‹ä¸­...</translation>
</message>
@@ -148,42 +170,52 @@
<translation type="obsolete">無法開啟資料庫。</translation>
</message>
<message>
+ <location line="+22"/>
<source>Cannot register namespace %1!</source>
<translation>無法註冊命å空間 %1。</translation>
</message>
<message>
+ <location line="+6"/>
<source>Insert custom filters...</source>
<translation>æ’入自訂éŽæ¿¾å™¨...</translation>
</message>
<message>
+ <location line="+12"/>
<source>Insert help data for filter section (%1 of %2)...</source>
<translation>æ’å…¥éŽæ¿¾å™¨å€æ®µçš„說明資料(%1 / %2)...</translation>
</message>
<message>
+ <location line="+18"/>
<source>Documentation successfully generated.</source>
<translation>文件已æˆåŠŸç”¢ç”Ÿã€‚</translation>
</message>
<message>
+ <location line="+76"/>
<source>Some tables already exist!</source>
<translation>有些表格已存在。</translation>
</message>
<message>
+ <location line="+61"/>
<source>Cannot create tables!</source>
<translation>無法建立表格。</translation>
</message>
<message>
+ <location line="+86"/>
<source>Cannot register virtual folder!</source>
<translation>無法註冊虛擬資料夾。</translation>
</message>
<message>
+ <location line="+10"/>
<source>Insert files...</source>
<translation>æ’入檔案...</translation>
</message>
<message>
+ <location line="+41"/>
<source>The file %1 does not exist! Skipping it.</source>
<translation>檔案 %1 ä¸å­˜åœ¨ï¼å°‡å¿½ç•¥å®ƒã€‚</translation>
</message>
<message>
+ <location line="+7"/>
<source>Cannot open file %1! Skipping it.</source>
<translation>無法開啟檔案 %1。將忽略它。</translation>
</message>
@@ -192,34 +224,42 @@
<translation type="obsolete">無法將檔案資料æ’入資料庫。</translation>
</message>
<message>
+ <location line="+134"/>
<source>The filter %1 is already registered!</source>
<translation>éŽæ¿¾å™¨ %1 已註冊。</translation>
</message>
<message>
+ <location line="+5"/>
<source>Cannot register filter %1!</source>
<translation>無法註冊éŽæ¿¾å™¨ %1。</translation>
</message>
<message>
+ <location line="+24"/>
<source>Insert indices...</source>
<translation>æ’入索引...</translation>
</message>
<message>
+ <location line="+80"/>
<source>Insert contents...</source>
<translation>æ’入內容...</translation>
</message>
<message>
+ <location line="+8"/>
<source>Cannot insert contents!</source>
<translation>無法æ’入內容。</translation>
</message>
<message>
+ <location line="+12"/>
<source>Cannot register contents!</source>
<translation>無法註冊內容。</translation>
</message>
<message>
+ <location line="-609"/>
<source>The file %1 cannot be overwritten!</source>
<translation>檔案 %1 無法被覆寫。</translation>
</message>
<message>
+ <location line="+18"/>
<source>Cannot open data base file %1!</source>
<translation>無法開啟資料庫檔案 %1。</translation>
</message>
@@ -227,35 +267,42 @@
<context>
<name>QHelpSearchQueryWidget</name>
<message>
- <location filename="../tools/assistant/lib/qhelpsearchquerywidget.cpp" line="170"/>
+ <location filename="../tools/assistant/lib/qhelpsearchquerywidget.cpp" line="+200"/>
<source>Search for:</source>
<translation>æœå°‹ï¼š</translation>
</message>
<message>
+ <location line="+2"/>
<source>Search</source>
<translation>æœå°‹</translation>
</message>
<message>
+ <location line="+16"/>
<source>Advanced search</source>
<translation>進階æœå°‹</translation>
</message>
<message>
+ <location line="+18"/>
<source>words &lt;B&gt;similar&lt;/B&gt; to:</source>
<translation>&lt;B&gt;相似於&lt;/B&gt;這些單字:</translation>
</message>
<message>
+ <location line="+5"/>
<source>&lt;B&gt;without&lt;/B&gt; the words:</source>
<translation>&lt;B&gt;ä¸å«&lt;/B&gt;這些單字:</translation>
</message>
<message>
+ <location line="+5"/>
<source>with &lt;B&gt;exact phrase&lt;/B&gt;:</source>
<translation>&lt;B&gt;完全符åˆ&lt;/B&gt;此片語:</translation>
</message>
<message>
+ <location line="+5"/>
<source>with &lt;B&gt;all&lt;/B&gt; of the words:</source>
<translation>包å«&lt;B&gt;所有&lt;/B&gt;單字:</translation>
</message>
<message>
+ <location line="+5"/>
<source>with &lt;B&gt;at least one&lt;/B&gt; of the words:</source>
<translation>&lt;B&gt;至少符åˆä¸€å€‹&lt;/B&gt;單字:</translation>
</message>
@@ -263,7 +310,7 @@
<context>
<name>QHelpSearchResultWidget</name>
<message>
- <location filename="../tools/assistant/lib/qhelpsearchresultwidget.cpp" line="232"/>
+ <location filename="../tools/assistant/lib/qhelpsearchresultwidget.cpp" line="+235"/>
<source>0 - 0 of 0 Hits</source>
<translation>0 - 0/0 筆符åˆ</translation>
</message>
@@ -271,6 +318,7 @@
<context>
<name>QHelpSearchResultWidgetPrivate</name>
<message>
+ <location line="-61"/>
<source>%1 - %2 of %3 Hits</source>
<translation>%1 - %2 / %3 筆符åˆ</translation>
</message>
@@ -278,7 +326,7 @@
<context>
<name>QObject</name>
<message>
- <location filename="../tools/assistant/lib/qhelp_global.h" line="53"/>
+ <location filename="../tools/assistant/lib/qhelp_global.h" line="+83"/>
<source>Untitled</source>
<translation>未命å</translation>
</message>
@@ -291,39 +339,47 @@
<translation type="obsolete">第 %1 行有未知的符號。應該è¦æ˜¯ &quot;QtHelpProject&quot;。</translation>
</message>
<message>
- <location filename="../tools/assistant/lib/qhelpprojectdata.cpp" line="81"/>
+ <location filename="../tools/assistant/lib/qhelpprojectdata.cpp" line="+111"/>
<source>A virtual folder must not contain a &apos;/&apos; character!</source>
<translation>虛擬資料夾ä¸èƒ½å«æœ‰ / 字元。</translation>
</message>
<message>
+ <location line="+4"/>
<source>A namespace must not contain a &apos;/&apos; character!</source>
<translation>命å空間ä¸èƒ½å«æœ‰ / 字元。</translation>
</message>
<message>
+ <location line="+16"/>
<source>Missing namespace in QtHelpProject.</source>
<translation>QtHelpProject 中沒有命å空間。</translation>
</message>
<message>
+ <location line="+2"/>
<source>Missing virtual folder in QtHelpProject</source>
<translation>QtHelpProject 中沒有虛擬資料夾。</translation>
</message>
<message>
+ <location line="+88"/>
<source>Missing attribute in keyword at line %1.</source>
<translation>第 %1 行的關éµå­—中沒有屬性。</translation>
</message>
<message>
+ <location line="+83"/>
<source>The input file %1 could not be opened!</source>
<translation>無法開啟輸入檔 %1。</translation>
</message>
<message>
+ <location line="-224"/>
<source>Unknown token.</source>
<translation>未知的符號。</translation>
</message>
<message>
+ <location line="+13"/>
<source>Unknown token. Expected &quot;QtHelpProject&quot;!</source>
<translation>未知的符號。應該為 &quot;QtHelpProject&quot;。</translation>
</message>
<message>
+ <location line="+5"/>
<source>Error in line %1: %2</source>
<translation>第 %1 行發生錯誤:%2</translation>
</message>
diff --git a/translations/qt_iw.ts b/translations/qt_iw.ts
index 3eea6dd..3b4897d 100644
--- a/translations/qt_iw.ts
+++ b/translations/qt_iw.ts
@@ -4,7 +4,7 @@
<context>
<name>AudioOutput</name>
<message>
- <location filename="../src/3rdparty/phonon/phonon/audiooutput.cpp" line="+374"/>
+ <location filename="../src/3rdparty/phonon/phonon/audiooutput.cpp" line="+375"/>
<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="unfinished"></translation>
</message>
@@ -22,7 +22,7 @@
<context>
<name>CloseButton</name>
<message>
- <location filename="../src/gui/widgets/qtabbar.cpp" line="+2217"/>
+ <location filename="../src/gui/widgets/qtabbar.cpp" line="+2251"/>
<source>Close Tab</source>
<translation type="unfinished"></translation>
</message>
@@ -85,7 +85,7 @@
<context>
<name>Phonon::Gstreamer::MediaObject</name>
<message>
- <location filename="../src/3rdparty/phonon/gstreamer/mediaobject.cpp" line="+88"/>
+ <location filename="../src/3rdparty/phonon/gstreamer/mediaobject.cpp" line="+90"/>
<source>Cannot start playback.
Check your Gstreamer installation and make sure you
@@ -98,24 +98,24 @@ have libgstreamer-plugins-base installed.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+653"/>
- <location line="+9"/>
+ <location line="+676"/>
+ <location line="+8"/>
<location line="+15"/>
- <location line="+7"/>
- <location line="+5"/>
- <location line="+20"/>
- <location line="+317"/>
+ <location line="+9"/>
+ <location line="+6"/>
+ <location line="+19"/>
+ <location line="+335"/>
<location line="+24"/>
<source>Could not open media source.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-381"/>
+ <location line="-403"/>
<source>Invalid source type.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+355"/>
+ <location line="+377"/>
<source>Could not locate media source.</source>
<translation type="unfinished"></translation>
</message>
@@ -149,7 +149,7 @@ have libgstreamer-plugins-base installed.</source>
<context>
<name>Q3Accel</name>
<message>
- <location filename="../src/qt3support/other/q3accel.cpp" line="+451"/>
+ <location filename="../src/qt3support/other/q3accel.cpp" line="+481"/>
<source>%1, %2 not defined</source>
<translation type="unfinished"></translation>
</message>
@@ -162,7 +162,7 @@ have libgstreamer-plugins-base installed.</source>
<context>
<name>Q3DataTable</name>
<message>
- <location filename="../src/qt3support/sql/q3datatable.cpp" line="+253"/>
+ <location filename="../src/qt3support/sql/q3datatable.cpp" line="+285"/>
<source>True</source>
<translation type="unfinished">×מת</translation>
</message>
@@ -190,7 +190,7 @@ have libgstreamer-plugins-base installed.</source>
<context>
<name>Q3FileDialog</name>
<message>
- <location filename="../src/qt3support/dialogs/q3filedialog.cpp" line="+834"/>
+ <location filename="../src/qt3support/dialogs/q3filedialog.cpp" line="+864"/>
<source>Copy or Move a File</source>
<translation type="unfinished">העתק ×ו העבר קובץ</translation>
</message>
@@ -215,7 +215,7 @@ have libgstreamer-plugins-base installed.</source>
<location line="-157"/>
<location line="+49"/>
<location line="+2153"/>
- <location filename="../src/qt3support/dialogs/q3filedialog_mac.cpp" line="+80"/>
+ <location filename="../src/qt3support/dialogs/q3filedialog_mac.cpp" line="+110"/>
<source>All Files (*)</source>
<translation type="unfinished">כל ×”×§×‘×¦×™× (*)</translation>
</message>
@@ -355,7 +355,7 @@ have libgstreamer-plugins-base installed.</source>
<message>
<location line="+704"/>
<location line="+2100"/>
- <location filename="../src/qt3support/dialogs/q3filedialog_win.cpp" line="+307"/>
+ <location filename="../src/qt3support/dialogs/q3filedialog_win.cpp" line="+337"/>
<source>Open</source>
<translation type="unfinished">פתח</translation>
</message>
@@ -523,7 +523,7 @@ Check path and filename.</source>
<context>
<name>Q3LocalFs</name>
<message>
- <location filename="../src/qt3support/network/q3localfs.cpp" line="+100"/>
+ <location filename="../src/qt3support/network/q3localfs.cpp" line="+130"/>
<location line="+10"/>
<source>Could not read directory
%1</source>
@@ -570,7 +570,7 @@ to
<context>
<name>Q3MainWindow</name>
<message>
- <location filename="../src/qt3support/widgets/q3mainwindow.cpp" line="+2021"/>
+ <location filename="../src/qt3support/widgets/q3mainwindow.cpp" line="+2051"/>
<source>Line up</source>
<translation type="unfinished">סדר בשורה</translation>
</message>
@@ -583,7 +583,7 @@ to
<context>
<name>Q3NetworkProtocol</name>
<message>
- <location filename="../src/qt3support/network/q3networkprotocol.cpp" line="+824"/>
+ <location filename="../src/qt3support/network/q3networkprotocol.cpp" line="+854"/>
<source>Operation stopped by the user</source>
<translation type="unfinished">הפעולה הופסקה על ידי המשתמש</translation>
</message>
@@ -591,7 +591,7 @@ to
<context>
<name>Q3ProgressDialog</name>
<message>
- <location filename="../src/qt3support/dialogs/q3progressdialog.cpp" line="+194"/>
+ <location filename="../src/qt3support/dialogs/q3progressdialog.cpp" line="+224"/>
<location line="+61"/>
<source>Cancel</source>
<translation type="unfinished">ביטול</translation>
@@ -600,7 +600,7 @@ to
<context>
<name>Q3TabDialog</name>
<message>
- <location filename="../src/qt3support/dialogs/q3tabdialog.cpp" line="+159"/>
+ <location filename="../src/qt3support/dialogs/q3tabdialog.cpp" line="+189"/>
<location line="+814"/>
<source>OK</source>
<translation type="unfinished">×ישור</translation>
@@ -629,7 +629,7 @@ to
<context>
<name>Q3TextEdit</name>
<message>
- <location filename="../src/qt3support/text/q3textedit.cpp" line="+5399"/>
+ <location filename="../src/qt3support/text/q3textedit.cpp" line="+5429"/>
<source>&amp;Undo</source>
<translation type="unfinished">&amp;בטל</translation>
</message>
@@ -668,7 +668,7 @@ to
<context>
<name>Q3TitleBar</name>
<message>
- <location filename="../src/plugins/accessible/compat/q3complexwidgets.cpp" line="+216"/>
+ <location filename="../src/plugins/accessible/compat/q3complexwidgets.cpp" line="+246"/>
<source>System</source>
<translation type="unfinished"></translation>
</message>
@@ -736,7 +736,7 @@ to
<context>
<name>Q3ToolBar</name>
<message>
- <location filename="../src/qt3support/widgets/q3toolbar.cpp" line="+662"/>
+ <location filename="../src/qt3support/widgets/q3toolbar.cpp" line="+692"/>
<source>More...</source>
<translation type="unfinished"></translation>
</message>
@@ -744,7 +744,7 @@ to
<context>
<name>Q3UrlOperator</name>
<message>
- <location filename="../src/qt3support/network/q3urloperator.cpp" line="+356"/>
+ <location filename="../src/qt3support/network/q3urloperator.cpp" line="+386"/>
<location line="+260"/>
<location line="+4"/>
<source>The protocol `%1&apos; is not supported</source>
@@ -796,7 +796,7 @@ to
<context>
<name>Q3Wizard</name>
<message>
- <location filename="../src/qt3support/dialogs/q3wizard.cpp" line="+147"/>
+ <location filename="../src/qt3support/dialogs/q3wizard.cpp" line="+177"/>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
@@ -824,9 +824,9 @@ to
<context>
<name>QAbstractSocket</name>
<message>
- <location filename="../src/network/socket/qabstractsocket.cpp" line="+838"/>
- <location filename="../src/network/socket/qhttpsocketengine.cpp" line="+585"/>
- <location filename="../src/network/socket/qsocks5socketengine.cpp" line="+627"/>
+ <location filename="../src/network/socket/qabstractsocket.cpp" line="+868"/>
+ <location filename="../src/network/socket/qhttpsocketengine.cpp" line="+615"/>
+ <location filename="../src/network/socket/qsocks5socketengine.cpp" line="+657"/>
<location line="+26"/>
<source>Host not found</source>
<translation type="unfinished"></translation>
@@ -869,7 +869,7 @@ to
<context>
<name>QAbstractSpinBox</name>
<message>
- <location filename="../src/gui/widgets/qabstractspinbox.cpp" line="+1169"/>
+ <location filename="../src/gui/widgets/qabstractspinbox.cpp" line="+1199"/>
<source>&amp;Step up</source>
<translation type="unfinished"></translation>
</message>
@@ -887,13 +887,13 @@ to
<context>
<name>QApplication</name>
<message>
- <location filename="../src/gui/kernel/qapplication.cpp" line="+2212"/>
+ <location filename="../src/gui/kernel/qapplication.cpp" line="+2248"/>
<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>RTL</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qmessagebox.h" line="+322"/>
+ <location filename="../src/gui/dialogs/qmessagebox.h" line="+352"/>
<source>Executable &apos;%1&apos; requires Qt %2, found Qt %3.</source>
<translation type="unfinished"></translation>
</message>
@@ -903,7 +903,7 @@ to
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/accessible/qaccessibleobject.cpp" line="+346"/>
+ <location filename="../src/gui/accessible/qaccessibleobject.cpp" line="+376"/>
<source>Activate</source>
<translation type="unfinished"></translation>
</message>
@@ -939,7 +939,7 @@ to
<context>
<name>QCheckBox</name>
<message>
- <location filename="../src/plugins/accessible/widgets/simplewidgets.cpp" line="+84"/>
+ <location filename="../src/plugins/accessible/widgets/simplewidgets.cpp" line="+114"/>
<source>Uncheck</source>
<translation type="unfinished"></translation>
</message>
@@ -957,7 +957,7 @@ to
<context>
<name>QColorDialog</name>
<message>
- <location filename="../src/gui/dialogs/qcolordialog.cpp" line="+1219"/>
+ <location filename="../src/gui/dialogs/qcolordialog.cpp" line="+1253"/>
<source>Hu&amp;e:</source>
<translation>&amp;גוון:</translation>
</message>
@@ -1031,13 +1031,13 @@ to
<context>
<name>QComboBox</name>
<message>
- <location filename="../src/plugins/accessible/widgets/complexwidgets.cpp" line="+1741"/>
+ <location filename="../src/plugins/accessible/widgets/complexwidgets.cpp" line="+1771"/>
<location line="+65"/>
<source>Open</source>
<translation type="unfinished">פתח</translation>
</message>
<message>
- <location filename="../src/gui/itemviews/qitemeditorfactory.cpp" line="+514"/>
+ <location filename="../src/gui/itemviews/qitemeditorfactory.cpp" line="+544"/>
<source>False</source>
<translation type="unfinished">שקר</translation>
</message>
@@ -1055,7 +1055,7 @@ to
<context>
<name>QCoreApplication</name>
<message>
- <location filename="../src/corelib/kernel/qsystemsemaphore_unix.cpp" line="+89"/>
+ <location filename="../src/corelib/kernel/qsystemsemaphore_unix.cpp" line="+119"/>
<source>%1: key is empty</source>
<comment>QSystemSemaphore</comment>
<translation type="unfinished"></translation>
@@ -1076,12 +1076,12 @@ to
<context>
<name>QDB2Driver</name>
<message>
- <location filename="../src/sql/drivers/db2/qsql_db2.cpp" line="+1217"/>
+ <location filename="../src/sql/drivers/db2/qsql_db2.cpp" line="+1276"/>
<source>Unable to connect</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+263"/>
+ <location line="+303"/>
<source>Unable to commit transaction</source>
<translation type="unfinished"></translation>
</message>
@@ -1099,8 +1099,8 @@ to
<context>
<name>QDB2Result</name>
<message>
- <location line="-986"/>
- <location line="+242"/>
+ <location line="-1043"/>
+ <location line="+243"/>
<source>Unable to execute statement</source>
<translation type="unfinished"></translation>
</message>
@@ -1115,7 +1115,7 @@ to
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+91"/>
+ <location line="+92"/>
<source>Unable to fetch record %1</source>
<translation type="unfinished"></translation>
</message>
@@ -1133,7 +1133,7 @@ to
<context>
<name>QDateTimeEdit</name>
<message>
- <location filename="../src/gui/widgets/qdatetimeedit.cpp" line="+2265"/>
+ <location filename="../src/gui/widgets/qdatetimeedit.cpp" line="+2295"/>
<source>AM</source>
<translation type="unfinished"></translation>
</message>
@@ -1156,7 +1156,7 @@ to
<context>
<name>QDial</name>
<message>
- <location filename="../src/plugins/accessible/widgets/rangecontrols.cpp" line="+921"/>
+ <location filename="../src/plugins/accessible/widgets/rangecontrols.cpp" line="+951"/>
<source>QDial</source>
<translation type="unfinished"></translation>
</message>
@@ -1174,7 +1174,7 @@ to
<context>
<name>QDialog</name>
<message>
- <location filename="../src/gui/dialogs/qdialog.cpp" line="+567"/>
+ <location filename="../src/gui/dialogs/qdialog.cpp" line="+597"/>
<source>What&apos;s This?</source>
<translation>מה זה?</translation>
</message>
@@ -1187,9 +1187,9 @@ to
<context>
<name>QDialogButtonBox</name>
<message>
- <location filename="../src/gui/dialogs/qmessagebox.cpp" line="+1830"/>
+ <location filename="../src/gui/dialogs/qmessagebox.cpp" line="+1866"/>
<location line="+464"/>
- <location filename="../src/gui/widgets/qdialogbuttonbox.cpp" line="+531"/>
+ <location filename="../src/gui/widgets/qdialogbuttonbox.cpp" line="+561"/>
<source>OK</source>
<translation type="unfinished">×ישור</translation>
</message>
@@ -1312,7 +1312,7 @@ to
<context>
<name>QDirModel</name>
<message>
- <location filename="../src/gui/itemviews/qdirmodel.cpp" line="+423"/>
+ <location filename="../src/gui/itemviews/qdirmodel.cpp" line="+453"/>
<source>Name</source>
<translation type="unfinished">ש×</translation>
</message>
@@ -1342,7 +1342,7 @@ to
<context>
<name>QDockWidget</name>
<message>
- <location filename="../src/plugins/accessible/widgets/qaccessiblewidgets.cpp" line="+1209"/>
+ <location filename="../src/plugins/accessible/widgets/qaccessiblewidgets.cpp" line="+1239"/>
<source>Close</source>
<translation type="unfinished">סגור</translation>
</message>
@@ -1373,7 +1373,7 @@ to
<context>
<name>QErrorMessage</name>
<message>
- <location filename="../src/gui/dialogs/qerrormessage.cpp" line="+361"/>
+ <location filename="../src/gui/dialogs/qerrormessage.cpp" line="+391"/>
<source>&amp;Show this message again</source>
<translation>&amp;הצג הודעה זו שנית</translation>
</message>
@@ -1401,13 +1401,18 @@ to
<context>
<name>QFile</name>
<message>
- <location filename="../src/corelib/io/qfile.cpp" line="+678"/>
- <location line="+130"/>
+ <location filename="../src/corelib/io/qfile.cpp" line="+708"/>
+ <location line="+141"/>
<source>Destination file exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+12"/>
+ <location line="-108"/>
+ <source>Cannot remove source file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+120"/>
<source>Cannot open %1 for input</source>
<translation type="unfinished"></translation>
</message>
@@ -1430,8 +1435,8 @@ to
<context>
<name>QFileDialog</name>
<message>
- <location filename="../src/gui/dialogs/qfiledialog.cpp" line="+484"/>
- <location line="+423"/>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="+515"/>
+ <location line="+444"/>
<source>All Files (*)</source>
<translation>כל ×”×§×‘×¦×™× (*)</translation>
</message>
@@ -1454,13 +1459,13 @@ to
<translation type="unfinished">תצוגת פרטי×</translation>
</message>
<message>
- <location filename="../src/gui/itemviews/qfileiconprovider.cpp" line="+384"/>
+ <location filename="../src/gui/itemviews/qfileiconprovider.cpp" line="+414"/>
<location line="+1"/>
<source>File</source>
<translation type="unfinished">קובץ</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-440"/>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-461"/>
<source>Open</source>
<translation>פתח</translation>
</message>
@@ -1470,21 +1475,21 @@ to
<translation type="unfinished">שמירה בש×</translation>
</message>
<message>
- <location line="+653"/>
+ <location line="+678"/>
<location line="+50"/>
- <location line="+1440"/>
+ <location line="+1471"/>
<location line="+75"/>
<source>&amp;Open</source>
<translation>&amp;פתח</translation>
</message>
<message>
- <location line="-1565"/>
+ <location line="-1596"/>
<location line="+50"/>
<source>&amp;Save</source>
<translation>&amp;שמור</translation>
</message>
<message>
- <location line="-674"/>
+ <location line="-699"/>
<source>&amp;Rename</source>
<translation type="unfinished">ש&amp;× ×” ש×</translation>
</message>
@@ -1499,27 +1504,27 @@ to
<translation type="unfinished">הצג ×§×‘×¦×™× &amp;מוסתרי×</translation>
</message>
<message>
- <location line="+1908"/>
+ <location line="+1964"/>
<source>New Folder</source>
<translation type="unfinished">תיקיה חדשה</translation>
</message>
<message>
- <location line="-1943"/>
+ <location line="-1999"/>
<source>Find Directory</source>
<translation type="unfinished">חפש ספריה</translation>
</message>
<message>
- <location line="+660"/>
+ <location line="+685"/>
<source>Directories</source>
<translation>ספריות</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfiledialog_win.cpp" line="+130"/>
+ <location filename="../src/gui/dialogs/qfiledialog_win.cpp" line="+160"/>
<source>All Files (*.*)</source>
<translation type="unfinished">כל ×”×§×‘×¦×™× (*.*)</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfiledialog.cpp" line="+811"/>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="+832"/>
<source>%1 already exists.
Do you want to replace it?</source>
<translation type="unfinished"></translation>
@@ -1549,21 +1554,21 @@ Please verify the correct file name was given.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-1450"/>
- <location line="+623"/>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-1496"/>
+ <location line="+648"/>
<source>Directory:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+773"/>
- <location line="+851"/>
+ <location line="+794"/>
+ <location line="+862"/>
<source>%1
Directory not found.
Please verify the correct directory name was given.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-217"/>
+ <location line="-218"/>
<source>&apos;%1&apos; is write protected.
Do you want to delete it anyway?</source>
<translation type="unfinished"></translation>
@@ -1579,7 +1584,7 @@ Do you want to delete it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+406"/>
+ <location line="+407"/>
<source>Recent Places</source>
<translation type="unfinished"></translation>
</message>
@@ -1594,7 +1599,7 @@ Do you want to delete it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-2468"/>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-2525"/>
<source>Show </source>
<translation type="unfinished"></translation>
</message>
@@ -1610,19 +1615,19 @@ Do you want to delete it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+631"/>
+ <location line="+656"/>
<location line="+38"/>
<source>&amp;Choose</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qsidebar.cpp" line="+388"/>
+ <location filename="../src/gui/dialogs/qsidebar.cpp" line="+418"/>
<source>Remove</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-662"/>
- <location line="+627"/>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-687"/>
+ <location line="+652"/>
<source>File &amp;name:</source>
<translation type="unfinished">&amp;×©× ×”×§×•×‘×¥:</translation>
</message>
@@ -1642,7 +1647,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QFileSystemModel</name>
<message>
- <location filename="../src/gui/dialogs/qfilesystemmodel.cpp" line="+707"/>
+ <location filename="../src/gui/dialogs/qfilesystemmodel.cpp" line="+744"/>
<source>%1 TB</source>
<translation type="unfinished"></translation>
</message>
@@ -1704,7 +1709,7 @@ Do you want to delete it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfilesystemmodel_p.h" line="+204"/>
+ <location filename="../src/gui/dialogs/qfilesystemmodel_p.h" line="+234"/>
<source>My Computer</source>
<translation type="unfinished"></translation>
</message>
@@ -1717,7 +1722,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QFontDatabase</name>
<message>
- <location filename="../src/gui/text/qfontdatabase.cpp" line="+60"/>
+ <location filename="../src/gui/text/qfontdatabase.cpp" line="+90"/>
<location line="+1176"/>
<source>Normal</source>
<translation type="unfinished"></translation>
@@ -1934,7 +1939,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QFontDialog</name>
<message>
- <location filename="../src/gui/dialogs/qfontdialog.cpp" line="+742"/>
+ <location filename="../src/gui/dialogs/qfontdialog.cpp" line="+772"/>
<source>&amp;Font</source>
<translation>&amp;גופן</translation>
</message>
@@ -1983,7 +1988,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QFtp</name>
<message>
- <location filename="../src/qt3support/network/q3ftp.cpp" line="+2273"/>
+ <location filename="../src/qt3support/network/q3ftp.cpp" line="+2303"/>
<source>Host %1 found</source>
<translation type="unfinished">המ×רח %1 נמצ×</translation>
</message>
@@ -1993,7 +1998,7 @@ Do you want to delete it anyway?</source>
<translation type="unfinished">המ×רח נמצ×</translation>
</message>
<message>
- <location filename="../src/network/access/qftp.cpp" line="+973"/>
+ <location filename="../src/network/access/qftp.cpp" line="+1003"/>
<location filename="../src/qt3support/network/q3ftp.cpp" line="-1456"/>
<location line="+1451"/>
<source>Connected to host %1</source>
@@ -2120,7 +2125,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QHostInfo</name>
<message>
- <location filename="../src/network/kernel/qhostinfo_p.h" line="+153"/>
+ <location filename="../src/network/kernel/qhostinfo_p.h" line="+183"/>
<source>Unknown error</source>
<translation type="unfinished"></translation>
</message>
@@ -2128,11 +2133,11 @@ Do you want to delete it anyway?</source>
<context>
<name>QHostInfoAgent</name>
<message>
- <location filename="../src/network/kernel/qhostinfo_unix.cpp" line="+148"/>
+ <location filename="../src/network/kernel/qhostinfo_unix.cpp" line="+178"/>
<location line="+9"/>
<location line="+64"/>
<location line="+31"/>
- <location filename="../src/network/kernel/qhostinfo_win.cpp" line="+150"/>
+ <location filename="../src/network/kernel/qhostinfo_win.cpp" line="+180"/>
<location line="+9"/>
<location line="+40"/>
<location line="+27"/>
@@ -2158,13 +2163,13 @@ Do you want to delete it anyway?</source>
<context>
<name>QHttp</name>
<message>
- <location filename="../src/network/access/qhttpnetworkconnection.cpp" line="+1712"/>
- <location filename="../src/qt3support/network/q3http.cpp" line="+1806"/>
+ <location filename="../src/network/access/qhttpnetworkconnection.cpp" line="+876"/>
+ <location filename="../src/qt3support/network/q3http.cpp" line="+1836"/>
<source>Connection refused</source>
<translation>החיבור נדחה</translation>
</message>
<message>
- <location filename="../src/network/access/qhttp.cpp" line="+2597"/>
+ <location filename="../src/network/access/qhttp.cpp" line="+2631"/>
<location filename="../src/network/access/qhttpnetworkconnection.cpp" line="-4"/>
<location filename="../src/qt3support/network/q3http.cpp" line="+3"/>
<source>Host %1 not found</source>
@@ -2177,12 +2182,12 @@ Do you want to delete it anyway?</source>
<translation>×ורך תוכן שגוי</translation>
</message>
<message>
- <location line="-2200"/>
+ <location line="-2204"/>
<source>HTTPS connection requested but SSL support not compiled in</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+2282"/>
+ <location line="+2286"/>
<location filename="../src/network/access/qhttpnetworkconnection.cpp" line="+10"/>
<location line="+19"/>
<location filename="../src/qt3support/network/q3http.cpp" line="+48"/>
@@ -2221,21 +2226,21 @@ Do you want to delete it anyway?</source>
<translation type="unfinished">החיבור נסגר</translation>
</message>
<message>
- <location filename="../src/network/access/qhttp.cpp" line="-1073"/>
- <location line="+816"/>
+ <location filename="../src/network/access/qhttp.cpp" line="-1077"/>
+ <location line="+820"/>
<location filename="../src/qt3support/network/q3http.cpp" line="-1152"/>
<location line="+567"/>
<source>Unknown error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-564"/>
+ <location line="-568"/>
<location filename="../src/qt3support/network/q3http.cpp" line="-370"/>
<source>Request aborted</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+575"/>
+ <location line="+579"/>
<location filename="../src/qt3support/network/q3http.cpp" line="+381"/>
<source>No server set to connect to</source>
<translation type="unfinished"></translation>
@@ -2253,7 +2258,12 @@ Do you want to delete it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+120"/>
+ <location line="+28"/>
+ <source>Unknown authentication method</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+97"/>
<location line="+48"/>
<location filename="../src/qt3support/network/q3http.cpp" line="+40"/>
<location line="+47"/>
@@ -2276,7 +2286,7 @@ Do you want to delete it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-133"/>
+ <location line="-138"/>
<source>Connection refused (or timed out)</source>
<translation type="unfinished"></translation>
</message>
@@ -2357,7 +2367,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QIBaseDriver</name>
<message>
- <location filename="../src/sql/drivers/ibase/qsql_ibase.cpp" line="+1378"/>
+ <location filename="../src/sql/drivers/ibase/qsql_ibase.cpp" line="+1428"/>
<source>Error opening database</source>
<translation type="unfinished"></translation>
</message>
@@ -2380,7 +2390,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QIBaseResult</name>
<message>
- <location line="-1077"/>
+ <location line="-1097"/>
<source>Unable to create BLOB</source>
<translation type="unfinished"></translation>
</message>
@@ -2400,7 +2410,7 @@ Do you want to delete it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+124"/>
+ <location line="+125"/>
<location line="+189"/>
<source>Could not find array</source>
<translation type="unfinished"></translation>
@@ -2470,7 +2480,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QIODevice</name>
<message>
- <location filename="../src/corelib/global/qglobal.cpp" line="+1830"/>
+ <location filename="../src/corelib/global/qglobal.cpp" line="+1869"/>
<source>Permission denied</source>
<translation type="unfinished"></translation>
</message>
@@ -2490,7 +2500,7 @@ Do you want to delete it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/corelib/io/qiodevice.cpp" line="+1506"/>
+ <location filename="../src/corelib/io/qiodevice.cpp" line="+1536"/>
<source>Unknown error</source>
<translation type="unfinished"></translation>
</message>
@@ -2498,7 +2508,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QInputContext</name>
<message>
- <location filename="../src/gui/inputmethod/qinputcontextfactory.cpp" line="+212"/>
+ <location filename="../src/gui/inputmethod/qinputcontextfactory.cpp" line="+242"/>
<source>XIM</source>
<translation type="unfinished"></translation>
</message>
@@ -2521,7 +2531,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QInputDialog</name>
<message>
- <location filename="../src/gui/dialogs/qinputdialog.cpp" line="+193"/>
+ <location filename="../src/gui/dialogs/qinputdialog.cpp" line="+223"/>
<source>Enter a value:</source>
<translation type="unfinished"></translation>
</message>
@@ -2529,7 +2539,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QLibrary</name>
<message>
- <location filename="../src/corelib/plugin/qlibrary.cpp" line="+348"/>
+ <location filename="../src/corelib/plugin/qlibrary.cpp" line="+378"/>
<source>Could not mmap &apos;%1&apos;: %2</source>
<translation type="unfinished"></translation>
</message>
@@ -2560,7 +2570,7 @@ Do you want to delete it anyway?</source>
</message>
<message>
<location line="-377"/>
- <location filename="../src/corelib/plugin/qpluginloader.cpp" line="+250"/>
+ <location filename="../src/corelib/plugin/qpluginloader.cpp" line="+280"/>
<source>The shared library was not found.</source>
<translation type="unfinished"></translation>
</message>
@@ -2575,8 +2585,8 @@ Do you want to delete it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/corelib/plugin/qlibrary_unix.cpp" line="+179"/>
- <location filename="../src/corelib/plugin/qlibrary_win.cpp" line="+69"/>
+ <location filename="../src/corelib/plugin/qlibrary_unix.cpp" line="+209"/>
+ <location filename="../src/corelib/plugin/qlibrary_win.cpp" line="+99"/>
<source>Cannot load library %1: %2</source>
<translation type="unfinished"></translation>
</message>
@@ -2596,7 +2606,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QLineEdit</name>
<message>
- <location filename="../src/gui/widgets/qlineedit.cpp" line="+2649"/>
+ <location filename="../src/gui/widgets/qlineedit.cpp" line="+2680"/>
<source>&amp;Undo</source>
<translation type="unfinished">&amp;בטל</translation>
</message>
@@ -2634,8 +2644,8 @@ Do you want to delete it anyway?</source>
<context>
<name>QLocalServer</name>
<message>
- <location filename="../src/network/socket/qlocalserver.cpp" line="+196"/>
- <location filename="../src/network/socket/qlocalserver_unix.cpp" line="+201"/>
+ <location filename="../src/network/socket/qlocalserver.cpp" line="+226"/>
+ <location filename="../src/network/socket/qlocalserver_unix.cpp" line="+231"/>
<source>%1: Name error</source>
<translation type="unfinished"></translation>
</message>
@@ -2651,7 +2661,7 @@ Do you want to delete it anyway?</source>
</message>
<message>
<location line="+5"/>
- <location filename="../src/network/socket/qlocalserver_win.cpp" line="+127"/>
+ <location filename="../src/network/socket/qlocalserver_win.cpp" line="+158"/>
<source>%1: Unknown error %2</source>
<translation type="unfinished"></translation>
</message>
@@ -2659,8 +2669,8 @@ Do you want to delete it anyway?</source>
<context>
<name>QLocalSocket</name>
<message>
- <location filename="../src/network/socket/qlocalsocket_tcp.cpp" line="+102"/>
- <location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+104"/>
+ <location filename="../src/network/socket/qlocalsocket_tcp.cpp" line="+132"/>
+ <location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+134"/>
<source>%1: Connection refused</source>
<translation type="unfinished"></translation>
</message>
@@ -2673,7 +2683,7 @@ Do you want to delete it anyway?</source>
<message>
<location line="+3"/>
<location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+3"/>
- <location filename="../src/network/socket/qlocalsocket_win.cpp" line="+50"/>
+ <location filename="../src/network/socket/qlocalsocket_win.cpp" line="+80"/>
<location line="+43"/>
<source>%1: Invalid name</source>
<translation type="unfinished"></translation>
@@ -2730,7 +2740,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QMYSQLDriver</name>
<message>
- <location filename="../src/sql/drivers/mysql/qsql_mysql.cpp" line="+1200"/>
+ <location filename="../src/sql/drivers/mysql/qsql_mysql.cpp" line="+1231"/>
<source>Unable to open database &apos;</source>
<translation type="unfinished"></translation>
</message>
@@ -2740,7 +2750,7 @@ Do you want to delete it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+123"/>
+ <location line="+127"/>
<source>Unable to begin transaction</source>
<translation type="unfinished"></translation>
</message>
@@ -2758,7 +2768,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QMYSQLResult</name>
<message>
- <location line="-917"/>
+ <location line="-922"/>
<source>Unable to fetch data</source>
<translation type="unfinished"></translation>
</message>
@@ -2773,7 +2783,7 @@ Do you want to delete it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+189"/>
+ <location line="+190"/>
<location line="+8"/>
<source>Unable to prepare statement</source>
<translation type="unfinished"></translation>
@@ -2818,7 +2828,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QMdiArea</name>
<message>
- <location filename="../src/gui/widgets/qmdiarea.cpp" line="+260"/>
+ <location filename="../src/gui/widgets/qmdiarea.cpp" line="+290"/>
<source>(Untitled)</source>
<translation type="unfinished"></translation>
</message>
@@ -2826,7 +2836,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QMdiSubWindow</name>
<message>
- <location filename="../src/gui/widgets/qmdisubwindow.cpp" line="+250"/>
+ <location filename="../src/gui/widgets/qmdisubwindow.cpp" line="+280"/>
<source>%1 - [%2]</source>
<translation type="unfinished">%1 - [%2]</translation>
</message>
@@ -2919,7 +2929,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QMenu</name>
<message>
- <location filename="../src/plugins/accessible/widgets/qaccessiblemenu.cpp" line="+127"/>
+ <location filename="../src/plugins/accessible/widgets/qaccessiblemenu.cpp" line="+157"/>
<location line="+225"/>
<source>Close</source>
<translation type="unfinished">סגור</translation>
@@ -2948,7 +2958,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QMessageBox</name>
<message>
- <location filename="../src/gui/dialogs/qmessagebox.cpp" line="-1958"/>
+ <location filename="../src/gui/dialogs/qmessagebox.cpp" line="-1964"/>
<location line="+852"/>
<location filename="../src/gui/dialogs/qmessagebox.h" line="-52"/>
<location line="+8"/>
@@ -2956,22 +2966,17 @@ Do you want to delete it anyway?</source>
<translation>×ישור</translation>
</message>
<message>
- <location line="+503"/>
+ <location line="+509"/>
<source>About Qt</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-502"/>
+ <location line="-508"/>
<source>Help</source>
<translation type="unfinished">עזרה</translation>
</message>
<message>
- <location line="+487"/>
- <source>&lt;p&gt;This program uses Qt version %1.&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location line="-1584"/>
+ <location line="-1097"/>
<source>Show Details...</source>
<translation type="unfinished"></translation>
</message>
@@ -2982,19 +2987,14 @@ Do you want to delete it anyway?</source>
</message>
<message>
<location line="+1570"/>
- <source>&lt;h3&gt;About Qt&lt;/h3&gt;%1&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 a Nokia product. See &lt;a href=&quot;http://qtsoftware.com/qt/&quot;&gt;qtsoftware.com/qt/&lt;/a&gt; for more information.&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location line="+15"/>
- <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://qtsoftware.com/company/model/&quot;&gt;qtsoftware.com/company/model/&lt;/a&gt; for an overview of Qt licensing.&lt;/p&gt;</source>
+ <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://www.qtsoftware.com/products/licensing&quot;&gt;www.qtsoftware.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://www.qtsoftware.com/qt/&quot;&gt;www.qtsoftware.com/qt&lt;/a&gt; for more information.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>QMultiInputContext</name>
<message>
- <location filename="../src/plugins/inputmethods/imsw-multi/qmultiinputcontext.cpp" line="+58"/>
+ <location filename="../src/plugins/inputmethods/imsw-multi/qmultiinputcontext.cpp" line="+88"/>
<source>Select IM</source>
<translation type="unfinished"></translation>
</message>
@@ -3002,7 +3002,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QMultiInputContextPlugin</name>
<message>
- <location filename="../src/plugins/inputmethods/imsw-multi/qmultiinputcontextplugin.cpp" line="+65"/>
+ <location filename="../src/plugins/inputmethods/imsw-multi/qmultiinputcontextplugin.cpp" line="+95"/>
<source>Multiple input method switcher</source>
<translation type="unfinished"></translation>
</message>
@@ -3015,7 +3015,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QNativeSocketEngine</name>
<message>
- <location filename="../src/network/socket/qnativesocketengine.cpp" line="+176"/>
+ <location filename="../src/network/socket/qnativesocketengine.cpp" line="+206"/>
<source>The remote host closed the connection</source>
<translation type="unfinished"></translation>
</message>
@@ -3148,7 +3148,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QNetworkAccessCacheBackend</name>
<message>
- <location filename="../src/network/access/qnetworkaccesscachebackend.cpp" line="+35"/>
+ <location filename="../src/network/access/qnetworkaccesscachebackend.cpp" line="+65"/>
<source>Error opening %1</source>
<translation type="unfinished"></translation>
</message>
@@ -3156,7 +3156,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QNetworkAccessFileBackend</name>
<message>
- <location filename="../src/network/access/qnetworkaccessfilebackend.cpp" line="+69"/>
+ <location filename="../src/network/access/qnetworkaccessfilebackend.cpp" line="+99"/>
<source>Request for opening non-local file %1</source>
<translation type="unfinished"></translation>
</message>
@@ -3184,7 +3184,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QNetworkAccessFtpBackend</name>
<message>
- <location filename="../src/network/access/qnetworkaccessftpbackend.cpp" line="+135"/>
+ <location filename="../src/network/access/qnetworkaccessftpbackend.cpp" line="+165"/>
<source>No suitable proxy found</source>
<translation type="unfinished"></translation>
</message>
@@ -3194,7 +3194,7 @@ Do you want to delete it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+131"/>
+ <location line="+130"/>
<source>Logging in to %1 failed: authentication required</source>
<translation type="unfinished"></translation>
</message>
@@ -3212,7 +3212,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QNetworkAccessHttpBackend</name>
<message>
- <location filename="../src/network/access/qnetworkaccesshttpbackend.cpp" line="+565"/>
+ <location filename="../src/network/access/qnetworkaccesshttpbackend.cpp" line="+597"/>
<source>No suitable proxy found</source>
<translation type="unfinished"></translation>
</message>
@@ -3225,7 +3225,7 @@ Do you want to delete it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/network/access/qnetworkreplyimpl.cpp" line="+37"/>
+ <location filename="../src/network/access/qnetworkreplyimpl.cpp" line="+68"/>
<source>Protocol &quot;%1&quot; is unknown</source>
<translation type="unfinished"></translation>
</message>
@@ -3233,7 +3233,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QNetworkReplyImpl</name>
<message>
- <location line="+422"/>
+ <location line="+432"/>
<location line="+22"/>
<source>Operation canceled</source>
<translation type="unfinished"></translation>
@@ -3242,7 +3242,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QOCIDriver</name>
<message>
- <location filename="../src/sql/drivers/oci/qsql_oci.cpp" line="+2027"/>
+ <location filename="../src/sql/drivers/oci/qsql_oci.cpp" line="+2069"/>
<source>Unable to logon</source>
<translation type="unfinished"></translation>
</message>
@@ -3271,7 +3271,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QOCIResult</name>
<message>
- <location line="-976"/>
+ <location line="-963"/>
<location line="+161"/>
<location line="+15"/>
<source>Unable to bind column for batch execute</source>
@@ -3298,18 +3298,12 @@ Do you want to delete it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+29"/>
- <location line="+37"/>
+ <location line="+36"/>
<source>Unable to bind value</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-20"/>
- <source>Unable to execute select statement</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location line="+32"/>
+ <location line="+19"/>
<source>Unable to execute statement</source>
<translation type="unfinished"></translation>
</message>
@@ -3317,7 +3311,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QODBCDriver</name>
<message>
- <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="+1657"/>
+ <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="+1785"/>
<source>Unable to connect</source>
<translation type="unfinished"></translation>
</message>
@@ -3327,7 +3321,7 @@ Do you want to delete it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+234"/>
+ <location line="+242"/>
<source>Unable to disable autocommit</source>
<translation type="unfinished"></translation>
</message>
@@ -3350,19 +3344,19 @@ Do you want to delete it anyway?</source>
<context>
<name>QODBCResult</name>
<message>
- <location line="-1204"/>
+ <location line="-1218"/>
<location line="+349"/>
<source>QODBCResult::reset: Unable to set &apos;SQL_CURSOR_STATIC&apos; as statement attribute. Please check your ODBC driver configuration</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="-332"/>
- <location line="+625"/>
+ <location line="+626"/>
<source>Unable to execute statement</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-554"/>
+ <location line="-555"/>
<source>Unable to fetch next</source>
<translation type="unfinished"></translation>
</message>
@@ -3372,19 +3366,19 @@ Do you want to delete it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+267"/>
+ <location line="+268"/>
<source>Unable to bind variable</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/sql/drivers/db2/qsql_db2.cpp" line="+194"/>
- <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="-474"/>
- <location line="+577"/>
+ <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="-475"/>
+ <location line="+578"/>
<source>Unable to fetch last</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="-671"/>
+ <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="-672"/>
<source>Unable to fetch</source>
<translation type="unfinished"></translation>
</message>
@@ -3402,12 +3396,12 @@ Do you want to delete it anyway?</source>
<context>
<name>QObject</name>
<message>
- <location filename="../src/gui/util/qdesktopservices_mac.cpp" line="+134"/>
+ <location filename="../src/gui/util/qdesktopservices_mac.cpp" line="+165"/>
<source>Home</source>
<translation type="unfinished">Home</translation>
</message>
<message>
- <location filename="../src/network/access/qnetworkaccessdatabackend.cpp" line="+44"/>
+ <location filename="../src/network/access/qnetworkaccessdatabackend.cpp" line="+74"/>
<source>Operation not supported on %1</source>
<translation type="unfinished"></translation>
</message>
@@ -3417,7 +3411,7 @@ Do you want to delete it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/network/access/qnetworkaccessdebugpipebackend.cpp" line="+145"/>
+ <location filename="../src/network/access/qnetworkaccessdebugpipebackend.cpp" line="+175"/>
<source>Write error writing to %1: %2</source>
<translation type="unfinished"></translation>
</message>
@@ -3442,7 +3436,7 @@ Do you want to delete it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/network/kernel/qhostinfo.cpp" line="+147"/>
+ <location filename="../src/network/kernel/qhostinfo.cpp" line="+177"/>
<location line="+57"/>
<source>No host name given</source>
<translation type="unfinished"></translation>
@@ -3451,7 +3445,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QPPDOptionsModel</name>
<message>
- <location filename="../src/gui/dialogs/qprintdialog_unix.cpp" line="+1165"/>
+ <location filename="../src/gui/dialogs/qprintdialog_unix.cpp" line="+1195"/>
<source>Name</source>
<translation type="unfinished">ש×</translation>
</message>
@@ -3464,7 +3458,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QPSQLDriver</name>
<message>
- <location filename="../src/sql/drivers/psql/qsql_psql.cpp" line="+732"/>
+ <location filename="../src/sql/drivers/psql/qsql_psql.cpp" line="+763"/>
<source>Unable to connect</source>
<translation type="unfinished"></translation>
</message>
@@ -3484,7 +3478,7 @@ Do you want to delete it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+336"/>
+ <location line="+358"/>
<source>Unable to subscribe</source>
<translation type="unfinished"></translation>
</message>
@@ -3497,12 +3491,12 @@ Do you want to delete it anyway?</source>
<context>
<name>QPSQLResult</name>
<message>
- <location line="-1035"/>
+ <location line="-1058"/>
<source>Unable to create query</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+373"/>
+ <location line="+374"/>
<source>Unable to prepare statement</source>
<translation type="unfinished"></translation>
</message>
@@ -3510,7 +3504,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QPageSetupWidget</name>
<message>
- <location filename="../src/gui/dialogs/qpagesetupdialog_unix.cpp" line="+274"/>
+ <location filename="../src/gui/dialogs/qpagesetupdialog_unix.cpp" line="+304"/>
<source>Centimeters (cm)</source>
<translation type="unfinished"></translation>
</message>
@@ -3626,7 +3620,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QPrintDialog</name>
<message>
- <location filename="../src/gui/painting/qprinterinfo_unix.cpp" line="+68"/>
+ <location filename="../src/gui/painting/qprinterinfo_unix.cpp" line="+98"/>
<source>locally connected</source>
<translation>מחוברת מקומית</translation>
</message>
@@ -3643,7 +3637,7 @@ Do you want to delete it anyway?</source>
<translation>×œ× ×™×“×•×¢</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qprintdialog_win.cpp" line="+238"/>
+ <location filename="../src/gui/dialogs/qprintdialog_win.cpp" line="+268"/>
<source>OK</source>
<translation type="unfinished">×ישור</translation>
</message>
@@ -3660,7 +3654,7 @@ Do you want to delete it anyway?</source>
<translation type="obsolete">מדפסת</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qprintdialog_qws.cpp" line="+345"/>
+ <location filename="../src/gui/dialogs/qprintdialog_qws.cpp" line="+375"/>
<source>Print all</source>
<translation type="unfinished">הדפס הכל</translation>
</message>
@@ -3840,7 +3834,7 @@ Do you want to delete it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qabstractprintdialog.cpp" line="+80"/>
+ <location filename="../src/gui/dialogs/qabstractprintdialog.cpp" line="+110"/>
<location line="+13"/>
<location filename="../src/gui/dialogs/qprintdialog_win.cpp" line="-2"/>
<source>Print</source>
@@ -4092,13 +4086,13 @@ Please choose a different file name.</source>
<context>
<name>QPrintPreviewDialog</name>
<message>
- <location filename="../src/gui/dialogs/qabstractpagesetupdialog.cpp" line="+38"/>
+ <location filename="../src/gui/dialogs/qabstractpagesetupdialog.cpp" line="+68"/>
<location line="+12"/>
<source>Page Setup</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qprintpreviewdialog.cpp" line="+222"/>
+ <location filename="../src/gui/dialogs/qprintpreviewdialog.cpp" line="+252"/>
<source>%1%</source>
<translation type="unfinished"></translation>
</message>
@@ -4376,8 +4370,8 @@ Please choose a different file name.</source>
<context>
<name>QProcess</name>
<message>
- <location filename="../src/corelib/io/qprocess_unix.cpp" line="+445"/>
- <location filename="../src/corelib/io/qprocess_win.cpp" line="+117"/>
+ <location filename="../src/corelib/io/qprocess_unix.cpp" line="+475"/>
+ <location filename="../src/corelib/io/qprocess_win.cpp" line="+147"/>
<source>Could not open input redirection for reading</source>
<translation type="unfinished"></translation>
</message>
@@ -4406,7 +4400,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/corelib/io/qprocess.cpp" line="+503"/>
+ <location filename="../src/corelib/io/qprocess.cpp" line="+533"/>
<location line="+52"/>
<location filename="../src/corelib/io/qprocess_win.cpp" line="-211"/>
<location line="+50"/>
@@ -4426,6 +4420,11 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
+ <location line="+912"/>
+ <source>No program defined</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<location filename="../src/corelib/io/qprocess_win.cpp" line="-341"/>
<source>Process failed to start</source>
<translation type="unfinished"></translation>
@@ -4434,7 +4433,7 @@ Please choose a different file name.</source>
<context>
<name>QProgressDialog</name>
<message>
- <location filename="../src/gui/dialogs/qprogressdialog.cpp" line="+152"/>
+ <location filename="../src/gui/dialogs/qprogressdialog.cpp" line="+182"/>
<source>Cancel</source>
<translation>ביטול</translation>
</message>
@@ -4458,7 +4457,7 @@ Please choose a different file name.</source>
<context>
<name>QRegExp</name>
<message>
- <location filename="../src/corelib/tools/qregexp.cpp" line="+34"/>
+ <location filename="../src/corelib/tools/qregexp.cpp" line="+64"/>
<source>no error occurred</source>
<translation type="unfinished">×œ× ×ירעה כל שגי××”</translation>
</message>
@@ -4506,7 +4505,7 @@ Please choose a different file name.</source>
<context>
<name>QSQLite2Driver</name>
<message>
- <location filename="../src/sql/drivers/sqlite2/qsql_sqlite2.cpp" line="+353"/>
+ <location filename="../src/sql/drivers/sqlite2/qsql_sqlite2.cpp" line="+396"/>
<source>Error to open database</source>
<translation type="unfinished"></translation>
</message>
@@ -4529,12 +4528,12 @@ Please choose a different file name.</source>
<context>
<name>QSQLite2Result</name>
<message>
- <location line="-310"/>
+ <location line="-323"/>
<source>Unable to fetch results</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+139"/>
+ <location line="+147"/>
<source>Unable to execute statement</source>
<translation type="unfinished"></translation>
</message>
@@ -4542,7 +4541,7 @@ Please choose a different file name.</source>
<context>
<name>QSQLiteDriver</name>
<message>
- <location filename="../src/sql/drivers/sqlite/qsql_sqlite.cpp" line="+498"/>
+ <location filename="../src/sql/drivers/sqlite/qsql_sqlite.cpp" line="+528"/>
<source>Error opening database</source>
<translation type="unfinished"></translation>
</message>
@@ -4605,12 +4604,12 @@ Please choose a different file name.</source>
<context>
<name>QScrollBar</name>
<message>
- <location filename="../src/gui/widgets/qscrollbar.cpp" line="+419"/>
+ <location filename="../src/gui/widgets/qscrollbar.cpp" line="+448"/>
<source>Scroll here</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+3"/>
+ <location line="+2"/>
<source>Left edge</source>
<translation type="unfinished"></translation>
</message>
@@ -4620,7 +4619,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+2"/>
+ <location line="+1"/>
<source>Right edge</source>
<translation type="unfinished"></translation>
</message>
@@ -4630,7 +4629,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+3"/>
+ <location line="+2"/>
<source>Page left</source>
<translation type="unfinished"></translation>
</message>
@@ -4641,7 +4640,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+2"/>
+ <location line="+1"/>
<source>Page right</source>
<translation type="unfinished"></translation>
</message>
@@ -4652,7 +4651,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+3"/>
+ <location line="+2"/>
<source>Scroll left</source>
<translation type="unfinished"></translation>
</message>
@@ -4662,7 +4661,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+2"/>
+ <location line="+1"/>
<source>Scroll right</source>
<translation type="unfinished"></translation>
</message>
@@ -4690,7 +4689,7 @@ Please choose a different file name.</source>
<context>
<name>QSharedMemory</name>
<message>
- <location filename="../src/corelib/kernel/qsharedmemory.cpp" line="+177"/>
+ <location filename="../src/corelib/kernel/qsharedmemory.cpp" line="+207"/>
<source>%1: unable to set key on lock</source>
<translation type="unfinished"></translation>
</message>
@@ -4701,7 +4700,7 @@ Please choose a different file name.</source>
</message>
<message>
<location line="+168"/>
- <location filename="../src/corelib/kernel/qsharedmemory_p.h" line="+118"/>
+ <location filename="../src/corelib/kernel/qsharedmemory_p.h" line="+148"/>
<source>%1: unable to lock</source>
<translation type="unfinished"></translation>
</message>
@@ -4711,8 +4710,8 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/corelib/kernel/qsharedmemory_unix.cpp" line="+48"/>
- <location filename="../src/corelib/kernel/qsharedmemory_win.cpp" line="+57"/>
+ <location filename="../src/corelib/kernel/qsharedmemory_unix.cpp" line="+78"/>
+ <location filename="../src/corelib/kernel/qsharedmemory_win.cpp" line="+87"/>
<source>%1: permission denied</source>
<translation type="unfinished"></translation>
</message>
@@ -4790,7 +4789,7 @@ Please choose a different file name.</source>
<context>
<name>QShortcut</name>
<message>
- <location filename="../src/gui/kernel/qkeysequence.cpp" line="+343"/>
+ <location filename="../src/gui/kernel/qkeysequence.cpp" line="+373"/>
<source>Space</source>
<translation type="unfinished">רווח</translation>
</message>
@@ -5371,7 +5370,7 @@ Please choose a different file name.</source>
<context>
<name>QSql</name>
<message>
- <location filename="../src/qt3support/sql/q3sqlmanager_p.cpp" line="+860"/>
+ <location filename="../src/qt3support/sql/q3sqlmanager_p.cpp" line="+890"/>
<source>Delete</source>
<translation type="unfinished">מחק</translation>
</message>
@@ -5428,7 +5427,7 @@ Please choose a different file name.</source>
<context>
<name>QSslSocket</name>
<message>
- <location filename="../src/network/ssl/qsslsocket_openssl.cpp" line="+539"/>
+ <location filename="../src/network/ssl/qsslsocket_openssl.cpp" line="+569"/>
<source>Unable to write data: %1</source>
<translation type="unfinished"></translation>
</message>
@@ -5487,7 +5486,7 @@ Please choose a different file name.</source>
<name>QSystemSemaphore</name>
<message>
<location filename="../src/corelib/kernel/qsystemsemaphore_unix.cpp" line="-41"/>
- <location filename="../src/corelib/kernel/qsystemsemaphore_win.cpp" line="+36"/>
+ <location filename="../src/corelib/kernel/qsystemsemaphore_win.cpp" line="+66"/>
<source>%1: out of resources</source>
<translation type="unfinished"></translation>
</message>
@@ -5517,7 +5516,7 @@ Please choose a different file name.</source>
<context>
<name>QTDSDriver</name>
<message>
- <location filename="../src/sql/drivers/tds/qsql_tds.cpp" line="+552"/>
+ <location filename="../src/sql/drivers/tds/qsql_tds.cpp" line="+584"/>
<source>Unable to open connection</source>
<translation type="unfinished"></translation>
</message>
@@ -5543,7 +5542,7 @@ Please choose a different file name.</source>
<context>
<name>QTcpServer</name>
<message>
- <location filename="../src/network/socket/qtcpserver.cpp" line="+252"/>
+ <location filename="../src/network/socket/qtcpserver.cpp" line="+282"/>
<source>Operation on socket is not supported</source>
<translation type="unfinished"></translation>
</message>
@@ -5551,7 +5550,7 @@ Please choose a different file name.</source>
<context>
<name>QTextControl</name>
<message>
- <location filename="../src/gui/text/qtextcontrol.cpp" line="+1942"/>
+ <location filename="../src/gui/text/qtextcontrol.cpp" line="+1973"/>
<source>&amp;Undo</source>
<translation type="unfinished">&amp;בטל</translation>
</message>
@@ -5609,7 +5608,7 @@ Please choose a different file name.</source>
<context>
<name>QUdpSocket</name>
<message>
- <location filename="../src/network/socket/qudpsocket.cpp" line="+139"/>
+ <location filename="../src/network/socket/qudpsocket.cpp" line="+169"/>
<source>This platform does not support IPv6</source>
<translation type="unfinished"></translation>
</message>
@@ -5617,7 +5616,7 @@ Please choose a different file name.</source>
<context>
<name>QUndoGroup</name>
<message>
- <location filename="../src/gui/util/qundogroup.cpp" line="+356"/>
+ <location filename="../src/gui/util/qundogroup.cpp" line="+386"/>
<source>Undo</source>
<translation type="unfinished">בטל</translation>
</message>
@@ -5630,7 +5629,7 @@ Please choose a different file name.</source>
<context>
<name>QUndoModel</name>
<message>
- <location filename="../src/gui/util/qundoview.cpp" line="+71"/>
+ <location filename="../src/gui/util/qundoview.cpp" line="+101"/>
<source>&lt;empty&gt;</source>
<translation type="unfinished"></translation>
</message>
@@ -5638,7 +5637,7 @@ Please choose a different file name.</source>
<context>
<name>QUndoStack</name>
<message>
- <location filename="../src/gui/util/qundostack.cpp" line="+804"/>
+ <location filename="../src/gui/util/qundostack.cpp" line="+834"/>
<source>Undo</source>
<translation type="unfinished">בטל</translation>
</message>
@@ -5709,7 +5708,7 @@ Please choose a different file name.</source>
<context>
<name>QWebFrame</name>
<message>
- <location filename="../src/3rdparty/webkit/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp" line="+686"/>
+ <location filename="../src/3rdparty/webkit/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp" line="+692"/>
<source>Request cancelled</source>
<translation type="unfinished"></translation>
</message>
@@ -6119,7 +6118,7 @@ Please choose a different file name.</source>
</translation>
</message>
<message>
- <location filename="../src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp" line="+1342"/>
+ <location filename="../src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp" line="+1322"/>
<source>JavaScript Alert - %1</source>
<translation type="unfinished"></translation>
</message>
@@ -6195,6 +6194,11 @@ Please choose a different file name.</source>
</message>
<message>
<location line="+3"/>
+ <source>Select all</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
<source>Select to the next character</source>
<translation type="unfinished"></translation>
</message>
@@ -6263,11 +6267,21 @@ Please choose a different file name.</source>
<source>Delete to the end of the word</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <location line="+33"/>
+ <source>Insert a new paragraph</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Insert a new line</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>QWhatsThisAction</name>
<message>
- <location filename="../src/gui/kernel/qwhatsthis.cpp" line="+492"/>
+ <location filename="../src/gui/kernel/qwhatsthis.cpp" line="+522"/>
<source>What&apos;s This?</source>
<translation type="unfinished">מה זה?</translation>
</message>
@@ -6275,7 +6289,7 @@ Please choose a different file name.</source>
<context>
<name>QWidget</name>
<message>
- <location filename="../src/gui/kernel/qwidget.cpp" line="+5290"/>
+ <location filename="../src/gui/kernel/qwidget.cpp" line="+5326"/>
<source>*</source>
<translation type="unfinished"></translation>
</message>
@@ -6283,7 +6297,7 @@ Please choose a different file name.</source>
<context>
<name>QWizard</name>
<message>
- <location filename="../src/gui/dialogs/qwizard.cpp" line="+617"/>
+ <location filename="../src/gui/dialogs/qwizard.cpp" line="+649"/>
<source>Cancel</source>
<translation type="unfinished">ביטול</translation>
</message>
@@ -6341,7 +6355,7 @@ Please choose a different file name.</source>
<context>
<name>QWorkspace</name>
<message>
- <location filename="../src/gui/widgets/qworkspace.cpp" line="+1064"/>
+ <location filename="../src/gui/widgets/qworkspace.cpp" line="+1094"/>
<source>&amp;Restore</source>
<translation type="unfinished">ש&amp;חזר</translation>
</message>
@@ -6411,7 +6425,7 @@ Please choose a different file name.</source>
<context>
<name>QXml</name>
<message>
- <location filename="../src/xml/sax/qxml.cpp" line="+28"/>
+ <location filename="../src/xml/sax/qxml.cpp" line="+58"/>
<source>no error occurred</source>
<translation>×œ× ×ירעה כל שגי××”</translation>
</message>
@@ -6529,8 +6543,8 @@ Please choose a different file name.</source>
<context>
<name>QXmlStream</name>
<message>
- <location filename="../src/corelib/xml/qxmlstream.cpp" line="+562"/>
- <location filename="../src/corelib/xml/qxmlstream_p.h" line="+1739"/>
+ <location filename="../src/corelib/xml/qxmlstream.cpp" line="+592"/>
+ <location filename="../src/corelib/xml/qxmlstream_p.h" line="+1769"/>
<source>Extra content at end of document.</source>
<translation type="unfinished"></translation>
</message>
@@ -6714,7 +6728,7 @@ Please choose a different file name.</source>
<context>
<name>QtXmlPatterns</name>
<message>
- <location filename="../src/xmlpatterns/acceltree/qacceltreebuilder.cpp" line="+175"/>
+ <location filename="../src/xmlpatterns/acceltree/qacceltreebuilder.cpp" line="+205"/>
<source>An %1-attribute with value %2 has already been declared.</source>
<translation type="unfinished"></translation>
</message>
@@ -6724,12 +6738,12 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/api/qiodevicedelegate.cpp" line="+54"/>
+ <location filename="../src/xmlpatterns/api/qiodevicedelegate.cpp" line="+84"/>
<source>Network timeout.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/api/qxmlserializer.cpp" line="+290"/>
+ <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 type="unfinished"></translation>
</message>
@@ -6739,7 +6753,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qabstractdatetime.cpp" line="+50"/>
+ <location filename="../src/xmlpatterns/data/qabstractdatetime.cpp" line="+80"/>
<source>Year %1 is invalid because it begins with %2.</source>
<translation type="unfinished"></translation>
</message>
@@ -6779,7 +6793,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qabstractduration.cpp" line="+69"/>
+ <location filename="../src/xmlpatterns/data/qabstractduration.cpp" line="+99"/>
<location line="+15"/>
<source>At least one component must be present.</source>
<translation type="unfinished"></translation>
@@ -6790,7 +6804,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qabstractfloatmathematician.cpp" line="+34"/>
+ <location filename="../src/xmlpatterns/data/qabstractfloatmathematician.cpp" line="+64"/>
<source>No operand in an integer division, %1, can be %2.</source>
<translation type="unfinished"></translation>
</message>
@@ -6805,17 +6819,17 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qanyuri_p.h" line="+102"/>
+ <location filename="../src/xmlpatterns/data/qanyuri_p.h" line="+132"/>
<source>%1 is not a valid value of type %2.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qatomiccasters_p.h" line="+193"/>
+ <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 type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qatomicmathematicians.cpp" line="+35"/>
+ <location filename="../src/xmlpatterns/data/qatomicmathematicians.cpp" line="+65"/>
<source>Integer division (%1) by zero (%2) is undefined.</source>
<translation type="unfinished"></translation>
</message>
@@ -6846,17 +6860,17 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qatomicvalue.cpp" line="+49"/>
+ <location filename="../src/xmlpatterns/data/qatomicvalue.cpp" line="+79"/>
<source>A value of type %1 cannot have an Effective Boolean Value.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qboolean.cpp" line="+48"/>
+ <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 type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qderivedinteger_p.h" line="+372"/>
+ <location filename="../src/xmlpatterns/data/qderivedinteger_p.h" line="+402"/>
<source>Value %1 of type %2 exceeds maximum (%3).</source>
<translation type="unfinished"></translation>
</message>
@@ -6866,7 +6880,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qhexbinary.cpp" line="+61"/>
+ <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 type="unfinished"></translation>
</message>
@@ -6876,7 +6890,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qarithmeticexpression.cpp" line="+177"/>
+ <location filename="../src/xmlpatterns/expr/qarithmeticexpression.cpp" line="+207"/>
<source>Operator %1 cannot be used on type %2.</source>
<translation type="unfinished"></translation>
</message>
@@ -6886,7 +6900,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qattributenamevalidator.cpp" line="+36"/>
+ <location filename="../src/xmlpatterns/expr/qattributenamevalidator.cpp" line="+66"/>
<source>The namespace URI in the name for a computed attribute cannot be %1.</source>
<translation type="unfinished"></translation>
</message>
@@ -6896,7 +6910,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qcastas.cpp" line="+58"/>
+ <location filename="../src/xmlpatterns/expr/qcastas.cpp" line="+88"/>
<source>Type error in cast, expected %1, received %2.</source>
<translation type="unfinished"></translation>
</message>
@@ -6906,7 +6920,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qcastingplatform.cpp" line="+104"/>
+ <location filename="../src/xmlpatterns/expr/qcastingplatform.cpp" line="+134"/>
<source>No casting is possible with %1 as the target type.</source>
<translation type="unfinished"></translation>
</message>
@@ -6931,7 +6945,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qcommentconstructor.cpp" line="+37"/>
+ <location filename="../src/xmlpatterns/expr/qcommentconstructor.cpp" line="+67"/>
<source>A comment cannot contain %1</source>
<translation type="unfinished"></translation>
</message>
@@ -6941,7 +6955,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qcomparisonplatform.cpp" line="+137"/>
+ <location filename="../src/xmlpatterns/expr/qcomparisonplatform.cpp" line="+167"/>
<source>No comparisons can be done involving the type %1.</source>
<translation type="unfinished"></translation>
</message>
@@ -6951,12 +6965,12 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qdocumentcontentvalidator.cpp" line="+56"/>
+ <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 type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qexpressionfactory.cpp" line="+139"/>
+ <location filename="../src/xmlpatterns/expr/qexpressionfactory.cpp" line="+169"/>
<source>A library module cannot be evaluated directly. It must be imported from a main module.</source>
<translation type="unfinished"></translation>
</message>
@@ -6966,7 +6980,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qgenericpredicate.cpp" line="+76"/>
+ <location filename="../src/xmlpatterns/expr/qgenericpredicate.cpp" line="+106"/>
<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 type="unfinished"></translation>
</message>
@@ -6976,7 +6990,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qncnameconstructor_p.h" line="+83"/>
+ <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 type="unfinished"></translation>
</message>
@@ -6986,33 +7000,33 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qpath.cpp" line="+79"/>
+ <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 type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qprocessinginstructionconstructor.cpp" line="+54"/>
+ <location filename="../src/xmlpatterns/expr/qprocessinginstructionconstructor.cpp" line="+84"/>
<source>The data of a processing instruction cannot contain the string %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qqnameconstructor.cpp" line="+52"/>
+ <location filename="../src/xmlpatterns/expr/qqnameconstructor.cpp" line="+82"/>
<source>No namespace binding exists for the prefix %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qqnameconstructor_p.h" line="+126"/>
+ <location filename="../src/xmlpatterns/expr/qqnameconstructor_p.h" line="+156"/>
<source>No namespace binding exists for the prefix %1 in %2</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+12"/>
- <location filename="../src/xmlpatterns/functions/qqnamefns.cpp" line="+39"/>
+ <location filename="../src/xmlpatterns/functions/qqnamefns.cpp" line="+69"/>
<source>%1 is an invalid %2</source>
<translation type="unfinished"></translation>
</message>
<message numerus="yes">
- <location filename="../src/xmlpatterns/functions/qabstractfunctionfactory.cpp" line="+47"/>
+ <location filename="../src/xmlpatterns/functions/qabstractfunctionfactory.cpp" line="+77"/>
<source>%1 takes at most %n argument(s). %2 is therefore invalid.</source>
<translation type="unfinished">
<numerusform></numerusform>
@@ -7026,7 +7040,7 @@ Please choose a different file name.</source>
</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qaggregatefns.cpp" line="+90"/>
+ <location filename="../src/xmlpatterns/functions/qaggregatefns.cpp" line="+120"/>
<source>The first argument to %1 cannot be of type %2. It must be a numeric type, xs:yearMonthDuration or xs:dayTimeDuration.</source>
<translation type="unfinished"></translation>
</message>
@@ -7041,27 +7055,27 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qassemblestringfns.cpp" line="+58"/>
+ <location filename="../src/xmlpatterns/functions/qassemblestringfns.cpp" line="+88"/>
<source>%1 is not a valid XML 1.0 character.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qcomparingaggregator.cpp" line="+167"/>
+ <location filename="../src/xmlpatterns/functions/qcomparingaggregator.cpp" line="+197"/>
<source>The first argument to %1 cannot be of type %2.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qdatetimefn.cpp" line="+56"/>
+ <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 type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qerrorfn.cpp" line="+31"/>
+ <location filename="../src/xmlpatterns/functions/qerrorfn.cpp" line="+61"/>
<source>%1 was called.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qpatternmatchingfns.cpp" line="+64"/>
+ <location filename="../src/xmlpatterns/functions/qpatternmatchingfns.cpp" line="+94"/>
<source>%1 must be followed by %2 or %3, not at the end of the replacement string.</source>
<translation type="unfinished"></translation>
</message>
@@ -7076,7 +7090,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qpatternplatform.cpp" line="+62"/>
+ <location filename="../src/xmlpatterns/functions/qpatternplatform.cpp" line="+92"/>
<source>%1 matches newline characters</source>
<translation type="unfinished"></translation>
</message>
@@ -7111,17 +7125,17 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qsequencefns.cpp" line="+317"/>
+ <location filename="../src/xmlpatterns/functions/qsequencefns.cpp" line="+347"/>
<source>It will not be possible to retrieve %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qcontextnodechecker.cpp" line="+24"/>
+ <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 type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qsequencegeneratingfns.cpp" line="+249"/>
+ <location filename="../src/xmlpatterns/functions/qsequencegeneratingfns.cpp" line="+279"/>
<source>The default collection is undefined</source>
<translation type="unfinished"></translation>
</message>
@@ -7131,12 +7145,12 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qstringvaluefns.cpp" line="+222"/>
+ <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 type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qtimezonefns.cpp" line="+57"/>
+ <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 type="unfinished"></translation>
</message>
@@ -7146,17 +7160,17 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/janitors/qcardinalityverifier.cpp" line="+28"/>
+ <location filename="../src/xmlpatterns/janitors/qcardinalityverifier.cpp" line="+58"/>
<source>Required cardinality is %1; got cardinality %2.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/janitors/qitemverifier.cpp" line="+37"/>
+ <location filename="../src/xmlpatterns/janitors/qitemverifier.cpp" line="+67"/>
<source>The item %1 did not match the required type %2.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="+319"/>
+ <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="+379"/>
<location line="+7253"/>
<source>%1 is an unknown schema type.</source>
<translation type="unfinished"></translation>
@@ -7177,7 +7191,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/parser/qparsercontext.cpp" line="+63"/>
+ <location filename="../src/xmlpatterns/parser/qparsercontext.cpp" line="+93"/>
<source>The variable %1 is unused</source>
<translation type="unfinished"></translation>
</message>
@@ -7459,7 +7473,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/type/qcardinality.cpp" line="+25"/>
+ <location filename="../src/xmlpatterns/type/qcardinality.cpp" line="+55"/>
<source>empty</source>
<translation type="unfinished"></translation>
</message>
@@ -7484,7 +7498,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/type/qtypechecker.cpp" line="+33"/>
+ <location filename="../src/xmlpatterns/type/qtypechecker.cpp" line="+63"/>
<source>Required type is %1, but %2 was found.</source>
<translation type="unfinished"></translation>
</message>
@@ -7499,7 +7513,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/utils/qoutputvalidator.cpp" line="+56"/>
+ <location filename="../src/xmlpatterns/utils/qoutputvalidator.cpp" line="+86"/>
<source>It&apos;s not possible to add attributes after any other kind of node.</source>
<translation type="unfinished"></translation>
</message>
@@ -7509,12 +7523,12 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/utils/qxpathhelper_p.h" line="+90"/>
+ <location filename="../src/xmlpatterns/utils/qxpathhelper_p.h" line="+120"/>
<source>Only the Unicode Codepoint Collation is supported(%1). %2 is unsupported.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/acceltree/qacceltreeresourceloader.cpp" line="+284"/>
+ <location filename="../src/xmlpatterns/acceltree/qacceltreeresourceloader.cpp" line="+314"/>
<source>%1 is an unsupported encoding.</source>
<translation type="unfinished"></translation>
</message>
@@ -7529,13 +7543,13 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qapplytemplate.cpp" line="+89"/>
+ <location filename="../src/xmlpatterns/expr/qapplytemplate.cpp" line="+119"/>
<source>Ambiguous rule match.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qcomputednamespaceconstructor.cpp" line="+39"/>
- <source>In a namespace constructor, the value for a namespace value cannot be an empty string.</source>
+ <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 type="unfinished"></translation>
</message>
<message>
@@ -7554,12 +7568,12 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qevaluationcache.cpp" line="+87"/>
+ <location filename="../src/xmlpatterns/expr/qevaluationcache.cpp" line="+117"/>
<source>Circularity detected</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qtemplate.cpp" line="+115"/>
+ <location filename="../src/xmlpatterns/expr/qtemplate.cpp" line="+145"/>
<source>The parameter %1 is required, but no corresponding %2 is supplied.</source>
<translation type="unfinished"></translation>
</message>
@@ -7569,12 +7583,12 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qunparsedtextfn.cpp" line="+35"/>
+ <location filename="../src/xmlpatterns/functions/qunparsedtextfn.cpp" line="+65"/>
<source>The URI cannot have a fragment</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/parser/qxslttokenizer.cpp" line="+489"/>
+ <location filename="../src/xmlpatterns/parser/qxslttokenizer.cpp" line="+519"/>
<source>Element %1 is not allowed at this location.</source>
<translation type="unfinished"></translation>
</message>
@@ -7629,7 +7643,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/parser/qmaintainingreader.cpp" line="+153"/>
+ <location filename="../src/xmlpatterns/parser/qmaintainingreader.cpp" line="+183"/>
<source>Attribute %1 cannot appear on the element %2. Only the standard attributes can appear.</source>
<translation type="unfinished"></translation>
</message>
@@ -7704,7 +7718,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+432"/>
+ <location line="+434"/>
<source>Element %1 cannot have a sequence constructor.</source>
<translation type="unfinished"></translation>
</message>
diff --git a/translations/qt_ja_JP.ts b/translations/qt_ja_JP.ts
index de76cf1..7c8b874 100644
--- a/translations/qt_ja_JP.ts
+++ b/translations/qt_ja_JP.ts
@@ -4,7 +4,7 @@
<context>
<name>AudioOutput</name>
<message>
- <location filename="../src/3rdparty/phonon/phonon/audiooutput.cpp" line="+374"/>
+ <location filename="../src/3rdparty/phonon/phonon/audiooutput.cpp" line="+375"/>
<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="unfinished"></translation>
</message>
@@ -22,7 +22,7 @@
<context>
<name>CloseButton</name>
<message>
- <location filename="../src/gui/widgets/qtabbar.cpp" line="+2217"/>
+ <location filename="../src/gui/widgets/qtabbar.cpp" line="+2251"/>
<source>Close Tab</source>
<translation type="unfinished"></translation>
</message>
@@ -89,7 +89,7 @@
<context>
<name>Phonon::Gstreamer::MediaObject</name>
<message>
- <location filename="../src/3rdparty/phonon/gstreamer/mediaobject.cpp" line="+88"/>
+ <location filename="../src/3rdparty/phonon/gstreamer/mediaobject.cpp" line="+90"/>
<source>Cannot start playback.
Check your Gstreamer installation and make sure you
@@ -102,24 +102,24 @@ have libgstreamer-plugins-base installed.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+653"/>
- <location line="+9"/>
+ <location line="+676"/>
+ <location line="+8"/>
<location line="+15"/>
- <location line="+7"/>
- <location line="+5"/>
- <location line="+20"/>
- <location line="+317"/>
+ <location line="+9"/>
+ <location line="+6"/>
+ <location line="+19"/>
+ <location line="+335"/>
<location line="+24"/>
<source>Could not open media source.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-381"/>
+ <location line="-403"/>
<source>Invalid source type.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+355"/>
+ <location line="+377"/>
<source>Could not locate media source.</source>
<translation type="unfinished"></translation>
</message>
@@ -153,7 +153,7 @@ have libgstreamer-plugins-base installed.</source>
<context>
<name>Q3Accel</name>
<message>
- <location filename="../src/qt3support/other/q3accel.cpp" line="+451"/>
+ <location filename="../src/qt3support/other/q3accel.cpp" line="+481"/>
<source>%1, %2 not defined</source>
<translation>%1, %2 ã¯å®šç¾©ã•ã‚Œã¦ã„ã¾ã›ã‚“</translation>
</message>
@@ -166,7 +166,7 @@ have libgstreamer-plugins-base installed.</source>
<context>
<name>Q3DataTable</name>
<message>
- <location filename="../src/qt3support/sql/q3datatable.cpp" line="+253"/>
+ <location filename="../src/qt3support/sql/q3datatable.cpp" line="+285"/>
<source>True</source>
<translation>True</translation>
</message>
@@ -194,7 +194,7 @@ have libgstreamer-plugins-base installed.</source>
<context>
<name>Q3FileDialog</name>
<message>
- <location filename="../src/qt3support/dialogs/q3filedialog_win.cpp" line="+102"/>
+ <location filename="../src/qt3support/dialogs/q3filedialog_win.cpp" line="+132"/>
<source>All Files (*.*)</source>
<translation>ã™ã¹ã¦ã®ãƒ•ã‚¡ã‚¤ãƒ«(*.*)</translation>
</message>
@@ -209,7 +209,7 @@ have libgstreamer-plugins-base installed.</source>
<translation>ディレクトリをé¸æŠž</translation>
</message>
<message>
- <location filename="../src/qt3support/dialogs/q3filedialog.cpp" line="+834"/>
+ <location filename="../src/qt3support/dialogs/q3filedialog.cpp" line="+864"/>
<source>Copy or Move a File</source>
<translation>ファイルをコピーã¾ãŸã¯ç§»å‹•</translation>
</message>
@@ -234,7 +234,7 @@ have libgstreamer-plugins-base installed.</source>
<location line="-157"/>
<location line="+49"/>
<location line="+2153"/>
- <location filename="../src/qt3support/dialogs/q3filedialog_mac.cpp" line="+80"/>
+ <location filename="../src/qt3support/dialogs/q3filedialog_mac.cpp" line="+110"/>
<source>All Files (*)</source>
<translation>ã™ã¹ã¦ã®ãƒ•ã‚¡ã‚¤ãƒ«(*)</translation>
</message>
@@ -527,7 +527,7 @@ Check path and filename.</source>
<context>
<name>Q3LocalFs</name>
<message>
- <location filename="../src/qt3support/network/q3localfs.cpp" line="+100"/>
+ <location filename="../src/qt3support/network/q3localfs.cpp" line="+130"/>
<location line="+10"/>
<source>Could not read directory
%1</source>
@@ -577,7 +577,7 @@ to
<context>
<name>Q3MainWindow</name>
<message>
- <location filename="../src/qt3support/widgets/q3mainwindow.cpp" line="+2021"/>
+ <location filename="../src/qt3support/widgets/q3mainwindow.cpp" line="+2051"/>
<source>Line up</source>
<translation>整列</translation>
</message>
@@ -590,7 +590,7 @@ to
<context>
<name>Q3NetworkProtocol</name>
<message>
- <location filename="../src/qt3support/network/q3networkprotocol.cpp" line="+824"/>
+ <location filename="../src/qt3support/network/q3networkprotocol.cpp" line="+854"/>
<source>Operation stopped by the user</source>
<translation>æ“作ãŒãƒ¦ãƒ¼ã‚¶ã«ã‚ˆã£ã¦åœæ­¢ã•ã‚Œã¾ã—ãŸ</translation>
</message>
@@ -598,7 +598,7 @@ to
<context>
<name>Q3ProgressDialog</name>
<message>
- <location filename="../src/qt3support/dialogs/q3progressdialog.cpp" line="+194"/>
+ <location filename="../src/qt3support/dialogs/q3progressdialog.cpp" line="+224"/>
<location line="+61"/>
<source>Cancel</source>
<translation>キャンセル</translation>
@@ -607,7 +607,7 @@ to
<context>
<name>Q3TabDialog</name>
<message>
- <location filename="../src/qt3support/dialogs/q3tabdialog.cpp" line="+159"/>
+ <location filename="../src/qt3support/dialogs/q3tabdialog.cpp" line="+189"/>
<location line="+814"/>
<source>OK</source>
<translation>OK</translation>
@@ -636,7 +636,7 @@ to
<context>
<name>Q3TextEdit</name>
<message>
- <location filename="../src/qt3support/text/q3textedit.cpp" line="+5399"/>
+ <location filename="../src/qt3support/text/q3textedit.cpp" line="+5429"/>
<source>&amp;Undo</source>
<translation>å…ƒã«æˆ»ã™(&amp;U)</translation>
</message>
@@ -675,7 +675,7 @@ to
<context>
<name>Q3TitleBar</name>
<message>
- <location filename="../src/plugins/accessible/compat/q3complexwidgets.cpp" line="+216"/>
+ <location filename="../src/plugins/accessible/compat/q3complexwidgets.cpp" line="+246"/>
<source>System</source>
<translation>システム</translation>
</message>
@@ -743,7 +743,7 @@ to
<context>
<name>Q3ToolBar</name>
<message>
- <location filename="../src/qt3support/widgets/q3toolbar.cpp" line="+662"/>
+ <location filename="../src/qt3support/widgets/q3toolbar.cpp" line="+692"/>
<source>More...</source>
<translation>ãã®ä»–...</translation>
</message>
@@ -751,7 +751,7 @@ to
<context>
<name>Q3UrlOperator</name>
<message>
- <location filename="../src/qt3support/network/q3urloperator.cpp" line="+356"/>
+ <location filename="../src/qt3support/network/q3urloperator.cpp" line="+386"/>
<location line="+260"/>
<location line="+4"/>
<source>The protocol `%1&apos; is not supported</source>
@@ -803,7 +803,7 @@ to
<context>
<name>Q3Wizard</name>
<message>
- <location filename="../src/qt3support/dialogs/q3wizard.cpp" line="+147"/>
+ <location filename="../src/qt3support/dialogs/q3wizard.cpp" line="+177"/>
<source>&amp;Cancel</source>
<translation>キャンセル(&amp;C)</translation>
</message>
@@ -831,9 +831,9 @@ to
<context>
<name>QAbstractSocket</name>
<message>
- <location filename="../src/network/socket/qabstractsocket.cpp" line="+838"/>
- <location filename="../src/network/socket/qhttpsocketengine.cpp" line="+585"/>
- <location filename="../src/network/socket/qsocks5socketengine.cpp" line="+627"/>
+ <location filename="../src/network/socket/qabstractsocket.cpp" line="+868"/>
+ <location filename="../src/network/socket/qhttpsocketengine.cpp" line="+615"/>
+ <location filename="../src/network/socket/qsocks5socketengine.cpp" line="+657"/>
<location line="+26"/>
<source>Host not found</source>
<translation>ホストãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸ</translation>
@@ -876,7 +876,7 @@ to
<context>
<name>QAbstractSpinBox</name>
<message>
- <location filename="../src/gui/widgets/qabstractspinbox.cpp" line="+1169"/>
+ <location filename="../src/gui/widgets/qabstractspinbox.cpp" line="+1199"/>
<source>&amp;Step up</source>
<translation>上(&amp;S)</translation>
</message>
@@ -894,7 +894,7 @@ to
<context>
<name>QApplication</name>
<message>
- <location filename="../src/gui/accessible/qaccessibleobject.cpp" line="+346"/>
+ <location filename="../src/gui/accessible/qaccessibleobject.cpp" line="+376"/>
<source>Activate</source>
<translation>アクティブã«</translation>
</message>
@@ -904,7 +904,7 @@ to
<translation>メインウィンドウをアクティブã«ã™ã‚‹</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qmessagebox.h" line="+322"/>
+ <location filename="../src/gui/dialogs/qmessagebox.h" line="+352"/>
<source>Executable &apos;%1&apos; requires Qt %2, found Qt %3.</source>
<translation>実行å¯èƒ½ãƒ•ã‚¡ã‚¤ãƒ« &apos;%1&apos; ã«ã¯ Qt %2 ãŒå¿…è¦ã§ã™ã€‚Qt %3 ãŒè¦‹ã¤ã‹ã‚Šã¾ã—ãŸã€‚</translation>
</message>
@@ -914,7 +914,7 @@ to
<translation>互æ›æ€§ã®ãªã„Qtライブラリエラー</translation>
</message>
<message>
- <location filename="../src/gui/kernel/qapplication.cpp" line="+2212"/>
+ <location filename="../src/gui/kernel/qapplication.cpp" line="+2248"/>
<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>
@@ -946,7 +946,7 @@ to
<context>
<name>QCheckBox</name>
<message>
- <location filename="../src/plugins/accessible/widgets/simplewidgets.cpp" line="+84"/>
+ <location filename="../src/plugins/accessible/widgets/simplewidgets.cpp" line="+114"/>
<source>Uncheck</source>
<translation>é¸æŠžè§£é™¤</translation>
</message>
@@ -964,7 +964,7 @@ to
<context>
<name>QColorDialog</name>
<message>
- <location filename="../src/gui/dialogs/qcolordialog.cpp" line="+1219"/>
+ <location filename="../src/gui/dialogs/qcolordialog.cpp" line="+1253"/>
<source>Hu&amp;e:</source>
<translation>色相(&amp;E):</translation>
</message>
@@ -1038,13 +1038,13 @@ to
<context>
<name>QComboBox</name>
<message>
- <location filename="../src/plugins/accessible/widgets/complexwidgets.cpp" line="+1741"/>
+ <location filename="../src/plugins/accessible/widgets/complexwidgets.cpp" line="+1771"/>
<location line="+65"/>
<source>Open</source>
<translation>オープン</translation>
</message>
<message>
- <location filename="../src/gui/itemviews/qitemeditorfactory.cpp" line="+514"/>
+ <location filename="../src/gui/itemviews/qitemeditorfactory.cpp" line="+544"/>
<source>False</source>
<translation type="unfinished">False</translation>
</message>
@@ -1062,7 +1062,7 @@ to
<context>
<name>QCoreApplication</name>
<message>
- <location filename="../src/corelib/kernel/qsystemsemaphore_unix.cpp" line="+89"/>
+ <location filename="../src/corelib/kernel/qsystemsemaphore_unix.cpp" line="+119"/>
<source>%1: key is empty</source>
<comment>QSystemSemaphore</comment>
<translation type="unfinished"></translation>
@@ -1083,12 +1083,12 @@ to
<context>
<name>QDB2Driver</name>
<message>
- <location filename="../src/sql/drivers/db2/qsql_db2.cpp" line="+1217"/>
+ <location filename="../src/sql/drivers/db2/qsql_db2.cpp" line="+1276"/>
<source>Unable to connect</source>
<translation>接続ã§ãã¾ã›ã‚“</translation>
</message>
<message>
- <location line="+263"/>
+ <location line="+303"/>
<source>Unable to commit transaction</source>
<translation>トランザクションをコミットã§ãã¾ã›ã‚“</translation>
</message>
@@ -1106,8 +1106,8 @@ to
<context>
<name>QDB2Result</name>
<message>
- <location line="-986"/>
- <location line="+242"/>
+ <location line="-1043"/>
+ <location line="+243"/>
<source>Unable to execute statement</source>
<translation>ステートメントを実行ã§ãã¾ã›ã‚“</translation>
</message>
@@ -1122,7 +1122,7 @@ to
<translation>変数をãƒã‚¤ãƒ³ãƒ‰ã§ãã¾ã›ã‚“</translation>
</message>
<message>
- <location line="+91"/>
+ <location line="+92"/>
<source>Unable to fetch record %1</source>
<translation>レコード %1 をフェッãƒã§ãã¾ã›ã‚“</translation>
</message>
@@ -1140,7 +1140,7 @@ to
<context>
<name>QDateTimeEdit</name>
<message>
- <location filename="../src/gui/widgets/qdatetimeedit.cpp" line="+2265"/>
+ <location filename="../src/gui/widgets/qdatetimeedit.cpp" line="+2295"/>
<source>AM</source>
<translation>AM</translation>
</message>
@@ -1163,7 +1163,7 @@ to
<context>
<name>QDial</name>
<message>
- <location filename="../src/plugins/accessible/widgets/rangecontrols.cpp" line="+921"/>
+ <location filename="../src/plugins/accessible/widgets/rangecontrols.cpp" line="+951"/>
<source>QDial</source>
<translation type="unfinished"></translation>
</message>
@@ -1181,7 +1181,7 @@ to
<context>
<name>QDialog</name>
<message>
- <location filename="../src/gui/dialogs/qdialog.cpp" line="+567"/>
+ <location filename="../src/gui/dialogs/qdialog.cpp" line="+597"/>
<source>What&apos;s This?</source>
<translation>ヒント</translation>
</message>
@@ -1194,9 +1194,9 @@ to
<context>
<name>QDialogButtonBox</name>
<message>
- <location filename="../src/gui/dialogs/qmessagebox.cpp" line="+1830"/>
+ <location filename="../src/gui/dialogs/qmessagebox.cpp" line="+1866"/>
<location line="+464"/>
- <location filename="../src/gui/widgets/qdialogbuttonbox.cpp" line="+531"/>
+ <location filename="../src/gui/widgets/qdialogbuttonbox.cpp" line="+561"/>
<source>OK</source>
<translation>OK</translation>
</message>
@@ -1319,7 +1319,7 @@ to
<context>
<name>QDirModel</name>
<message>
- <location filename="../src/gui/itemviews/qdirmodel.cpp" line="+423"/>
+ <location filename="../src/gui/itemviews/qdirmodel.cpp" line="+453"/>
<source>Name</source>
<translation>åå‰</translation>
</message>
@@ -1349,7 +1349,7 @@ to
<context>
<name>QDockWidget</name>
<message>
- <location filename="../src/plugins/accessible/widgets/qaccessiblewidgets.cpp" line="+1209"/>
+ <location filename="../src/plugins/accessible/widgets/qaccessiblewidgets.cpp" line="+1239"/>
<source>Close</source>
<translation type="unfinished">é–‰ã˜ã‚‹</translation>
</message>
@@ -1380,7 +1380,7 @@ to
<context>
<name>QErrorMessage</name>
<message>
- <location filename="../src/gui/dialogs/qerrormessage.cpp" line="+162"/>
+ <location filename="../src/gui/dialogs/qerrormessage.cpp" line="+192"/>
<source>Debug Message:</source>
<translation>デãƒãƒƒã‚°ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸:</translation>
</message>
@@ -1408,13 +1408,18 @@ to
<context>
<name>QFile</name>
<message>
- <location filename="../src/corelib/io/qfile.cpp" line="+678"/>
- <location line="+130"/>
+ <location filename="../src/corelib/io/qfile.cpp" line="+708"/>
+ <location line="+141"/>
<source>Destination file exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+12"/>
+ <location line="-108"/>
+ <source>Cannot remove source file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+120"/>
<source>Cannot open %1 for input</source>
<translation type="unfinished"></translation>
</message>
@@ -1437,44 +1442,44 @@ to
<context>
<name>QFileDialog</name>
<message>
- <location filename="../src/gui/dialogs/qfiledialog.cpp" line="+484"/>
- <location line="+423"/>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="+515"/>
+ <location line="+444"/>
<source>All Files (*)</source>
<translation>ã™ã¹ã¦ã®ãƒ•ã‚¡ã‚¤ãƒ«(*)</translation>
</message>
<message>
- <location line="+218"/>
+ <location line="+222"/>
<source>Directories</source>
<translation>ディレクトリ</translation>
</message>
<message>
- <location line="-619"/>
- <location line="+623"/>
+ <location line="-644"/>
+ <location line="+648"/>
<source>Directory:</source>
<translation>ディレクトリ:</translation>
</message>
<message>
- <location line="-621"/>
- <location line="+627"/>
+ <location line="-646"/>
+ <location line="+652"/>
<source>File &amp;name:</source>
<translation>ファイルå:</translation>
</message>
<message>
<location line="-13"/>
<location line="+50"/>
- <location line="+1440"/>
+ <location line="+1471"/>
<location line="+75"/>
<source>&amp;Open</source>
<translation>オープン(&amp;O)</translation>
</message>
<message>
- <location line="-1565"/>
+ <location line="-1596"/>
<location line="+50"/>
<source>&amp;Save</source>
<translation>ä¿å­˜(&amp;S)</translation>
</message>
<message>
- <location line="-705"/>
+ <location line="-730"/>
<source>Open</source>
<translation>オープン</translation>
</message>
@@ -1491,7 +1496,7 @@ Please verify the correct file name was given</source>
æ­£ã—ã„ファイルåãŒå…¥åŠ›ã•ã‚ŒãŸã‹ã©ã†ã‹ç¢ºèªã—ã¦ãã ã•ã„</translation>
</message>
<message>
- <location line="+1469"/>
+ <location line="+1515"/>
<source>%1 already exists.
Do you want to replace it?</source>
<translation>%1ã¯ã™ã§ã«å­˜åœ¨ã—ã¾ã™ã€‚
@@ -1513,7 +1518,7 @@ Please verify the correct file name was given.</source>
</message>
<message>
<location filename="../src/gui/dialogs/qfiledialog.cpp" line="-54"/>
- <location line="+851"/>
+ <location line="+862"/>
<source>%1
Directory not found.
Please verify the correct directory name was given.</source>
@@ -1526,7 +1531,7 @@ Please verify the correct directory name was given.</source>
<translation type="obsolete">ソート</translation>
</message>
<message>
- <location line="-2255"/>
+ <location line="-2312"/>
<source>&amp;Rename</source>
<translation>åå‰ã®å¤‰æ›´(&amp;R)</translation>
</message>
@@ -1603,7 +1608,7 @@ Please verify the correct directory name was given.</source>
<translation>ファイルã®ç¨®é¡ž:</translation>
</message>
<message>
- <location filename="../src/gui/itemviews/qfileiconprovider.cpp" line="+381"/>
+ <location filename="../src/gui/itemviews/qfileiconprovider.cpp" line="+411"/>
<source>Drive</source>
<translation>ドライブ</translation>
</message>
@@ -1619,7 +1624,7 @@ Please verify the correct directory name was given.</source>
<translation>ä¸æ˜Ž</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfiledialog_win.cpp" line="+130"/>
+ <location filename="../src/gui/dialogs/qfiledialog_win.cpp" line="+160"/>
<source>All Files (*.*)</source>
<translation type="unfinished">ã™ã¹ã¦ã®ãƒ•ã‚¡ã‚¤ãƒ«(*.*)</translation>
</message>
@@ -1637,7 +1642,7 @@ Please verify the correct directory name was given.</source>
<translation type="obsolete">ディレクトリをé¸æŠž</translation>
</message>
<message>
- <location line="+2067"/>
+ <location line="+2123"/>
<source>&apos;%1&apos; is write protected.
Do you want to delete it anyway?</source>
<translation>&apos;%1&apos; ã¯æ›¸ãè¾¼ã¿ãŒç¦æ­¢ã•ã‚Œã¦ã„ã¾ã™ã€‚
@@ -1654,7 +1659,7 @@ Do you want to delete it anyway?</source>
<translation>ディレクトリを削除ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚</translation>
</message>
<message>
- <location line="-2091"/>
+ <location line="-2147"/>
<source>Find Directory</source>
<translation type="unfinished">ディレクトリã®æ¤œç´¢</translation>
</message>
@@ -1669,18 +1674,18 @@ Do you want to delete it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+631"/>
+ <location line="+656"/>
<location line="+38"/>
<source>&amp;Choose</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+1238"/>
+ <location line="+1269"/>
<source>New Folder</source>
<translation type="unfinished">æ–°ã—ã„フォルダ</translation>
</message>
<message>
- <location line="+554"/>
+ <location line="+555"/>
<source>Recent Places</source>
<translation type="unfinished"></translation>
</message>
@@ -1691,7 +1696,7 @@ Do you want to delete it anyway?</source>
<translation type="unfinished">進む</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qsidebar.cpp" line="+388"/>
+ <location filename="../src/gui/dialogs/qsidebar.cpp" line="+418"/>
<source>Remove</source>
<translation type="unfinished"></translation>
</message>
@@ -1699,7 +1704,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QFileSystemModel</name>
<message>
- <location filename="../src/gui/dialogs/qfilesystemmodel.cpp" line="+855"/>
+ <location filename="../src/gui/dialogs/qfilesystemmodel.cpp" line="+892"/>
<source>Name</source>
<translation>åå‰</translation>
</message>
@@ -1761,7 +1766,7 @@ Do you want to delete it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfilesystemmodel_p.h" line="+204"/>
+ <location filename="../src/gui/dialogs/qfilesystemmodel_p.h" line="+234"/>
<source>My Computer</source>
<translation type="unfinished">マイ コンピュータ</translation>
</message>
@@ -1774,7 +1779,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QFontDatabase</name>
<message>
- <location filename="../src/gui/text/qfontdatabase.cpp" line="+60"/>
+ <location filename="../src/gui/text/qfontdatabase.cpp" line="+90"/>
<location line="+1176"/>
<source>Normal</source>
<translation type="unfinished"></translation>
@@ -1991,7 +1996,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QFontDialog</name>
<message>
- <location filename="../src/gui/dialogs/qfontdialog.cpp" line="+742"/>
+ <location filename="../src/gui/dialogs/qfontdialog.cpp" line="+772"/>
<source>&amp;Font</source>
<translation>フォント(&amp;F)</translation>
</message>
@@ -2040,8 +2045,8 @@ Do you want to delete it anyway?</source>
<context>
<name>QFtp</name>
<message>
- <location filename="../src/network/access/qftp.cpp" line="+796"/>
- <location filename="../src/qt3support/network/q3ftp.cpp" line="+653"/>
+ <location filename="../src/network/access/qftp.cpp" line="+826"/>
+ <location filename="../src/qt3support/network/q3ftp.cpp" line="+683"/>
<source>Not connected</source>
<translation>未接続ã§ã™</translation>
</message>
@@ -2186,7 +2191,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QHostInfo</name>
<message>
- <location filename="../src/network/kernel/qhostinfo_p.h" line="+153"/>
+ <location filename="../src/network/kernel/qhostinfo_p.h" line="+183"/>
<source>Unknown error</source>
<translation>ä¸æ˜Žãªã‚¨ãƒ©ãƒ¼</translation>
</message>
@@ -2194,11 +2199,11 @@ Do you want to delete it anyway?</source>
<context>
<name>QHostInfoAgent</name>
<message>
- <location filename="../src/network/kernel/qhostinfo_unix.cpp" line="+148"/>
+ <location filename="../src/network/kernel/qhostinfo_unix.cpp" line="+178"/>
<location line="+9"/>
<location line="+64"/>
<location line="+31"/>
- <location filename="../src/network/kernel/qhostinfo_win.cpp" line="+150"/>
+ <location filename="../src/network/kernel/qhostinfo_win.cpp" line="+180"/>
<location line="+9"/>
<location line="+40"/>
<location line="+27"/>
@@ -2224,26 +2229,26 @@ Do you want to delete it anyway?</source>
<context>
<name>QHttp</name>
<message>
- <location filename="../src/network/access/qhttp.cpp" line="+335"/>
+ <location filename="../src/network/access/qhttp.cpp" line="+365"/>
<source>HTTPS connection requested but SSL support not compiled in</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+1209"/>
- <location line="+816"/>
- <location filename="../src/qt3support/network/q3http.cpp" line="+1130"/>
+ <location line="+820"/>
+ <location filename="../src/qt3support/network/q3http.cpp" line="+1160"/>
<location line="+567"/>
<source>Unknown error</source>
<translation>ä¸æ˜Žãªã‚¨ãƒ©ãƒ¼</translation>
</message>
<message>
- <location line="-564"/>
+ <location line="-568"/>
<location filename="../src/qt3support/network/q3http.cpp" line="-370"/>
<source>Request aborted</source>
<translation>è¦æ±‚ãŒä¸­æ­¢ã•ã‚Œã¾ã—ãŸ</translation>
</message>
<message>
- <location line="+575"/>
+ <location line="+579"/>
<location filename="../src/qt3support/network/q3http.cpp" line="+381"/>
<source>No server set to connect to</source>
<translation>接続ãŒè¨­å®šã•ã‚Œã¦ã„るサーãƒãŒã‚ã‚Šã¾ã›ã‚“</translation>
@@ -2261,18 +2266,23 @@ Do you want to delete it anyway?</source>
<translation>サーãƒã®æŽ¥ç¶šãŒäºˆæœŸã›ãšé–‰ã˜ã‚‰ã‚Œã¾ã—ãŸ</translation>
</message>
<message>
- <location line="+357"/>
+ <location line="+179"/>
+ <source>Unknown authentication method</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+183"/>
<source>Error writing response to device</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/network/access/qhttpnetworkconnection.cpp" line="+1712"/>
+ <location filename="../src/network/access/qhttpnetworkconnection.cpp" line="+876"/>
<location filename="../src/qt3support/network/q3http.cpp" line="+38"/>
<source>Connection refused</source>
<translation>接続ãŒæ‹’å¦ã•ã‚Œã¾ã—ãŸ</translation>
</message>
<message>
- <location filename="../src/network/access/qhttp.cpp" line="-299"/>
+ <location filename="../src/network/access/qhttp.cpp" line="-304"/>
<location filename="../src/network/access/qhttpnetworkconnection.cpp" line="-4"/>
<location filename="../src/qt3support/network/q3http.cpp" line="+3"/>
<source>Host %1 not found</source>
@@ -2293,7 +2303,7 @@ Do you want to delete it anyway?</source>
<translation>無効ãªHTTP応答ヘッダã§ã™</translation>
</message>
<message>
- <location line="+120"/>
+ <location line="+125"/>
<location line="+48"/>
<location filename="../src/qt3support/network/q3http.cpp" line="+40"/>
<location line="+47"/>
@@ -2342,7 +2352,7 @@ Do you want to delete it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-133"/>
+ <location line="-138"/>
<source>Connection refused (or timed out)</source>
<translation type="unfinished"></translation>
</message>
@@ -2423,7 +2433,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QIBaseDriver</name>
<message>
- <location filename="../src/sql/drivers/ibase/qsql_ibase.cpp" line="+1378"/>
+ <location filename="../src/sql/drivers/ibase/qsql_ibase.cpp" line="+1428"/>
<source>Error opening database</source>
<translation>データベースã®ã‚ªãƒ¼ãƒ—ンã§ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸ</translation>
</message>
@@ -2446,7 +2456,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QIBaseResult</name>
<message>
- <location line="-1077"/>
+ <location line="-1097"/>
<source>Unable to create BLOB</source>
<translation>ãƒã‚¤ãƒŠãƒªãƒ©ãƒ¼ã‚¸ã‚ªãƒ–ジェクトを作æˆã§ãã¾ã›ã‚“</translation>
</message>
@@ -2466,7 +2476,7 @@ Do you want to delete it anyway?</source>
<translation>ãƒã‚¤ãƒŠãƒªãƒ©ãƒ¼ã‚¸ã‚ªãƒ–ジェクトを読ã¿è¾¼ã‚ã¾ã›ã‚“</translation>
</message>
<message>
- <location line="+124"/>
+ <location line="+125"/>
<location line="+189"/>
<source>Could not find array</source>
<translation>é…列ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸ</translation>
@@ -2536,7 +2546,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QIODevice</name>
<message>
- <location filename="../src/corelib/global/qglobal.cpp" line="+1830"/>
+ <location filename="../src/corelib/global/qglobal.cpp" line="+1869"/>
<source>Permission denied</source>
<translation>許å¯ã•ã‚Œã¦ã„ã¾ã›ã‚“</translation>
</message>
@@ -2556,7 +2566,7 @@ Do you want to delete it anyway?</source>
<translation>デãƒã‚¤ã‚¹ã®æ®‹ã‚Šå®¹é‡ãŒã‚ã‚Šã¾ã›ã‚“</translation>
</message>
<message>
- <location filename="../src/corelib/io/qiodevice.cpp" line="+1506"/>
+ <location filename="../src/corelib/io/qiodevice.cpp" line="+1536"/>
<source>Unknown error</source>
<translation>ä¸æ˜Žãªã‚¨ãƒ©ãƒ¼</translation>
</message>
@@ -2564,7 +2574,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QInputContext</name>
<message>
- <location filename="../src/gui/inputmethod/qinputcontextfactory.cpp" line="+212"/>
+ <location filename="../src/gui/inputmethod/qinputcontextfactory.cpp" line="+242"/>
<source>XIM</source>
<translation>XIM</translation>
</message>
@@ -2587,7 +2597,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QInputDialog</name>
<message>
- <location filename="../src/gui/dialogs/qinputdialog.cpp" line="+193"/>
+ <location filename="../src/gui/dialogs/qinputdialog.cpp" line="+223"/>
<source>Enter a value:</source>
<translation type="unfinished"></translation>
</message>
@@ -2595,7 +2605,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QLibrary</name>
<message>
- <location filename="../src/corelib/plugin/qlibrary.cpp" line="+348"/>
+ <location filename="../src/corelib/plugin/qlibrary.cpp" line="+378"/>
<source>Could not mmap &apos;%1&apos;: %2</source>
<translation>&apos;%1&apos; をメモリã«ãƒžãƒƒãƒ”ングã§ãã¾ã›ã‚“ã§ã—ãŸ: %2</translation>
</message>
@@ -2638,7 +2648,7 @@ Do you want to delete it anyway?</source>
</message>
<message>
<location line="-377"/>
- <location filename="../src/corelib/plugin/qpluginloader.cpp" line="+250"/>
+ <location filename="../src/corelib/plugin/qpluginloader.cpp" line="+280"/>
<source>The shared library was not found.</source>
<translation type="unfinished"></translation>
</message>
@@ -2653,8 +2663,8 @@ Do you want to delete it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/corelib/plugin/qlibrary_unix.cpp" line="+179"/>
- <location filename="../src/corelib/plugin/qlibrary_win.cpp" line="+69"/>
+ <location filename="../src/corelib/plugin/qlibrary_unix.cpp" line="+209"/>
+ <location filename="../src/corelib/plugin/qlibrary_win.cpp" line="+99"/>
<source>Cannot load library %1: %2</source>
<translation type="unfinished"></translation>
</message>
@@ -2674,7 +2684,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QLineEdit</name>
<message>
- <location filename="../src/gui/widgets/qlineedit.cpp" line="+2649"/>
+ <location filename="../src/gui/widgets/qlineedit.cpp" line="+2680"/>
<source>&amp;Undo</source>
<translation>å…ƒã«æˆ»ã™(&amp;U)</translation>
</message>
@@ -2712,8 +2722,8 @@ Do you want to delete it anyway?</source>
<context>
<name>QLocalServer</name>
<message>
- <location filename="../src/network/socket/qlocalserver.cpp" line="+196"/>
- <location filename="../src/network/socket/qlocalserver_unix.cpp" line="+201"/>
+ <location filename="../src/network/socket/qlocalserver.cpp" line="+226"/>
+ <location filename="../src/network/socket/qlocalserver_unix.cpp" line="+231"/>
<source>%1: Name error</source>
<translation type="unfinished"></translation>
</message>
@@ -2729,7 +2739,7 @@ Do you want to delete it anyway?</source>
</message>
<message>
<location line="+5"/>
- <location filename="../src/network/socket/qlocalserver_win.cpp" line="+127"/>
+ <location filename="../src/network/socket/qlocalserver_win.cpp" line="+158"/>
<source>%1: Unknown error %2</source>
<translation type="unfinished"></translation>
</message>
@@ -2737,8 +2747,8 @@ Do you want to delete it anyway?</source>
<context>
<name>QLocalSocket</name>
<message>
- <location filename="../src/network/socket/qlocalsocket_tcp.cpp" line="+102"/>
- <location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+104"/>
+ <location filename="../src/network/socket/qlocalsocket_tcp.cpp" line="+132"/>
+ <location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+134"/>
<source>%1: Connection refused</source>
<translation type="unfinished"></translation>
</message>
@@ -2751,7 +2761,7 @@ Do you want to delete it anyway?</source>
<message>
<location line="+3"/>
<location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+3"/>
- <location filename="../src/network/socket/qlocalsocket_win.cpp" line="+50"/>
+ <location filename="../src/network/socket/qlocalsocket_win.cpp" line="+80"/>
<location line="+43"/>
<source>%1: Invalid name</source>
<translation type="unfinished"></translation>
@@ -2808,7 +2818,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QMYSQLDriver</name>
<message>
- <location filename="../src/sql/drivers/mysql/qsql_mysql.cpp" line="+1200"/>
+ <location filename="../src/sql/drivers/mysql/qsql_mysql.cpp" line="+1231"/>
<source>Unable to open database &apos;</source>
<translation>データベースをオープンã§ãã¾ã›ã‚“ &apos;</translation>
</message>
@@ -2818,7 +2828,7 @@ Do you want to delete it anyway?</source>
<translation>接続ã§ãã¾ã›ã‚“</translation>
</message>
<message>
- <location line="+123"/>
+ <location line="+127"/>
<source>Unable to begin transaction</source>
<translation>トランザクションを開始ã§ãã¾ã›ã‚“</translation>
</message>
@@ -2836,7 +2846,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QMYSQLResult</name>
<message>
- <location line="-917"/>
+ <location line="-922"/>
<source>Unable to fetch data</source>
<translation>データをフェッãƒã§ãã¾ã›ã‚“</translation>
</message>
@@ -2851,7 +2861,7 @@ Do you want to delete it anyway?</source>
<translation>実行çµæžœã‚’記録ã§ãã¾ã›ã‚“</translation>
</message>
<message>
- <location line="+189"/>
+ <location line="+190"/>
<location line="+8"/>
<source>Unable to prepare statement</source>
<translation>プリペアステートメントを使ãˆã¾ã›ã‚“</translation>
@@ -2896,7 +2906,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QMdiArea</name>
<message>
- <location filename="../src/gui/widgets/qmdiarea.cpp" line="+260"/>
+ <location filename="../src/gui/widgets/qmdiarea.cpp" line="+290"/>
<source>(Untitled)</source>
<translation type="unfinished"></translation>
</message>
@@ -2904,7 +2914,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QMdiSubWindow</name>
<message>
- <location filename="../src/gui/widgets/qmdisubwindow.cpp" line="+250"/>
+ <location filename="../src/gui/widgets/qmdisubwindow.cpp" line="+280"/>
<source>%1 - [%2]</source>
<translation type="unfinished">%1 - [%2]</translation>
</message>
@@ -2997,7 +3007,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QMenu</name>
<message>
- <location filename="../src/plugins/accessible/widgets/qaccessiblemenu.cpp" line="+127"/>
+ <location filename="../src/plugins/accessible/widgets/qaccessiblemenu.cpp" line="+157"/>
<location line="+225"/>
<source>Close</source>
<translation>é–‰ã˜ã‚‹</translation>
@@ -3026,7 +3036,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QMessageBox</name>
<message>
- <location filename="../src/gui/dialogs/qmessagebox.cpp" line="-1105"/>
+ <location filename="../src/gui/dialogs/qmessagebox.cpp" line="-1111"/>
<source>Help</source>
<translation>ヘルプ</translation>
</message>
@@ -3046,28 +3056,21 @@ Do you want to delete it anyway?</source>
&lt;p&gt;Qtã¯Trolltechã®å•†å“ã§ã™ã€‚詳細ã¯&lt;tt&gt;http://qtsoftware.com/qt/&lt;/tt&gt;ã‚’å‚ç…§ã—ã¦ãã ã•ã„。&lt;/p&gt;</translation>
</message>
<message>
- <location line="+475"/>
- <source>&lt;h3&gt;About Qt&lt;/h3&gt;%1&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 a Nokia product. See &lt;a href=&quot;http://qtsoftware.com/qt/&quot;&gt;qtsoftware.com/qt/&lt;/a&gt; for more information.&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location line="+13"/>
<source>&lt;p&gt;This program uses Qt version %1.&lt;/p&gt;</source>
- <translation>&lt;p&gt;ã“ã®ãƒ—ログラム㯠Qt ãƒãƒ¼ã‚¸ãƒ§ãƒ³ %1 を使用ã—ã¦ã„ã¾ã™ã€‚&lt;/p&gt;</translation>
+ <translation type="obsolete">&lt;p&gt;ã“ã®ãƒ—ログラム㯠Qt ãƒãƒ¼ã‚¸ãƒ§ãƒ³ %1 を使用ã—ã¦ã„ã¾ã™ã€‚&lt;/p&gt;</translation>
</message>
<message>
- <location line="+2"/>
<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://qtsoftware.com/company/model/&quot;&gt;qtsoftware.com/company/model/&lt;/a&gt; for an overview of Qt licensing.&lt;/p&gt;</source>
- <translation>&lt;p&gt;ã“ã®ãƒ—ログラム㯠Qt オープンソース版ãƒãƒ¼ã‚¸ãƒ§ãƒ³ %1 を使用ã—ã¦ã„ã¾ã™ã€‚&lt;/p&gt;
+ <translation type="obsolete">&lt;p&gt;ã“ã®ãƒ—ログラム㯠Qt オープンソース版ãƒãƒ¼ã‚¸ãƒ§ãƒ³ %1 を使用ã—ã¦ã„ã¾ã™ã€‚&lt;/p&gt;
&lt;p&gt;Qt オープンソース版ã¯ã‚ªãƒ¼ãƒ—ンソースã®ã‚¢ãƒ—リケーションã®é–‹ç™ºç”¨ã§ã™ã€‚ソースコードを公開ã—ãªã„商用アプリケーションを開発ã™ã‚‹ã«ã¯å•†ç”¨ç‰ˆã®ãƒ©ã‚¤ã‚»ãƒ³ã‚¹ãŒå¿…è¦ã§ã™ã€‚&lt;/p&gt;&lt;p&gt;Qtã®ãƒ©ã‚¤ã‚»ãƒ³ã‚¹ã«ã¤ã„ã¦ã¯&lt;tt&gt;http://qtsoftware.com/company/model.html&lt;/tt&gt;ã‚’å‚ç…§ã—ã¦ãã ã•ã„。&lt;/p&gt;</translation>
</message>
<message>
- <location line="+13"/>
+ <location line="+509"/>
<source>About Qt</source>
<translation>Qt ã«ã¤ã„ã¦</translation>
</message>
<message>
- <location line="-1599"/>
+ <location line="-1605"/>
<source>Show Details...</source>
<translation>詳細を表示...</translation>
</message>
@@ -3076,11 +3079,16 @@ Do you want to delete it anyway?</source>
<source>Hide Details...</source>
<translation>詳細を隠ã™...</translation>
</message>
+ <message>
+ <location line="+1570"/>
+ <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://www.qtsoftware.com/products/licensing&quot;&gt;www.qtsoftware.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://www.qtsoftware.com/qt/&quot;&gt;www.qtsoftware.com/qt&lt;/a&gt; for more information.&lt;/p&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>QMultiInputContext</name>
<message>
- <location filename="../src/plugins/inputmethods/imsw-multi/qmultiinputcontext.cpp" line="+58"/>
+ <location filename="../src/plugins/inputmethods/imsw-multi/qmultiinputcontext.cpp" line="+88"/>
<source>Select IM</source>
<translation>入力メソッドをé¸æŠž</translation>
</message>
@@ -3088,7 +3096,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QMultiInputContextPlugin</name>
<message>
- <location filename="../src/plugins/inputmethods/imsw-multi/qmultiinputcontextplugin.cpp" line="+65"/>
+ <location filename="../src/plugins/inputmethods/imsw-multi/qmultiinputcontextplugin.cpp" line="+95"/>
<source>Multiple input method switcher</source>
<translation>複数ã®å…¥åŠ›ãƒ¡ã‚½ãƒƒãƒ‰ã‚’切り替ãˆ</translation>
</message>
@@ -3101,7 +3109,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QNativeSocketEngine</name>
<message>
- <location filename="../src/network/socket/qnativesocketengine.cpp" line="+167"/>
+ <location filename="../src/network/socket/qnativesocketengine.cpp" line="+197"/>
<source>Unable to initialize non-blocking socket</source>
<translation>ノンブロッキングソケットをåˆæœŸåŒ–ã§ãã¾ã›ã‚“</translation>
</message>
@@ -3234,7 +3242,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QNetworkAccessCacheBackend</name>
<message>
- <location filename="../src/network/access/qnetworkaccesscachebackend.cpp" line="+35"/>
+ <location filename="../src/network/access/qnetworkaccesscachebackend.cpp" line="+65"/>
<source>Error opening %1</source>
<translation type="unfinished"></translation>
</message>
@@ -3242,7 +3250,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QNetworkAccessFileBackend</name>
<message>
- <location filename="../src/network/access/qnetworkaccessfilebackend.cpp" line="+69"/>
+ <location filename="../src/network/access/qnetworkaccessfilebackend.cpp" line="+99"/>
<source>Request for opening non-local file %1</source>
<translation type="unfinished"></translation>
</message>
@@ -3270,7 +3278,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QNetworkAccessFtpBackend</name>
<message>
- <location filename="../src/network/access/qnetworkaccessftpbackend.cpp" line="+135"/>
+ <location filename="../src/network/access/qnetworkaccessftpbackend.cpp" line="+165"/>
<source>No suitable proxy found</source>
<translation type="unfinished"></translation>
</message>
@@ -3280,7 +3288,7 @@ Do you want to delete it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+131"/>
+ <location line="+130"/>
<source>Logging in to %1 failed: authentication required</source>
<translation type="unfinished"></translation>
</message>
@@ -3298,7 +3306,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QNetworkAccessHttpBackend</name>
<message>
- <location filename="../src/network/access/qnetworkaccesshttpbackend.cpp" line="+565"/>
+ <location filename="../src/network/access/qnetworkaccesshttpbackend.cpp" line="+597"/>
<source>No suitable proxy found</source>
<translation type="unfinished"></translation>
</message>
@@ -3311,7 +3319,7 @@ Do you want to delete it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/network/access/qnetworkreplyimpl.cpp" line="+37"/>
+ <location filename="../src/network/access/qnetworkreplyimpl.cpp" line="+68"/>
<source>Protocol &quot;%1&quot; is unknown</source>
<translation type="unfinished"></translation>
</message>
@@ -3319,7 +3327,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QNetworkReplyImpl</name>
<message>
- <location line="+422"/>
+ <location line="+432"/>
<location line="+22"/>
<source>Operation canceled</source>
<translation type="unfinished"></translation>
@@ -3328,7 +3336,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QOCIDriver</name>
<message>
- <location filename="../src/sql/drivers/oci/qsql_oci.cpp" line="+1883"/>
+ <location filename="../src/sql/drivers/oci/qsql_oci.cpp" line="+1925"/>
<source>Unable to initialize</source>
<comment>QOCIDriver</comment>
<translation>åˆæœŸåŒ–ã§ãã¾ã›ã‚“</translation>
@@ -3357,7 +3365,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QOCIResult</name>
<message>
- <location line="-976"/>
+ <location line="-963"/>
<location line="+161"/>
<location line="+15"/>
<source>Unable to bind column for batch execute</source>
@@ -3384,18 +3392,16 @@ Do you want to delete it anyway?</source>
<translation>プリペアステートメントを使ãˆã¾ã›ã‚“</translation>
</message>
<message>
- <location line="+29"/>
- <location line="+37"/>
+ <location line="+36"/>
<source>Unable to bind value</source>
<translation>値をãƒã‚¤ãƒ³ãƒ‰ã§ãã¾ã›ã‚“</translation>
</message>
<message>
- <location line="-20"/>
<source>Unable to execute select statement</source>
- <translation>SELECT ステートメントを実行ã§ãã¾ã›ã‚“</translation>
+ <translation type="obsolete">SELECT ステートメントを実行ã§ãã¾ã›ã‚“</translation>
</message>
<message>
- <location line="+32"/>
+ <location line="+19"/>
<source>Unable to execute statement</source>
<translation>ステートメントを実行ã§ãã¾ã›ã‚“</translation>
</message>
@@ -3403,7 +3409,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QODBCDriver</name>
<message>
- <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="+1657"/>
+ <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="+1785"/>
<source>Unable to connect</source>
<translation>接続ã§ãã¾ã›ã‚“</translation>
</message>
@@ -3413,7 +3419,7 @@ Do you want to delete it anyway?</source>
<translation>接続ã§ãã¾ã›ã‚“ - ドライãƒã¯å…¨ã¦ã®å¿…è¦ãªæ©Ÿèƒ½ã‚’サãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“</translation>
</message>
<message>
- <location line="+234"/>
+ <location line="+242"/>
<source>Unable to disable autocommit</source>
<translation>オートコミットを無効ã«ã§ãã¾ã›ã‚“</translation>
</message>
@@ -3436,13 +3442,13 @@ Do you want to delete it anyway?</source>
<context>
<name>QODBCResult</name>
<message>
- <location line="-1187"/>
- <location line="+625"/>
+ <location line="-1201"/>
+ <location line="+626"/>
<source>Unable to execute statement</source>
<translation>ステートメントを実行ã§ãã¾ã›ã‚“</translation>
</message>
<message>
- <location line="-554"/>
+ <location line="-555"/>
<source>Unable to fetch next</source>
<translation>次ã®ãƒ¬ã‚³ãƒ¼ãƒ‰ã‚’フェッãƒã§ãã¾ã›ã‚“</translation>
</message>
@@ -3452,12 +3458,12 @@ Do you want to delete it anyway?</source>
<translation>プリペアステートメントを使ãˆã¾ã›ã‚“</translation>
</message>
<message>
- <location line="+267"/>
+ <location line="+268"/>
<source>Unable to bind variable</source>
<translation>変数をãƒã‚¤ãƒ³ãƒ‰ã§ãã¾ã›ã‚“</translation>
</message>
<message>
- <location line="-634"/>
+ <location line="-635"/>
<location line="+349"/>
<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_STATUS&apos; を設定ã§ãã¾ã›ã‚“。ODBC ドライãƒã®æ§‹æˆã‚’ãƒã‚§ãƒƒã‚¯ã—ã¦ãã ã•ã„。</translation>
@@ -3465,12 +3471,12 @@ Do you want to delete it anyway?</source>
<message>
<location filename="../src/sql/drivers/db2/qsql_db2.cpp" line="+194"/>
<location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="-189"/>
- <location line="+577"/>
+ <location line="+578"/>
<source>Unable to fetch last</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="-671"/>
+ <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="-672"/>
<source>Unable to fetch</source>
<translation type="unfinished"></translation>
</message>
@@ -3496,12 +3502,12 @@ Do you want to delete it anyway?</source>
<translation type="obsolete">True</translation>
</message>
<message>
- <location filename="../src/gui/util/qdesktopservices_mac.cpp" line="+134"/>
+ <location filename="../src/gui/util/qdesktopservices_mac.cpp" line="+165"/>
<source>Home</source>
<translation>ホーム</translation>
</message>
<message>
- <location filename="../src/network/access/qnetworkaccessdatabackend.cpp" line="+44"/>
+ <location filename="../src/network/access/qnetworkaccessdatabackend.cpp" line="+74"/>
<source>Operation not supported on %1</source>
<translation type="unfinished"></translation>
</message>
@@ -3511,7 +3517,7 @@ Do you want to delete it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/network/access/qnetworkaccessdebugpipebackend.cpp" line="+145"/>
+ <location filename="../src/network/access/qnetworkaccessdebugpipebackend.cpp" line="+175"/>
<source>Write error writing to %1: %2</source>
<translation type="unfinished"></translation>
</message>
@@ -3536,7 +3542,7 @@ Do you want to delete it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/network/kernel/qhostinfo.cpp" line="+147"/>
+ <location filename="../src/network/kernel/qhostinfo.cpp" line="+177"/>
<location line="+57"/>
<source>No host name given</source>
<translation type="unfinished"></translation>
@@ -3545,7 +3551,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QPPDOptionsModel</name>
<message>
- <location filename="../src/gui/dialogs/qprintdialog_unix.cpp" line="+1165"/>
+ <location filename="../src/gui/dialogs/qprintdialog_unix.cpp" line="+1195"/>
<source>Name</source>
<translation type="unfinished">åå‰</translation>
</message>
@@ -3558,7 +3564,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QPSQLDriver</name>
<message>
- <location filename="../src/sql/drivers/psql/qsql_psql.cpp" line="+732"/>
+ <location filename="../src/sql/drivers/psql/qsql_psql.cpp" line="+763"/>
<source>Unable to connect</source>
<translation>接続ã§ãã¾ã›ã‚“</translation>
</message>
@@ -3578,7 +3584,7 @@ Do you want to delete it anyway?</source>
<translation>トランザクションをロールãƒãƒƒã‚¯ã§ãã¾ã›ã‚“ã§ã—ãŸ</translation>
</message>
<message>
- <location line="+336"/>
+ <location line="+358"/>
<source>Unable to subscribe</source>
<translation type="unfinished"></translation>
</message>
@@ -3591,12 +3597,12 @@ Do you want to delete it anyway?</source>
<context>
<name>QPSQLResult</name>
<message>
- <location line="-1035"/>
+ <location line="-1058"/>
<source>Unable to create query</source>
<translation>クエリーを作æˆã§ãã¾ã›ã‚“</translation>
</message>
<message>
- <location line="+373"/>
+ <location line="+374"/>
<source>Unable to prepare statement</source>
<translation type="unfinished">プリペアステートメントを使ãˆã¾ã›ã‚“</translation>
</message>
@@ -3604,7 +3610,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QPageSetupWidget</name>
<message>
- <location filename="../src/gui/dialogs/qpagesetupdialog_unix.cpp" line="+274"/>
+ <location filename="../src/gui/dialogs/qpagesetupdialog_unix.cpp" line="+304"/>
<source>Centimeters (cm)</source>
<translation type="unfinished"></translation>
</message>
@@ -3732,7 +3738,7 @@ Do you want to delete it anyway?</source>
<translation type="obsolete">給紙装置:</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qprintdialog_win.cpp" line="+238"/>
+ <location filename="../src/gui/dialogs/qprintdialog_win.cpp" line="+268"/>
<source>OK</source>
<translation>OK</translation>
</message>
@@ -3749,7 +3755,7 @@ Do you want to delete it anyway?</source>
<translation type="obsolete">横</translation>
</message>
<message>
- <location filename="../src/gui/painting/qprinterinfo_unix.cpp" line="+68"/>
+ <location filename="../src/gui/painting/qprinterinfo_unix.cpp" line="+98"/>
<source>locally connected</source>
<translation>ローカルã«æŽ¥ç¶šã—ã¦ã„ã¾ã™</translation>
</message>
@@ -3778,7 +3784,7 @@ Do you want to delete it anyway?</source>
<translation type="obsolete">å‚ç…§...</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qprintdialog_qws.cpp" line="+345"/>
+ <location filename="../src/gui/dialogs/qprintdialog_qws.cpp" line="+375"/>
<source>Print all</source>
<translation>ã™ã¹ã¦å°åˆ·</translation>
</message>
@@ -3998,7 +4004,7 @@ Do you want to delete it anyway?</source>
<translation type="obsolete">両é¢å°åˆ·</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qabstractprintdialog.cpp" line="+80"/>
+ <location filename="../src/gui/dialogs/qabstractprintdialog.cpp" line="+110"/>
<location line="+13"/>
<location filename="../src/gui/dialogs/qprintdialog_win.cpp" line="-2"/>
<source>Print</source>
@@ -4248,13 +4254,13 @@ Please choose a different file name.</source>
<context>
<name>QPrintPreviewDialog</name>
<message>
- <location filename="../src/gui/dialogs/qabstractpagesetupdialog.cpp" line="+38"/>
+ <location filename="../src/gui/dialogs/qabstractpagesetupdialog.cpp" line="+68"/>
<location line="+12"/>
<source>Page Setup</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qprintpreviewdialog.cpp" line="+222"/>
+ <location filename="../src/gui/dialogs/qprintpreviewdialog.cpp" line="+252"/>
<source>%1%</source>
<translation type="unfinished"></translation>
</message>
@@ -4536,8 +4542,8 @@ Please choose a different file name.</source>
<context>
<name>QProcess</name>
<message>
- <location filename="../src/corelib/io/qprocess_unix.cpp" line="+445"/>
- <location filename="../src/corelib/io/qprocess_win.cpp" line="+117"/>
+ <location filename="../src/corelib/io/qprocess_unix.cpp" line="+475"/>
+ <location filename="../src/corelib/io/qprocess_win.cpp" line="+147"/>
<source>Could not open input redirection for reading</source>
<translation type="unfinished"></translation>
</message>
@@ -4566,7 +4572,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/corelib/io/qprocess.cpp" line="+503"/>
+ <location filename="../src/corelib/io/qprocess.cpp" line="+533"/>
<location line="+52"/>
<location filename="../src/corelib/io/qprocess_win.cpp" line="-211"/>
<location line="+50"/>
@@ -4586,6 +4592,11 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
+ <location line="+912"/>
+ <source>No program defined</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<location filename="../src/corelib/io/qprocess_win.cpp" line="-341"/>
<source>Process failed to start</source>
<translation type="unfinished"></translation>
@@ -4594,7 +4605,7 @@ Please choose a different file name.</source>
<context>
<name>QProgressDialog</name>
<message>
- <location filename="../src/gui/dialogs/qprogressdialog.cpp" line="+152"/>
+ <location filename="../src/gui/dialogs/qprogressdialog.cpp" line="+182"/>
<source>Cancel</source>
<translation>キャンセル</translation>
</message>
@@ -4618,7 +4629,7 @@ Please choose a different file name.</source>
<context>
<name>QRegExp</name>
<message>
- <location filename="../src/corelib/tools/qregexp.cpp" line="+34"/>
+ <location filename="../src/corelib/tools/qregexp.cpp" line="+64"/>
<source>no error occurred</source>
<translation>エラーã¯ç™ºç”Ÿã—ã¾ã›ã‚“ã§ã—ãŸ</translation>
</message>
@@ -4666,7 +4677,7 @@ Please choose a different file name.</source>
<context>
<name>QSQLite2Driver</name>
<message>
- <location filename="../src/sql/drivers/sqlite2/qsql_sqlite2.cpp" line="+353"/>
+ <location filename="../src/sql/drivers/sqlite2/qsql_sqlite2.cpp" line="+396"/>
<source>Error to open database</source>
<translation>データベースã®ã‚ªãƒ¼ãƒ—ンã§ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸ</translation>
</message>
@@ -4689,12 +4700,12 @@ Please choose a different file name.</source>
<context>
<name>QSQLite2Result</name>
<message>
- <location line="-310"/>
+ <location line="-323"/>
<source>Unable to fetch results</source>
<translation>実行çµæžœã‚’フェッãƒã§ãã¾ã›ã‚“</translation>
</message>
<message>
- <location line="+139"/>
+ <location line="+147"/>
<source>Unable to execute statement</source>
<translation>ステートメントを実行ã§ãã¾ã›ã‚“</translation>
</message>
@@ -4702,7 +4713,7 @@ Please choose a different file name.</source>
<context>
<name>QSQLiteDriver</name>
<message>
- <location filename="../src/sql/drivers/sqlite/qsql_sqlite.cpp" line="+498"/>
+ <location filename="../src/sql/drivers/sqlite/qsql_sqlite.cpp" line="+528"/>
<source>Error opening database</source>
<translation>データベースã®ã‚ªãƒ¼ãƒ—ンã§ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸ</translation>
</message>
@@ -4769,12 +4780,12 @@ Please choose a different file name.</source>
<context>
<name>QScrollBar</name>
<message>
- <location filename="../src/gui/widgets/qscrollbar.cpp" line="+419"/>
+ <location filename="../src/gui/widgets/qscrollbar.cpp" line="+448"/>
<source>Scroll here</source>
<translation>ã“ã“ã«ã‚¹ã‚¯ãƒ­ãƒ¼ãƒ«</translation>
</message>
<message>
- <location line="+3"/>
+ <location line="+2"/>
<source>Left edge</source>
<translation>左端</translation>
</message>
@@ -4784,7 +4795,7 @@ Please choose a different file name.</source>
<translation>上端</translation>
</message>
<message>
- <location line="+2"/>
+ <location line="+1"/>
<source>Right edge</source>
<translation>å³ç«¯</translation>
</message>
@@ -4794,7 +4805,7 @@ Please choose a different file name.</source>
<translation>下端</translation>
</message>
<message>
- <location line="+3"/>
+ <location line="+2"/>
<source>Page left</source>
<translation>1ページ左ã¸ã‚¹ã‚¯ãƒ­ãƒ¼ãƒ«</translation>
</message>
@@ -4805,7 +4816,7 @@ Please choose a different file name.</source>
<translation>1ページ戻る</translation>
</message>
<message>
- <location line="+2"/>
+ <location line="+1"/>
<source>Page right</source>
<translation>1ページå³ã¸ã‚¹ã‚¯ãƒ­ãƒ¼ãƒ«</translation>
</message>
@@ -4816,7 +4827,7 @@ Please choose a different file name.</source>
<translation>1ページ進む</translation>
</message>
<message>
- <location line="+3"/>
+ <location line="+2"/>
<source>Scroll left</source>
<translation>å·¦ã¸ã‚¹ã‚¯ãƒ­ãƒ¼ãƒ«</translation>
</message>
@@ -4826,7 +4837,7 @@ Please choose a different file name.</source>
<translation>上ã¸ã‚¹ã‚¯ãƒ­ãƒ¼ãƒ«</translation>
</message>
<message>
- <location line="+2"/>
+ <location line="+1"/>
<source>Scroll right</source>
<translation>å³ã¸ã‚¹ã‚¯ãƒ­ãƒ¼ãƒ«</translation>
</message>
@@ -4854,7 +4865,7 @@ Please choose a different file name.</source>
<context>
<name>QSharedMemory</name>
<message>
- <location filename="../src/corelib/kernel/qsharedmemory.cpp" line="+177"/>
+ <location filename="../src/corelib/kernel/qsharedmemory.cpp" line="+207"/>
<source>%1: unable to set key on lock</source>
<translation type="unfinished"></translation>
</message>
@@ -4865,7 +4876,7 @@ Please choose a different file name.</source>
</message>
<message>
<location line="+168"/>
- <location filename="../src/corelib/kernel/qsharedmemory_p.h" line="+118"/>
+ <location filename="../src/corelib/kernel/qsharedmemory_p.h" line="+148"/>
<source>%1: unable to lock</source>
<translation type="unfinished"></translation>
</message>
@@ -4875,8 +4886,8 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/corelib/kernel/qsharedmemory_unix.cpp" line="+48"/>
- <location filename="../src/corelib/kernel/qsharedmemory_win.cpp" line="+57"/>
+ <location filename="../src/corelib/kernel/qsharedmemory_unix.cpp" line="+78"/>
+ <location filename="../src/corelib/kernel/qsharedmemory_win.cpp" line="+87"/>
<source>%1: permission denied</source>
<translation type="unfinished"></translation>
</message>
@@ -4954,7 +4965,7 @@ Please choose a different file name.</source>
<context>
<name>QShortcut</name>
<message>
- <location filename="../src/gui/kernel/qkeysequence.cpp" line="+343"/>
+ <location filename="../src/gui/kernel/qkeysequence.cpp" line="+373"/>
<source>Space</source>
<translation>Space</translation>
</message>
@@ -5540,7 +5551,7 @@ Please choose a different file name.</source>
<context>
<name>QSql</name>
<message>
- <location filename="../src/qt3support/sql/q3sqlmanager_p.cpp" line="+860"/>
+ <location filename="../src/qt3support/sql/q3sqlmanager_p.cpp" line="+890"/>
<source>Delete</source>
<translation>削除</translation>
</message>
@@ -5597,7 +5608,7 @@ Please choose a different file name.</source>
<context>
<name>QSslSocket</name>
<message>
- <location filename="../src/network/ssl/qsslsocket_openssl.cpp" line="+230"/>
+ <location filename="../src/network/ssl/qsslsocket_openssl.cpp" line="+260"/>
<source>Error creating SSL context (%1)</source>
<translation type="unfinished"></translation>
</message>
@@ -5656,7 +5667,7 @@ Please choose a different file name.</source>
<name>QSystemSemaphore</name>
<message>
<location filename="../src/corelib/kernel/qsystemsemaphore_unix.cpp" line="-41"/>
- <location filename="../src/corelib/kernel/qsystemsemaphore_win.cpp" line="+36"/>
+ <location filename="../src/corelib/kernel/qsystemsemaphore_win.cpp" line="+66"/>
<source>%1: out of resources</source>
<translation type="unfinished"></translation>
</message>
@@ -5686,7 +5697,7 @@ Please choose a different file name.</source>
<context>
<name>QTDSDriver</name>
<message>
- <location filename="../src/sql/drivers/tds/qsql_tds.cpp" line="+552"/>
+ <location filename="../src/sql/drivers/tds/qsql_tds.cpp" line="+584"/>
<source>Unable to open connection</source>
<translation>接続をオープンã§ãã¾ã›ã‚“</translation>
</message>
@@ -5716,7 +5727,7 @@ Please choose a different file name.</source>
<translation type="obsolete">ソケットæ“作ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã›ã‚“</translation>
</message>
<message>
- <location filename="../src/network/socket/qtcpserver.cpp" line="+252"/>
+ <location filename="../src/network/socket/qtcpserver.cpp" line="+282"/>
<source>Operation on socket is not supported</source>
<translation type="unfinished"></translation>
</message>
@@ -5724,7 +5735,7 @@ Please choose a different file name.</source>
<context>
<name>QTextControl</name>
<message>
- <location filename="../src/gui/text/qtextcontrol.cpp" line="+1942"/>
+ <location filename="../src/gui/text/qtextcontrol.cpp" line="+1973"/>
<source>&amp;Undo</source>
<translation>å…ƒã«æˆ»ã™(&amp;U)</translation>
</message>
@@ -5782,7 +5793,7 @@ Please choose a different file name.</source>
<context>
<name>QUdpSocket</name>
<message>
- <location filename="../src/network/socket/qudpsocket.cpp" line="+139"/>
+ <location filename="../src/network/socket/qudpsocket.cpp" line="+169"/>
<source>This platform does not support IPv6</source>
<translation>ã“ã®ãƒ—ラットフォーム㯠IPv6 をサãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“</translation>
</message>
@@ -5790,7 +5801,7 @@ Please choose a different file name.</source>
<context>
<name>QUndoGroup</name>
<message>
- <location filename="../src/gui/util/qundogroup.cpp" line="+356"/>
+ <location filename="../src/gui/util/qundogroup.cpp" line="+386"/>
<source>Undo</source>
<translation>å…ƒã«æˆ»ã™</translation>
</message>
@@ -5803,7 +5814,7 @@ Please choose a different file name.</source>
<context>
<name>QUndoModel</name>
<message>
- <location filename="../src/gui/util/qundoview.cpp" line="+71"/>
+ <location filename="../src/gui/util/qundoview.cpp" line="+101"/>
<source>&lt;empty&gt;</source>
<translation>&lt;空&gt;</translation>
</message>
@@ -5811,7 +5822,7 @@ Please choose a different file name.</source>
<context>
<name>QUndoStack</name>
<message>
- <location filename="../src/gui/util/qundostack.cpp" line="+804"/>
+ <location filename="../src/gui/util/qundostack.cpp" line="+834"/>
<source>Undo</source>
<translation>å…ƒã«æˆ»ã™</translation>
</message>
@@ -5882,7 +5893,7 @@ Please choose a different file name.</source>
<context>
<name>QWebFrame</name>
<message>
- <location filename="../src/3rdparty/webkit/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp" line="+686"/>
+ <location filename="../src/3rdparty/webkit/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp" line="+692"/>
<source>Request cancelled</source>
<translation type="unfinished"></translation>
</message>
@@ -6292,7 +6303,7 @@ Please choose a different file name.</source>
</translation>
</message>
<message>
- <location filename="../src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp" line="+1342"/>
+ <location filename="../src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp" line="+1322"/>
<source>JavaScript Alert - %1</source>
<translation type="unfinished"></translation>
</message>
@@ -6368,6 +6379,11 @@ Please choose a different file name.</source>
</message>
<message>
<location line="+3"/>
+ <source>Select all</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
<source>Select to the next character</source>
<translation type="unfinished"></translation>
</message>
@@ -6436,11 +6452,21 @@ Please choose a different file name.</source>
<source>Delete to the end of the word</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <location line="+33"/>
+ <source>Insert a new paragraph</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Insert a new line</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>QWhatsThisAction</name>
<message>
- <location filename="../src/gui/kernel/qwhatsthis.cpp" line="+492"/>
+ <location filename="../src/gui/kernel/qwhatsthis.cpp" line="+522"/>
<source>What&apos;s This?</source>
<translation>ヒント</translation>
</message>
@@ -6448,7 +6474,7 @@ Please choose a different file name.</source>
<context>
<name>QWidget</name>
<message>
- <location filename="../src/gui/kernel/qwidget.cpp" line="+5290"/>
+ <location filename="../src/gui/kernel/qwidget.cpp" line="+5326"/>
<source>*</source>
<translation>*</translation>
</message>
@@ -6456,7 +6482,7 @@ Please choose a different file name.</source>
<context>
<name>QWizard</name>
<message>
- <location filename="../src/gui/dialogs/qwizard.cpp" line="+605"/>
+ <location filename="../src/gui/dialogs/qwizard.cpp" line="+637"/>
<source>Go Back</source>
<translation type="unfinished"></translation>
</message>
@@ -6514,7 +6540,7 @@ Please choose a different file name.</source>
<context>
<name>QWorkspace</name>
<message>
- <location filename="../src/gui/widgets/qworkspace.cpp" line="+1064"/>
+ <location filename="../src/gui/widgets/qworkspace.cpp" line="+1094"/>
<source>&amp;Restore</source>
<translation>å…ƒã«æˆ»ã™(&amp;R)</translation>
</message>
@@ -6584,7 +6610,7 @@ Please choose a different file name.</source>
<context>
<name>QXml</name>
<message>
- <location filename="../src/xml/sax/qxml.cpp" line="+28"/>
+ <location filename="../src/xml/sax/qxml.cpp" line="+58"/>
<source>no error occurred</source>
<translation>エラーã¯ç™ºç”Ÿã—ã¾ã›ã‚“ã§ã—ãŸ</translation>
</message>
@@ -6702,8 +6728,8 @@ Please choose a different file name.</source>
<context>
<name>QXmlStream</name>
<message>
- <location filename="../src/corelib/xml/qxmlstream.cpp" line="+562"/>
- <location filename="../src/corelib/xml/qxmlstream_p.h" line="+1739"/>
+ <location filename="../src/corelib/xml/qxmlstream.cpp" line="+592"/>
+ <location filename="../src/corelib/xml/qxmlstream_p.h" line="+1769"/>
<source>Extra content at end of document.</source>
<translation type="unfinished"></translation>
</message>
@@ -6887,7 +6913,7 @@ Please choose a different file name.</source>
<context>
<name>QtXmlPatterns</name>
<message>
- <location filename="../src/xmlpatterns/acceltree/qacceltreebuilder.cpp" line="+175"/>
+ <location filename="../src/xmlpatterns/acceltree/qacceltreebuilder.cpp" line="+205"/>
<source>An %1-attribute with value %2 has already been declared.</source>
<translation type="unfinished"></translation>
</message>
@@ -6897,12 +6923,12 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/api/qiodevicedelegate.cpp" line="+54"/>
+ <location filename="../src/xmlpatterns/api/qiodevicedelegate.cpp" line="+84"/>
<source>Network timeout.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/api/qxmlserializer.cpp" line="+290"/>
+ <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 type="unfinished"></translation>
</message>
@@ -6912,7 +6938,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qabstractdatetime.cpp" line="+50"/>
+ <location filename="../src/xmlpatterns/data/qabstractdatetime.cpp" line="+80"/>
<source>Year %1 is invalid because it begins with %2.</source>
<translation type="unfinished"></translation>
</message>
@@ -6952,7 +6978,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qabstractduration.cpp" line="+69"/>
+ <location filename="../src/xmlpatterns/data/qabstractduration.cpp" line="+99"/>
<location line="+15"/>
<source>At least one component must be present.</source>
<translation type="unfinished"></translation>
@@ -6963,7 +6989,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qabstractfloatmathematician.cpp" line="+34"/>
+ <location filename="../src/xmlpatterns/data/qabstractfloatmathematician.cpp" line="+64"/>
<source>No operand in an integer division, %1, can be %2.</source>
<translation type="unfinished"></translation>
</message>
@@ -6978,17 +7004,17 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qanyuri_p.h" line="+102"/>
+ <location filename="../src/xmlpatterns/data/qanyuri_p.h" line="+132"/>
<source>%1 is not a valid value of type %2.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qatomiccasters_p.h" line="+193"/>
+ <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 type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qatomicmathematicians.cpp" line="+35"/>
+ <location filename="../src/xmlpatterns/data/qatomicmathematicians.cpp" line="+65"/>
<source>Integer division (%1) by zero (%2) is undefined.</source>
<translation type="unfinished"></translation>
</message>
@@ -7019,17 +7045,17 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qatomicvalue.cpp" line="+49"/>
+ <location filename="../src/xmlpatterns/data/qatomicvalue.cpp" line="+79"/>
<source>A value of type %1 cannot have an Effective Boolean Value.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qboolean.cpp" line="+48"/>
+ <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 type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qderivedinteger_p.h" line="+372"/>
+ <location filename="../src/xmlpatterns/data/qderivedinteger_p.h" line="+402"/>
<source>Value %1 of type %2 exceeds maximum (%3).</source>
<translation type="unfinished"></translation>
</message>
@@ -7039,7 +7065,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qhexbinary.cpp" line="+61"/>
+ <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 type="unfinished"></translation>
</message>
@@ -7049,7 +7075,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qarithmeticexpression.cpp" line="+177"/>
+ <location filename="../src/xmlpatterns/expr/qarithmeticexpression.cpp" line="+207"/>
<source>Operator %1 cannot be used on type %2.</source>
<translation type="unfinished"></translation>
</message>
@@ -7059,7 +7085,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qattributenamevalidator.cpp" line="+36"/>
+ <location filename="../src/xmlpatterns/expr/qattributenamevalidator.cpp" line="+66"/>
<source>The namespace URI in the name for a computed attribute cannot be %1.</source>
<translation type="unfinished"></translation>
</message>
@@ -7069,7 +7095,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qcastas.cpp" line="+58"/>
+ <location filename="../src/xmlpatterns/expr/qcastas.cpp" line="+88"/>
<source>Type error in cast, expected %1, received %2.</source>
<translation type="unfinished"></translation>
</message>
@@ -7079,7 +7105,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qcastingplatform.cpp" line="+104"/>
+ <location filename="../src/xmlpatterns/expr/qcastingplatform.cpp" line="+134"/>
<source>No casting is possible with %1 as the target type.</source>
<translation type="unfinished"></translation>
</message>
@@ -7104,7 +7130,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qcommentconstructor.cpp" line="+37"/>
+ <location filename="../src/xmlpatterns/expr/qcommentconstructor.cpp" line="+67"/>
<source>A comment cannot contain %1</source>
<translation type="unfinished"></translation>
</message>
@@ -7114,7 +7140,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qcomparisonplatform.cpp" line="+137"/>
+ <location filename="../src/xmlpatterns/expr/qcomparisonplatform.cpp" line="+167"/>
<source>No comparisons can be done involving the type %1.</source>
<translation type="unfinished"></translation>
</message>
@@ -7124,12 +7150,12 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qdocumentcontentvalidator.cpp" line="+56"/>
+ <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 type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qexpressionfactory.cpp" line="+139"/>
+ <location filename="../src/xmlpatterns/expr/qexpressionfactory.cpp" line="+169"/>
<source>A library module cannot be evaluated directly. It must be imported from a main module.</source>
<translation type="unfinished"></translation>
</message>
@@ -7139,7 +7165,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qgenericpredicate.cpp" line="+76"/>
+ <location filename="../src/xmlpatterns/expr/qgenericpredicate.cpp" line="+106"/>
<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 type="unfinished"></translation>
</message>
@@ -7149,7 +7175,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qncnameconstructor_p.h" line="+83"/>
+ <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 type="unfinished"></translation>
</message>
@@ -7159,33 +7185,33 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qpath.cpp" line="+79"/>
+ <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 type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qprocessinginstructionconstructor.cpp" line="+54"/>
+ <location filename="../src/xmlpatterns/expr/qprocessinginstructionconstructor.cpp" line="+84"/>
<source>The data of a processing instruction cannot contain the string %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qqnameconstructor.cpp" line="+52"/>
+ <location filename="../src/xmlpatterns/expr/qqnameconstructor.cpp" line="+82"/>
<source>No namespace binding exists for the prefix %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qqnameconstructor_p.h" line="+126"/>
+ <location filename="../src/xmlpatterns/expr/qqnameconstructor_p.h" line="+156"/>
<source>No namespace binding exists for the prefix %1 in %2</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+12"/>
- <location filename="../src/xmlpatterns/functions/qqnamefns.cpp" line="+39"/>
+ <location filename="../src/xmlpatterns/functions/qqnamefns.cpp" line="+69"/>
<source>%1 is an invalid %2</source>
<translation type="unfinished"></translation>
</message>
<message numerus="yes">
- <location filename="../src/xmlpatterns/functions/qabstractfunctionfactory.cpp" line="+47"/>
+ <location filename="../src/xmlpatterns/functions/qabstractfunctionfactory.cpp" line="+77"/>
<source>%1 takes at most %n argument(s). %2 is therefore invalid.</source>
<translation type="unfinished">
<numerusform></numerusform>
@@ -7199,7 +7225,7 @@ Please choose a different file name.</source>
</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qaggregatefns.cpp" line="+90"/>
+ <location filename="../src/xmlpatterns/functions/qaggregatefns.cpp" line="+120"/>
<source>The first argument to %1 cannot be of type %2. It must be a numeric type, xs:yearMonthDuration or xs:dayTimeDuration.</source>
<translation type="unfinished"></translation>
</message>
@@ -7214,27 +7240,27 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qassemblestringfns.cpp" line="+58"/>
+ <location filename="../src/xmlpatterns/functions/qassemblestringfns.cpp" line="+88"/>
<source>%1 is not a valid XML 1.0 character.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qcomparingaggregator.cpp" line="+167"/>
+ <location filename="../src/xmlpatterns/functions/qcomparingaggregator.cpp" line="+197"/>
<source>The first argument to %1 cannot be of type %2.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qdatetimefn.cpp" line="+56"/>
+ <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 type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qerrorfn.cpp" line="+31"/>
+ <location filename="../src/xmlpatterns/functions/qerrorfn.cpp" line="+61"/>
<source>%1 was called.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qpatternmatchingfns.cpp" line="+64"/>
+ <location filename="../src/xmlpatterns/functions/qpatternmatchingfns.cpp" line="+94"/>
<source>%1 must be followed by %2 or %3, not at the end of the replacement string.</source>
<translation type="unfinished"></translation>
</message>
@@ -7249,7 +7275,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qpatternplatform.cpp" line="+62"/>
+ <location filename="../src/xmlpatterns/functions/qpatternplatform.cpp" line="+92"/>
<source>%1 matches newline characters</source>
<translation type="unfinished"></translation>
</message>
@@ -7284,17 +7310,17 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qsequencefns.cpp" line="+317"/>
+ <location filename="../src/xmlpatterns/functions/qsequencefns.cpp" line="+347"/>
<source>It will not be possible to retrieve %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qcontextnodechecker.cpp" line="+24"/>
+ <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 type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qsequencegeneratingfns.cpp" line="+249"/>
+ <location filename="../src/xmlpatterns/functions/qsequencegeneratingfns.cpp" line="+279"/>
<source>The default collection is undefined</source>
<translation type="unfinished"></translation>
</message>
@@ -7304,12 +7330,12 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qstringvaluefns.cpp" line="+222"/>
+ <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 type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qtimezonefns.cpp" line="+57"/>
+ <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 type="unfinished"></translation>
</message>
@@ -7319,17 +7345,17 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/janitors/qcardinalityverifier.cpp" line="+28"/>
+ <location filename="../src/xmlpatterns/janitors/qcardinalityverifier.cpp" line="+58"/>
<source>Required cardinality is %1; got cardinality %2.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/janitors/qitemverifier.cpp" line="+37"/>
+ <location filename="../src/xmlpatterns/janitors/qitemverifier.cpp" line="+67"/>
<source>The item %1 did not match the required type %2.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="+319"/>
+ <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="+379"/>
<location line="+7253"/>
<source>%1 is an unknown schema type.</source>
<translation type="unfinished"></translation>
@@ -7350,7 +7376,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/parser/qparsercontext.cpp" line="+63"/>
+ <location filename="../src/xmlpatterns/parser/qparsercontext.cpp" line="+93"/>
<source>The variable %1 is unused</source>
<translation type="unfinished"></translation>
</message>
@@ -7632,7 +7658,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/type/qcardinality.cpp" line="+25"/>
+ <location filename="../src/xmlpatterns/type/qcardinality.cpp" line="+55"/>
<source>empty</source>
<translation type="unfinished"></translation>
</message>
@@ -7657,7 +7683,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/type/qtypechecker.cpp" line="+33"/>
+ <location filename="../src/xmlpatterns/type/qtypechecker.cpp" line="+63"/>
<source>Required type is %1, but %2 was found.</source>
<translation type="unfinished"></translation>
</message>
@@ -7672,7 +7698,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/utils/qoutputvalidator.cpp" line="+56"/>
+ <location filename="../src/xmlpatterns/utils/qoutputvalidator.cpp" line="+86"/>
<source>It&apos;s not possible to add attributes after any other kind of node.</source>
<translation type="unfinished"></translation>
</message>
@@ -7682,12 +7708,12 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/utils/qxpathhelper_p.h" line="+90"/>
+ <location filename="../src/xmlpatterns/utils/qxpathhelper_p.h" line="+120"/>
<source>Only the Unicode Codepoint Collation is supported(%1). %2 is unsupported.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/acceltree/qacceltreeresourceloader.cpp" line="+284"/>
+ <location filename="../src/xmlpatterns/acceltree/qacceltreeresourceloader.cpp" line="+314"/>
<source>%1 is an unsupported encoding.</source>
<translation type="unfinished"></translation>
</message>
@@ -7702,13 +7728,13 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qapplytemplate.cpp" line="+89"/>
+ <location filename="../src/xmlpatterns/expr/qapplytemplate.cpp" line="+119"/>
<source>Ambiguous rule match.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qcomputednamespaceconstructor.cpp" line="+39"/>
- <source>In a namespace constructor, the value for a namespace value cannot be an empty string.</source>
+ <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 type="unfinished"></translation>
</message>
<message>
@@ -7727,12 +7753,12 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qevaluationcache.cpp" line="+87"/>
+ <location filename="../src/xmlpatterns/expr/qevaluationcache.cpp" line="+117"/>
<source>Circularity detected</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qtemplate.cpp" line="+115"/>
+ <location filename="../src/xmlpatterns/expr/qtemplate.cpp" line="+145"/>
<source>The parameter %1 is required, but no corresponding %2 is supplied.</source>
<translation type="unfinished"></translation>
</message>
@@ -7742,12 +7768,12 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qunparsedtextfn.cpp" line="+35"/>
+ <location filename="../src/xmlpatterns/functions/qunparsedtextfn.cpp" line="+65"/>
<source>The URI cannot have a fragment</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/parser/qxslttokenizer.cpp" line="+489"/>
+ <location filename="../src/xmlpatterns/parser/qxslttokenizer.cpp" line="+519"/>
<source>Element %1 is not allowed at this location.</source>
<translation type="unfinished"></translation>
</message>
@@ -7802,7 +7828,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/parser/qmaintainingreader.cpp" line="+153"/>
+ <location filename="../src/xmlpatterns/parser/qmaintainingreader.cpp" line="+183"/>
<source>Attribute %1 cannot appear on the element %2. Only the standard attributes can appear.</source>
<translation type="unfinished"></translation>
</message>
@@ -7877,7 +7903,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+432"/>
+ <location line="+434"/>
<source>Element %1 cannot have a sequence constructor.</source>
<translation type="unfinished"></translation>
</message>
diff --git a/translations/qt_pl.ts b/translations/qt_pl.ts
index b7b9cb7..7f9ec8d 100644
--- a/translations/qt_pl.ts
+++ b/translations/qt_pl.ts
@@ -4,7 +4,7 @@
<context>
<name>AudioOutput</name>
<message>
- <location filename="../src/3rdparty/phonon/phonon/audiooutput.cpp" line="+374"/>
+ <location filename="../src/3rdparty/phonon/phonon/audiooutput.cpp" line="+375"/>
<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;Urządzenie dźwiękowe &lt;b&gt;%1&lt;/b&gt; nie działa.&lt;br/&gt;Przywracanie do &lt;b&gt;%2&lt;/b&gt;.&lt;/html&gt;</translation>
</message>
@@ -22,7 +22,7 @@
<context>
<name>CloseButton</name>
<message>
- <location filename="../src/gui/widgets/qtabbar.cpp" line="+2217"/>
+ <location filename="../src/gui/widgets/qtabbar.cpp" line="+2251"/>
<source>Close Tab</source>
<translation>Zamknij kartÄ™</translation>
</message>
@@ -80,7 +80,7 @@ Obsługa dźwięku i wideo została wyłączona</translation>
<context>
<name>Phonon::Gstreamer::MediaObject</name>
<message>
- <location filename="../src/3rdparty/phonon/gstreamer/mediaobject.cpp" line="+88"/>
+ <location filename="../src/3rdparty/phonon/gstreamer/mediaobject.cpp" line="+90"/>
<source>Cannot start playback.
Check your Gstreamer installation and make sure you
@@ -96,24 +96,24 @@ zainstalowałeś libgstreamer-plugins-base.</translation>
<translation type="unfinished">Brak wymaganego kodeka. Aby odtworzyć zawartość musisz zainstalować poniższego kodeka: %0</translation>
</message>
<message>
- <location line="+653"/>
- <location line="+9"/>
+ <location line="+676"/>
+ <location line="+8"/>
<location line="+15"/>
- <location line="+7"/>
- <location line="+5"/>
- <location line="+20"/>
- <location line="+317"/>
+ <location line="+9"/>
+ <location line="+6"/>
+ <location line="+19"/>
+ <location line="+335"/>
<location line="+24"/>
<source>Could not open media source.</source>
<translation>Nie można otworzyć źródła mediów.</translation>
</message>
<message>
- <location line="-381"/>
+ <location line="-403"/>
<source>Invalid source type.</source>
<translation>Niepoprawny typ źródła.</translation>
</message>
<message>
- <location line="+355"/>
+ <location line="+377"/>
<source>Could not locate media source.</source>
<translation>Nie można znaleźć źródła mediów.</translation>
</message>
@@ -147,7 +147,7 @@ zainstalowałeś libgstreamer-plugins-base.</translation>
<context>
<name>Q3Accel</name>
<message>
- <location filename="../src/qt3support/other/q3accel.cpp" line="+451"/>
+ <location filename="../src/qt3support/other/q3accel.cpp" line="+481"/>
<source>%1, %2 not defined</source>
<translation>%1, %2 nie określone</translation>
</message>
@@ -160,7 +160,7 @@ zainstalowałeś libgstreamer-plugins-base.</translation>
<context>
<name>Q3DataTable</name>
<message>
- <location filename="../src/qt3support/sql/q3datatable.cpp" line="+761"/>
+ <location filename="../src/qt3support/sql/q3datatable.cpp" line="+793"/>
<source>Delete</source>
<translation>Skasuj</translation>
</message>
@@ -188,7 +188,7 @@ zainstalowałeś libgstreamer-plugins-base.</translation>
<context>
<name>Q3FileDialog</name>
<message>
- <location filename="../src/qt3support/dialogs/q3filedialog.cpp" line="+4500"/>
+ <location filename="../src/qt3support/dialogs/q3filedialog.cpp" line="+4530"/>
<source>%1
File not found.
Check path and filename.</source>
@@ -205,7 +205,7 @@ Sprawdź ścieżkę i nazwę pliku.</translation>
<location line="-1928"/>
<location line="+49"/>
<location line="+2153"/>
- <location filename="../src/qt3support/dialogs/q3filedialog_mac.cpp" line="+80"/>
+ <location filename="../src/qt3support/dialogs/q3filedialog_mac.cpp" line="+110"/>
<source>All Files (*)</source>
<translation>Wszystkie pliki (*)</translation>
</message>
@@ -360,7 +360,7 @@ Sprawdź ścieżkę i nazwę pliku.</translation>
<message>
<location line="-1112"/>
<location line="+2100"/>
- <location filename="../src/qt3support/dialogs/q3filedialog_win.cpp" line="+307"/>
+ <location filename="../src/qt3support/dialogs/q3filedialog_win.cpp" line="+337"/>
<source>Open</source>
<translation>Otwórz</translation>
</message>
@@ -521,7 +521,7 @@ Sprawdź ścieżkę i nazwę pliku.</translation>
<context>
<name>Q3LocalFs</name>
<message>
- <location filename="../src/qt3support/network/q3localfs.cpp" line="+155"/>
+ <location filename="../src/qt3support/network/q3localfs.cpp" line="+185"/>
<source>Could not create directory
%1</source>
<translation>Nie można utworzyć katalogu
@@ -571,7 +571,7 @@ na
<context>
<name>Q3MainWindow</name>
<message>
- <location filename="../src/qt3support/widgets/q3mainwindow.cpp" line="+2023"/>
+ <location filename="../src/qt3support/widgets/q3mainwindow.cpp" line="+2053"/>
<source>Customize...</source>
<translation>Ustawienia użytkownika...</translation>
</message>
@@ -584,7 +584,7 @@ na
<context>
<name>Q3NetworkProtocol</name>
<message>
- <location filename="../src/qt3support/network/q3networkprotocol.cpp" line="+824"/>
+ <location filename="../src/qt3support/network/q3networkprotocol.cpp" line="+854"/>
<source>Operation stopped by the user</source>
<translation>Operacja zatrzymana przez użytkownika</translation>
</message>
@@ -592,7 +592,7 @@ na
<context>
<name>Q3ProgressDialog</name>
<message>
- <location filename="../src/qt3support/dialogs/q3progressdialog.cpp" line="+194"/>
+ <location filename="../src/qt3support/dialogs/q3progressdialog.cpp" line="+224"/>
<location line="+61"/>
<source>Cancel</source>
<translation>Anuluj</translation>
@@ -601,7 +601,7 @@ na
<context>
<name>Q3TabDialog</name>
<message>
- <location filename="../src/qt3support/dialogs/q3tabdialog.cpp" line="+617"/>
+ <location filename="../src/qt3support/dialogs/q3tabdialog.cpp" line="+647"/>
<source>Apply</source>
<translation>Zatwierdź</translation>
</message>
@@ -630,7 +630,7 @@ na
<context>
<name>Q3TextEdit</name>
<message>
- <location filename="../src/qt3support/text/q3textedit.cpp" line="+5411"/>
+ <location filename="../src/qt3support/text/q3textedit.cpp" line="+5441"/>
<source>Clear</source>
<translation>Wyczyść</translation>
</message>
@@ -669,7 +669,7 @@ na
<context>
<name>Q3TitleBar</name>
<message>
- <location filename="../src/plugins/accessible/compat/q3complexwidgets.cpp" line="+226"/>
+ <location filename="../src/plugins/accessible/compat/q3complexwidgets.cpp" line="+256"/>
<source>Close</source>
<translation>Zamknij okno</translation>
</message>
@@ -737,7 +737,7 @@ na
<context>
<name>Q3ToolBar</name>
<message>
- <location filename="../src/qt3support/widgets/q3toolbar.cpp" line="+662"/>
+ <location filename="../src/qt3support/widgets/q3toolbar.cpp" line="+692"/>
<source>More...</source>
<translation>Więcej...</translation>
</message>
@@ -745,7 +745,7 @@ na
<context>
<name>Q3UrlOperator</name>
<message>
- <location filename="../src/qt3support/network/q3urloperator.cpp" line="+859"/>
+ <location filename="../src/qt3support/network/q3urloperator.cpp" line="+889"/>
<location line="+1"/>
<source>(unknown)</source>
<translation>(nieznany)</translation>
@@ -797,7 +797,7 @@ na
<context>
<name>Q3Wizard</name>
<message>
- <location filename="../src/qt3support/dialogs/q3wizard.cpp" line="+148"/>
+ <location filename="../src/qt3support/dialogs/q3wizard.cpp" line="+178"/>
<source>&lt; &amp;Back</source>
<translation>&lt; &amp;Wstecz</translation>
</message>
@@ -825,9 +825,9 @@ na
<context>
<name>QAbstractSocket</name>
<message>
- <location filename="../src/network/socket/qabstractsocket.cpp" line="+888"/>
- <location filename="../src/network/socket/qhttpsocketengine.cpp" line="+588"/>
- <location filename="../src/network/socket/qsocks5socketengine.cpp" line="+657"/>
+ <location filename="../src/network/socket/qabstractsocket.cpp" line="+918"/>
+ <location filename="../src/network/socket/qhttpsocketengine.cpp" line="+618"/>
+ <location filename="../src/network/socket/qsocks5socketengine.cpp" line="+687"/>
<source>Connection refused</source>
<translation>Połączenie odrzucone</translation>
</message>
@@ -870,7 +870,7 @@ na
<context>
<name>QAbstractSpinBox</name>
<message>
- <location filename="../src/gui/widgets/qabstractspinbox.cpp" line="+1171"/>
+ <location filename="../src/gui/widgets/qabstractspinbox.cpp" line="+1201"/>
<source>Step &amp;down</source>
<translation>Krok w &amp;dół</translation>
</message>
@@ -888,7 +888,7 @@ na
<context>
<name>QApplication</name>
<message>
- <location filename="../src/gui/accessible/qaccessibleobject.cpp" line="+346"/>
+ <location filename="../src/gui/accessible/qaccessibleobject.cpp" line="+376"/>
<source>Activate</source>
<translation>Uaktywnij</translation>
</message>
@@ -898,7 +898,7 @@ na
<translation>Uaktywnia główne okno programu</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qmessagebox.h" line="+322"/>
+ <location filename="../src/gui/dialogs/qmessagebox.h" line="+352"/>
<source>Executable &apos;%1&apos; requires Qt %2, found Qt %3.</source>
<translation>Program &apos;%1&apos; wymaga do uruchomienia Qt %2, znaleziono Qt %3.</translation>
</message>
@@ -908,7 +908,7 @@ na
<translation>Niekompatybilność biblioteki Qt</translation>
</message>
<message>
- <location filename="../src/gui/kernel/qapplication.cpp" line="+2212"/>
+ <location filename="../src/gui/kernel/qapplication.cpp" line="+2248"/>
<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>
@@ -940,7 +940,7 @@ na
<context>
<name>QCheckBox</name>
<message>
- <location filename="../src/plugins/accessible/widgets/simplewidgets.cpp" line="+87"/>
+ <location filename="../src/plugins/accessible/widgets/simplewidgets.cpp" line="+117"/>
<source>Check</source>
<translation>Zaznacz</translation>
</message>
@@ -958,7 +958,7 @@ na
<context>
<name>QColorDialog</name>
<message>
- <location filename="../src/gui/dialogs/qcolordialog.cpp" line="+1465"/>
+ <location filename="../src/gui/dialogs/qcolordialog.cpp" line="+1499"/>
<source>&amp;Add to Custom Colors</source>
<translation>&amp;Dodaj do własnych kolorów</translation>
</message>
@@ -1016,13 +1016,13 @@ na
<context>
<name>QComboBox</name>
<message>
- <location filename="../src/plugins/accessible/widgets/complexwidgets.cpp" line="+1741"/>
+ <location filename="../src/plugins/accessible/widgets/complexwidgets.cpp" line="+1771"/>
<location line="+65"/>
<source>Open</source>
<translation>Otwórz</translation>
</message>
<message>
- <location filename="../src/gui/itemviews/qitemeditorfactory.cpp" line="+514"/>
+ <location filename="../src/gui/itemviews/qitemeditorfactory.cpp" line="+544"/>
<source>False</source>
<translation>Fałsz</translation>
</message>
@@ -1065,7 +1065,7 @@ na
<translation type="obsolete">%1: nieznany błąd %2</translation>
</message>
<message>
- <location filename="../src/corelib/kernel/qsystemsemaphore_unix.cpp" line="+89"/>
+ <location filename="../src/corelib/kernel/qsystemsemaphore_unix.cpp" line="+119"/>
<source>%1: key is empty</source>
<comment>QSystemSemaphore</comment>
<translation>%1: klucz jest pusty</translation>
@@ -1086,12 +1086,12 @@ na
<context>
<name>QDB2Driver</name>
<message>
- <location filename="../src/sql/drivers/db2/qsql_db2.cpp" line="+1217"/>
+ <location filename="../src/sql/drivers/db2/qsql_db2.cpp" line="+1276"/>
<source>Unable to connect</source>
<translation>Nie można nawiązać połączenia</translation>
</message>
<message>
- <location line="+263"/>
+ <location line="+303"/>
<source>Unable to commit transaction</source>
<translation>Nie można dokonać transakcji</translation>
</message>
@@ -1109,8 +1109,8 @@ na
<context>
<name>QDB2Result</name>
<message>
- <location line="-986"/>
- <location line="+242"/>
+ <location line="-1043"/>
+ <location line="+243"/>
<source>Unable to execute statement</source>
<translation>Nie można wykonać polecenia</translation>
</message>
@@ -1125,7 +1125,7 @@ na
<translation>Nie można powiązać zmiennej</translation>
</message>
<message>
- <location line="+91"/>
+ <location line="+92"/>
<source>Unable to fetch record %1</source>
<translation>Nie można pobrać rekordu %1</translation>
</message>
@@ -1143,7 +1143,7 @@ na
<context>
<name>QDateTimeEdit</name>
<message>
- <location filename="../src/gui/widgets/qdatetimeedit.cpp" line="+2265"/>
+ <location filename="../src/gui/widgets/qdatetimeedit.cpp" line="+2295"/>
<source>am</source>
<translation>am</translation>
</message>
@@ -1166,7 +1166,7 @@ na
<context>
<name>QDial</name>
<message>
- <location filename="../src/plugins/accessible/widgets/rangecontrols.cpp" line="+921"/>
+ <location filename="../src/plugins/accessible/widgets/rangecontrols.cpp" line="+951"/>
<source>QDial</source>
<translation>QDial</translation>
</message>
@@ -1184,7 +1184,7 @@ na
<context>
<name>QDialog</name>
<message>
- <location filename="../src/gui/dialogs/qdialog.cpp" line="+567"/>
+ <location filename="../src/gui/dialogs/qdialog.cpp" line="+597"/>
<source>What&apos;s This?</source>
<translation>Co to jest?</translation>
</message>
@@ -1197,7 +1197,7 @@ na
<context>
<name>QDialogButtonBox</name>
<message>
- <location filename="../src/gui/widgets/qdialogbuttonbox.cpp" line="+578"/>
+ <location filename="../src/gui/widgets/qdialogbuttonbox.cpp" line="+608"/>
<source>Abort</source>
<translation>Przerwij</translation>
</message>
@@ -1267,7 +1267,7 @@ na
<translation>Ni&amp;e dla wszystkich</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qmessagebox.cpp" line="+1830"/>
+ <location filename="../src/gui/dialogs/qmessagebox.cpp" line="+1866"/>
<location line="+464"/>
<location filename="../src/gui/widgets/qdialogbuttonbox.cpp" line="-41"/>
<source>OK</source>
@@ -1322,7 +1322,7 @@ na
<context>
<name>QDirModel</name>
<message>
- <location filename="../src/gui/itemviews/qdirmodel.cpp" line="+435"/>
+ <location filename="../src/gui/itemviews/qdirmodel.cpp" line="+465"/>
<source>Date Modified</source>
<translation>Data modyfikacji</translation>
</message>
@@ -1352,7 +1352,7 @@ na
<context>
<name>QDockWidget</name>
<message>
- <location filename="../src/plugins/accessible/widgets/qaccessiblewidgets.cpp" line="+1209"/>
+ <location filename="../src/plugins/accessible/widgets/qaccessiblewidgets.cpp" line="+1239"/>
<source>Close</source>
<translation>Zamknij</translation>
</message>
@@ -1383,7 +1383,7 @@ na
<context>
<name>QErrorMessage</name>
<message>
- <location filename="../src/gui/dialogs/qerrormessage.cpp" line="+162"/>
+ <location filename="../src/gui/dialogs/qerrormessage.cpp" line="+192"/>
<source>Debug Message:</source>
<translation>Komunikat dla programisty:</translation>
</message>
@@ -1411,13 +1411,18 @@ na
<context>
<name>QFile</name>
<message>
- <location filename="../src/corelib/io/qfile.cpp" line="+678"/>
- <location line="+130"/>
+ <location filename="../src/corelib/io/qfile.cpp" line="+708"/>
+ <location line="+141"/>
<source>Destination file exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+12"/>
+ <location line="-108"/>
+ <source>Cannot remove source file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+120"/>
<source>Cannot open %1 for input</source>
<translation type="unfinished"></translation>
</message>
@@ -1440,22 +1445,22 @@ na
<context>
<name>QFileDialog</name>
<message>
- <location filename="../src/gui/dialogs/qfiledialog.cpp" line="+1936"/>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="+2013"/>
<source>%1 already exists.
Do you want to replace it?</source>
<translation>%1 już istnieje.
Czy chcesz zamienić?</translation>
</message>
<message>
- <location line="+600"/>
+ <location line="+610"/>
<source>&apos;%1&apos; is write protected.
Do you want to delete it anyway?</source>
<translation>&apos;%1&apos; jest zabezpieczony przed zapisem.
Czy na pewno chcesz go skasować?</translation>
</message>
<message>
- <location line="-634"/>
- <location line="+851"/>
+ <location line="-644"/>
+ <location line="+862"/>
<source>%1
Directory not found.
Please verify the correct directory name was given.</source>
@@ -1464,7 +1469,7 @@ Katalog nie znaleziony.
Sprawdź podaną nazwę katalogu.</translation>
</message>
<message>
- <location line="-797"/>
+ <location line="-808"/>
<source>%1
File not found.
Please verify the correct file name was given.</source>
@@ -1473,12 +1478,12 @@ Plik nie znaleziony.
ProszÄ™ o sprawdzenie podanej nazwy pliku.</translation>
</message>
<message>
- <location line="+585"/>
+ <location line="+595"/>
<source>Are sure you want to delete &apos;%1&apos;?</source>
<translation>Czy na pewno chcesz skasować &apos;%1&apos;?</translation>
</message>
<message>
- <location line="+421"/>
+ <location line="+422"/>
<source>Recent Places</source>
<translation type="unfinished"></translation>
</message>
@@ -1489,12 +1494,12 @@ ProszÄ™ o sprawdzenie podanej nazwy pliku.</translation>
<translation>Powrót</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-406"/>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-407"/>
<source>Could not delete directory.</source>
<translation>Nie można skasować katalogu.</translation>
</message>
<message>
- <location line="-2057"/>
+ <location line="-2113"/>
<source>&amp;Delete</source>
<translation>&amp;Skasuj</translation>
</message>
@@ -1505,18 +1510,18 @@ ProszÄ™ o sprawdzenie podanej nazwy pliku.</translation>
<translation>Szczegóły</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfiledialog.cpp" line="+626"/>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="+651"/>
<source>Directories</source>
<translation>Katalogi</translation>
</message>
<message>
- <location line="-619"/>
- <location line="+623"/>
+ <location line="-644"/>
+ <location line="+648"/>
<source>Directory:</source>
<translation>Katalog:</translation>
</message>
<message>
- <location filename="../src/gui/itemviews/qfileiconprovider.cpp" line="+381"/>
+ <location filename="../src/gui/itemviews/qfileiconprovider.cpp" line="+411"/>
<source>Drive</source>
<translation>UrzÄ…dzenie</translation>
</message>
@@ -1546,7 +1551,7 @@ ProszÄ™ o sprawdzenie podanej nazwy pliku.</translation>
<message>
<location filename="../src/gui/dialogs/qfiledialog.cpp" line="-7"/>
<location line="+50"/>
- <location line="+1440"/>
+ <location line="+1471"/>
<location line="+75"/>
<source>&amp;Open</source>
<translation>&amp;Otwórz</translation>
@@ -1558,18 +1563,18 @@ ProszÄ™ o sprawdzenie podanej nazwy pliku.</translation>
<translation>Katalog wyżej</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-2189"/>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-2245"/>
<source>&amp;Rename</source>
<translation>&amp;Zmień nazwę</translation>
</message>
<message>
- <location line="+624"/>
+ <location line="+649"/>
<location line="+50"/>
<source>&amp;Save</source>
<translation>&amp;Zachowaj</translation>
</message>
<message>
- <location line="-672"/>
+ <location line="-697"/>
<source>Show &amp;hidden files</source>
<translation>Pokaż &amp;ukryte pliki</translation>
</message>
@@ -1594,7 +1599,7 @@ ProszÄ™ o sprawdzenie podanej nazwy pliku.</translation>
<translation>Znajdź katalog</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfiledialog_win.cpp" line="+130"/>
+ <location filename="../src/gui/dialogs/qfiledialog_win.cpp" line="+160"/>
<source>All Files (*.*)</source>
<translation>Wszystkie pliki (*.*)</translation>
</message>
@@ -1610,35 +1615,35 @@ ProszÄ™ o sprawdzenie podanej nazwy pliku.</translation>
<translation>Do przodu</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfiledialog.cpp" line="+1914"/>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="+1970"/>
<source>New Folder</source>
<translation>Nowy katalog</translation>
</message>
<message>
- <location line="-1907"/>
+ <location line="-1963"/>
<source>&amp;New Folder</source>
<translation>&amp;Nowy katalog</translation>
</message>
<message>
- <location line="+631"/>
+ <location line="+656"/>
<location line="+38"/>
<source>&amp;Choose</source>
<translation>&amp;Wybierz</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qsidebar.cpp" line="+388"/>
+ <location filename="../src/gui/dialogs/qsidebar.cpp" line="+418"/>
<source>Remove</source>
<translation>Usuń</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-686"/>
- <location line="+423"/>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-711"/>
+ <location line="+444"/>
<source>All Files (*)</source>
<translation>Wszystkie pliki (*)</translation>
</message>
<message>
- <location line="-399"/>
- <location line="+627"/>
+ <location line="-420"/>
+ <location line="+652"/>
<source>File &amp;name:</source>
<translation>Nazwa &amp;pliku:</translation>
</message>
@@ -1658,7 +1663,7 @@ ProszÄ™ o sprawdzenie podanej nazwy pliku.</translation>
<context>
<name>QFileSystemModel</name>
<message>
- <location filename="../src/gui/dialogs/qfilesystemmodel.cpp" line="+707"/>
+ <location filename="../src/gui/dialogs/qfilesystemmodel.cpp" line="+744"/>
<source>%1 TB</source>
<translation>%1 TB</translation>
</message>
@@ -1720,7 +1725,7 @@ ProszÄ™ o sprawdzenie podanej nazwy pliku.</translation>
<translation>Data modyfikacji</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfilesystemmodel_p.h" line="+204"/>
+ <location filename="../src/gui/dialogs/qfilesystemmodel_p.h" line="+234"/>
<source>My Computer</source>
<translation>Mój komputer</translation>
</message>
@@ -1733,7 +1738,7 @@ ProszÄ™ o sprawdzenie podanej nazwy pliku.</translation>
<context>
<name>QFontDatabase</name>
<message>
- <location filename="../src/gui/text/qfontdatabase.cpp" line="+60"/>
+ <location filename="../src/gui/text/qfontdatabase.cpp" line="+90"/>
<location line="+1176"/>
<source>Normal</source>
<translation>Normalny</translation>
@@ -1952,7 +1957,7 @@ ProszÄ™ o sprawdzenie podanej nazwy pliku.</translation>
<context>
<name>QFontDialog</name>
<message>
- <location filename="../src/gui/dialogs/qfontdialog.cpp" line="+745"/>
+ <location filename="../src/gui/dialogs/qfontdialog.cpp" line="+775"/>
<source>Effects</source>
<translation>Efekty</translation>
</message>
@@ -2001,8 +2006,8 @@ ProszÄ™ o sprawdzenie podanej nazwy pliku.</translation>
<context>
<name>QFtp</name>
<message>
- <location filename="../src/network/access/qftp.cpp" line="+2300"/>
- <location filename="../src/qt3support/network/q3ftp.cpp" line="+1994"/>
+ <location filename="../src/network/access/qftp.cpp" line="+2330"/>
+ <location filename="../src/qt3support/network/q3ftp.cpp" line="+2024"/>
<source>Changing directory failed:
%1</source>
<translation>Zmiana katalogu zakończona błędem:
@@ -2147,7 +2152,7 @@ ProszÄ™ o sprawdzenie podanej nazwy pliku.</translation>
<context>
<name>QHostInfo</name>
<message>
- <location filename="../src/network/kernel/qhostinfo_p.h" line="+153"/>
+ <location filename="../src/network/kernel/qhostinfo_p.h" line="+183"/>
<source>Unknown error</source>
<translation>Nieznany błąd</translation>
</message>
@@ -2155,11 +2160,11 @@ ProszÄ™ o sprawdzenie podanej nazwy pliku.</translation>
<context>
<name>QHostInfoAgent</name>
<message>
- <location filename="../src/network/kernel/qhostinfo_unix.cpp" line="+148"/>
+ <location filename="../src/network/kernel/qhostinfo_unix.cpp" line="+178"/>
<location line="+9"/>
<location line="+64"/>
<location line="+31"/>
- <location filename="../src/network/kernel/qhostinfo_win.cpp" line="+150"/>
+ <location filename="../src/network/kernel/qhostinfo_win.cpp" line="+180"/>
<location line="+9"/>
<location line="+40"/>
<location line="+27"/>
@@ -2185,7 +2190,7 @@ ProszÄ™ o sprawdzenie podanej nazwy pliku.</translation>
<context>
<name>QHttp</name>
<message>
- <location filename="../src/qt3support/network/q3http.cpp" line="+2279"/>
+ <location filename="../src/qt3support/network/q3http.cpp" line="+2309"/>
<source>Connected to host</source>
<translation>Podłączony do hosta</translation>
</message>
@@ -2195,7 +2200,7 @@ ProszÄ™ o sprawdzenie podanej nazwy pliku.</translation>
<translation>Podłączony do hosta %1</translation>
</message>
<message>
- <location filename="../src/network/access/qhttpnetworkconnection.cpp" line="+1715"/>
+ <location filename="../src/network/access/qhttpnetworkconnection.cpp" line="+879"/>
<location filename="../src/qt3support/network/q3http.cpp" line="+17"/>
<source>Connection closed</source>
<translation>Połączenie zakończone</translation>
@@ -2217,7 +2222,7 @@ ProszÄ™ o sprawdzenie podanej nazwy pliku.</translation>
<translation>Host %1 znaleziony</translation>
</message>
<message>
- <location filename="../src/network/access/qhttp.cpp" line="+2597"/>
+ <location filename="../src/network/access/qhttp.cpp" line="+2631"/>
<location filename="../src/network/access/qhttpnetworkconnection.cpp" line="-4"/>
<location filename="../src/qt3support/network/q3http.cpp" line="-453"/>
<source>Host %1 not found</source>
@@ -2237,7 +2242,7 @@ ProszÄ™ o sprawdzenie podanej nazwy pliku.</translation>
<translation>Komenda HTTP zakończona błędem</translation>
</message>
<message>
- <location line="+193"/>
+ <location line="+198"/>
<location line="+48"/>
<location filename="../src/qt3support/network/q3http.cpp" line="+109"/>
<location line="+47"/>
@@ -2245,7 +2250,7 @@ ProszÄ™ o sprawdzenie podanej nazwy pliku.</translation>
<translation>Niepoprawne ciało HTTP</translation>
</message>
<message>
- <location line="-168"/>
+ <location line="-173"/>
<location filename="../src/qt3support/network/q3http.cpp" line="-87"/>
<source>Invalid HTTP response header</source>
<translation>Niepoprawny nagłówek odpowiedzi HTTP</translation>
@@ -2257,38 +2262,43 @@ ProszÄ™ o sprawdzenie podanej nazwy pliku.</translation>
<translation>Brak serwera do podłączenia</translation>
</message>
<message>
- <location line="-575"/>
+ <location line="-579"/>
<location filename="../src/qt3support/network/q3http.cpp" line="-381"/>
<source>Request aborted</source>
<translation>Komenda przerwana</translation>
</message>
<message>
- <location line="+743"/>
+ <location line="+747"/>
<location filename="../src/qt3support/network/q3http.cpp" line="+441"/>
<source>Server closed connection unexpectedly</source>
<translation>Serwer niespodziewanie zakończył połączenie</translation>
</message>
<message>
- <location line="-995"/>
- <location line="+816"/>
+ <location line="-999"/>
+ <location line="+820"/>
<location filename="../src/qt3support/network/q3http.cpp" line="-638"/>
<location line="+567"/>
<source>Unknown error</source>
<translation>Nieznany błąd</translation>
</message>
<message>
- <location line="-2025"/>
+ <location line="-2029"/>
<source>HTTPS connection requested but SSL support not compiled in</source>
<translation>Zażądano połączenia HTTPS lecz obsługa SSL nie jest wkompilowana</translation>
</message>
<message>
- <location line="+2200"/>
+ <location line="+2204"/>
<location filename="../src/qt3support/network/q3http.cpp" line="+67"/>
<source>Wrong content length</source>
<translation>Błędna długość zawartości</translation>
</message>
<message>
- <location line="+188"/>
+ <location line="+183"/>
+ <source>Unknown authentication method</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+10"/>
<source>Proxy authentication required</source>
<translation>Wymagana autoryzacja pośrednika</translation>
</message>
@@ -2328,7 +2338,7 @@ ProszÄ™ o sprawdzenie podanej nazwy pliku.</translation>
<translation>Nawiązanie sesji SSL nie powiodło się</translation>
</message>
<message>
- <location filename="../src/network/access/qhttp.cpp" line="-302"/>
+ <location filename="../src/network/access/qhttp.cpp" line="-307"/>
<source>Connection refused (or timed out)</source>
<translation>Połączenie odrzucone (przekroczony czas połączenia)</translation>
</message>
@@ -2384,7 +2394,7 @@ ProszÄ™ o sprawdzenie podanej nazwy pliku.</translation>
<context>
<name>QIBaseDriver</name>
<message>
- <location filename="../src/sql/drivers/ibase/qsql_ibase.cpp" line="+1432"/>
+ <location filename="../src/sql/drivers/ibase/qsql_ibase.cpp" line="+1482"/>
<source>Could not start transaction</source>
<translation>Nie można rozpocząć transakcji</translation>
</message>
@@ -2407,7 +2417,7 @@ ProszÄ™ o sprawdzenie podanej nazwy pliku.</translation>
<context>
<name>QIBaseResult</name>
<message>
- <location line="-601"/>
+ <location line="-620"/>
<source>Could not allocate statement</source>
<translation>Nie można zaallokować polecenia</translation>
</message>
@@ -2469,17 +2479,17 @@ ProszÄ™ o sprawdzenie podanej nazwy pliku.</translation>
<translation>Nie można dokonać transakcji</translation>
</message>
<message>
- <location line="-443"/>
+ <location line="-444"/>
<source>Unable to create BLOB</source>
<translation>Nie można utworzyć obiektu typu BLOB</translation>
</message>
<message>
- <location line="+626"/>
+ <location line="+627"/>
<source>Unable to execute query</source>
<translation>Nie można wykonać zapytania</translation>
</message>
<message>
- <location line="-606"/>
+ <location line="-607"/>
<source>Unable to open BLOB</source>
<translation>Nie można otworzyć obiektu typu BLOB</translation>
</message>
@@ -2497,7 +2507,7 @@ ProszÄ™ o sprawdzenie podanej nazwy pliku.</translation>
<context>
<name>QIODevice</name>
<message>
- <location filename="../src/corelib/global/qglobal.cpp" line="+1839"/>
+ <location filename="../src/corelib/global/qglobal.cpp" line="+1878"/>
<source>No space left on device</source>
<translation>Brak wolnego miejsca na urzÄ…dzeniu</translation>
</message>
@@ -2517,7 +2527,7 @@ ProszÄ™ o sprawdzenie podanej nazwy pliku.</translation>
<translation>Zbyt wiele otwartych plików</translation>
</message>
<message>
- <location filename="../src/corelib/io/qiodevice.cpp" line="+1506"/>
+ <location filename="../src/corelib/io/qiodevice.cpp" line="+1536"/>
<source>Unknown error</source>
<translation>Nieznany błąd</translation>
</message>
@@ -2525,7 +2535,7 @@ ProszÄ™ o sprawdzenie podanej nazwy pliku.</translation>
<context>
<name>QInputContext</name>
<message>
- <location filename="../src/gui/inputmethod/qinputcontextfactory.cpp" line="+243"/>
+ <location filename="../src/gui/inputmethod/qinputcontextfactory.cpp" line="+273"/>
<source>Mac OS X input method</source>
<translation>Metoda wprowadzania Mac OS X</translation>
</message>
@@ -2548,7 +2558,7 @@ ProszÄ™ o sprawdzenie podanej nazwy pliku.</translation>
<context>
<name>QInputDialog</name>
<message>
- <location filename="../src/gui/dialogs/qinputdialog.cpp" line="+193"/>
+ <location filename="../src/gui/dialogs/qinputdialog.cpp" line="+223"/>
<source>Enter a value:</source>
<translation>Podaj wartość:</translation>
</message>
@@ -2556,7 +2566,7 @@ ProszÄ™ o sprawdzenie podanej nazwy pliku.</translation>
<context>
<name>QLibrary</name>
<message>
- <location filename="../src/corelib/plugin/qlibrary.cpp" line="+348"/>
+ <location filename="../src/corelib/plugin/qlibrary.cpp" line="+378"/>
<source>Could not mmap &apos;%1&apos;: %2</source>
<translation>Nie można wykonać przypisania &apos;%1&apos;: %2</translation>
</message>
@@ -2587,7 +2597,7 @@ ProszÄ™ o sprawdzenie podanej nazwy pliku.</translation>
</message>
<message>
<location line="-377"/>
- <location filename="../src/corelib/plugin/qpluginloader.cpp" line="+250"/>
+ <location filename="../src/corelib/plugin/qpluginloader.cpp" line="+280"/>
<source>The shared library was not found.</source>
<translation>Biblioteka współdzielona niedostępna.</translation>
</message>
@@ -2602,8 +2612,8 @@ ProszÄ™ o sprawdzenie podanej nazwy pliku.</translation>
<translation>Wtyczka &quot;%1&quot; używa innej wersji biblioteki Qt. (Nie można łączyć bibliotek zwykłych i debugowych.)</translation>
</message>
<message>
- <location filename="../src/corelib/plugin/qlibrary_unix.cpp" line="+179"/>
- <location filename="../src/corelib/plugin/qlibrary_win.cpp" line="+69"/>
+ <location filename="../src/corelib/plugin/qlibrary_unix.cpp" line="+209"/>
+ <location filename="../src/corelib/plugin/qlibrary_win.cpp" line="+99"/>
<source>Cannot load library %1: %2</source>
<translation>Nie można załadować biblioteki %1: %2</translation>
</message>
@@ -2623,7 +2633,7 @@ ProszÄ™ o sprawdzenie podanej nazwy pliku.</translation>
<context>
<name>QLineEdit</name>
<message>
- <location filename="../src/gui/widgets/qlineedit.cpp" line="+2664"/>
+ <location filename="../src/gui/widgets/qlineedit.cpp" line="+2695"/>
<source>&amp;Copy</source>
<translation>S&amp;kopiuj</translation>
</message>
@@ -2661,8 +2671,8 @@ ProszÄ™ o sprawdzenie podanej nazwy pliku.</translation>
<context>
<name>QLocalServer</name>
<message>
- <location filename="../src/network/socket/qlocalserver.cpp" line="+196"/>
- <location filename="../src/network/socket/qlocalserver_unix.cpp" line="+201"/>
+ <location filename="../src/network/socket/qlocalserver.cpp" line="+226"/>
+ <location filename="../src/network/socket/qlocalserver_unix.cpp" line="+231"/>
<source>%1: Name error</source>
<translation>%1: BÅ‚Ä…d nazwy</translation>
</message>
@@ -2678,7 +2688,7 @@ ProszÄ™ o sprawdzenie podanej nazwy pliku.</translation>
</message>
<message>
<location line="+5"/>
- <location filename="../src/network/socket/qlocalserver_win.cpp" line="+127"/>
+ <location filename="../src/network/socket/qlocalserver_win.cpp" line="+158"/>
<source>%1: Unknown error %2</source>
<translation>%1: Nieznany błąd %2</translation>
</message>
@@ -2686,8 +2696,8 @@ ProszÄ™ o sprawdzenie podanej nazwy pliku.</translation>
<context>
<name>QLocalSocket</name>
<message>
- <location filename="../src/network/socket/qlocalsocket_tcp.cpp" line="+102"/>
- <location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+104"/>
+ <location filename="../src/network/socket/qlocalsocket_tcp.cpp" line="+132"/>
+ <location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+134"/>
<source>%1: Connection refused</source>
<translation>%1: Odmowa połączenia</translation>
</message>
@@ -2700,7 +2710,7 @@ ProszÄ™ o sprawdzenie podanej nazwy pliku.</translation>
<message>
<location line="+3"/>
<location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+3"/>
- <location filename="../src/network/socket/qlocalsocket_win.cpp" line="+50"/>
+ <location filename="../src/network/socket/qlocalsocket_win.cpp" line="+80"/>
<location line="+43"/>
<source>%1: Invalid name</source>
<translation>%1: Niepoprawna nazwa</translation>
@@ -2757,7 +2767,7 @@ ProszÄ™ o sprawdzenie podanej nazwy pliku.</translation>
<context>
<name>QMYSQLDriver</name>
<message>
- <location filename="../src/sql/drivers/mysql/qsql_mysql.cpp" line="+1330"/>
+ <location filename="../src/sql/drivers/mysql/qsql_mysql.cpp" line="+1365"/>
<source>Unable to begin transaction</source>
<translation>Nie można rozpocząć transakcji</translation>
</message>
@@ -2767,7 +2777,7 @@ ProszÄ™ o sprawdzenie podanej nazwy pliku.</translation>
<translation>Nie można potwierdzić transakcji</translation>
</message>
<message>
- <location line="-140"/>
+ <location line="-144"/>
<source>Unable to connect</source>
<translation>Nie można nawiązać połączenia</translation>
</message>
@@ -2777,7 +2787,7 @@ ProszÄ™ o sprawdzenie podanej nazwy pliku.</translation>
<translation>Nie można otworzyć bazy danych &apos;</translation>
</message>
<message>
- <location line="+164"/>
+ <location line="+168"/>
<source>Unable to rollback transaction</source>
<translation>Nie można wycofać transakcji</translation>
</message>
@@ -2785,7 +2795,7 @@ ProszÄ™ o sprawdzenie podanej nazwy pliku.</translation>
<context>
<name>QMYSQLResult</name>
<message>
- <location line="-392"/>
+ <location line="-396"/>
<location line="+21"/>
<source>Unable to bind outvalues</source>
<translation>Nie można powiązać wartości zewnętrznych</translation>
@@ -2796,22 +2806,22 @@ ProszÄ™ o sprawdzenie podanej nazwy pliku.</translation>
<translation>Nie można powiązać wartości</translation>
</message>
<message>
- <location line="-324"/>
+ <location line="-325"/>
<source>Unable to execute query</source>
<translation>Nie można wykonać zapytania</translation>
</message>
<message>
- <location line="+335"/>
+ <location line="+336"/>
<source>Unable to execute statement</source>
<translation>Nie można wykonać polecenia</translation>
</message>
<message>
- <location line="-511"/>
+ <location line="-512"/>
<source>Unable to fetch data</source>
<translation>Nie można pobrać danych</translation>
</message>
<message>
- <location line="+371"/>
+ <location line="+372"/>
<location line="+8"/>
<source>Unable to prepare statement</source>
<translation>Nie można przygotować polecenia</translation>
@@ -2822,12 +2832,12 @@ ProszÄ™ o sprawdzenie podanej nazwy pliku.</translation>
<translation>Nie można skasować polecenia</translation>
</message>
<message>
- <location line="-231"/>
+ <location line="-232"/>
<source>Unable to store result</source>
<translation>Nie można zachować wyników</translation>
</message>
<message>
- <location line="+352"/>
+ <location line="+353"/>
<source>Unable to store statement results</source>
<translation>Nie można zachować wyników polecenia</translation>
</message>
@@ -2845,7 +2855,7 @@ ProszÄ™ o sprawdzenie podanej nazwy pliku.</translation>
<context>
<name>QMdiArea</name>
<message>
- <location filename="../src/gui/widgets/qmdiarea.cpp" line="+260"/>
+ <location filename="../src/gui/widgets/qmdiarea.cpp" line="+290"/>
<source>(Untitled)</source>
<translation>(Nienazwany)</translation>
</message>
@@ -2853,7 +2863,7 @@ ProszÄ™ o sprawdzenie podanej nazwy pliku.</translation>
<context>
<name>QMdiSubWindow</name>
<message>
- <location filename="../src/gui/widgets/qmdisubwindow.cpp" line="+250"/>
+ <location filename="../src/gui/widgets/qmdisubwindow.cpp" line="+280"/>
<source>%1 - [%2]</source>
<translation>%1 - [%2]</translation>
</message>
@@ -2946,7 +2956,7 @@ ProszÄ™ o sprawdzenie podanej nazwy pliku.</translation>
<context>
<name>QMenu</name>
<message>
- <location filename="../src/plugins/accessible/widgets/qaccessiblemenu.cpp" line="+127"/>
+ <location filename="../src/plugins/accessible/widgets/qaccessiblemenu.cpp" line="+157"/>
<location line="+225"/>
<source>Close</source>
<translation>Zamknij</translation>
@@ -2968,27 +2978,24 @@ ProszÄ™ o sprawdzenie podanej nazwy pliku.</translation>
<context>
<name>QMessageBox</name>
<message>
- <location filename="../src/gui/dialogs/qmessagebox.cpp" line="-616"/>
<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://qtsoftware.com/company/model/&quot;&gt;qtsoftware.com/company/model/&lt;/a&gt; for an overview of Qt licensing.&lt;/p&gt;</source>
- <translation>&lt;p&gt; Ten program używa Qt Open Source Edition w wersji %1.&lt;/p&gt;&lt;p&gt;Qt Open Source Edition jest przeznaczone do pisania aplikacji z otwartym kodem źródłowym. W przypadku aplikacji zamkniętych (bez kodu źródłowego) wymagana jest licencja komercyjna Qt.&lt;/p&gt;&lt;p&gt;Strona &lt;a href=&quot;http://qtsoftware.com/company/model/&quot;&gt;qtsoftware.com/company/model/&lt;/a&gt; opisuje sposób licencjonowania Qt.&lt;/p&gt;</translation>
+ <translation type="obsolete">&lt;p&gt; Ten program używa Qt Open Source Edition w wersji %1.&lt;/p&gt;&lt;p&gt;Qt Open Source Edition jest przeznaczone do pisania aplikacji z otwartym kodem źródłowym. W przypadku aplikacji zamkniętych (bez kodu źródłowego) wymagana jest licencja komercyjna Qt.&lt;/p&gt;&lt;p&gt;Strona &lt;a href=&quot;http://qtsoftware.com/company/model/&quot;&gt;qtsoftware.com/company/model/&lt;/a&gt; opisuje sposób licencjonowania Qt.&lt;/p&gt;</translation>
</message>
<message>
- <location line="-2"/>
<source>&lt;p&gt;This program uses Qt version %1.&lt;/p&gt;</source>
- <translation>&lt;p&gt; Ten program używa Qt w wersji %1.&lt;/p&gt;</translation>
+ <translation type="obsolete">&lt;p&gt; Ten program używa Qt w wersji %1.&lt;/p&gt;</translation>
</message>
<message>
- <location line="-13"/>
<source>&lt;h3&gt;About Qt&lt;/h3&gt;%1&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 a Nokia product. See &lt;a href=&quot;http://qtsoftware.com/qt/&quot;&gt;qtsoftware.com/qt/&lt;/a&gt; for more information.&lt;/p&gt;</source>
- <translation>&lt;h3&gt;Informacje o Qt&lt;/h3&gt;%1&lt;p&gt;Qt jest biblioteką C++ do tworzenia przenośnego oprogramowania.&lt;/p&gt;&lt;p&gt;Qt umożliwia pisanie przenośnego kodu zarówno dla MS&amp;nbsp;Windows, Mac&amp;nbsp;OS&amp;nbsp;X, Linux jak i dla wszystkich głównych komercyjnych wariantów Unix&apos;ów. Qt jest również dostępne dla urządzeń specjalizowanych i przenośnych jako Qt dla Embedded Linux lub jako Qt dla Windows CE.&lt;/p&gt;&lt;p&gt;Producentem Qt jest Nokia. Więcej informacji na stronie &lt;a href=&quot;http://qtsoftware.com/qt/&quot;&gt;qtsoftware.com/qt/&lt;/a&gt;.&lt;/p&gt;</translation>
+ <translation type="obsolete">&lt;h3&gt;Informacje o Qt&lt;/h3&gt;%1&lt;p&gt;Qt jest biblioteką C++ do tworzenia przenośnego oprogramowania.&lt;/p&gt;&lt;p&gt;Qt umożliwia pisanie przenośnego kodu zarówno dla MS&amp;nbsp;Windows, Mac&amp;nbsp;OS&amp;nbsp;X, Linux jak i dla wszystkich głównych komercyjnych wariantów Unix&apos;ów. Qt jest również dostępne dla urządzeń specjalizowanych i przenośnych jako Qt dla Embedded Linux lub jako Qt dla Windows CE.&lt;/p&gt;&lt;p&gt;Producentem Qt jest Nokia. Więcej informacji na stronie &lt;a href=&quot;http://qtsoftware.com/qt/&quot;&gt;qtsoftware.com/qt/&lt;/a&gt;.&lt;/p&gt;</translation>
</message>
<message>
- <location line="+28"/>
+ <location filename="../src/gui/dialogs/qmessagebox.cpp" line="-603"/>
<source>About Qt</source>
<translation>Informacje o Qt</translation>
</message>
<message>
- <location line="-502"/>
+ <location line="-508"/>
<source>Help</source>
<translation>Pomoc</translation>
</message>
@@ -3006,7 +3013,12 @@ ProszÄ™ o sprawdzenie podanej nazwy pliku.</translation>
<translation>OK</translation>
</message>
<message>
- <location line="-1096"/>
+ <location line="+475"/>
+ <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://www.qtsoftware.com/products/licensing&quot;&gt;www.qtsoftware.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://www.qtsoftware.com/qt/&quot;&gt;www.qtsoftware.com/qt&lt;/a&gt; for more information.&lt;/p&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="-1571"/>
<source>Show Details...</source>
<translation>Pokaż szczegóły...</translation>
</message>
@@ -3014,7 +3026,7 @@ ProszÄ™ o sprawdzenie podanej nazwy pliku.</translation>
<context>
<name>QMultiInputContext</name>
<message>
- <location filename="../src/plugins/inputmethods/imsw-multi/qmultiinputcontext.cpp" line="+58"/>
+ <location filename="../src/plugins/inputmethods/imsw-multi/qmultiinputcontext.cpp" line="+88"/>
<source>Select IM</source>
<translation>Wybierz metodÄ™ wprowadzania</translation>
</message>
@@ -3022,7 +3034,7 @@ ProszÄ™ o sprawdzenie podanej nazwy pliku.</translation>
<context>
<name>QMultiInputContextPlugin</name>
<message>
- <location filename="../src/plugins/inputmethods/imsw-multi/qmultiinputcontextplugin.cpp" line="+65"/>
+ <location filename="../src/plugins/inputmethods/imsw-multi/qmultiinputcontextplugin.cpp" line="+95"/>
<source>Multiple input method switcher</source>
<translation>Przełącznik metody wprowadzania</translation>
</message>
@@ -3035,7 +3047,7 @@ ProszÄ™ o sprawdzenie podanej nazwy pliku.</translation>
<context>
<name>QNativeSocketEngine</name>
<message>
- <location filename="../src/network/socket/qnativesocketengine.cpp" line="+233"/>
+ <location filename="../src/network/socket/qnativesocketengine.cpp" line="+263"/>
<source>Another socket is already listening on the same port</source>
<translation>Inne gniazdo nasłuchuje już na tym porcie</translation>
</message>
@@ -3168,7 +3180,7 @@ ProszÄ™ o sprawdzenie podanej nazwy pliku.</translation>
<context>
<name>QNetworkAccessCacheBackend</name>
<message>
- <location filename="../src/network/access/qnetworkaccesscachebackend.cpp" line="+35"/>
+ <location filename="../src/network/access/qnetworkaccesscachebackend.cpp" line="+65"/>
<source>Error opening %1</source>
<translation>BÅ‚Ä…d otwierania %1</translation>
</message>
@@ -3176,7 +3188,7 @@ ProszÄ™ o sprawdzenie podanej nazwy pliku.</translation>
<context>
<name>QNetworkAccessFileBackend</name>
<message>
- <location filename="../src/network/access/qnetworkaccessfilebackend.cpp" line="+69"/>
+ <location filename="../src/network/access/qnetworkaccessfilebackend.cpp" line="+99"/>
<source>Request for opening non-local file %1</source>
<translation>Żądanie otwarcia zdalnego pliku %1</translation>
</message>
@@ -3204,7 +3216,7 @@ ProszÄ™ o sprawdzenie podanej nazwy pliku.</translation>
<context>
<name>QNetworkAccessFtpBackend</name>
<message>
- <location filename="../src/network/access/qnetworkaccessftpbackend.cpp" line="+135"/>
+ <location filename="../src/network/access/qnetworkaccessftpbackend.cpp" line="+165"/>
<source>No suitable proxy found</source>
<translation>Nie odnaleziono odpowiedniego pośrednika</translation>
</message>
@@ -3214,7 +3226,7 @@ ProszÄ™ o sprawdzenie podanej nazwy pliku.</translation>
<translation>Nie można otworzyć %1: jest to katalog</translation>
</message>
<message>
- <location line="+131"/>
+ <location line="+130"/>
<source>Logging in to %1 failed: authentication required</source>
<translation>BÅ‚Ä…d podczas logowania do %1: wymagana autoryzacja</translation>
</message>
@@ -3232,7 +3244,7 @@ ProszÄ™ o sprawdzenie podanej nazwy pliku.</translation>
<context>
<name>QNetworkAccessHttpBackend</name>
<message>
- <location filename="../src/network/access/qnetworkaccesshttpbackend.cpp" line="+565"/>
+ <location filename="../src/network/access/qnetworkaccesshttpbackend.cpp" line="+597"/>
<source>No suitable proxy found</source>
<translation>Nie odnaleziono odpowiedniego pośrednika</translation>
</message>
@@ -3245,7 +3257,7 @@ ProszÄ™ o sprawdzenie podanej nazwy pliku.</translation>
<translation>Błąd podczas pobierania %1 - odpowiedź serwera: %2</translation>
</message>
<message>
- <location filename="../src/network/access/qnetworkreplyimpl.cpp" line="+37"/>
+ <location filename="../src/network/access/qnetworkreplyimpl.cpp" line="+68"/>
<source>Protocol &quot;%1&quot; is unknown</source>
<translation>Protokół &quot;%1&quot; nie jest znany</translation>
</message>
@@ -3253,7 +3265,7 @@ ProszÄ™ o sprawdzenie podanej nazwy pliku.</translation>
<context>
<name>QNetworkReplyImpl</name>
<message>
- <location line="+422"/>
+ <location line="+432"/>
<location line="+22"/>
<source>Operation canceled</source>
<translation>Operacja anulowana</translation>
@@ -3262,7 +3274,7 @@ ProszÄ™ o sprawdzenie podanej nazwy pliku.</translation>
<context>
<name>QOCIDriver</name>
<message>
- <location filename="../src/sql/drivers/oci/qsql_oci.cpp" line="+1883"/>
+ <location filename="../src/sql/drivers/oci/qsql_oci.cpp" line="+1925"/>
<source>Unable to initialize</source>
<comment>QOCIDriver</comment>
<translation>Nie można dokonać inicjalizacji</translation>
@@ -3291,7 +3303,7 @@ ProszÄ™ o sprawdzenie podanej nazwy pliku.</translation>
<context>
<name>QOCIResult</name>
<message>
- <location line="-976"/>
+ <location line="-963"/>
<location line="+161"/>
<location line="+15"/>
<source>Unable to bind column for batch execute</source>
@@ -3318,18 +3330,16 @@ ProszÄ™ o sprawdzenie podanej nazwy pliku.</translation>
<translation>Nie można przygotować polecenia</translation>
</message>
<message>
- <location line="+29"/>
- <location line="+37"/>
+ <location line="+36"/>
<source>Unable to bind value</source>
<translation>Nie można powiązać wartości</translation>
</message>
<message>
- <location line="-20"/>
<source>Unable to execute select statement</source>
- <translation>Nie można wykonać polecenia select</translation>
+ <translation type="obsolete">Nie można wykonać polecenia select</translation>
</message>
<message>
- <location line="+32"/>
+ <location line="+19"/>
<source>Unable to execute statement</source>
<translation>Nie można wykonać polecenia</translation>
</message>
@@ -3337,12 +3347,12 @@ ProszÄ™ o sprawdzenie podanej nazwy pliku.</translation>
<context>
<name>QODBCDriver</name>
<message>
- <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="+1914"/>
+ <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="+2050"/>
<source>Unable to commit transaction</source>
<translation>Nie można potwierdzić transakcji</translation>
</message>
<message>
- <location line="-257"/>
+ <location line="-265"/>
<source>Unable to connect</source>
<translation>Nie można nawiązać połączenia</translation>
</message>
@@ -3352,7 +3362,7 @@ ProszÄ™ o sprawdzenie podanej nazwy pliku.</translation>
<translation>Nie można nawiązać połączenia - sterownik nie obsługuje całej potrzebnej funkcjonalności</translation>
</message>
<message>
- <location line="+234"/>
+ <location line="+242"/>
<source>Unable to disable autocommit</source>
<translation>Nie można wyłączyć trybu automatycznego dokonywania transakcji</translation>
</message>
@@ -3370,24 +3380,24 @@ ProszÄ™ o sprawdzenie podanej nazwy pliku.</translation>
<context>
<name>QODBCResult</name>
<message>
- <location line="-1189"/>
+ <location line="-1203"/>
<location line="+349"/>
<source>QODBCResult::reset: Unable to set &apos;SQL_CURSOR_STATIC&apos; as statement attribute. Please check your ODBC driver configuration</source>
<translation>QODBCResult::reset: Nie można ustawić &apos;SQL_CURSOR_STATIC&apos; jako atrybutu polecenia. Proszę sprawdzić konfiguracje sterownika ODBC</translation>
</message>
<message>
- <location line="+285"/>
+ <location line="+286"/>
<source>Unable to bind variable</source>
<translation>Nie można powiązać zmiennej</translation>
</message>
<message>
- <location line="-617"/>
- <location line="+625"/>
+ <location line="-618"/>
+ <location line="+626"/>
<source>Unable to execute statement</source>
<translation>Nie można wykonać polecenia</translation>
</message>
<message>
- <location line="-554"/>
+ <location line="-555"/>
<source>Unable to fetch next</source>
<translation>Nie można pobrać kolejnych danych</translation>
</message>
@@ -3399,12 +3409,12 @@ ProszÄ™ o sprawdzenie podanej nazwy pliku.</translation>
<message>
<location filename="../src/sql/drivers/db2/qsql_db2.cpp" line="+194"/>
<location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="-207"/>
- <location line="+577"/>
+ <location line="+578"/>
<source>Unable to fetch last</source>
<translation>Nie można pobrać ostatnich danych</translation>
</message>
<message>
- <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="-671"/>
+ <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="-672"/>
<source>Unable to fetch</source>
<translation>Nie można pobrać</translation>
</message>
@@ -3422,12 +3432,12 @@ ProszÄ™ o sprawdzenie podanej nazwy pliku.</translation>
<context>
<name>QObject</name>
<message>
- <location filename="../src/gui/util/qdesktopservices_mac.cpp" line="+134"/>
+ <location filename="../src/gui/util/qdesktopservices_mac.cpp" line="+165"/>
<source>Home</source>
<translation>Strona startowa</translation>
</message>
<message>
- <location filename="../src/network/access/qnetworkaccessdatabackend.cpp" line="+44"/>
+ <location filename="../src/network/access/qnetworkaccessdatabackend.cpp" line="+74"/>
<source>Operation not supported on %1</source>
<translation>Operacja nieobsługiwana na %1</translation>
</message>
@@ -3437,7 +3447,7 @@ ProszÄ™ o sprawdzenie podanej nazwy pliku.</translation>
<translation>Niepoprawny URI: %1</translation>
</message>
<message>
- <location filename="../src/network/access/qnetworkaccessdebugpipebackend.cpp" line="+145"/>
+ <location filename="../src/network/access/qnetworkaccessdebugpipebackend.cpp" line="+175"/>
<source>Write error writing to %1: %2</source>
<translation>BÅ‚Ä…d w trakcie zapisywania do %1: %2</translation>
</message>
@@ -3462,7 +3472,7 @@ ProszÄ™ o sprawdzenie podanej nazwy pliku.</translation>
<translation>Błąd protokołu: otrzymano pakiet o zerowym rozmiarze</translation>
</message>
<message>
- <location filename="../src/network/kernel/qhostinfo.cpp" line="+147"/>
+ <location filename="../src/network/kernel/qhostinfo.cpp" line="+177"/>
<location line="+57"/>
<source>No host name given</source>
<translation>Nie podano nazwy hosta</translation>
@@ -3471,7 +3481,7 @@ ProszÄ™ o sprawdzenie podanej nazwy pliku.</translation>
<context>
<name>QPPDOptionsModel</name>
<message>
- <location filename="../src/gui/dialogs/qprintdialog_unix.cpp" line="+1165"/>
+ <location filename="../src/gui/dialogs/qprintdialog_unix.cpp" line="+1195"/>
<source>Name</source>
<translation>Nazwa</translation>
</message>
@@ -3484,7 +3494,7 @@ ProszÄ™ o sprawdzenie podanej nazwy pliku.</translation>
<context>
<name>QPSQLDriver</name>
<message>
- <location filename="../src/sql/drivers/psql/qsql_psql.cpp" line="+781"/>
+ <location filename="../src/sql/drivers/psql/qsql_psql.cpp" line="+812"/>
<source>Could not begin transaction</source>
<translation>Nie można rozpocząć transakcji</translation>
</message>
@@ -3504,7 +3514,7 @@ ProszÄ™ o sprawdzenie podanej nazwy pliku.</translation>
<translation>Nie można nawiązać połączenia</translation>
</message>
<message>
- <location line="+418"/>
+ <location line="+440"/>
<source>Unable to subscribe</source>
<translation>Nie można wykonać subskrypcji</translation>
</message>
@@ -3517,12 +3527,12 @@ ProszÄ™ o sprawdzenie podanej nazwy pliku.</translation>
<context>
<name>QPSQLResult</name>
<message>
- <location line="-1035"/>
+ <location line="-1058"/>
<source>Unable to create query</source>
<translation>Nie można utworzyć zapytania</translation>
</message>
<message>
- <location line="+373"/>
+ <location line="+374"/>
<source>Unable to prepare statement</source>
<translation>Nie można przygotować wyrażenia</translation>
</message>
@@ -3530,7 +3540,7 @@ ProszÄ™ o sprawdzenie podanej nazwy pliku.</translation>
<context>
<name>QPageSetupWidget</name>
<message>
- <location filename="../src/gui/dialogs/qpagesetupdialog_unix.cpp" line="+274"/>
+ <location filename="../src/gui/dialogs/qpagesetupdialog_unix.cpp" line="+304"/>
<source>Centimeters (cm)</source>
<translation>Centymetry (cm)</translation>
</message>
@@ -3646,7 +3656,7 @@ ProszÄ™ o sprawdzenie podanej nazwy pliku.</translation>
<context>
<name>QPrintDialog</name>
<message>
- <location filename="../src/gui/dialogs/qprintdialog_qws.cpp" line="+299"/>
+ <location filename="../src/gui/dialogs/qprintdialog_qws.cpp" line="+329"/>
<source>A0 (841 x 1189 mm)</source>
<translation>A0 (841 x 1189 mm)</translation>
</message>
@@ -3696,7 +3706,7 @@ ProszÄ™ o sprawdzenie podanej nazwy pliku.</translation>
<translation>A9 (37 x 52 mm)</translation>
</message>
<message>
- <location filename="../src/gui/painting/qprinterinfo_unix.cpp" line="+91"/>
+ <location filename="../src/gui/painting/qprinterinfo_unix.cpp" line="+121"/>
<location line="+225"/>
<source>Aliases: %1</source>
<translation>Aliasy: %1</translation>
@@ -3772,7 +3782,7 @@ ProszÄ™ o sprawdzenie podanej nazwy pliku.</translation>
<translation>podłączony lokalnie</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qprintdialog_win.cpp" line="+238"/>
+ <location filename="../src/gui/dialogs/qprintdialog_win.cpp" line="+268"/>
<source>OK</source>
<translation>OK</translation>
</message>
@@ -3828,7 +3838,7 @@ ProszÄ™ o sprawdzenie podanej nazwy pliku.</translation>
<translation>US Common #10 Envelope (105 x 241 mm)</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qabstractprintdialog.cpp" line="+80"/>
+ <location filename="../src/gui/dialogs/qabstractprintdialog.cpp" line="+110"/>
<location line="+13"/>
<location filename="../src/gui/dialogs/qprintdialog_win.cpp" line="-2"/>
<source>Print</source>
@@ -4075,7 +4085,7 @@ Proszę wybrać inną nazwę pliku.</translation>
<context>
<name>QPrintPreviewDialog</name>
<message>
- <location filename="../src/gui/dialogs/qprintpreviewdialog.cpp" line="+222"/>
+ <location filename="../src/gui/dialogs/qprintpreviewdialog.cpp" line="+252"/>
<source>%1%</source>
<translation>%1%</translation>
</message>
@@ -4175,7 +4185,7 @@ Proszę wybrać inną nazwę pliku.</translation>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qabstractpagesetupdialog.cpp" line="+38"/>
+ <location filename="../src/gui/dialogs/qabstractpagesetupdialog.cpp" line="+68"/>
<location line="+12"/>
<source>Page Setup</source>
<translation>Ustawienia strony</translation>
@@ -4348,8 +4358,8 @@ Proszę wybrać inną nazwę pliku.</translation>
<context>
<name>QProcess</name>
<message>
- <location filename="../src/corelib/io/qprocess_unix.cpp" line="+445"/>
- <location filename="../src/corelib/io/qprocess_win.cpp" line="+117"/>
+ <location filename="../src/corelib/io/qprocess_unix.cpp" line="+475"/>
+ <location filename="../src/corelib/io/qprocess_win.cpp" line="+147"/>
<source>Could not open input redirection for reading</source>
<translation type="unfinished"></translation>
</message>
@@ -4378,7 +4388,7 @@ Proszę wybrać inną nazwę pliku.</translation>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/corelib/io/qprocess.cpp" line="+503"/>
+ <location filename="../src/corelib/io/qprocess.cpp" line="+533"/>
<location line="+52"/>
<location filename="../src/corelib/io/qprocess_win.cpp" line="-211"/>
<location line="+50"/>
@@ -4398,6 +4408,11 @@ Proszę wybrać inną nazwę pliku.</translation>
<translation type="unfinished"></translation>
</message>
<message>
+ <location line="+912"/>
+ <source>No program defined</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<location filename="../src/corelib/io/qprocess_win.cpp" line="-341"/>
<source>Process failed to start</source>
<translation type="unfinished"></translation>
@@ -4406,7 +4421,7 @@ Proszę wybrać inną nazwę pliku.</translation>
<context>
<name>QProgressDialog</name>
<message>
- <location filename="../src/gui/dialogs/qprogressdialog.cpp" line="+152"/>
+ <location filename="../src/gui/dialogs/qprogressdialog.cpp" line="+182"/>
<source>Cancel</source>
<translation>Anuluj</translation>
</message>
@@ -4430,7 +4445,7 @@ Proszę wybrać inną nazwę pliku.</translation>
<context>
<name>QRegExp</name>
<message>
- <location filename="../src/corelib/tools/qregexp.cpp" line="+36"/>
+ <location filename="../src/corelib/tools/qregexp.cpp" line="+66"/>
<source>bad char class syntax</source>
<translation>niepoprawna składnia klasy znakowej</translation>
</message>
@@ -4478,7 +4493,7 @@ Proszę wybrać inną nazwę pliku.</translation>
<context>
<name>QSQLite2Driver</name>
<message>
- <location filename="../src/sql/drivers/sqlite2/qsql_sqlite2.cpp" line="+353"/>
+ <location filename="../src/sql/drivers/sqlite2/qsql_sqlite2.cpp" line="+396"/>
<source>Error to open database</source>
<translation>Nie można otworzyć bazy danych</translation>
</message>
@@ -4501,12 +4516,12 @@ Proszę wybrać inną nazwę pliku.</translation>
<context>
<name>QSQLite2Result</name>
<message>
- <location line="-171"/>
+ <location line="-176"/>
<source>Unable to execute statement</source>
<translation>Nie można wykonać polecenia</translation>
</message>
<message>
- <location line="-139"/>
+ <location line="-147"/>
<source>Unable to fetch results</source>
<translation>Nie można pobrać wyników</translation>
</message>
@@ -4514,7 +4529,7 @@ Proszę wybrać inną nazwę pliku.</translation>
<context>
<name>QSQLiteDriver</name>
<message>
- <location filename="../src/sql/drivers/sqlite/qsql_sqlite.cpp" line="+509"/>
+ <location filename="../src/sql/drivers/sqlite/qsql_sqlite.cpp" line="+539"/>
<source>Error closing database</source>
<translation>BÅ‚Ä…d zamykania bazy danych</translation>
</message>
@@ -4577,12 +4592,12 @@ Proszę wybrać inną nazwę pliku.</translation>
<context>
<name>QScrollBar</name>
<message>
- <location filename="../src/gui/widgets/qscrollbar.cpp" line="+424"/>
+ <location filename="../src/gui/widgets/qscrollbar.cpp" line="+451"/>
<source>Bottom</source>
<translation>W dół</translation>
</message>
<message>
- <location line="-2"/>
+ <location line="-1"/>
<source>Left edge</source>
<translation>Lewa krawędź</translation>
</message>
@@ -4597,23 +4612,23 @@ Proszę wybrać inną nazwę pliku.</translation>
<translation>Linia w górę</translation>
</message>
<message>
- <location filename="../src/gui/widgets/qscrollbar.cpp" line="+7"/>
+ <location filename="../src/gui/widgets/qscrollbar.cpp" line="+4"/>
<location filename="../src/plugins/accessible/widgets/rangecontrols.cpp" line="+6"/>
<source>Page down</source>
<translation>Strona w dół</translation>
</message>
<message>
- <location line="-2"/>
+ <location line="-1"/>
<source>Page left</source>
<translation>Strona w lewo</translation>
</message>
<message>
- <location line="+2"/>
+ <location line="+1"/>
<source>Page right</source>
<translation>Strona w prawo</translation>
</message>
<message>
- <location line="-2"/>
+ <location line="-1"/>
<location filename="../src/plugins/accessible/widgets/rangecontrols.cpp" line="-4"/>
<source>Page up</source>
<translation>Strona do góry</translation>
@@ -4624,37 +4639,37 @@ Proszę wybrać inną nazwę pliku.</translation>
<translation>Pozycja</translation>
</message>
<message>
- <location filename="../src/gui/widgets/qscrollbar.cpp" line="-3"/>
+ <location filename="../src/gui/widgets/qscrollbar.cpp" line="-2"/>
<source>Right edge</source>
<translation>Prawa krawędź</translation>
</message>
<message>
- <location line="+10"/>
+ <location line="+6"/>
<source>Scroll down</source>
<translation>Przewiń w dół</translation>
</message>
<message>
- <location line="-15"/>
+ <location line="-9"/>
<source>Scroll here</source>
<translation>Przewiń tutaj</translation>
</message>
<message>
- <location line="+13"/>
+ <location line="+8"/>
<source>Scroll left</source>
<translation>Przewiń w lewo</translation>
</message>
<message>
- <location line="+2"/>
+ <location line="+1"/>
<source>Scroll right</source>
<translation>Przewiń w prawo</translation>
</message>
<message>
- <location line="-2"/>
+ <location line="-1"/>
<source>Scroll up</source>
<translation>Przewiń do góry</translation>
</message>
<message>
- <location line="-10"/>
+ <location line="-6"/>
<source>Top</source>
<translation>Do góry</translation>
</message>
@@ -4662,13 +4677,13 @@ Proszę wybrać inną nazwę pliku.</translation>
<context>
<name>QSharedMemory</name>
<message>
- <location filename="../src/corelib/kernel/qsharedmemory.cpp" line="+258"/>
+ <location filename="../src/corelib/kernel/qsharedmemory.cpp" line="+288"/>
<source>%1: create size is less then 0</source>
<translation>%1: rozmiar przy tworzeniu mniejszy od 0</translation>
</message>
<message>
<location line="+168"/>
- <location filename="../src/corelib/kernel/qsharedmemory_p.h" line="+118"/>
+ <location filename="../src/corelib/kernel/qsharedmemory_p.h" line="+148"/>
<source>%1: unable to lock</source>
<translation>%1: nie można zablokować</translation>
</message>
@@ -4678,8 +4693,8 @@ Proszę wybrać inną nazwę pliku.</translation>
<translation>%1: nie można odblokować</translation>
</message>
<message>
- <location filename="../src/corelib/kernel/qsharedmemory_unix.cpp" line="+48"/>
- <location filename="../src/corelib/kernel/qsharedmemory_win.cpp" line="+57"/>
+ <location filename="../src/corelib/kernel/qsharedmemory_unix.cpp" line="+78"/>
+ <location filename="../src/corelib/kernel/qsharedmemory_win.cpp" line="+87"/>
<source>%1: permission denied</source>
<translation>%1: brak dostępu</translation>
</message>
@@ -4762,7 +4777,7 @@ Proszę wybrać inną nazwę pliku.</translation>
<context>
<name>QShortcut</name>
<message>
- <location filename="../src/gui/kernel/qkeysequence.cpp" line="+1061"/>
+ <location filename="../src/gui/kernel/qkeysequence.cpp" line="+1091"/>
<source>+</source>
<translation>+</translation>
</message>
@@ -5343,7 +5358,7 @@ Proszę wybrać inną nazwę pliku.</translation>
<context>
<name>QSql</name>
<message>
- <location filename="../src/qt3support/sql/q3sqlmanager_p.cpp" line="+880"/>
+ <location filename="../src/qt3support/sql/q3sqlmanager_p.cpp" line="+910"/>
<source>Cancel</source>
<translation>Anuluj</translation>
</message>
@@ -5400,7 +5415,7 @@ Proszę wybrać inną nazwę pliku.</translation>
<context>
<name>QSslSocket</name>
<message>
- <location filename="../src/network/ssl/qsslsocket_openssl.cpp" line="+539"/>
+ <location filename="../src/network/ssl/qsslsocket_openssl.cpp" line="+569"/>
<source>Unable to write data: %1</source>
<translation>Nie można zapisać danych: %1</translation>
</message>
@@ -5459,7 +5474,7 @@ Proszę wybrać inną nazwę pliku.</translation>
<name>QSystemSemaphore</name>
<message>
<location filename="../src/corelib/kernel/qsystemsemaphore_unix.cpp" line="-41"/>
- <location filename="../src/corelib/kernel/qsystemsemaphore_win.cpp" line="+36"/>
+ <location filename="../src/corelib/kernel/qsystemsemaphore_win.cpp" line="+66"/>
<source>%1: out of resources</source>
<translation>%1: zasoby wyczerpane</translation>
</message>
@@ -5489,7 +5504,7 @@ Proszę wybrać inną nazwę pliku.</translation>
<context>
<name>QTDSDriver</name>
<message>
- <location filename="../src/sql/drivers/tds/qsql_tds.cpp" line="+552"/>
+ <location filename="../src/sql/drivers/tds/qsql_tds.cpp" line="+584"/>
<source>Unable to open connection</source>
<translation>Nie można otworzyć połączenia</translation>
</message>
@@ -5515,7 +5530,7 @@ Proszę wybrać inną nazwę pliku.</translation>
<context>
<name>QTcpServer</name>
<message>
- <location filename="../src/network/socket/qtcpserver.cpp" line="+252"/>
+ <location filename="../src/network/socket/qtcpserver.cpp" line="+282"/>
<source>Operation on socket is not supported</source>
<translation>Operacja na gnieździe nieobsługiwana</translation>
</message>
@@ -5523,7 +5538,7 @@ Proszę wybrać inną nazwę pliku.</translation>
<context>
<name>QTextControl</name>
<message>
- <location filename="../src/gui/text/qtextcontrol.cpp" line="+1953"/>
+ <location filename="../src/gui/text/qtextcontrol.cpp" line="+1984"/>
<source>&amp;Copy</source>
<translation>S&amp;kopiuj</translation>
</message>
@@ -5581,7 +5596,7 @@ Proszę wybrać inną nazwę pliku.</translation>
<context>
<name>QUdpSocket</name>
<message>
- <location filename="../src/network/socket/qudpsocket.cpp" line="+139"/>
+ <location filename="../src/network/socket/qudpsocket.cpp" line="+169"/>
<source>This platform does not support IPv6</source>
<translation>Ta platforma nie obsługuje IPv6</translation>
</message>
@@ -5589,7 +5604,7 @@ Proszę wybrać inną nazwę pliku.</translation>
<context>
<name>QUndoGroup</name>
<message>
- <location filename="../src/gui/util/qundogroup.cpp" line="+384"/>
+ <location filename="../src/gui/util/qundogroup.cpp" line="+414"/>
<source>Redo</source>
<translation>Przywróć</translation>
</message>
@@ -5602,7 +5617,7 @@ Proszę wybrać inną nazwę pliku.</translation>
<context>
<name>QUndoModel</name>
<message>
- <location filename="../src/gui/util/qundoview.cpp" line="+71"/>
+ <location filename="../src/gui/util/qundoview.cpp" line="+101"/>
<source>&lt;empty&gt;</source>
<translation>&lt;pusty&gt;</translation>
</message>
@@ -5610,7 +5625,7 @@ Proszę wybrać inną nazwę pliku.</translation>
<context>
<name>QUndoStack</name>
<message>
- <location filename="../src/gui/util/qundostack.cpp" line="+831"/>
+ <location filename="../src/gui/util/qundostack.cpp" line="+861"/>
<source>Redo</source>
<translation>Przywróć</translation>
</message>
@@ -5681,7 +5696,7 @@ Proszę wybrać inną nazwę pliku.</translation>
<context>
<name>QWebFrame</name>
<message>
- <location filename="../src/3rdparty/webkit/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp" line="+686"/>
+ <location filename="../src/3rdparty/webkit/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp" line="+692"/>
<source>Request cancelled</source>
<translation>Prośba anulowana</translation>
</message>
@@ -6093,7 +6108,7 @@ Proszę wybrać inną nazwę pliku.</translation>
</translation>
</message>
<message>
- <location filename="../src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp" line="+1342"/>
+ <location filename="../src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp" line="+1322"/>
<source>JavaScript Alert - %1</source>
<translation type="unfinished"></translation>
</message>
@@ -6169,6 +6184,11 @@ Proszę wybrać inną nazwę pliku.</translation>
</message>
<message>
<location line="+3"/>
+ <source>Select all</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
<source>Select to the next character</source>
<translation type="unfinished"></translation>
</message>
@@ -6237,11 +6257,21 @@ Proszę wybrać inną nazwę pliku.</translation>
<source>Delete to the end of the word</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <location line="+33"/>
+ <source>Insert a new paragraph</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Insert a new line</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>QWhatsThisAction</name>
<message>
- <location filename="../src/gui/kernel/qwhatsthis.cpp" line="+492"/>
+ <location filename="../src/gui/kernel/qwhatsthis.cpp" line="+522"/>
<source>What&apos;s This?</source>
<translation>Co to jest?</translation>
</message>
@@ -6249,7 +6279,7 @@ Proszę wybrać inną nazwę pliku.</translation>
<context>
<name>QWidget</name>
<message>
- <location filename="../src/gui/kernel/qwidget.cpp" line="+5290"/>
+ <location filename="../src/gui/kernel/qwidget.cpp" line="+5326"/>
<source>*</source>
<translation>*</translation>
</message>
@@ -6257,7 +6287,7 @@ Proszę wybrać inną nazwę pliku.</translation>
<context>
<name>QWizard</name>
<message>
- <location filename="../src/gui/dialogs/qwizard.cpp" line="+605"/>
+ <location filename="../src/gui/dialogs/qwizard.cpp" line="+637"/>
<source>Go Back</source>
<translation>Wróć</translation>
</message>
@@ -6319,7 +6349,7 @@ Proszę wybrać inną nazwę pliku.</translation>
<context>
<name>QWorkspace</name>
<message>
- <location filename="../src/gui/widgets/qworkspace.cpp" line="+1862"/>
+ <location filename="../src/gui/widgets/qworkspace.cpp" line="+1892"/>
<location line="+60"/>
<source>%1 - [%2]</source>
<translation>%1 - [%2]</translation>
@@ -6389,7 +6419,7 @@ Proszę wybrać inną nazwę pliku.</translation>
<context>
<name>QXml</name>
<message>
- <location filename="../src/xml/sax/qxml.cpp" line="+39"/>
+ <location filename="../src/xml/sax/qxml.cpp" line="+69"/>
<source>encoding declaration or standalone declaration expected while reading the XML declaration</source>
<translation>oczekiwano deklaracji &quot;encoding&quot; lub &quot;standalone&quot; podczas odczytywania deklaracji XML</translation>
</message>
@@ -6507,8 +6537,8 @@ Proszę wybrać inną nazwę pliku.</translation>
<context>
<name>QXmlStream</name>
<message>
- <location filename="../src/corelib/xml/qxmlstream.cpp" line="+562"/>
- <location filename="../src/corelib/xml/qxmlstream_p.h" line="+1739"/>
+ <location filename="../src/corelib/xml/qxmlstream.cpp" line="+592"/>
+ <location filename="../src/corelib/xml/qxmlstream_p.h" line="+1769"/>
<source>Extra content at end of document.</source>
<translation>Dodatkowa treść na końcu dokumentu.</translation>
</message>
@@ -6692,12 +6722,12 @@ Proszę wybrać inną nazwę pliku.</translation>
<context>
<name>QtXmlPatterns</name>
<message>
- <location filename="../src/xmlpatterns/api/qiodevicedelegate.cpp" line="+54"/>
+ <location filename="../src/xmlpatterns/api/qiodevicedelegate.cpp" line="+84"/>
<source>Network timeout.</source>
<translation>Przekroczony czas połączenia.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/api/qxmlserializer.cpp" line="+290"/>
+ <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>Element %1 nie może być zserializowany ponieważ pojawił się poza elementem &quot;document&quot;.</translation>
</message>
@@ -6707,7 +6737,7 @@ Proszę wybrać inną nazwę pliku.</translation>
<translation>Atrybut %1 nie może być zserializowany ponieważ pojawił się na najwyższym poziomie.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qabstractdatetime.cpp" line="+50"/>
+ <location filename="../src/xmlpatterns/data/qabstractdatetime.cpp" line="+80"/>
<source>Year %1 is invalid because it begins with %2.</source>
<translation>Rok %1 jest niepoprawny ponieważ rozpoczyna się: %2.</translation>
</message>
@@ -6747,7 +6777,7 @@ Proszę wybrać inną nazwę pliku.</translation>
<translation>Przepełnienie: Data nie może być wyrażona.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qabstractduration.cpp" line="+69"/>
+ <location filename="../src/xmlpatterns/data/qabstractduration.cpp" line="+99"/>
<location line="+15"/>
<source>At least one component must be present.</source>
<translation>Przynajmniej jeden komponent musi być obecny.</translation>
@@ -6758,22 +6788,22 @@ Proszę wybrać inną nazwę pliku.</translation>
<translation>Przynajmniej jeden komponent musi wystąpić po nawiasie %1.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qabstractfloatmathematician.cpp" line="+34"/>
+ <location filename="../src/xmlpatterns/data/qabstractfloatmathematician.cpp" line="+64"/>
<source>No operand in an integer division, %1, can be %2.</source>
<translation>Żaden składnik dzielenia %1 nie może być %2.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qanyuri_p.h" line="+102"/>
+ <location filename="../src/xmlpatterns/data/qanyuri_p.h" line="+132"/>
<source>%1 is not a valid value of type %2.</source>
<translation>%1 nie jest poprawną wartością dla typu %2.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qatomiccasters_p.h" line="+193"/>
+ <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>W rzutowaniu %1 na %2 wartość źródłowa nie może być %3.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qatomicmathematicians.cpp" line="+171"/>
+ <location filename="../src/xmlpatterns/data/qatomicmathematicians.cpp" line="+201"/>
<location line="+32"/>
<source>Dividing a value of type %1 by %2 (not-a-number) is not allowed.</source>
<translation>Dzielenie wartości typu %1 przez %2 (typ nienumeryczny) jest niedozwolone.</translation>
@@ -6789,17 +6819,17 @@ Proszę wybrać inną nazwę pliku.</translation>
<translation>Mnożenie wartości typu %1 przez %2 lub %3 (plus lub minus nieskończoność) jest niedozwolone.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qatomicvalue.cpp" line="+49"/>
+ <location filename="../src/xmlpatterns/data/qatomicvalue.cpp" line="+79"/>
<source>A value of type %1 cannot have an Effective Boolean Value.</source>
<translation>Wartość typu %1 nie może posiadać efektywnej wartości boolowskiej (EBV).</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qboolean.cpp" line="+48"/>
+ <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>Efektywna wartość boolowska (EBV) nie może być obliczona dla sekwencji zawierającej dwie lub więcej wartości atomowe.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qderivedinteger_p.h" line="+372"/>
+ <location filename="../src/xmlpatterns/data/qderivedinteger_p.h" line="+402"/>
<source>Value %1 of type %2 exceeds maximum (%3).</source>
<translation>Wartość %1 typu %2 przekracza maksimum (%3).</translation>
</message>
@@ -6809,7 +6839,7 @@ Proszę wybrać inną nazwę pliku.</translation>
<translation>Wartość %1 typu %2 jest poniżej minimum (%3).</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qhexbinary.cpp" line="+61"/>
+ <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>Wartość typu %1 musi zawierać parzystą liczbę cyfr. Wartość %2 nie zawiera.</translation>
</message>
@@ -6819,7 +6849,7 @@ Proszę wybrać inną nazwę pliku.</translation>
<translation>Wartość %1 nie jest poprawna jako wartość typu %2.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qarithmeticexpression.cpp" line="+177"/>
+ <location filename="../src/xmlpatterns/expr/qarithmeticexpression.cpp" line="+207"/>
<source>Operator %1 cannot be used on type %2.</source>
<translation>Operator %1 nie może być użyty dla typu %2.</translation>
</message>
@@ -6829,7 +6859,7 @@ Proszę wybrać inną nazwę pliku.</translation>
<translation>Operator %1 nie może być użyty dla atomowych wartości typu %2 i %3.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qattributenamevalidator.cpp" line="+36"/>
+ <location filename="../src/xmlpatterns/expr/qattributenamevalidator.cpp" line="+66"/>
<source>The namespace URI in the name for a computed attribute cannot be %1.</source>
<translation>Przestrzeń nazw URI nie może być %1 w nazwie dla obliczonego atrybutu.</translation>
</message>
@@ -6839,7 +6869,7 @@ Proszę wybrać inną nazwę pliku.</translation>
<translation>Nazwa dla wyliczonego atrybutu nie może mieć przestrzeni nazw URI %1 z lokalną nazwą %2.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qcastas.cpp" line="+58"/>
+ <location filename="../src/xmlpatterns/expr/qcastas.cpp" line="+88"/>
<source>Type error in cast, expected %1, received %2.</source>
<translation>Błąd typów w rzutowaniu: spodziewano się %1, otrzymano %2.</translation>
</message>
@@ -6849,7 +6879,7 @@ Proszę wybrać inną nazwę pliku.</translation>
<translation>Podczas rzutowania na %1 lub na typ pochodny, wartość źródłowa musi być tego samego typu lub musi być zapisem tekstowym. Typ %2 nie jest dozwolony.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qcastingplatform.cpp" line="+119"/>
+ <location filename="../src/xmlpatterns/expr/qcastingplatform.cpp" line="+149"/>
<source>It is not possible to cast from %1 to %2.</source>
<translation>Nie można zrzutować %1 na %2.</translation>
</message>
@@ -6869,7 +6899,7 @@ Proszę wybrać inną nazwę pliku.</translation>
<translation>BÅ‚Ä…d podczas rzutowania %1 na %2: %3</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qcommentconstructor.cpp" line="+37"/>
+ <location filename="../src/xmlpatterns/expr/qcommentconstructor.cpp" line="+67"/>
<source>A comment cannot contain %1</source>
<translation>Komentarz nie może zawierać %1</translation>
</message>
@@ -6879,7 +6909,7 @@ Proszę wybrać inną nazwę pliku.</translation>
<translation>Komentarz nie może kończyć się: %1.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qcomparisonplatform.cpp" line="+137"/>
+ <location filename="../src/xmlpatterns/expr/qcomparisonplatform.cpp" line="+167"/>
<source>No comparisons can be done involving the type %1.</source>
<translation>Żadne porównania nie mogą być wykonane dla typu %1.</translation>
</message>
@@ -6889,12 +6919,12 @@ Proszę wybrać inną nazwę pliku.</translation>
<translation>Operator %1 jest niedostępny pomiędzy atomowymi wartościami %2 i %3.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qdocumentcontentvalidator.cpp" line="+56"/>
+ <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>Węzeł &quot;attribute&quot; nie może być dzieckiem węzła &quot;document&quot;. Dlatego atrybut %1 jest w złym miejscu.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qexpressionfactory.cpp" line="+139"/>
+ <location filename="../src/xmlpatterns/expr/qexpressionfactory.cpp" line="+169"/>
<source>A library module cannot be evaluated directly. It must be imported from a main module.</source>
<translation>Moduł biblioteki nie może być bezpośrednio oceniony. On musi być zaimportowany z głównego modułu.</translation>
</message>
@@ -6904,7 +6934,7 @@ Proszę wybrać inną nazwę pliku.</translation>
<translation>Szablon o nazwie %1 nie istnieje.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qgenericpredicate.cpp" line="+76"/>
+ <location filename="../src/xmlpatterns/expr/qgenericpredicate.cpp" line="+106"/>
<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>Wartość typu %1 nie może być predykatem. Predykat musi być typu liczbowego lub Efektywną Wartość Logiczną.</translation>
</message>
@@ -6914,38 +6944,38 @@ Proszę wybrać inną nazwę pliku.</translation>
<translation>Wynikiem predykatu pozycyjnego musi być pojedyńcza wartość liczbowa.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qncnameconstructor_p.h" line="+107"/>
+ <location filename="../src/xmlpatterns/expr/qncnameconstructor_p.h" line="+137"/>
<source>%1 is not a valid target name in a processing instruction. It must be a %2 value, e.g. %3.</source>
<translation>%1 nie jest poprawną nazwą docelową w instrukcji przetwarzania. Nazwa musi być wartością %2, np. %3.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qpath.cpp" line="+79"/>
+ <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>Ostatni krok w ścieżce musi zawierać albo wezły albo wartości atomowe. Nie może zawierać obu jednocześnie.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qprocessinginstructionconstructor.cpp" line="+54"/>
+ <location filename="../src/xmlpatterns/expr/qprocessinginstructionconstructor.cpp" line="+84"/>
<source>The data of a processing instruction cannot contain the string %1</source>
<translation>Dane instrukcji przetwarzania nie mogą zawierać ciągu %1</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qqnameconstructor.cpp" line="+52"/>
+ <location filename="../src/xmlpatterns/expr/qqnameconstructor.cpp" line="+82"/>
<source>No namespace binding exists for the prefix %1</source>
<translation>Żadna przestrzeń nazw nie jest powiązana z przedrostkiem %1</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qqnameconstructor_p.h" line="+126"/>
+ <location filename="../src/xmlpatterns/expr/qqnameconstructor_p.h" line="+156"/>
<source>No namespace binding exists for the prefix %1 in %2</source>
<translation>Żadna przestrzeń nazw nie jest powiązana z przedrostkiem %1 w %2</translation>
</message>
<message>
<location line="+12"/>
- <location filename="../src/xmlpatterns/functions/qqnamefns.cpp" line="+39"/>
+ <location filename="../src/xmlpatterns/functions/qqnamefns.cpp" line="+69"/>
<source>%1 is an invalid %2</source>
<translation>%1 jest niepoprawnym %2</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qaggregatefns.cpp" line="+90"/>
+ <location filename="../src/xmlpatterns/functions/qaggregatefns.cpp" line="+120"/>
<source>The first argument to %1 cannot be of type %2. It must be a numeric type, xs:yearMonthDuration or xs:dayTimeDuration.</source>
<translation>Pierwszy argument w %1 nie może być typu %2. Musi on być typu liczbowego: xs:yearMonthDuration lub xs:dayTimeDuration.</translation>
</message>
@@ -6960,27 +6990,27 @@ Proszę wybrać inną nazwę pliku.</translation>
<translation>Drugi argument w %1 nie może być typu %2. Musi on być typu: %3, %4 lub %5.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qassemblestringfns.cpp" line="+58"/>
+ <location filename="../src/xmlpatterns/functions/qassemblestringfns.cpp" line="+88"/>
<source>%1 is not a valid XML 1.0 character.</source>
<translation>%1 nie jest poprawnym znakiem XML 1.0.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qcomparingaggregator.cpp" line="+167"/>
+ <location filename="../src/xmlpatterns/functions/qcomparingaggregator.cpp" line="+197"/>
<source>The first argument to %1 cannot be of type %2.</source>
<translation>Pierwszy argument dla %1 nie może być typu %2.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qdatetimefn.cpp" line="+56"/>
+ <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>Jeśli oba argumenty mają przesunięcia strefowe, muszą one być takie same. %1 i %2 nie są takie same.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qerrorfn.cpp" line="+31"/>
+ <location filename="../src/xmlpatterns/functions/qerrorfn.cpp" line="+61"/>
<source>%1 was called.</source>
<translation>Wywołano %1.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qpatternmatchingfns.cpp" line="+64"/>
+ <location filename="../src/xmlpatterns/functions/qpatternmatchingfns.cpp" line="+94"/>
<source>%1 must be followed by %2 or %3, not at the end of the replacement string.</source>
<translation>Po %1 musi następowac %2 lub %3, lecz nie na końcu zastępczego ciągu.</translation>
</message>
@@ -6995,7 +7025,7 @@ Proszę wybrać inną nazwę pliku.</translation>
<translation>W zastępczym ciągu %1 może być użyte tylko do zabezpieczenia samej siebie lub %2, nigdy %3</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qpatternplatform.cpp" line="+62"/>
+ <location filename="../src/xmlpatterns/functions/qpatternplatform.cpp" line="+92"/>
<source>%1 matches newline characters</source>
<translation>%1 dopasowało znak nowej linii</translation>
</message>
@@ -7030,12 +7060,12 @@ Proszę wybrać inną nazwę pliku.</translation>
<translation>Jeśli pierwszy argument jest pustą sekwencją lub zerowej długości ciągiem (przy braku przestrzeni nazw), przedrostek nie może wystąpić. Wystąpił przedrostek %1.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qsequencefns.cpp" line="+317"/>
+ <location filename="../src/xmlpatterns/functions/qsequencefns.cpp" line="+347"/>
<source>It will not be possible to retrieve %1.</source>
<translation>Nie będzie można odzyskać %1.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qsequencegeneratingfns.cpp" line="+249"/>
+ <location filename="../src/xmlpatterns/functions/qsequencegeneratingfns.cpp" line="+279"/>
<source>The default collection is undefined</source>
<translation>Domyślna kolekcja jest niezdefiniowana</translation>
</message>
@@ -7045,27 +7075,27 @@ Proszę wybrać inną nazwę pliku.</translation>
<translation>%1 nie może być odzyskane</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qstringvaluefns.cpp" line="+222"/>
+ <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>Znormalizowana forma %1 nie jest obsługiwana. Obsługiwanymi formami są: %2, %3, %4 i %5 oraz pusta forma (brak normalizacji).</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qtimezonefns.cpp" line="+57"/>
+ <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>Przesunięcie strefowe musi być w zakresie %1..%2 włącznie. %3 jest poza tym zakresem.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/janitors/qcardinalityverifier.cpp" line="+28"/>
+ <location filename="../src/xmlpatterns/janitors/qcardinalityverifier.cpp" line="+58"/>
<source>Required cardinality is %1; got cardinality %2.</source>
<translation>Wymagana liczność wynosi %1; otrzymano %2.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/janitors/qitemverifier.cpp" line="+37"/>
+ <location filename="../src/xmlpatterns/janitors/qitemverifier.cpp" line="+67"/>
<source>The item %1 did not match the required type %2.</source>
<translation>Element %1 nie został dopasowany do wymaganego typu %2.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="+319"/>
+ <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="+379"/>
<location line="+7253"/>
<source>%1 is an unknown schema type.</source>
<translation>%1 jest nieznanym typem schematu.</translation>
@@ -7081,7 +7111,7 @@ Proszę wybrać inną nazwę pliku.</translation>
<translation>Inicjalizacja zmiennej %1 zależy od niej samej</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/parser/qparsercontext.cpp" line="+63"/>
+ <location filename="../src/xmlpatterns/parser/qparsercontext.cpp" line="+93"/>
<source>The variable %1 is unused</source>
<translation>Zmienna %1 jest nieużywana</translation>
</message>
@@ -7355,7 +7385,7 @@ Proszę wybrać inną nazwę pliku.</translation>
<translation>Nazwa dodatkowego wyrażenia musi znajdować sie w przestrzeni nazw.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/type/qcardinality.cpp" line="+25"/>
+ <location filename="../src/xmlpatterns/type/qcardinality.cpp" line="+55"/>
<source>empty</source>
<translation>pusty</translation>
</message>
@@ -7380,7 +7410,7 @@ Proszę wybrać inną nazwę pliku.</translation>
<translation>zero lub więcej</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/type/qtypechecker.cpp" line="+33"/>
+ <location filename="../src/xmlpatterns/type/qtypechecker.cpp" line="+63"/>
<source>Required type is %1, but %2 was found.</source>
<translation>Odnaleziono typ %2, lecz wymaganym typem jest %1.</translation>
</message>
@@ -7395,7 +7425,7 @@ Proszę wybrać inną nazwę pliku.</translation>
<translation>Focus jest niezdefiniowany.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/utils/qoutputvalidator.cpp" line="+56"/>
+ <location filename="../src/xmlpatterns/utils/qoutputvalidator.cpp" line="+86"/>
<source>It&apos;s not possible to add attributes after any other kind of node.</source>
<translation>Dodanie atrybutu poza węzłami nie jest możliwe.</translation>
</message>
@@ -7405,12 +7435,12 @@ Proszę wybrać inną nazwę pliku.</translation>
<translation>Atrybut o nazwie %1 został już utworzony.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/utils/qxpathhelper_p.h" line="+90"/>
+ <location filename="../src/xmlpatterns/utils/qxpathhelper_p.h" line="+120"/>
<source>Only the Unicode Codepoint Collation is supported(%1). %2 is unsupported.</source>
<translation>Obsługiwane jest jedynie &quot;Unicode Codepoint Collation&quot; (%1), %2 nie jest obsługiwane.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/acceltree/qacceltreebuilder.cpp" line="+175"/>
+ <location filename="../src/xmlpatterns/acceltree/qacceltreebuilder.cpp" line="+205"/>
<source>An %1-attribute with value %2 has already been declared.</source>
<translation>Atrybut %1 o wartości %2 został już zadeklarowany.</translation>
</message>
@@ -7455,7 +7485,7 @@ Proszę wybrać inną nazwę pliku.</translation>
<translation>Docelowa nazwa w instrukcji przetwarzania nie może być %1 w żadnej kombinacji wielkich i małych liter. Dlatego nazwa %2 jest niepoprawna.</translation>
</message>
<message numerus="yes">
- <location filename="../src/xmlpatterns/functions/qabstractfunctionfactory.cpp" line="+47"/>
+ <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 przyjmuje co najwyżej %n argument. %2 jest dlatego niepoprawne.</numerusform>
@@ -7473,7 +7503,7 @@ Proszę wybrać inną nazwę pliku.</translation>
</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qcontextnodechecker.cpp" line="+24"/>
+ <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>Głównym węzłem drugiego argumentu w funkcji %1 musi być węzeł &quot;document&quot;. %2 nie jest węzłem &quot;document&quot;.</translation>
</message>
@@ -7504,7 +7534,7 @@ Proszę wybrać inną nazwę pliku.</translation>
<translation>Importy modułów muszą pojawić się przed deklaracjami funkcji, zmiennych i opcji.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/acceltree/qacceltreeresourceloader.cpp" line="+284"/>
+ <location filename="../src/xmlpatterns/acceltree/qacceltreeresourceloader.cpp" line="+314"/>
<source>%1 is an unsupported encoding.</source>
<translation>Nieobsługiwane kodowanie %1.</translation>
</message>
@@ -7519,14 +7549,18 @@ Proszę wybrać inną nazwę pliku.</translation>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qapplytemplate.cpp" line="+89"/>
+ <location filename="../src/xmlpatterns/expr/qapplytemplate.cpp" line="+119"/>
<source>Ambiguous rule match.</source>
<translation>Dopasowano niejednoznaczną regułę.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qcomputednamespaceconstructor.cpp" line="+39"/>
<source>In a namespace constructor, the value for a namespace value cannot be an empty string.</source>
- <translation>W konstruktorze przestrzeni nazw wartość przestrzeni nazw nie może być pustym ciągiem.</translation>
+ <translation type="obsolete">W konstruktorze przestrzeni nazw wartość przestrzeni nazw nie może być pustym ciągiem.</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 type="unfinished"></translation>
</message>
<message>
<location line="+11"/>
@@ -7544,12 +7578,12 @@ Proszę wybrać inną nazwę pliku.</translation>
<translation>Tylko przedrostek %1 może być powiązany z %2 i vice versa.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qevaluationcache.cpp" line="+87"/>
+ <location filename="../src/xmlpatterns/expr/qevaluationcache.cpp" line="+117"/>
<source>Circularity detected</source>
<translation>Wykryto cykl</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qtemplate.cpp" line="+115"/>
+ <location filename="../src/xmlpatterns/expr/qtemplate.cpp" line="+145"/>
<source>The parameter %1 is required, but no corresponding %2 is supplied.</source>
<translation>Wymagany jest parametr %1 lecz żaden odpowiadający mu %2 nie został dostarczony.</translation>
</message>
@@ -7559,12 +7593,12 @@ Proszę wybrać inną nazwę pliku.</translation>
<translation>Przekazany jest parametr %1 lecz żaden odpowiadający mu %2 nie istnieje.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qunparsedtextfn.cpp" line="+35"/>
+ <location filename="../src/xmlpatterns/functions/qunparsedtextfn.cpp" line="+65"/>
<source>The URI cannot have a fragment</source>
<translation>URI nie może posiadać fragmentu</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/parser/qxslttokenizer.cpp" line="+489"/>
+ <location filename="../src/xmlpatterns/parser/qxslttokenizer.cpp" line="+519"/>
<source>Element %1 is not allowed at this location.</source>
<translation>Element %1 jest niedozwolony w tym miejscu.</translation>
</message>
@@ -7619,7 +7653,7 @@ Proszę wybrać inną nazwę pliku.</translation>
<translation>Przynajmniej jeden tryb musi być określony w atrybucie %1 elementu %2.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/parser/qmaintainingreader.cpp" line="+153"/>
+ <location filename="../src/xmlpatterns/parser/qmaintainingreader.cpp" line="+183"/>
<source>Attribute %1 cannot appear on the element %2. Only the standard attributes can appear.</source>
<translation>W elemencie %2 nie może wystąpić atrybut %1. Wystąpić mogą jedynie standardowe atrybuty.</translation>
</message>
@@ -7694,7 +7728,7 @@ Proszę wybrać inną nazwę pliku.</translation>
<translation>Element %1 nie może posiadać potomków.</translation>
</message>
<message>
- <location line="+432"/>
+ <location line="+434"/>
<source>Element %1 cannot have a sequence constructor.</source>
<translation>Element %1 nie może posiadać sekwencyjnego konstruktora.</translation>
</message>
diff --git a/translations/qt_pt.ts b/translations/qt_pt.ts
index c04456a..b00aaa0 100644
--- a/translations/qt_pt.ts
+++ b/translations/qt_pt.ts
@@ -4,7 +4,7 @@
<context>
<name>AudioOutput</name>
<message>
- <location filename="../src/3rdparty/phonon/phonon/audiooutput.cpp" line="+374"/>
+ <location filename="../src/3rdparty/phonon/phonon/audiooutput.cpp" line="+375"/>
<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="unfinished"></translation>
</message>
@@ -22,7 +22,7 @@
<context>
<name>CloseButton</name>
<message>
- <location filename="../src/gui/widgets/qtabbar.cpp" line="+2217"/>
+ <location filename="../src/gui/widgets/qtabbar.cpp" line="+2251"/>
<source>Close Tab</source>
<translation type="unfinished"></translation>
</message>
@@ -89,7 +89,7 @@
<context>
<name>Phonon::Gstreamer::MediaObject</name>
<message>
- <location filename="../src/3rdparty/phonon/gstreamer/mediaobject.cpp" line="+88"/>
+ <location filename="../src/3rdparty/phonon/gstreamer/mediaobject.cpp" line="+90"/>
<source>Cannot start playback.
Check your Gstreamer installation and make sure you
@@ -102,24 +102,24 @@ have libgstreamer-plugins-base installed.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+653"/>
- <location line="+9"/>
+ <location line="+676"/>
+ <location line="+8"/>
<location line="+15"/>
- <location line="+7"/>
- <location line="+5"/>
- <location line="+20"/>
- <location line="+317"/>
+ <location line="+9"/>
+ <location line="+6"/>
+ <location line="+19"/>
+ <location line="+335"/>
<location line="+24"/>
<source>Could not open media source.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-381"/>
+ <location line="-403"/>
<source>Invalid source type.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+355"/>
+ <location line="+377"/>
<source>Could not locate media source.</source>
<translation type="unfinished"></translation>
</message>
@@ -153,7 +153,7 @@ have libgstreamer-plugins-base installed.</source>
<context>
<name>Q3Accel</name>
<message>
- <location filename="../src/qt3support/other/q3accel.cpp" line="+451"/>
+ <location filename="../src/qt3support/other/q3accel.cpp" line="+481"/>
<source>%1, %2 not defined</source>
<translation>%1, %2 indefinido</translation>
</message>
@@ -166,7 +166,7 @@ have libgstreamer-plugins-base installed.</source>
<context>
<name>Q3DataTable</name>
<message>
- <location filename="../src/qt3support/sql/q3datatable.cpp" line="+253"/>
+ <location filename="../src/qt3support/sql/q3datatable.cpp" line="+285"/>
<source>True</source>
<translation>Verdadeiro</translation>
</message>
@@ -194,7 +194,7 @@ have libgstreamer-plugins-base installed.</source>
<context>
<name>Q3FileDialog</name>
<message>
- <location filename="../src/qt3support/dialogs/q3filedialog.cpp" line="+834"/>
+ <location filename="../src/qt3support/dialogs/q3filedialog.cpp" line="+864"/>
<source>Copy or Move a File</source>
<translation>Copiar ou Mover um Ficheiro</translation>
</message>
@@ -219,7 +219,7 @@ have libgstreamer-plugins-base installed.</source>
<location line="-157"/>
<location line="+49"/>
<location line="+2153"/>
- <location filename="../src/qt3support/dialogs/q3filedialog_mac.cpp" line="+80"/>
+ <location filename="../src/qt3support/dialogs/q3filedialog_mac.cpp" line="+110"/>
<source>All Files (*)</source>
<translation>Todos os Ficheiros (*)</translation>
</message>
@@ -359,7 +359,7 @@ have libgstreamer-plugins-base installed.</source>
<message>
<location line="+704"/>
<location line="+2100"/>
- <location filename="../src/qt3support/dialogs/q3filedialog_win.cpp" line="+307"/>
+ <location filename="../src/qt3support/dialogs/q3filedialog_win.cpp" line="+337"/>
<source>Open</source>
<translation>Abrir</translation>
</message>
@@ -527,7 +527,7 @@ Verifique a localização e o nome.</translation>
<context>
<name>Q3LocalFs</name>
<message>
- <location filename="../src/qt3support/network/q3localfs.cpp" line="+100"/>
+ <location filename="../src/qt3support/network/q3localfs.cpp" line="+130"/>
<location line="+10"/>
<source>Could not read directory
%1</source>
@@ -577,7 +577,7 @@ para
<context>
<name>Q3MainWindow</name>
<message>
- <location filename="../src/qt3support/widgets/q3mainwindow.cpp" line="+2021"/>
+ <location filename="../src/qt3support/widgets/q3mainwindow.cpp" line="+2051"/>
<source>Line up</source>
<translation>Alinhar</translation>
</message>
@@ -590,7 +590,7 @@ para
<context>
<name>Q3NetworkProtocol</name>
<message>
- <location filename="../src/qt3support/network/q3networkprotocol.cpp" line="+824"/>
+ <location filename="../src/qt3support/network/q3networkprotocol.cpp" line="+854"/>
<source>Operation stopped by the user</source>
<translation>Operação interrompida pelo utilizador</translation>
</message>
@@ -598,7 +598,7 @@ para
<context>
<name>Q3ProgressDialog</name>
<message>
- <location filename="../src/qt3support/dialogs/q3progressdialog.cpp" line="+194"/>
+ <location filename="../src/qt3support/dialogs/q3progressdialog.cpp" line="+224"/>
<location line="+61"/>
<source>Cancel</source>
<translation>Cancelar</translation>
@@ -607,7 +607,7 @@ para
<context>
<name>Q3TabDialog</name>
<message>
- <location filename="../src/qt3support/dialogs/q3tabdialog.cpp" line="+159"/>
+ <location filename="../src/qt3support/dialogs/q3tabdialog.cpp" line="+189"/>
<location line="+814"/>
<source>OK</source>
<translation>OK</translation>
@@ -636,7 +636,7 @@ para
<context>
<name>Q3TextEdit</name>
<message>
- <location filename="../src/qt3support/text/q3textedit.cpp" line="+5399"/>
+ <location filename="../src/qt3support/text/q3textedit.cpp" line="+5429"/>
<source>&amp;Undo</source>
<translation>&amp;Desfazer</translation>
</message>
@@ -675,7 +675,7 @@ para
<context>
<name>Q3TitleBar</name>
<message>
- <location filename="../src/plugins/accessible/compat/q3complexwidgets.cpp" line="+216"/>
+ <location filename="../src/plugins/accessible/compat/q3complexwidgets.cpp" line="+246"/>
<source>System</source>
<translation>Sistema</translation>
</message>
@@ -743,7 +743,7 @@ para
<context>
<name>Q3ToolBar</name>
<message>
- <location filename="../src/qt3support/widgets/q3toolbar.cpp" line="+662"/>
+ <location filename="../src/qt3support/widgets/q3toolbar.cpp" line="+692"/>
<source>More...</source>
<translation>Mais...</translation>
</message>
@@ -751,7 +751,7 @@ para
<context>
<name>Q3UrlOperator</name>
<message>
- <location filename="../src/qt3support/network/q3urloperator.cpp" line="+356"/>
+ <location filename="../src/qt3support/network/q3urloperator.cpp" line="+386"/>
<location line="+260"/>
<location line="+4"/>
<source>The protocol `%1&apos; is not supported</source>
@@ -803,7 +803,7 @@ para
<context>
<name>Q3Wizard</name>
<message>
- <location filename="../src/qt3support/dialogs/q3wizard.cpp" line="+147"/>
+ <location filename="../src/qt3support/dialogs/q3wizard.cpp" line="+177"/>
<source>&amp;Cancel</source>
<translation>&amp;Cancelar</translation>
</message>
@@ -831,9 +831,9 @@ para
<context>
<name>QAbstractSocket</name>
<message>
- <location filename="../src/network/socket/qabstractsocket.cpp" line="+838"/>
- <location filename="../src/network/socket/qhttpsocketengine.cpp" line="+585"/>
- <location filename="../src/network/socket/qsocks5socketengine.cpp" line="+627"/>
+ <location filename="../src/network/socket/qabstractsocket.cpp" line="+868"/>
+ <location filename="../src/network/socket/qhttpsocketengine.cpp" line="+615"/>
+ <location filename="../src/network/socket/qsocks5socketengine.cpp" line="+657"/>
<location line="+26"/>
<source>Host not found</source>
<translation>Máquina desconhecida</translation>
@@ -876,7 +876,7 @@ para
<context>
<name>QAbstractSpinBox</name>
<message>
- <location filename="../src/gui/widgets/qabstractspinbox.cpp" line="+1169"/>
+ <location filename="../src/gui/widgets/qabstractspinbox.cpp" line="+1199"/>
<source>&amp;Step up</source>
<translation>&amp;Passo acima</translation>
</message>
@@ -894,12 +894,12 @@ para
<context>
<name>QApplication</name>
<message>
- <location filename="../src/gui/accessible/qaccessibleobject.cpp" line="+346"/>
+ <location filename="../src/gui/accessible/qaccessibleobject.cpp" line="+376"/>
<source>Activate</source>
<translation>Activar</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qmessagebox.h" line="+322"/>
+ <location filename="../src/gui/dialogs/qmessagebox.h" line="+352"/>
<source>Executable &apos;%1&apos; requires Qt %2, found Qt %3.</source>
<translation>O executável &apos;%1&apos; requere Qt %2, Qt %3 encontrado.</translation>
</message>
@@ -909,7 +909,7 @@ para
<translation>Erro de Incompatibilidade da Biblioteca Qt</translation>
</message>
<message>
- <location filename="../src/gui/kernel/qapplication.cpp" line="+2212"/>
+ <location filename="../src/gui/kernel/qapplication.cpp" line="+2248"/>
<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>
@@ -946,7 +946,7 @@ para
<context>
<name>QCheckBox</name>
<message>
- <location filename="../src/plugins/accessible/widgets/simplewidgets.cpp" line="+84"/>
+ <location filename="../src/plugins/accessible/widgets/simplewidgets.cpp" line="+114"/>
<source>Uncheck</source>
<translation>Desactivar</translation>
</message>
@@ -964,7 +964,7 @@ para
<context>
<name>QColorDialog</name>
<message>
- <location filename="../src/gui/dialogs/qcolordialog.cpp" line="+1219"/>
+ <location filename="../src/gui/dialogs/qcolordialog.cpp" line="+1253"/>
<source>Hu&amp;e:</source>
<translation>C&amp;or:</translation>
</message>
@@ -1038,13 +1038,13 @@ para
<context>
<name>QComboBox</name>
<message>
- <location filename="../src/plugins/accessible/widgets/complexwidgets.cpp" line="+1741"/>
+ <location filename="../src/plugins/accessible/widgets/complexwidgets.cpp" line="+1771"/>
<location line="+65"/>
<source>Open</source>
<translation>Abrir</translation>
</message>
<message>
- <location filename="../src/gui/itemviews/qitemeditorfactory.cpp" line="+514"/>
+ <location filename="../src/gui/itemviews/qitemeditorfactory.cpp" line="+544"/>
<source>False</source>
<translation type="unfinished">Falso</translation>
</message>
@@ -1062,7 +1062,7 @@ para
<context>
<name>QCoreApplication</name>
<message>
- <location filename="../src/corelib/kernel/qsystemsemaphore_unix.cpp" line="+89"/>
+ <location filename="../src/corelib/kernel/qsystemsemaphore_unix.cpp" line="+119"/>
<source>%1: key is empty</source>
<comment>QSystemSemaphore</comment>
<translation type="unfinished"></translation>
@@ -1083,12 +1083,12 @@ para
<context>
<name>QDB2Driver</name>
<message>
- <location filename="../src/sql/drivers/db2/qsql_db2.cpp" line="+1217"/>
+ <location filename="../src/sql/drivers/db2/qsql_db2.cpp" line="+1276"/>
<source>Unable to connect</source>
<translation>Ligação não possível</translation>
</message>
<message>
- <location line="+263"/>
+ <location line="+303"/>
<source>Unable to commit transaction</source>
<translation>Finalização de transacção não possível</translation>
</message>
@@ -1106,8 +1106,8 @@ para
<context>
<name>QDB2Result</name>
<message>
- <location line="-986"/>
- <location line="+242"/>
+ <location line="-1043"/>
+ <location line="+243"/>
<source>Unable to execute statement</source>
<translation>Execução não possível</translation>
</message>
@@ -1122,7 +1122,7 @@ para
<translation>Ligação de variável não possível</translation>
</message>
<message>
- <location line="+91"/>
+ <location line="+92"/>
<source>Unable to fetch record %1</source>
<translation>Obtenção do registo %1 não possível</translation>
</message>
@@ -1140,7 +1140,7 @@ para
<context>
<name>QDateTimeEdit</name>
<message>
- <location filename="../src/gui/widgets/qdatetimeedit.cpp" line="+2265"/>
+ <location filename="../src/gui/widgets/qdatetimeedit.cpp" line="+2295"/>
<source>AM</source>
<translation>AM</translation>
</message>
@@ -1163,7 +1163,7 @@ para
<context>
<name>QDial</name>
<message>
- <location filename="../src/plugins/accessible/widgets/rangecontrols.cpp" line="+921"/>
+ <location filename="../src/plugins/accessible/widgets/rangecontrols.cpp" line="+951"/>
<source>QDial</source>
<translation type="unfinished"></translation>
</message>
@@ -1181,7 +1181,7 @@ para
<context>
<name>QDialog</name>
<message>
- <location filename="../src/gui/dialogs/qdialog.cpp" line="+567"/>
+ <location filename="../src/gui/dialogs/qdialog.cpp" line="+597"/>
<source>What&apos;s This?</source>
<translation>O Que é Isto?</translation>
</message>
@@ -1194,9 +1194,9 @@ para
<context>
<name>QDialogButtonBox</name>
<message>
- <location filename="../src/gui/dialogs/qmessagebox.cpp" line="+1830"/>
+ <location filename="../src/gui/dialogs/qmessagebox.cpp" line="+1866"/>
<location line="+464"/>
- <location filename="../src/gui/widgets/qdialogbuttonbox.cpp" line="+531"/>
+ <location filename="../src/gui/widgets/qdialogbuttonbox.cpp" line="+561"/>
<source>OK</source>
<translation>OK</translation>
</message>
@@ -1319,7 +1319,7 @@ para
<context>
<name>QDirModel</name>
<message>
- <location filename="../src/gui/itemviews/qdirmodel.cpp" line="+423"/>
+ <location filename="../src/gui/itemviews/qdirmodel.cpp" line="+453"/>
<source>Name</source>
<translation>Nome</translation>
</message>
@@ -1349,7 +1349,7 @@ para
<context>
<name>QDockWidget</name>
<message>
- <location filename="../src/plugins/accessible/widgets/qaccessiblewidgets.cpp" line="+1209"/>
+ <location filename="../src/plugins/accessible/widgets/qaccessiblewidgets.cpp" line="+1239"/>
<source>Close</source>
<translation type="unfinished">Fechar</translation>
</message>
@@ -1380,7 +1380,7 @@ para
<context>
<name>QErrorMessage</name>
<message>
- <location filename="../src/gui/dialogs/qerrormessage.cpp" line="+162"/>
+ <location filename="../src/gui/dialogs/qerrormessage.cpp" line="+192"/>
<source>Debug Message:</source>
<translation>Mensagem Depuração:</translation>
</message>
@@ -1408,13 +1408,18 @@ para
<context>
<name>QFile</name>
<message>
- <location filename="../src/corelib/io/qfile.cpp" line="+678"/>
- <location line="+130"/>
+ <location filename="../src/corelib/io/qfile.cpp" line="+708"/>
+ <location line="+141"/>
<source>Destination file exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+12"/>
+ <location line="-108"/>
+ <source>Cannot remove source file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+120"/>
<source>Cannot open %1 for input</source>
<translation type="unfinished"></translation>
</message>
@@ -1437,37 +1442,37 @@ para
<context>
<name>QFileDialog</name>
<message>
- <location filename="../src/gui/dialogs/qfiledialog.cpp" line="+484"/>
- <location line="+423"/>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="+515"/>
+ <location line="+444"/>
<source>All Files (*)</source>
<translation>Todos os Ficheiros (*)</translation>
</message>
<message>
- <location line="+218"/>
+ <location line="+222"/>
<source>Directories</source>
<translation>Pastas</translation>
</message>
<message>
<location line="-3"/>
<location line="+50"/>
- <location line="+1440"/>
+ <location line="+1471"/>
<location line="+75"/>
<source>&amp;Open</source>
<translation>&amp;Abrir</translation>
</message>
<message>
- <location line="-1565"/>
+ <location line="-1596"/>
<location line="+50"/>
<source>&amp;Save</source>
<translation>&amp;Gravar</translation>
</message>
<message>
- <location line="-705"/>
+ <location line="-730"/>
<source>Open</source>
<translation>Abrir</translation>
</message>
<message>
- <location line="+1469"/>
+ <location line="+1515"/>
<source>%1 already exists.
Do you want to replace it?</source>
<translation>%1 já existe.
@@ -1488,7 +1493,7 @@ Por favor verifique o nome do ficheiro.</translation>
<translation>O Meu Computador</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-1458"/>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-1504"/>
<source>&amp;Rename</source>
<translation>&amp;Mudar o Nome</translation>
</message>
@@ -1534,7 +1539,7 @@ Por favor verifique o nome do ficheiro.</translation>
</message>
<message>
<location filename="../src/gui/dialogs/qfiledialog.cpp" line="+6"/>
- <location line="+623"/>
+ <location line="+648"/>
<source>Directory:</source>
<translation>Pasta:</translation>
</message>
@@ -1547,8 +1552,8 @@ Ficheiro não encontrado.
Por favor verifique o nome do ficheiro</translation>
</message>
<message>
- <location line="+773"/>
- <location line="+851"/>
+ <location line="+794"/>
+ <location line="+862"/>
<source>%1
Directory not found.
Please verify the correct directory name was given.</source>
@@ -1557,7 +1562,7 @@ Pasta não encontrada.
Por favor verifique o nome da pasta.</translation>
</message>
<message>
- <location line="-217"/>
+ <location line="-218"/>
<source>&apos;%1&apos; is write protected.
Do you want to delete it anyway?</source>
<translation>&apos;%1&apos; está protegido contra escrita.
@@ -1574,22 +1579,22 @@ Deseja apagar de qualquer forma?</translation>
<translation>Não foi possível apagar a pasta.</translation>
</message>
<message>
- <location line="+406"/>
+ <location line="+407"/>
<source>Recent Places</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfiledialog_win.cpp" line="+130"/>
+ <location filename="../src/gui/dialogs/qfiledialog_win.cpp" line="+160"/>
<source>All Files (*.*)</source>
<translation>Todos os Ficheiros (*.*)</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-2493"/>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-2550"/>
<source>Save As</source>
<translation>Gravar Como</translation>
</message>
<message>
- <location filename="../src/gui/itemviews/qfileiconprovider.cpp" line="+381"/>
+ <location filename="../src/gui/itemviews/qfileiconprovider.cpp" line="+411"/>
<source>Drive</source>
<translation>Unidade</translation>
</message>
@@ -1621,29 +1626,29 @@ Deseja apagar de qualquer forma?</translation>
<translation type="unfinished">Seguinte</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfiledialog.cpp" line="+1914"/>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="+1970"/>
<source>New Folder</source>
<translation type="unfinished">Nova Pasta</translation>
</message>
<message>
- <location line="-1907"/>
+ <location line="-1963"/>
<source>&amp;New Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+631"/>
+ <location line="+656"/>
<location line="+38"/>
<source>&amp;Choose</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qsidebar.cpp" line="+388"/>
+ <location filename="../src/gui/dialogs/qsidebar.cpp" line="+418"/>
<source>Remove</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-662"/>
- <location line="+627"/>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-687"/>
+ <location line="+652"/>
<source>File &amp;name:</source>
<translation type="unfinished">&amp;Nome do Ficheiro:</translation>
</message>
@@ -1663,7 +1668,7 @@ Deseja apagar de qualquer forma?</translation>
<context>
<name>QFileSystemModel</name>
<message>
- <location filename="../src/gui/dialogs/qfilesystemmodel.cpp" line="+707"/>
+ <location filename="../src/gui/dialogs/qfilesystemmodel.cpp" line="+744"/>
<source>%1 TB</source>
<translation type="unfinished"></translation>
</message>
@@ -1725,7 +1730,7 @@ Deseja apagar de qualquer forma?</translation>
<translation type="unfinished">Data de Modificação</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfilesystemmodel_p.h" line="+204"/>
+ <location filename="../src/gui/dialogs/qfilesystemmodel_p.h" line="+234"/>
<source>My Computer</source>
<translation type="unfinished">O Meu Computador</translation>
</message>
@@ -1738,7 +1743,7 @@ Deseja apagar de qualquer forma?</translation>
<context>
<name>QFontDatabase</name>
<message>
- <location filename="../src/gui/text/qfontdatabase.cpp" line="+60"/>
+ <location filename="../src/gui/text/qfontdatabase.cpp" line="+90"/>
<location line="+1176"/>
<source>Normal</source>
<translation type="unfinished"></translation>
@@ -1955,7 +1960,7 @@ Deseja apagar de qualquer forma?</translation>
<context>
<name>QFontDialog</name>
<message>
- <location filename="../src/gui/dialogs/qfontdialog.cpp" line="+742"/>
+ <location filename="../src/gui/dialogs/qfontdialog.cpp" line="+772"/>
<source>&amp;Font</source>
<translation>&amp;Tipo de Letra</translation>
</message>
@@ -2004,8 +2009,8 @@ Deseja apagar de qualquer forma?</translation>
<context>
<name>QFtp</name>
<message>
- <location filename="../src/network/access/qftp.cpp" line="+796"/>
- <location filename="../src/qt3support/network/q3ftp.cpp" line="+653"/>
+ <location filename="../src/network/access/qftp.cpp" line="+826"/>
+ <location filename="../src/qt3support/network/q3ftp.cpp" line="+683"/>
<source>Not connected</source>
<translation>Desligado</translation>
</message>
@@ -2150,7 +2155,7 @@ Deseja apagar de qualquer forma?</translation>
<context>
<name>QHostInfo</name>
<message>
- <location filename="../src/network/kernel/qhostinfo_p.h" line="+153"/>
+ <location filename="../src/network/kernel/qhostinfo_p.h" line="+183"/>
<source>Unknown error</source>
<translation>Erro desconhecido</translation>
</message>
@@ -2158,11 +2163,11 @@ Deseja apagar de qualquer forma?</translation>
<context>
<name>QHostInfoAgent</name>
<message>
- <location filename="../src/network/kernel/qhostinfo_unix.cpp" line="+148"/>
+ <location filename="../src/network/kernel/qhostinfo_unix.cpp" line="+178"/>
<location line="+9"/>
<location line="+64"/>
<location line="+31"/>
- <location filename="../src/network/kernel/qhostinfo_win.cpp" line="+150"/>
+ <location filename="../src/network/kernel/qhostinfo_win.cpp" line="+180"/>
<location line="+9"/>
<location line="+40"/>
<location line="+27"/>
@@ -2188,26 +2193,26 @@ Deseja apagar de qualquer forma?</translation>
<context>
<name>QHttp</name>
<message>
- <location filename="../src/network/access/qhttp.cpp" line="+335"/>
+ <location filename="../src/network/access/qhttp.cpp" line="+365"/>
<source>HTTPS connection requested but SSL support not compiled in</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+1209"/>
- <location line="+816"/>
- <location filename="../src/qt3support/network/q3http.cpp" line="+1130"/>
+ <location line="+820"/>
+ <location filename="../src/qt3support/network/q3http.cpp" line="+1160"/>
<location line="+567"/>
<source>Unknown error</source>
<translation>Erro desconhecido</translation>
</message>
<message>
- <location line="-564"/>
+ <location line="-568"/>
<location filename="../src/qt3support/network/q3http.cpp" line="-370"/>
<source>Request aborted</source>
<translation>Pedido abortado</translation>
</message>
<message>
- <location line="+575"/>
+ <location line="+579"/>
<location filename="../src/qt3support/network/q3http.cpp" line="+381"/>
<source>No server set to connect to</source>
<translation>Nenhum servidor para ligar</translation>
@@ -2225,18 +2230,23 @@ Deseja apagar de qualquer forma?</translation>
<translation>O servidor fechou a ligação inesperadamente</translation>
</message>
<message>
- <location line="+357"/>
+ <location line="+179"/>
+ <source>Unknown authentication method</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+183"/>
<source>Error writing response to device</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/network/access/qhttpnetworkconnection.cpp" line="+1712"/>
+ <location filename="../src/network/access/qhttpnetworkconnection.cpp" line="+876"/>
<location filename="../src/qt3support/network/q3http.cpp" line="+38"/>
<source>Connection refused</source>
<translation>Ligação recusada</translation>
</message>
<message>
- <location filename="../src/network/access/qhttp.cpp" line="-299"/>
+ <location filename="../src/network/access/qhttp.cpp" line="-304"/>
<location filename="../src/network/access/qhttpnetworkconnection.cpp" line="-4"/>
<location filename="../src/qt3support/network/q3http.cpp" line="+3"/>
<source>Host %1 not found</source>
@@ -2257,7 +2267,7 @@ Deseja apagar de qualquer forma?</translation>
<translation>Cabeçalho de resposta HTTP inválido</translation>
</message>
<message>
- <location line="+120"/>
+ <location line="+125"/>
<location line="+48"/>
<location filename="../src/qt3support/network/q3http.cpp" line="+40"/>
<location line="+47"/>
@@ -2306,7 +2316,7 @@ Deseja apagar de qualquer forma?</translation>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-133"/>
+ <location line="-138"/>
<source>Connection refused (or timed out)</source>
<translation type="unfinished"></translation>
</message>
@@ -2387,7 +2397,7 @@ Deseja apagar de qualquer forma?</translation>
<context>
<name>QIBaseDriver</name>
<message>
- <location filename="../src/sql/drivers/ibase/qsql_ibase.cpp" line="+1378"/>
+ <location filename="../src/sql/drivers/ibase/qsql_ibase.cpp" line="+1428"/>
<source>Error opening database</source>
<translation>Erro ao abrir a base de dados</translation>
</message>
@@ -2410,7 +2420,7 @@ Deseja apagar de qualquer forma?</translation>
<context>
<name>QIBaseResult</name>
<message>
- <location line="-1077"/>
+ <location line="-1097"/>
<source>Unable to create BLOB</source>
<translation>Não foi possível criar o BLOB</translation>
</message>
@@ -2430,7 +2440,7 @@ Deseja apagar de qualquer forma?</translation>
<translation>Não foi possível ler o BLOB</translation>
</message>
<message>
- <location line="+124"/>
+ <location line="+125"/>
<location line="+189"/>
<source>Could not find array</source>
<translation>Não foi possível encontrar o array</translation>
@@ -2500,7 +2510,7 @@ Deseja apagar de qualquer forma?</translation>
<context>
<name>QIODevice</name>
<message>
- <location filename="../src/corelib/global/qglobal.cpp" line="+1830"/>
+ <location filename="../src/corelib/global/qglobal.cpp" line="+1869"/>
<source>Permission denied</source>
<translation>Permissão negada</translation>
</message>
@@ -2520,7 +2530,7 @@ Deseja apagar de qualquer forma?</translation>
<translation>Dispositivo sem espaço livre</translation>
</message>
<message>
- <location filename="../src/corelib/io/qiodevice.cpp" line="+1506"/>
+ <location filename="../src/corelib/io/qiodevice.cpp" line="+1536"/>
<source>Unknown error</source>
<translation>Erro desconhecido</translation>
</message>
@@ -2528,7 +2538,7 @@ Deseja apagar de qualquer forma?</translation>
<context>
<name>QInputContext</name>
<message>
- <location filename="../src/gui/inputmethod/qinputcontextfactory.cpp" line="+212"/>
+ <location filename="../src/gui/inputmethod/qinputcontextfactory.cpp" line="+242"/>
<source>XIM</source>
<translation>XIM</translation>
</message>
@@ -2551,7 +2561,7 @@ Deseja apagar de qualquer forma?</translation>
<context>
<name>QInputDialog</name>
<message>
- <location filename="../src/gui/dialogs/qinputdialog.cpp" line="+193"/>
+ <location filename="../src/gui/dialogs/qinputdialog.cpp" line="+223"/>
<source>Enter a value:</source>
<translation type="unfinished"></translation>
</message>
@@ -2571,7 +2581,7 @@ Deseja apagar de qualquer forma?</translation>
<translation type="obsolete">QLibrary::resolve_sys: Símbolo &quot;%1&quot; indefinido em %2 (%3)</translation>
</message>
<message>
- <location filename="../src/corelib/plugin/qlibrary.cpp" line="+348"/>
+ <location filename="../src/corelib/plugin/qlibrary.cpp" line="+378"/>
<source>Could not mmap &apos;%1&apos;: %2</source>
<translation>Não foi possivel mapear &apos;%1&apos;: %2</translation>
</message>
@@ -2602,7 +2612,7 @@ Deseja apagar de qualquer forma?</translation>
</message>
<message>
<location line="-377"/>
- <location filename="../src/corelib/plugin/qpluginloader.cpp" line="+250"/>
+ <location filename="../src/corelib/plugin/qpluginloader.cpp" line="+280"/>
<source>The shared library was not found.</source>
<translation type="unfinished"></translation>
</message>
@@ -2617,8 +2627,8 @@ Deseja apagar de qualquer forma?</translation>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/corelib/plugin/qlibrary_unix.cpp" line="+179"/>
- <location filename="../src/corelib/plugin/qlibrary_win.cpp" line="+69"/>
+ <location filename="../src/corelib/plugin/qlibrary_unix.cpp" line="+209"/>
+ <location filename="../src/corelib/plugin/qlibrary_win.cpp" line="+99"/>
<source>Cannot load library %1: %2</source>
<translation type="unfinished"></translation>
</message>
@@ -2638,7 +2648,7 @@ Deseja apagar de qualquer forma?</translation>
<context>
<name>QLineEdit</name>
<message>
- <location filename="../src/gui/widgets/qlineedit.cpp" line="+2649"/>
+ <location filename="../src/gui/widgets/qlineedit.cpp" line="+2680"/>
<source>&amp;Undo</source>
<translation>&amp;Desfazer</translation>
</message>
@@ -2676,8 +2686,8 @@ Deseja apagar de qualquer forma?</translation>
<context>
<name>QLocalServer</name>
<message>
- <location filename="../src/network/socket/qlocalserver.cpp" line="+196"/>
- <location filename="../src/network/socket/qlocalserver_unix.cpp" line="+201"/>
+ <location filename="../src/network/socket/qlocalserver.cpp" line="+226"/>
+ <location filename="../src/network/socket/qlocalserver_unix.cpp" line="+231"/>
<source>%1: Name error</source>
<translation type="unfinished"></translation>
</message>
@@ -2693,7 +2703,7 @@ Deseja apagar de qualquer forma?</translation>
</message>
<message>
<location line="+5"/>
- <location filename="../src/network/socket/qlocalserver_win.cpp" line="+127"/>
+ <location filename="../src/network/socket/qlocalserver_win.cpp" line="+158"/>
<source>%1: Unknown error %2</source>
<translation type="unfinished"></translation>
</message>
@@ -2701,8 +2711,8 @@ Deseja apagar de qualquer forma?</translation>
<context>
<name>QLocalSocket</name>
<message>
- <location filename="../src/network/socket/qlocalsocket_tcp.cpp" line="+102"/>
- <location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+104"/>
+ <location filename="../src/network/socket/qlocalsocket_tcp.cpp" line="+132"/>
+ <location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+134"/>
<source>%1: Connection refused</source>
<translation type="unfinished"></translation>
</message>
@@ -2715,7 +2725,7 @@ Deseja apagar de qualquer forma?</translation>
<message>
<location line="+3"/>
<location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+3"/>
- <location filename="../src/network/socket/qlocalsocket_win.cpp" line="+50"/>
+ <location filename="../src/network/socket/qlocalsocket_win.cpp" line="+80"/>
<location line="+43"/>
<source>%1: Invalid name</source>
<translation type="unfinished"></translation>
@@ -2772,7 +2782,7 @@ Deseja apagar de qualquer forma?</translation>
<context>
<name>QMYSQLDriver</name>
<message>
- <location filename="../src/sql/drivers/mysql/qsql_mysql.cpp" line="+1200"/>
+ <location filename="../src/sql/drivers/mysql/qsql_mysql.cpp" line="+1231"/>
<source>Unable to open database &apos;</source>
<translation>Não foi possível abrir a base de dados &apos;</translation>
</message>
@@ -2782,7 +2792,7 @@ Deseja apagar de qualquer forma?</translation>
<translation>Não foi possível estabelecer a ligação</translation>
</message>
<message>
- <location line="+123"/>
+ <location line="+127"/>
<source>Unable to begin transaction</source>
<translation>Não foi possível iniciar a transacção</translation>
</message>
@@ -2800,7 +2810,7 @@ Deseja apagar de qualquer forma?</translation>
<context>
<name>QMYSQLResult</name>
<message>
- <location line="-917"/>
+ <location line="-922"/>
<source>Unable to fetch data</source>
<translation>Não foi possível obter dados</translation>
</message>
@@ -2815,7 +2825,7 @@ Deseja apagar de qualquer forma?</translation>
<translation>Não foi possível guardar o resultado</translation>
</message>
<message>
- <location line="+189"/>
+ <location line="+190"/>
<location line="+8"/>
<source>Unable to prepare statement</source>
<translation>Não foi possível preparar a expressão</translation>
@@ -2860,7 +2870,7 @@ Deseja apagar de qualquer forma?</translation>
<context>
<name>QMdiArea</name>
<message>
- <location filename="../src/gui/widgets/qmdiarea.cpp" line="+260"/>
+ <location filename="../src/gui/widgets/qmdiarea.cpp" line="+290"/>
<source>(Untitled)</source>
<translation type="unfinished"></translation>
</message>
@@ -2868,7 +2878,7 @@ Deseja apagar de qualquer forma?</translation>
<context>
<name>QMdiSubWindow</name>
<message>
- <location filename="../src/gui/widgets/qmdisubwindow.cpp" line="+250"/>
+ <location filename="../src/gui/widgets/qmdisubwindow.cpp" line="+280"/>
<source>%1 - [%2]</source>
<translation type="unfinished">%1 - [%2]</translation>
</message>
@@ -2961,7 +2971,7 @@ Deseja apagar de qualquer forma?</translation>
<context>
<name>QMenu</name>
<message>
- <location filename="../src/plugins/accessible/widgets/qaccessiblemenu.cpp" line="+127"/>
+ <location filename="../src/plugins/accessible/widgets/qaccessiblemenu.cpp" line="+157"/>
<location line="+225"/>
<source>Close</source>
<translation>Fechar</translation>
@@ -3034,7 +3044,7 @@ Deseja apagar de qualquer forma?</translation>
<context>
<name>QMessageBox</name>
<message>
- <location filename="../src/gui/dialogs/qmessagebox.cpp" line="-1105"/>
+ <location filename="../src/gui/dialogs/qmessagebox.cpp" line="-1111"/>
<source>Help</source>
<translation>Ajuda</translation>
</message>
@@ -3047,21 +3057,20 @@ Deseja apagar de qualquer forma?</translation>
<translation>OK</translation>
</message>
<message>
- <location line="+503"/>
+ <location line="+509"/>
<source>About Qt</source>
<translation>Acerca do Qt</translation>
</message>
<message>
- <location line="-15"/>
<source>&lt;p&gt;This program uses Qt version %1.&lt;/p&gt;</source>
- <translation>&lt;p&gt;Este programa usa Qt versão %1.&lt;/p&gt;</translation>
+ <translation type="obsolete">&lt;p&gt;Este programa usa Qt versão %1.&lt;/p&gt;</translation>
</message>
<message>
<source>&lt;h3&gt;About Qt&lt;/h3&gt;%1&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 Qtopia Core.&lt;/p&gt;&lt;p&gt;Qt is a Trolltech product. See &lt;a href=&quot;http://qtsoftware.com/qt/&quot;&gt;qtsoftware.com/qt/&lt;/a&gt; for more information.&lt;/p&gt;</source>
<translation type="obsolete">&lt;h3&gt;Acerca do Qt&lt;/h3&gt;%1&lt;p&gt;Qt é um conjunto de ferramentas para desenvolvimento de aplicações multiplataforma.&lt;/p&gt;O Qt oferece portabilidade de código fonte único em MS&amp;nbsp;Windows, Mac&amp;nbsp;OS&amp;nbsp;X, Linux e todas as principais variantes comerciais de Unix. O Qt está igualmente disponível para dispositivos embebidos como Qtopia Core.&lt;/p&gt;&lt;p&gt;O Qt é um produto Trolltech. Veja &lt;a href=&quot;http://qtsoftware.com/qt/&quot;&gt;qtsoftware.com/qt/&lt;/a&gt; para mais informação.&lt;/p&gt;</translation>
</message>
<message>
- <location line="-1584"/>
+ <location line="-1605"/>
<source>Show Details...</source>
<translation>Mostrar Detalhes...</translation>
</message>
@@ -3072,19 +3081,18 @@ Deseja apagar de qualquer forma?</translation>
</message>
<message>
<location line="+1570"/>
- <source>&lt;h3&gt;About Qt&lt;/h3&gt;%1&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 a Nokia product. See &lt;a href=&quot;http://qtsoftware.com/qt/&quot;&gt;qtsoftware.com/qt/&lt;/a&gt; for more information.&lt;/p&gt;</source>
+ <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://www.qtsoftware.com/products/licensing&quot;&gt;www.qtsoftware.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://www.qtsoftware.com/qt/&quot;&gt;www.qtsoftware.com/qt&lt;/a&gt; for more information.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+15"/>
<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://qtsoftware.com/company/model/&quot;&gt;qtsoftware.com/company/model/&lt;/a&gt; for an overview of Qt licensing.&lt;/p&gt;</source>
- <translation>&lt;p&gt;Este programa usa Qt Open Source Edition versão %1.&lt;/p&gt;&lt;p&gt;Qt Open Source Edition é indicado para o desenvolvimento de aplicações/programas open source. Se pretender desenvolver aplicações sem disponibilizar o codigo fonte, então precisará de obter uma licença comercial.&lt;/p&gt;&lt;p&gt;Por favor consulte &lt;a href=&quot;http://qtsoftware.com/company/model/&quot;&gt;qtsoftware.com/company/model/&lt;/a&gt;para obter mais informação acerca de licenças Qt.&lt;/p&gt;</translation>
+ <translation type="obsolete">&lt;p&gt;Este programa usa Qt Open Source Edition versão %1.&lt;/p&gt;&lt;p&gt;Qt Open Source Edition é indicado para o desenvolvimento de aplicações/programas open source. Se pretender desenvolver aplicações sem disponibilizar o codigo fonte, então precisará de obter uma licença comercial.&lt;/p&gt;&lt;p&gt;Por favor consulte &lt;a href=&quot;http://qtsoftware.com/company/model/&quot;&gt;qtsoftware.com/company/model/&lt;/a&gt;para obter mais informação acerca de licenças Qt.&lt;/p&gt;</translation>
</message>
</context>
<context>
<name>QMultiInputContext</name>
<message>
- <location filename="../src/plugins/inputmethods/imsw-multi/qmultiinputcontext.cpp" line="+58"/>
+ <location filename="../src/plugins/inputmethods/imsw-multi/qmultiinputcontext.cpp" line="+88"/>
<source>Select IM</source>
<translation>Seleccione Método de Entrada</translation>
</message>
@@ -3092,7 +3100,7 @@ Deseja apagar de qualquer forma?</translation>
<context>
<name>QMultiInputContextPlugin</name>
<message>
- <location filename="../src/plugins/inputmethods/imsw-multi/qmultiinputcontextplugin.cpp" line="+65"/>
+ <location filename="../src/plugins/inputmethods/imsw-multi/qmultiinputcontextplugin.cpp" line="+95"/>
<source>Multiple input method switcher</source>
<translation>Seleccionador de método de entrada</translation>
</message>
@@ -3105,7 +3113,7 @@ Deseja apagar de qualquer forma?</translation>
<context>
<name>QNativeSocketEngine</name>
<message>
- <location filename="../src/network/socket/qnativesocketengine.cpp" line="+176"/>
+ <location filename="../src/network/socket/qnativesocketengine.cpp" line="+206"/>
<source>The remote host closed the connection</source>
<translation>A máquina remota fechou a ligação</translation>
</message>
@@ -3238,7 +3246,7 @@ Deseja apagar de qualquer forma?</translation>
<context>
<name>QNetworkAccessCacheBackend</name>
<message>
- <location filename="../src/network/access/qnetworkaccesscachebackend.cpp" line="+35"/>
+ <location filename="../src/network/access/qnetworkaccesscachebackend.cpp" line="+65"/>
<source>Error opening %1</source>
<translation type="unfinished"></translation>
</message>
@@ -3246,7 +3254,7 @@ Deseja apagar de qualquer forma?</translation>
<context>
<name>QNetworkAccessFileBackend</name>
<message>
- <location filename="../src/network/access/qnetworkaccessfilebackend.cpp" line="+69"/>
+ <location filename="../src/network/access/qnetworkaccessfilebackend.cpp" line="+99"/>
<source>Request for opening non-local file %1</source>
<translation type="unfinished"></translation>
</message>
@@ -3274,7 +3282,7 @@ Deseja apagar de qualquer forma?</translation>
<context>
<name>QNetworkAccessFtpBackend</name>
<message>
- <location filename="../src/network/access/qnetworkaccessftpbackend.cpp" line="+135"/>
+ <location filename="../src/network/access/qnetworkaccessftpbackend.cpp" line="+165"/>
<source>No suitable proxy found</source>
<translation type="unfinished"></translation>
</message>
@@ -3284,7 +3292,7 @@ Deseja apagar de qualquer forma?</translation>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+131"/>
+ <location line="+130"/>
<source>Logging in to %1 failed: authentication required</source>
<translation type="unfinished"></translation>
</message>
@@ -3302,7 +3310,7 @@ Deseja apagar de qualquer forma?</translation>
<context>
<name>QNetworkAccessHttpBackend</name>
<message>
- <location filename="../src/network/access/qnetworkaccesshttpbackend.cpp" line="+565"/>
+ <location filename="../src/network/access/qnetworkaccesshttpbackend.cpp" line="+597"/>
<source>No suitable proxy found</source>
<translation type="unfinished"></translation>
</message>
@@ -3315,7 +3323,7 @@ Deseja apagar de qualquer forma?</translation>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/network/access/qnetworkreplyimpl.cpp" line="+37"/>
+ <location filename="../src/network/access/qnetworkreplyimpl.cpp" line="+68"/>
<source>Protocol &quot;%1&quot; is unknown</source>
<translation type="unfinished"></translation>
</message>
@@ -3323,7 +3331,7 @@ Deseja apagar de qualquer forma?</translation>
<context>
<name>QNetworkReplyImpl</name>
<message>
- <location line="+422"/>
+ <location line="+432"/>
<location line="+22"/>
<source>Operation canceled</source>
<translation type="unfinished"></translation>
@@ -3332,7 +3340,7 @@ Deseja apagar de qualquer forma?</translation>
<context>
<name>QOCIDriver</name>
<message>
- <location filename="../src/sql/drivers/oci/qsql_oci.cpp" line="+2027"/>
+ <location filename="../src/sql/drivers/oci/qsql_oci.cpp" line="+2069"/>
<source>Unable to logon</source>
<translation>Não foi possível autenticar</translation>
</message>
@@ -3361,7 +3369,7 @@ Deseja apagar de qualquer forma?</translation>
<context>
<name>QOCIResult</name>
<message>
- <location line="-976"/>
+ <location line="-963"/>
<location line="+161"/>
<location line="+15"/>
<source>Unable to bind column for batch execute</source>
@@ -3388,18 +3396,16 @@ Deseja apagar de qualquer forma?</translation>
<translation>Não foi possível preparar a expressão</translation>
</message>
<message>
- <location line="+29"/>
- <location line="+37"/>
+ <location line="+36"/>
<source>Unable to bind value</source>
<translation>Não foi possível fazer o ligamento do valor</translation>
</message>
<message>
- <location line="-20"/>
<source>Unable to execute select statement</source>
- <translation>Não foi possível executar a expressão select</translation>
+ <translation type="obsolete">Não foi possível executar a expressão select</translation>
</message>
<message>
- <location line="+32"/>
+ <location line="+19"/>
<source>Unable to execute statement</source>
<translation>Não foi possível executar a expressão</translation>
</message>
@@ -3407,7 +3413,7 @@ Deseja apagar de qualquer forma?</translation>
<context>
<name>QODBCDriver</name>
<message>
- <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="+1657"/>
+ <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="+1785"/>
<source>Unable to connect</source>
<translation>Não foi possível ligar</translation>
</message>
@@ -3417,7 +3423,7 @@ Deseja apagar de qualquer forma?</translation>
<translation>Não foi possível ligar - O &apos;driver&apos; não suporta todas as funcionalidades necessárias</translation>
</message>
<message>
- <location line="+234"/>
+ <location line="+242"/>
<source>Unable to disable autocommit</source>
<translation>Não foi possível desactivar finalização automática</translation>
</message>
@@ -3440,19 +3446,19 @@ Deseja apagar de qualquer forma?</translation>
<context>
<name>QODBCResult</name>
<message>
- <location line="-1204"/>
+ <location line="-1218"/>
<location line="+349"/>
<source>QODBCResult::reset: Unable to set &apos;SQL_CURSOR_STATIC&apos; as statement attribute. Please check your ODBC driver configuration</source>
<translation>QODBCResult::reset: Não foi possível definir &apos;SQL_CURSOR_STATIC&apos; como atributo da expressão. Por favor verifique a configuração do seu &apos;driver&apos; ODBC</translation>
</message>
<message>
<location line="-332"/>
- <location line="+625"/>
+ <location line="+626"/>
<source>Unable to execute statement</source>
<translation>Não foi possível executar a expressão</translation>
</message>
<message>
- <location line="-554"/>
+ <location line="-555"/>
<source>Unable to fetch next</source>
<translation>Não foi possível obter o seguinte</translation>
</message>
@@ -3462,19 +3468,19 @@ Deseja apagar de qualquer forma?</translation>
<translation>Não foi possível preparar a expressão</translation>
</message>
<message>
- <location line="+267"/>
+ <location line="+268"/>
<source>Unable to bind variable</source>
<translation>Não foi possível fazer o ligamento da variável</translation>
</message>
<message>
<location filename="../src/sql/drivers/db2/qsql_db2.cpp" line="+194"/>
- <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="-474"/>
- <location line="+577"/>
+ <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="-475"/>
+ <location line="+578"/>
<source>Unable to fetch last</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="-671"/>
+ <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="-672"/>
<source>Unable to fetch</source>
<translation type="unfinished"></translation>
</message>
@@ -3492,12 +3498,12 @@ Deseja apagar de qualquer forma?</translation>
<context>
<name>QObject</name>
<message>
- <location filename="../src/gui/util/qdesktopservices_mac.cpp" line="+134"/>
+ <location filename="../src/gui/util/qdesktopservices_mac.cpp" line="+165"/>
<source>Home</source>
<translation>Início</translation>
</message>
<message>
- <location filename="../src/network/access/qnetworkaccessdatabackend.cpp" line="+44"/>
+ <location filename="../src/network/access/qnetworkaccessdatabackend.cpp" line="+74"/>
<source>Operation not supported on %1</source>
<translation type="unfinished"></translation>
</message>
@@ -3507,7 +3513,7 @@ Deseja apagar de qualquer forma?</translation>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/network/access/qnetworkaccessdebugpipebackend.cpp" line="+145"/>
+ <location filename="../src/network/access/qnetworkaccessdebugpipebackend.cpp" line="+175"/>
<source>Write error writing to %1: %2</source>
<translation type="unfinished"></translation>
</message>
@@ -3532,7 +3538,7 @@ Deseja apagar de qualquer forma?</translation>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/network/kernel/qhostinfo.cpp" line="+147"/>
+ <location filename="../src/network/kernel/qhostinfo.cpp" line="+177"/>
<location line="+57"/>
<source>No host name given</source>
<translation type="unfinished"></translation>
@@ -3541,7 +3547,7 @@ Deseja apagar de qualquer forma?</translation>
<context>
<name>QPPDOptionsModel</name>
<message>
- <location filename="../src/gui/dialogs/qprintdialog_unix.cpp" line="+1165"/>
+ <location filename="../src/gui/dialogs/qprintdialog_unix.cpp" line="+1195"/>
<source>Name</source>
<translation type="unfinished">Nome</translation>
</message>
@@ -3554,7 +3560,7 @@ Deseja apagar de qualquer forma?</translation>
<context>
<name>QPSQLDriver</name>
<message>
- <location filename="../src/sql/drivers/psql/qsql_psql.cpp" line="+732"/>
+ <location filename="../src/sql/drivers/psql/qsql_psql.cpp" line="+763"/>
<source>Unable to connect</source>
<translation>Não foi possível ligar</translation>
</message>
@@ -3574,7 +3580,7 @@ Deseja apagar de qualquer forma?</translation>
<translation>Não foi possível anular a transacção</translation>
</message>
<message>
- <location line="+336"/>
+ <location line="+358"/>
<source>Unable to subscribe</source>
<translation type="unfinished"></translation>
</message>
@@ -3587,12 +3593,12 @@ Deseja apagar de qualquer forma?</translation>
<context>
<name>QPSQLResult</name>
<message>
- <location line="-1035"/>
+ <location line="-1058"/>
<source>Unable to create query</source>
<translation>Não foi possível criar a &apos;query&apos;</translation>
</message>
<message>
- <location line="+373"/>
+ <location line="+374"/>
<source>Unable to prepare statement</source>
<translation type="unfinished"></translation>
</message>
@@ -3600,7 +3606,7 @@ Deseja apagar de qualquer forma?</translation>
<context>
<name>QPageSetupWidget</name>
<message>
- <location filename="../src/gui/dialogs/qpagesetupdialog_unix.cpp" line="+274"/>
+ <location filename="../src/gui/dialogs/qpagesetupdialog_unix.cpp" line="+304"/>
<source>Centimeters (cm)</source>
<translation type="unfinished"></translation>
</message>
@@ -3716,7 +3722,7 @@ Deseja apagar de qualquer forma?</translation>
<context>
<name>QPrintDialog</name>
<message>
- <location filename="../src/gui/painting/qprinterinfo_unix.cpp" line="+68"/>
+ <location filename="../src/gui/painting/qprinterinfo_unix.cpp" line="+98"/>
<source>locally connected</source>
<translation>ligado localmente</translation>
</message>
@@ -3741,7 +3747,7 @@ Deseja apagar de qualquer forma?</translation>
<translation type="obsolete">Paisagem</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qprintdialog_qws.cpp" line="+299"/>
+ <location filename="../src/gui/dialogs/qprintdialog_qws.cpp" line="+329"/>
<source>A0 (841 x 1189 mm)</source>
<translation>A0 (841 x 1189 mm)</translation>
</message>
@@ -3891,7 +3897,7 @@ Deseja apagar de qualquer forma?</translation>
<translation>Envelope #10 Comum EUA (105 x 241 mm)</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qprintdialog_win.cpp" line="+238"/>
+ <location filename="../src/gui/dialogs/qprintdialog_win.cpp" line="+268"/>
<source>OK</source>
<translation>OK</translation>
</message>
@@ -3912,7 +3918,7 @@ Deseja apagar de qualquer forma?</translation>
<translation type="obsolete">Fonte papel:</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qabstractprintdialog.cpp" line="+80"/>
+ <location filename="../src/gui/dialogs/qabstractprintdialog.cpp" line="+110"/>
<location line="+13"/>
<location filename="../src/gui/dialogs/qprintdialog_win.cpp" line="-2"/>
<source>Print</source>
@@ -4244,13 +4250,13 @@ Please choose a different file name.</source>
<context>
<name>QPrintPreviewDialog</name>
<message>
- <location filename="../src/gui/dialogs/qabstractpagesetupdialog.cpp" line="+38"/>
+ <location filename="../src/gui/dialogs/qabstractpagesetupdialog.cpp" line="+68"/>
<location line="+12"/>
<source>Page Setup</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qprintpreviewdialog.cpp" line="+222"/>
+ <location filename="../src/gui/dialogs/qprintpreviewdialog.cpp" line="+252"/>
<source>%1%</source>
<translation type="unfinished"></translation>
</message>
@@ -4532,8 +4538,8 @@ Please choose a different file name.</source>
<context>
<name>QProcess</name>
<message>
- <location filename="../src/corelib/io/qprocess_unix.cpp" line="+445"/>
- <location filename="../src/corelib/io/qprocess_win.cpp" line="+117"/>
+ <location filename="../src/corelib/io/qprocess_unix.cpp" line="+475"/>
+ <location filename="../src/corelib/io/qprocess_win.cpp" line="+147"/>
<source>Could not open input redirection for reading</source>
<translation type="unfinished"></translation>
</message>
@@ -4562,7 +4568,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/corelib/io/qprocess.cpp" line="+503"/>
+ <location filename="../src/corelib/io/qprocess.cpp" line="+533"/>
<location line="+52"/>
<location filename="../src/corelib/io/qprocess_win.cpp" line="-211"/>
<location line="+50"/>
@@ -4582,6 +4588,11 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
+ <location line="+912"/>
+ <source>No program defined</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<location filename="../src/corelib/io/qprocess_win.cpp" line="-341"/>
<source>Process failed to start</source>
<translation type="unfinished"></translation>
@@ -4590,7 +4601,7 @@ Please choose a different file name.</source>
<context>
<name>QProgressDialog</name>
<message>
- <location filename="../src/gui/dialogs/qprogressdialog.cpp" line="+152"/>
+ <location filename="../src/gui/dialogs/qprogressdialog.cpp" line="+182"/>
<source>Cancel</source>
<translation>Cancelar</translation>
</message>
@@ -4614,7 +4625,7 @@ Please choose a different file name.</source>
<context>
<name>QRegExp</name>
<message>
- <location filename="../src/corelib/tools/qregexp.cpp" line="+34"/>
+ <location filename="../src/corelib/tools/qregexp.cpp" line="+64"/>
<source>no error occurred</source>
<translation>sem erros</translation>
</message>
@@ -4662,7 +4673,7 @@ Please choose a different file name.</source>
<context>
<name>QSQLite2Driver</name>
<message>
- <location filename="../src/sql/drivers/sqlite2/qsql_sqlite2.cpp" line="+353"/>
+ <location filename="../src/sql/drivers/sqlite2/qsql_sqlite2.cpp" line="+396"/>
<source>Error to open database</source>
<translation>Erro ao abrir base de dados</translation>
</message>
@@ -4685,12 +4696,12 @@ Please choose a different file name.</source>
<context>
<name>QSQLite2Result</name>
<message>
- <location line="-310"/>
+ <location line="-323"/>
<source>Unable to fetch results</source>
<translation>Não foi possível obter os resultados</translation>
</message>
<message>
- <location line="+139"/>
+ <location line="+147"/>
<source>Unable to execute statement</source>
<translation>Não foi possível executar a expressão</translation>
</message>
@@ -4698,7 +4709,7 @@ Please choose a different file name.</source>
<context>
<name>QSQLiteDriver</name>
<message>
- <location filename="../src/sql/drivers/sqlite/qsql_sqlite.cpp" line="+498"/>
+ <location filename="../src/sql/drivers/sqlite/qsql_sqlite.cpp" line="+528"/>
<source>Error opening database</source>
<translation>Erro ao abrir a base de dados</translation>
</message>
@@ -4765,12 +4776,12 @@ Please choose a different file name.</source>
<context>
<name>QScrollBar</name>
<message>
- <location filename="../src/gui/widgets/qscrollbar.cpp" line="+419"/>
+ <location filename="../src/gui/widgets/qscrollbar.cpp" line="+448"/>
<source>Scroll here</source>
<translation>Deslizar aqui</translation>
</message>
<message>
- <location line="+3"/>
+ <location line="+2"/>
<source>Left edge</source>
<translation>Borda esquerda</translation>
</message>
@@ -4780,7 +4791,7 @@ Please choose a different file name.</source>
<translation>Topo</translation>
</message>
<message>
- <location line="+2"/>
+ <location line="+1"/>
<source>Right edge</source>
<translation>Borda direita</translation>
</message>
@@ -4790,7 +4801,7 @@ Please choose a different file name.</source>
<translation>Fundo</translation>
</message>
<message>
- <location line="+3"/>
+ <location line="+2"/>
<source>Page left</source>
<translation>Página para esquerda</translation>
</message>
@@ -4801,7 +4812,7 @@ Please choose a different file name.</source>
<translation>Página para cima</translation>
</message>
<message>
- <location line="+2"/>
+ <location line="+1"/>
<source>Page right</source>
<translation>Página para direita</translation>
</message>
@@ -4812,7 +4823,7 @@ Please choose a different file name.</source>
<translation>Página para baixo</translation>
</message>
<message>
- <location line="+3"/>
+ <location line="+2"/>
<source>Scroll left</source>
<translation>Deslizar para esquerda</translation>
</message>
@@ -4822,7 +4833,7 @@ Please choose a different file name.</source>
<translation>Deslizar para cima</translation>
</message>
<message>
- <location line="+2"/>
+ <location line="+1"/>
<source>Scroll right</source>
<translation>Deslizar para a direita</translation>
</message>
@@ -4850,7 +4861,7 @@ Please choose a different file name.</source>
<context>
<name>QSharedMemory</name>
<message>
- <location filename="../src/corelib/kernel/qsharedmemory.cpp" line="+177"/>
+ <location filename="../src/corelib/kernel/qsharedmemory.cpp" line="+207"/>
<source>%1: unable to set key on lock</source>
<translation type="unfinished"></translation>
</message>
@@ -4861,7 +4872,7 @@ Please choose a different file name.</source>
</message>
<message>
<location line="+168"/>
- <location filename="../src/corelib/kernel/qsharedmemory_p.h" line="+118"/>
+ <location filename="../src/corelib/kernel/qsharedmemory_p.h" line="+148"/>
<source>%1: unable to lock</source>
<translation type="unfinished"></translation>
</message>
@@ -4871,8 +4882,8 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/corelib/kernel/qsharedmemory_unix.cpp" line="+48"/>
- <location filename="../src/corelib/kernel/qsharedmemory_win.cpp" line="+57"/>
+ <location filename="../src/corelib/kernel/qsharedmemory_unix.cpp" line="+78"/>
+ <location filename="../src/corelib/kernel/qsharedmemory_win.cpp" line="+87"/>
<source>%1: permission denied</source>
<translation type="unfinished"></translation>
</message>
@@ -4950,7 +4961,7 @@ Please choose a different file name.</source>
<context>
<name>QShortcut</name>
<message>
- <location filename="../src/gui/kernel/qkeysequence.cpp" line="+343"/>
+ <location filename="../src/gui/kernel/qkeysequence.cpp" line="+373"/>
<source>Space</source>
<translation>Space</translation>
</message>
@@ -5535,7 +5546,7 @@ Please choose a different file name.</source>
<context>
<name>QSql</name>
<message>
- <location filename="../src/qt3support/sql/q3sqlmanager_p.cpp" line="+860"/>
+ <location filename="../src/qt3support/sql/q3sqlmanager_p.cpp" line="+890"/>
<source>Delete</source>
<translation>Apagar</translation>
</message>
@@ -5592,7 +5603,7 @@ Please choose a different file name.</source>
<context>
<name>QSslSocket</name>
<message>
- <location filename="../src/network/ssl/qsslsocket_openssl.cpp" line="+539"/>
+ <location filename="../src/network/ssl/qsslsocket_openssl.cpp" line="+569"/>
<source>Unable to write data: %1</source>
<translation type="unfinished"></translation>
</message>
@@ -5651,7 +5662,7 @@ Please choose a different file name.</source>
<name>QSystemSemaphore</name>
<message>
<location filename="../src/corelib/kernel/qsystemsemaphore_unix.cpp" line="-41"/>
- <location filename="../src/corelib/kernel/qsystemsemaphore_win.cpp" line="+36"/>
+ <location filename="../src/corelib/kernel/qsystemsemaphore_win.cpp" line="+66"/>
<source>%1: out of resources</source>
<translation type="unfinished"></translation>
</message>
@@ -5681,7 +5692,7 @@ Please choose a different file name.</source>
<context>
<name>QTDSDriver</name>
<message>
- <location filename="../src/sql/drivers/tds/qsql_tds.cpp" line="+552"/>
+ <location filename="../src/sql/drivers/tds/qsql_tds.cpp" line="+584"/>
<source>Unable to open connection</source>
<translation>Não foi possível estabelecer a ligação</translation>
</message>
@@ -5711,7 +5722,7 @@ Please choose a different file name.</source>
<translation type="obsolete">Operação de &apos;socket&apos; não suportada</translation>
</message>
<message>
- <location filename="../src/network/socket/qtcpserver.cpp" line="+252"/>
+ <location filename="../src/network/socket/qtcpserver.cpp" line="+282"/>
<source>Operation on socket is not supported</source>
<translation type="unfinished"></translation>
</message>
@@ -5719,7 +5730,7 @@ Please choose a different file name.</source>
<context>
<name>QTextControl</name>
<message>
- <location filename="../src/gui/text/qtextcontrol.cpp" line="+1942"/>
+ <location filename="../src/gui/text/qtextcontrol.cpp" line="+1973"/>
<source>&amp;Undo</source>
<translation>&amp;Desfazer</translation>
</message>
@@ -5777,7 +5788,7 @@ Please choose a different file name.</source>
<context>
<name>QUdpSocket</name>
<message>
- <location filename="../src/network/socket/qudpsocket.cpp" line="+139"/>
+ <location filename="../src/network/socket/qudpsocket.cpp" line="+169"/>
<source>This platform does not support IPv6</source>
<translation>Esta plataforma não suporta IPv6</translation>
</message>
@@ -5785,7 +5796,7 @@ Please choose a different file name.</source>
<context>
<name>QUndoGroup</name>
<message>
- <location filename="../src/gui/util/qundogroup.cpp" line="+356"/>
+ <location filename="../src/gui/util/qundogroup.cpp" line="+386"/>
<source>Undo</source>
<translation>Desfazer</translation>
</message>
@@ -5798,7 +5809,7 @@ Please choose a different file name.</source>
<context>
<name>QUndoModel</name>
<message>
- <location filename="../src/gui/util/qundoview.cpp" line="+71"/>
+ <location filename="../src/gui/util/qundoview.cpp" line="+101"/>
<source>&lt;empty&gt;</source>
<translation>&lt;vazio&gt;</translation>
</message>
@@ -5806,7 +5817,7 @@ Please choose a different file name.</source>
<context>
<name>QUndoStack</name>
<message>
- <location filename="../src/gui/util/qundostack.cpp" line="+804"/>
+ <location filename="../src/gui/util/qundostack.cpp" line="+834"/>
<source>Undo</source>
<translation>Desfazer</translation>
</message>
@@ -5877,7 +5888,7 @@ Please choose a different file name.</source>
<context>
<name>QWebFrame</name>
<message>
- <location filename="../src/3rdparty/webkit/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp" line="+686"/>
+ <location filename="../src/3rdparty/webkit/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp" line="+692"/>
<source>Request cancelled</source>
<translation type="unfinished"></translation>
</message>
@@ -6288,7 +6299,7 @@ Please choose a different file name.</source>
</translation>
</message>
<message>
- <location filename="../src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp" line="+1342"/>
+ <location filename="../src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp" line="+1322"/>
<source>JavaScript Alert - %1</source>
<translation type="unfinished"></translation>
</message>
@@ -6364,6 +6375,11 @@ Please choose a different file name.</source>
</message>
<message>
<location line="+3"/>
+ <source>Select all</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
<source>Select to the next character</source>
<translation type="unfinished"></translation>
</message>
@@ -6432,11 +6448,21 @@ Please choose a different file name.</source>
<source>Delete to the end of the word</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <location line="+33"/>
+ <source>Insert a new paragraph</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Insert a new line</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>QWhatsThisAction</name>
<message>
- <location filename="../src/gui/kernel/qwhatsthis.cpp" line="+492"/>
+ <location filename="../src/gui/kernel/qwhatsthis.cpp" line="+522"/>
<source>What&apos;s This?</source>
<translation>O Que é Isto?</translation>
</message>
@@ -6444,7 +6470,7 @@ Please choose a different file name.</source>
<context>
<name>QWidget</name>
<message>
- <location filename="../src/gui/kernel/qwidget.cpp" line="+5290"/>
+ <location filename="../src/gui/kernel/qwidget.cpp" line="+5326"/>
<source>*</source>
<translation>*</translation>
</message>
@@ -6452,7 +6478,7 @@ Please choose a different file name.</source>
<context>
<name>QWizard</name>
<message>
- <location filename="../src/gui/dialogs/qwizard.cpp" line="+605"/>
+ <location filename="../src/gui/dialogs/qwizard.cpp" line="+637"/>
<source>Go Back</source>
<translation type="unfinished"></translation>
</message>
@@ -6514,7 +6540,7 @@ Please choose a different file name.</source>
<context>
<name>QWorkspace</name>
<message>
- <location filename="../src/gui/widgets/qworkspace.cpp" line="+1064"/>
+ <location filename="../src/gui/widgets/qworkspace.cpp" line="+1094"/>
<source>&amp;Restore</source>
<translation>&amp;Restaurar</translation>
</message>
@@ -6584,7 +6610,7 @@ Please choose a different file name.</source>
<context>
<name>QXml</name>
<message>
- <location filename="../src/xml/sax/qxml.cpp" line="+28"/>
+ <location filename="../src/xml/sax/qxml.cpp" line="+58"/>
<source>no error occurred</source>
<translation>não ocorreu nenhum erro</translation>
</message>
@@ -6702,8 +6728,8 @@ Please choose a different file name.</source>
<context>
<name>QXmlStream</name>
<message>
- <location filename="../src/corelib/xml/qxmlstream.cpp" line="+562"/>
- <location filename="../src/corelib/xml/qxmlstream_p.h" line="+1739"/>
+ <location filename="../src/corelib/xml/qxmlstream.cpp" line="+592"/>
+ <location filename="../src/corelib/xml/qxmlstream_p.h" line="+1769"/>
<source>Extra content at end of document.</source>
<translation type="unfinished"></translation>
</message>
@@ -6887,7 +6913,7 @@ Please choose a different file name.</source>
<context>
<name>QtXmlPatterns</name>
<message>
- <location filename="../src/xmlpatterns/acceltree/qacceltreebuilder.cpp" line="+175"/>
+ <location filename="../src/xmlpatterns/acceltree/qacceltreebuilder.cpp" line="+205"/>
<source>An %1-attribute with value %2 has already been declared.</source>
<translation type="unfinished"></translation>
</message>
@@ -6897,12 +6923,12 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/api/qiodevicedelegate.cpp" line="+54"/>
+ <location filename="../src/xmlpatterns/api/qiodevicedelegate.cpp" line="+84"/>
<source>Network timeout.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/api/qxmlserializer.cpp" line="+290"/>
+ <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 type="unfinished"></translation>
</message>
@@ -6912,7 +6938,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qabstractdatetime.cpp" line="+50"/>
+ <location filename="../src/xmlpatterns/data/qabstractdatetime.cpp" line="+80"/>
<source>Year %1 is invalid because it begins with %2.</source>
<translation type="unfinished"></translation>
</message>
@@ -6952,7 +6978,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qabstractduration.cpp" line="+69"/>
+ <location filename="../src/xmlpatterns/data/qabstractduration.cpp" line="+99"/>
<location line="+15"/>
<source>At least one component must be present.</source>
<translation type="unfinished"></translation>
@@ -6963,7 +6989,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qabstractfloatmathematician.cpp" line="+34"/>
+ <location filename="../src/xmlpatterns/data/qabstractfloatmathematician.cpp" line="+64"/>
<source>No operand in an integer division, %1, can be %2.</source>
<translation type="unfinished"></translation>
</message>
@@ -6978,17 +7004,17 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qanyuri_p.h" line="+102"/>
+ <location filename="../src/xmlpatterns/data/qanyuri_p.h" line="+132"/>
<source>%1 is not a valid value of type %2.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qatomiccasters_p.h" line="+193"/>
+ <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 type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qatomicmathematicians.cpp" line="+35"/>
+ <location filename="../src/xmlpatterns/data/qatomicmathematicians.cpp" line="+65"/>
<source>Integer division (%1) by zero (%2) is undefined.</source>
<translation type="unfinished"></translation>
</message>
@@ -7019,17 +7045,17 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qatomicvalue.cpp" line="+49"/>
+ <location filename="../src/xmlpatterns/data/qatomicvalue.cpp" line="+79"/>
<source>A value of type %1 cannot have an Effective Boolean Value.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qboolean.cpp" line="+48"/>
+ <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 type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qderivedinteger_p.h" line="+372"/>
+ <location filename="../src/xmlpatterns/data/qderivedinteger_p.h" line="+402"/>
<source>Value %1 of type %2 exceeds maximum (%3).</source>
<translation type="unfinished"></translation>
</message>
@@ -7039,7 +7065,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qhexbinary.cpp" line="+61"/>
+ <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 type="unfinished"></translation>
</message>
@@ -7049,7 +7075,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qarithmeticexpression.cpp" line="+177"/>
+ <location filename="../src/xmlpatterns/expr/qarithmeticexpression.cpp" line="+207"/>
<source>Operator %1 cannot be used on type %2.</source>
<translation type="unfinished"></translation>
</message>
@@ -7059,7 +7085,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qattributenamevalidator.cpp" line="+36"/>
+ <location filename="../src/xmlpatterns/expr/qattributenamevalidator.cpp" line="+66"/>
<source>The namespace URI in the name for a computed attribute cannot be %1.</source>
<translation type="unfinished"></translation>
</message>
@@ -7069,7 +7095,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qcastas.cpp" line="+58"/>
+ <location filename="../src/xmlpatterns/expr/qcastas.cpp" line="+88"/>
<source>Type error in cast, expected %1, received %2.</source>
<translation type="unfinished"></translation>
</message>
@@ -7079,7 +7105,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qcastingplatform.cpp" line="+104"/>
+ <location filename="../src/xmlpatterns/expr/qcastingplatform.cpp" line="+134"/>
<source>No casting is possible with %1 as the target type.</source>
<translation type="unfinished"></translation>
</message>
@@ -7104,7 +7130,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qcommentconstructor.cpp" line="+37"/>
+ <location filename="../src/xmlpatterns/expr/qcommentconstructor.cpp" line="+67"/>
<source>A comment cannot contain %1</source>
<translation type="unfinished"></translation>
</message>
@@ -7114,7 +7140,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qcomparisonplatform.cpp" line="+137"/>
+ <location filename="../src/xmlpatterns/expr/qcomparisonplatform.cpp" line="+167"/>
<source>No comparisons can be done involving the type %1.</source>
<translation type="unfinished"></translation>
</message>
@@ -7124,12 +7150,12 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qdocumentcontentvalidator.cpp" line="+56"/>
+ <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 type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qexpressionfactory.cpp" line="+139"/>
+ <location filename="../src/xmlpatterns/expr/qexpressionfactory.cpp" line="+169"/>
<source>A library module cannot be evaluated directly. It must be imported from a main module.</source>
<translation type="unfinished"></translation>
</message>
@@ -7139,7 +7165,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qgenericpredicate.cpp" line="+76"/>
+ <location filename="../src/xmlpatterns/expr/qgenericpredicate.cpp" line="+106"/>
<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 type="unfinished"></translation>
</message>
@@ -7149,7 +7175,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qncnameconstructor_p.h" line="+83"/>
+ <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 type="unfinished"></translation>
</message>
@@ -7159,33 +7185,33 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qpath.cpp" line="+79"/>
+ <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 type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qprocessinginstructionconstructor.cpp" line="+54"/>
+ <location filename="../src/xmlpatterns/expr/qprocessinginstructionconstructor.cpp" line="+84"/>
<source>The data of a processing instruction cannot contain the string %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qqnameconstructor.cpp" line="+52"/>
+ <location filename="../src/xmlpatterns/expr/qqnameconstructor.cpp" line="+82"/>
<source>No namespace binding exists for the prefix %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qqnameconstructor_p.h" line="+126"/>
+ <location filename="../src/xmlpatterns/expr/qqnameconstructor_p.h" line="+156"/>
<source>No namespace binding exists for the prefix %1 in %2</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+12"/>
- <location filename="../src/xmlpatterns/functions/qqnamefns.cpp" line="+39"/>
+ <location filename="../src/xmlpatterns/functions/qqnamefns.cpp" line="+69"/>
<source>%1 is an invalid %2</source>
<translation type="unfinished"></translation>
</message>
<message numerus="yes">
- <location filename="../src/xmlpatterns/functions/qabstractfunctionfactory.cpp" line="+47"/>
+ <location filename="../src/xmlpatterns/functions/qabstractfunctionfactory.cpp" line="+77"/>
<source>%1 takes at most %n argument(s). %2 is therefore invalid.</source>
<translation type="unfinished">
<numerusform></numerusform>
@@ -7201,7 +7227,7 @@ Please choose a different file name.</source>
</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qaggregatefns.cpp" line="+90"/>
+ <location filename="../src/xmlpatterns/functions/qaggregatefns.cpp" line="+120"/>
<source>The first argument to %1 cannot be of type %2. It must be a numeric type, xs:yearMonthDuration or xs:dayTimeDuration.</source>
<translation type="unfinished"></translation>
</message>
@@ -7216,27 +7242,27 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qassemblestringfns.cpp" line="+58"/>
+ <location filename="../src/xmlpatterns/functions/qassemblestringfns.cpp" line="+88"/>
<source>%1 is not a valid XML 1.0 character.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qcomparingaggregator.cpp" line="+167"/>
+ <location filename="../src/xmlpatterns/functions/qcomparingaggregator.cpp" line="+197"/>
<source>The first argument to %1 cannot be of type %2.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qdatetimefn.cpp" line="+56"/>
+ <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 type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qerrorfn.cpp" line="+31"/>
+ <location filename="../src/xmlpatterns/functions/qerrorfn.cpp" line="+61"/>
<source>%1 was called.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qpatternmatchingfns.cpp" line="+64"/>
+ <location filename="../src/xmlpatterns/functions/qpatternmatchingfns.cpp" line="+94"/>
<source>%1 must be followed by %2 or %3, not at the end of the replacement string.</source>
<translation type="unfinished"></translation>
</message>
@@ -7251,7 +7277,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qpatternplatform.cpp" line="+62"/>
+ <location filename="../src/xmlpatterns/functions/qpatternplatform.cpp" line="+92"/>
<source>%1 matches newline characters</source>
<translation type="unfinished"></translation>
</message>
@@ -7286,17 +7312,17 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qsequencefns.cpp" line="+317"/>
+ <location filename="../src/xmlpatterns/functions/qsequencefns.cpp" line="+347"/>
<source>It will not be possible to retrieve %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qcontextnodechecker.cpp" line="+24"/>
+ <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 type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qsequencegeneratingfns.cpp" line="+249"/>
+ <location filename="../src/xmlpatterns/functions/qsequencegeneratingfns.cpp" line="+279"/>
<source>The default collection is undefined</source>
<translation type="unfinished"></translation>
</message>
@@ -7306,12 +7332,12 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qstringvaluefns.cpp" line="+222"/>
+ <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 type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qtimezonefns.cpp" line="+57"/>
+ <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 type="unfinished"></translation>
</message>
@@ -7321,17 +7347,17 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/janitors/qcardinalityverifier.cpp" line="+28"/>
+ <location filename="../src/xmlpatterns/janitors/qcardinalityverifier.cpp" line="+58"/>
<source>Required cardinality is %1; got cardinality %2.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/janitors/qitemverifier.cpp" line="+37"/>
+ <location filename="../src/xmlpatterns/janitors/qitemverifier.cpp" line="+67"/>
<source>The item %1 did not match the required type %2.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="+319"/>
+ <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="+379"/>
<location line="+7253"/>
<source>%1 is an unknown schema type.</source>
<translation type="unfinished"></translation>
@@ -7352,7 +7378,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/parser/qparsercontext.cpp" line="+63"/>
+ <location filename="../src/xmlpatterns/parser/qparsercontext.cpp" line="+93"/>
<source>The variable %1 is unused</source>
<translation type="unfinished"></translation>
</message>
@@ -7634,7 +7660,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/type/qcardinality.cpp" line="+25"/>
+ <location filename="../src/xmlpatterns/type/qcardinality.cpp" line="+55"/>
<source>empty</source>
<translation type="unfinished"></translation>
</message>
@@ -7659,7 +7685,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/type/qtypechecker.cpp" line="+33"/>
+ <location filename="../src/xmlpatterns/type/qtypechecker.cpp" line="+63"/>
<source>Required type is %1, but %2 was found.</source>
<translation type="unfinished"></translation>
</message>
@@ -7674,7 +7700,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/utils/qoutputvalidator.cpp" line="+56"/>
+ <location filename="../src/xmlpatterns/utils/qoutputvalidator.cpp" line="+86"/>
<source>It&apos;s not possible to add attributes after any other kind of node.</source>
<translation type="unfinished"></translation>
</message>
@@ -7684,12 +7710,12 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/utils/qxpathhelper_p.h" line="+90"/>
+ <location filename="../src/xmlpatterns/utils/qxpathhelper_p.h" line="+120"/>
<source>Only the Unicode Codepoint Collation is supported(%1). %2 is unsupported.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/acceltree/qacceltreeresourceloader.cpp" line="+284"/>
+ <location filename="../src/xmlpatterns/acceltree/qacceltreeresourceloader.cpp" line="+314"/>
<source>%1 is an unsupported encoding.</source>
<translation type="unfinished"></translation>
</message>
@@ -7704,13 +7730,13 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qapplytemplate.cpp" line="+89"/>
+ <location filename="../src/xmlpatterns/expr/qapplytemplate.cpp" line="+119"/>
<source>Ambiguous rule match.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qcomputednamespaceconstructor.cpp" line="+39"/>
- <source>In a namespace constructor, the value for a namespace value cannot be an empty string.</source>
+ <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 type="unfinished"></translation>
</message>
<message>
@@ -7729,12 +7755,12 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qevaluationcache.cpp" line="+87"/>
+ <location filename="../src/xmlpatterns/expr/qevaluationcache.cpp" line="+117"/>
<source>Circularity detected</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qtemplate.cpp" line="+115"/>
+ <location filename="../src/xmlpatterns/expr/qtemplate.cpp" line="+145"/>
<source>The parameter %1 is required, but no corresponding %2 is supplied.</source>
<translation type="unfinished"></translation>
</message>
@@ -7744,12 +7770,12 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qunparsedtextfn.cpp" line="+35"/>
+ <location filename="../src/xmlpatterns/functions/qunparsedtextfn.cpp" line="+65"/>
<source>The URI cannot have a fragment</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/parser/qxslttokenizer.cpp" line="+489"/>
+ <location filename="../src/xmlpatterns/parser/qxslttokenizer.cpp" line="+519"/>
<source>Element %1 is not allowed at this location.</source>
<translation type="unfinished"></translation>
</message>
@@ -7804,7 +7830,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/parser/qmaintainingreader.cpp" line="+153"/>
+ <location filename="../src/xmlpatterns/parser/qmaintainingreader.cpp" line="+183"/>
<source>Attribute %1 cannot appear on the element %2. Only the standard attributes can appear.</source>
<translation type="unfinished"></translation>
</message>
@@ -7879,7 +7905,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+432"/>
+ <location line="+434"/>
<source>Element %1 cannot have a sequence constructor.</source>
<translation type="unfinished"></translation>
</message>
diff --git a/translations/qt_ru.ts b/translations/qt_ru.ts
index 3d05b71..28e786b 100644
--- a/translations/qt_ru.ts
+++ b/translations/qt_ru.ts
@@ -4,7 +4,7 @@
<context>
<name>AudioOutput</name>
<message>
- <location filename="../src/3rdparty/phonon/phonon/audiooutput.cpp" line="+374"/>
+ <location filename="../src/3rdparty/phonon/phonon/audiooutput.cpp" line="+375"/>
<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="unfinished"></translation>
</message>
@@ -22,7 +22,7 @@
<context>
<name>CloseButton</name>
<message>
- <location filename="../src/gui/widgets/qtabbar.cpp" line="+2217"/>
+ <location filename="../src/gui/widgets/qtabbar.cpp" line="+2251"/>
<source>Close Tab</source>
<translation type="unfinished"></translation>
</message>
@@ -85,7 +85,7 @@
<context>
<name>Phonon::Gstreamer::MediaObject</name>
<message>
- <location filename="../src/3rdparty/phonon/gstreamer/mediaobject.cpp" line="+88"/>
+ <location filename="../src/3rdparty/phonon/gstreamer/mediaobject.cpp" line="+90"/>
<source>Cannot start playback.
Check your Gstreamer installation and make sure you
@@ -98,24 +98,24 @@ have libgstreamer-plugins-base installed.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+653"/>
- <location line="+9"/>
+ <location line="+676"/>
+ <location line="+8"/>
<location line="+15"/>
- <location line="+7"/>
- <location line="+5"/>
- <location line="+20"/>
- <location line="+317"/>
+ <location line="+9"/>
+ <location line="+6"/>
+ <location line="+19"/>
+ <location line="+335"/>
<location line="+24"/>
<source>Could not open media source.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-381"/>
+ <location line="-403"/>
<source>Invalid source type.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+355"/>
+ <location line="+377"/>
<source>Could not locate media source.</source>
<translation type="unfinished"></translation>
</message>
@@ -149,7 +149,7 @@ have libgstreamer-plugins-base installed.</source>
<context>
<name>Q3Accel</name>
<message>
- <location filename="../src/qt3support/other/q3accel.cpp" line="+451"/>
+ <location filename="../src/qt3support/other/q3accel.cpp" line="+481"/>
<source>%1, %2 not defined</source>
<translation type="unfinished"></translation>
</message>
@@ -162,7 +162,7 @@ have libgstreamer-plugins-base installed.</source>
<context>
<name>Q3DataTable</name>
<message>
- <location filename="../src/qt3support/sql/q3datatable.cpp" line="+253"/>
+ <location filename="../src/qt3support/sql/q3datatable.cpp" line="+285"/>
<source>True</source>
<translation type="unfinished">True</translation>
</message>
@@ -190,7 +190,7 @@ have libgstreamer-plugins-base installed.</source>
<context>
<name>Q3FileDialog</name>
<message>
- <location filename="../src/qt3support/dialogs/q3filedialog.cpp" line="+834"/>
+ <location filename="../src/qt3support/dialogs/q3filedialog.cpp" line="+864"/>
<source>Copy or Move a File</source>
<translation type="unfinished">Копировать или перемеÑтить файл</translation>
</message>
@@ -215,7 +215,7 @@ have libgstreamer-plugins-base installed.</source>
<location line="-157"/>
<location line="+49"/>
<location line="+2153"/>
- <location filename="../src/qt3support/dialogs/q3filedialog_mac.cpp" line="+80"/>
+ <location filename="../src/qt3support/dialogs/q3filedialog_mac.cpp" line="+110"/>
<source>All Files (*)</source>
<translation type="unfinished">Ð’Ñе файлы (*)</translation>
</message>
@@ -355,7 +355,7 @@ have libgstreamer-plugins-base installed.</source>
<message>
<location line="+704"/>
<location line="+2100"/>
- <location filename="../src/qt3support/dialogs/q3filedialog_win.cpp" line="+307"/>
+ <location filename="../src/qt3support/dialogs/q3filedialog_win.cpp" line="+337"/>
<source>Open</source>
<translation type="unfinished">Открыть</translation>
</message>
@@ -523,7 +523,7 @@ Check path and filename.</source>
<context>
<name>Q3LocalFs</name>
<message>
- <location filename="../src/qt3support/network/q3localfs.cpp" line="+100"/>
+ <location filename="../src/qt3support/network/q3localfs.cpp" line="+130"/>
<location line="+10"/>
<source>Could not read directory
%1</source>
@@ -573,7 +573,7 @@ to
<context>
<name>Q3MainWindow</name>
<message>
- <location filename="../src/qt3support/widgets/q3mainwindow.cpp" line="+2021"/>
+ <location filename="../src/qt3support/widgets/q3mainwindow.cpp" line="+2051"/>
<source>Line up</source>
<translation type="unfinished">ВыровнÑÑ‚ÑŒ</translation>
</message>
@@ -586,7 +586,7 @@ to
<context>
<name>Q3NetworkProtocol</name>
<message>
- <location filename="../src/qt3support/network/q3networkprotocol.cpp" line="+824"/>
+ <location filename="../src/qt3support/network/q3networkprotocol.cpp" line="+854"/>
<source>Operation stopped by the user</source>
<translation type="unfinished">ÐžÐ¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð¿Ñ€ÐµÑ€Ð²Ð°Ð½Ð° пользователем</translation>
</message>
@@ -594,7 +594,7 @@ to
<context>
<name>Q3ProgressDialog</name>
<message>
- <location filename="../src/qt3support/dialogs/q3progressdialog.cpp" line="+194"/>
+ <location filename="../src/qt3support/dialogs/q3progressdialog.cpp" line="+224"/>
<location line="+61"/>
<source>Cancel</source>
<translation type="unfinished">Отмена</translation>
@@ -603,7 +603,7 @@ to
<context>
<name>Q3TabDialog</name>
<message>
- <location filename="../src/qt3support/dialogs/q3tabdialog.cpp" line="+159"/>
+ <location filename="../src/qt3support/dialogs/q3tabdialog.cpp" line="+189"/>
<location line="+814"/>
<source>OK</source>
<translation type="unfinished">OK</translation>
@@ -632,7 +632,7 @@ to
<context>
<name>Q3TextEdit</name>
<message>
- <location filename="../src/qt3support/text/q3textedit.cpp" line="+5399"/>
+ <location filename="../src/qt3support/text/q3textedit.cpp" line="+5429"/>
<source>&amp;Undo</source>
<translation type="unfinished">&amp;Отменить</translation>
</message>
@@ -671,7 +671,7 @@ to
<context>
<name>Q3TitleBar</name>
<message>
- <location filename="../src/plugins/accessible/compat/q3complexwidgets.cpp" line="+216"/>
+ <location filename="../src/plugins/accessible/compat/q3complexwidgets.cpp" line="+246"/>
<source>System</source>
<translation type="unfinished"></translation>
</message>
@@ -739,7 +739,7 @@ to
<context>
<name>Q3ToolBar</name>
<message>
- <location filename="../src/qt3support/widgets/q3toolbar.cpp" line="+662"/>
+ <location filename="../src/qt3support/widgets/q3toolbar.cpp" line="+692"/>
<source>More...</source>
<translation type="unfinished">Больше...</translation>
</message>
@@ -747,7 +747,7 @@ to
<context>
<name>Q3UrlOperator</name>
<message>
- <location filename="../src/qt3support/network/q3urloperator.cpp" line="+356"/>
+ <location filename="../src/qt3support/network/q3urloperator.cpp" line="+386"/>
<location line="+260"/>
<location line="+4"/>
<source>The protocol `%1&apos; is not supported</source>
@@ -799,7 +799,7 @@ to
<context>
<name>Q3Wizard</name>
<message>
- <location filename="../src/qt3support/dialogs/q3wizard.cpp" line="+147"/>
+ <location filename="../src/qt3support/dialogs/q3wizard.cpp" line="+177"/>
<source>&amp;Cancel</source>
<translation type="unfinished">&amp;Отмена</translation>
</message>
@@ -827,9 +827,9 @@ to
<context>
<name>QAbstractSocket</name>
<message>
- <location filename="../src/network/socket/qabstractsocket.cpp" line="+838"/>
- <location filename="../src/network/socket/qhttpsocketengine.cpp" line="+585"/>
- <location filename="../src/network/socket/qsocks5socketengine.cpp" line="+627"/>
+ <location filename="../src/network/socket/qabstractsocket.cpp" line="+868"/>
+ <location filename="../src/network/socket/qhttpsocketengine.cpp" line="+615"/>
+ <location filename="../src/network/socket/qsocks5socketengine.cpp" line="+657"/>
<location line="+26"/>
<source>Host not found</source>
<translation type="unfinished"></translation>
@@ -872,7 +872,7 @@ to
<context>
<name>QAbstractSpinBox</name>
<message>
- <location filename="../src/gui/widgets/qabstractspinbox.cpp" line="+1169"/>
+ <location filename="../src/gui/widgets/qabstractspinbox.cpp" line="+1199"/>
<source>&amp;Step up</source>
<translation type="unfinished"></translation>
</message>
@@ -890,13 +890,13 @@ to
<context>
<name>QApplication</name>
<message>
- <location filename="../src/gui/kernel/qapplication.cpp" line="+2212"/>
+ <location filename="../src/gui/kernel/qapplication.cpp" line="+2248"/>
<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>
<message>
- <location filename="../src/gui/dialogs/qmessagebox.h" line="+322"/>
+ <location filename="../src/gui/dialogs/qmessagebox.h" line="+352"/>
<source>Executable &apos;%1&apos; requires Qt %2, found Qt %3.</source>
<translation>Программный модуль &apos;%1&apos; требует Qt %2, найдена верÑÐ¸Ñ %3.</translation>
</message>
@@ -906,7 +906,7 @@ to
<translation>Ошибка ÑовмеÑтимоÑти библиотеки Qt</translation>
</message>
<message>
- <location filename="../src/gui/accessible/qaccessibleobject.cpp" line="+346"/>
+ <location filename="../src/gui/accessible/qaccessibleobject.cpp" line="+376"/>
<source>Activate</source>
<translation type="unfinished"></translation>
</message>
@@ -942,7 +942,7 @@ to
<context>
<name>QCheckBox</name>
<message>
- <location filename="../src/plugins/accessible/widgets/simplewidgets.cpp" line="+84"/>
+ <location filename="../src/plugins/accessible/widgets/simplewidgets.cpp" line="+114"/>
<source>Uncheck</source>
<translation type="unfinished"></translation>
</message>
@@ -960,7 +960,7 @@ to
<context>
<name>QColorDialog</name>
<message>
- <location filename="../src/gui/dialogs/qcolordialog.cpp" line="+1219"/>
+ <location filename="../src/gui/dialogs/qcolordialog.cpp" line="+1253"/>
<source>Hu&amp;e:</source>
<translation>&amp;Тон:</translation>
</message>
@@ -1034,13 +1034,13 @@ to
<context>
<name>QComboBox</name>
<message>
- <location filename="../src/plugins/accessible/widgets/complexwidgets.cpp" line="+1741"/>
+ <location filename="../src/plugins/accessible/widgets/complexwidgets.cpp" line="+1771"/>
<location line="+65"/>
<source>Open</source>
<translation type="unfinished">Открыть</translation>
</message>
<message>
- <location filename="../src/gui/itemviews/qitemeditorfactory.cpp" line="+514"/>
+ <location filename="../src/gui/itemviews/qitemeditorfactory.cpp" line="+544"/>
<source>False</source>
<translation type="unfinished">False</translation>
</message>
@@ -1058,7 +1058,7 @@ to
<context>
<name>QCoreApplication</name>
<message>
- <location filename="../src/corelib/kernel/qsystemsemaphore_unix.cpp" line="+89"/>
+ <location filename="../src/corelib/kernel/qsystemsemaphore_unix.cpp" line="+119"/>
<source>%1: key is empty</source>
<comment>QSystemSemaphore</comment>
<translation type="unfinished"></translation>
@@ -1079,12 +1079,12 @@ to
<context>
<name>QDB2Driver</name>
<message>
- <location filename="../src/sql/drivers/db2/qsql_db2.cpp" line="+1217"/>
+ <location filename="../src/sql/drivers/db2/qsql_db2.cpp" line="+1276"/>
<source>Unable to connect</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+263"/>
+ <location line="+303"/>
<source>Unable to commit transaction</source>
<translation type="unfinished"></translation>
</message>
@@ -1102,8 +1102,8 @@ to
<context>
<name>QDB2Result</name>
<message>
- <location line="-986"/>
- <location line="+242"/>
+ <location line="-1043"/>
+ <location line="+243"/>
<source>Unable to execute statement</source>
<translation type="unfinished"></translation>
</message>
@@ -1118,7 +1118,7 @@ to
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+91"/>
+ <location line="+92"/>
<source>Unable to fetch record %1</source>
<translation type="unfinished"></translation>
</message>
@@ -1136,7 +1136,7 @@ to
<context>
<name>QDateTimeEdit</name>
<message>
- <location filename="../src/gui/widgets/qdatetimeedit.cpp" line="+2265"/>
+ <location filename="../src/gui/widgets/qdatetimeedit.cpp" line="+2295"/>
<source>AM</source>
<translation type="unfinished"></translation>
</message>
@@ -1159,7 +1159,7 @@ to
<context>
<name>QDial</name>
<message>
- <location filename="../src/plugins/accessible/widgets/rangecontrols.cpp" line="+921"/>
+ <location filename="../src/plugins/accessible/widgets/rangecontrols.cpp" line="+951"/>
<source>QDial</source>
<translation type="unfinished"></translation>
</message>
@@ -1177,7 +1177,7 @@ to
<context>
<name>QDialog</name>
<message>
- <location filename="../src/gui/dialogs/qdialog.cpp" line="+567"/>
+ <location filename="../src/gui/dialogs/qdialog.cpp" line="+597"/>
<source>What&apos;s This?</source>
<translation>Что Ñто?</translation>
</message>
@@ -1190,9 +1190,9 @@ to
<context>
<name>QDialogButtonBox</name>
<message>
- <location filename="../src/gui/dialogs/qmessagebox.cpp" line="+1830"/>
+ <location filename="../src/gui/dialogs/qmessagebox.cpp" line="+1866"/>
<location line="+464"/>
- <location filename="../src/gui/widgets/qdialogbuttonbox.cpp" line="+531"/>
+ <location filename="../src/gui/widgets/qdialogbuttonbox.cpp" line="+561"/>
<source>OK</source>
<translation type="unfinished">OK</translation>
</message>
@@ -1315,7 +1315,7 @@ to
<context>
<name>QDirModel</name>
<message>
- <location filename="../src/gui/itemviews/qdirmodel.cpp" line="+423"/>
+ <location filename="../src/gui/itemviews/qdirmodel.cpp" line="+453"/>
<source>Name</source>
<translation type="unfinished">ИмÑ</translation>
</message>
@@ -1345,7 +1345,7 @@ to
<context>
<name>QDockWidget</name>
<message>
- <location filename="../src/plugins/accessible/widgets/qaccessiblewidgets.cpp" line="+1209"/>
+ <location filename="../src/plugins/accessible/widgets/qaccessiblewidgets.cpp" line="+1239"/>
<source>Close</source>
<translation type="unfinished">Закрыть</translation>
</message>
@@ -1376,7 +1376,7 @@ to
<context>
<name>QErrorMessage</name>
<message>
- <location filename="../src/gui/dialogs/qerrormessage.cpp" line="+361"/>
+ <location filename="../src/gui/dialogs/qerrormessage.cpp" line="+391"/>
<source>&amp;Show this message again</source>
<translation>&amp;Показывать Ñто Ñообщение в дальнейшем</translation>
</message>
@@ -1404,13 +1404,18 @@ to
<context>
<name>QFile</name>
<message>
- <location filename="../src/corelib/io/qfile.cpp" line="+678"/>
- <location line="+130"/>
+ <location filename="../src/corelib/io/qfile.cpp" line="+708"/>
+ <location line="+141"/>
<source>Destination file exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+12"/>
+ <location line="-108"/>
+ <source>Cannot remove source file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+120"/>
<source>Cannot open %1 for input</source>
<translation type="unfinished"></translation>
</message>
@@ -1433,8 +1438,8 @@ to
<context>
<name>QFileDialog</name>
<message>
- <location filename="../src/gui/dialogs/qfiledialog.cpp" line="+484"/>
- <location line="+423"/>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="+515"/>
+ <location line="+444"/>
<source>All Files (*)</source>
<translation>Ð’Ñе файлы (*)</translation>
</message>
@@ -1457,13 +1462,13 @@ to
<translation type="unfinished">Детальный вид</translation>
</message>
<message>
- <location filename="../src/gui/itemviews/qfileiconprovider.cpp" line="+384"/>
+ <location filename="../src/gui/itemviews/qfileiconprovider.cpp" line="+414"/>
<location line="+1"/>
<source>File</source>
<translation type="unfinished">Файл</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-440"/>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-461"/>
<source>Open</source>
<translation>Открыть</translation>
</message>
@@ -1473,26 +1478,26 @@ to
<translation type="unfinished">Сохранить как</translation>
</message>
<message>
- <location line="+653"/>
+ <location line="+678"/>
<location line="+50"/>
- <location line="+1440"/>
+ <location line="+1471"/>
<location line="+75"/>
<source>&amp;Open</source>
<translation>&amp;Открыть</translation>
</message>
<message>
- <location line="-1565"/>
+ <location line="-1596"/>
<location line="+50"/>
<source>&amp;Save</source>
<translation>&amp;Сохранить</translation>
</message>
<message>
- <location line="+1790"/>
+ <location line="+1822"/>
<source>Recent Places</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-2464"/>
+ <location line="-2521"/>
<source>&amp;Rename</source>
<translation type="unfinished">&amp;Переименовать</translation>
</message>
@@ -1507,33 +1512,33 @@ to
<translation type="unfinished">Показать &amp;Ñкрытые файлы</translation>
</message>
<message>
- <location line="+1908"/>
+ <location line="+1964"/>
<source>New Folder</source>
<translation type="unfinished">Ðовый каталог</translation>
</message>
<message>
- <location line="-1943"/>
+ <location line="-1999"/>
<source>Find Directory</source>
<translation type="unfinished">Ðайти каталог</translation>
</message>
<message>
- <location line="+660"/>
+ <location line="+685"/>
<source>Directories</source>
<translation>Каталоги</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfiledialog_win.cpp" line="+130"/>
+ <location filename="../src/gui/dialogs/qfiledialog_win.cpp" line="+160"/>
<source>All Files (*.*)</source>
<translation type="unfinished">Ð’Ñе файлы (*.*)</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-619"/>
- <location line="+623"/>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-644"/>
+ <location line="+648"/>
<source>Directory:</source>
<translation type="unfinished">Каталог:</translation>
</message>
<message>
- <location line="+807"/>
+ <location line="+828"/>
<source>%1 already exists.
Do you want to replace it?</source>
<translation type="unfinished"></translation>
@@ -1564,14 +1569,14 @@ Please verify the correct file name was given.</source>
</message>
<message>
<location filename="../src/gui/dialogs/qfiledialog.cpp" line="-54"/>
- <location line="+851"/>
+ <location line="+862"/>
<source>%1
Directory not found.
Please verify the correct directory name was given.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-217"/>
+ <location line="-218"/>
<source>&apos;%1&apos; is write protected.
Do you want to delete it anyway?</source>
<translation type="unfinished"></translation>
@@ -1597,7 +1602,7 @@ Do you want to delete it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-2062"/>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-2118"/>
<source>Show </source>
<translation type="unfinished"></translation>
</message>
@@ -1613,19 +1618,19 @@ Do you want to delete it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+631"/>
+ <location line="+656"/>
<location line="+38"/>
<source>&amp;Choose</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qsidebar.cpp" line="+388"/>
+ <location filename="../src/gui/dialogs/qsidebar.cpp" line="+418"/>
<source>Remove</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-662"/>
- <location line="+627"/>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-687"/>
+ <location line="+652"/>
<source>File &amp;name:</source>
<translation type="unfinished">&amp;Ð˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°:</translation>
</message>
@@ -1645,7 +1650,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QFileSystemModel</name>
<message>
- <location filename="../src/gui/dialogs/qfilesystemmodel.cpp" line="+707"/>
+ <location filename="../src/gui/dialogs/qfilesystemmodel.cpp" line="+744"/>
<source>%1 TB</source>
<translation type="unfinished"></translation>
</message>
@@ -1707,7 +1712,7 @@ Do you want to delete it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfilesystemmodel_p.h" line="+204"/>
+ <location filename="../src/gui/dialogs/qfilesystemmodel_p.h" line="+234"/>
<source>My Computer</source>
<translation type="unfinished"></translation>
</message>
@@ -1720,7 +1725,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QFontDatabase</name>
<message>
- <location filename="../src/gui/text/qfontdatabase.cpp" line="+60"/>
+ <location filename="../src/gui/text/qfontdatabase.cpp" line="+90"/>
<location line="+1176"/>
<source>Normal</source>
<translation type="unfinished"></translation>
@@ -1937,7 +1942,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QFontDialog</name>
<message>
- <location filename="../src/gui/dialogs/qfontdialog.cpp" line="+742"/>
+ <location filename="../src/gui/dialogs/qfontdialog.cpp" line="+772"/>
<source>&amp;Font</source>
<translation>&amp;Шрифт</translation>
</message>
@@ -1986,7 +1991,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QFtp</name>
<message>
- <location filename="../src/qt3support/network/q3ftp.cpp" line="+2273"/>
+ <location filename="../src/qt3support/network/q3ftp.cpp" line="+2303"/>
<source>Host %1 found</source>
<translation type="unfinished">Обнаружен узел %1</translation>
</message>
@@ -1996,7 +2001,7 @@ Do you want to delete it anyway?</source>
<translation type="unfinished">Узел обнаружен</translation>
</message>
<message>
- <location filename="../src/network/access/qftp.cpp" line="+973"/>
+ <location filename="../src/network/access/qftp.cpp" line="+1003"/>
<location filename="../src/qt3support/network/q3ftp.cpp" line="-1456"/>
<location line="+1451"/>
<source>Connected to host %1</source>
@@ -2132,7 +2137,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QHostInfo</name>
<message>
- <location filename="../src/network/kernel/qhostinfo_p.h" line="+153"/>
+ <location filename="../src/network/kernel/qhostinfo_p.h" line="+183"/>
<source>Unknown error</source>
<translation type="unfinished">ÐеизвеÑÑ‚Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°</translation>
</message>
@@ -2140,11 +2145,11 @@ Do you want to delete it anyway?</source>
<context>
<name>QHostInfoAgent</name>
<message>
- <location filename="../src/network/kernel/qhostinfo_unix.cpp" line="+148"/>
+ <location filename="../src/network/kernel/qhostinfo_unix.cpp" line="+178"/>
<location line="+9"/>
<location line="+64"/>
<location line="+31"/>
- <location filename="../src/network/kernel/qhostinfo_win.cpp" line="+150"/>
+ <location filename="../src/network/kernel/qhostinfo_win.cpp" line="+180"/>
<location line="+9"/>
<location line="+40"/>
<location line="+27"/>
@@ -2170,13 +2175,13 @@ Do you want to delete it anyway?</source>
<context>
<name>QHttp</name>
<message>
- <location filename="../src/network/access/qhttpnetworkconnection.cpp" line="+1712"/>
- <location filename="../src/qt3support/network/q3http.cpp" line="+1806"/>
+ <location filename="../src/network/access/qhttpnetworkconnection.cpp" line="+876"/>
+ <location filename="../src/qt3support/network/q3http.cpp" line="+1836"/>
<source>Connection refused</source>
<translation>Отказано в Ñоединении</translation>
</message>
<message>
- <location filename="../src/network/access/qhttp.cpp" line="+2597"/>
+ <location filename="../src/network/access/qhttp.cpp" line="+2631"/>
<location filename="../src/network/access/qhttpnetworkconnection.cpp" line="-4"/>
<location filename="../src/qt3support/network/q3http.cpp" line="+3"/>
<source>Host %1 not found</source>
@@ -2189,12 +2194,12 @@ Do you want to delete it anyway?</source>
<translation>ÐÐµÐ²ÐµÑ€Ð½Ð°Ñ Ð´Ð»Ð¸Ð½Ð° данных</translation>
</message>
<message>
- <location line="-2200"/>
+ <location line="-2204"/>
<source>HTTPS connection requested but SSL support not compiled in</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+2282"/>
+ <location line="+2286"/>
<location filename="../src/network/access/qhttpnetworkconnection.cpp" line="+10"/>
<location line="+19"/>
<location filename="../src/qt3support/network/q3http.cpp" line="+48"/>
@@ -2233,21 +2238,21 @@ Do you want to delete it anyway?</source>
<translation type="unfinished">Соединение разорвано</translation>
</message>
<message>
- <location filename="../src/network/access/qhttp.cpp" line="-1073"/>
- <location line="+816"/>
+ <location filename="../src/network/access/qhttp.cpp" line="-1077"/>
+ <location line="+820"/>
<location filename="../src/qt3support/network/q3http.cpp" line="-1152"/>
<location line="+567"/>
<source>Unknown error</source>
<translation>ÐеизвеÑÑ‚Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°</translation>
</message>
<message>
- <location line="-564"/>
+ <location line="-568"/>
<location filename="../src/qt3support/network/q3http.cpp" line="-370"/>
<source>Request aborted</source>
<translation>Ð—Ð°Ð¿Ñ€Ð¾Ñ Ð¾Ñ‚Ð¼ÐµÐ½ÐµÐ½</translation>
</message>
<message>
- <location line="+575"/>
+ <location line="+579"/>
<location filename="../src/qt3support/network/q3http.cpp" line="+381"/>
<source>No server set to connect to</source>
<translation>Ðе выбран Ñервер Ð´Ð»Ñ Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ</translation>
@@ -2265,7 +2270,12 @@ Do you want to delete it anyway?</source>
<translation>Получен некорректный HTTP-заголовок</translation>
</message>
<message>
- <location line="+120"/>
+ <location line="+28"/>
+ <source>Unknown authentication method</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+97"/>
<location line="+48"/>
<location filename="../src/qt3support/network/q3http.cpp" line="+40"/>
<location line="+47"/>
@@ -2288,7 +2298,7 @@ Do you want to delete it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-133"/>
+ <location line="-138"/>
<source>Connection refused (or timed out)</source>
<translation type="unfinished"></translation>
</message>
@@ -2369,7 +2379,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QIBaseDriver</name>
<message>
- <location filename="../src/sql/drivers/ibase/qsql_ibase.cpp" line="+1378"/>
+ <location filename="../src/sql/drivers/ibase/qsql_ibase.cpp" line="+1428"/>
<source>Error opening database</source>
<translation type="unfinished"></translation>
</message>
@@ -2392,7 +2402,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QIBaseResult</name>
<message>
- <location line="-1077"/>
+ <location line="-1097"/>
<source>Unable to create BLOB</source>
<translation type="unfinished"></translation>
</message>
@@ -2412,7 +2422,7 @@ Do you want to delete it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+124"/>
+ <location line="+125"/>
<location line="+189"/>
<source>Could not find array</source>
<translation type="unfinished"></translation>
@@ -2482,7 +2492,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QIODevice</name>
<message>
- <location filename="../src/corelib/global/qglobal.cpp" line="+1830"/>
+ <location filename="../src/corelib/global/qglobal.cpp" line="+1869"/>
<source>Permission denied</source>
<translation type="unfinished"></translation>
</message>
@@ -2502,7 +2512,7 @@ Do you want to delete it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/corelib/io/qiodevice.cpp" line="+1506"/>
+ <location filename="../src/corelib/io/qiodevice.cpp" line="+1536"/>
<source>Unknown error</source>
<translation type="unfinished">ÐеизвеÑÑ‚Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°</translation>
</message>
@@ -2510,7 +2520,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QInputContext</name>
<message>
- <location filename="../src/gui/inputmethod/qinputcontextfactory.cpp" line="+212"/>
+ <location filename="../src/gui/inputmethod/qinputcontextfactory.cpp" line="+242"/>
<source>XIM</source>
<translation type="unfinished"></translation>
</message>
@@ -2533,7 +2543,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QInputDialog</name>
<message>
- <location filename="../src/gui/dialogs/qinputdialog.cpp" line="+193"/>
+ <location filename="../src/gui/dialogs/qinputdialog.cpp" line="+223"/>
<source>Enter a value:</source>
<translation type="unfinished"></translation>
</message>
@@ -2541,7 +2551,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QLibrary</name>
<message>
- <location filename="../src/corelib/plugin/qlibrary.cpp" line="+348"/>
+ <location filename="../src/corelib/plugin/qlibrary.cpp" line="+378"/>
<source>Could not mmap &apos;%1&apos;: %2</source>
<translation type="unfinished"></translation>
</message>
@@ -2572,7 +2582,7 @@ Do you want to delete it anyway?</source>
</message>
<message>
<location line="-377"/>
- <location filename="../src/corelib/plugin/qpluginloader.cpp" line="+250"/>
+ <location filename="../src/corelib/plugin/qpluginloader.cpp" line="+280"/>
<source>The shared library was not found.</source>
<translation type="unfinished"></translation>
</message>
@@ -2587,8 +2597,8 @@ Do you want to delete it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/corelib/plugin/qlibrary_unix.cpp" line="+179"/>
- <location filename="../src/corelib/plugin/qlibrary_win.cpp" line="+69"/>
+ <location filename="../src/corelib/plugin/qlibrary_unix.cpp" line="+209"/>
+ <location filename="../src/corelib/plugin/qlibrary_win.cpp" line="+99"/>
<source>Cannot load library %1: %2</source>
<translation type="unfinished"></translation>
</message>
@@ -2608,7 +2618,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QLineEdit</name>
<message>
- <location filename="../src/gui/widgets/qlineedit.cpp" line="+2649"/>
+ <location filename="../src/gui/widgets/qlineedit.cpp" line="+2680"/>
<source>&amp;Undo</source>
<translation type="unfinished">&amp;Отменить</translation>
</message>
@@ -2646,8 +2656,8 @@ Do you want to delete it anyway?</source>
<context>
<name>QLocalServer</name>
<message>
- <location filename="../src/network/socket/qlocalserver.cpp" line="+196"/>
- <location filename="../src/network/socket/qlocalserver_unix.cpp" line="+201"/>
+ <location filename="../src/network/socket/qlocalserver.cpp" line="+226"/>
+ <location filename="../src/network/socket/qlocalserver_unix.cpp" line="+231"/>
<source>%1: Name error</source>
<translation type="unfinished"></translation>
</message>
@@ -2663,7 +2673,7 @@ Do you want to delete it anyway?</source>
</message>
<message>
<location line="+5"/>
- <location filename="../src/network/socket/qlocalserver_win.cpp" line="+127"/>
+ <location filename="../src/network/socket/qlocalserver_win.cpp" line="+158"/>
<source>%1: Unknown error %2</source>
<translation type="unfinished"></translation>
</message>
@@ -2671,8 +2681,8 @@ Do you want to delete it anyway?</source>
<context>
<name>QLocalSocket</name>
<message>
- <location filename="../src/network/socket/qlocalsocket_tcp.cpp" line="+102"/>
- <location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+104"/>
+ <location filename="../src/network/socket/qlocalsocket_tcp.cpp" line="+132"/>
+ <location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+134"/>
<source>%1: Connection refused</source>
<translation type="unfinished"></translation>
</message>
@@ -2685,7 +2695,7 @@ Do you want to delete it anyway?</source>
<message>
<location line="+3"/>
<location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+3"/>
- <location filename="../src/network/socket/qlocalsocket_win.cpp" line="+50"/>
+ <location filename="../src/network/socket/qlocalsocket_win.cpp" line="+80"/>
<location line="+43"/>
<source>%1: Invalid name</source>
<translation type="unfinished"></translation>
@@ -2742,7 +2752,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QMYSQLDriver</name>
<message>
- <location filename="../src/sql/drivers/mysql/qsql_mysql.cpp" line="+1200"/>
+ <location filename="../src/sql/drivers/mysql/qsql_mysql.cpp" line="+1231"/>
<source>Unable to open database &apos;</source>
<translation type="unfinished"></translation>
</message>
@@ -2752,7 +2762,7 @@ Do you want to delete it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+123"/>
+ <location line="+127"/>
<source>Unable to begin transaction</source>
<translation type="unfinished"></translation>
</message>
@@ -2770,7 +2780,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QMYSQLResult</name>
<message>
- <location line="-917"/>
+ <location line="-922"/>
<source>Unable to fetch data</source>
<translation type="unfinished"></translation>
</message>
@@ -2785,7 +2795,7 @@ Do you want to delete it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+189"/>
+ <location line="+190"/>
<location line="+8"/>
<source>Unable to prepare statement</source>
<translation type="unfinished"></translation>
@@ -2830,7 +2840,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QMdiArea</name>
<message>
- <location filename="../src/gui/widgets/qmdiarea.cpp" line="+260"/>
+ <location filename="../src/gui/widgets/qmdiarea.cpp" line="+290"/>
<source>(Untitled)</source>
<translation type="unfinished"></translation>
</message>
@@ -2838,7 +2848,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QMdiSubWindow</name>
<message>
- <location filename="../src/gui/widgets/qmdisubwindow.cpp" line="+250"/>
+ <location filename="../src/gui/widgets/qmdisubwindow.cpp" line="+280"/>
<source>%1 - [%2]</source>
<translation type="unfinished">%1 - [%2]</translation>
</message>
@@ -2931,7 +2941,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QMenu</name>
<message>
- <location filename="../src/plugins/accessible/widgets/qaccessiblemenu.cpp" line="+127"/>
+ <location filename="../src/plugins/accessible/widgets/qaccessiblemenu.cpp" line="+157"/>
<location line="+225"/>
<source>Close</source>
<translation type="unfinished">Закрыть</translation>
@@ -2988,7 +2998,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QMessageBox</name>
<message>
- <location filename="../src/gui/dialogs/qmessagebox.cpp" line="-1958"/>
+ <location filename="../src/gui/dialogs/qmessagebox.cpp" line="-1964"/>
<location line="+852"/>
<location filename="../src/gui/dialogs/qmessagebox.h" line="-52"/>
<location line="+8"/>
@@ -2996,22 +3006,17 @@ Do you want to delete it anyway?</source>
<translation>OK</translation>
</message>
<message>
- <location line="+503"/>
+ <location line="+509"/>
<source>About Qt</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-502"/>
+ <location line="-508"/>
<source>Help</source>
<translation type="unfinished">Справка</translation>
</message>
<message>
- <location line="+487"/>
- <source>&lt;p&gt;This program uses Qt version %1.&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location line="-1584"/>
+ <location line="-1097"/>
<source>Show Details...</source>
<translation type="unfinished"></translation>
</message>
@@ -3022,19 +3027,14 @@ Do you want to delete it anyway?</source>
</message>
<message>
<location line="+1570"/>
- <source>&lt;h3&gt;About Qt&lt;/h3&gt;%1&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 a Nokia product. See &lt;a href=&quot;http://qtsoftware.com/qt/&quot;&gt;qtsoftware.com/qt/&lt;/a&gt; for more information.&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location line="+15"/>
- <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://qtsoftware.com/company/model/&quot;&gt;qtsoftware.com/company/model/&lt;/a&gt; for an overview of Qt licensing.&lt;/p&gt;</source>
+ <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://www.qtsoftware.com/products/licensing&quot;&gt;www.qtsoftware.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://www.qtsoftware.com/qt/&quot;&gt;www.qtsoftware.com/qt&lt;/a&gt; for more information.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>QMultiInputContext</name>
<message>
- <location filename="../src/plugins/inputmethods/imsw-multi/qmultiinputcontext.cpp" line="+58"/>
+ <location filename="../src/plugins/inputmethods/imsw-multi/qmultiinputcontext.cpp" line="+88"/>
<source>Select IM</source>
<translation type="unfinished"></translation>
</message>
@@ -3042,7 +3042,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QMultiInputContextPlugin</name>
<message>
- <location filename="../src/plugins/inputmethods/imsw-multi/qmultiinputcontextplugin.cpp" line="+65"/>
+ <location filename="../src/plugins/inputmethods/imsw-multi/qmultiinputcontextplugin.cpp" line="+95"/>
<source>Multiple input method switcher</source>
<translation type="unfinished"></translation>
</message>
@@ -3055,7 +3055,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QNativeSocketEngine</name>
<message>
- <location filename="../src/network/socket/qnativesocketengine.cpp" line="+176"/>
+ <location filename="../src/network/socket/qnativesocketengine.cpp" line="+206"/>
<source>The remote host closed the connection</source>
<translation type="unfinished"></translation>
</message>
@@ -3188,7 +3188,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QNetworkAccessCacheBackend</name>
<message>
- <location filename="../src/network/access/qnetworkaccesscachebackend.cpp" line="+35"/>
+ <location filename="../src/network/access/qnetworkaccesscachebackend.cpp" line="+65"/>
<source>Error opening %1</source>
<translation type="unfinished"></translation>
</message>
@@ -3196,7 +3196,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QNetworkAccessFileBackend</name>
<message>
- <location filename="../src/network/access/qnetworkaccessfilebackend.cpp" line="+69"/>
+ <location filename="../src/network/access/qnetworkaccessfilebackend.cpp" line="+99"/>
<source>Request for opening non-local file %1</source>
<translation type="unfinished"></translation>
</message>
@@ -3224,7 +3224,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QNetworkAccessFtpBackend</name>
<message>
- <location filename="../src/network/access/qnetworkaccessftpbackend.cpp" line="+135"/>
+ <location filename="../src/network/access/qnetworkaccessftpbackend.cpp" line="+165"/>
<source>No suitable proxy found</source>
<translation type="unfinished"></translation>
</message>
@@ -3234,7 +3234,7 @@ Do you want to delete it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+131"/>
+ <location line="+130"/>
<source>Logging in to %1 failed: authentication required</source>
<translation type="unfinished"></translation>
</message>
@@ -3252,7 +3252,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QNetworkAccessHttpBackend</name>
<message>
- <location filename="../src/network/access/qnetworkaccesshttpbackend.cpp" line="+565"/>
+ <location filename="../src/network/access/qnetworkaccesshttpbackend.cpp" line="+597"/>
<source>No suitable proxy found</source>
<translation type="unfinished"></translation>
</message>
@@ -3265,7 +3265,7 @@ Do you want to delete it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/network/access/qnetworkreplyimpl.cpp" line="+37"/>
+ <location filename="../src/network/access/qnetworkreplyimpl.cpp" line="+68"/>
<source>Protocol &quot;%1&quot; is unknown</source>
<translation type="unfinished"></translation>
</message>
@@ -3273,7 +3273,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QNetworkReplyImpl</name>
<message>
- <location line="+422"/>
+ <location line="+432"/>
<location line="+22"/>
<source>Operation canceled</source>
<translation type="unfinished"></translation>
@@ -3282,7 +3282,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QOCIDriver</name>
<message>
- <location filename="../src/sql/drivers/oci/qsql_oci.cpp" line="+2027"/>
+ <location filename="../src/sql/drivers/oci/qsql_oci.cpp" line="+2069"/>
<source>Unable to logon</source>
<translation type="unfinished"></translation>
</message>
@@ -3311,7 +3311,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QOCIResult</name>
<message>
- <location line="-976"/>
+ <location line="-963"/>
<location line="+161"/>
<location line="+15"/>
<source>Unable to bind column for batch execute</source>
@@ -3338,18 +3338,12 @@ Do you want to delete it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+29"/>
- <location line="+37"/>
+ <location line="+36"/>
<source>Unable to bind value</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-20"/>
- <source>Unable to execute select statement</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location line="+32"/>
+ <location line="+19"/>
<source>Unable to execute statement</source>
<translation type="unfinished"></translation>
</message>
@@ -3357,7 +3351,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QODBCDriver</name>
<message>
- <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="+1657"/>
+ <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="+1785"/>
<source>Unable to connect</source>
<translation type="unfinished"></translation>
</message>
@@ -3367,7 +3361,7 @@ Do you want to delete it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+234"/>
+ <location line="+242"/>
<source>Unable to disable autocommit</source>
<translation type="unfinished"></translation>
</message>
@@ -3390,19 +3384,19 @@ Do you want to delete it anyway?</source>
<context>
<name>QODBCResult</name>
<message>
- <location line="-1204"/>
+ <location line="-1218"/>
<location line="+349"/>
<source>QODBCResult::reset: Unable to set &apos;SQL_CURSOR_STATIC&apos; as statement attribute. Please check your ODBC driver configuration</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="-332"/>
- <location line="+625"/>
+ <location line="+626"/>
<source>Unable to execute statement</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-554"/>
+ <location line="-555"/>
<source>Unable to fetch next</source>
<translation type="unfinished"></translation>
</message>
@@ -3412,19 +3406,19 @@ Do you want to delete it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+267"/>
+ <location line="+268"/>
<source>Unable to bind variable</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/sql/drivers/db2/qsql_db2.cpp" line="+194"/>
- <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="-474"/>
- <location line="+577"/>
+ <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="-475"/>
+ <location line="+578"/>
<source>Unable to fetch last</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="-671"/>
+ <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="-672"/>
<source>Unable to fetch</source>
<translation type="unfinished"></translation>
</message>
@@ -3442,12 +3436,12 @@ Do you want to delete it anyway?</source>
<context>
<name>QObject</name>
<message>
- <location filename="../src/gui/util/qdesktopservices_mac.cpp" line="+134"/>
+ <location filename="../src/gui/util/qdesktopservices_mac.cpp" line="+165"/>
<source>Home</source>
<translation type="unfinished">Home</translation>
</message>
<message>
- <location filename="../src/network/access/qnetworkaccessdatabackend.cpp" line="+44"/>
+ <location filename="../src/network/access/qnetworkaccessdatabackend.cpp" line="+74"/>
<source>Operation not supported on %1</source>
<translation type="unfinished"></translation>
</message>
@@ -3457,7 +3451,7 @@ Do you want to delete it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/network/access/qnetworkaccessdebugpipebackend.cpp" line="+145"/>
+ <location filename="../src/network/access/qnetworkaccessdebugpipebackend.cpp" line="+175"/>
<source>Write error writing to %1: %2</source>
<translation type="unfinished"></translation>
</message>
@@ -3482,7 +3476,7 @@ Do you want to delete it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/network/kernel/qhostinfo.cpp" line="+147"/>
+ <location filename="../src/network/kernel/qhostinfo.cpp" line="+177"/>
<location line="+57"/>
<source>No host name given</source>
<translation type="unfinished"></translation>
@@ -3491,7 +3485,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QPPDOptionsModel</name>
<message>
- <location filename="../src/gui/dialogs/qprintdialog_unix.cpp" line="+1165"/>
+ <location filename="../src/gui/dialogs/qprintdialog_unix.cpp" line="+1195"/>
<source>Name</source>
<translation type="unfinished">ИмÑ</translation>
</message>
@@ -3504,7 +3498,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QPSQLDriver</name>
<message>
- <location filename="../src/sql/drivers/psql/qsql_psql.cpp" line="+732"/>
+ <location filename="../src/sql/drivers/psql/qsql_psql.cpp" line="+763"/>
<source>Unable to connect</source>
<translation type="unfinished"></translation>
</message>
@@ -3524,7 +3518,7 @@ Do you want to delete it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+336"/>
+ <location line="+358"/>
<source>Unable to subscribe</source>
<translation type="unfinished"></translation>
</message>
@@ -3537,12 +3531,12 @@ Do you want to delete it anyway?</source>
<context>
<name>QPSQLResult</name>
<message>
- <location line="-1035"/>
+ <location line="-1058"/>
<source>Unable to create query</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+373"/>
+ <location line="+374"/>
<source>Unable to prepare statement</source>
<translation type="unfinished"></translation>
</message>
@@ -3550,7 +3544,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QPageSetupWidget</name>
<message>
- <location filename="../src/gui/dialogs/qpagesetupdialog_unix.cpp" line="+274"/>
+ <location filename="../src/gui/dialogs/qpagesetupdialog_unix.cpp" line="+304"/>
<source>Centimeters (cm)</source>
<translation type="unfinished"></translation>
</message>
@@ -3666,7 +3660,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QPrintDialog</name>
<message>
- <location filename="../src/gui/painting/qprinterinfo_unix.cpp" line="+68"/>
+ <location filename="../src/gui/painting/qprinterinfo_unix.cpp" line="+98"/>
<source>locally connected</source>
<translation>локальный</translation>
</message>
@@ -3683,7 +3677,7 @@ Do you want to delete it anyway?</source>
<translation>неизвеÑтно</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qprintdialog_win.cpp" line="+238"/>
+ <location filename="../src/gui/dialogs/qprintdialog_win.cpp" line="+268"/>
<source>OK</source>
<translation type="unfinished">OK</translation>
</message>
@@ -3700,7 +3694,7 @@ Do you want to delete it anyway?</source>
<translation type="obsolete">Принтер</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qprintdialog_qws.cpp" line="+345"/>
+ <location filename="../src/gui/dialogs/qprintdialog_qws.cpp" line="+375"/>
<source>Print all</source>
<translation type="unfinished">Печатать вÑе</translation>
</message>
@@ -3880,7 +3874,7 @@ Do you want to delete it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qabstractprintdialog.cpp" line="+80"/>
+ <location filename="../src/gui/dialogs/qabstractprintdialog.cpp" line="+110"/>
<location line="+13"/>
<location filename="../src/gui/dialogs/qprintdialog_win.cpp" line="-2"/>
<source>Print</source>
@@ -4128,13 +4122,13 @@ Please choose a different file name.</source>
<context>
<name>QPrintPreviewDialog</name>
<message>
- <location filename="../src/gui/dialogs/qabstractpagesetupdialog.cpp" line="+38"/>
+ <location filename="../src/gui/dialogs/qabstractpagesetupdialog.cpp" line="+68"/>
<location line="+12"/>
<source>Page Setup</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qprintpreviewdialog.cpp" line="+222"/>
+ <location filename="../src/gui/dialogs/qprintpreviewdialog.cpp" line="+252"/>
<source>%1%</source>
<translation type="unfinished"></translation>
</message>
@@ -4412,8 +4406,8 @@ Please choose a different file name.</source>
<context>
<name>QProcess</name>
<message>
- <location filename="../src/corelib/io/qprocess_unix.cpp" line="+445"/>
- <location filename="../src/corelib/io/qprocess_win.cpp" line="+117"/>
+ <location filename="../src/corelib/io/qprocess_unix.cpp" line="+475"/>
+ <location filename="../src/corelib/io/qprocess_win.cpp" line="+147"/>
<source>Could not open input redirection for reading</source>
<translation type="unfinished"></translation>
</message>
@@ -4442,7 +4436,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/corelib/io/qprocess.cpp" line="+503"/>
+ <location filename="../src/corelib/io/qprocess.cpp" line="+533"/>
<location line="+52"/>
<location filename="../src/corelib/io/qprocess_win.cpp" line="-211"/>
<location line="+50"/>
@@ -4462,6 +4456,11 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
+ <location line="+912"/>
+ <source>No program defined</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<location filename="../src/corelib/io/qprocess_win.cpp" line="-341"/>
<source>Process failed to start</source>
<translation type="unfinished"></translation>
@@ -4470,7 +4469,7 @@ Please choose a different file name.</source>
<context>
<name>QProgressDialog</name>
<message>
- <location filename="../src/gui/dialogs/qprogressdialog.cpp" line="+152"/>
+ <location filename="../src/gui/dialogs/qprogressdialog.cpp" line="+182"/>
<source>Cancel</source>
<translation>Отмена</translation>
</message>
@@ -4494,7 +4493,7 @@ Please choose a different file name.</source>
<context>
<name>QRegExp</name>
<message>
- <location filename="../src/corelib/tools/qregexp.cpp" line="+34"/>
+ <location filename="../src/corelib/tools/qregexp.cpp" line="+64"/>
<source>no error occurred</source>
<translation>ошибки отÑутÑтвуют</translation>
</message>
@@ -4542,7 +4541,7 @@ Please choose a different file name.</source>
<context>
<name>QSQLite2Driver</name>
<message>
- <location filename="../src/sql/drivers/sqlite2/qsql_sqlite2.cpp" line="+353"/>
+ <location filename="../src/sql/drivers/sqlite2/qsql_sqlite2.cpp" line="+396"/>
<source>Error to open database</source>
<translation type="unfinished"></translation>
</message>
@@ -4565,12 +4564,12 @@ Please choose a different file name.</source>
<context>
<name>QSQLite2Result</name>
<message>
- <location line="-310"/>
+ <location line="-323"/>
<source>Unable to fetch results</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+139"/>
+ <location line="+147"/>
<source>Unable to execute statement</source>
<translation type="unfinished"></translation>
</message>
@@ -4578,7 +4577,7 @@ Please choose a different file name.</source>
<context>
<name>QSQLiteDriver</name>
<message>
- <location filename="../src/sql/drivers/sqlite/qsql_sqlite.cpp" line="+498"/>
+ <location filename="../src/sql/drivers/sqlite/qsql_sqlite.cpp" line="+528"/>
<source>Error opening database</source>
<translation type="unfinished"></translation>
</message>
@@ -4641,12 +4640,12 @@ Please choose a different file name.</source>
<context>
<name>QScrollBar</name>
<message>
- <location filename="../src/gui/widgets/qscrollbar.cpp" line="+419"/>
+ <location filename="../src/gui/widgets/qscrollbar.cpp" line="+448"/>
<source>Scroll here</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+3"/>
+ <location line="+2"/>
<source>Left edge</source>
<translation type="unfinished"></translation>
</message>
@@ -4656,7 +4655,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+2"/>
+ <location line="+1"/>
<source>Right edge</source>
<translation type="unfinished"></translation>
</message>
@@ -4666,7 +4665,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+3"/>
+ <location line="+2"/>
<source>Page left</source>
<translation type="unfinished"></translation>
</message>
@@ -4677,7 +4676,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+2"/>
+ <location line="+1"/>
<source>Page right</source>
<translation type="unfinished"></translation>
</message>
@@ -4688,7 +4687,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+3"/>
+ <location line="+2"/>
<source>Scroll left</source>
<translation type="unfinished"></translation>
</message>
@@ -4698,7 +4697,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+2"/>
+ <location line="+1"/>
<source>Scroll right</source>
<translation type="unfinished"></translation>
</message>
@@ -4726,7 +4725,7 @@ Please choose a different file name.</source>
<context>
<name>QSharedMemory</name>
<message>
- <location filename="../src/corelib/kernel/qsharedmemory.cpp" line="+177"/>
+ <location filename="../src/corelib/kernel/qsharedmemory.cpp" line="+207"/>
<source>%1: unable to set key on lock</source>
<translation type="unfinished"></translation>
</message>
@@ -4737,7 +4736,7 @@ Please choose a different file name.</source>
</message>
<message>
<location line="+168"/>
- <location filename="../src/corelib/kernel/qsharedmemory_p.h" line="+118"/>
+ <location filename="../src/corelib/kernel/qsharedmemory_p.h" line="+148"/>
<source>%1: unable to lock</source>
<translation type="unfinished"></translation>
</message>
@@ -4747,8 +4746,8 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/corelib/kernel/qsharedmemory_unix.cpp" line="+48"/>
- <location filename="../src/corelib/kernel/qsharedmemory_win.cpp" line="+57"/>
+ <location filename="../src/corelib/kernel/qsharedmemory_unix.cpp" line="+78"/>
+ <location filename="../src/corelib/kernel/qsharedmemory_win.cpp" line="+87"/>
<source>%1: permission denied</source>
<translation type="unfinished"></translation>
</message>
@@ -4826,7 +4825,7 @@ Please choose a different file name.</source>
<context>
<name>QShortcut</name>
<message>
- <location filename="../src/gui/kernel/qkeysequence.cpp" line="+343"/>
+ <location filename="../src/gui/kernel/qkeysequence.cpp" line="+373"/>
<source>Space</source>
<translation type="unfinished">Space</translation>
</message>
@@ -5407,7 +5406,7 @@ Please choose a different file name.</source>
<context>
<name>QSql</name>
<message>
- <location filename="../src/qt3support/sql/q3sqlmanager_p.cpp" line="+860"/>
+ <location filename="../src/qt3support/sql/q3sqlmanager_p.cpp" line="+890"/>
<source>Delete</source>
<translation>Удалить</translation>
</message>
@@ -5464,7 +5463,7 @@ Please choose a different file name.</source>
<context>
<name>QSslSocket</name>
<message>
- <location filename="../src/network/ssl/qsslsocket_openssl.cpp" line="+539"/>
+ <location filename="../src/network/ssl/qsslsocket_openssl.cpp" line="+569"/>
<source>Unable to write data: %1</source>
<translation type="unfinished"></translation>
</message>
@@ -5523,7 +5522,7 @@ Please choose a different file name.</source>
<name>QSystemSemaphore</name>
<message>
<location filename="../src/corelib/kernel/qsystemsemaphore_unix.cpp" line="-41"/>
- <location filename="../src/corelib/kernel/qsystemsemaphore_win.cpp" line="+36"/>
+ <location filename="../src/corelib/kernel/qsystemsemaphore_win.cpp" line="+66"/>
<source>%1: out of resources</source>
<translation type="unfinished"></translation>
</message>
@@ -5553,7 +5552,7 @@ Please choose a different file name.</source>
<context>
<name>QTDSDriver</name>
<message>
- <location filename="../src/sql/drivers/tds/qsql_tds.cpp" line="+552"/>
+ <location filename="../src/sql/drivers/tds/qsql_tds.cpp" line="+584"/>
<source>Unable to open connection</source>
<translation type="unfinished"></translation>
</message>
@@ -5579,7 +5578,7 @@ Please choose a different file name.</source>
<context>
<name>QTcpServer</name>
<message>
- <location filename="../src/network/socket/qtcpserver.cpp" line="+252"/>
+ <location filename="../src/network/socket/qtcpserver.cpp" line="+282"/>
<source>Operation on socket is not supported</source>
<translation type="unfinished"></translation>
</message>
@@ -5587,7 +5586,7 @@ Please choose a different file name.</source>
<context>
<name>QTextControl</name>
<message>
- <location filename="../src/gui/text/qtextcontrol.cpp" line="+1942"/>
+ <location filename="../src/gui/text/qtextcontrol.cpp" line="+1973"/>
<source>&amp;Undo</source>
<translation type="unfinished">&amp;Отменить</translation>
</message>
@@ -5645,7 +5644,7 @@ Please choose a different file name.</source>
<context>
<name>QUdpSocket</name>
<message>
- <location filename="../src/network/socket/qudpsocket.cpp" line="+139"/>
+ <location filename="../src/network/socket/qudpsocket.cpp" line="+169"/>
<source>This platform does not support IPv6</source>
<translation type="unfinished"></translation>
</message>
@@ -5653,7 +5652,7 @@ Please choose a different file name.</source>
<context>
<name>QUndoGroup</name>
<message>
- <location filename="../src/gui/util/qundogroup.cpp" line="+356"/>
+ <location filename="../src/gui/util/qundogroup.cpp" line="+386"/>
<source>Undo</source>
<translation type="unfinished">Отменить</translation>
</message>
@@ -5666,7 +5665,7 @@ Please choose a different file name.</source>
<context>
<name>QUndoModel</name>
<message>
- <location filename="../src/gui/util/qundoview.cpp" line="+71"/>
+ <location filename="../src/gui/util/qundoview.cpp" line="+101"/>
<source>&lt;empty&gt;</source>
<translation type="unfinished"></translation>
</message>
@@ -5674,7 +5673,7 @@ Please choose a different file name.</source>
<context>
<name>QUndoStack</name>
<message>
- <location filename="../src/gui/util/qundostack.cpp" line="+804"/>
+ <location filename="../src/gui/util/qundostack.cpp" line="+834"/>
<source>Undo</source>
<translation type="unfinished">Отменить</translation>
</message>
@@ -5745,7 +5744,7 @@ Please choose a different file name.</source>
<context>
<name>QWebFrame</name>
<message>
- <location filename="../src/3rdparty/webkit/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp" line="+686"/>
+ <location filename="../src/3rdparty/webkit/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp" line="+692"/>
<source>Request cancelled</source>
<translation type="unfinished"></translation>
</message>
@@ -6155,7 +6154,7 @@ Please choose a different file name.</source>
</translation>
</message>
<message>
- <location filename="../src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp" line="+1342"/>
+ <location filename="../src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp" line="+1322"/>
<source>JavaScript Alert - %1</source>
<translation type="unfinished"></translation>
</message>
@@ -6231,6 +6230,11 @@ Please choose a different file name.</source>
</message>
<message>
<location line="+3"/>
+ <source>Select all</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
<source>Select to the next character</source>
<translation type="unfinished"></translation>
</message>
@@ -6299,11 +6303,21 @@ Please choose a different file name.</source>
<source>Delete to the end of the word</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <location line="+33"/>
+ <source>Insert a new paragraph</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Insert a new line</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>QWhatsThisAction</name>
<message>
- <location filename="../src/gui/kernel/qwhatsthis.cpp" line="+492"/>
+ <location filename="../src/gui/kernel/qwhatsthis.cpp" line="+522"/>
<source>What&apos;s This?</source>
<translation type="unfinished">Что Ñто?</translation>
</message>
@@ -6311,7 +6325,7 @@ Please choose a different file name.</source>
<context>
<name>QWidget</name>
<message>
- <location filename="../src/gui/kernel/qwidget.cpp" line="+5290"/>
+ <location filename="../src/gui/kernel/qwidget.cpp" line="+5326"/>
<source>*</source>
<translation type="unfinished"></translation>
</message>
@@ -6319,7 +6333,7 @@ Please choose a different file name.</source>
<context>
<name>QWizard</name>
<message>
- <location filename="../src/gui/dialogs/qwizard.cpp" line="+605"/>
+ <location filename="../src/gui/dialogs/qwizard.cpp" line="+637"/>
<source>&lt; &amp;Back</source>
<translation type="unfinished">&lt; &amp;Ðазад</translation>
</message>
@@ -6381,7 +6395,7 @@ Please choose a different file name.</source>
<context>
<name>QWorkspace</name>
<message>
- <location filename="../src/gui/widgets/qworkspace.cpp" line="+1064"/>
+ <location filename="../src/gui/widgets/qworkspace.cpp" line="+1094"/>
<source>&amp;Restore</source>
<translation type="unfinished">&amp;ВоÑÑтановить</translation>
</message>
@@ -6451,7 +6465,7 @@ Please choose a different file name.</source>
<context>
<name>QXml</name>
<message>
- <location filename="../src/xml/sax/qxml.cpp" line="+28"/>
+ <location filename="../src/xml/sax/qxml.cpp" line="+58"/>
<source>no error occurred</source>
<translation>ошибки отÑутÑтвуют</translation>
</message>
@@ -6569,8 +6583,8 @@ Please choose a different file name.</source>
<context>
<name>QXmlStream</name>
<message>
- <location filename="../src/corelib/xml/qxmlstream.cpp" line="+562"/>
- <location filename="../src/corelib/xml/qxmlstream_p.h" line="+1739"/>
+ <location filename="../src/corelib/xml/qxmlstream.cpp" line="+592"/>
+ <location filename="../src/corelib/xml/qxmlstream_p.h" line="+1769"/>
<source>Extra content at end of document.</source>
<translation type="unfinished"></translation>
</message>
@@ -6754,7 +6768,7 @@ Please choose a different file name.</source>
<context>
<name>QtXmlPatterns</name>
<message>
- <location filename="../src/xmlpatterns/acceltree/qacceltreebuilder.cpp" line="+175"/>
+ <location filename="../src/xmlpatterns/acceltree/qacceltreebuilder.cpp" line="+205"/>
<source>An %1-attribute with value %2 has already been declared.</source>
<translation type="unfinished"></translation>
</message>
@@ -6764,12 +6778,12 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/api/qiodevicedelegate.cpp" line="+54"/>
+ <location filename="../src/xmlpatterns/api/qiodevicedelegate.cpp" line="+84"/>
<source>Network timeout.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/api/qxmlserializer.cpp" line="+290"/>
+ <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 type="unfinished"></translation>
</message>
@@ -6779,7 +6793,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qabstractdatetime.cpp" line="+50"/>
+ <location filename="../src/xmlpatterns/data/qabstractdatetime.cpp" line="+80"/>
<source>Year %1 is invalid because it begins with %2.</source>
<translation type="unfinished"></translation>
</message>
@@ -6819,7 +6833,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qabstractduration.cpp" line="+69"/>
+ <location filename="../src/xmlpatterns/data/qabstractduration.cpp" line="+99"/>
<location line="+15"/>
<source>At least one component must be present.</source>
<translation type="unfinished"></translation>
@@ -6830,7 +6844,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qabstractfloatmathematician.cpp" line="+34"/>
+ <location filename="../src/xmlpatterns/data/qabstractfloatmathematician.cpp" line="+64"/>
<source>No operand in an integer division, %1, can be %2.</source>
<translation type="unfinished"></translation>
</message>
@@ -6845,17 +6859,17 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qanyuri_p.h" line="+102"/>
+ <location filename="../src/xmlpatterns/data/qanyuri_p.h" line="+132"/>
<source>%1 is not a valid value of type %2.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qatomiccasters_p.h" line="+193"/>
+ <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 type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qatomicmathematicians.cpp" line="+35"/>
+ <location filename="../src/xmlpatterns/data/qatomicmathematicians.cpp" line="+65"/>
<source>Integer division (%1) by zero (%2) is undefined.</source>
<translation type="unfinished"></translation>
</message>
@@ -6886,17 +6900,17 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qatomicvalue.cpp" line="+49"/>
+ <location filename="../src/xmlpatterns/data/qatomicvalue.cpp" line="+79"/>
<source>A value of type %1 cannot have an Effective Boolean Value.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qboolean.cpp" line="+48"/>
+ <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 type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qderivedinteger_p.h" line="+372"/>
+ <location filename="../src/xmlpatterns/data/qderivedinteger_p.h" line="+402"/>
<source>Value %1 of type %2 exceeds maximum (%3).</source>
<translation type="unfinished"></translation>
</message>
@@ -6906,7 +6920,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qhexbinary.cpp" line="+61"/>
+ <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 type="unfinished"></translation>
</message>
@@ -6916,7 +6930,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qarithmeticexpression.cpp" line="+177"/>
+ <location filename="../src/xmlpatterns/expr/qarithmeticexpression.cpp" line="+207"/>
<source>Operator %1 cannot be used on type %2.</source>
<translation type="unfinished"></translation>
</message>
@@ -6926,7 +6940,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qattributenamevalidator.cpp" line="+36"/>
+ <location filename="../src/xmlpatterns/expr/qattributenamevalidator.cpp" line="+66"/>
<source>The namespace URI in the name for a computed attribute cannot be %1.</source>
<translation type="unfinished"></translation>
</message>
@@ -6936,7 +6950,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qcastas.cpp" line="+58"/>
+ <location filename="../src/xmlpatterns/expr/qcastas.cpp" line="+88"/>
<source>Type error in cast, expected %1, received %2.</source>
<translation type="unfinished"></translation>
</message>
@@ -6946,7 +6960,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qcastingplatform.cpp" line="+104"/>
+ <location filename="../src/xmlpatterns/expr/qcastingplatform.cpp" line="+134"/>
<source>No casting is possible with %1 as the target type.</source>
<translation type="unfinished"></translation>
</message>
@@ -6971,7 +6985,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qcommentconstructor.cpp" line="+37"/>
+ <location filename="../src/xmlpatterns/expr/qcommentconstructor.cpp" line="+67"/>
<source>A comment cannot contain %1</source>
<translation type="unfinished"></translation>
</message>
@@ -6981,7 +6995,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qcomparisonplatform.cpp" line="+137"/>
+ <location filename="../src/xmlpatterns/expr/qcomparisonplatform.cpp" line="+167"/>
<source>No comparisons can be done involving the type %1.</source>
<translation type="unfinished"></translation>
</message>
@@ -6991,12 +7005,12 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qdocumentcontentvalidator.cpp" line="+56"/>
+ <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 type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qexpressionfactory.cpp" line="+139"/>
+ <location filename="../src/xmlpatterns/expr/qexpressionfactory.cpp" line="+169"/>
<source>A library module cannot be evaluated directly. It must be imported from a main module.</source>
<translation type="unfinished"></translation>
</message>
@@ -7006,7 +7020,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qgenericpredicate.cpp" line="+76"/>
+ <location filename="../src/xmlpatterns/expr/qgenericpredicate.cpp" line="+106"/>
<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 type="unfinished"></translation>
</message>
@@ -7016,7 +7030,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qncnameconstructor_p.h" line="+83"/>
+ <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 type="unfinished"></translation>
</message>
@@ -7026,33 +7040,33 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qpath.cpp" line="+79"/>
+ <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 type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qprocessinginstructionconstructor.cpp" line="+54"/>
+ <location filename="../src/xmlpatterns/expr/qprocessinginstructionconstructor.cpp" line="+84"/>
<source>The data of a processing instruction cannot contain the string %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qqnameconstructor.cpp" line="+52"/>
+ <location filename="../src/xmlpatterns/expr/qqnameconstructor.cpp" line="+82"/>
<source>No namespace binding exists for the prefix %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qqnameconstructor_p.h" line="+126"/>
+ <location filename="../src/xmlpatterns/expr/qqnameconstructor_p.h" line="+156"/>
<source>No namespace binding exists for the prefix %1 in %2</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+12"/>
- <location filename="../src/xmlpatterns/functions/qqnamefns.cpp" line="+39"/>
+ <location filename="../src/xmlpatterns/functions/qqnamefns.cpp" line="+69"/>
<source>%1 is an invalid %2</source>
<translation type="unfinished"></translation>
</message>
<message numerus="yes">
- <location filename="../src/xmlpatterns/functions/qabstractfunctionfactory.cpp" line="+47"/>
+ <location filename="../src/xmlpatterns/functions/qabstractfunctionfactory.cpp" line="+77"/>
<source>%1 takes at most %n argument(s). %2 is therefore invalid.</source>
<translation type="unfinished">
<numerusform></numerusform>
@@ -7066,7 +7080,7 @@ Please choose a different file name.</source>
</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qaggregatefns.cpp" line="+90"/>
+ <location filename="../src/xmlpatterns/functions/qaggregatefns.cpp" line="+120"/>
<source>The first argument to %1 cannot be of type %2. It must be a numeric type, xs:yearMonthDuration or xs:dayTimeDuration.</source>
<translation type="unfinished"></translation>
</message>
@@ -7081,27 +7095,27 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qassemblestringfns.cpp" line="+58"/>
+ <location filename="../src/xmlpatterns/functions/qassemblestringfns.cpp" line="+88"/>
<source>%1 is not a valid XML 1.0 character.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qcomparingaggregator.cpp" line="+167"/>
+ <location filename="../src/xmlpatterns/functions/qcomparingaggregator.cpp" line="+197"/>
<source>The first argument to %1 cannot be of type %2.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qdatetimefn.cpp" line="+56"/>
+ <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 type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qerrorfn.cpp" line="+31"/>
+ <location filename="../src/xmlpatterns/functions/qerrorfn.cpp" line="+61"/>
<source>%1 was called.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qpatternmatchingfns.cpp" line="+64"/>
+ <location filename="../src/xmlpatterns/functions/qpatternmatchingfns.cpp" line="+94"/>
<source>%1 must be followed by %2 or %3, not at the end of the replacement string.</source>
<translation type="unfinished"></translation>
</message>
@@ -7116,7 +7130,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qpatternplatform.cpp" line="+62"/>
+ <location filename="../src/xmlpatterns/functions/qpatternplatform.cpp" line="+92"/>
<source>%1 matches newline characters</source>
<translation type="unfinished"></translation>
</message>
@@ -7151,17 +7165,17 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qsequencefns.cpp" line="+317"/>
+ <location filename="../src/xmlpatterns/functions/qsequencefns.cpp" line="+347"/>
<source>It will not be possible to retrieve %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qcontextnodechecker.cpp" line="+24"/>
+ <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 type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qsequencegeneratingfns.cpp" line="+249"/>
+ <location filename="../src/xmlpatterns/functions/qsequencegeneratingfns.cpp" line="+279"/>
<source>The default collection is undefined</source>
<translation type="unfinished"></translation>
</message>
@@ -7171,12 +7185,12 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qstringvaluefns.cpp" line="+222"/>
+ <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 type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qtimezonefns.cpp" line="+57"/>
+ <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 type="unfinished"></translation>
</message>
@@ -7186,17 +7200,17 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/janitors/qcardinalityverifier.cpp" line="+28"/>
+ <location filename="../src/xmlpatterns/janitors/qcardinalityverifier.cpp" line="+58"/>
<source>Required cardinality is %1; got cardinality %2.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/janitors/qitemverifier.cpp" line="+37"/>
+ <location filename="../src/xmlpatterns/janitors/qitemverifier.cpp" line="+67"/>
<source>The item %1 did not match the required type %2.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="+319"/>
+ <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="+379"/>
<location line="+7253"/>
<source>%1 is an unknown schema type.</source>
<translation type="unfinished"></translation>
@@ -7217,7 +7231,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/parser/qparsercontext.cpp" line="+63"/>
+ <location filename="../src/xmlpatterns/parser/qparsercontext.cpp" line="+93"/>
<source>The variable %1 is unused</source>
<translation type="unfinished"></translation>
</message>
@@ -7499,7 +7513,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/type/qcardinality.cpp" line="+25"/>
+ <location filename="../src/xmlpatterns/type/qcardinality.cpp" line="+55"/>
<source>empty</source>
<translation type="unfinished"></translation>
</message>
@@ -7524,7 +7538,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/type/qtypechecker.cpp" line="+33"/>
+ <location filename="../src/xmlpatterns/type/qtypechecker.cpp" line="+63"/>
<source>Required type is %1, but %2 was found.</source>
<translation type="unfinished"></translation>
</message>
@@ -7539,7 +7553,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/utils/qoutputvalidator.cpp" line="+56"/>
+ <location filename="../src/xmlpatterns/utils/qoutputvalidator.cpp" line="+86"/>
<source>It&apos;s not possible to add attributes after any other kind of node.</source>
<translation type="unfinished"></translation>
</message>
@@ -7549,12 +7563,12 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/utils/qxpathhelper_p.h" line="+90"/>
+ <location filename="../src/xmlpatterns/utils/qxpathhelper_p.h" line="+120"/>
<source>Only the Unicode Codepoint Collation is supported(%1). %2 is unsupported.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/acceltree/qacceltreeresourceloader.cpp" line="+284"/>
+ <location filename="../src/xmlpatterns/acceltree/qacceltreeresourceloader.cpp" line="+314"/>
<source>%1 is an unsupported encoding.</source>
<translation type="unfinished"></translation>
</message>
@@ -7569,13 +7583,13 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qapplytemplate.cpp" line="+89"/>
+ <location filename="../src/xmlpatterns/expr/qapplytemplate.cpp" line="+119"/>
<source>Ambiguous rule match.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qcomputednamespaceconstructor.cpp" line="+39"/>
- <source>In a namespace constructor, the value for a namespace value cannot be an empty string.</source>
+ <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 type="unfinished"></translation>
</message>
<message>
@@ -7594,12 +7608,12 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qevaluationcache.cpp" line="+87"/>
+ <location filename="../src/xmlpatterns/expr/qevaluationcache.cpp" line="+117"/>
<source>Circularity detected</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qtemplate.cpp" line="+115"/>
+ <location filename="../src/xmlpatterns/expr/qtemplate.cpp" line="+145"/>
<source>The parameter %1 is required, but no corresponding %2 is supplied.</source>
<translation type="unfinished"></translation>
</message>
@@ -7609,12 +7623,12 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qunparsedtextfn.cpp" line="+35"/>
+ <location filename="../src/xmlpatterns/functions/qunparsedtextfn.cpp" line="+65"/>
<source>The URI cannot have a fragment</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/parser/qxslttokenizer.cpp" line="+489"/>
+ <location filename="../src/xmlpatterns/parser/qxslttokenizer.cpp" line="+519"/>
<source>Element %1 is not allowed at this location.</source>
<translation type="unfinished"></translation>
</message>
@@ -7669,7 +7683,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/parser/qmaintainingreader.cpp" line="+153"/>
+ <location filename="../src/xmlpatterns/parser/qmaintainingreader.cpp" line="+183"/>
<source>Attribute %1 cannot appear on the element %2. Only the standard attributes can appear.</source>
<translation type="unfinished"></translation>
</message>
@@ -7744,7 +7758,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+432"/>
+ <location line="+434"/>
<source>Element %1 cannot have a sequence constructor.</source>
<translation type="unfinished"></translation>
</message>
diff --git a/translations/qt_sk.ts b/translations/qt_sk.ts
index f681d1b..1bf53e7 100644
--- a/translations/qt_sk.ts
+++ b/translations/qt_sk.ts
@@ -4,7 +4,7 @@
<context>
<name>AudioOutput</name>
<message>
- <location filename="../src/3rdparty/phonon/phonon/audiooutput.cpp" line="+374"/>
+ <location filename="../src/3rdparty/phonon/phonon/audiooutput.cpp" line="+375"/>
<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="unfinished"></translation>
</message>
@@ -22,7 +22,7 @@
<context>
<name>CloseButton</name>
<message>
- <location filename="../src/gui/widgets/qtabbar.cpp" line="+2217"/>
+ <location filename="../src/gui/widgets/qtabbar.cpp" line="+2251"/>
<source>Close Tab</source>
<translation type="unfinished"></translation>
</message>
@@ -89,7 +89,7 @@
<context>
<name>Phonon::Gstreamer::MediaObject</name>
<message>
- <location filename="../src/3rdparty/phonon/gstreamer/mediaobject.cpp" line="+88"/>
+ <location filename="../src/3rdparty/phonon/gstreamer/mediaobject.cpp" line="+90"/>
<source>Cannot start playback.
Check your Gstreamer installation and make sure you
@@ -102,24 +102,24 @@ have libgstreamer-plugins-base installed.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+653"/>
- <location line="+9"/>
+ <location line="+676"/>
+ <location line="+8"/>
<location line="+15"/>
- <location line="+7"/>
- <location line="+5"/>
- <location line="+20"/>
- <location line="+317"/>
+ <location line="+9"/>
+ <location line="+6"/>
+ <location line="+19"/>
+ <location line="+335"/>
<location line="+24"/>
<source>Could not open media source.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-381"/>
+ <location line="-403"/>
<source>Invalid source type.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+355"/>
+ <location line="+377"/>
<source>Could not locate media source.</source>
<translation type="unfinished"></translation>
</message>
@@ -153,7 +153,7 @@ have libgstreamer-plugins-base installed.</source>
<context>
<name>Q3Accel</name>
<message>
- <location filename="../src/qt3support/other/q3accel.cpp" line="+451"/>
+ <location filename="../src/qt3support/other/q3accel.cpp" line="+481"/>
<source>%1, %2 not defined</source>
<translation>%1, %2 nie je definované</translation>
</message>
@@ -166,7 +166,7 @@ have libgstreamer-plugins-base installed.</source>
<context>
<name>Q3DataTable</name>
<message>
- <location filename="../src/qt3support/sql/q3datatable.cpp" line="+253"/>
+ <location filename="../src/qt3support/sql/q3datatable.cpp" line="+285"/>
<source>True</source>
<translation>Pravda</translation>
</message>
@@ -194,7 +194,7 @@ have libgstreamer-plugins-base installed.</source>
<context>
<name>Q3FileDialog</name>
<message>
- <location filename="../src/qt3support/dialogs/q3filedialog.cpp" line="+834"/>
+ <location filename="../src/qt3support/dialogs/q3filedialog.cpp" line="+864"/>
<source>Copy or Move a File</source>
<translation>Kopírovať alebo presunúť súbor</translation>
</message>
@@ -219,7 +219,7 @@ have libgstreamer-plugins-base installed.</source>
<location line="-157"/>
<location line="+49"/>
<location line="+2153"/>
- <location filename="../src/qt3support/dialogs/q3filedialog_mac.cpp" line="+80"/>
+ <location filename="../src/qt3support/dialogs/q3filedialog_mac.cpp" line="+110"/>
<source>All Files (*)</source>
<translation>Všetky súbory (*)</translation>
</message>
@@ -359,7 +359,7 @@ have libgstreamer-plugins-base installed.</source>
<message>
<location line="+704"/>
<location line="+2100"/>
- <location filename="../src/qt3support/dialogs/q3filedialog_win.cpp" line="+307"/>
+ <location filename="../src/qt3support/dialogs/q3filedialog_win.cpp" line="+337"/>
<source>Open</source>
<translation>Otvoriť</translation>
</message>
@@ -527,7 +527,7 @@ Overte cestu a meno súboru.</translation>
<context>
<name>Q3LocalFs</name>
<message>
- <location filename="../src/qt3support/network/q3localfs.cpp" line="+100"/>
+ <location filename="../src/qt3support/network/q3localfs.cpp" line="+130"/>
<location line="+10"/>
<source>Could not read directory
%1</source>
@@ -577,7 +577,7 @@ na
<context>
<name>Q3MainWindow</name>
<message>
- <location filename="../src/qt3support/widgets/q3mainwindow.cpp" line="+2021"/>
+ <location filename="../src/qt3support/widgets/q3mainwindow.cpp" line="+2051"/>
<source>Line up</source>
<translation>Vyrovnať</translation>
</message>
@@ -590,7 +590,7 @@ na
<context>
<name>Q3NetworkProtocol</name>
<message>
- <location filename="../src/qt3support/network/q3networkprotocol.cpp" line="+824"/>
+ <location filename="../src/qt3support/network/q3networkprotocol.cpp" line="+854"/>
<source>Operation stopped by the user</source>
<translation>Operácia zastavená užívateľom</translation>
</message>
@@ -598,7 +598,7 @@ na
<context>
<name>Q3ProgressDialog</name>
<message>
- <location filename="../src/qt3support/dialogs/q3progressdialog.cpp" line="+194"/>
+ <location filename="../src/qt3support/dialogs/q3progressdialog.cpp" line="+224"/>
<location line="+61"/>
<source>Cancel</source>
<translation>Storno</translation>
@@ -607,7 +607,7 @@ na
<context>
<name>Q3TabDialog</name>
<message>
- <location filename="../src/qt3support/dialogs/q3tabdialog.cpp" line="+159"/>
+ <location filename="../src/qt3support/dialogs/q3tabdialog.cpp" line="+189"/>
<location line="+814"/>
<source>OK</source>
<translation>OK</translation>
@@ -636,7 +636,7 @@ na
<context>
<name>Q3TextEdit</name>
<message>
- <location filename="../src/qt3support/text/q3textedit.cpp" line="+5399"/>
+ <location filename="../src/qt3support/text/q3textedit.cpp" line="+5429"/>
<source>&amp;Undo</source>
<translation>V&amp;rátiť späť</translation>
</message>
@@ -675,7 +675,7 @@ na
<context>
<name>Q3TitleBar</name>
<message>
- <location filename="../src/plugins/accessible/compat/q3complexwidgets.cpp" line="+216"/>
+ <location filename="../src/plugins/accessible/compat/q3complexwidgets.cpp" line="+246"/>
<source>System</source>
<translation>Systém</translation>
</message>
@@ -743,7 +743,7 @@ na
<context>
<name>Q3ToolBar</name>
<message>
- <location filename="../src/qt3support/widgets/q3toolbar.cpp" line="+662"/>
+ <location filename="../src/qt3support/widgets/q3toolbar.cpp" line="+692"/>
<source>More...</source>
<translation>Viac...</translation>
</message>
@@ -751,7 +751,7 @@ na
<context>
<name>Q3UrlOperator</name>
<message>
- <location filename="../src/qt3support/network/q3urloperator.cpp" line="+356"/>
+ <location filename="../src/qt3support/network/q3urloperator.cpp" line="+386"/>
<location line="+260"/>
<location line="+4"/>
<source>The protocol `%1&apos; is not supported</source>
@@ -803,7 +803,7 @@ na
<context>
<name>Q3Wizard</name>
<message>
- <location filename="../src/qt3support/dialogs/q3wizard.cpp" line="+147"/>
+ <location filename="../src/qt3support/dialogs/q3wizard.cpp" line="+177"/>
<source>&amp;Cancel</source>
<translation>S&amp;torno</translation>
</message>
@@ -831,9 +831,9 @@ na
<context>
<name>QAbstractSocket</name>
<message>
- <location filename="../src/network/socket/qabstractsocket.cpp" line="+838"/>
- <location filename="../src/network/socket/qhttpsocketengine.cpp" line="+585"/>
- <location filename="../src/network/socket/qsocks5socketengine.cpp" line="+627"/>
+ <location filename="../src/network/socket/qabstractsocket.cpp" line="+868"/>
+ <location filename="../src/network/socket/qhttpsocketengine.cpp" line="+615"/>
+ <location filename="../src/network/socket/qsocks5socketengine.cpp" line="+657"/>
<location line="+26"/>
<source>Host not found</source>
<translation>PoÄítaÄ nenájdený</translation>
@@ -876,7 +876,7 @@ na
<context>
<name>QAbstractSpinBox</name>
<message>
- <location filename="../src/gui/widgets/qabstractspinbox.cpp" line="+1169"/>
+ <location filename="../src/gui/widgets/qabstractspinbox.cpp" line="+1199"/>
<source>&amp;Step up</source>
<translation>Krok na&amp;hor</translation>
</message>
@@ -894,13 +894,13 @@ na
<context>
<name>QApplication</name>
<message>
- <location filename="../src/gui/kernel/qapplication.cpp" line="+2212"/>
+ <location filename="../src/gui/kernel/qapplication.cpp" line="+2248"/>
<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>
<message>
- <location filename="../src/gui/dialogs/qmessagebox.h" line="+322"/>
+ <location filename="../src/gui/dialogs/qmessagebox.h" line="+352"/>
<source>Executable &apos;%1&apos; requires Qt %2, found Qt %3.</source>
<translation>Program &apos;%1&apos; vyžaduje Qt %2, nájdené Qt %3.</translation>
</message>
@@ -910,7 +910,7 @@ na
<translation>Chyba kompatibility knižnice Qt</translation>
</message>
<message>
- <location filename="../src/gui/accessible/qaccessibleobject.cpp" line="+346"/>
+ <location filename="../src/gui/accessible/qaccessibleobject.cpp" line="+376"/>
<source>Activate</source>
<translation>Aktivovať</translation>
</message>
@@ -946,7 +946,7 @@ na
<context>
<name>QCheckBox</name>
<message>
- <location filename="../src/plugins/accessible/widgets/simplewidgets.cpp" line="+84"/>
+ <location filename="../src/plugins/accessible/widgets/simplewidgets.cpp" line="+114"/>
<source>Uncheck</source>
<translation>Odškrtnúť</translation>
</message>
@@ -964,7 +964,7 @@ na
<context>
<name>QColorDialog</name>
<message>
- <location filename="../src/gui/dialogs/qcolordialog.cpp" line="+1219"/>
+ <location filename="../src/gui/dialogs/qcolordialog.cpp" line="+1253"/>
<source>Hu&amp;e:</source>
<translation>Od&amp;tieň:</translation>
</message>
@@ -1038,13 +1038,13 @@ na
<context>
<name>QComboBox</name>
<message>
- <location filename="../src/plugins/accessible/widgets/complexwidgets.cpp" line="+1741"/>
+ <location filename="../src/plugins/accessible/widgets/complexwidgets.cpp" line="+1771"/>
<location line="+65"/>
<source>Open</source>
<translation>Otvoriť</translation>
</message>
<message>
- <location filename="../src/gui/itemviews/qitemeditorfactory.cpp" line="+514"/>
+ <location filename="../src/gui/itemviews/qitemeditorfactory.cpp" line="+544"/>
<source>False</source>
<translation>Nepravda</translation>
</message>
@@ -1062,7 +1062,7 @@ na
<context>
<name>QCoreApplication</name>
<message>
- <location filename="../src/corelib/kernel/qsystemsemaphore_unix.cpp" line="+89"/>
+ <location filename="../src/corelib/kernel/qsystemsemaphore_unix.cpp" line="+119"/>
<source>%1: key is empty</source>
<comment>QSystemSemaphore</comment>
<translation type="unfinished"></translation>
@@ -1083,12 +1083,12 @@ na
<context>
<name>QDB2Driver</name>
<message>
- <location filename="../src/sql/drivers/db2/qsql_db2.cpp" line="+1217"/>
+ <location filename="../src/sql/drivers/db2/qsql_db2.cpp" line="+1276"/>
<source>Unable to connect</source>
<translation>Nedá sa pripojiť</translation>
</message>
<message>
- <location line="+263"/>
+ <location line="+303"/>
<source>Unable to commit transaction</source>
<translation>Transakcia sa nedá potvrdiť</translation>
</message>
@@ -1106,8 +1106,8 @@ na
<context>
<name>QDB2Result</name>
<message>
- <location line="-986"/>
- <location line="+242"/>
+ <location line="-1043"/>
+ <location line="+243"/>
<source>Unable to execute statement</source>
<translation>Príkaz sa nedá vykonať</translation>
</message>
@@ -1122,7 +1122,7 @@ na
<translation>Premenná sa nedá naviazať</translation>
</message>
<message>
- <location line="+91"/>
+ <location line="+92"/>
<source>Unable to fetch record %1</source>
<translation>Záznam %1 sa nedá získať</translation>
</message>
@@ -1140,7 +1140,7 @@ na
<context>
<name>QDateTimeEdit</name>
<message>
- <location filename="../src/gui/widgets/qdatetimeedit.cpp" line="+2265"/>
+ <location filename="../src/gui/widgets/qdatetimeedit.cpp" line="+2295"/>
<source>AM</source>
<translation>AM</translation>
</message>
@@ -1163,7 +1163,7 @@ na
<context>
<name>QDial</name>
<message>
- <location filename="../src/plugins/accessible/widgets/rangecontrols.cpp" line="+921"/>
+ <location filename="../src/plugins/accessible/widgets/rangecontrols.cpp" line="+951"/>
<source>QDial</source>
<translation>QDial</translation>
</message>
@@ -1181,7 +1181,7 @@ na
<context>
<name>QDialog</name>
<message>
- <location filename="../src/gui/dialogs/qdialog.cpp" line="+567"/>
+ <location filename="../src/gui/dialogs/qdialog.cpp" line="+597"/>
<source>What&apos;s This?</source>
<translation>ÄŒo je to?</translation>
</message>
@@ -1194,9 +1194,9 @@ na
<context>
<name>QDialogButtonBox</name>
<message>
- <location filename="../src/gui/dialogs/qmessagebox.cpp" line="+1830"/>
+ <location filename="../src/gui/dialogs/qmessagebox.cpp" line="+1866"/>
<location line="+464"/>
- <location filename="../src/gui/widgets/qdialogbuttonbox.cpp" line="+531"/>
+ <location filename="../src/gui/widgets/qdialogbuttonbox.cpp" line="+561"/>
<source>OK</source>
<translation>OK</translation>
</message>
@@ -1319,7 +1319,7 @@ na
<context>
<name>QDirModel</name>
<message>
- <location filename="../src/gui/itemviews/qdirmodel.cpp" line="+423"/>
+ <location filename="../src/gui/itemviews/qdirmodel.cpp" line="+453"/>
<source>Name</source>
<translation>Meno</translation>
</message>
@@ -1349,7 +1349,7 @@ na
<context>
<name>QDockWidget</name>
<message>
- <location filename="../src/plugins/accessible/widgets/qaccessiblewidgets.cpp" line="+1209"/>
+ <location filename="../src/plugins/accessible/widgets/qaccessiblewidgets.cpp" line="+1239"/>
<source>Close</source>
<translation>Zavrieť</translation>
</message>
@@ -1380,7 +1380,7 @@ na
<context>
<name>QErrorMessage</name>
<message>
- <location filename="../src/gui/dialogs/qerrormessage.cpp" line="+361"/>
+ <location filename="../src/gui/dialogs/qerrormessage.cpp" line="+391"/>
<source>&amp;Show this message again</source>
<translation>&amp;Zobraziť túto správu aj nabudúce</translation>
</message>
@@ -1408,13 +1408,18 @@ na
<context>
<name>QFile</name>
<message>
- <location filename="../src/corelib/io/qfile.cpp" line="+678"/>
- <location line="+130"/>
+ <location filename="../src/corelib/io/qfile.cpp" line="+708"/>
+ <location line="+141"/>
<source>Destination file exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+12"/>
+ <location line="-108"/>
+ <source>Cannot remove source file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+120"/>
<source>Cannot open %1 for input</source>
<translation type="unfinished"></translation>
</message>
@@ -1437,8 +1442,8 @@ na
<context>
<name>QFileDialog</name>
<message>
- <location filename="../src/gui/dialogs/qfiledialog.cpp" line="+484"/>
- <location line="+423"/>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="+515"/>
+ <location line="+444"/>
<source>All Files (*)</source>
<translation>Všetky súbory (*)</translation>
</message>
@@ -1467,26 +1472,26 @@ na
<translation>Detaily</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-440"/>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-461"/>
<source>Open</source>
<translation>Otvoriť</translation>
</message>
<message>
- <location line="+655"/>
+ <location line="+680"/>
<location line="+50"/>
- <location line="+1440"/>
+ <location line="+1471"/>
<location line="+75"/>
<source>&amp;Open</source>
<translation>&amp;Otvoriť</translation>
</message>
<message>
- <location line="-1565"/>
+ <location line="-1596"/>
<location line="+50"/>
<source>&amp;Save</source>
<translation>&amp;Uložiť</translation>
</message>
<message>
- <location line="-674"/>
+ <location line="-699"/>
<source>&amp;Rename</source>
<translation>P&amp;remenovať</translation>
</message>
@@ -1501,12 +1506,12 @@ na
<translation>Zobraziť &amp;skryté súbory</translation>
</message>
<message>
- <location line="+625"/>
+ <location line="+650"/>
<source>Directories</source>
<translation>PrieÄinky</translation>
</message>
<message>
- <location line="+811"/>
+ <location line="+832"/>
<source>%1 already exists.
Do you want to replace it?</source>
<translation>%1 už existuje.
@@ -1522,7 +1527,7 @@ Súbor nenájdený.
Prosím overte správnosť zadaného mena súboru.</translation>
</message>
<message>
- <location line="+1006"/>
+ <location line="+1017"/>
<source>Recent Places</source>
<translation type="unfinished"></translation>
</message>
@@ -1550,8 +1555,8 @@ Prosím overte správnosť zadaného mena súboru.</translation>
<translation>Súbory typu:</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-2456"/>
- <location line="+623"/>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-2513"/>
+ <location line="+648"/>
<source>Directory:</source>
<translation>PrieÄinok:</translation>
</message>
@@ -1564,8 +1569,8 @@ Súbor nenájdený.
Prosím overte správnosť zadaného mena súboru</translation>
</message>
<message>
- <location line="+773"/>
- <location line="+851"/>
+ <location line="+794"/>
+ <location line="+862"/>
<source>%1
Directory not found.
Please verify the correct directory name was given.</source>
@@ -1574,7 +1579,7 @@ PrieÄinok nenájdený.
Prosím overte správnosÅ¥ zadaného mena prieÄinku.</translation>
</message>
<message>
- <location line="-217"/>
+ <location line="-218"/>
<source>&apos;%1&apos; is write protected.
Do you want to delete it anyway?</source>
<translation>&apos;%1&apos; je chránený proti zápisu.
@@ -1591,17 +1596,17 @@ Chcete ho aj tak zmazať?</translation>
<translation>PrieÄinok sa nedá zmazaÅ¥.</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfiledialog_win.cpp" line="+130"/>
+ <location filename="../src/gui/dialogs/qfiledialog_win.cpp" line="+160"/>
<source>All Files (*.*)</source>
<translation>Všetky súbory (*.*)</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-2087"/>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-2143"/>
<source>Save As</source>
<translation>Uložiť ako</translation>
</message>
<message>
- <location filename="../src/gui/itemviews/qfileiconprovider.cpp" line="+381"/>
+ <location filename="../src/gui/itemviews/qfileiconprovider.cpp" line="+411"/>
<source>Drive</source>
<translation>Oddiel</translation>
</message>
@@ -1632,19 +1637,19 @@ Chcete ho aj tak zmazať?</translation>
<translation>&amp;Nový prieÄinok</translation>
</message>
<message>
- <location line="+631"/>
+ <location line="+656"/>
<location line="+38"/>
<source>&amp;Choose</source>
<translation>&amp;Zvoliť</translation>
</message>
<message>
- <location line="-662"/>
- <location line="+627"/>
+ <location line="-687"/>
+ <location line="+652"/>
<source>File &amp;name:</source>
<translation>Me&amp;no súboru:</translation>
</message>
<message>
- <location line="+1273"/>
+ <location line="+1304"/>
<source>New Folder</source>
<translation>Nový prieÄinok</translation>
</message>
@@ -1655,7 +1660,7 @@ Chcete ho aj tak zmazať?</translation>
<translation>Dopredu</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qsidebar.cpp" line="+388"/>
+ <location filename="../src/gui/dialogs/qsidebar.cpp" line="+418"/>
<source>Remove</source>
<translation>Odstrániť</translation>
</message>
@@ -1663,7 +1668,7 @@ Chcete ho aj tak zmazať?</translation>
<context>
<name>QFileSystemModel</name>
<message>
- <location filename="../src/gui/dialogs/qfilesystemmodel.cpp" line="+707"/>
+ <location filename="../src/gui/dialogs/qfilesystemmodel.cpp" line="+744"/>
<source>%1 TB</source>
<translation>%1 TB</translation>
</message>
@@ -1725,7 +1730,7 @@ Chcete ho aj tak zmazať?</translation>
<translation>Dátum zmeny</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfilesystemmodel_p.h" line="+204"/>
+ <location filename="../src/gui/dialogs/qfilesystemmodel_p.h" line="+234"/>
<source>My Computer</source>
<translation>Môj poÄítaÄ</translation>
</message>
@@ -1738,7 +1743,7 @@ Chcete ho aj tak zmazať?</translation>
<context>
<name>QFontDatabase</name>
<message>
- <location filename="../src/gui/text/qfontdatabase.cpp" line="+60"/>
+ <location filename="../src/gui/text/qfontdatabase.cpp" line="+90"/>
<location line="+1176"/>
<source>Normal</source>
<translation type="unfinished"></translation>
@@ -1955,7 +1960,7 @@ Chcete ho aj tak zmazať?</translation>
<context>
<name>QFontDialog</name>
<message>
- <location filename="../src/gui/dialogs/qfontdialog.cpp" line="+742"/>
+ <location filename="../src/gui/dialogs/qfontdialog.cpp" line="+772"/>
<source>&amp;Font</source>
<translation>&amp;Písmo</translation>
</message>
@@ -2004,7 +2009,7 @@ Chcete ho aj tak zmazať?</translation>
<context>
<name>QFtp</name>
<message>
- <location filename="../src/qt3support/network/q3ftp.cpp" line="+2273"/>
+ <location filename="../src/qt3support/network/q3ftp.cpp" line="+2303"/>
<source>Host %1 found</source>
<translation>PoÄítaÄ %1 nenájdený</translation>
</message>
@@ -2014,7 +2019,7 @@ Chcete ho aj tak zmazať?</translation>
<translation>PoÄítaÄ nájdený</translation>
</message>
<message>
- <location filename="../src/network/access/qftp.cpp" line="+973"/>
+ <location filename="../src/network/access/qftp.cpp" line="+1003"/>
<location filename="../src/qt3support/network/q3ftp.cpp" line="-1456"/>
<location line="+1451"/>
<source>Connected to host %1</source>
@@ -2150,7 +2155,7 @@ Chcete ho aj tak zmazať?</translation>
<context>
<name>QHostInfo</name>
<message>
- <location filename="../src/network/kernel/qhostinfo_p.h" line="+153"/>
+ <location filename="../src/network/kernel/qhostinfo_p.h" line="+183"/>
<source>Unknown error</source>
<translation>Neznáma chyba</translation>
</message>
@@ -2158,11 +2163,11 @@ Chcete ho aj tak zmazať?</translation>
<context>
<name>QHostInfoAgent</name>
<message>
- <location filename="../src/network/kernel/qhostinfo_unix.cpp" line="+148"/>
+ <location filename="../src/network/kernel/qhostinfo_unix.cpp" line="+178"/>
<location line="+9"/>
<location line="+64"/>
<location line="+31"/>
- <location filename="../src/network/kernel/qhostinfo_win.cpp" line="+150"/>
+ <location filename="../src/network/kernel/qhostinfo_win.cpp" line="+180"/>
<location line="+9"/>
<location line="+40"/>
<location line="+27"/>
@@ -2188,13 +2193,13 @@ Chcete ho aj tak zmazať?</translation>
<context>
<name>QHttp</name>
<message>
- <location filename="../src/network/access/qhttpnetworkconnection.cpp" line="+1712"/>
- <location filename="../src/qt3support/network/q3http.cpp" line="+1806"/>
+ <location filename="../src/network/access/qhttpnetworkconnection.cpp" line="+876"/>
+ <location filename="../src/qt3support/network/q3http.cpp" line="+1836"/>
<source>Connection refused</source>
<translation>Spojenie odmietnuté</translation>
</message>
<message>
- <location filename="../src/network/access/qhttp.cpp" line="+2597"/>
+ <location filename="../src/network/access/qhttp.cpp" line="+2631"/>
<location filename="../src/network/access/qhttpnetworkconnection.cpp" line="-4"/>
<location filename="../src/qt3support/network/q3http.cpp" line="+3"/>
<source>Host %1 not found</source>
@@ -2207,12 +2212,12 @@ Chcete ho aj tak zmazať?</translation>
<translation>Neplatná dĺžka obsahu</translation>
</message>
<message>
- <location line="-2200"/>
+ <location line="-2204"/>
<source>HTTPS connection requested but SSL support not compiled in</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+2282"/>
+ <location line="+2286"/>
<location filename="../src/network/access/qhttpnetworkconnection.cpp" line="+10"/>
<location line="+19"/>
<location filename="../src/qt3support/network/q3http.cpp" line="+48"/>
@@ -2246,21 +2251,21 @@ Chcete ho aj tak zmazať?</translation>
<translation>Spojenie uzavreté</translation>
</message>
<message>
- <location filename="../src/network/access/qhttp.cpp" line="-1073"/>
- <location line="+816"/>
+ <location filename="../src/network/access/qhttp.cpp" line="-1077"/>
+ <location line="+820"/>
<location filename="../src/qt3support/network/q3http.cpp" line="-1152"/>
<location line="+567"/>
<source>Unknown error</source>
<translation>Neznáma chyba</translation>
</message>
<message>
- <location line="-564"/>
+ <location line="-568"/>
<location filename="../src/qt3support/network/q3http.cpp" line="-370"/>
<source>Request aborted</source>
<translation>Požiadavka prerušená</translation>
</message>
<message>
- <location line="+575"/>
+ <location line="+579"/>
<location filename="../src/qt3support/network/q3http.cpp" line="+381"/>
<source>No server set to connect to</source>
<translation>Nenastavený server na pripojenie</translation>
@@ -2278,7 +2283,12 @@ Chcete ho aj tak zmazať?</translation>
<translation>Neplatná hlaviÄka odpovede HTTP</translation>
</message>
<message>
- <location line="+120"/>
+ <location line="+28"/>
+ <source>Unknown authentication method</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+97"/>
<location line="+48"/>
<location filename="../src/qt3support/network/q3http.cpp" line="+40"/>
<location line="+47"/>
@@ -2306,7 +2316,7 @@ Chcete ho aj tak zmazať?</translation>
<translation>Vyžaduje sa overenie</translation>
</message>
<message>
- <location line="-133"/>
+ <location line="-138"/>
<source>Connection refused (or timed out)</source>
<translation type="unfinished"></translation>
</message>
@@ -2387,7 +2397,7 @@ Chcete ho aj tak zmazať?</translation>
<context>
<name>QIBaseDriver</name>
<message>
- <location filename="../src/sql/drivers/ibase/qsql_ibase.cpp" line="+1378"/>
+ <location filename="../src/sql/drivers/ibase/qsql_ibase.cpp" line="+1428"/>
<source>Error opening database</source>
<translation>Chyba pri otváraní databázy</translation>
</message>
@@ -2410,7 +2420,7 @@ Chcete ho aj tak zmazať?</translation>
<context>
<name>QIBaseResult</name>
<message>
- <location line="-1077"/>
+ <location line="-1097"/>
<source>Unable to create BLOB</source>
<translation>BLOB sa nedá vytvoriť</translation>
</message>
@@ -2430,7 +2440,7 @@ Chcete ho aj tak zmazať?</translation>
<translation>BLOB sa nedá ÄítaÅ¥</translation>
</message>
<message>
- <location line="+124"/>
+ <location line="+125"/>
<location line="+189"/>
<source>Could not find array</source>
<translation>Pole sa nedá nájsť</translation>
@@ -2500,7 +2510,7 @@ Chcete ho aj tak zmazať?</translation>
<context>
<name>QIODevice</name>
<message>
- <location filename="../src/corelib/global/qglobal.cpp" line="+1830"/>
+ <location filename="../src/corelib/global/qglobal.cpp" line="+1869"/>
<source>Permission denied</source>
<translation>Prístup zamietnutý</translation>
</message>
@@ -2520,7 +2530,7 @@ Chcete ho aj tak zmazať?</translation>
<translation>Na zariadení nie je voľné miesto</translation>
</message>
<message>
- <location filename="../src/corelib/io/qiodevice.cpp" line="+1506"/>
+ <location filename="../src/corelib/io/qiodevice.cpp" line="+1536"/>
<source>Unknown error</source>
<translation>Neznáma chyba</translation>
</message>
@@ -2528,7 +2538,7 @@ Chcete ho aj tak zmazať?</translation>
<context>
<name>QInputContext</name>
<message>
- <location filename="../src/gui/inputmethod/qinputcontextfactory.cpp" line="+212"/>
+ <location filename="../src/gui/inputmethod/qinputcontextfactory.cpp" line="+242"/>
<source>XIM</source>
<translation>XIM</translation>
</message>
@@ -2551,7 +2561,7 @@ Chcete ho aj tak zmazať?</translation>
<context>
<name>QInputDialog</name>
<message>
- <location filename="../src/gui/dialogs/qinputdialog.cpp" line="+193"/>
+ <location filename="../src/gui/dialogs/qinputdialog.cpp" line="+223"/>
<source>Enter a value:</source>
<translation type="unfinished"></translation>
</message>
@@ -2571,7 +2581,7 @@ Chcete ho aj tak zmazať?</translation>
<translation type="obsolete">QLibrary::resolve_sys: Symbol &quot;%1&quot; nie je definovaný v %2 (%3)</translation>
</message>
<message>
- <location filename="../src/corelib/plugin/qlibrary.cpp" line="+348"/>
+ <location filename="../src/corelib/plugin/qlibrary.cpp" line="+378"/>
<source>Could not mmap &apos;%1&apos;: %2</source>
<translation>Nedá sa mmap &apos;%1&apos;: %2</translation>
</message>
@@ -2602,7 +2612,7 @@ Chcete ho aj tak zmazať?</translation>
</message>
<message>
<location line="-377"/>
- <location filename="../src/corelib/plugin/qpluginloader.cpp" line="+250"/>
+ <location filename="../src/corelib/plugin/qpluginloader.cpp" line="+280"/>
<source>The shared library was not found.</source>
<translation>Zdieľaná knižnica nebola nájdená.</translation>
</message>
@@ -2617,8 +2627,8 @@ Chcete ho aj tak zmazať?</translation>
<translation>Modul &apos;%1&apos; používa nekompatibilnú Qt knižnicu. (Nedajú sa miešať debug a release knižnice.)</translation>
</message>
<message>
- <location filename="../src/corelib/plugin/qlibrary_unix.cpp" line="+179"/>
- <location filename="../src/corelib/plugin/qlibrary_win.cpp" line="+69"/>
+ <location filename="../src/corelib/plugin/qlibrary_unix.cpp" line="+209"/>
+ <location filename="../src/corelib/plugin/qlibrary_win.cpp" line="+99"/>
<source>Cannot load library %1: %2</source>
<translation type="unfinished"></translation>
</message>
@@ -2638,7 +2648,7 @@ Chcete ho aj tak zmazať?</translation>
<context>
<name>QLineEdit</name>
<message>
- <location filename="../src/gui/widgets/qlineedit.cpp" line="+2649"/>
+ <location filename="../src/gui/widgets/qlineedit.cpp" line="+2680"/>
<source>&amp;Undo</source>
<translation>V&amp;rátiť späť</translation>
</message>
@@ -2676,8 +2686,8 @@ Chcete ho aj tak zmazať?</translation>
<context>
<name>QLocalServer</name>
<message>
- <location filename="../src/network/socket/qlocalserver.cpp" line="+196"/>
- <location filename="../src/network/socket/qlocalserver_unix.cpp" line="+201"/>
+ <location filename="../src/network/socket/qlocalserver.cpp" line="+226"/>
+ <location filename="../src/network/socket/qlocalserver_unix.cpp" line="+231"/>
<source>%1: Name error</source>
<translation type="unfinished"></translation>
</message>
@@ -2693,7 +2703,7 @@ Chcete ho aj tak zmazať?</translation>
</message>
<message>
<location line="+5"/>
- <location filename="../src/network/socket/qlocalserver_win.cpp" line="+127"/>
+ <location filename="../src/network/socket/qlocalserver_win.cpp" line="+158"/>
<source>%1: Unknown error %2</source>
<translation type="unfinished"></translation>
</message>
@@ -2701,8 +2711,8 @@ Chcete ho aj tak zmazať?</translation>
<context>
<name>QLocalSocket</name>
<message>
- <location filename="../src/network/socket/qlocalsocket_tcp.cpp" line="+102"/>
- <location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+104"/>
+ <location filename="../src/network/socket/qlocalsocket_tcp.cpp" line="+132"/>
+ <location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+134"/>
<source>%1: Connection refused</source>
<translation type="unfinished"></translation>
</message>
@@ -2715,7 +2725,7 @@ Chcete ho aj tak zmazať?</translation>
<message>
<location line="+3"/>
<location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+3"/>
- <location filename="../src/network/socket/qlocalsocket_win.cpp" line="+50"/>
+ <location filename="../src/network/socket/qlocalsocket_win.cpp" line="+80"/>
<location line="+43"/>
<source>%1: Invalid name</source>
<translation type="unfinished"></translation>
@@ -2772,7 +2782,7 @@ Chcete ho aj tak zmazať?</translation>
<context>
<name>QMYSQLDriver</name>
<message>
- <location filename="../src/sql/drivers/mysql/qsql_mysql.cpp" line="+1200"/>
+ <location filename="../src/sql/drivers/mysql/qsql_mysql.cpp" line="+1231"/>
<source>Unable to open database &apos;</source>
<translation>Databáza sa nedá otvoriť &apos;</translation>
</message>
@@ -2782,7 +2792,7 @@ Chcete ho aj tak zmazať?</translation>
<translation>Nedá sa pripojiť</translation>
</message>
<message>
- <location line="+123"/>
+ <location line="+127"/>
<source>Unable to begin transaction</source>
<translation>Transakcia sa nedá spustiť</translation>
</message>
@@ -2800,7 +2810,7 @@ Chcete ho aj tak zmazať?</translation>
<context>
<name>QMYSQLResult</name>
<message>
- <location line="-917"/>
+ <location line="-922"/>
<source>Unable to fetch data</source>
<translation>Dáta sa nedajú získať</translation>
</message>
@@ -2815,7 +2825,7 @@ Chcete ho aj tak zmazať?</translation>
<translation>Výsledok sa nedá uložiť</translation>
</message>
<message>
- <location line="+189"/>
+ <location line="+190"/>
<location line="+8"/>
<source>Unable to prepare statement</source>
<translation>Príkaz sa nedá pripraviť</translation>
@@ -2860,7 +2870,7 @@ Chcete ho aj tak zmazať?</translation>
<context>
<name>QMdiArea</name>
<message>
- <location filename="../src/gui/widgets/qmdiarea.cpp" line="+260"/>
+ <location filename="../src/gui/widgets/qmdiarea.cpp" line="+290"/>
<source>(Untitled)</source>
<translation type="unfinished"></translation>
</message>
@@ -2868,7 +2878,7 @@ Chcete ho aj tak zmazať?</translation>
<context>
<name>QMdiSubWindow</name>
<message>
- <location filename="../src/gui/widgets/qmdisubwindow.cpp" line="+250"/>
+ <location filename="../src/gui/widgets/qmdisubwindow.cpp" line="+280"/>
<source>%1 - [%2]</source>
<translation>%1 - [%2]</translation>
</message>
@@ -2961,7 +2971,7 @@ Chcete ho aj tak zmazať?</translation>
<context>
<name>QMenu</name>
<message>
- <location filename="../src/plugins/accessible/widgets/qaccessiblemenu.cpp" line="+127"/>
+ <location filename="../src/plugins/accessible/widgets/qaccessiblemenu.cpp" line="+157"/>
<location line="+225"/>
<source>Close</source>
<translation>Zavrieť</translation>
@@ -3034,7 +3044,7 @@ Chcete ho aj tak zmazať?</translation>
<context>
<name>QMessageBox</name>
<message>
- <location filename="../src/gui/dialogs/qmessagebox.cpp" line="-1958"/>
+ <location filename="../src/gui/dialogs/qmessagebox.cpp" line="-1964"/>
<location line="+852"/>
<location filename="../src/gui/dialogs/qmessagebox.h" line="-52"/>
<location line="+8"/>
@@ -3042,26 +3052,25 @@ Chcete ho aj tak zmazať?</translation>
<translation>OK</translation>
</message>
<message>
- <location line="+503"/>
+ <location line="+509"/>
<source>About Qt</source>
<translation>Informácie o Qt</translation>
</message>
<message>
- <location line="-502"/>
+ <location line="-508"/>
<source>Help</source>
<translation>Pomocník</translation>
</message>
<message>
- <location line="+487"/>
<source>&lt;p&gt;This program uses Qt version %1.&lt;/p&gt;</source>
- <translation>&lt;p&gt;Tento program používa Qt verziu %1.&lt;/p&gt;</translation>
+ <translation type="obsolete">&lt;p&gt;Tento program používa Qt verziu %1.&lt;/p&gt;</translation>
</message>
<message>
<source>&lt;h3&gt;About Qt&lt;/h3&gt;%1&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 Qtopia Core.&lt;/p&gt;&lt;p&gt;Qt is a Trolltech product. See &lt;a href=&quot;http://qtsoftware.com/qt/&quot;&gt;qtsoftware.com/qt/&lt;/a&gt; for more information.&lt;/p&gt;</source>
<translation type="obsolete">&lt;h3&gt;Informácie o Qt&lt;h3&gt;%1&lt;p&gt;Qt je C++ nástroj pre vývoj viac-platformových aplikácií.&lt;/p&gt;&lt;p&gt;Qt poskytuje jedno zdrojový prenos medzi MS&amp;nbsp;Windows, Mac&amp;nbsp;OS&amp;nbsp;X, Linux a vÅ¡etkými významnými komerÄnými variantmi Unix. Qt je tiež dostupná pre vložené zariadenia ako Qtopia Core.&lt;/p&gt;&lt;p&gt;Qt je produkt spoloÄnosti Trolltech. Pozrite &lt;a href=&quot;http://qtsoftware.com/qt/&quot;&gt;qtsoftware.com/qt/&lt;/a&gt; pre viac informácií.&lt;/p&gt;</translation>
</message>
<message>
- <location line="-1584"/>
+ <location line="-1097"/>
<source>Show Details...</source>
<translation>Zobraziť detaily...</translation>
</message>
@@ -3072,19 +3081,18 @@ Chcete ho aj tak zmazať?</translation>
</message>
<message>
<location line="+1570"/>
- <source>&lt;h3&gt;About Qt&lt;/h3&gt;%1&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 a Nokia product. See &lt;a href=&quot;http://qtsoftware.com/qt/&quot;&gt;qtsoftware.com/qt/&lt;/a&gt; for more information.&lt;/p&gt;</source>
+ <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://www.qtsoftware.com/products/licensing&quot;&gt;www.qtsoftware.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://www.qtsoftware.com/qt/&quot;&gt;www.qtsoftware.com/qt&lt;/a&gt; for more information.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+15"/>
<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://qtsoftware.com/company/model/&quot;&gt;qtsoftware.com/company/model/&lt;/a&gt; for an overview of Qt licensing.&lt;/p&gt;</source>
- <translation>&lt;p&gt;Tento program používa Qt Open Source Edition verziu %1.&lt;/p&gt;&lt;p&gt;Qt Open Source Edition je urÄená pre vývoj Open Source aplikácií. Pre vývoj vlastnených (closed source) aplikácií potrebujete komerÄnú Qt licenciu.&lt;/p&gt;&lt;p&gt;Prosím pozrite &lt;a href=&quot;http://qtsoftware.com/company/model.html&quot;&gt;qtsoftware.com/company/model.html&lt;/a&gt; pre prehľad Qt licencovania.&lt;/p&gt;</translation>
+ <translation type="obsolete">&lt;p&gt;Tento program používa Qt Open Source Edition verziu %1.&lt;/p&gt;&lt;p&gt;Qt Open Source Edition je urÄená pre vývoj Open Source aplikácií. Pre vývoj vlastnených (closed source) aplikácií potrebujete komerÄnú Qt licenciu.&lt;/p&gt;&lt;p&gt;Prosím pozrite &lt;a href=&quot;http://qtsoftware.com/company/model.html&quot;&gt;qtsoftware.com/company/model.html&lt;/a&gt; pre prehľad Qt licencovania.&lt;/p&gt;</translation>
</message>
</context>
<context>
<name>QMultiInputContext</name>
<message>
- <location filename="../src/plugins/inputmethods/imsw-multi/qmultiinputcontext.cpp" line="+58"/>
+ <location filename="../src/plugins/inputmethods/imsw-multi/qmultiinputcontext.cpp" line="+88"/>
<source>Select IM</source>
<translation>Vybrať IM</translation>
</message>
@@ -3092,7 +3100,7 @@ Chcete ho aj tak zmazať?</translation>
<context>
<name>QMultiInputContextPlugin</name>
<message>
- <location filename="../src/plugins/inputmethods/imsw-multi/qmultiinputcontextplugin.cpp" line="+65"/>
+ <location filename="../src/plugins/inputmethods/imsw-multi/qmultiinputcontextplugin.cpp" line="+95"/>
<source>Multiple input method switcher</source>
<translation>PrepínaÄ metódy viacnásobného vstupu</translation>
</message>
@@ -3105,7 +3113,7 @@ Chcete ho aj tak zmazať?</translation>
<context>
<name>QNativeSocketEngine</name>
<message>
- <location filename="../src/network/socket/qnativesocketengine.cpp" line="+176"/>
+ <location filename="../src/network/socket/qnativesocketengine.cpp" line="+206"/>
<source>The remote host closed the connection</source>
<translation>Vzdialený poÄítaÄ uzavrel spojenie</translation>
</message>
@@ -3238,7 +3246,7 @@ Chcete ho aj tak zmazať?</translation>
<context>
<name>QNetworkAccessCacheBackend</name>
<message>
- <location filename="../src/network/access/qnetworkaccesscachebackend.cpp" line="+35"/>
+ <location filename="../src/network/access/qnetworkaccesscachebackend.cpp" line="+65"/>
<source>Error opening %1</source>
<translation type="unfinished"></translation>
</message>
@@ -3246,7 +3254,7 @@ Chcete ho aj tak zmazať?</translation>
<context>
<name>QNetworkAccessFileBackend</name>
<message>
- <location filename="../src/network/access/qnetworkaccessfilebackend.cpp" line="+69"/>
+ <location filename="../src/network/access/qnetworkaccessfilebackend.cpp" line="+99"/>
<source>Request for opening non-local file %1</source>
<translation type="unfinished"></translation>
</message>
@@ -3274,7 +3282,7 @@ Chcete ho aj tak zmazať?</translation>
<context>
<name>QNetworkAccessFtpBackend</name>
<message>
- <location filename="../src/network/access/qnetworkaccessftpbackend.cpp" line="+135"/>
+ <location filename="../src/network/access/qnetworkaccessftpbackend.cpp" line="+165"/>
<source>No suitable proxy found</source>
<translation type="unfinished"></translation>
</message>
@@ -3284,7 +3292,7 @@ Chcete ho aj tak zmazať?</translation>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+131"/>
+ <location line="+130"/>
<source>Logging in to %1 failed: authentication required</source>
<translation type="unfinished"></translation>
</message>
@@ -3302,7 +3310,7 @@ Chcete ho aj tak zmazať?</translation>
<context>
<name>QNetworkAccessHttpBackend</name>
<message>
- <location filename="../src/network/access/qnetworkaccesshttpbackend.cpp" line="+565"/>
+ <location filename="../src/network/access/qnetworkaccesshttpbackend.cpp" line="+597"/>
<source>No suitable proxy found</source>
<translation type="unfinished"></translation>
</message>
@@ -3315,7 +3323,7 @@ Chcete ho aj tak zmazať?</translation>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/network/access/qnetworkreplyimpl.cpp" line="+37"/>
+ <location filename="../src/network/access/qnetworkreplyimpl.cpp" line="+68"/>
<source>Protocol &quot;%1&quot; is unknown</source>
<translation type="unfinished"></translation>
</message>
@@ -3323,7 +3331,7 @@ Chcete ho aj tak zmazať?</translation>
<context>
<name>QNetworkReplyImpl</name>
<message>
- <location line="+422"/>
+ <location line="+432"/>
<location line="+22"/>
<source>Operation canceled</source>
<translation type="unfinished"></translation>
@@ -3332,7 +3340,7 @@ Chcete ho aj tak zmazať?</translation>
<context>
<name>QOCIDriver</name>
<message>
- <location filename="../src/sql/drivers/oci/qsql_oci.cpp" line="+2027"/>
+ <location filename="../src/sql/drivers/oci/qsql_oci.cpp" line="+2069"/>
<source>Unable to logon</source>
<translation>Nedá sa prihlásiť</translation>
</message>
@@ -3361,7 +3369,7 @@ Chcete ho aj tak zmazať?</translation>
<context>
<name>QOCIResult</name>
<message>
- <location line="-976"/>
+ <location line="-963"/>
<location line="+161"/>
<location line="+15"/>
<source>Unable to bind column for batch execute</source>
@@ -3388,18 +3396,16 @@ Chcete ho aj tak zmazať?</translation>
<translation>Príkaz sa nedá pripraviť</translation>
</message>
<message>
- <location line="+29"/>
- <location line="+37"/>
+ <location line="+36"/>
<source>Unable to bind value</source>
<translation>Hodnota sa nedá previazať</translation>
</message>
<message>
- <location line="-20"/>
<source>Unable to execute select statement</source>
- <translation>Príkaz select sa nedá vykonať</translation>
+ <translation type="obsolete">Príkaz select sa nedá vykonať</translation>
</message>
<message>
- <location line="+32"/>
+ <location line="+19"/>
<source>Unable to execute statement</source>
<translation>Príkaz sa nedá vykonať</translation>
</message>
@@ -3407,7 +3413,7 @@ Chcete ho aj tak zmazať?</translation>
<context>
<name>QODBCDriver</name>
<message>
- <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="+1657"/>
+ <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="+1785"/>
<source>Unable to connect</source>
<translation>Nedá sa pripojiť</translation>
</message>
@@ -3417,7 +3423,7 @@ Chcete ho aj tak zmazať?</translation>
<translation>Nedá sa pripojiÅ¥ - ovládaÄ neposkytuje vÅ¡etku požadovanú funkcionalitu</translation>
</message>
<message>
- <location line="+234"/>
+ <location line="+242"/>
<source>Unable to disable autocommit</source>
<translation>Nedá sa zakázať automatické potvrdzovanie</translation>
</message>
@@ -3440,19 +3446,19 @@ Chcete ho aj tak zmazať?</translation>
<context>
<name>QODBCResult</name>
<message>
- <location line="-1204"/>
+ <location line="-1218"/>
<location line="+349"/>
<source>QODBCResult::reset: Unable to set &apos;SQL_CURSOR_STATIC&apos; as statement attribute. Please check your ODBC driver configuration</source>
<translation>QODBCResult::reset: Pre príkaz sa nedá nastaviÅ¥ atribút &apos;SQL_CURSOR_STATIC&apos;. Prosím skontrolujte konfiguráciu ovládaÄa ODBC</translation>
</message>
<message>
<location line="-332"/>
- <location line="+625"/>
+ <location line="+626"/>
<source>Unable to execute statement</source>
<translation>Príkaz sa nedá vykonať</translation>
</message>
<message>
- <location line="-554"/>
+ <location line="-555"/>
<source>Unable to fetch next</source>
<translation>Nedá sa získaÅ¥ Äaľší záznam</translation>
</message>
@@ -3462,19 +3468,19 @@ Chcete ho aj tak zmazať?</translation>
<translation>Príkaz sa nedá pripraviť</translation>
</message>
<message>
- <location line="+267"/>
+ <location line="+268"/>
<source>Unable to bind variable</source>
<translation>Premenná sa nedá previazať</translation>
</message>
<message>
<location filename="../src/sql/drivers/db2/qsql_db2.cpp" line="+194"/>
- <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="-474"/>
- <location line="+577"/>
+ <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="-475"/>
+ <location line="+578"/>
<source>Unable to fetch last</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="-671"/>
+ <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="-672"/>
<source>Unable to fetch</source>
<translation type="unfinished"></translation>
</message>
@@ -3492,12 +3498,12 @@ Chcete ho aj tak zmazať?</translation>
<context>
<name>QObject</name>
<message>
- <location filename="../src/gui/util/qdesktopservices_mac.cpp" line="+134"/>
+ <location filename="../src/gui/util/qdesktopservices_mac.cpp" line="+165"/>
<source>Home</source>
<translation>Domov</translation>
</message>
<message>
- <location filename="../src/network/access/qnetworkaccessdatabackend.cpp" line="+44"/>
+ <location filename="../src/network/access/qnetworkaccessdatabackend.cpp" line="+74"/>
<source>Operation not supported on %1</source>
<translation type="unfinished"></translation>
</message>
@@ -3507,7 +3513,7 @@ Chcete ho aj tak zmazať?</translation>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/network/access/qnetworkaccessdebugpipebackend.cpp" line="+145"/>
+ <location filename="../src/network/access/qnetworkaccessdebugpipebackend.cpp" line="+175"/>
<source>Write error writing to %1: %2</source>
<translation type="unfinished"></translation>
</message>
@@ -3532,7 +3538,7 @@ Chcete ho aj tak zmazať?</translation>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/network/kernel/qhostinfo.cpp" line="+147"/>
+ <location filename="../src/network/kernel/qhostinfo.cpp" line="+177"/>
<location line="+57"/>
<source>No host name given</source>
<translation type="unfinished"></translation>
@@ -3541,7 +3547,7 @@ Chcete ho aj tak zmazať?</translation>
<context>
<name>QPPDOptionsModel</name>
<message>
- <location filename="../src/gui/dialogs/qprintdialog_unix.cpp" line="+1165"/>
+ <location filename="../src/gui/dialogs/qprintdialog_unix.cpp" line="+1195"/>
<source>Name</source>
<translation type="unfinished">Meno</translation>
</message>
@@ -3554,7 +3560,7 @@ Chcete ho aj tak zmazať?</translation>
<context>
<name>QPSQLDriver</name>
<message>
- <location filename="../src/sql/drivers/psql/qsql_psql.cpp" line="+732"/>
+ <location filename="../src/sql/drivers/psql/qsql_psql.cpp" line="+763"/>
<source>Unable to connect</source>
<translation>Nedá sa pripojiť</translation>
</message>
@@ -3574,7 +3580,7 @@ Chcete ho aj tak zmazať?</translation>
<translation>Transakcia sa nedá vrátiť späť</translation>
</message>
<message>
- <location line="+336"/>
+ <location line="+358"/>
<source>Unable to subscribe</source>
<translation type="unfinished"></translation>
</message>
@@ -3587,12 +3593,12 @@ Chcete ho aj tak zmazať?</translation>
<context>
<name>QPSQLResult</name>
<message>
- <location line="-1035"/>
+ <location line="-1058"/>
<source>Unable to create query</source>
<translation>Nedá sa vytvoriť hľadanie</translation>
</message>
<message>
- <location line="+373"/>
+ <location line="+374"/>
<source>Unable to prepare statement</source>
<translation type="unfinished"></translation>
</message>
@@ -3600,7 +3606,7 @@ Chcete ho aj tak zmazať?</translation>
<context>
<name>QPageSetupWidget</name>
<message>
- <location filename="../src/gui/dialogs/qpagesetupdialog_unix.cpp" line="+274"/>
+ <location filename="../src/gui/dialogs/qpagesetupdialog_unix.cpp" line="+304"/>
<source>Centimeters (cm)</source>
<translation type="unfinished"></translation>
</message>
@@ -3716,7 +3722,7 @@ Chcete ho aj tak zmazať?</translation>
<context>
<name>QPrintDialog</name>
<message>
- <location filename="../src/gui/painting/qprinterinfo_unix.cpp" line="+68"/>
+ <location filename="../src/gui/painting/qprinterinfo_unix.cpp" line="+98"/>
<source>locally connected</source>
<translation>lokálne pripojená</translation>
</message>
@@ -3733,7 +3739,7 @@ Chcete ho aj tak zmazať?</translation>
<translation>neznáme</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qprintdialog_win.cpp" line="+238"/>
+ <location filename="../src/gui/dialogs/qprintdialog_win.cpp" line="+268"/>
<source>OK</source>
<translation>OK</translation>
</message>
@@ -3746,7 +3752,7 @@ Chcete ho aj tak zmazať?</translation>
<translation type="obsolete">TlaÄiÅ¥ farebne ak je to dostupné</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qprintdialog_qws.cpp" line="+345"/>
+ <location filename="../src/gui/dialogs/qprintdialog_qws.cpp" line="+375"/>
<source>Print all</source>
<translation>TlaÄiÅ¥ vÅ¡etko</translation>
</message>
@@ -3943,7 +3949,7 @@ Chcete ho aj tak zmazať?</translation>
<translation type="obsolete">Zdroj papiera:</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qabstractprintdialog.cpp" line="+80"/>
+ <location filename="../src/gui/dialogs/qabstractprintdialog.cpp" line="+110"/>
<location line="+13"/>
<location filename="../src/gui/dialogs/qprintdialog_win.cpp" line="-2"/>
<source>Print</source>
@@ -4245,13 +4251,13 @@ Prosím zvoľte iné meno súboru.</translation>
<context>
<name>QPrintPreviewDialog</name>
<message>
- <location filename="../src/gui/dialogs/qabstractpagesetupdialog.cpp" line="+38"/>
+ <location filename="../src/gui/dialogs/qabstractpagesetupdialog.cpp" line="+68"/>
<location line="+12"/>
<source>Page Setup</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qprintpreviewdialog.cpp" line="+222"/>
+ <location filename="../src/gui/dialogs/qprintpreviewdialog.cpp" line="+252"/>
<source>%1%</source>
<translation type="unfinished"></translation>
</message>
@@ -4533,8 +4539,8 @@ Prosím zvoľte iné meno súboru.</translation>
<context>
<name>QProcess</name>
<message>
- <location filename="../src/corelib/io/qprocess_unix.cpp" line="+445"/>
- <location filename="../src/corelib/io/qprocess_win.cpp" line="+117"/>
+ <location filename="../src/corelib/io/qprocess_unix.cpp" line="+475"/>
+ <location filename="../src/corelib/io/qprocess_win.cpp" line="+147"/>
<source>Could not open input redirection for reading</source>
<translation type="unfinished"></translation>
</message>
@@ -4563,7 +4569,7 @@ Prosím zvoľte iné meno súboru.</translation>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/corelib/io/qprocess.cpp" line="+503"/>
+ <location filename="../src/corelib/io/qprocess.cpp" line="+533"/>
<location line="+52"/>
<location filename="../src/corelib/io/qprocess_win.cpp" line="-211"/>
<location line="+50"/>
@@ -4583,6 +4589,11 @@ Prosím zvoľte iné meno súboru.</translation>
<translation type="unfinished"></translation>
</message>
<message>
+ <location line="+912"/>
+ <source>No program defined</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<location filename="../src/corelib/io/qprocess_win.cpp" line="-341"/>
<source>Process failed to start</source>
<translation type="unfinished"></translation>
@@ -4591,7 +4602,7 @@ Prosím zvoľte iné meno súboru.</translation>
<context>
<name>QProgressDialog</name>
<message>
- <location filename="../src/gui/dialogs/qprogressdialog.cpp" line="+152"/>
+ <location filename="../src/gui/dialogs/qprogressdialog.cpp" line="+182"/>
<source>Cancel</source>
<translation>Storno</translation>
</message>
@@ -4615,7 +4626,7 @@ Prosím zvoľte iné meno súboru.</translation>
<context>
<name>QRegExp</name>
<message>
- <location filename="../src/corelib/tools/qregexp.cpp" line="+34"/>
+ <location filename="../src/corelib/tools/qregexp.cpp" line="+64"/>
<source>no error occurred</source>
<translation>nevyskytli sa žiadne chyby</translation>
</message>
@@ -4663,7 +4674,7 @@ Prosím zvoľte iné meno súboru.</translation>
<context>
<name>QSQLite2Driver</name>
<message>
- <location filename="../src/sql/drivers/sqlite2/qsql_sqlite2.cpp" line="+353"/>
+ <location filename="../src/sql/drivers/sqlite2/qsql_sqlite2.cpp" line="+396"/>
<source>Error to open database</source>
<translation>Chyba pri otváraní databázy</translation>
</message>
@@ -4686,12 +4697,12 @@ Prosím zvoľte iné meno súboru.</translation>
<context>
<name>QSQLite2Result</name>
<message>
- <location line="-310"/>
+ <location line="-323"/>
<source>Unable to fetch results</source>
<translation>Výsledky sa nedajú získať</translation>
</message>
<message>
- <location line="+139"/>
+ <location line="+147"/>
<source>Unable to execute statement</source>
<translation>Príkaz sa nedá vykonať</translation>
</message>
@@ -4699,7 +4710,7 @@ Prosím zvoľte iné meno súboru.</translation>
<context>
<name>QSQLiteDriver</name>
<message>
- <location filename="../src/sql/drivers/sqlite/qsql_sqlite.cpp" line="+498"/>
+ <location filename="../src/sql/drivers/sqlite/qsql_sqlite.cpp" line="+528"/>
<source>Error opening database</source>
<translation>Chyba pri otváraní databázy</translation>
</message>
@@ -4766,12 +4777,12 @@ Prosím zvoľte iné meno súboru.</translation>
<context>
<name>QScrollBar</name>
<message>
- <location filename="../src/gui/widgets/qscrollbar.cpp" line="+419"/>
+ <location filename="../src/gui/widgets/qscrollbar.cpp" line="+448"/>
<source>Scroll here</source>
<translation>Posunúť sem</translation>
</message>
<message>
- <location line="+3"/>
+ <location line="+2"/>
<source>Left edge</source>
<translation>Ľavá hrana</translation>
</message>
@@ -4781,7 +4792,7 @@ Prosím zvoľte iné meno súboru.</translation>
<translation>Vrch</translation>
</message>
<message>
- <location line="+2"/>
+ <location line="+1"/>
<source>Right edge</source>
<translation>Pravá hrana</translation>
</message>
@@ -4791,7 +4802,7 @@ Prosím zvoľte iné meno súboru.</translation>
<translation>Spodok</translation>
</message>
<message>
- <location line="+3"/>
+ <location line="+2"/>
<source>Page left</source>
<translation>Strana naľavo</translation>
</message>
@@ -4802,7 +4813,7 @@ Prosím zvoľte iné meno súboru.</translation>
<translation>Strana nahor</translation>
</message>
<message>
- <location line="+2"/>
+ <location line="+1"/>
<source>Page right</source>
<translation>Strana napravo</translation>
</message>
@@ -4813,7 +4824,7 @@ Prosím zvoľte iné meno súboru.</translation>
<translation>Strana nadol</translation>
</message>
<message>
- <location line="+3"/>
+ <location line="+2"/>
<source>Scroll left</source>
<translation>Posunúť naľavo</translation>
</message>
@@ -4823,7 +4834,7 @@ Prosím zvoľte iné meno súboru.</translation>
<translation>Posunúť nahor</translation>
</message>
<message>
- <location line="+2"/>
+ <location line="+1"/>
<source>Scroll right</source>
<translation>Posunúť napravo</translation>
</message>
@@ -4851,7 +4862,7 @@ Prosím zvoľte iné meno súboru.</translation>
<context>
<name>QSharedMemory</name>
<message>
- <location filename="../src/corelib/kernel/qsharedmemory.cpp" line="+177"/>
+ <location filename="../src/corelib/kernel/qsharedmemory.cpp" line="+207"/>
<source>%1: unable to set key on lock</source>
<translation type="unfinished"></translation>
</message>
@@ -4862,7 +4873,7 @@ Prosím zvoľte iné meno súboru.</translation>
</message>
<message>
<location line="+168"/>
- <location filename="../src/corelib/kernel/qsharedmemory_p.h" line="+118"/>
+ <location filename="../src/corelib/kernel/qsharedmemory_p.h" line="+148"/>
<source>%1: unable to lock</source>
<translation type="unfinished"></translation>
</message>
@@ -4872,8 +4883,8 @@ Prosím zvoľte iné meno súboru.</translation>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/corelib/kernel/qsharedmemory_unix.cpp" line="+48"/>
- <location filename="../src/corelib/kernel/qsharedmemory_win.cpp" line="+57"/>
+ <location filename="../src/corelib/kernel/qsharedmemory_unix.cpp" line="+78"/>
+ <location filename="../src/corelib/kernel/qsharedmemory_win.cpp" line="+87"/>
<source>%1: permission denied</source>
<translation type="unfinished"></translation>
</message>
@@ -4951,7 +4962,7 @@ Prosím zvoľte iné meno súboru.</translation>
<context>
<name>QShortcut</name>
<message>
- <location filename="../src/gui/kernel/qkeysequence.cpp" line="+343"/>
+ <location filename="../src/gui/kernel/qkeysequence.cpp" line="+373"/>
<source>Space</source>
<translation>Medzera</translation>
</message>
@@ -5536,7 +5547,7 @@ Prosím zvoľte iné meno súboru.</translation>
<context>
<name>QSql</name>
<message>
- <location filename="../src/qt3support/sql/q3sqlmanager_p.cpp" line="+860"/>
+ <location filename="../src/qt3support/sql/q3sqlmanager_p.cpp" line="+890"/>
<source>Delete</source>
<translation>Odstrániť</translation>
</message>
@@ -5593,7 +5604,7 @@ Prosím zvoľte iné meno súboru.</translation>
<context>
<name>QSslSocket</name>
<message>
- <location filename="../src/network/ssl/qsslsocket_openssl.cpp" line="+230"/>
+ <location filename="../src/network/ssl/qsslsocket_openssl.cpp" line="+260"/>
<source>Error creating SSL context (%1)</source>
<translation>Chyba pri vytváraní SSL kontextu (%1)</translation>
</message>
@@ -5656,7 +5667,7 @@ Prosím zvoľte iné meno súboru.</translation>
<name>QSystemSemaphore</name>
<message>
<location filename="../src/corelib/kernel/qsystemsemaphore_unix.cpp" line="-41"/>
- <location filename="../src/corelib/kernel/qsystemsemaphore_win.cpp" line="+36"/>
+ <location filename="../src/corelib/kernel/qsystemsemaphore_win.cpp" line="+66"/>
<source>%1: out of resources</source>
<translation type="unfinished"></translation>
</message>
@@ -5686,7 +5697,7 @@ Prosím zvoľte iné meno súboru.</translation>
<context>
<name>QTDSDriver</name>
<message>
- <location filename="../src/sql/drivers/tds/qsql_tds.cpp" line="+552"/>
+ <location filename="../src/sql/drivers/tds/qsql_tds.cpp" line="+584"/>
<source>Unable to open connection</source>
<translation>Nedá sa otvoriť spojenie</translation>
</message>
@@ -5716,7 +5727,7 @@ Prosím zvoľte iné meno súboru.</translation>
<translation type="obsolete">Nepodporovaná operácia so soketom</translation>
</message>
<message>
- <location filename="../src/network/socket/qtcpserver.cpp" line="+252"/>
+ <location filename="../src/network/socket/qtcpserver.cpp" line="+282"/>
<source>Operation on socket is not supported</source>
<translation type="unfinished"></translation>
</message>
@@ -5724,7 +5735,7 @@ Prosím zvoľte iné meno súboru.</translation>
<context>
<name>QTextControl</name>
<message>
- <location filename="../src/gui/text/qtextcontrol.cpp" line="+1942"/>
+ <location filename="../src/gui/text/qtextcontrol.cpp" line="+1973"/>
<source>&amp;Undo</source>
<translation>V&amp;rátiť späť</translation>
</message>
@@ -5782,7 +5793,7 @@ Prosím zvoľte iné meno súboru.</translation>
<context>
<name>QUdpSocket</name>
<message>
- <location filename="../src/network/socket/qudpsocket.cpp" line="+139"/>
+ <location filename="../src/network/socket/qudpsocket.cpp" line="+169"/>
<source>This platform does not support IPv6</source>
<translation>Táto platforma nepodporuje IPv6</translation>
</message>
@@ -5790,7 +5801,7 @@ Prosím zvoľte iné meno súboru.</translation>
<context>
<name>QUndoGroup</name>
<message>
- <location filename="../src/gui/util/qundogroup.cpp" line="+356"/>
+ <location filename="../src/gui/util/qundogroup.cpp" line="+386"/>
<source>Undo</source>
<translation>Vrátiť späť</translation>
</message>
@@ -5803,7 +5814,7 @@ Prosím zvoľte iné meno súboru.</translation>
<context>
<name>QUndoModel</name>
<message>
- <location filename="../src/gui/util/qundoview.cpp" line="+71"/>
+ <location filename="../src/gui/util/qundoview.cpp" line="+101"/>
<source>&lt;empty&gt;</source>
<translation>&lt;prázdne&gt;</translation>
</message>
@@ -5811,7 +5822,7 @@ Prosím zvoľte iné meno súboru.</translation>
<context>
<name>QUndoStack</name>
<message>
- <location filename="../src/gui/util/qundostack.cpp" line="+804"/>
+ <location filename="../src/gui/util/qundostack.cpp" line="+834"/>
<source>Undo</source>
<translation>Vrátiť späť</translation>
</message>
@@ -5882,7 +5893,7 @@ Prosím zvoľte iné meno súboru.</translation>
<context>
<name>QWebFrame</name>
<message>
- <location filename="../src/3rdparty/webkit/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp" line="+686"/>
+ <location filename="../src/3rdparty/webkit/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp" line="+692"/>
<source>Request cancelled</source>
<translation type="unfinished"></translation>
</message>
@@ -6292,7 +6303,7 @@ Prosím zvoľte iné meno súboru.</translation>
</translation>
</message>
<message>
- <location filename="../src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp" line="+1342"/>
+ <location filename="../src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp" line="+1322"/>
<source>JavaScript Alert - %1</source>
<translation type="unfinished"></translation>
</message>
@@ -6368,6 +6379,11 @@ Prosím zvoľte iné meno súboru.</translation>
</message>
<message>
<location line="+3"/>
+ <source>Select all</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
<source>Select to the next character</source>
<translation type="unfinished"></translation>
</message>
@@ -6436,11 +6452,21 @@ Prosím zvoľte iné meno súboru.</translation>
<source>Delete to the end of the word</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <location line="+33"/>
+ <source>Insert a new paragraph</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Insert a new line</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>QWhatsThisAction</name>
<message>
- <location filename="../src/gui/kernel/qwhatsthis.cpp" line="+492"/>
+ <location filename="../src/gui/kernel/qwhatsthis.cpp" line="+522"/>
<source>What&apos;s This?</source>
<translation>ÄŒo je to?</translation>
</message>
@@ -6448,7 +6474,7 @@ Prosím zvoľte iné meno súboru.</translation>
<context>
<name>QWidget</name>
<message>
- <location filename="../src/gui/kernel/qwidget.cpp" line="+5290"/>
+ <location filename="../src/gui/kernel/qwidget.cpp" line="+5326"/>
<source>*</source>
<translation>*</translation>
</message>
@@ -6456,7 +6482,7 @@ Prosím zvoľte iné meno súboru.</translation>
<context>
<name>QWizard</name>
<message>
- <location filename="../src/gui/dialogs/qwizard.cpp" line="+605"/>
+ <location filename="../src/gui/dialogs/qwizard.cpp" line="+637"/>
<source>Go Back</source>
<translation>Vrátiť sa späť</translation>
</message>
@@ -6518,7 +6544,7 @@ Prosím zvoľte iné meno súboru.</translation>
<context>
<name>QWorkspace</name>
<message>
- <location filename="../src/gui/widgets/qworkspace.cpp" line="+1064"/>
+ <location filename="../src/gui/widgets/qworkspace.cpp" line="+1094"/>
<source>&amp;Restore</source>
<translation>&amp;Obnoviť</translation>
</message>
@@ -6588,7 +6614,7 @@ Prosím zvoľte iné meno súboru.</translation>
<context>
<name>QXml</name>
<message>
- <location filename="../src/xml/sax/qxml.cpp" line="+28"/>
+ <location filename="../src/xml/sax/qxml.cpp" line="+58"/>
<source>no error occurred</source>
<translation>nevyskytla sa žiadna chyba</translation>
</message>
@@ -6706,8 +6732,8 @@ Prosím zvoľte iné meno súboru.</translation>
<context>
<name>QXmlStream</name>
<message>
- <location filename="../src/corelib/xml/qxmlstream.cpp" line="+562"/>
- <location filename="../src/corelib/xml/qxmlstream_p.h" line="+1739"/>
+ <location filename="../src/corelib/xml/qxmlstream.cpp" line="+592"/>
+ <location filename="../src/corelib/xml/qxmlstream_p.h" line="+1769"/>
<source>Extra content at end of document.</source>
<translation>Obsah naviac na konci dokumentu.</translation>
</message>
@@ -6895,7 +6921,7 @@ Prosím zvoľte iné meno súboru.</translation>
<context>
<name>QtXmlPatterns</name>
<message>
- <location filename="../src/xmlpatterns/acceltree/qacceltreebuilder.cpp" line="+175"/>
+ <location filename="../src/xmlpatterns/acceltree/qacceltreebuilder.cpp" line="+205"/>
<source>An %1-attribute with value %2 has already been declared.</source>
<translation type="unfinished"></translation>
</message>
@@ -6905,12 +6931,12 @@ Prosím zvoľte iné meno súboru.</translation>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/api/qiodevicedelegate.cpp" line="+54"/>
+ <location filename="../src/xmlpatterns/api/qiodevicedelegate.cpp" line="+84"/>
<source>Network timeout.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/api/qxmlserializer.cpp" line="+290"/>
+ <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 type="unfinished"></translation>
</message>
@@ -6920,7 +6946,7 @@ Prosím zvoľte iné meno súboru.</translation>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qabstractdatetime.cpp" line="+50"/>
+ <location filename="../src/xmlpatterns/data/qabstractdatetime.cpp" line="+80"/>
<source>Year %1 is invalid because it begins with %2.</source>
<translation type="unfinished"></translation>
</message>
@@ -6960,7 +6986,7 @@ Prosím zvoľte iné meno súboru.</translation>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qabstractduration.cpp" line="+69"/>
+ <location filename="../src/xmlpatterns/data/qabstractduration.cpp" line="+99"/>
<location line="+15"/>
<source>At least one component must be present.</source>
<translation type="unfinished"></translation>
@@ -6971,7 +6997,7 @@ Prosím zvoľte iné meno súboru.</translation>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qabstractfloatmathematician.cpp" line="+34"/>
+ <location filename="../src/xmlpatterns/data/qabstractfloatmathematician.cpp" line="+64"/>
<source>No operand in an integer division, %1, can be %2.</source>
<translation type="unfinished"></translation>
</message>
@@ -6986,17 +7012,17 @@ Prosím zvoľte iné meno súboru.</translation>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qanyuri_p.h" line="+102"/>
+ <location filename="../src/xmlpatterns/data/qanyuri_p.h" line="+132"/>
<source>%1 is not a valid value of type %2.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qatomiccasters_p.h" line="+193"/>
+ <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 type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qatomicmathematicians.cpp" line="+35"/>
+ <location filename="../src/xmlpatterns/data/qatomicmathematicians.cpp" line="+65"/>
<source>Integer division (%1) by zero (%2) is undefined.</source>
<translation type="unfinished"></translation>
</message>
@@ -7027,17 +7053,17 @@ Prosím zvoľte iné meno súboru.</translation>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qatomicvalue.cpp" line="+49"/>
+ <location filename="../src/xmlpatterns/data/qatomicvalue.cpp" line="+79"/>
<source>A value of type %1 cannot have an Effective Boolean Value.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qboolean.cpp" line="+48"/>
+ <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 type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qderivedinteger_p.h" line="+372"/>
+ <location filename="../src/xmlpatterns/data/qderivedinteger_p.h" line="+402"/>
<source>Value %1 of type %2 exceeds maximum (%3).</source>
<translation type="unfinished"></translation>
</message>
@@ -7047,7 +7073,7 @@ Prosím zvoľte iné meno súboru.</translation>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qhexbinary.cpp" line="+61"/>
+ <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 type="unfinished"></translation>
</message>
@@ -7057,7 +7083,7 @@ Prosím zvoľte iné meno súboru.</translation>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qarithmeticexpression.cpp" line="+177"/>
+ <location filename="../src/xmlpatterns/expr/qarithmeticexpression.cpp" line="+207"/>
<source>Operator %1 cannot be used on type %2.</source>
<translation type="unfinished"></translation>
</message>
@@ -7067,7 +7093,7 @@ Prosím zvoľte iné meno súboru.</translation>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qattributenamevalidator.cpp" line="+36"/>
+ <location filename="../src/xmlpatterns/expr/qattributenamevalidator.cpp" line="+66"/>
<source>The namespace URI in the name for a computed attribute cannot be %1.</source>
<translation type="unfinished"></translation>
</message>
@@ -7077,7 +7103,7 @@ Prosím zvoľte iné meno súboru.</translation>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qcastas.cpp" line="+58"/>
+ <location filename="../src/xmlpatterns/expr/qcastas.cpp" line="+88"/>
<source>Type error in cast, expected %1, received %2.</source>
<translation type="unfinished"></translation>
</message>
@@ -7087,7 +7113,7 @@ Prosím zvoľte iné meno súboru.</translation>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qcastingplatform.cpp" line="+104"/>
+ <location filename="../src/xmlpatterns/expr/qcastingplatform.cpp" line="+134"/>
<source>No casting is possible with %1 as the target type.</source>
<translation type="unfinished"></translation>
</message>
@@ -7112,7 +7138,7 @@ Prosím zvoľte iné meno súboru.</translation>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qcommentconstructor.cpp" line="+37"/>
+ <location filename="../src/xmlpatterns/expr/qcommentconstructor.cpp" line="+67"/>
<source>A comment cannot contain %1</source>
<translation type="unfinished"></translation>
</message>
@@ -7122,7 +7148,7 @@ Prosím zvoľte iné meno súboru.</translation>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qcomparisonplatform.cpp" line="+137"/>
+ <location filename="../src/xmlpatterns/expr/qcomparisonplatform.cpp" line="+167"/>
<source>No comparisons can be done involving the type %1.</source>
<translation type="unfinished"></translation>
</message>
@@ -7132,12 +7158,12 @@ Prosím zvoľte iné meno súboru.</translation>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qdocumentcontentvalidator.cpp" line="+56"/>
+ <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 type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qexpressionfactory.cpp" line="+139"/>
+ <location filename="../src/xmlpatterns/expr/qexpressionfactory.cpp" line="+169"/>
<source>A library module cannot be evaluated directly. It must be imported from a main module.</source>
<translation type="unfinished"></translation>
</message>
@@ -7147,7 +7173,7 @@ Prosím zvoľte iné meno súboru.</translation>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qgenericpredicate.cpp" line="+76"/>
+ <location filename="../src/xmlpatterns/expr/qgenericpredicate.cpp" line="+106"/>
<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 type="unfinished"></translation>
</message>
@@ -7157,7 +7183,7 @@ Prosím zvoľte iné meno súboru.</translation>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qncnameconstructor_p.h" line="+83"/>
+ <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 type="unfinished"></translation>
</message>
@@ -7167,33 +7193,33 @@ Prosím zvoľte iné meno súboru.</translation>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qpath.cpp" line="+79"/>
+ <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 type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qprocessinginstructionconstructor.cpp" line="+54"/>
+ <location filename="../src/xmlpatterns/expr/qprocessinginstructionconstructor.cpp" line="+84"/>
<source>The data of a processing instruction cannot contain the string %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qqnameconstructor.cpp" line="+52"/>
+ <location filename="../src/xmlpatterns/expr/qqnameconstructor.cpp" line="+82"/>
<source>No namespace binding exists for the prefix %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qqnameconstructor_p.h" line="+126"/>
+ <location filename="../src/xmlpatterns/expr/qqnameconstructor_p.h" line="+156"/>
<source>No namespace binding exists for the prefix %1 in %2</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+12"/>
- <location filename="../src/xmlpatterns/functions/qqnamefns.cpp" line="+39"/>
+ <location filename="../src/xmlpatterns/functions/qqnamefns.cpp" line="+69"/>
<source>%1 is an invalid %2</source>
<translation type="unfinished"></translation>
</message>
<message numerus="yes">
- <location filename="../src/xmlpatterns/functions/qabstractfunctionfactory.cpp" line="+47"/>
+ <location filename="../src/xmlpatterns/functions/qabstractfunctionfactory.cpp" line="+77"/>
<source>%1 takes at most %n argument(s). %2 is therefore invalid.</source>
<translation type="unfinished">
<numerusform></numerusform>
@@ -7207,7 +7233,7 @@ Prosím zvoľte iné meno súboru.</translation>
</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qaggregatefns.cpp" line="+90"/>
+ <location filename="../src/xmlpatterns/functions/qaggregatefns.cpp" line="+120"/>
<source>The first argument to %1 cannot be of type %2. It must be a numeric type, xs:yearMonthDuration or xs:dayTimeDuration.</source>
<translation type="unfinished"></translation>
</message>
@@ -7222,27 +7248,27 @@ Prosím zvoľte iné meno súboru.</translation>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qassemblestringfns.cpp" line="+58"/>
+ <location filename="../src/xmlpatterns/functions/qassemblestringfns.cpp" line="+88"/>
<source>%1 is not a valid XML 1.0 character.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qcomparingaggregator.cpp" line="+167"/>
+ <location filename="../src/xmlpatterns/functions/qcomparingaggregator.cpp" line="+197"/>
<source>The first argument to %1 cannot be of type %2.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qdatetimefn.cpp" line="+56"/>
+ <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 type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qerrorfn.cpp" line="+31"/>
+ <location filename="../src/xmlpatterns/functions/qerrorfn.cpp" line="+61"/>
<source>%1 was called.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qpatternmatchingfns.cpp" line="+64"/>
+ <location filename="../src/xmlpatterns/functions/qpatternmatchingfns.cpp" line="+94"/>
<source>%1 must be followed by %2 or %3, not at the end of the replacement string.</source>
<translation type="unfinished"></translation>
</message>
@@ -7257,7 +7283,7 @@ Prosím zvoľte iné meno súboru.</translation>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qpatternplatform.cpp" line="+62"/>
+ <location filename="../src/xmlpatterns/functions/qpatternplatform.cpp" line="+92"/>
<source>%1 matches newline characters</source>
<translation type="unfinished"></translation>
</message>
@@ -7292,17 +7318,17 @@ Prosím zvoľte iné meno súboru.</translation>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qsequencefns.cpp" line="+317"/>
+ <location filename="../src/xmlpatterns/functions/qsequencefns.cpp" line="+347"/>
<source>It will not be possible to retrieve %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qcontextnodechecker.cpp" line="+24"/>
+ <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 type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qsequencegeneratingfns.cpp" line="+249"/>
+ <location filename="../src/xmlpatterns/functions/qsequencegeneratingfns.cpp" line="+279"/>
<source>The default collection is undefined</source>
<translation type="unfinished"></translation>
</message>
@@ -7312,12 +7338,12 @@ Prosím zvoľte iné meno súboru.</translation>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qstringvaluefns.cpp" line="+222"/>
+ <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 type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qtimezonefns.cpp" line="+57"/>
+ <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 type="unfinished"></translation>
</message>
@@ -7327,17 +7353,17 @@ Prosím zvoľte iné meno súboru.</translation>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/janitors/qcardinalityverifier.cpp" line="+28"/>
+ <location filename="../src/xmlpatterns/janitors/qcardinalityverifier.cpp" line="+58"/>
<source>Required cardinality is %1; got cardinality %2.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/janitors/qitemverifier.cpp" line="+37"/>
+ <location filename="../src/xmlpatterns/janitors/qitemverifier.cpp" line="+67"/>
<source>The item %1 did not match the required type %2.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="+319"/>
+ <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="+379"/>
<location line="+7253"/>
<source>%1 is an unknown schema type.</source>
<translation type="unfinished"></translation>
@@ -7358,7 +7384,7 @@ Prosím zvoľte iné meno súboru.</translation>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/parser/qparsercontext.cpp" line="+63"/>
+ <location filename="../src/xmlpatterns/parser/qparsercontext.cpp" line="+93"/>
<source>The variable %1 is unused</source>
<translation type="unfinished"></translation>
</message>
@@ -7640,7 +7666,7 @@ Prosím zvoľte iné meno súboru.</translation>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/type/qcardinality.cpp" line="+25"/>
+ <location filename="../src/xmlpatterns/type/qcardinality.cpp" line="+55"/>
<source>empty</source>
<translation type="unfinished"></translation>
</message>
@@ -7665,7 +7691,7 @@ Prosím zvoľte iné meno súboru.</translation>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/type/qtypechecker.cpp" line="+33"/>
+ <location filename="../src/xmlpatterns/type/qtypechecker.cpp" line="+63"/>
<source>Required type is %1, but %2 was found.</source>
<translation type="unfinished"></translation>
</message>
@@ -7680,7 +7706,7 @@ Prosím zvoľte iné meno súboru.</translation>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/utils/qoutputvalidator.cpp" line="+56"/>
+ <location filename="../src/xmlpatterns/utils/qoutputvalidator.cpp" line="+86"/>
<source>It&apos;s not possible to add attributes after any other kind of node.</source>
<translation type="unfinished"></translation>
</message>
@@ -7690,12 +7716,12 @@ Prosím zvoľte iné meno súboru.</translation>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/utils/qxpathhelper_p.h" line="+90"/>
+ <location filename="../src/xmlpatterns/utils/qxpathhelper_p.h" line="+120"/>
<source>Only the Unicode Codepoint Collation is supported(%1). %2 is unsupported.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/acceltree/qacceltreeresourceloader.cpp" line="+284"/>
+ <location filename="../src/xmlpatterns/acceltree/qacceltreeresourceloader.cpp" line="+314"/>
<source>%1 is an unsupported encoding.</source>
<translation type="unfinished"></translation>
</message>
@@ -7710,13 +7736,13 @@ Prosím zvoľte iné meno súboru.</translation>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qapplytemplate.cpp" line="+89"/>
+ <location filename="../src/xmlpatterns/expr/qapplytemplate.cpp" line="+119"/>
<source>Ambiguous rule match.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qcomputednamespaceconstructor.cpp" line="+39"/>
- <source>In a namespace constructor, the value for a namespace value cannot be an empty string.</source>
+ <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 type="unfinished"></translation>
</message>
<message>
@@ -7735,12 +7761,12 @@ Prosím zvoľte iné meno súboru.</translation>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qevaluationcache.cpp" line="+87"/>
+ <location filename="../src/xmlpatterns/expr/qevaluationcache.cpp" line="+117"/>
<source>Circularity detected</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qtemplate.cpp" line="+115"/>
+ <location filename="../src/xmlpatterns/expr/qtemplate.cpp" line="+145"/>
<source>The parameter %1 is required, but no corresponding %2 is supplied.</source>
<translation type="unfinished"></translation>
</message>
@@ -7750,12 +7776,12 @@ Prosím zvoľte iné meno súboru.</translation>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qunparsedtextfn.cpp" line="+35"/>
+ <location filename="../src/xmlpatterns/functions/qunparsedtextfn.cpp" line="+65"/>
<source>The URI cannot have a fragment</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/parser/qxslttokenizer.cpp" line="+489"/>
+ <location filename="../src/xmlpatterns/parser/qxslttokenizer.cpp" line="+519"/>
<source>Element %1 is not allowed at this location.</source>
<translation type="unfinished"></translation>
</message>
@@ -7810,7 +7836,7 @@ Prosím zvoľte iné meno súboru.</translation>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/parser/qmaintainingreader.cpp" line="+153"/>
+ <location filename="../src/xmlpatterns/parser/qmaintainingreader.cpp" line="+183"/>
<source>Attribute %1 cannot appear on the element %2. Only the standard attributes can appear.</source>
<translation type="unfinished"></translation>
</message>
@@ -7885,7 +7911,7 @@ Prosím zvoľte iné meno súboru.</translation>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+432"/>
+ <location line="+434"/>
<source>Element %1 cannot have a sequence constructor.</source>
<translation type="unfinished"></translation>
</message>
diff --git a/translations/qt_sv.ts b/translations/qt_sv.ts
index f27480d..d6affce 100644
--- a/translations/qt_sv.ts
+++ b/translations/qt_sv.ts
@@ -4,7 +4,7 @@
<context>
<name>AudioOutput</name>
<message>
- <location filename="../src/3rdparty/phonon/phonon/audiooutput.cpp" line="+374"/>
+ <location filename="../src/3rdparty/phonon/phonon/audiooutput.cpp" line="+375"/>
<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="unfinished"></translation>
</message>
@@ -22,7 +22,7 @@
<context>
<name>CloseButton</name>
<message>
- <location filename="../src/gui/widgets/qtabbar.cpp" line="+2217"/>
+ <location filename="../src/gui/widgets/qtabbar.cpp" line="+2251"/>
<source>Close Tab</source>
<translation type="unfinished"></translation>
</message>
@@ -89,7 +89,7 @@
<context>
<name>Phonon::Gstreamer::MediaObject</name>
<message>
- <location filename="../src/3rdparty/phonon/gstreamer/mediaobject.cpp" line="+88"/>
+ <location filename="../src/3rdparty/phonon/gstreamer/mediaobject.cpp" line="+90"/>
<source>Cannot start playback.
Check your Gstreamer installation and make sure you
@@ -102,24 +102,24 @@ have libgstreamer-plugins-base installed.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+653"/>
- <location line="+9"/>
+ <location line="+676"/>
+ <location line="+8"/>
<location line="+15"/>
- <location line="+7"/>
- <location line="+5"/>
- <location line="+20"/>
- <location line="+317"/>
+ <location line="+9"/>
+ <location line="+6"/>
+ <location line="+19"/>
+ <location line="+335"/>
<location line="+24"/>
<source>Could not open media source.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-381"/>
+ <location line="-403"/>
<source>Invalid source type.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+355"/>
+ <location line="+377"/>
<source>Could not locate media source.</source>
<translation type="unfinished"></translation>
</message>
@@ -153,7 +153,7 @@ have libgstreamer-plugins-base installed.</source>
<context>
<name>Q3Accel</name>
<message>
- <location filename="../src/qt3support/other/q3accel.cpp" line="+451"/>
+ <location filename="../src/qt3support/other/q3accel.cpp" line="+481"/>
<source>%1, %2 not defined</source>
<translation>%1, %2 är inte definierad</translation>
</message>
@@ -166,7 +166,7 @@ have libgstreamer-plugins-base installed.</source>
<context>
<name>Q3DataTable</name>
<message>
- <location filename="../src/qt3support/sql/q3datatable.cpp" line="+253"/>
+ <location filename="../src/qt3support/sql/q3datatable.cpp" line="+285"/>
<source>True</source>
<translation>Sant</translation>
</message>
@@ -194,7 +194,7 @@ have libgstreamer-plugins-base installed.</source>
<context>
<name>Q3FileDialog</name>
<message>
- <location filename="../src/qt3support/dialogs/q3filedialog.cpp" line="+834"/>
+ <location filename="../src/qt3support/dialogs/q3filedialog.cpp" line="+864"/>
<source>Copy or Move a File</source>
<translation>Kopiera eller ta bort en fil</translation>
</message>
@@ -219,7 +219,7 @@ have libgstreamer-plugins-base installed.</source>
<location line="-157"/>
<location line="+49"/>
<location line="+2153"/>
- <location filename="../src/qt3support/dialogs/q3filedialog_mac.cpp" line="+80"/>
+ <location filename="../src/qt3support/dialogs/q3filedialog_mac.cpp" line="+110"/>
<source>All Files (*)</source>
<translation>Alla filer (*)</translation>
</message>
@@ -359,7 +359,7 @@ have libgstreamer-plugins-base installed.</source>
<message>
<location line="+704"/>
<location line="+2100"/>
- <location filename="../src/qt3support/dialogs/q3filedialog_win.cpp" line="+307"/>
+ <location filename="../src/qt3support/dialogs/q3filedialog_win.cpp" line="+337"/>
<source>Open</source>
<translation>Öppna</translation>
</message>
@@ -527,7 +527,7 @@ Kontrollera sökväg och filnamn.</translation>
<context>
<name>Q3LocalFs</name>
<message>
- <location filename="../src/qt3support/network/q3localfs.cpp" line="+100"/>
+ <location filename="../src/qt3support/network/q3localfs.cpp" line="+130"/>
<location line="+10"/>
<source>Could not read directory
%1</source>
@@ -577,7 +577,7 @@ till
<context>
<name>Q3MainWindow</name>
<message>
- <location filename="../src/qt3support/widgets/q3mainwindow.cpp" line="+2021"/>
+ <location filename="../src/qt3support/widgets/q3mainwindow.cpp" line="+2051"/>
<source>Line up</source>
<translation>Rada upp</translation>
</message>
@@ -590,7 +590,7 @@ till
<context>
<name>Q3NetworkProtocol</name>
<message>
- <location filename="../src/qt3support/network/q3networkprotocol.cpp" line="+824"/>
+ <location filename="../src/qt3support/network/q3networkprotocol.cpp" line="+854"/>
<source>Operation stopped by the user</source>
<translation>Åtgärden stoppades av användaren</translation>
</message>
@@ -598,7 +598,7 @@ till
<context>
<name>Q3ProgressDialog</name>
<message>
- <location filename="../src/qt3support/dialogs/q3progressdialog.cpp" line="+194"/>
+ <location filename="../src/qt3support/dialogs/q3progressdialog.cpp" line="+224"/>
<location line="+61"/>
<source>Cancel</source>
<translation>Avbryt</translation>
@@ -607,7 +607,7 @@ till
<context>
<name>Q3TabDialog</name>
<message>
- <location filename="../src/qt3support/dialogs/q3tabdialog.cpp" line="+159"/>
+ <location filename="../src/qt3support/dialogs/q3tabdialog.cpp" line="+189"/>
<location line="+814"/>
<source>OK</source>
<translation>OK</translation>
@@ -636,7 +636,7 @@ till
<context>
<name>Q3TextEdit</name>
<message>
- <location filename="../src/qt3support/text/q3textedit.cpp" line="+5399"/>
+ <location filename="../src/qt3support/text/q3textedit.cpp" line="+5429"/>
<source>&amp;Undo</source>
<translation>&amp;Ã…ngra</translation>
</message>
@@ -675,7 +675,7 @@ till
<context>
<name>Q3TitleBar</name>
<message>
- <location filename="../src/plugins/accessible/compat/q3complexwidgets.cpp" line="+216"/>
+ <location filename="../src/plugins/accessible/compat/q3complexwidgets.cpp" line="+246"/>
<source>System</source>
<translation>System</translation>
</message>
@@ -743,7 +743,7 @@ till
<context>
<name>Q3ToolBar</name>
<message>
- <location filename="../src/qt3support/widgets/q3toolbar.cpp" line="+662"/>
+ <location filename="../src/qt3support/widgets/q3toolbar.cpp" line="+692"/>
<source>More...</source>
<translation>Mer...</translation>
</message>
@@ -751,7 +751,7 @@ till
<context>
<name>Q3UrlOperator</name>
<message>
- <location filename="../src/qt3support/network/q3urloperator.cpp" line="+356"/>
+ <location filename="../src/qt3support/network/q3urloperator.cpp" line="+386"/>
<location line="+260"/>
<location line="+4"/>
<source>The protocol `%1&apos; is not supported</source>
@@ -803,7 +803,7 @@ till
<context>
<name>Q3Wizard</name>
<message>
- <location filename="../src/qt3support/dialogs/q3wizard.cpp" line="+147"/>
+ <location filename="../src/qt3support/dialogs/q3wizard.cpp" line="+177"/>
<source>&amp;Cancel</source>
<translation>&amp;Avbryt</translation>
</message>
@@ -831,9 +831,9 @@ till
<context>
<name>QAbstractSocket</name>
<message>
- <location filename="../src/network/socket/qabstractsocket.cpp" line="+838"/>
- <location filename="../src/network/socket/qhttpsocketengine.cpp" line="+585"/>
- <location filename="../src/network/socket/qsocks5socketengine.cpp" line="+627"/>
+ <location filename="../src/network/socket/qabstractsocket.cpp" line="+868"/>
+ <location filename="../src/network/socket/qhttpsocketengine.cpp" line="+615"/>
+ <location filename="../src/network/socket/qsocks5socketengine.cpp" line="+657"/>
<location line="+26"/>
<source>Host not found</source>
<translation>Värden hittades inte</translation>
@@ -876,7 +876,7 @@ till
<context>
<name>QAbstractSpinBox</name>
<message>
- <location filename="../src/gui/widgets/qabstractspinbox.cpp" line="+1169"/>
+ <location filename="../src/gui/widgets/qabstractspinbox.cpp" line="+1199"/>
<source>&amp;Step up</source>
<translation>&amp;Stega uppåt</translation>
</message>
@@ -894,12 +894,12 @@ till
<context>
<name>QApplication</name>
<message>
- <location filename="../src/gui/accessible/qaccessibleobject.cpp" line="+346"/>
+ <location filename="../src/gui/accessible/qaccessibleobject.cpp" line="+376"/>
<source>Activate</source>
<translation>Aktivera</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qmessagebox.h" line="+322"/>
+ <location filename="../src/gui/dialogs/qmessagebox.h" line="+352"/>
<source>Executable &apos;%1&apos; requires Qt %2, found Qt %3.</source>
<translation>Binären \&quot;%1\&quot; kräver Qt %2, hittade Qt %3.</translation>
</message>
@@ -909,7 +909,7 @@ till
<translation>Inkompatibelt Qt-biblioteksfel</translation>
</message>
<message>
- <location filename="../src/gui/kernel/qapplication.cpp" line="+2212"/>
+ <location filename="../src/gui/kernel/qapplication.cpp" line="+2248"/>
<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>
@@ -946,7 +946,7 @@ till
<context>
<name>QCheckBox</name>
<message>
- <location filename="../src/plugins/accessible/widgets/simplewidgets.cpp" line="+84"/>
+ <location filename="../src/plugins/accessible/widgets/simplewidgets.cpp" line="+114"/>
<source>Uncheck</source>
<translation>Avkryssa</translation>
</message>
@@ -964,7 +964,7 @@ till
<context>
<name>QColorDialog</name>
<message>
- <location filename="../src/gui/dialogs/qcolordialog.cpp" line="+1219"/>
+ <location filename="../src/gui/dialogs/qcolordialog.cpp" line="+1253"/>
<source>Hu&amp;e:</source>
<translation>Nya&amp;ns:</translation>
</message>
@@ -1038,13 +1038,13 @@ till
<context>
<name>QComboBox</name>
<message>
- <location filename="../src/plugins/accessible/widgets/complexwidgets.cpp" line="+1741"/>
+ <location filename="../src/plugins/accessible/widgets/complexwidgets.cpp" line="+1771"/>
<location line="+65"/>
<source>Open</source>
<translation>Öppna</translation>
</message>
<message>
- <location filename="../src/gui/itemviews/qitemeditorfactory.cpp" line="+514"/>
+ <location filename="../src/gui/itemviews/qitemeditorfactory.cpp" line="+544"/>
<source>False</source>
<translation type="unfinished">Falskt</translation>
</message>
@@ -1062,7 +1062,7 @@ till
<context>
<name>QCoreApplication</name>
<message>
- <location filename="../src/corelib/kernel/qsystemsemaphore_unix.cpp" line="+89"/>
+ <location filename="../src/corelib/kernel/qsystemsemaphore_unix.cpp" line="+119"/>
<source>%1: key is empty</source>
<comment>QSystemSemaphore</comment>
<translation type="unfinished"></translation>
@@ -1083,12 +1083,12 @@ till
<context>
<name>QDB2Driver</name>
<message>
- <location filename="../src/sql/drivers/db2/qsql_db2.cpp" line="+1217"/>
+ <location filename="../src/sql/drivers/db2/qsql_db2.cpp" line="+1276"/>
<source>Unable to connect</source>
<translation>Kunde inte ansluta</translation>
</message>
<message>
- <location line="+263"/>
+ <location line="+303"/>
<source>Unable to commit transaction</source>
<translation>Kunde inte verkställa transaktion</translation>
</message>
@@ -1106,8 +1106,8 @@ till
<context>
<name>QDB2Result</name>
<message>
- <location line="-986"/>
- <location line="+242"/>
+ <location line="-1043"/>
+ <location line="+243"/>
<source>Unable to execute statement</source>
<translation>Kunde inte köra frågesats</translation>
</message>
@@ -1122,7 +1122,7 @@ till
<translation>Kunde inte binda variabel</translation>
</message>
<message>
- <location line="+91"/>
+ <location line="+92"/>
<source>Unable to fetch record %1</source>
<translation>Kunde inte hämta posten %1</translation>
</message>
@@ -1140,7 +1140,7 @@ till
<context>
<name>QDateTimeEdit</name>
<message>
- <location filename="../src/gui/widgets/qdatetimeedit.cpp" line="+2265"/>
+ <location filename="../src/gui/widgets/qdatetimeedit.cpp" line="+2295"/>
<source>AM</source>
<translation>AM</translation>
</message>
@@ -1163,7 +1163,7 @@ till
<context>
<name>QDial</name>
<message>
- <location filename="../src/plugins/accessible/widgets/rangecontrols.cpp" line="+921"/>
+ <location filename="../src/plugins/accessible/widgets/rangecontrols.cpp" line="+951"/>
<source>QDial</source>
<translation type="unfinished"></translation>
</message>
@@ -1181,7 +1181,7 @@ till
<context>
<name>QDialog</name>
<message>
- <location filename="../src/gui/dialogs/qdialog.cpp" line="+567"/>
+ <location filename="../src/gui/dialogs/qdialog.cpp" line="+597"/>
<source>What&apos;s This?</source>
<translation>Vad är det här?</translation>
</message>
@@ -1194,9 +1194,9 @@ till
<context>
<name>QDialogButtonBox</name>
<message>
- <location filename="../src/gui/dialogs/qmessagebox.cpp" line="+1830"/>
+ <location filename="../src/gui/dialogs/qmessagebox.cpp" line="+1866"/>
<location line="+464"/>
- <location filename="../src/gui/widgets/qdialogbuttonbox.cpp" line="+531"/>
+ <location filename="../src/gui/widgets/qdialogbuttonbox.cpp" line="+561"/>
<source>OK</source>
<translation>OK</translation>
</message>
@@ -1319,7 +1319,7 @@ till
<context>
<name>QDirModel</name>
<message>
- <location filename="../src/gui/itemviews/qdirmodel.cpp" line="+423"/>
+ <location filename="../src/gui/itemviews/qdirmodel.cpp" line="+453"/>
<source>Name</source>
<translation>Namn</translation>
</message>
@@ -1349,7 +1349,7 @@ till
<context>
<name>QDockWidget</name>
<message>
- <location filename="../src/plugins/accessible/widgets/qaccessiblewidgets.cpp" line="+1209"/>
+ <location filename="../src/plugins/accessible/widgets/qaccessiblewidgets.cpp" line="+1239"/>
<source>Close</source>
<translation type="unfinished">Stäng</translation>
</message>
@@ -1380,7 +1380,7 @@ till
<context>
<name>QErrorMessage</name>
<message>
- <location filename="../src/gui/dialogs/qerrormessage.cpp" line="+162"/>
+ <location filename="../src/gui/dialogs/qerrormessage.cpp" line="+192"/>
<source>Debug Message:</source>
<translation>Felsökningsmeddelande:</translation>
</message>
@@ -1408,13 +1408,18 @@ till
<context>
<name>QFile</name>
<message>
- <location filename="../src/corelib/io/qfile.cpp" line="+678"/>
- <location line="+130"/>
+ <location filename="../src/corelib/io/qfile.cpp" line="+708"/>
+ <location line="+141"/>
<source>Destination file exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+12"/>
+ <location line="-108"/>
+ <source>Cannot remove source file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+120"/>
<source>Cannot open %1 for input</source>
<translation type="unfinished"></translation>
</message>
@@ -1437,37 +1442,37 @@ till
<context>
<name>QFileDialog</name>
<message>
- <location filename="../src/gui/dialogs/qfiledialog.cpp" line="+484"/>
- <location line="+423"/>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="+515"/>
+ <location line="+444"/>
<source>All Files (*)</source>
<translation>Alla filer (*)</translation>
</message>
<message>
- <location line="+218"/>
+ <location line="+222"/>
<source>Directories</source>
<translation>Kataloger</translation>
</message>
<message>
<location line="-3"/>
<location line="+50"/>
- <location line="+1440"/>
+ <location line="+1471"/>
<location line="+75"/>
<source>&amp;Open</source>
<translation>&amp;Öppna</translation>
</message>
<message>
- <location line="-1565"/>
+ <location line="-1596"/>
<location line="+50"/>
<source>&amp;Save</source>
<translation>&amp;Spara</translation>
</message>
<message>
- <location line="-705"/>
+ <location line="-730"/>
<source>Open</source>
<translation>Öppna</translation>
</message>
<message>
- <location line="+1469"/>
+ <location line="+1515"/>
<source>%1 already exists.
Do you want to replace it?</source>
<translation>%1 finns redan.
@@ -1488,7 +1493,7 @@ Kontrollera att det korrekta filnamnet angavs.</translation>
<translation>Min dator</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-1458"/>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-1504"/>
<source>&amp;Rename</source>
<translation>&amp;Byt namn</translation>
</message>
@@ -1534,7 +1539,7 @@ Kontrollera att det korrekta filnamnet angavs.</translation>
</message>
<message>
<location filename="../src/gui/dialogs/qfiledialog.cpp" line="+6"/>
- <location line="+623"/>
+ <location line="+648"/>
<source>Directory:</source>
<translation>Katalog:</translation>
</message>
@@ -1547,8 +1552,8 @@ Filen hittades inte.
Kontrollera att det korrekta filnamnet angavs</translation>
</message>
<message>
- <location line="+773"/>
- <location line="+851"/>
+ <location line="+794"/>
+ <location line="+862"/>
<source>%1
Directory not found.
Please verify the correct directory name was given.</source>
@@ -1557,7 +1562,7 @@ Katalogen hittades inte.
Kontrollera att det korrekta katalognamnet angavs.</translation>
</message>
<message>
- <location line="-217"/>
+ <location line="-218"/>
<source>&apos;%1&apos; is write protected.
Do you want to delete it anyway?</source>
<translation>\&quot;%1\&quot; är skrivskyddad.
@@ -1574,22 +1579,22 @@ Vill du ta bort den ändå?</translation>
<translation>Kunde inte ta bort katalogen.</translation>
</message>
<message>
- <location line="+406"/>
+ <location line="+407"/>
<source>Recent Places</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfiledialog_win.cpp" line="+130"/>
+ <location filename="../src/gui/dialogs/qfiledialog_win.cpp" line="+160"/>
<source>All Files (*.*)</source>
<translation>Alla filer (*.*)</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-2493"/>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-2550"/>
<source>Save As</source>
<translation>Spara som</translation>
</message>
<message>
- <location filename="../src/gui/itemviews/qfileiconprovider.cpp" line="+381"/>
+ <location filename="../src/gui/itemviews/qfileiconprovider.cpp" line="+411"/>
<source>Drive</source>
<translation>Enhet</translation>
</message>
@@ -1621,29 +1626,29 @@ Vill du ta bort den ändå?</translation>
<translation type="unfinished">Framåt</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfiledialog.cpp" line="+1914"/>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="+1970"/>
<source>New Folder</source>
<translation type="unfinished">Ny mapp</translation>
</message>
<message>
- <location line="-1907"/>
+ <location line="-1963"/>
<source>&amp;New Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+631"/>
+ <location line="+656"/>
<location line="+38"/>
<source>&amp;Choose</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qsidebar.cpp" line="+388"/>
+ <location filename="../src/gui/dialogs/qsidebar.cpp" line="+418"/>
<source>Remove</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-662"/>
- <location line="+627"/>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-687"/>
+ <location line="+652"/>
<source>File &amp;name:</source>
<translation type="unfinished">Fil&amp;namn:</translation>
</message>
@@ -1663,7 +1668,7 @@ Vill du ta bort den ändå?</translation>
<context>
<name>QFileSystemModel</name>
<message>
- <location filename="../src/gui/dialogs/qfilesystemmodel.cpp" line="+707"/>
+ <location filename="../src/gui/dialogs/qfilesystemmodel.cpp" line="+744"/>
<source>%1 TB</source>
<translation type="unfinished"></translation>
</message>
@@ -1725,7 +1730,7 @@ Vill du ta bort den ändå?</translation>
<translation type="unfinished">Ändringsdatum</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfilesystemmodel_p.h" line="+204"/>
+ <location filename="../src/gui/dialogs/qfilesystemmodel_p.h" line="+234"/>
<source>My Computer</source>
<translation type="unfinished">Min dator</translation>
</message>
@@ -1738,7 +1743,7 @@ Vill du ta bort den ändå?</translation>
<context>
<name>QFontDatabase</name>
<message>
- <location filename="../src/gui/text/qfontdatabase.cpp" line="+60"/>
+ <location filename="../src/gui/text/qfontdatabase.cpp" line="+90"/>
<location line="+1176"/>
<source>Normal</source>
<translation type="unfinished"></translation>
@@ -1955,7 +1960,7 @@ Vill du ta bort den ändå?</translation>
<context>
<name>QFontDialog</name>
<message>
- <location filename="../src/gui/dialogs/qfontdialog.cpp" line="+742"/>
+ <location filename="../src/gui/dialogs/qfontdialog.cpp" line="+772"/>
<source>&amp;Font</source>
<translation>&amp;Typsnitt</translation>
</message>
@@ -2004,8 +2009,8 @@ Vill du ta bort den ändå?</translation>
<context>
<name>QFtp</name>
<message>
- <location filename="../src/network/access/qftp.cpp" line="+796"/>
- <location filename="../src/qt3support/network/q3ftp.cpp" line="+653"/>
+ <location filename="../src/network/access/qftp.cpp" line="+826"/>
+ <location filename="../src/qt3support/network/q3ftp.cpp" line="+683"/>
<source>Not connected</source>
<translation>Inte ansluten</translation>
</message>
@@ -2150,7 +2155,7 @@ Vill du ta bort den ändå?</translation>
<context>
<name>QHostInfo</name>
<message>
- <location filename="../src/network/kernel/qhostinfo_p.h" line="+153"/>
+ <location filename="../src/network/kernel/qhostinfo_p.h" line="+183"/>
<source>Unknown error</source>
<translation>Okänt fel</translation>
</message>
@@ -2158,11 +2163,11 @@ Vill du ta bort den ändå?</translation>
<context>
<name>QHostInfoAgent</name>
<message>
- <location filename="../src/network/kernel/qhostinfo_unix.cpp" line="+148"/>
+ <location filename="../src/network/kernel/qhostinfo_unix.cpp" line="+178"/>
<location line="+9"/>
<location line="+64"/>
<location line="+31"/>
- <location filename="../src/network/kernel/qhostinfo_win.cpp" line="+150"/>
+ <location filename="../src/network/kernel/qhostinfo_win.cpp" line="+180"/>
<location line="+9"/>
<location line="+40"/>
<location line="+27"/>
@@ -2188,26 +2193,26 @@ Vill du ta bort den ändå?</translation>
<context>
<name>QHttp</name>
<message>
- <location filename="../src/network/access/qhttp.cpp" line="+335"/>
+ <location filename="../src/network/access/qhttp.cpp" line="+365"/>
<source>HTTPS connection requested but SSL support not compiled in</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+1209"/>
- <location line="+816"/>
- <location filename="../src/qt3support/network/q3http.cpp" line="+1130"/>
+ <location line="+820"/>
+ <location filename="../src/qt3support/network/q3http.cpp" line="+1160"/>
<location line="+567"/>
<source>Unknown error</source>
<translation>Okänt fel</translation>
</message>
<message>
- <location line="-564"/>
+ <location line="-568"/>
<location filename="../src/qt3support/network/q3http.cpp" line="-370"/>
<source>Request aborted</source>
<translation>Begäran avbröts</translation>
</message>
<message>
- <location line="+575"/>
+ <location line="+579"/>
<location filename="../src/qt3support/network/q3http.cpp" line="+381"/>
<source>No server set to connect to</source>
<translation>Ingen server inställd att ansluta till</translation>
@@ -2225,18 +2230,23 @@ Vill du ta bort den ändå?</translation>
<translation>Servern stängde oväntat anslutningen</translation>
</message>
<message>
- <location line="+357"/>
+ <location line="+179"/>
+ <source>Unknown authentication method</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+183"/>
<source>Error writing response to device</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/network/access/qhttpnetworkconnection.cpp" line="+1712"/>
+ <location filename="../src/network/access/qhttpnetworkconnection.cpp" line="+876"/>
<location filename="../src/qt3support/network/q3http.cpp" line="+38"/>
<source>Connection refused</source>
<translation>Anslutningen nekades</translation>
</message>
<message>
- <location filename="../src/network/access/qhttp.cpp" line="-299"/>
+ <location filename="../src/network/access/qhttp.cpp" line="-304"/>
<location filename="../src/network/access/qhttpnetworkconnection.cpp" line="-4"/>
<location filename="../src/qt3support/network/q3http.cpp" line="+3"/>
<source>Host %1 not found</source>
@@ -2257,7 +2267,7 @@ Vill du ta bort den ändå?</translation>
<translation>Ogiltig HTTP-svarshuvud</translation>
</message>
<message>
- <location line="+120"/>
+ <location line="+125"/>
<location line="+48"/>
<location filename="../src/qt3support/network/q3http.cpp" line="+40"/>
<location line="+47"/>
@@ -2306,7 +2316,7 @@ Vill du ta bort den ändå?</translation>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-133"/>
+ <location line="-138"/>
<source>Connection refused (or timed out)</source>
<translation type="unfinished"></translation>
</message>
@@ -2387,7 +2397,7 @@ Vill du ta bort den ändå?</translation>
<context>
<name>QIBaseDriver</name>
<message>
- <location filename="../src/sql/drivers/ibase/qsql_ibase.cpp" line="+1378"/>
+ <location filename="../src/sql/drivers/ibase/qsql_ibase.cpp" line="+1428"/>
<source>Error opening database</source>
<translation>Fel vid öppning av databas</translation>
</message>
@@ -2410,7 +2420,7 @@ Vill du ta bort den ändå?</translation>
<context>
<name>QIBaseResult</name>
<message>
- <location line="-1077"/>
+ <location line="-1097"/>
<source>Unable to create BLOB</source>
<translation>Kunde inte skapa BLOB</translation>
</message>
@@ -2430,7 +2440,7 @@ Vill du ta bort den ändå?</translation>
<translation>Kunde inte läsa BLOB</translation>
</message>
<message>
- <location line="+124"/>
+ <location line="+125"/>
<location line="+189"/>
<source>Could not find array</source>
<translation>Kunde inte hitta kedja</translation>
@@ -2500,7 +2510,7 @@ Vill du ta bort den ändå?</translation>
<context>
<name>QIODevice</name>
<message>
- <location filename="../src/corelib/global/qglobal.cpp" line="+1830"/>
+ <location filename="../src/corelib/global/qglobal.cpp" line="+1869"/>
<source>Permission denied</source>
<translation>Ã…tkomst nekad</translation>
</message>
@@ -2520,7 +2530,7 @@ Vill du ta bort den ändå?</translation>
<translation>Inget ledigt utrymme på enheten</translation>
</message>
<message>
- <location filename="../src/corelib/io/qiodevice.cpp" line="+1506"/>
+ <location filename="../src/corelib/io/qiodevice.cpp" line="+1536"/>
<source>Unknown error</source>
<translation>Okänt fel</translation>
</message>
@@ -2528,7 +2538,7 @@ Vill du ta bort den ändå?</translation>
<context>
<name>QInputContext</name>
<message>
- <location filename="../src/gui/inputmethod/qinputcontextfactory.cpp" line="+212"/>
+ <location filename="../src/gui/inputmethod/qinputcontextfactory.cpp" line="+242"/>
<source>XIM</source>
<translation>XIM</translation>
</message>
@@ -2551,7 +2561,7 @@ Vill du ta bort den ändå?</translation>
<context>
<name>QInputDialog</name>
<message>
- <location filename="../src/gui/dialogs/qinputdialog.cpp" line="+193"/>
+ <location filename="../src/gui/dialogs/qinputdialog.cpp" line="+223"/>
<source>Enter a value:</source>
<translation type="unfinished"></translation>
</message>
@@ -2571,7 +2581,7 @@ Vill du ta bort den ändå?</translation>
<translation type="obsolete">QLibrary::resolve_sys: Symbolen &quot;%1&quot; är inte definierad i %2 (%3)</translation>
</message>
<message>
- <location filename="../src/corelib/plugin/qlibrary.cpp" line="+348"/>
+ <location filename="../src/corelib/plugin/qlibrary.cpp" line="+378"/>
<source>Could not mmap &apos;%1&apos;: %2</source>
<translation type="unfinished"></translation>
</message>
@@ -2587,7 +2597,7 @@ Vill du ta bort den ändå?</translation>
</message>
<message>
<location line="+285"/>
- <location filename="../src/corelib/plugin/qpluginloader.cpp" line="+250"/>
+ <location filename="../src/corelib/plugin/qpluginloader.cpp" line="+280"/>
<source>The shared library was not found.</source>
<translation type="unfinished"></translation>
</message>
@@ -2617,8 +2627,8 @@ Vill du ta bort den ändå?</translation>
<translation type="unfinished">Okänt fel</translation>
</message>
<message>
- <location filename="../src/corelib/plugin/qlibrary_unix.cpp" line="+179"/>
- <location filename="../src/corelib/plugin/qlibrary_win.cpp" line="+69"/>
+ <location filename="../src/corelib/plugin/qlibrary_unix.cpp" line="+209"/>
+ <location filename="../src/corelib/plugin/qlibrary_win.cpp" line="+99"/>
<source>Cannot load library %1: %2</source>
<translation type="unfinished"></translation>
</message>
@@ -2638,7 +2648,7 @@ Vill du ta bort den ändå?</translation>
<context>
<name>QLineEdit</name>
<message>
- <location filename="../src/gui/widgets/qlineedit.cpp" line="+2649"/>
+ <location filename="../src/gui/widgets/qlineedit.cpp" line="+2680"/>
<source>&amp;Undo</source>
<translation>&amp;Ã…ngra</translation>
</message>
@@ -2676,8 +2686,8 @@ Vill du ta bort den ändå?</translation>
<context>
<name>QLocalServer</name>
<message>
- <location filename="../src/network/socket/qlocalserver.cpp" line="+196"/>
- <location filename="../src/network/socket/qlocalserver_unix.cpp" line="+201"/>
+ <location filename="../src/network/socket/qlocalserver.cpp" line="+226"/>
+ <location filename="../src/network/socket/qlocalserver_unix.cpp" line="+231"/>
<source>%1: Name error</source>
<translation type="unfinished"></translation>
</message>
@@ -2693,7 +2703,7 @@ Vill du ta bort den ändå?</translation>
</message>
<message>
<location line="+5"/>
- <location filename="../src/network/socket/qlocalserver_win.cpp" line="+127"/>
+ <location filename="../src/network/socket/qlocalserver_win.cpp" line="+158"/>
<source>%1: Unknown error %2</source>
<translation type="unfinished"></translation>
</message>
@@ -2701,8 +2711,8 @@ Vill du ta bort den ändå?</translation>
<context>
<name>QLocalSocket</name>
<message>
- <location filename="../src/network/socket/qlocalsocket_tcp.cpp" line="+102"/>
- <location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+104"/>
+ <location filename="../src/network/socket/qlocalsocket_tcp.cpp" line="+132"/>
+ <location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+134"/>
<source>%1: Connection refused</source>
<translation type="unfinished"></translation>
</message>
@@ -2715,7 +2725,7 @@ Vill du ta bort den ändå?</translation>
<message>
<location line="+3"/>
<location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+3"/>
- <location filename="../src/network/socket/qlocalsocket_win.cpp" line="+50"/>
+ <location filename="../src/network/socket/qlocalsocket_win.cpp" line="+80"/>
<location line="+43"/>
<source>%1: Invalid name</source>
<translation type="unfinished"></translation>
@@ -2772,7 +2782,7 @@ Vill du ta bort den ändå?</translation>
<context>
<name>QMYSQLDriver</name>
<message>
- <location filename="../src/sql/drivers/mysql/qsql_mysql.cpp" line="+1200"/>
+ <location filename="../src/sql/drivers/mysql/qsql_mysql.cpp" line="+1231"/>
<source>Unable to open database &apos;</source>
<translation>Kunde inte öppna databasen \&quot;</translation>
</message>
@@ -2782,7 +2792,7 @@ Vill du ta bort den ändå?</translation>
<translation>Kunde inte ansluta</translation>
</message>
<message>
- <location line="+123"/>
+ <location line="+127"/>
<source>Unable to begin transaction</source>
<translation>Kunde inte påbörja transaktion</translation>
</message>
@@ -2800,7 +2810,7 @@ Vill du ta bort den ändå?</translation>
<context>
<name>QMYSQLResult</name>
<message>
- <location line="-917"/>
+ <location line="-922"/>
<source>Unable to fetch data</source>
<translation>Kunde inte hämta data</translation>
</message>
@@ -2815,7 +2825,7 @@ Vill du ta bort den ändå?</translation>
<translation>Kunde inte lagra resultat</translation>
</message>
<message>
- <location line="+189"/>
+ <location line="+190"/>
<location line="+8"/>
<source>Unable to prepare statement</source>
<translation>Kunde inte förbereda frågesats</translation>
@@ -2860,7 +2870,7 @@ Vill du ta bort den ändå?</translation>
<context>
<name>QMdiArea</name>
<message>
- <location filename="../src/gui/widgets/qmdiarea.cpp" line="+260"/>
+ <location filename="../src/gui/widgets/qmdiarea.cpp" line="+290"/>
<source>(Untitled)</source>
<translation type="unfinished"></translation>
</message>
@@ -2868,7 +2878,7 @@ Vill du ta bort den ändå?</translation>
<context>
<name>QMdiSubWindow</name>
<message>
- <location filename="../src/gui/widgets/qmdisubwindow.cpp" line="+250"/>
+ <location filename="../src/gui/widgets/qmdisubwindow.cpp" line="+280"/>
<source>%1 - [%2]</source>
<translation type="unfinished">%1 - [%2]</translation>
</message>
@@ -2961,7 +2971,7 @@ Vill du ta bort den ändå?</translation>
<context>
<name>QMenu</name>
<message>
- <location filename="../src/plugins/accessible/widgets/qaccessiblemenu.cpp" line="+127"/>
+ <location filename="../src/plugins/accessible/widgets/qaccessiblemenu.cpp" line="+157"/>
<location line="+225"/>
<source>Close</source>
<translation>Stäng</translation>
@@ -2990,7 +3000,7 @@ Vill du ta bort den ändå?</translation>
<context>
<name>QMessageBox</name>
<message>
- <location filename="../src/gui/dialogs/qmessagebox.cpp" line="-1105"/>
+ <location filename="../src/gui/dialogs/qmessagebox.cpp" line="-1111"/>
<source>Help</source>
<translation>Hjälp</translation>
</message>
@@ -3003,21 +3013,20 @@ Vill du ta bort den ändå?</translation>
<translation>OK</translation>
</message>
<message>
- <location line="+503"/>
+ <location line="+509"/>
<source>About Qt</source>
<translation>Om Qt</translation>
</message>
<message>
- <location line="-15"/>
<source>&lt;p&gt;This program uses Qt version %1.&lt;/p&gt;</source>
- <translation>&lt;p&gt;Detta program använder Qt version %1.&lt;/p&gt;</translation>
+ <translation type="obsolete">&lt;p&gt;Detta program använder Qt version %1.&lt;/p&gt;</translation>
</message>
<message>
<source>&lt;h3&gt;About Qt&lt;/h3&gt;%1&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 Qtopia Core.&lt;/p&gt;&lt;p&gt;Qt is a Trolltech product. See &lt;a href=&quot;http://qtsoftware.com/qt/&quot;&gt;qtsoftware.com/qt/&lt;/a&gt; for more information.&lt;/p&gt;</source>
<translation type="obsolete">&lt;h3&gt;Om Qt&lt;/h3&gt;%1&lt;p&gt;Qt är ett C++-verktygssamling för utveckling av krossplattformsprogram.&lt;/p&gt;&lt;p&gt;Qt tillhandahåller portabilitet för samma källkod mellan MS&amp;nbsp;Windows, Mac&amp;nbsp;OS&amp;nbsp;X, Linux, och alla andra stora kommersiella Unix-varianter. Qt finns också tillgängligt för inbäddade enheter som Qtopia Core.&lt;/p&gt;&lt;p&gt;Qt är en produkt från Trolltech. Se &lt;a href=&quot;http://qtsoftware.com/qt/&quot;&gt;qtsoftware.com/qt/&lt;/a&gt; för mer information.&lt;/p&gt;</translation>
</message>
<message>
- <location line="-1584"/>
+ <location line="-1605"/>
<source>Show Details...</source>
<translation>Visa detaljer...</translation>
</message>
@@ -3028,19 +3037,14 @@ Vill du ta bort den ändå?</translation>
</message>
<message>
<location line="+1570"/>
- <source>&lt;h3&gt;About Qt&lt;/h3&gt;%1&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 a Nokia product. See &lt;a href=&quot;http://qtsoftware.com/qt/&quot;&gt;qtsoftware.com/qt/&lt;/a&gt; for more information.&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location line="+15"/>
- <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://qtsoftware.com/company/model/&quot;&gt;qtsoftware.com/company/model/&lt;/a&gt; for an overview of Qt licensing.&lt;/p&gt;</source>
+ <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://www.qtsoftware.com/products/licensing&quot;&gt;www.qtsoftware.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://www.qtsoftware.com/qt/&quot;&gt;www.qtsoftware.com/qt&lt;/a&gt; for more information.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>QMultiInputContext</name>
<message>
- <location filename="../src/plugins/inputmethods/imsw-multi/qmultiinputcontext.cpp" line="+58"/>
+ <location filename="../src/plugins/inputmethods/imsw-multi/qmultiinputcontext.cpp" line="+88"/>
<source>Select IM</source>
<translation>Välj inmatningsmetod</translation>
</message>
@@ -3048,7 +3052,7 @@ Vill du ta bort den ändå?</translation>
<context>
<name>QMultiInputContextPlugin</name>
<message>
- <location filename="../src/plugins/inputmethods/imsw-multi/qmultiinputcontextplugin.cpp" line="+65"/>
+ <location filename="../src/plugins/inputmethods/imsw-multi/qmultiinputcontextplugin.cpp" line="+95"/>
<source>Multiple input method switcher</source>
<translation>Växlare för flera inmatningsmetoder</translation>
</message>
@@ -3061,7 +3065,7 @@ Vill du ta bort den ändå?</translation>
<context>
<name>QNativeSocketEngine</name>
<message>
- <location filename="../src/network/socket/qnativesocketengine.cpp" line="+176"/>
+ <location filename="../src/network/socket/qnativesocketengine.cpp" line="+206"/>
<source>The remote host closed the connection</source>
<translation>Fjärrvärden stängde anslutningen</translation>
</message>
@@ -3194,7 +3198,7 @@ Vill du ta bort den ändå?</translation>
<context>
<name>QNetworkAccessCacheBackend</name>
<message>
- <location filename="../src/network/access/qnetworkaccesscachebackend.cpp" line="+35"/>
+ <location filename="../src/network/access/qnetworkaccesscachebackend.cpp" line="+65"/>
<source>Error opening %1</source>
<translation type="unfinished"></translation>
</message>
@@ -3202,7 +3206,7 @@ Vill du ta bort den ändå?</translation>
<context>
<name>QNetworkAccessFileBackend</name>
<message>
- <location filename="../src/network/access/qnetworkaccessfilebackend.cpp" line="+69"/>
+ <location filename="../src/network/access/qnetworkaccessfilebackend.cpp" line="+99"/>
<source>Request for opening non-local file %1</source>
<translation type="unfinished"></translation>
</message>
@@ -3230,7 +3234,7 @@ Vill du ta bort den ändå?</translation>
<context>
<name>QNetworkAccessFtpBackend</name>
<message>
- <location filename="../src/network/access/qnetworkaccessftpbackend.cpp" line="+135"/>
+ <location filename="../src/network/access/qnetworkaccessftpbackend.cpp" line="+165"/>
<source>No suitable proxy found</source>
<translation type="unfinished"></translation>
</message>
@@ -3240,7 +3244,7 @@ Vill du ta bort den ändå?</translation>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+131"/>
+ <location line="+130"/>
<source>Logging in to %1 failed: authentication required</source>
<translation type="unfinished"></translation>
</message>
@@ -3258,7 +3262,7 @@ Vill du ta bort den ändå?</translation>
<context>
<name>QNetworkAccessHttpBackend</name>
<message>
- <location filename="../src/network/access/qnetworkaccesshttpbackend.cpp" line="+565"/>
+ <location filename="../src/network/access/qnetworkaccesshttpbackend.cpp" line="+597"/>
<source>No suitable proxy found</source>
<translation type="unfinished"></translation>
</message>
@@ -3271,7 +3275,7 @@ Vill du ta bort den ändå?</translation>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/network/access/qnetworkreplyimpl.cpp" line="+37"/>
+ <location filename="../src/network/access/qnetworkreplyimpl.cpp" line="+68"/>
<source>Protocol &quot;%1&quot; is unknown</source>
<translation type="unfinished"></translation>
</message>
@@ -3279,7 +3283,7 @@ Vill du ta bort den ändå?</translation>
<context>
<name>QNetworkReplyImpl</name>
<message>
- <location line="+422"/>
+ <location line="+432"/>
<location line="+22"/>
<source>Operation canceled</source>
<translation type="unfinished"></translation>
@@ -3288,7 +3292,7 @@ Vill du ta bort den ändå?</translation>
<context>
<name>QOCIDriver</name>
<message>
- <location filename="../src/sql/drivers/oci/qsql_oci.cpp" line="+2027"/>
+ <location filename="../src/sql/drivers/oci/qsql_oci.cpp" line="+2069"/>
<source>Unable to logon</source>
<translation>Kunde inte logga in</translation>
</message>
@@ -3317,7 +3321,7 @@ Vill du ta bort den ändå?</translation>
<context>
<name>QOCIResult</name>
<message>
- <location line="-976"/>
+ <location line="-963"/>
<location line="+161"/>
<location line="+15"/>
<source>Unable to bind column for batch execute</source>
@@ -3344,18 +3348,16 @@ Vill du ta bort den ändå?</translation>
<translation>Kunde inte förbereda frågesats</translation>
</message>
<message>
- <location line="+29"/>
- <location line="+37"/>
+ <location line="+36"/>
<source>Unable to bind value</source>
<translation>Kunde inte binda värde</translation>
</message>
<message>
- <location line="-20"/>
<source>Unable to execute select statement</source>
- <translation>Kunde inte köra \&quot;select\&quot;-frågesats</translation>
+ <translation type="obsolete">Kunde inte köra \&quot;select\&quot;-frågesats</translation>
</message>
<message>
- <location line="+32"/>
+ <location line="+19"/>
<source>Unable to execute statement</source>
<translation>Kunde inte köra frågesats</translation>
</message>
@@ -3363,7 +3365,7 @@ Vill du ta bort den ändå?</translation>
<context>
<name>QODBCDriver</name>
<message>
- <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="+1657"/>
+ <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="+1785"/>
<source>Unable to connect</source>
<translation>Kunde inte ansluta</translation>
</message>
@@ -3373,7 +3375,7 @@ Vill du ta bort den ändå?</translation>
<translation>Kunde inte ansluta - Drivrutinen har inte stöd för all nödvändig funktionalitet</translation>
</message>
<message>
- <location line="+234"/>
+ <location line="+242"/>
<source>Unable to disable autocommit</source>
<translation>Kunde inte inaktivera automatisk verkställning</translation>
</message>
@@ -3396,19 +3398,19 @@ Vill du ta bort den ändå?</translation>
<context>
<name>QODBCResult</name>
<message>
- <location line="-1204"/>
+ <location line="-1218"/>
<location line="+349"/>
<source>QODBCResult::reset: Unable to set &apos;SQL_CURSOR_STATIC&apos; as statement attribute. Please check your ODBC driver configuration</source>
<translation>QODBCResult::reset: Kunde inte ställa in \&quot;SQL_CURSOR_STATIC\&quot; som frågesatsattribut. Kontrollera konfigurationen för din ODBC-drivrutin</translation>
</message>
<message>
<location line="-332"/>
- <location line="+625"/>
+ <location line="+626"/>
<source>Unable to execute statement</source>
<translation>Kunde inte köra frågesats</translation>
</message>
<message>
- <location line="-554"/>
+ <location line="-555"/>
<source>Unable to fetch next</source>
<translation>Kunde inte hämta nästa</translation>
</message>
@@ -3418,19 +3420,19 @@ Vill du ta bort den ändå?</translation>
<translation>Kunde inte förbereda frågesats</translation>
</message>
<message>
- <location line="+267"/>
+ <location line="+268"/>
<source>Unable to bind variable</source>
<translation>Kunde inte binda variabel</translation>
</message>
<message>
<location filename="../src/sql/drivers/db2/qsql_db2.cpp" line="+194"/>
- <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="-474"/>
- <location line="+577"/>
+ <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="-475"/>
+ <location line="+578"/>
<source>Unable to fetch last</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="-671"/>
+ <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="-672"/>
<source>Unable to fetch</source>
<translation type="unfinished"></translation>
</message>
@@ -3448,12 +3450,12 @@ Vill du ta bort den ändå?</translation>
<context>
<name>QObject</name>
<message>
- <location filename="../src/gui/util/qdesktopservices_mac.cpp" line="+134"/>
+ <location filename="../src/gui/util/qdesktopservices_mac.cpp" line="+165"/>
<source>Home</source>
<translation type="unfinished">Home</translation>
</message>
<message>
- <location filename="../src/network/access/qnetworkaccessdatabackend.cpp" line="+44"/>
+ <location filename="../src/network/access/qnetworkaccessdatabackend.cpp" line="+74"/>
<source>Operation not supported on %1</source>
<translation type="unfinished"></translation>
</message>
@@ -3463,7 +3465,7 @@ Vill du ta bort den ändå?</translation>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/network/access/qnetworkaccessdebugpipebackend.cpp" line="+145"/>
+ <location filename="../src/network/access/qnetworkaccessdebugpipebackend.cpp" line="+175"/>
<source>Write error writing to %1: %2</source>
<translation type="unfinished"></translation>
</message>
@@ -3488,7 +3490,7 @@ Vill du ta bort den ändå?</translation>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/network/kernel/qhostinfo.cpp" line="+147"/>
+ <location filename="../src/network/kernel/qhostinfo.cpp" line="+177"/>
<location line="+57"/>
<source>No host name given</source>
<translation type="unfinished"></translation>
@@ -3497,7 +3499,7 @@ Vill du ta bort den ändå?</translation>
<context>
<name>QPPDOptionsModel</name>
<message>
- <location filename="../src/gui/dialogs/qprintdialog_unix.cpp" line="+1165"/>
+ <location filename="../src/gui/dialogs/qprintdialog_unix.cpp" line="+1195"/>
<source>Name</source>
<translation type="unfinished">Namn</translation>
</message>
@@ -3510,7 +3512,7 @@ Vill du ta bort den ändå?</translation>
<context>
<name>QPSQLDriver</name>
<message>
- <location filename="../src/sql/drivers/psql/qsql_psql.cpp" line="+732"/>
+ <location filename="../src/sql/drivers/psql/qsql_psql.cpp" line="+763"/>
<source>Unable to connect</source>
<translation>Kunde inte ansluta</translation>
</message>
@@ -3530,7 +3532,7 @@ Vill du ta bort den ändå?</translation>
<translation>Kunde inte rulla tillbaka transaktion</translation>
</message>
<message>
- <location line="+336"/>
+ <location line="+358"/>
<source>Unable to subscribe</source>
<translation type="unfinished"></translation>
</message>
@@ -3543,12 +3545,12 @@ Vill du ta bort den ändå?</translation>
<context>
<name>QPSQLResult</name>
<message>
- <location line="-1035"/>
+ <location line="-1058"/>
<source>Unable to create query</source>
<translation>Kunde inte skapa fråga</translation>
</message>
<message>
- <location line="+373"/>
+ <location line="+374"/>
<source>Unable to prepare statement</source>
<translation type="unfinished">Kunde inte förbereda frågesats</translation>
</message>
@@ -3556,7 +3558,7 @@ Vill du ta bort den ändå?</translation>
<context>
<name>QPageSetupWidget</name>
<message>
- <location filename="../src/gui/dialogs/qpagesetupdialog_unix.cpp" line="+274"/>
+ <location filename="../src/gui/dialogs/qpagesetupdialog_unix.cpp" line="+304"/>
<source>Centimeters (cm)</source>
<translation type="unfinished"></translation>
</message>
@@ -3672,7 +3674,7 @@ Vill du ta bort den ändå?</translation>
<context>
<name>QPrintDialog</name>
<message>
- <location filename="../src/gui/painting/qprinterinfo_unix.cpp" line="+68"/>
+ <location filename="../src/gui/painting/qprinterinfo_unix.cpp" line="+98"/>
<source>locally connected</source>
<translation>lokalt ansluten</translation>
</message>
@@ -3697,7 +3699,7 @@ Vill du ta bort den ändå?</translation>
<translation type="obsolete">Liggande</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qprintdialog_qws.cpp" line="+299"/>
+ <location filename="../src/gui/dialogs/qprintdialog_qws.cpp" line="+329"/>
<source>A0 (841 x 1189 mm)</source>
<translation>A0 (841 x 1189 mm)</translation>
</message>
@@ -3847,7 +3849,7 @@ Vill du ta bort den ändå?</translation>
<translation>US Common #10 Envelope (105 x 241 mm)</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qprintdialog_win.cpp" line="+238"/>
+ <location filename="../src/gui/dialogs/qprintdialog_win.cpp" line="+268"/>
<source>OK</source>
<translation>OK</translation>
</message>
@@ -3868,7 +3870,7 @@ Vill du ta bort den ändå?</translation>
<translation type="obsolete">Papperskälla:</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qabstractprintdialog.cpp" line="+80"/>
+ <location filename="../src/gui/dialogs/qabstractprintdialog.cpp" line="+110"/>
<location line="+13"/>
<location filename="../src/gui/dialogs/qprintdialog_win.cpp" line="-2"/>
<source>Print</source>
@@ -4200,13 +4202,13 @@ Please choose a different file name.</source>
<context>
<name>QPrintPreviewDialog</name>
<message>
- <location filename="../src/gui/dialogs/qabstractpagesetupdialog.cpp" line="+38"/>
+ <location filename="../src/gui/dialogs/qabstractpagesetupdialog.cpp" line="+68"/>
<location line="+12"/>
<source>Page Setup</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qprintpreviewdialog.cpp" line="+222"/>
+ <location filename="../src/gui/dialogs/qprintpreviewdialog.cpp" line="+252"/>
<source>%1%</source>
<translation type="unfinished"></translation>
</message>
@@ -4488,8 +4490,8 @@ Please choose a different file name.</source>
<context>
<name>QProcess</name>
<message>
- <location filename="../src/corelib/io/qprocess_unix.cpp" line="+445"/>
- <location filename="../src/corelib/io/qprocess_win.cpp" line="+117"/>
+ <location filename="../src/corelib/io/qprocess_unix.cpp" line="+475"/>
+ <location filename="../src/corelib/io/qprocess_win.cpp" line="+147"/>
<source>Could not open input redirection for reading</source>
<translation type="unfinished"></translation>
</message>
@@ -4518,7 +4520,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/corelib/io/qprocess.cpp" line="+503"/>
+ <location filename="../src/corelib/io/qprocess.cpp" line="+533"/>
<location line="+52"/>
<location filename="../src/corelib/io/qprocess_win.cpp" line="-211"/>
<location line="+50"/>
@@ -4538,6 +4540,11 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
+ <location line="+912"/>
+ <source>No program defined</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<location filename="../src/corelib/io/qprocess_win.cpp" line="-341"/>
<source>Process failed to start</source>
<translation type="unfinished"></translation>
@@ -4546,7 +4553,7 @@ Please choose a different file name.</source>
<context>
<name>QProgressDialog</name>
<message>
- <location filename="../src/gui/dialogs/qprogressdialog.cpp" line="+152"/>
+ <location filename="../src/gui/dialogs/qprogressdialog.cpp" line="+182"/>
<source>Cancel</source>
<translation>Avbryt</translation>
</message>
@@ -4570,7 +4577,7 @@ Please choose a different file name.</source>
<context>
<name>QRegExp</name>
<message>
- <location filename="../src/corelib/tools/qregexp.cpp" line="+34"/>
+ <location filename="../src/corelib/tools/qregexp.cpp" line="+64"/>
<source>no error occurred</source>
<translation>inga fel inträffade</translation>
</message>
@@ -4618,7 +4625,7 @@ Please choose a different file name.</source>
<context>
<name>QSQLite2Driver</name>
<message>
- <location filename="../src/sql/drivers/sqlite2/qsql_sqlite2.cpp" line="+353"/>
+ <location filename="../src/sql/drivers/sqlite2/qsql_sqlite2.cpp" line="+396"/>
<source>Error to open database</source>
<translation>Fel vid öppning av databas</translation>
</message>
@@ -4641,12 +4648,12 @@ Please choose a different file name.</source>
<context>
<name>QSQLite2Result</name>
<message>
- <location line="-310"/>
+ <location line="-323"/>
<source>Unable to fetch results</source>
<translation>Kunde inte hämta resultat</translation>
</message>
<message>
- <location line="+139"/>
+ <location line="+147"/>
<source>Unable to execute statement</source>
<translation>Kunde inte köra frågesats</translation>
</message>
@@ -4654,7 +4661,7 @@ Please choose a different file name.</source>
<context>
<name>QSQLiteDriver</name>
<message>
- <location filename="../src/sql/drivers/sqlite/qsql_sqlite.cpp" line="+498"/>
+ <location filename="../src/sql/drivers/sqlite/qsql_sqlite.cpp" line="+528"/>
<source>Error opening database</source>
<translation>Fel vid öppning av databas</translation>
</message>
@@ -4721,12 +4728,12 @@ Please choose a different file name.</source>
<context>
<name>QScrollBar</name>
<message>
- <location filename="../src/gui/widgets/qscrollbar.cpp" line="+419"/>
+ <location filename="../src/gui/widgets/qscrollbar.cpp" line="+448"/>
<source>Scroll here</source>
<translation>Rulla här</translation>
</message>
<message>
- <location line="+3"/>
+ <location line="+2"/>
<source>Left edge</source>
<translation>Vänsterkant</translation>
</message>
@@ -4736,7 +4743,7 @@ Please choose a different file name.</source>
<translation>Överkant</translation>
</message>
<message>
- <location line="+2"/>
+ <location line="+1"/>
<source>Right edge</source>
<translation>Högerkant</translation>
</message>
@@ -4746,7 +4753,7 @@ Please choose a different file name.</source>
<translation>Nederkant</translation>
</message>
<message>
- <location line="+3"/>
+ <location line="+2"/>
<source>Page left</source>
<translation>Sida vänster</translation>
</message>
@@ -4757,7 +4764,7 @@ Please choose a different file name.</source>
<translation>Sida uppåt</translation>
</message>
<message>
- <location line="+2"/>
+ <location line="+1"/>
<source>Page right</source>
<translation>Sida höger</translation>
</message>
@@ -4768,7 +4775,7 @@ Please choose a different file name.</source>
<translation>Sida nedåt</translation>
</message>
<message>
- <location line="+3"/>
+ <location line="+2"/>
<source>Scroll left</source>
<translation>Rulla vänster</translation>
</message>
@@ -4778,7 +4785,7 @@ Please choose a different file name.</source>
<translation>Rulla uppåt</translation>
</message>
<message>
- <location line="+2"/>
+ <location line="+1"/>
<source>Scroll right</source>
<translation>Rulla höger</translation>
</message>
@@ -4806,7 +4813,7 @@ Please choose a different file name.</source>
<context>
<name>QSharedMemory</name>
<message>
- <location filename="../src/corelib/kernel/qsharedmemory.cpp" line="+177"/>
+ <location filename="../src/corelib/kernel/qsharedmemory.cpp" line="+207"/>
<source>%1: unable to set key on lock</source>
<translation type="unfinished"></translation>
</message>
@@ -4817,7 +4824,7 @@ Please choose a different file name.</source>
</message>
<message>
<location line="+168"/>
- <location filename="../src/corelib/kernel/qsharedmemory_p.h" line="+118"/>
+ <location filename="../src/corelib/kernel/qsharedmemory_p.h" line="+148"/>
<source>%1: unable to lock</source>
<translation type="unfinished"></translation>
</message>
@@ -4827,8 +4834,8 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/corelib/kernel/qsharedmemory_unix.cpp" line="+48"/>
- <location filename="../src/corelib/kernel/qsharedmemory_win.cpp" line="+57"/>
+ <location filename="../src/corelib/kernel/qsharedmemory_unix.cpp" line="+78"/>
+ <location filename="../src/corelib/kernel/qsharedmemory_win.cpp" line="+87"/>
<source>%1: permission denied</source>
<translation type="unfinished"></translation>
</message>
@@ -4906,7 +4913,7 @@ Please choose a different file name.</source>
<context>
<name>QShortcut</name>
<message>
- <location filename="../src/gui/kernel/qkeysequence.cpp" line="+343"/>
+ <location filename="../src/gui/kernel/qkeysequence.cpp" line="+373"/>
<source>Space</source>
<translation>Mellanslag</translation>
</message>
@@ -5491,7 +5498,7 @@ Please choose a different file name.</source>
<context>
<name>QSql</name>
<message>
- <location filename="../src/qt3support/sql/q3sqlmanager_p.cpp" line="+860"/>
+ <location filename="../src/qt3support/sql/q3sqlmanager_p.cpp" line="+890"/>
<source>Delete</source>
<translation>Ta bort</translation>
</message>
@@ -5548,7 +5555,7 @@ Please choose a different file name.</source>
<context>
<name>QSslSocket</name>
<message>
- <location filename="../src/network/ssl/qsslsocket_openssl.cpp" line="+539"/>
+ <location filename="../src/network/ssl/qsslsocket_openssl.cpp" line="+569"/>
<source>Unable to write data: %1</source>
<translation type="unfinished"></translation>
</message>
@@ -5607,7 +5614,7 @@ Please choose a different file name.</source>
<name>QSystemSemaphore</name>
<message>
<location filename="../src/corelib/kernel/qsystemsemaphore_unix.cpp" line="-41"/>
- <location filename="../src/corelib/kernel/qsystemsemaphore_win.cpp" line="+36"/>
+ <location filename="../src/corelib/kernel/qsystemsemaphore_win.cpp" line="+66"/>
<source>%1: out of resources</source>
<translation type="unfinished"></translation>
</message>
@@ -5637,7 +5644,7 @@ Please choose a different file name.</source>
<context>
<name>QTDSDriver</name>
<message>
- <location filename="../src/sql/drivers/tds/qsql_tds.cpp" line="+552"/>
+ <location filename="../src/sql/drivers/tds/qsql_tds.cpp" line="+584"/>
<source>Unable to open connection</source>
<translation>Kunde inte öppna anslutning</translation>
</message>
@@ -5667,7 +5674,7 @@ Please choose a different file name.</source>
<translation type="obsolete">Uttagsåtgärd stöds inte</translation>
</message>
<message>
- <location filename="../src/network/socket/qtcpserver.cpp" line="+252"/>
+ <location filename="../src/network/socket/qtcpserver.cpp" line="+282"/>
<source>Operation on socket is not supported</source>
<translation type="unfinished"></translation>
</message>
@@ -5675,7 +5682,7 @@ Please choose a different file name.</source>
<context>
<name>QTextControl</name>
<message>
- <location filename="../src/gui/text/qtextcontrol.cpp" line="+1942"/>
+ <location filename="../src/gui/text/qtextcontrol.cpp" line="+1973"/>
<source>&amp;Undo</source>
<translation>&amp;Ã…ngra</translation>
</message>
@@ -5733,7 +5740,7 @@ Please choose a different file name.</source>
<context>
<name>QUdpSocket</name>
<message>
- <location filename="../src/network/socket/qudpsocket.cpp" line="+139"/>
+ <location filename="../src/network/socket/qudpsocket.cpp" line="+169"/>
<source>This platform does not support IPv6</source>
<translation>Denna plattform saknar stöd för IPv6</translation>
</message>
@@ -5741,7 +5748,7 @@ Please choose a different file name.</source>
<context>
<name>QUndoGroup</name>
<message>
- <location filename="../src/gui/util/qundogroup.cpp" line="+356"/>
+ <location filename="../src/gui/util/qundogroup.cpp" line="+386"/>
<source>Undo</source>
<translation>Ã…ngra</translation>
</message>
@@ -5754,7 +5761,7 @@ Please choose a different file name.</source>
<context>
<name>QUndoModel</name>
<message>
- <location filename="../src/gui/util/qundoview.cpp" line="+71"/>
+ <location filename="../src/gui/util/qundoview.cpp" line="+101"/>
<source>&lt;empty&gt;</source>
<translation>&lt;tom&gt;</translation>
</message>
@@ -5762,7 +5769,7 @@ Please choose a different file name.</source>
<context>
<name>QUndoStack</name>
<message>
- <location filename="../src/gui/util/qundostack.cpp" line="+804"/>
+ <location filename="../src/gui/util/qundostack.cpp" line="+834"/>
<source>Undo</source>
<translation>Ã…ngra</translation>
</message>
@@ -5833,7 +5840,7 @@ Please choose a different file name.</source>
<context>
<name>QWebFrame</name>
<message>
- <location filename="../src/3rdparty/webkit/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp" line="+686"/>
+ <location filename="../src/3rdparty/webkit/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp" line="+692"/>
<source>Request cancelled</source>
<translation type="unfinished"></translation>
</message>
@@ -6243,7 +6250,7 @@ Please choose a different file name.</source>
</translation>
</message>
<message>
- <location filename="../src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp" line="+1342"/>
+ <location filename="../src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp" line="+1322"/>
<source>JavaScript Alert - %1</source>
<translation type="unfinished"></translation>
</message>
@@ -6319,6 +6326,11 @@ Please choose a different file name.</source>
</message>
<message>
<location line="+3"/>
+ <source>Select all</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
<source>Select to the next character</source>
<translation type="unfinished"></translation>
</message>
@@ -6387,11 +6399,21 @@ Please choose a different file name.</source>
<source>Delete to the end of the word</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <location line="+33"/>
+ <source>Insert a new paragraph</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Insert a new line</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>QWhatsThisAction</name>
<message>
- <location filename="../src/gui/kernel/qwhatsthis.cpp" line="+492"/>
+ <location filename="../src/gui/kernel/qwhatsthis.cpp" line="+522"/>
<source>What&apos;s This?</source>
<translation>Vad är det här?</translation>
</message>
@@ -6399,7 +6421,7 @@ Please choose a different file name.</source>
<context>
<name>QWidget</name>
<message>
- <location filename="../src/gui/kernel/qwidget.cpp" line="+5290"/>
+ <location filename="../src/gui/kernel/qwidget.cpp" line="+5326"/>
<source>*</source>
<translation>*</translation>
</message>
@@ -6407,7 +6429,7 @@ Please choose a different file name.</source>
<context>
<name>QWizard</name>
<message>
- <location filename="../src/gui/dialogs/qwizard.cpp" line="+605"/>
+ <location filename="../src/gui/dialogs/qwizard.cpp" line="+637"/>
<source>Go Back</source>
<translation type="unfinished"></translation>
</message>
@@ -6465,7 +6487,7 @@ Please choose a different file name.</source>
<context>
<name>QWorkspace</name>
<message>
- <location filename="../src/gui/widgets/qworkspace.cpp" line="+1064"/>
+ <location filename="../src/gui/widgets/qworkspace.cpp" line="+1094"/>
<source>&amp;Restore</source>
<translation>Åte&amp;rställ</translation>
</message>
@@ -6535,7 +6557,7 @@ Please choose a different file name.</source>
<context>
<name>QXml</name>
<message>
- <location filename="../src/xml/sax/qxml.cpp" line="+28"/>
+ <location filename="../src/xml/sax/qxml.cpp" line="+58"/>
<source>no error occurred</source>
<translation>inga fel inträffade</translation>
</message>
@@ -6653,8 +6675,8 @@ Please choose a different file name.</source>
<context>
<name>QXmlStream</name>
<message>
- <location filename="../src/corelib/xml/qxmlstream.cpp" line="+562"/>
- <location filename="../src/corelib/xml/qxmlstream_p.h" line="+1739"/>
+ <location filename="../src/corelib/xml/qxmlstream.cpp" line="+592"/>
+ <location filename="../src/corelib/xml/qxmlstream_p.h" line="+1769"/>
<source>Extra content at end of document.</source>
<translation type="unfinished"></translation>
</message>
@@ -6838,7 +6860,7 @@ Please choose a different file name.</source>
<context>
<name>QtXmlPatterns</name>
<message>
- <location filename="../src/xmlpatterns/acceltree/qacceltreebuilder.cpp" line="+175"/>
+ <location filename="../src/xmlpatterns/acceltree/qacceltreebuilder.cpp" line="+205"/>
<source>An %1-attribute with value %2 has already been declared.</source>
<translation type="unfinished"></translation>
</message>
@@ -6848,12 +6870,12 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/api/qiodevicedelegate.cpp" line="+54"/>
+ <location filename="../src/xmlpatterns/api/qiodevicedelegate.cpp" line="+84"/>
<source>Network timeout.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/api/qxmlserializer.cpp" line="+290"/>
+ <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 type="unfinished"></translation>
</message>
@@ -6863,7 +6885,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qabstractdatetime.cpp" line="+50"/>
+ <location filename="../src/xmlpatterns/data/qabstractdatetime.cpp" line="+80"/>
<source>Year %1 is invalid because it begins with %2.</source>
<translation type="unfinished"></translation>
</message>
@@ -6903,7 +6925,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qabstractduration.cpp" line="+69"/>
+ <location filename="../src/xmlpatterns/data/qabstractduration.cpp" line="+99"/>
<location line="+15"/>
<source>At least one component must be present.</source>
<translation type="unfinished"></translation>
@@ -6914,7 +6936,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qabstractfloatmathematician.cpp" line="+34"/>
+ <location filename="../src/xmlpatterns/data/qabstractfloatmathematician.cpp" line="+64"/>
<source>No operand in an integer division, %1, can be %2.</source>
<translation type="unfinished"></translation>
</message>
@@ -6929,17 +6951,17 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qanyuri_p.h" line="+102"/>
+ <location filename="../src/xmlpatterns/data/qanyuri_p.h" line="+132"/>
<source>%1 is not a valid value of type %2.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qatomiccasters_p.h" line="+193"/>
+ <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 type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qatomicmathematicians.cpp" line="+35"/>
+ <location filename="../src/xmlpatterns/data/qatomicmathematicians.cpp" line="+65"/>
<source>Integer division (%1) by zero (%2) is undefined.</source>
<translation type="unfinished"></translation>
</message>
@@ -6970,17 +6992,17 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qatomicvalue.cpp" line="+49"/>
+ <location filename="../src/xmlpatterns/data/qatomicvalue.cpp" line="+79"/>
<source>A value of type %1 cannot have an Effective Boolean Value.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qboolean.cpp" line="+48"/>
+ <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 type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qderivedinteger_p.h" line="+372"/>
+ <location filename="../src/xmlpatterns/data/qderivedinteger_p.h" line="+402"/>
<source>Value %1 of type %2 exceeds maximum (%3).</source>
<translation type="unfinished"></translation>
</message>
@@ -6990,7 +7012,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qhexbinary.cpp" line="+61"/>
+ <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 type="unfinished"></translation>
</message>
@@ -7000,7 +7022,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qarithmeticexpression.cpp" line="+177"/>
+ <location filename="../src/xmlpatterns/expr/qarithmeticexpression.cpp" line="+207"/>
<source>Operator %1 cannot be used on type %2.</source>
<translation type="unfinished"></translation>
</message>
@@ -7010,7 +7032,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qattributenamevalidator.cpp" line="+36"/>
+ <location filename="../src/xmlpatterns/expr/qattributenamevalidator.cpp" line="+66"/>
<source>The namespace URI in the name for a computed attribute cannot be %1.</source>
<translation type="unfinished"></translation>
</message>
@@ -7020,7 +7042,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qcastas.cpp" line="+58"/>
+ <location filename="../src/xmlpatterns/expr/qcastas.cpp" line="+88"/>
<source>Type error in cast, expected %1, received %2.</source>
<translation type="unfinished"></translation>
</message>
@@ -7030,7 +7052,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qcastingplatform.cpp" line="+104"/>
+ <location filename="../src/xmlpatterns/expr/qcastingplatform.cpp" line="+134"/>
<source>No casting is possible with %1 as the target type.</source>
<translation type="unfinished"></translation>
</message>
@@ -7055,7 +7077,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qcommentconstructor.cpp" line="+37"/>
+ <location filename="../src/xmlpatterns/expr/qcommentconstructor.cpp" line="+67"/>
<source>A comment cannot contain %1</source>
<translation type="unfinished"></translation>
</message>
@@ -7065,7 +7087,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qcomparisonplatform.cpp" line="+137"/>
+ <location filename="../src/xmlpatterns/expr/qcomparisonplatform.cpp" line="+167"/>
<source>No comparisons can be done involving the type %1.</source>
<translation type="unfinished"></translation>
</message>
@@ -7075,12 +7097,12 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qdocumentcontentvalidator.cpp" line="+56"/>
+ <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 type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qexpressionfactory.cpp" line="+139"/>
+ <location filename="../src/xmlpatterns/expr/qexpressionfactory.cpp" line="+169"/>
<source>A library module cannot be evaluated directly. It must be imported from a main module.</source>
<translation type="unfinished"></translation>
</message>
@@ -7090,7 +7112,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qgenericpredicate.cpp" line="+76"/>
+ <location filename="../src/xmlpatterns/expr/qgenericpredicate.cpp" line="+106"/>
<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 type="unfinished"></translation>
</message>
@@ -7100,7 +7122,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qncnameconstructor_p.h" line="+83"/>
+ <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 type="unfinished"></translation>
</message>
@@ -7110,33 +7132,33 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qpath.cpp" line="+79"/>
+ <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 type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qprocessinginstructionconstructor.cpp" line="+54"/>
+ <location filename="../src/xmlpatterns/expr/qprocessinginstructionconstructor.cpp" line="+84"/>
<source>The data of a processing instruction cannot contain the string %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qqnameconstructor.cpp" line="+52"/>
+ <location filename="../src/xmlpatterns/expr/qqnameconstructor.cpp" line="+82"/>
<source>No namespace binding exists for the prefix %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qqnameconstructor_p.h" line="+126"/>
+ <location filename="../src/xmlpatterns/expr/qqnameconstructor_p.h" line="+156"/>
<source>No namespace binding exists for the prefix %1 in %2</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+12"/>
- <location filename="../src/xmlpatterns/functions/qqnamefns.cpp" line="+39"/>
+ <location filename="../src/xmlpatterns/functions/qqnamefns.cpp" line="+69"/>
<source>%1 is an invalid %2</source>
<translation type="unfinished"></translation>
</message>
<message numerus="yes">
- <location filename="../src/xmlpatterns/functions/qabstractfunctionfactory.cpp" line="+47"/>
+ <location filename="../src/xmlpatterns/functions/qabstractfunctionfactory.cpp" line="+77"/>
<source>%1 takes at most %n argument(s). %2 is therefore invalid.</source>
<translation type="unfinished">
<numerusform></numerusform>
@@ -7150,7 +7172,7 @@ Please choose a different file name.</source>
</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qaggregatefns.cpp" line="+90"/>
+ <location filename="../src/xmlpatterns/functions/qaggregatefns.cpp" line="+120"/>
<source>The first argument to %1 cannot be of type %2. It must be a numeric type, xs:yearMonthDuration or xs:dayTimeDuration.</source>
<translation type="unfinished"></translation>
</message>
@@ -7165,27 +7187,27 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qassemblestringfns.cpp" line="+58"/>
+ <location filename="../src/xmlpatterns/functions/qassemblestringfns.cpp" line="+88"/>
<source>%1 is not a valid XML 1.0 character.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qcomparingaggregator.cpp" line="+167"/>
+ <location filename="../src/xmlpatterns/functions/qcomparingaggregator.cpp" line="+197"/>
<source>The first argument to %1 cannot be of type %2.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qdatetimefn.cpp" line="+56"/>
+ <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 type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qerrorfn.cpp" line="+31"/>
+ <location filename="../src/xmlpatterns/functions/qerrorfn.cpp" line="+61"/>
<source>%1 was called.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qpatternmatchingfns.cpp" line="+64"/>
+ <location filename="../src/xmlpatterns/functions/qpatternmatchingfns.cpp" line="+94"/>
<source>%1 must be followed by %2 or %3, not at the end of the replacement string.</source>
<translation type="unfinished"></translation>
</message>
@@ -7200,7 +7222,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qpatternplatform.cpp" line="+62"/>
+ <location filename="../src/xmlpatterns/functions/qpatternplatform.cpp" line="+92"/>
<source>%1 matches newline characters</source>
<translation type="unfinished"></translation>
</message>
@@ -7235,17 +7257,17 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qsequencefns.cpp" line="+317"/>
+ <location filename="../src/xmlpatterns/functions/qsequencefns.cpp" line="+347"/>
<source>It will not be possible to retrieve %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qcontextnodechecker.cpp" line="+24"/>
+ <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 type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qsequencegeneratingfns.cpp" line="+249"/>
+ <location filename="../src/xmlpatterns/functions/qsequencegeneratingfns.cpp" line="+279"/>
<source>The default collection is undefined</source>
<translation type="unfinished"></translation>
</message>
@@ -7255,12 +7277,12 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qstringvaluefns.cpp" line="+222"/>
+ <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 type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qtimezonefns.cpp" line="+57"/>
+ <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 type="unfinished"></translation>
</message>
@@ -7270,17 +7292,17 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/janitors/qcardinalityverifier.cpp" line="+28"/>
+ <location filename="../src/xmlpatterns/janitors/qcardinalityverifier.cpp" line="+58"/>
<source>Required cardinality is %1; got cardinality %2.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/janitors/qitemverifier.cpp" line="+37"/>
+ <location filename="../src/xmlpatterns/janitors/qitemverifier.cpp" line="+67"/>
<source>The item %1 did not match the required type %2.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="+319"/>
+ <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="+379"/>
<location line="+7253"/>
<source>%1 is an unknown schema type.</source>
<translation type="unfinished"></translation>
@@ -7301,7 +7323,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/parser/qparsercontext.cpp" line="+63"/>
+ <location filename="../src/xmlpatterns/parser/qparsercontext.cpp" line="+93"/>
<source>The variable %1 is unused</source>
<translation type="unfinished"></translation>
</message>
@@ -7583,7 +7605,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/type/qcardinality.cpp" line="+25"/>
+ <location filename="../src/xmlpatterns/type/qcardinality.cpp" line="+55"/>
<source>empty</source>
<translation type="unfinished"></translation>
</message>
@@ -7608,7 +7630,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/type/qtypechecker.cpp" line="+33"/>
+ <location filename="../src/xmlpatterns/type/qtypechecker.cpp" line="+63"/>
<source>Required type is %1, but %2 was found.</source>
<translation type="unfinished"></translation>
</message>
@@ -7623,7 +7645,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/utils/qoutputvalidator.cpp" line="+56"/>
+ <location filename="../src/xmlpatterns/utils/qoutputvalidator.cpp" line="+86"/>
<source>It&apos;s not possible to add attributes after any other kind of node.</source>
<translation type="unfinished"></translation>
</message>
@@ -7633,12 +7655,12 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/utils/qxpathhelper_p.h" line="+90"/>
+ <location filename="../src/xmlpatterns/utils/qxpathhelper_p.h" line="+120"/>
<source>Only the Unicode Codepoint Collation is supported(%1). %2 is unsupported.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/acceltree/qacceltreeresourceloader.cpp" line="+284"/>
+ <location filename="../src/xmlpatterns/acceltree/qacceltreeresourceloader.cpp" line="+314"/>
<source>%1 is an unsupported encoding.</source>
<translation type="unfinished"></translation>
</message>
@@ -7653,13 +7675,13 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qapplytemplate.cpp" line="+89"/>
+ <location filename="../src/xmlpatterns/expr/qapplytemplate.cpp" line="+119"/>
<source>Ambiguous rule match.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qcomputednamespaceconstructor.cpp" line="+39"/>
- <source>In a namespace constructor, the value for a namespace value cannot be an empty string.</source>
+ <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 type="unfinished"></translation>
</message>
<message>
@@ -7678,12 +7700,12 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qevaluationcache.cpp" line="+87"/>
+ <location filename="../src/xmlpatterns/expr/qevaluationcache.cpp" line="+117"/>
<source>Circularity detected</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qtemplate.cpp" line="+115"/>
+ <location filename="../src/xmlpatterns/expr/qtemplate.cpp" line="+145"/>
<source>The parameter %1 is required, but no corresponding %2 is supplied.</source>
<translation type="unfinished"></translation>
</message>
@@ -7693,12 +7715,12 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qunparsedtextfn.cpp" line="+35"/>
+ <location filename="../src/xmlpatterns/functions/qunparsedtextfn.cpp" line="+65"/>
<source>The URI cannot have a fragment</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/parser/qxslttokenizer.cpp" line="+489"/>
+ <location filename="../src/xmlpatterns/parser/qxslttokenizer.cpp" line="+519"/>
<source>Element %1 is not allowed at this location.</source>
<translation type="unfinished"></translation>
</message>
@@ -7753,7 +7775,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/parser/qmaintainingreader.cpp" line="+153"/>
+ <location filename="../src/xmlpatterns/parser/qmaintainingreader.cpp" line="+183"/>
<source>Attribute %1 cannot appear on the element %2. Only the standard attributes can appear.</source>
<translation type="unfinished"></translation>
</message>
@@ -7828,7 +7850,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+432"/>
+ <location line="+434"/>
<source>Element %1 cannot have a sequence constructor.</source>
<translation type="unfinished"></translation>
</message>
diff --git a/translations/qt_uk.ts b/translations/qt_uk.ts
index c16a645..9c1b1f4 100644
--- a/translations/qt_uk.ts
+++ b/translations/qt_uk.ts
@@ -4,7 +4,7 @@
<context>
<name>AudioOutput</name>
<message>
- <location filename="../src/3rdparty/phonon/phonon/audiooutput.cpp" line="+374"/>
+ <location filename="../src/3rdparty/phonon/phonon/audiooutput.cpp" line="+375"/>
<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="unfinished"></translation>
</message>
@@ -22,7 +22,7 @@
<context>
<name>CloseButton</name>
<message>
- <location filename="../src/gui/widgets/qtabbar.cpp" line="+2217"/>
+ <location filename="../src/gui/widgets/qtabbar.cpp" line="+2251"/>
<source>Close Tab</source>
<translation type="unfinished"></translation>
</message>
@@ -96,7 +96,7 @@
<context>
<name>Phonon::Gstreamer::MediaObject</name>
<message>
- <location filename="../src/3rdparty/phonon/gstreamer/mediaobject.cpp" line="+88"/>
+ <location filename="../src/3rdparty/phonon/gstreamer/mediaobject.cpp" line="+90"/>
<source>Cannot start playback.
Check your Gstreamer installation and make sure you
@@ -109,24 +109,24 @@ have libgstreamer-plugins-base installed.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+653"/>
- <location line="+9"/>
+ <location line="+676"/>
+ <location line="+8"/>
<location line="+15"/>
- <location line="+7"/>
- <location line="+5"/>
- <location line="+20"/>
- <location line="+317"/>
+ <location line="+9"/>
+ <location line="+6"/>
+ <location line="+19"/>
+ <location line="+335"/>
<location line="+24"/>
<source>Could not open media source.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-381"/>
+ <location line="-403"/>
<source>Invalid source type.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+355"/>
+ <location line="+377"/>
<source>Could not locate media source.</source>
<translation type="unfinished"></translation>
</message>
@@ -160,7 +160,7 @@ have libgstreamer-plugins-base installed.</source>
<context>
<name>Q3Accel</name>
<message>
- <location filename="../src/qt3support/other/q3accel.cpp" line="+451"/>
+ <location filename="../src/qt3support/other/q3accel.cpp" line="+481"/>
<source>%1, %2 not defined</source>
<translation>%1, %2 не визначено</translation>
</message>
@@ -173,7 +173,7 @@ have libgstreamer-plugins-base installed.</source>
<context>
<name>Q3DataTable</name>
<message>
- <location filename="../src/qt3support/sql/q3datatable.cpp" line="+253"/>
+ <location filename="../src/qt3support/sql/q3datatable.cpp" line="+285"/>
<source>True</source>
<translation>Так</translation>
</message>
@@ -201,7 +201,7 @@ have libgstreamer-plugins-base installed.</source>
<context>
<name>Q3FileDialog</name>
<message>
- <location filename="../src/qt3support/dialogs/q3filedialog.cpp" line="+834"/>
+ <location filename="../src/qt3support/dialogs/q3filedialog.cpp" line="+864"/>
<source>Copy or Move a File</source>
<translation>Копіювати або переÑунути файл</translation>
</message>
@@ -226,7 +226,7 @@ have libgstreamer-plugins-base installed.</source>
<location line="-157"/>
<location line="+49"/>
<location line="+2153"/>
- <location filename="../src/qt3support/dialogs/q3filedialog_mac.cpp" line="+80"/>
+ <location filename="../src/qt3support/dialogs/q3filedialog_mac.cpp" line="+110"/>
<source>All Files (*)</source>
<translation>Ð’ÑÑ– файли (*)</translation>
</message>
@@ -366,7 +366,7 @@ have libgstreamer-plugins-base installed.</source>
<message>
<location line="+704"/>
<location line="+2100"/>
- <location filename="../src/qt3support/dialogs/q3filedialog_win.cpp" line="+307"/>
+ <location filename="../src/qt3support/dialogs/q3filedialog_win.cpp" line="+337"/>
<source>Open</source>
<translation>Відкрити</translation>
</message>
@@ -534,7 +534,7 @@ Check path and filename.</source>
<context>
<name>Q3LocalFs</name>
<message>
- <location filename="../src/qt3support/network/q3localfs.cpp" line="+100"/>
+ <location filename="../src/qt3support/network/q3localfs.cpp" line="+130"/>
<location line="+10"/>
<source>Could not read directory
%1</source>
@@ -583,7 +583,7 @@ to
<context>
<name>Q3MainWindow</name>
<message>
- <location filename="../src/qt3support/widgets/q3mainwindow.cpp" line="+2021"/>
+ <location filename="../src/qt3support/widgets/q3mainwindow.cpp" line="+2051"/>
<source>Line up</source>
<translation>ВирівнÑти</translation>
</message>
@@ -596,7 +596,7 @@ to
<context>
<name>Q3NetworkProtocol</name>
<message>
- <location filename="../src/qt3support/network/q3networkprotocol.cpp" line="+824"/>
+ <location filename="../src/qt3support/network/q3networkprotocol.cpp" line="+854"/>
<source>Operation stopped by the user</source>
<translation>Дію зупинено кориÑтувачем</translation>
</message>
@@ -604,7 +604,7 @@ to
<context>
<name>Q3ProgressDialog</name>
<message>
- <location filename="../src/qt3support/dialogs/q3progressdialog.cpp" line="+194"/>
+ <location filename="../src/qt3support/dialogs/q3progressdialog.cpp" line="+224"/>
<location line="+61"/>
<source>Cancel</source>
<translation>СкаÑувати</translation>
@@ -613,7 +613,7 @@ to
<context>
<name>Q3TabDialog</name>
<message>
- <location filename="../src/qt3support/dialogs/q3tabdialog.cpp" line="+159"/>
+ <location filename="../src/qt3support/dialogs/q3tabdialog.cpp" line="+189"/>
<location line="+814"/>
<source>OK</source>
<translation>Гаразд</translation>
@@ -642,7 +642,7 @@ to
<context>
<name>Q3TextEdit</name>
<message>
- <location filename="../src/qt3support/text/q3textedit.cpp" line="+5399"/>
+ <location filename="../src/qt3support/text/q3textedit.cpp" line="+5429"/>
<source>&amp;Undo</source>
<translation>&amp;Повернути</translation>
</message>
@@ -681,7 +681,7 @@ to
<context>
<name>Q3TitleBar</name>
<message>
- <location filename="../src/plugins/accessible/compat/q3complexwidgets.cpp" line="+216"/>
+ <location filename="../src/plugins/accessible/compat/q3complexwidgets.cpp" line="+246"/>
<source>System</source>
<translation>СиÑтема</translation>
</message>
@@ -749,7 +749,7 @@ to
<context>
<name>Q3ToolBar</name>
<message>
- <location filename="../src/qt3support/widgets/q3toolbar.cpp" line="+662"/>
+ <location filename="../src/qt3support/widgets/q3toolbar.cpp" line="+692"/>
<source>More...</source>
<translation>Додатково...</translation>
</message>
@@ -757,7 +757,7 @@ to
<context>
<name>Q3UrlOperator</name>
<message>
- <location filename="../src/qt3support/network/q3urloperator.cpp" line="+356"/>
+ <location filename="../src/qt3support/network/q3urloperator.cpp" line="+386"/>
<location line="+260"/>
<location line="+4"/>
<source>The protocol `%1&apos; is not supported</source>
@@ -809,7 +809,7 @@ to
<context>
<name>Q3Wizard</name>
<message>
- <location filename="../src/qt3support/dialogs/q3wizard.cpp" line="+147"/>
+ <location filename="../src/qt3support/dialogs/q3wizard.cpp" line="+177"/>
<source>&amp;Cancel</source>
<translation>&amp;СкаÑувати</translation>
</message>
@@ -837,9 +837,9 @@ to
<context>
<name>QAbstractSocket</name>
<message>
- <location filename="../src/network/socket/qabstractsocket.cpp" line="+838"/>
- <location filename="../src/network/socket/qhttpsocketengine.cpp" line="+585"/>
- <location filename="../src/network/socket/qsocks5socketengine.cpp" line="+627"/>
+ <location filename="../src/network/socket/qabstractsocket.cpp" line="+868"/>
+ <location filename="../src/network/socket/qhttpsocketengine.cpp" line="+615"/>
+ <location filename="../src/network/socket/qsocks5socketengine.cpp" line="+657"/>
<location line="+26"/>
<source>Host not found</source>
<translation>Вузол не знайдено</translation>
@@ -882,7 +882,7 @@ to
<context>
<name>QAbstractSpinBox</name>
<message>
- <location filename="../src/gui/widgets/qabstractspinbox.cpp" line="+1169"/>
+ <location filename="../src/gui/widgets/qabstractspinbox.cpp" line="+1199"/>
<source>&amp;Step up</source>
<translation>&amp;Крок вгору</translation>
</message>
@@ -900,12 +900,12 @@ to
<context>
<name>QApplication</name>
<message>
- <location filename="../src/gui/accessible/qaccessibleobject.cpp" line="+346"/>
+ <location filename="../src/gui/accessible/qaccessibleobject.cpp" line="+376"/>
<source>Activate</source>
<translation>Ðктивувати</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qmessagebox.h" line="+322"/>
+ <location filename="../src/gui/dialogs/qmessagebox.h" line="+352"/>
<source>Executable &apos;%1&apos; requires Qt %2, found Qt %3.</source>
<translation>Програма &quot;%1&quot; потребує Qt %2, але знайдено Qt %3.</translation>
</message>
@@ -915,7 +915,7 @@ to
<translation>Помилка неÑуміÑноÑÑ‚Ñ– бібліотеки Qt</translation>
</message>
<message>
- <location filename="../src/gui/kernel/qapplication.cpp" line="+2212"/>
+ <location filename="../src/gui/kernel/qapplication.cpp" line="+2248"/>
<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>
@@ -952,7 +952,7 @@ to
<context>
<name>QCheckBox</name>
<message>
- <location filename="../src/plugins/accessible/widgets/simplewidgets.cpp" line="+84"/>
+ <location filename="../src/plugins/accessible/widgets/simplewidgets.cpp" line="+114"/>
<source>Uncheck</source>
<translation>ЗнÑти позначку</translation>
</message>
@@ -970,7 +970,7 @@ to
<context>
<name>QColorDialog</name>
<message>
- <location filename="../src/gui/dialogs/qcolordialog.cpp" line="+1219"/>
+ <location filename="../src/gui/dialogs/qcolordialog.cpp" line="+1253"/>
<source>Hu&amp;e:</source>
<translation>Від&amp;тінок:</translation>
</message>
@@ -1044,13 +1044,13 @@ to
<context>
<name>QComboBox</name>
<message>
- <location filename="../src/plugins/accessible/widgets/complexwidgets.cpp" line="+1741"/>
+ <location filename="../src/plugins/accessible/widgets/complexwidgets.cpp" line="+1771"/>
<location line="+65"/>
<source>Open</source>
<translation>Відкрити</translation>
</message>
<message>
- <location filename="../src/gui/itemviews/qitemeditorfactory.cpp" line="+514"/>
+ <location filename="../src/gui/itemviews/qitemeditorfactory.cpp" line="+544"/>
<source>False</source>
<translation>ÐÑ–</translation>
</message>
@@ -1068,7 +1068,7 @@ to
<context>
<name>QCoreApplication</name>
<message>
- <location filename="../src/corelib/kernel/qsystemsemaphore_unix.cpp" line="+89"/>
+ <location filename="../src/corelib/kernel/qsystemsemaphore_unix.cpp" line="+119"/>
<source>%1: key is empty</source>
<comment>QSystemSemaphore</comment>
<translation type="unfinished"></translation>
@@ -1089,12 +1089,12 @@ to
<context>
<name>QDB2Driver</name>
<message>
- <location filename="../src/sql/drivers/db2/qsql_db2.cpp" line="+1217"/>
+ <location filename="../src/sql/drivers/db2/qsql_db2.cpp" line="+1276"/>
<source>Unable to connect</source>
<translation>Ðеможливо з&apos;єднатиÑÑ</translation>
</message>
<message>
- <location line="+263"/>
+ <location line="+303"/>
<source>Unable to commit transaction</source>
<translation>Ðеможливо завершити транзакцію</translation>
</message>
@@ -1112,8 +1112,8 @@ to
<context>
<name>QDB2Result</name>
<message>
- <location line="-986"/>
- <location line="+242"/>
+ <location line="-1043"/>
+ <location line="+243"/>
<source>Unable to execute statement</source>
<translation>Ðеможливо виконати оператор</translation>
</message>
@@ -1128,7 +1128,7 @@ to
<translation>Ðеможливо прив&apos;Ñзати змінну</translation>
</message>
<message>
- <location line="+91"/>
+ <location line="+92"/>
<source>Unable to fetch record %1</source>
<translation>Ðеможливо вибрати Ð·Ð°Ð¿Ð¸Ñ %1</translation>
</message>
@@ -1146,7 +1146,7 @@ to
<context>
<name>QDateTimeEdit</name>
<message>
- <location filename="../src/gui/widgets/qdatetimeedit.cpp" line="+2265"/>
+ <location filename="../src/gui/widgets/qdatetimeedit.cpp" line="+2295"/>
<source>AM</source>
<translation>AM</translation>
</message>
@@ -1169,7 +1169,7 @@ to
<context>
<name>QDial</name>
<message>
- <location filename="../src/plugins/accessible/widgets/rangecontrols.cpp" line="+921"/>
+ <location filename="../src/plugins/accessible/widgets/rangecontrols.cpp" line="+951"/>
<source>QDial</source>
<translation>QDial</translation>
</message>
@@ -1187,7 +1187,7 @@ to
<context>
<name>QDialog</name>
<message>
- <location filename="../src/gui/dialogs/qdialog.cpp" line="+567"/>
+ <location filename="../src/gui/dialogs/qdialog.cpp" line="+597"/>
<source>What&apos;s This?</source>
<translation>Що це?</translation>
</message>
@@ -1200,9 +1200,9 @@ to
<context>
<name>QDialogButtonBox</name>
<message>
- <location filename="../src/gui/dialogs/qmessagebox.cpp" line="+1830"/>
+ <location filename="../src/gui/dialogs/qmessagebox.cpp" line="+1866"/>
<location line="+464"/>
- <location filename="../src/gui/widgets/qdialogbuttonbox.cpp" line="+531"/>
+ <location filename="../src/gui/widgets/qdialogbuttonbox.cpp" line="+561"/>
<source>OK</source>
<translation>Гаразд</translation>
</message>
@@ -1325,7 +1325,7 @@ to
<context>
<name>QDirModel</name>
<message>
- <location filename="../src/gui/itemviews/qdirmodel.cpp" line="+423"/>
+ <location filename="../src/gui/itemviews/qdirmodel.cpp" line="+453"/>
<source>Name</source>
<translation>Ім&apos;Ñ</translation>
</message>
@@ -1355,7 +1355,7 @@ to
<context>
<name>QDockWidget</name>
<message>
- <location filename="../src/plugins/accessible/widgets/qaccessiblewidgets.cpp" line="+1209"/>
+ <location filename="../src/plugins/accessible/widgets/qaccessiblewidgets.cpp" line="+1239"/>
<source>Close</source>
<translation>Закрити</translation>
</message>
@@ -1386,7 +1386,7 @@ to
<context>
<name>QErrorMessage</name>
<message>
- <location filename="../src/gui/dialogs/qerrormessage.cpp" line="+162"/>
+ <location filename="../src/gui/dialogs/qerrormessage.cpp" line="+192"/>
<source>Debug Message:</source>
<translation>ÐŸÐ¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð·Ð½ÐµÐ²Ð°Ð´Ð¶ÐµÐ½Ð½Ñ:</translation>
</message>
@@ -1414,13 +1414,18 @@ to
<context>
<name>QFile</name>
<message>
- <location filename="../src/corelib/io/qfile.cpp" line="+678"/>
- <location line="+130"/>
+ <location filename="../src/corelib/io/qfile.cpp" line="+708"/>
+ <location line="+141"/>
<source>Destination file exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+12"/>
+ <location line="-108"/>
+ <source>Cannot remove source file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+120"/>
<source>Cannot open %1 for input</source>
<translation type="unfinished"></translation>
</message>
@@ -1443,37 +1448,37 @@ to
<context>
<name>QFileDialog</name>
<message>
- <location filename="../src/gui/dialogs/qfiledialog.cpp" line="+484"/>
- <location line="+423"/>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="+515"/>
+ <location line="+444"/>
<source>All Files (*)</source>
<translation>Ð’ÑÑ– файли (*)</translation>
</message>
<message>
- <location line="+218"/>
+ <location line="+222"/>
<source>Directories</source>
<translation>Каталоги</translation>
</message>
<message>
<location line="-3"/>
<location line="+50"/>
- <location line="+1440"/>
+ <location line="+1471"/>
<location line="+75"/>
<source>&amp;Open</source>
<translation>&amp;Відкрити</translation>
</message>
<message>
- <location line="-1565"/>
+ <location line="-1596"/>
<location line="+50"/>
<source>&amp;Save</source>
<translation>&amp;Зберегти</translation>
</message>
<message>
- <location line="-705"/>
+ <location line="-730"/>
<source>Open</source>
<translation>Відкрити</translation>
</message>
<message>
- <location line="+1469"/>
+ <location line="+1515"/>
<source>%1 already exists.
Do you want to replace it?</source>
<translation>%1 вже Ñ–Ñнує.
@@ -1494,7 +1499,7 @@ Please verify the correct file name was given.</source>
<translation>Мій комп&apos;ютер</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-1458"/>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-1504"/>
<source>&amp;Rename</source>
<translation>&amp;Перейменувати</translation>
</message>
@@ -1540,7 +1545,7 @@ Please verify the correct file name was given.</source>
</message>
<message>
<location filename="../src/gui/dialogs/qfiledialog.cpp" line="+6"/>
- <location line="+623"/>
+ <location line="+648"/>
<source>Directory:</source>
<translation>Каталог:</translation>
</message>
@@ -1553,8 +1558,8 @@ Please verify the correct file name was given</source>
ПереконайтеÑÑ, що введено правильне ім&apos;Ñ Ñ„Ð°Ð¹Ð»Ñƒ</translation>
</message>
<message>
- <location line="+773"/>
- <location line="+851"/>
+ <location line="+794"/>
+ <location line="+862"/>
<source>%1
Directory not found.
Please verify the correct directory name was given.</source>
@@ -1563,7 +1568,7 @@ Please verify the correct directory name was given.</source>
ПереконайтеÑÑ, що введено правильне ім&apos;Ñ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ñƒ.</translation>
</message>
<message>
- <location line="-217"/>
+ <location line="-218"/>
<source>&apos;%1&apos; is write protected.
Do you want to delete it anyway?</source>
<translation>&quot;%1&quot; захищено від запиÑу.
@@ -1580,22 +1585,22 @@ Do you want to delete it anyway?</source>
<translation>Ðеможливо вилучити каталог.</translation>
</message>
<message>
- <location line="+406"/>
+ <location line="+407"/>
<source>Recent Places</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfiledialog_win.cpp" line="+130"/>
+ <location filename="../src/gui/dialogs/qfiledialog_win.cpp" line="+160"/>
<source>All Files (*.*)</source>
<translation>Ð’ÑÑ– файли (*.*)</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-2493"/>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-2550"/>
<source>Save As</source>
<translation>Зберегти, Ñк</translation>
</message>
<message>
- <location filename="../src/gui/itemviews/qfileiconprovider.cpp" line="+381"/>
+ <location filename="../src/gui/itemviews/qfileiconprovider.cpp" line="+411"/>
<source>Drive</source>
<translation>ДиÑк</translation>
</message>
@@ -1631,17 +1636,17 @@ Do you want to delete it anyway?</source>
<translation>Вперед</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfiledialog.cpp" line="+1914"/>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="+1970"/>
<source>New Folder</source>
<translation>Ðова тека</translation>
</message>
<message>
- <location line="-1907"/>
+ <location line="-1963"/>
<source>&amp;New Folder</source>
<translation>&amp;Ðова тека</translation>
</message>
<message>
- <location line="+631"/>
+ <location line="+656"/>
<location line="+38"/>
<source>&amp;Choose</source>
<translation>&amp;Вибрати</translation>
@@ -1651,13 +1656,13 @@ Do you want to delete it anyway?</source>
<translation type="obsolete">Зберегти, &amp;Ñк:</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qsidebar.cpp" line="+388"/>
+ <location filename="../src/gui/dialogs/qsidebar.cpp" line="+418"/>
<source>Remove</source>
<translation>Вилучити</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-662"/>
- <location line="+627"/>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-687"/>
+ <location line="+652"/>
<source>File &amp;name:</source>
<translation>&amp;Ім&apos;Ñ Ñ„Ð°Ð¹Ð»Ñƒ:</translation>
</message>
@@ -1677,7 +1682,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QFileSystemModel</name>
<message>
- <location filename="../src/gui/dialogs/qfilesystemmodel.cpp" line="+791"/>
+ <location filename="../src/gui/dialogs/qfilesystemmodel.cpp" line="+828"/>
<source>Invalid filename</source>
<translation>Ðеправильне ім&apos;Ñ Ñ„Ð°Ð¹Ð»Ñƒ</translation>
</message>
@@ -1714,7 +1719,7 @@ Do you want to delete it anyway?</source>
<translation>Дата зміни</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfilesystemmodel_p.h" line="+204"/>
+ <location filename="../src/gui/dialogs/qfilesystemmodel_p.h" line="+234"/>
<source>My Computer</source>
<translation>Мій комп&apos;ютер</translation>
</message>
@@ -1752,7 +1757,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QFontDatabase</name>
<message>
- <location filename="../src/gui/text/qfontdatabase.cpp" line="+60"/>
+ <location filename="../src/gui/text/qfontdatabase.cpp" line="+90"/>
<location line="+1176"/>
<source>Normal</source>
<translation type="unfinished"></translation>
@@ -1969,7 +1974,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QFontDialog</name>
<message>
- <location filename="../src/gui/dialogs/qfontdialog.cpp" line="+742"/>
+ <location filename="../src/gui/dialogs/qfontdialog.cpp" line="+772"/>
<source>&amp;Font</source>
<translation>&amp;Шрифт</translation>
</message>
@@ -2018,8 +2023,8 @@ Do you want to delete it anyway?</source>
<context>
<name>QFtp</name>
<message>
- <location filename="../src/network/access/qftp.cpp" line="+796"/>
- <location filename="../src/qt3support/network/q3ftp.cpp" line="+653"/>
+ <location filename="../src/network/access/qftp.cpp" line="+826"/>
+ <location filename="../src/qt3support/network/q3ftp.cpp" line="+683"/>
<source>Not connected</source>
<translation>Ðе з&apos;єднано</translation>
</message>
@@ -2161,7 +2166,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QHostInfo</name>
<message>
- <location filename="../src/network/kernel/qhostinfo_p.h" line="+153"/>
+ <location filename="../src/network/kernel/qhostinfo_p.h" line="+183"/>
<source>Unknown error</source>
<translation>Ðевідома помилка</translation>
</message>
@@ -2169,11 +2174,11 @@ Do you want to delete it anyway?</source>
<context>
<name>QHostInfoAgent</name>
<message>
- <location filename="../src/network/kernel/qhostinfo_unix.cpp" line="+148"/>
+ <location filename="../src/network/kernel/qhostinfo_unix.cpp" line="+178"/>
<location line="+9"/>
<location line="+64"/>
<location line="+31"/>
- <location filename="../src/network/kernel/qhostinfo_win.cpp" line="+150"/>
+ <location filename="../src/network/kernel/qhostinfo_win.cpp" line="+180"/>
<location line="+9"/>
<location line="+40"/>
<location line="+27"/>
@@ -2199,26 +2204,26 @@ Do you want to delete it anyway?</source>
<context>
<name>QHttp</name>
<message>
- <location filename="../src/network/access/qhttp.cpp" line="+335"/>
+ <location filename="../src/network/access/qhttp.cpp" line="+365"/>
<source>HTTPS connection requested but SSL support not compiled in</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+1209"/>
- <location line="+816"/>
- <location filename="../src/qt3support/network/q3http.cpp" line="+1130"/>
+ <location line="+820"/>
+ <location filename="../src/qt3support/network/q3http.cpp" line="+1160"/>
<location line="+567"/>
<source>Unknown error</source>
<translation>Ðевідома помилка</translation>
</message>
<message>
- <location line="-564"/>
+ <location line="-568"/>
<location filename="../src/qt3support/network/q3http.cpp" line="-370"/>
<source>Request aborted</source>
<translation>Запит перервано</translation>
</message>
<message>
- <location line="+575"/>
+ <location line="+579"/>
<location filename="../src/qt3support/network/q3http.cpp" line="+381"/>
<source>No server set to connect to</source>
<translation>Ðе вказано Ñервер Ð´Ð»Ñ Ð·&apos;єднаннÑ</translation>
@@ -2236,18 +2241,23 @@ Do you want to delete it anyway?</source>
<translation>Сервер неÑподівано закрив з&apos;єднаннÑ</translation>
</message>
<message>
- <location line="+357"/>
+ <location line="+179"/>
+ <source>Unknown authentication method</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+183"/>
<source>Error writing response to device</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/network/access/qhttpnetworkconnection.cpp" line="+1712"/>
+ <location filename="../src/network/access/qhttpnetworkconnection.cpp" line="+876"/>
<location filename="../src/qt3support/network/q3http.cpp" line="+38"/>
<source>Connection refused</source>
<translation>Відмовлено у зв&apos;Ñзку</translation>
</message>
<message>
- <location filename="../src/network/access/qhttp.cpp" line="-299"/>
+ <location filename="../src/network/access/qhttp.cpp" line="-304"/>
<location filename="../src/network/access/qhttpnetworkconnection.cpp" line="-4"/>
<location filename="../src/qt3support/network/q3http.cpp" line="+3"/>
<source>Host %1 not found</source>
@@ -2268,7 +2278,7 @@ Do you want to delete it anyway?</source>
<translation>Ðеправильний заголовок відповіді HTTP</translation>
</message>
<message>
- <location line="+120"/>
+ <location line="+125"/>
<location line="+48"/>
<location filename="../src/qt3support/network/q3http.cpp" line="+40"/>
<location line="+47"/>
@@ -2317,7 +2327,7 @@ Do you want to delete it anyway?</source>
<translation>ÐÐ²Ñ‚ÐµÐ½Ñ‚Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ñ Ð¾Ð±Ð¾Ð²&apos;Ñзкова</translation>
</message>
<message>
- <location line="-133"/>
+ <location line="-138"/>
<source>Connection refused (or timed out)</source>
<translation type="unfinished"></translation>
</message>
@@ -2398,7 +2408,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QIBaseDriver</name>
<message>
- <location filename="../src/sql/drivers/ibase/qsql_ibase.cpp" line="+1378"/>
+ <location filename="../src/sql/drivers/ibase/qsql_ibase.cpp" line="+1428"/>
<source>Error opening database</source>
<translation>Ðеможливо відкрити базу даних</translation>
</message>
@@ -2421,7 +2431,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QIBaseResult</name>
<message>
- <location line="-1077"/>
+ <location line="-1097"/>
<source>Unable to create BLOB</source>
<translation>Ðеможливо Ñтворити BLOB</translation>
</message>
@@ -2441,7 +2451,7 @@ Do you want to delete it anyway?</source>
<translation>Ðеможливо прочитати BLOB</translation>
</message>
<message>
- <location line="+124"/>
+ <location line="+125"/>
<location line="+189"/>
<source>Could not find array</source>
<translation>Ðеможливо знайти маÑив</translation>
@@ -2511,7 +2521,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QIODevice</name>
<message>
- <location filename="../src/corelib/global/qglobal.cpp" line="+1830"/>
+ <location filename="../src/corelib/global/qglobal.cpp" line="+1869"/>
<source>Permission denied</source>
<translation>Відмовлено у доÑтупі</translation>
</message>
@@ -2531,7 +2541,7 @@ Do you want to delete it anyway?</source>
<translation>Ðа приÑтрої не лишилоÑÑŒ міÑцÑ</translation>
</message>
<message>
- <location filename="../src/corelib/io/qiodevice.cpp" line="+1506"/>
+ <location filename="../src/corelib/io/qiodevice.cpp" line="+1536"/>
<source>Unknown error</source>
<translation>Ðевідома помилка</translation>
</message>
@@ -2539,7 +2549,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QInputContext</name>
<message>
- <location filename="../src/gui/inputmethod/qinputcontextfactory.cpp" line="+212"/>
+ <location filename="../src/gui/inputmethod/qinputcontextfactory.cpp" line="+242"/>
<source>XIM</source>
<translation>XIM</translation>
</message>
@@ -2562,7 +2572,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QInputDialog</name>
<message>
- <location filename="../src/gui/dialogs/qinputdialog.cpp" line="+193"/>
+ <location filename="../src/gui/dialogs/qinputdialog.cpp" line="+223"/>
<source>Enter a value:</source>
<translation type="unfinished"></translation>
</message>
@@ -2582,7 +2592,7 @@ Do you want to delete it anyway?</source>
<translation type="obsolete">QLibrary::resolve_sys: Ñимвол &quot;%1&quot; не Ñ” визначеним в %2 (%3)</translation>
</message>
<message>
- <location filename="../src/corelib/plugin/qlibrary.cpp" line="+348"/>
+ <location filename="../src/corelib/plugin/qlibrary.cpp" line="+378"/>
<source>Could not mmap &apos;%1&apos;: %2</source>
<translation>Помилка Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ mmap &quot;%1&quot;: %2</translation>
</message>
@@ -2613,7 +2623,7 @@ Do you want to delete it anyway?</source>
</message>
<message>
<location line="-377"/>
- <location filename="../src/corelib/plugin/qpluginloader.cpp" line="+250"/>
+ <location filename="../src/corelib/plugin/qpluginloader.cpp" line="+280"/>
<source>The shared library was not found.</source>
<translation>Спільну бібліотеку не знайдено.</translation>
</message>
@@ -2628,8 +2638,8 @@ Do you want to delete it anyway?</source>
<translation>Додаток &quot;%1&quot; викориÑтовує неÑуміÑну бібліотеку Qt. (Ðе дозволÑєтьÑÑ Ð·Ð¼Ñ–ÑˆÑƒÐ²Ð°Ñ‚Ð¸ верÑÑ–ÑŽ бібліотеки Ð´Ð»Ñ Ð·Ð½ÐµÐ²Ð°Ð´Ð¶ÐµÐ½Ð½Ñ Ñ– верÑÑ–ÑŽ випуÑку.)</translation>
</message>
<message>
- <location filename="../src/corelib/plugin/qlibrary_unix.cpp" line="+179"/>
- <location filename="../src/corelib/plugin/qlibrary_win.cpp" line="+69"/>
+ <location filename="../src/corelib/plugin/qlibrary_unix.cpp" line="+209"/>
+ <location filename="../src/corelib/plugin/qlibrary_win.cpp" line="+99"/>
<source>Cannot load library %1: %2</source>
<translation type="unfinished"></translation>
</message>
@@ -2649,7 +2659,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QLineEdit</name>
<message>
- <location filename="../src/gui/widgets/qlineedit.cpp" line="+2649"/>
+ <location filename="../src/gui/widgets/qlineedit.cpp" line="+2680"/>
<source>&amp;Undo</source>
<translation>&amp;Повернути</translation>
</message>
@@ -2687,8 +2697,8 @@ Do you want to delete it anyway?</source>
<context>
<name>QLocalServer</name>
<message>
- <location filename="../src/network/socket/qlocalserver.cpp" line="+196"/>
- <location filename="../src/network/socket/qlocalserver_unix.cpp" line="+201"/>
+ <location filename="../src/network/socket/qlocalserver.cpp" line="+226"/>
+ <location filename="../src/network/socket/qlocalserver_unix.cpp" line="+231"/>
<source>%1: Name error</source>
<translation type="unfinished"></translation>
</message>
@@ -2704,7 +2714,7 @@ Do you want to delete it anyway?</source>
</message>
<message>
<location line="+5"/>
- <location filename="../src/network/socket/qlocalserver_win.cpp" line="+127"/>
+ <location filename="../src/network/socket/qlocalserver_win.cpp" line="+158"/>
<source>%1: Unknown error %2</source>
<translation type="unfinished"></translation>
</message>
@@ -2712,8 +2722,8 @@ Do you want to delete it anyway?</source>
<context>
<name>QLocalSocket</name>
<message>
- <location filename="../src/network/socket/qlocalsocket_tcp.cpp" line="+102"/>
- <location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+104"/>
+ <location filename="../src/network/socket/qlocalsocket_tcp.cpp" line="+132"/>
+ <location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+134"/>
<source>%1: Connection refused</source>
<translation type="unfinished"></translation>
</message>
@@ -2726,7 +2736,7 @@ Do you want to delete it anyway?</source>
<message>
<location line="+3"/>
<location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+3"/>
- <location filename="../src/network/socket/qlocalsocket_win.cpp" line="+50"/>
+ <location filename="../src/network/socket/qlocalsocket_win.cpp" line="+80"/>
<location line="+43"/>
<source>%1: Invalid name</source>
<translation type="unfinished"></translation>
@@ -2783,7 +2793,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QMYSQLDriver</name>
<message>
- <location filename="../src/sql/drivers/mysql/qsql_mysql.cpp" line="+1200"/>
+ <location filename="../src/sql/drivers/mysql/qsql_mysql.cpp" line="+1231"/>
<source>Unable to open database &apos;</source>
<translation>Ðеможливо відкрити базу даних</translation>
</message>
@@ -2793,7 +2803,7 @@ Do you want to delete it anyway?</source>
<translation>Ðеможливо з&apos;єднатиÑÑ</translation>
</message>
<message>
- <location line="+123"/>
+ <location line="+127"/>
<source>Unable to begin transaction</source>
<translation>Ðеможливо почати транзакцію</translation>
</message>
@@ -2811,7 +2821,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QMYSQLResult</name>
<message>
- <location line="-917"/>
+ <location line="-922"/>
<source>Unable to fetch data</source>
<translation>Ðеможливо вибрати дані</translation>
</message>
@@ -2826,7 +2836,7 @@ Do you want to delete it anyway?</source>
<translation>Ðеможливо запиÑати результат</translation>
</message>
<message>
- <location line="+189"/>
+ <location line="+190"/>
<location line="+8"/>
<source>Unable to prepare statement</source>
<translation>Ðеможливо підготувати оператор</translation>
@@ -2871,7 +2881,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QMdiArea</name>
<message>
- <location filename="../src/gui/widgets/qmdiarea.cpp" line="+260"/>
+ <location filename="../src/gui/widgets/qmdiarea.cpp" line="+290"/>
<source>(Untitled)</source>
<translation type="unfinished"></translation>
</message>
@@ -2879,7 +2889,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QMdiSubWindow</name>
<message>
- <location filename="../src/gui/widgets/qmdisubwindow.cpp" line="+250"/>
+ <location filename="../src/gui/widgets/qmdisubwindow.cpp" line="+280"/>
<source>%1 - [%2]</source>
<translation>%1 - [%2]</translation>
</message>
@@ -2972,7 +2982,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QMenu</name>
<message>
- <location filename="../src/plugins/accessible/widgets/qaccessiblemenu.cpp" line="+127"/>
+ <location filename="../src/plugins/accessible/widgets/qaccessiblemenu.cpp" line="+157"/>
<location line="+225"/>
<source>Close</source>
<translation>Закрити</translation>
@@ -3045,7 +3055,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QMessageBox</name>
<message>
- <location filename="../src/gui/dialogs/qmessagebox.cpp" line="-1105"/>
+ <location filename="../src/gui/dialogs/qmessagebox.cpp" line="-1111"/>
<source>Help</source>
<translation>Довідка</translation>
</message>
@@ -3058,21 +3068,20 @@ Do you want to delete it anyway?</source>
<translation>Гаразд</translation>
</message>
<message>
- <location line="+503"/>
+ <location line="+509"/>
<source>About Qt</source>
<translation>Про Qt</translation>
</message>
<message>
- <location line="-15"/>
<source>&lt;p&gt;This program uses Qt version %1.&lt;/p&gt;</source>
- <translation>&lt;p&gt;Ð¦Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð° викориÑтовує Qt верÑÑ–Ñ— %1.&lt;/p&gt;</translation>
+ <translation type="obsolete">&lt;p&gt;Ð¦Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð° викориÑтовує Qt верÑÑ–Ñ— %1.&lt;/p&gt;</translation>
</message>
<message>
<source>&lt;h3&gt;About Qt&lt;/h3&gt;%1&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 Qtopia Core.&lt;/p&gt;&lt;p&gt;Qt is a Trolltech product. See &lt;a href=&quot;http://qtsoftware.com/qt/&quot;&gt;qtsoftware.com/qt/&lt;/a&gt; for more information.&lt;/p&gt;</source>
<translation type="obsolete">&lt;h3&gt;Про Qt&lt;/h3&gt;%1&lt;p&gt;Qt - це інÑтрументарій C++ Ð´Ð»Ñ Ð¼Ñ–Ð¶Ð¿Ð»Ð°Ñ‚Ñ„Ð¾Ñ€Ð¼Ð¾Ð²Ð¾Ñ— розробки.&lt;/p&gt;&lt;p&gt;Qt забезпечує мобільніÑÑ‚ÑŒ єдиних джерельних текÑтів між MS&amp;nbsp;Windows, Mac&amp;nbsp;OS&amp;nbsp;X, Linux та вÑіма оÑновними комерційними верÑÑ–Ñми Unix. Qt Ñ–Ñнує також Ð´Ð»Ñ Ð²Ð±ÑƒÐ´Ð¾Ð²Ð°Ð½Ð¸Ñ… приÑтроїв, таких, Ñк Qtopia Core.&lt;/p&gt;&lt;p&gt;Qt - це продукт компанії Trolltech. Більше інформації можна знайти на &lt;a href=&quot;http://qtsoftware.com/qt/&quot;&gt;qtsoftware.com/qt/&lt;/a&gt;.&lt;/p&gt;</translation>
</message>
<message>
- <location line="-1584"/>
+ <location line="-1605"/>
<source>Show Details...</source>
<translation>Показати подробиці...</translation>
</message>
@@ -3083,19 +3092,18 @@ Do you want to delete it anyway?</source>
</message>
<message>
<location line="+1570"/>
- <source>&lt;h3&gt;About Qt&lt;/h3&gt;%1&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 a Nokia product. See &lt;a href=&quot;http://qtsoftware.com/qt/&quot;&gt;qtsoftware.com/qt/&lt;/a&gt; for more information.&lt;/p&gt;</source>
+ <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://www.qtsoftware.com/products/licensing&quot;&gt;www.qtsoftware.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://www.qtsoftware.com/qt/&quot;&gt;www.qtsoftware.com/qt&lt;/a&gt; for more information.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+15"/>
<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://qtsoftware.com/company/model/&quot;&gt;qtsoftware.com/company/model/&lt;/a&gt; for an overview of Qt licensing.&lt;/p&gt;</source>
- <translation>&lt;p&gt;Ð¦Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð° викориÑтовує Qt Open Source Edition верÑÑ–Ñ— %1.&lt;/p&gt;&lt;p&gt;Qt Open Source Edition призначено Ð´Ð»Ñ Ñ€Ð¾Ð·Ñ€Ð¾Ð±ÐºÐ¸ відкритих програмних заÑобів. Ð”Ð»Ñ Ñ€Ð¾Ð·Ñ€Ð¾Ð±ÐºÐ¸ влаÑницьких (закритих) програм вам потрібна комерційна Ð»Ñ–Ñ†ÐµÐ½Ð·Ñ–Ñ Ð´Ð»Ñ Qt.&lt;/p&gt;&lt;p&gt;ПереглÑньте &lt;a href=&quot;http://qtsoftware.com/company/model/&quot;&gt;qtsoftware.com/company/model/&lt;/a&gt; щодо оглÑду ліцензій Qt.&lt;/p&gt;</translation>
+ <translation type="obsolete">&lt;p&gt;Ð¦Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð° викориÑтовує Qt Open Source Edition верÑÑ–Ñ— %1.&lt;/p&gt;&lt;p&gt;Qt Open Source Edition призначено Ð´Ð»Ñ Ñ€Ð¾Ð·Ñ€Ð¾Ð±ÐºÐ¸ відкритих програмних заÑобів. Ð”Ð»Ñ Ñ€Ð¾Ð·Ñ€Ð¾Ð±ÐºÐ¸ влаÑницьких (закритих) програм вам потрібна комерційна Ð»Ñ–Ñ†ÐµÐ½Ð·Ñ–Ñ Ð´Ð»Ñ Qt.&lt;/p&gt;&lt;p&gt;ПереглÑньте &lt;a href=&quot;http://qtsoftware.com/company/model/&quot;&gt;qtsoftware.com/company/model/&lt;/a&gt; щодо оглÑду ліцензій Qt.&lt;/p&gt;</translation>
</message>
</context>
<context>
<name>QMultiInputContext</name>
<message>
- <location filename="../src/plugins/inputmethods/imsw-multi/qmultiinputcontext.cpp" line="+58"/>
+ <location filename="../src/plugins/inputmethods/imsw-multi/qmultiinputcontext.cpp" line="+88"/>
<source>Select IM</source>
<translation>Вибрати метод вводу</translation>
</message>
@@ -3103,7 +3111,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QMultiInputContextPlugin</name>
<message>
- <location filename="../src/plugins/inputmethods/imsw-multi/qmultiinputcontextplugin.cpp" line="+65"/>
+ <location filename="../src/plugins/inputmethods/imsw-multi/qmultiinputcontextplugin.cpp" line="+95"/>
<source>Multiple input method switcher</source>
<translation>Перемикач методів вводу</translation>
</message>
@@ -3116,7 +3124,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QNativeSocketEngine</name>
<message>
- <location filename="../src/network/socket/qnativesocketengine.cpp" line="+176"/>
+ <location filename="../src/network/socket/qnativesocketengine.cpp" line="+206"/>
<source>The remote host closed the connection</source>
<translation>Віддалений вузол закрив з&apos;єднаннÑ</translation>
</message>
@@ -3249,7 +3257,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QNetworkAccessCacheBackend</name>
<message>
- <location filename="../src/network/access/qnetworkaccesscachebackend.cpp" line="+35"/>
+ <location filename="../src/network/access/qnetworkaccesscachebackend.cpp" line="+65"/>
<source>Error opening %1</source>
<translation type="unfinished"></translation>
</message>
@@ -3257,7 +3265,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QNetworkAccessFileBackend</name>
<message>
- <location filename="../src/network/access/qnetworkaccessfilebackend.cpp" line="+69"/>
+ <location filename="../src/network/access/qnetworkaccessfilebackend.cpp" line="+99"/>
<source>Request for opening non-local file %1</source>
<translation type="unfinished"></translation>
</message>
@@ -3285,7 +3293,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QNetworkAccessFtpBackend</name>
<message>
- <location filename="../src/network/access/qnetworkaccessftpbackend.cpp" line="+135"/>
+ <location filename="../src/network/access/qnetworkaccessftpbackend.cpp" line="+165"/>
<source>No suitable proxy found</source>
<translation type="unfinished"></translation>
</message>
@@ -3295,7 +3303,7 @@ Do you want to delete it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+131"/>
+ <location line="+130"/>
<source>Logging in to %1 failed: authentication required</source>
<translation type="unfinished"></translation>
</message>
@@ -3313,7 +3321,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QNetworkAccessHttpBackend</name>
<message>
- <location filename="../src/network/access/qnetworkaccesshttpbackend.cpp" line="+565"/>
+ <location filename="../src/network/access/qnetworkaccesshttpbackend.cpp" line="+597"/>
<source>No suitable proxy found</source>
<translation type="unfinished"></translation>
</message>
@@ -3326,7 +3334,7 @@ Do you want to delete it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/network/access/qnetworkreplyimpl.cpp" line="+37"/>
+ <location filename="../src/network/access/qnetworkreplyimpl.cpp" line="+68"/>
<source>Protocol &quot;%1&quot; is unknown</source>
<translation type="unfinished"></translation>
</message>
@@ -3334,7 +3342,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QNetworkReplyImpl</name>
<message>
- <location line="+422"/>
+ <location line="+432"/>
<location line="+22"/>
<source>Operation canceled</source>
<translation type="unfinished"></translation>
@@ -3343,7 +3351,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QOCIDriver</name>
<message>
- <location filename="../src/sql/drivers/oci/qsql_oci.cpp" line="+2027"/>
+ <location filename="../src/sql/drivers/oci/qsql_oci.cpp" line="+2069"/>
<source>Unable to logon</source>
<translation>Ðеможливо зайти</translation>
</message>
@@ -3372,7 +3380,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QOCIResult</name>
<message>
- <location line="-976"/>
+ <location line="-963"/>
<location line="+161"/>
<location line="+15"/>
<source>Unable to bind column for batch execute</source>
@@ -3399,18 +3407,16 @@ Do you want to delete it anyway?</source>
<translation>Ðеможливо підготувати оператор</translation>
</message>
<message>
- <location line="+29"/>
- <location line="+37"/>
+ <location line="+36"/>
<source>Unable to bind value</source>
<translation>Ðеможливо прив&apos;Ñзати значеннÑ</translation>
</message>
<message>
- <location line="-20"/>
<source>Unable to execute select statement</source>
- <translation>Ðеможливо виконати оператор вибираннÑ</translation>
+ <translation type="obsolete">Ðеможливо виконати оператор вибираннÑ</translation>
</message>
<message>
- <location line="+32"/>
+ <location line="+19"/>
<source>Unable to execute statement</source>
<translation>Ðеможливо виконати оператор</translation>
</message>
@@ -3418,7 +3424,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QODBCDriver</name>
<message>
- <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="+1657"/>
+ <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="+1785"/>
<source>Unable to connect</source>
<translation>Ðеможливо з&apos;єднатиÑÑ</translation>
</message>
@@ -3428,7 +3434,7 @@ Do you want to delete it anyway?</source>
<translation>Ðеможливо з&apos;єднатиÑÑ - драйвер не підтримує вÑÑ–Ñ… потрібних функцій</translation>
</message>
<message>
- <location line="+234"/>
+ <location line="+242"/>
<source>Unable to disable autocommit</source>
<translation>Ðеможливо вимкнути Ð°Ð²Ñ‚Ð¾Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ñ–Ð¹</translation>
</message>
@@ -3451,19 +3457,19 @@ Do you want to delete it anyway?</source>
<context>
<name>QODBCResult</name>
<message>
- <location line="-1204"/>
+ <location line="-1218"/>
<location line="+349"/>
<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;, Ñк атрибут оператора. Будь лаÑка, перевірте Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ñ€Ð°Ð¹Ð²ÐµÑ€Ð° ODBC</translation>
</message>
<message>
<location line="-332"/>
- <location line="+625"/>
+ <location line="+626"/>
<source>Unable to execute statement</source>
<translation>Ðеможливо виконати оператор</translation>
</message>
<message>
- <location line="-554"/>
+ <location line="-555"/>
<source>Unable to fetch next</source>
<translation>Ðеможливо вибрати наÑтупний</translation>
</message>
@@ -3473,19 +3479,19 @@ Do you want to delete it anyway?</source>
<translation>Ðеможливо підготувати оператор</translation>
</message>
<message>
- <location line="+267"/>
+ <location line="+268"/>
<source>Unable to bind variable</source>
<translation>Ðеможливо прив&apos;Ñзати змінну</translation>
</message>
<message>
<location filename="../src/sql/drivers/db2/qsql_db2.cpp" line="+194"/>
- <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="-474"/>
- <location line="+577"/>
+ <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="-475"/>
+ <location line="+578"/>
<source>Unable to fetch last</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="-671"/>
+ <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="-672"/>
<source>Unable to fetch</source>
<translation type="unfinished"></translation>
</message>
@@ -3503,12 +3509,12 @@ Do you want to delete it anyway?</source>
<context>
<name>QObject</name>
<message>
- <location filename="../src/gui/util/qdesktopservices_mac.cpp" line="+134"/>
+ <location filename="../src/gui/util/qdesktopservices_mac.cpp" line="+165"/>
<source>Home</source>
<translation>Home</translation>
</message>
<message>
- <location filename="../src/network/access/qnetworkaccessdatabackend.cpp" line="+44"/>
+ <location filename="../src/network/access/qnetworkaccessdatabackend.cpp" line="+74"/>
<source>Operation not supported on %1</source>
<translation type="unfinished"></translation>
</message>
@@ -3518,7 +3524,7 @@ Do you want to delete it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/network/access/qnetworkaccessdebugpipebackend.cpp" line="+145"/>
+ <location filename="../src/network/access/qnetworkaccessdebugpipebackend.cpp" line="+175"/>
<source>Write error writing to %1: %2</source>
<translation type="unfinished"></translation>
</message>
@@ -3543,7 +3549,7 @@ Do you want to delete it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/network/kernel/qhostinfo.cpp" line="+147"/>
+ <location filename="../src/network/kernel/qhostinfo.cpp" line="+177"/>
<location line="+57"/>
<source>No host name given</source>
<translation type="unfinished"></translation>
@@ -3552,7 +3558,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QPPDOptionsModel</name>
<message>
- <location filename="../src/gui/dialogs/qprintdialog_unix.cpp" line="+1165"/>
+ <location filename="../src/gui/dialogs/qprintdialog_unix.cpp" line="+1195"/>
<source>Name</source>
<translation type="unfinished">Ім&apos;Ñ</translation>
</message>
@@ -3565,7 +3571,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QPSQLDriver</name>
<message>
- <location filename="../src/sql/drivers/psql/qsql_psql.cpp" line="+732"/>
+ <location filename="../src/sql/drivers/psql/qsql_psql.cpp" line="+763"/>
<source>Unable to connect</source>
<translation>Ðеможливо з&apos;єднатиÑÑ</translation>
</message>
@@ -3585,7 +3591,7 @@ Do you want to delete it anyway?</source>
<translation>Ðеможливо відкотити транзакцію</translation>
</message>
<message>
- <location line="+336"/>
+ <location line="+358"/>
<source>Unable to subscribe</source>
<translation type="unfinished"></translation>
</message>
@@ -3598,12 +3604,12 @@ Do you want to delete it anyway?</source>
<context>
<name>QPSQLResult</name>
<message>
- <location line="-1035"/>
+ <location line="-1058"/>
<source>Unable to create query</source>
<translation>Ðеможливо Ñтворити запит</translation>
</message>
<message>
- <location line="+373"/>
+ <location line="+374"/>
<source>Unable to prepare statement</source>
<translation type="unfinished">Ðеможливо підготувати оператор</translation>
</message>
@@ -3611,7 +3617,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QPageSetupWidget</name>
<message>
- <location filename="../src/gui/dialogs/qpagesetupdialog_unix.cpp" line="+274"/>
+ <location filename="../src/gui/dialogs/qpagesetupdialog_unix.cpp" line="+304"/>
<source>Centimeters (cm)</source>
<translation type="unfinished"></translation>
</message>
@@ -3727,7 +3733,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QPrintDialog</name>
<message>
- <location filename="../src/gui/painting/qprinterinfo_unix.cpp" line="+68"/>
+ <location filename="../src/gui/painting/qprinterinfo_unix.cpp" line="+98"/>
<source>locally connected</source>
<translation>локальне з&apos;єднаннÑ</translation>
</message>
@@ -3752,7 +3758,7 @@ Do you want to delete it anyway?</source>
<translation type="obsolete">Ðльбомне</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qprintdialog_qws.cpp" line="+299"/>
+ <location filename="../src/gui/dialogs/qprintdialog_qws.cpp" line="+329"/>
<source>A0 (841 x 1189 mm)</source>
<translation>A0 (841 x 1189 мм)</translation>
</message>
@@ -3902,7 +3908,7 @@ Do you want to delete it anyway?</source>
<translation>US Common #10 Envelope (105 x 241 мм)</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qprintdialog_win.cpp" line="+238"/>
+ <location filename="../src/gui/dialogs/qprintdialog_win.cpp" line="+268"/>
<source>OK</source>
<translation>Гаразд</translation>
</message>
@@ -3923,7 +3929,7 @@ Do you want to delete it anyway?</source>
<translation type="obsolete">Джерело паперу:</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qabstractprintdialog.cpp" line="+80"/>
+ <location filename="../src/gui/dialogs/qabstractprintdialog.cpp" line="+110"/>
<location line="+13"/>
<location filename="../src/gui/dialogs/qprintdialog_win.cpp" line="-2"/>
<source>Print</source>
@@ -4255,13 +4261,13 @@ Please choose a different file name.</source>
<context>
<name>QPrintPreviewDialog</name>
<message>
- <location filename="../src/gui/dialogs/qabstractpagesetupdialog.cpp" line="+38"/>
+ <location filename="../src/gui/dialogs/qabstractpagesetupdialog.cpp" line="+68"/>
<location line="+12"/>
<source>Page Setup</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qprintpreviewdialog.cpp" line="+222"/>
+ <location filename="../src/gui/dialogs/qprintpreviewdialog.cpp" line="+252"/>
<source>%1%</source>
<translation type="unfinished"></translation>
</message>
@@ -4543,8 +4549,8 @@ Please choose a different file name.</source>
<context>
<name>QProcess</name>
<message>
- <location filename="../src/corelib/io/qprocess_unix.cpp" line="+445"/>
- <location filename="../src/corelib/io/qprocess_win.cpp" line="+117"/>
+ <location filename="../src/corelib/io/qprocess_unix.cpp" line="+475"/>
+ <location filename="../src/corelib/io/qprocess_win.cpp" line="+147"/>
<source>Could not open input redirection for reading</source>
<translation type="unfinished"></translation>
</message>
@@ -4573,7 +4579,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/corelib/io/qprocess.cpp" line="+503"/>
+ <location filename="../src/corelib/io/qprocess.cpp" line="+533"/>
<location line="+52"/>
<location filename="../src/corelib/io/qprocess_win.cpp" line="-211"/>
<location line="+50"/>
@@ -4593,6 +4599,11 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
+ <location line="+912"/>
+ <source>No program defined</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<location filename="../src/corelib/io/qprocess_win.cpp" line="-341"/>
<source>Process failed to start</source>
<translation type="unfinished"></translation>
@@ -4601,7 +4612,7 @@ Please choose a different file name.</source>
<context>
<name>QProgressDialog</name>
<message>
- <location filename="../src/gui/dialogs/qprogressdialog.cpp" line="+152"/>
+ <location filename="../src/gui/dialogs/qprogressdialog.cpp" line="+182"/>
<source>Cancel</source>
<translation>СкаÑувати</translation>
</message>
@@ -4625,7 +4636,7 @@ Please choose a different file name.</source>
<context>
<name>QRegExp</name>
<message>
- <location filename="../src/corelib/tools/qregexp.cpp" line="+34"/>
+ <location filename="../src/corelib/tools/qregexp.cpp" line="+64"/>
<source>no error occurred</source>
<translation>без помилок</translation>
</message>
@@ -4673,7 +4684,7 @@ Please choose a different file name.</source>
<context>
<name>QSQLite2Driver</name>
<message>
- <location filename="../src/sql/drivers/sqlite2/qsql_sqlite2.cpp" line="+353"/>
+ <location filename="../src/sql/drivers/sqlite2/qsql_sqlite2.cpp" line="+396"/>
<source>Error to open database</source>
<translation>Помилка Ð²Ñ–Ð´ÐºÑ€Ð¸Ð²Ð°Ð½Ð½Ñ Ð±Ð°Ð·Ð¸ даних</translation>
</message>
@@ -4696,12 +4707,12 @@ Please choose a different file name.</source>
<context>
<name>QSQLite2Result</name>
<message>
- <location line="-310"/>
+ <location line="-323"/>
<source>Unable to fetch results</source>
<translation>Ðеможливо витÑгнути результат</translation>
</message>
<message>
- <location line="+139"/>
+ <location line="+147"/>
<source>Unable to execute statement</source>
<translation>Ðеможливо виконати оператор</translation>
</message>
@@ -4709,7 +4720,7 @@ Please choose a different file name.</source>
<context>
<name>QSQLiteDriver</name>
<message>
- <location filename="../src/sql/drivers/sqlite/qsql_sqlite.cpp" line="+498"/>
+ <location filename="../src/sql/drivers/sqlite/qsql_sqlite.cpp" line="+528"/>
<source>Error opening database</source>
<translation>Ðеможливо відкрити базу даних</translation>
</message>
@@ -4776,12 +4787,12 @@ Please choose a different file name.</source>
<context>
<name>QScrollBar</name>
<message>
- <location filename="../src/gui/widgets/qscrollbar.cpp" line="+419"/>
+ <location filename="../src/gui/widgets/qscrollbar.cpp" line="+448"/>
<source>Scroll here</source>
<translation>Прокрутити Ñюди</translation>
</message>
<message>
- <location line="+3"/>
+ <location line="+2"/>
<source>Left edge</source>
<translation>Лівий край</translation>
</message>
@@ -4791,7 +4802,7 @@ Please choose a different file name.</source>
<translation>Верх</translation>
</message>
<message>
- <location line="+2"/>
+ <location line="+1"/>
<source>Right edge</source>
<translation>Правий край</translation>
</message>
@@ -4801,7 +4812,7 @@ Please choose a different file name.</source>
<translation>Ðиз</translation>
</message>
<message>
- <location line="+3"/>
+ <location line="+2"/>
<source>Page left</source>
<translation>Сторінка ліворуч</translation>
</message>
@@ -4812,7 +4823,7 @@ Please choose a different file name.</source>
<translation>Сторінка вгору</translation>
</message>
<message>
- <location line="+2"/>
+ <location line="+1"/>
<source>Page right</source>
<translation>Сторінка праворуч</translation>
</message>
@@ -4823,7 +4834,7 @@ Please choose a different file name.</source>
<translation>Сторінка додолу</translation>
</message>
<message>
- <location line="+3"/>
+ <location line="+2"/>
<source>Scroll left</source>
<translation>Прокрутити ліворуч</translation>
</message>
@@ -4833,7 +4844,7 @@ Please choose a different file name.</source>
<translation>Прокрутити вгору</translation>
</message>
<message>
- <location line="+2"/>
+ <location line="+1"/>
<source>Scroll right</source>
<translation>Прокрутити праворуч</translation>
</message>
@@ -4861,7 +4872,7 @@ Please choose a different file name.</source>
<context>
<name>QSharedMemory</name>
<message>
- <location filename="../src/corelib/kernel/qsharedmemory.cpp" line="+177"/>
+ <location filename="../src/corelib/kernel/qsharedmemory.cpp" line="+207"/>
<source>%1: unable to set key on lock</source>
<translation type="unfinished"></translation>
</message>
@@ -4872,7 +4883,7 @@ Please choose a different file name.</source>
</message>
<message>
<location line="+168"/>
- <location filename="../src/corelib/kernel/qsharedmemory_p.h" line="+118"/>
+ <location filename="../src/corelib/kernel/qsharedmemory_p.h" line="+148"/>
<source>%1: unable to lock</source>
<translation type="unfinished"></translation>
</message>
@@ -4882,8 +4893,8 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/corelib/kernel/qsharedmemory_unix.cpp" line="+48"/>
- <location filename="../src/corelib/kernel/qsharedmemory_win.cpp" line="+57"/>
+ <location filename="../src/corelib/kernel/qsharedmemory_unix.cpp" line="+78"/>
+ <location filename="../src/corelib/kernel/qsharedmemory_win.cpp" line="+87"/>
<source>%1: permission denied</source>
<translation type="unfinished"></translation>
</message>
@@ -4961,7 +4972,7 @@ Please choose a different file name.</source>
<context>
<name>QShortcut</name>
<message>
- <location filename="../src/gui/kernel/qkeysequence.cpp" line="+343"/>
+ <location filename="../src/gui/kernel/qkeysequence.cpp" line="+373"/>
<source>Space</source>
<translation>Прогалина</translation>
</message>
@@ -5546,7 +5557,7 @@ Please choose a different file name.</source>
<context>
<name>QSql</name>
<message>
- <location filename="../src/qt3support/sql/q3sqlmanager_p.cpp" line="+860"/>
+ <location filename="../src/qt3support/sql/q3sqlmanager_p.cpp" line="+890"/>
<source>Delete</source>
<translation>Вилучити</translation>
</message>
@@ -5603,7 +5614,7 @@ Please choose a different file name.</source>
<context>
<name>QSslSocket</name>
<message>
- <location filename="../src/network/ssl/qsslsocket_openssl.cpp" line="+539"/>
+ <location filename="../src/network/ssl/qsslsocket_openssl.cpp" line="+569"/>
<source>Unable to write data: %1</source>
<translation>Ðеможливо запиÑати дані: %1</translation>
</message>
@@ -5666,7 +5677,7 @@ Please choose a different file name.</source>
<name>QSystemSemaphore</name>
<message>
<location filename="../src/corelib/kernel/qsystemsemaphore_unix.cpp" line="-41"/>
- <location filename="../src/corelib/kernel/qsystemsemaphore_win.cpp" line="+36"/>
+ <location filename="../src/corelib/kernel/qsystemsemaphore_win.cpp" line="+66"/>
<source>%1: out of resources</source>
<translation type="unfinished"></translation>
</message>
@@ -5696,7 +5707,7 @@ Please choose a different file name.</source>
<context>
<name>QTDSDriver</name>
<message>
- <location filename="../src/sql/drivers/tds/qsql_tds.cpp" line="+552"/>
+ <location filename="../src/sql/drivers/tds/qsql_tds.cpp" line="+584"/>
<source>Unable to open connection</source>
<translation>Ðеможливо відкрити з&apos;єднаннÑ</translation>
</message>
@@ -5726,7 +5737,7 @@ Please choose a different file name.</source>
<translation type="obsolete">Дії з Ñокетами не підтримуютьÑÑ</translation>
</message>
<message>
- <location filename="../src/network/socket/qtcpserver.cpp" line="+252"/>
+ <location filename="../src/network/socket/qtcpserver.cpp" line="+282"/>
<source>Operation on socket is not supported</source>
<translation type="unfinished"></translation>
</message>
@@ -5734,7 +5745,7 @@ Please choose a different file name.</source>
<context>
<name>QTextControl</name>
<message>
- <location filename="../src/gui/text/qtextcontrol.cpp" line="+1942"/>
+ <location filename="../src/gui/text/qtextcontrol.cpp" line="+1973"/>
<source>&amp;Undo</source>
<translation>&amp;Повернути</translation>
</message>
@@ -5792,7 +5803,7 @@ Please choose a different file name.</source>
<context>
<name>QUdpSocket</name>
<message>
- <location filename="../src/network/socket/qudpsocket.cpp" line="+139"/>
+ <location filename="../src/network/socket/qudpsocket.cpp" line="+169"/>
<source>This platform does not support IPv6</source>
<translation>Ð¦Ñ Ð¿Ð»Ð°Ñ‚Ñ„Ð¾Ñ€Ð¼Ð° не підтримує IPv6</translation>
</message>
@@ -5800,7 +5811,7 @@ Please choose a different file name.</source>
<context>
<name>QUndoGroup</name>
<message>
- <location filename="../src/gui/util/qundogroup.cpp" line="+356"/>
+ <location filename="../src/gui/util/qundogroup.cpp" line="+386"/>
<source>Undo</source>
<translation>Повернути</translation>
</message>
@@ -5813,7 +5824,7 @@ Please choose a different file name.</source>
<context>
<name>QUndoModel</name>
<message>
- <location filename="../src/gui/util/qundoview.cpp" line="+71"/>
+ <location filename="../src/gui/util/qundoview.cpp" line="+101"/>
<source>&lt;empty&gt;</source>
<translation>&lt;порожньо&gt;</translation>
</message>
@@ -5821,7 +5832,7 @@ Please choose a different file name.</source>
<context>
<name>QUndoStack</name>
<message>
- <location filename="../src/gui/util/qundostack.cpp" line="+804"/>
+ <location filename="../src/gui/util/qundostack.cpp" line="+834"/>
<source>Undo</source>
<translation>Повернути</translation>
</message>
@@ -5892,7 +5903,7 @@ Please choose a different file name.</source>
<context>
<name>QWebFrame</name>
<message>
- <location filename="../src/3rdparty/webkit/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp" line="+686"/>
+ <location filename="../src/3rdparty/webkit/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp" line="+692"/>
<source>Request cancelled</source>
<translation type="unfinished"></translation>
</message>
@@ -6304,7 +6315,7 @@ Please choose a different file name.</source>
</translation>
</message>
<message>
- <location filename="../src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp" line="+1342"/>
+ <location filename="../src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp" line="+1322"/>
<source>JavaScript Alert - %1</source>
<translation type="unfinished"></translation>
</message>
@@ -6380,6 +6391,11 @@ Please choose a different file name.</source>
</message>
<message>
<location line="+3"/>
+ <source>Select all</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
<source>Select to the next character</source>
<translation type="unfinished"></translation>
</message>
@@ -6448,11 +6464,21 @@ Please choose a different file name.</source>
<source>Delete to the end of the word</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <location line="+33"/>
+ <source>Insert a new paragraph</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Insert a new line</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>QWhatsThisAction</name>
<message>
- <location filename="../src/gui/kernel/qwhatsthis.cpp" line="+492"/>
+ <location filename="../src/gui/kernel/qwhatsthis.cpp" line="+522"/>
<source>What&apos;s This?</source>
<translation>Що це?</translation>
</message>
@@ -6460,7 +6486,7 @@ Please choose a different file name.</source>
<context>
<name>QWidget</name>
<message>
- <location filename="../src/gui/kernel/qwidget.cpp" line="+5290"/>
+ <location filename="../src/gui/kernel/qwidget.cpp" line="+5326"/>
<source>*</source>
<translation>*</translation>
</message>
@@ -6468,7 +6494,7 @@ Please choose a different file name.</source>
<context>
<name>QWizard</name>
<message>
- <location filename="../src/gui/dialogs/qwizard.cpp" line="+605"/>
+ <location filename="../src/gui/dialogs/qwizard.cpp" line="+637"/>
<source>Go Back</source>
<translation>Піти назад</translation>
</message>
@@ -6530,7 +6556,7 @@ Please choose a different file name.</source>
<context>
<name>QWorkspace</name>
<message>
- <location filename="../src/gui/widgets/qworkspace.cpp" line="+1064"/>
+ <location filename="../src/gui/widgets/qworkspace.cpp" line="+1094"/>
<source>&amp;Restore</source>
<translation>&amp;Відновити</translation>
</message>
@@ -6600,7 +6626,7 @@ Please choose a different file name.</source>
<context>
<name>QXml</name>
<message>
- <location filename="../src/xml/sax/qxml.cpp" line="+28"/>
+ <location filename="../src/xml/sax/qxml.cpp" line="+58"/>
<source>no error occurred</source>
<translation>без помилок</translation>
</message>
@@ -6718,8 +6744,8 @@ Please choose a different file name.</source>
<context>
<name>QXmlStream</name>
<message>
- <location filename="../src/corelib/xml/qxmlstream.cpp" line="+562"/>
- <location filename="../src/corelib/xml/qxmlstream_p.h" line="+1739"/>
+ <location filename="../src/corelib/xml/qxmlstream.cpp" line="+592"/>
+ <location filename="../src/corelib/xml/qxmlstream_p.h" line="+1769"/>
<source>Extra content at end of document.</source>
<translation>Ðадлишковий вміÑÑ‚ в кінці документу.</translation>
</message>
@@ -6911,7 +6937,7 @@ Please choose a different file name.</source>
<context>
<name>QtXmlPatterns</name>
<message>
- <location filename="../src/xmlpatterns/acceltree/qacceltreebuilder.cpp" line="+175"/>
+ <location filename="../src/xmlpatterns/acceltree/qacceltreebuilder.cpp" line="+205"/>
<source>An %1-attribute with value %2 has already been declared.</source>
<translation type="unfinished"></translation>
</message>
@@ -6921,12 +6947,12 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/api/qiodevicedelegate.cpp" line="+54"/>
+ <location filename="../src/xmlpatterns/api/qiodevicedelegate.cpp" line="+84"/>
<source>Network timeout.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/api/qxmlserializer.cpp" line="+290"/>
+ <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 type="unfinished"></translation>
</message>
@@ -6936,7 +6962,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qabstractdatetime.cpp" line="+50"/>
+ <location filename="../src/xmlpatterns/data/qabstractdatetime.cpp" line="+80"/>
<source>Year %1 is invalid because it begins with %2.</source>
<translation type="unfinished"></translation>
</message>
@@ -6976,7 +7002,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qabstractduration.cpp" line="+69"/>
+ <location filename="../src/xmlpatterns/data/qabstractduration.cpp" line="+99"/>
<location line="+15"/>
<source>At least one component must be present.</source>
<translation type="unfinished"></translation>
@@ -6987,7 +7013,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qabstractfloatmathematician.cpp" line="+34"/>
+ <location filename="../src/xmlpatterns/data/qabstractfloatmathematician.cpp" line="+64"/>
<source>No operand in an integer division, %1, can be %2.</source>
<translation type="unfinished"></translation>
</message>
@@ -7002,17 +7028,17 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qanyuri_p.h" line="+102"/>
+ <location filename="../src/xmlpatterns/data/qanyuri_p.h" line="+132"/>
<source>%1 is not a valid value of type %2.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qatomiccasters_p.h" line="+193"/>
+ <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 type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qatomicmathematicians.cpp" line="+35"/>
+ <location filename="../src/xmlpatterns/data/qatomicmathematicians.cpp" line="+65"/>
<source>Integer division (%1) by zero (%2) is undefined.</source>
<translation type="unfinished"></translation>
</message>
@@ -7043,17 +7069,17 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qatomicvalue.cpp" line="+49"/>
+ <location filename="../src/xmlpatterns/data/qatomicvalue.cpp" line="+79"/>
<source>A value of type %1 cannot have an Effective Boolean Value.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qboolean.cpp" line="+48"/>
+ <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 type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qderivedinteger_p.h" line="+372"/>
+ <location filename="../src/xmlpatterns/data/qderivedinteger_p.h" line="+402"/>
<source>Value %1 of type %2 exceeds maximum (%3).</source>
<translation type="unfinished"></translation>
</message>
@@ -7063,7 +7089,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qhexbinary.cpp" line="+61"/>
+ <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 type="unfinished"></translation>
</message>
@@ -7073,7 +7099,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qarithmeticexpression.cpp" line="+177"/>
+ <location filename="../src/xmlpatterns/expr/qarithmeticexpression.cpp" line="+207"/>
<source>Operator %1 cannot be used on type %2.</source>
<translation type="unfinished"></translation>
</message>
@@ -7083,7 +7109,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qattributenamevalidator.cpp" line="+36"/>
+ <location filename="../src/xmlpatterns/expr/qattributenamevalidator.cpp" line="+66"/>
<source>The namespace URI in the name for a computed attribute cannot be %1.</source>
<translation type="unfinished"></translation>
</message>
@@ -7093,7 +7119,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qcastas.cpp" line="+58"/>
+ <location filename="../src/xmlpatterns/expr/qcastas.cpp" line="+88"/>
<source>Type error in cast, expected %1, received %2.</source>
<translation type="unfinished"></translation>
</message>
@@ -7103,7 +7129,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qcastingplatform.cpp" line="+104"/>
+ <location filename="../src/xmlpatterns/expr/qcastingplatform.cpp" line="+134"/>
<source>No casting is possible with %1 as the target type.</source>
<translation type="unfinished"></translation>
</message>
@@ -7128,7 +7154,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qcommentconstructor.cpp" line="+37"/>
+ <location filename="../src/xmlpatterns/expr/qcommentconstructor.cpp" line="+67"/>
<source>A comment cannot contain %1</source>
<translation type="unfinished"></translation>
</message>
@@ -7138,7 +7164,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qcomparisonplatform.cpp" line="+137"/>
+ <location filename="../src/xmlpatterns/expr/qcomparisonplatform.cpp" line="+167"/>
<source>No comparisons can be done involving the type %1.</source>
<translation type="unfinished"></translation>
</message>
@@ -7148,12 +7174,12 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qdocumentcontentvalidator.cpp" line="+56"/>
+ <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 type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qexpressionfactory.cpp" line="+139"/>
+ <location filename="../src/xmlpatterns/expr/qexpressionfactory.cpp" line="+169"/>
<source>A library module cannot be evaluated directly. It must be imported from a main module.</source>
<translation type="unfinished"></translation>
</message>
@@ -7163,7 +7189,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qgenericpredicate.cpp" line="+76"/>
+ <location filename="../src/xmlpatterns/expr/qgenericpredicate.cpp" line="+106"/>
<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 type="unfinished"></translation>
</message>
@@ -7173,7 +7199,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qncnameconstructor_p.h" line="+83"/>
+ <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 type="unfinished"></translation>
</message>
@@ -7183,33 +7209,33 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qpath.cpp" line="+79"/>
+ <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 type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qprocessinginstructionconstructor.cpp" line="+54"/>
+ <location filename="../src/xmlpatterns/expr/qprocessinginstructionconstructor.cpp" line="+84"/>
<source>The data of a processing instruction cannot contain the string %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qqnameconstructor.cpp" line="+52"/>
+ <location filename="../src/xmlpatterns/expr/qqnameconstructor.cpp" line="+82"/>
<source>No namespace binding exists for the prefix %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qqnameconstructor_p.h" line="+126"/>
+ <location filename="../src/xmlpatterns/expr/qqnameconstructor_p.h" line="+156"/>
<source>No namespace binding exists for the prefix %1 in %2</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+12"/>
- <location filename="../src/xmlpatterns/functions/qqnamefns.cpp" line="+39"/>
+ <location filename="../src/xmlpatterns/functions/qqnamefns.cpp" line="+69"/>
<source>%1 is an invalid %2</source>
<translation type="unfinished"></translation>
</message>
<message numerus="yes">
- <location filename="../src/xmlpatterns/functions/qabstractfunctionfactory.cpp" line="+47"/>
+ <location filename="../src/xmlpatterns/functions/qabstractfunctionfactory.cpp" line="+77"/>
<source>%1 takes at most %n argument(s). %2 is therefore invalid.</source>
<translation type="unfinished">
<numerusform></numerusform>
@@ -7227,7 +7253,7 @@ Please choose a different file name.</source>
</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qaggregatefns.cpp" line="+90"/>
+ <location filename="../src/xmlpatterns/functions/qaggregatefns.cpp" line="+120"/>
<source>The first argument to %1 cannot be of type %2. It must be a numeric type, xs:yearMonthDuration or xs:dayTimeDuration.</source>
<translation type="unfinished"></translation>
</message>
@@ -7242,27 +7268,27 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qassemblestringfns.cpp" line="+58"/>
+ <location filename="../src/xmlpatterns/functions/qassemblestringfns.cpp" line="+88"/>
<source>%1 is not a valid XML 1.0 character.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qcomparingaggregator.cpp" line="+167"/>
+ <location filename="../src/xmlpatterns/functions/qcomparingaggregator.cpp" line="+197"/>
<source>The first argument to %1 cannot be of type %2.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qdatetimefn.cpp" line="+56"/>
+ <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 type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qerrorfn.cpp" line="+31"/>
+ <location filename="../src/xmlpatterns/functions/qerrorfn.cpp" line="+61"/>
<source>%1 was called.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qpatternmatchingfns.cpp" line="+64"/>
+ <location filename="../src/xmlpatterns/functions/qpatternmatchingfns.cpp" line="+94"/>
<source>%1 must be followed by %2 or %3, not at the end of the replacement string.</source>
<translation type="unfinished"></translation>
</message>
@@ -7277,7 +7303,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qpatternplatform.cpp" line="+62"/>
+ <location filename="../src/xmlpatterns/functions/qpatternplatform.cpp" line="+92"/>
<source>%1 matches newline characters</source>
<translation type="unfinished"></translation>
</message>
@@ -7312,17 +7338,17 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qsequencefns.cpp" line="+317"/>
+ <location filename="../src/xmlpatterns/functions/qsequencefns.cpp" line="+347"/>
<source>It will not be possible to retrieve %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qcontextnodechecker.cpp" line="+24"/>
+ <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 type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qsequencegeneratingfns.cpp" line="+249"/>
+ <location filename="../src/xmlpatterns/functions/qsequencegeneratingfns.cpp" line="+279"/>
<source>The default collection is undefined</source>
<translation type="unfinished"></translation>
</message>
@@ -7332,12 +7358,12 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qstringvaluefns.cpp" line="+222"/>
+ <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 type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qtimezonefns.cpp" line="+57"/>
+ <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 type="unfinished"></translation>
</message>
@@ -7347,17 +7373,17 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/janitors/qcardinalityverifier.cpp" line="+28"/>
+ <location filename="../src/xmlpatterns/janitors/qcardinalityverifier.cpp" line="+58"/>
<source>Required cardinality is %1; got cardinality %2.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/janitors/qitemverifier.cpp" line="+37"/>
+ <location filename="../src/xmlpatterns/janitors/qitemverifier.cpp" line="+67"/>
<source>The item %1 did not match the required type %2.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="+319"/>
+ <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="+379"/>
<location line="+7253"/>
<source>%1 is an unknown schema type.</source>
<translation type="unfinished"></translation>
@@ -7378,7 +7404,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/parser/qparsercontext.cpp" line="+63"/>
+ <location filename="../src/xmlpatterns/parser/qparsercontext.cpp" line="+93"/>
<source>The variable %1 is unused</source>
<translation type="unfinished"></translation>
</message>
@@ -7660,7 +7686,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/type/qcardinality.cpp" line="+25"/>
+ <location filename="../src/xmlpatterns/type/qcardinality.cpp" line="+55"/>
<source>empty</source>
<translation type="unfinished"></translation>
</message>
@@ -7685,7 +7711,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/type/qtypechecker.cpp" line="+33"/>
+ <location filename="../src/xmlpatterns/type/qtypechecker.cpp" line="+63"/>
<source>Required type is %1, but %2 was found.</source>
<translation type="unfinished"></translation>
</message>
@@ -7700,7 +7726,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/utils/qoutputvalidator.cpp" line="+56"/>
+ <location filename="../src/xmlpatterns/utils/qoutputvalidator.cpp" line="+86"/>
<source>It&apos;s not possible to add attributes after any other kind of node.</source>
<translation type="unfinished"></translation>
</message>
@@ -7710,12 +7736,12 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/utils/qxpathhelper_p.h" line="+90"/>
+ <location filename="../src/xmlpatterns/utils/qxpathhelper_p.h" line="+120"/>
<source>Only the Unicode Codepoint Collation is supported(%1). %2 is unsupported.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/acceltree/qacceltreeresourceloader.cpp" line="+284"/>
+ <location filename="../src/xmlpatterns/acceltree/qacceltreeresourceloader.cpp" line="+314"/>
<source>%1 is an unsupported encoding.</source>
<translation type="unfinished"></translation>
</message>
@@ -7730,13 +7756,13 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qapplytemplate.cpp" line="+89"/>
+ <location filename="../src/xmlpatterns/expr/qapplytemplate.cpp" line="+119"/>
<source>Ambiguous rule match.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qcomputednamespaceconstructor.cpp" line="+39"/>
- <source>In a namespace constructor, the value for a namespace value cannot be an empty string.</source>
+ <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 type="unfinished"></translation>
</message>
<message>
@@ -7755,12 +7781,12 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qevaluationcache.cpp" line="+87"/>
+ <location filename="../src/xmlpatterns/expr/qevaluationcache.cpp" line="+117"/>
<source>Circularity detected</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qtemplate.cpp" line="+115"/>
+ <location filename="../src/xmlpatterns/expr/qtemplate.cpp" line="+145"/>
<source>The parameter %1 is required, but no corresponding %2 is supplied.</source>
<translation type="unfinished"></translation>
</message>
@@ -7770,12 +7796,12 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qunparsedtextfn.cpp" line="+35"/>
+ <location filename="../src/xmlpatterns/functions/qunparsedtextfn.cpp" line="+65"/>
<source>The URI cannot have a fragment</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/parser/qxslttokenizer.cpp" line="+489"/>
+ <location filename="../src/xmlpatterns/parser/qxslttokenizer.cpp" line="+519"/>
<source>Element %1 is not allowed at this location.</source>
<translation type="unfinished"></translation>
</message>
@@ -7830,7 +7856,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/parser/qmaintainingreader.cpp" line="+153"/>
+ <location filename="../src/xmlpatterns/parser/qmaintainingreader.cpp" line="+183"/>
<source>Attribute %1 cannot appear on the element %2. Only the standard attributes can appear.</source>
<translation type="unfinished"></translation>
</message>
@@ -7905,7 +7931,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+432"/>
+ <location line="+434"/>
<source>Element %1 cannot have a sequence constructor.</source>
<translation type="unfinished"></translation>
</message>
diff --git a/translations/qt_untranslated.ts b/translations/qt_untranslated.ts
index cbedeba..35a2802 100644
--- a/translations/qt_untranslated.ts
+++ b/translations/qt_untranslated.ts
@@ -4,7 +4,7 @@
<context>
<name>AudioOutput</name>
<message>
- <location filename="../src/3rdparty/phonon/phonon/audiooutput.cpp" line="+374"/>
+ <location filename="../src/3rdparty/phonon/phonon/audiooutput.cpp" line="+375"/>
<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="unfinished"></translation>
</message>
@@ -22,7 +22,7 @@
<context>
<name>CloseButton</name>
<message>
- <location filename="../src/gui/widgets/qtabbar.cpp" line="+2217"/>
+ <location filename="../src/gui/widgets/qtabbar.cpp" line="+2251"/>
<source>Close Tab</source>
<translation type="unfinished"></translation>
</message>
@@ -78,7 +78,7 @@
<context>
<name>Phonon::Gstreamer::MediaObject</name>
<message>
- <location filename="../src/3rdparty/phonon/gstreamer/mediaobject.cpp" line="+88"/>
+ <location filename="../src/3rdparty/phonon/gstreamer/mediaobject.cpp" line="+90"/>
<source>Cannot start playback.
Check your Gstreamer installation and make sure you
@@ -91,24 +91,24 @@ have libgstreamer-plugins-base installed.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+653"/>
- <location line="+9"/>
+ <location line="+676"/>
+ <location line="+8"/>
<location line="+15"/>
- <location line="+7"/>
- <location line="+5"/>
- <location line="+20"/>
- <location line="+317"/>
+ <location line="+9"/>
+ <location line="+6"/>
+ <location line="+19"/>
+ <location line="+335"/>
<location line="+24"/>
<source>Could not open media source.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-381"/>
+ <location line="-403"/>
<source>Invalid source type.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+355"/>
+ <location line="+377"/>
<source>Could not locate media source.</source>
<translation type="unfinished"></translation>
</message>
@@ -142,7 +142,7 @@ have libgstreamer-plugins-base installed.</source>
<context>
<name>Q3Accel</name>
<message>
- <location filename="../src/qt3support/other/q3accel.cpp" line="+451"/>
+ <location filename="../src/qt3support/other/q3accel.cpp" line="+481"/>
<source>%1, %2 not defined</source>
<translation type="unfinished"></translation>
</message>
@@ -155,7 +155,7 @@ have libgstreamer-plugins-base installed.</source>
<context>
<name>Q3DataTable</name>
<message>
- <location filename="../src/qt3support/sql/q3datatable.cpp" line="+253"/>
+ <location filename="../src/qt3support/sql/q3datatable.cpp" line="+285"/>
<source>True</source>
<translation type="unfinished"></translation>
</message>
@@ -183,7 +183,7 @@ have libgstreamer-plugins-base installed.</source>
<context>
<name>Q3FileDialog</name>
<message>
- <location filename="../src/qt3support/dialogs/q3filedialog.cpp" line="+834"/>
+ <location filename="../src/qt3support/dialogs/q3filedialog.cpp" line="+864"/>
<source>Copy or Move a File</source>
<translation type="unfinished"></translation>
</message>
@@ -208,7 +208,7 @@ have libgstreamer-plugins-base installed.</source>
<location line="-157"/>
<location line="+49"/>
<location line="+2153"/>
- <location filename="../src/qt3support/dialogs/q3filedialog_mac.cpp" line="+80"/>
+ <location filename="../src/qt3support/dialogs/q3filedialog_mac.cpp" line="+110"/>
<source>All Files (*)</source>
<translation type="unfinished"></translation>
</message>
@@ -348,7 +348,7 @@ have libgstreamer-plugins-base installed.</source>
<message>
<location line="+704"/>
<location line="+2100"/>
- <location filename="../src/qt3support/dialogs/q3filedialog_win.cpp" line="+307"/>
+ <location filename="../src/qt3support/dialogs/q3filedialog_win.cpp" line="+337"/>
<source>Open</source>
<translation type="unfinished"></translation>
</message>
@@ -514,7 +514,7 @@ Check path and filename.</source>
<context>
<name>Q3LocalFs</name>
<message>
- <location filename="../src/qt3support/network/q3localfs.cpp" line="+100"/>
+ <location filename="../src/qt3support/network/q3localfs.cpp" line="+130"/>
<location line="+10"/>
<source>Could not read directory
%1</source>
@@ -556,7 +556,7 @@ to
<context>
<name>Q3MainWindow</name>
<message>
- <location filename="../src/qt3support/widgets/q3mainwindow.cpp" line="+2021"/>
+ <location filename="../src/qt3support/widgets/q3mainwindow.cpp" line="+2051"/>
<source>Line up</source>
<translation type="unfinished"></translation>
</message>
@@ -569,7 +569,7 @@ to
<context>
<name>Q3NetworkProtocol</name>
<message>
- <location filename="../src/qt3support/network/q3networkprotocol.cpp" line="+824"/>
+ <location filename="../src/qt3support/network/q3networkprotocol.cpp" line="+854"/>
<source>Operation stopped by the user</source>
<translation type="unfinished"></translation>
</message>
@@ -577,7 +577,7 @@ to
<context>
<name>Q3ProgressDialog</name>
<message>
- <location filename="../src/qt3support/dialogs/q3progressdialog.cpp" line="+194"/>
+ <location filename="../src/qt3support/dialogs/q3progressdialog.cpp" line="+224"/>
<location line="+61"/>
<source>Cancel</source>
<translation type="unfinished"></translation>
@@ -586,7 +586,7 @@ to
<context>
<name>Q3TabDialog</name>
<message>
- <location filename="../src/qt3support/dialogs/q3tabdialog.cpp" line="+159"/>
+ <location filename="../src/qt3support/dialogs/q3tabdialog.cpp" line="+189"/>
<location line="+814"/>
<source>OK</source>
<translation type="unfinished"></translation>
@@ -615,7 +615,7 @@ to
<context>
<name>Q3TextEdit</name>
<message>
- <location filename="../src/qt3support/text/q3textedit.cpp" line="+5399"/>
+ <location filename="../src/qt3support/text/q3textedit.cpp" line="+5429"/>
<source>&amp;Undo</source>
<translation type="unfinished"></translation>
</message>
@@ -654,7 +654,7 @@ to
<context>
<name>Q3TitleBar</name>
<message>
- <location filename="../src/plugins/accessible/compat/q3complexwidgets.cpp" line="+216"/>
+ <location filename="../src/plugins/accessible/compat/q3complexwidgets.cpp" line="+246"/>
<source>System</source>
<translation type="unfinished"></translation>
</message>
@@ -722,7 +722,7 @@ to
<context>
<name>Q3ToolBar</name>
<message>
- <location filename="../src/qt3support/widgets/q3toolbar.cpp" line="+662"/>
+ <location filename="../src/qt3support/widgets/q3toolbar.cpp" line="+692"/>
<source>More...</source>
<translation type="unfinished"></translation>
</message>
@@ -730,7 +730,7 @@ to
<context>
<name>Q3UrlOperator</name>
<message>
- <location filename="../src/qt3support/network/q3urloperator.cpp" line="+356"/>
+ <location filename="../src/qt3support/network/q3urloperator.cpp" line="+386"/>
<location line="+260"/>
<location line="+4"/>
<source>The protocol `%1&apos; is not supported</source>
@@ -782,7 +782,7 @@ to
<context>
<name>Q3Wizard</name>
<message>
- <location filename="../src/qt3support/dialogs/q3wizard.cpp" line="+147"/>
+ <location filename="../src/qt3support/dialogs/q3wizard.cpp" line="+177"/>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
@@ -810,9 +810,9 @@ to
<context>
<name>QAbstractSocket</name>
<message>
- <location filename="../src/network/socket/qabstractsocket.cpp" line="+838"/>
- <location filename="../src/network/socket/qhttpsocketengine.cpp" line="+585"/>
- <location filename="../src/network/socket/qsocks5socketengine.cpp" line="+627"/>
+ <location filename="../src/network/socket/qabstractsocket.cpp" line="+868"/>
+ <location filename="../src/network/socket/qhttpsocketengine.cpp" line="+615"/>
+ <location filename="../src/network/socket/qsocks5socketengine.cpp" line="+657"/>
<location line="+26"/>
<source>Host not found</source>
<translation type="unfinished"></translation>
@@ -855,7 +855,7 @@ to
<context>
<name>QAbstractSpinBox</name>
<message>
- <location filename="../src/gui/widgets/qabstractspinbox.cpp" line="+1169"/>
+ <location filename="../src/gui/widgets/qabstractspinbox.cpp" line="+1199"/>
<source>&amp;Step up</source>
<translation type="unfinished"></translation>
</message>
@@ -873,12 +873,12 @@ to
<context>
<name>QApplication</name>
<message>
- <location filename="../src/gui/accessible/qaccessibleobject.cpp" line="+346"/>
+ <location filename="../src/gui/accessible/qaccessibleobject.cpp" line="+376"/>
<source>Activate</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qmessagebox.h" line="+322"/>
+ <location filename="../src/gui/dialogs/qmessagebox.h" line="+352"/>
<source>Executable &apos;%1&apos; requires Qt %2, found Qt %3.</source>
<translation type="unfinished"></translation>
</message>
@@ -888,7 +888,7 @@ to
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/kernel/qapplication.cpp" line="+2212"/>
+ <location filename="../src/gui/kernel/qapplication.cpp" line="+2248"/>
<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 type="unfinished"></translation>
@@ -925,7 +925,7 @@ to
<context>
<name>QCheckBox</name>
<message>
- <location filename="../src/plugins/accessible/widgets/simplewidgets.cpp" line="+84"/>
+ <location filename="../src/plugins/accessible/widgets/simplewidgets.cpp" line="+114"/>
<source>Uncheck</source>
<translation type="unfinished"></translation>
</message>
@@ -943,7 +943,7 @@ to
<context>
<name>QColorDialog</name>
<message>
- <location filename="../src/gui/dialogs/qcolordialog.cpp" line="+1219"/>
+ <location filename="../src/gui/dialogs/qcolordialog.cpp" line="+1253"/>
<source>Hu&amp;e:</source>
<translation type="unfinished"></translation>
</message>
@@ -1001,13 +1001,13 @@ to
<context>
<name>QComboBox</name>
<message>
- <location filename="../src/plugins/accessible/widgets/complexwidgets.cpp" line="+1741"/>
+ <location filename="../src/plugins/accessible/widgets/complexwidgets.cpp" line="+1771"/>
<location line="+65"/>
<source>Open</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/itemviews/qitemeditorfactory.cpp" line="+514"/>
+ <location filename="../src/gui/itemviews/qitemeditorfactory.cpp" line="+544"/>
<source>False</source>
<translation type="unfinished"></translation>
</message>
@@ -1025,7 +1025,7 @@ to
<context>
<name>QCoreApplication</name>
<message>
- <location filename="../src/corelib/kernel/qsystemsemaphore_unix.cpp" line="+89"/>
+ <location filename="../src/corelib/kernel/qsystemsemaphore_unix.cpp" line="+119"/>
<source>%1: key is empty</source>
<comment>QSystemSemaphore</comment>
<translation type="unfinished"></translation>
@@ -1046,12 +1046,12 @@ to
<context>
<name>QDB2Driver</name>
<message>
- <location filename="../src/sql/drivers/db2/qsql_db2.cpp" line="+1217"/>
+ <location filename="../src/sql/drivers/db2/qsql_db2.cpp" line="+1276"/>
<source>Unable to connect</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+263"/>
+ <location line="+303"/>
<source>Unable to commit transaction</source>
<translation type="unfinished"></translation>
</message>
@@ -1069,8 +1069,8 @@ to
<context>
<name>QDB2Result</name>
<message>
- <location line="-986"/>
- <location line="+242"/>
+ <location line="-1043"/>
+ <location line="+243"/>
<source>Unable to execute statement</source>
<translation type="unfinished"></translation>
</message>
@@ -1085,7 +1085,7 @@ to
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+91"/>
+ <location line="+92"/>
<source>Unable to fetch record %1</source>
<translation type="unfinished"></translation>
</message>
@@ -1103,7 +1103,7 @@ to
<context>
<name>QDateTimeEdit</name>
<message>
- <location filename="../src/gui/widgets/qdatetimeedit.cpp" line="+2265"/>
+ <location filename="../src/gui/widgets/qdatetimeedit.cpp" line="+2295"/>
<source>AM</source>
<translation type="unfinished"></translation>
</message>
@@ -1126,7 +1126,7 @@ to
<context>
<name>QDial</name>
<message>
- <location filename="../src/plugins/accessible/widgets/rangecontrols.cpp" line="+921"/>
+ <location filename="../src/plugins/accessible/widgets/rangecontrols.cpp" line="+951"/>
<source>QDial</source>
<translation type="unfinished"></translation>
</message>
@@ -1144,7 +1144,7 @@ to
<context>
<name>QDialog</name>
<message>
- <location filename="../src/gui/dialogs/qdialog.cpp" line="+567"/>
+ <location filename="../src/gui/dialogs/qdialog.cpp" line="+597"/>
<source>What&apos;s This?</source>
<translation type="unfinished"></translation>
</message>
@@ -1157,9 +1157,9 @@ to
<context>
<name>QDialogButtonBox</name>
<message>
- <location filename="../src/gui/dialogs/qmessagebox.cpp" line="+1830"/>
+ <location filename="../src/gui/dialogs/qmessagebox.cpp" line="+1866"/>
<location line="+464"/>
- <location filename="../src/gui/widgets/qdialogbuttonbox.cpp" line="+531"/>
+ <location filename="../src/gui/widgets/qdialogbuttonbox.cpp" line="+561"/>
<source>OK</source>
<translation type="unfinished"></translation>
</message>
@@ -1282,7 +1282,7 @@ to
<context>
<name>QDirModel</name>
<message>
- <location filename="../src/gui/itemviews/qdirmodel.cpp" line="+423"/>
+ <location filename="../src/gui/itemviews/qdirmodel.cpp" line="+453"/>
<source>Name</source>
<translation type="unfinished"></translation>
</message>
@@ -1312,7 +1312,7 @@ to
<context>
<name>QDockWidget</name>
<message>
- <location filename="../src/plugins/accessible/widgets/qaccessiblewidgets.cpp" line="+1209"/>
+ <location filename="../src/plugins/accessible/widgets/qaccessiblewidgets.cpp" line="+1239"/>
<source>Close</source>
<translation type="unfinished"></translation>
</message>
@@ -1343,7 +1343,7 @@ to
<context>
<name>QErrorMessage</name>
<message>
- <location filename="../src/gui/dialogs/qerrormessage.cpp" line="+162"/>
+ <location filename="../src/gui/dialogs/qerrormessage.cpp" line="+192"/>
<source>Debug Message:</source>
<translation type="unfinished"></translation>
</message>
@@ -1371,13 +1371,18 @@ to
<context>
<name>QFile</name>
<message>
- <location filename="../src/corelib/io/qfile.cpp" line="+678"/>
- <location line="+130"/>
+ <location filename="../src/corelib/io/qfile.cpp" line="+708"/>
+ <location line="+141"/>
<source>Destination file exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+12"/>
+ <location line="-108"/>
+ <source>Cannot remove source file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+120"/>
<source>Cannot open %1 for input</source>
<translation type="unfinished"></translation>
</message>
@@ -1400,37 +1405,37 @@ to
<context>
<name>QFileDialog</name>
<message>
- <location filename="../src/gui/dialogs/qfiledialog.cpp" line="+484"/>
- <location line="+423"/>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="+515"/>
+ <location line="+444"/>
<source>All Files (*)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+218"/>
+ <location line="+222"/>
<source>Directories</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="-3"/>
<location line="+50"/>
- <location line="+1440"/>
+ <location line="+1471"/>
<location line="+75"/>
<source>&amp;Open</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-1565"/>
+ <location line="-1596"/>
<location line="+50"/>
<source>&amp;Save</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-705"/>
+ <location line="-730"/>
<source>Open</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+1469"/>
+ <location line="+1515"/>
<source>%1 already exists.
Do you want to replace it?</source>
<translation type="unfinished"></translation>
@@ -1448,7 +1453,7 @@ Please verify the correct file name was given.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-1458"/>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-1504"/>
<source>&amp;Rename</source>
<translation type="unfinished"></translation>
</message>
@@ -1494,20 +1499,20 @@ Please verify the correct file name was given.</source>
</message>
<message>
<location filename="../src/gui/dialogs/qfiledialog.cpp" line="+6"/>
- <location line="+623"/>
+ <location line="+648"/>
<source>Directory:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+773"/>
- <location line="+851"/>
+ <location line="+794"/>
+ <location line="+862"/>
<source>%1
Directory not found.
Please verify the correct directory name was given.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-217"/>
+ <location line="-218"/>
<source>&apos;%1&apos; is write protected.
Do you want to delete it anyway?</source>
<translation type="unfinished"></translation>
@@ -1523,22 +1528,22 @@ Do you want to delete it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+406"/>
+ <location line="+407"/>
<source>Recent Places</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfiledialog_win.cpp" line="+130"/>
+ <location filename="../src/gui/dialogs/qfiledialog_win.cpp" line="+160"/>
<source>All Files (*.*)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-2493"/>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-2550"/>
<source>Save As</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/itemviews/qfileiconprovider.cpp" line="+381"/>
+ <location filename="../src/gui/itemviews/qfileiconprovider.cpp" line="+411"/>
<source>Drive</source>
<translation type="unfinished"></translation>
</message>
@@ -1570,29 +1575,29 @@ Do you want to delete it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfiledialog.cpp" line="+1914"/>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="+1970"/>
<source>New Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-1907"/>
+ <location line="-1963"/>
<source>&amp;New Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+631"/>
+ <location line="+656"/>
<location line="+38"/>
<source>&amp;Choose</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qsidebar.cpp" line="+388"/>
+ <location filename="../src/gui/dialogs/qsidebar.cpp" line="+418"/>
<source>Remove</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-662"/>
- <location line="+627"/>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-687"/>
+ <location line="+652"/>
<source>File &amp;name:</source>
<translation type="unfinished"></translation>
</message>
@@ -1612,7 +1617,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QFileSystemModel</name>
<message>
- <location filename="../src/gui/dialogs/qfilesystemmodel.cpp" line="+791"/>
+ <location filename="../src/gui/dialogs/qfilesystemmodel.cpp" line="+828"/>
<source>Invalid filename</source>
<translation type="unfinished"></translation>
</message>
@@ -1649,7 +1654,7 @@ Do you want to delete it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfilesystemmodel_p.h" line="+204"/>
+ <location filename="../src/gui/dialogs/qfilesystemmodel_p.h" line="+234"/>
<source>My Computer</source>
<translation type="unfinished"></translation>
</message>
@@ -1687,7 +1692,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QFontDatabase</name>
<message>
- <location filename="../src/gui/text/qfontdatabase.cpp" line="+60"/>
+ <location filename="../src/gui/text/qfontdatabase.cpp" line="+90"/>
<location line="+1176"/>
<source>Normal</source>
<translation type="unfinished"></translation>
@@ -1904,7 +1909,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QFontDialog</name>
<message>
- <location filename="../src/gui/dialogs/qfontdialog.cpp" line="+742"/>
+ <location filename="../src/gui/dialogs/qfontdialog.cpp" line="+772"/>
<source>&amp;Font</source>
<translation type="unfinished"></translation>
</message>
@@ -1953,8 +1958,8 @@ Do you want to delete it anyway?</source>
<context>
<name>QFtp</name>
<message>
- <location filename="../src/network/access/qftp.cpp" line="+796"/>
- <location filename="../src/qt3support/network/q3ftp.cpp" line="+653"/>
+ <location filename="../src/network/access/qftp.cpp" line="+826"/>
+ <location filename="../src/qt3support/network/q3ftp.cpp" line="+683"/>
<source>Not connected</source>
<translation type="unfinished"></translation>
</message>
@@ -2090,7 +2095,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QHostInfo</name>
<message>
- <location filename="../src/network/kernel/qhostinfo_p.h" line="+153"/>
+ <location filename="../src/network/kernel/qhostinfo_p.h" line="+183"/>
<source>Unknown error</source>
<translation type="unfinished"></translation>
</message>
@@ -2098,11 +2103,11 @@ Do you want to delete it anyway?</source>
<context>
<name>QHostInfoAgent</name>
<message>
- <location filename="../src/network/kernel/qhostinfo_unix.cpp" line="+148"/>
+ <location filename="../src/network/kernel/qhostinfo_unix.cpp" line="+178"/>
<location line="+9"/>
<location line="+64"/>
<location line="+31"/>
- <location filename="../src/network/kernel/qhostinfo_win.cpp" line="+150"/>
+ <location filename="../src/network/kernel/qhostinfo_win.cpp" line="+180"/>
<location line="+9"/>
<location line="+40"/>
<location line="+27"/>
@@ -2128,21 +2133,21 @@ Do you want to delete it anyway?</source>
<context>
<name>QHttp</name>
<message>
- <location filename="../src/network/access/qhttp.cpp" line="+1544"/>
- <location line="+816"/>
- <location filename="../src/qt3support/network/q3http.cpp" line="+1130"/>
+ <location filename="../src/network/access/qhttp.cpp" line="+1574"/>
+ <location line="+820"/>
+ <location filename="../src/qt3support/network/q3http.cpp" line="+1160"/>
<location line="+567"/>
<source>Unknown error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-564"/>
+ <location line="-568"/>
<location filename="../src/qt3support/network/q3http.cpp" line="-370"/>
<source>Request aborted</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+575"/>
+ <location line="+579"/>
<location filename="../src/qt3support/network/q3http.cpp" line="+381"/>
<source>No server set to connect to</source>
<translation type="unfinished"></translation>
@@ -2160,18 +2165,23 @@ Do you want to delete it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+357"/>
+ <location line="+179"/>
+ <source>Unknown authentication method</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+183"/>
<source>Error writing response to device</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/network/access/qhttpnetworkconnection.cpp" line="+1712"/>
+ <location filename="../src/network/access/qhttpnetworkconnection.cpp" line="+876"/>
<location filename="../src/qt3support/network/q3http.cpp" line="+38"/>
<source>Connection refused</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/network/access/qhttp.cpp" line="-299"/>
+ <location filename="../src/network/access/qhttp.cpp" line="-304"/>
<location filename="../src/network/access/qhttpnetworkconnection.cpp" line="-4"/>
<location filename="../src/qt3support/network/q3http.cpp" line="+3"/>
<source>Host %1 not found</source>
@@ -2192,7 +2202,7 @@ Do you want to delete it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+120"/>
+ <location line="+125"/>
<location line="+48"/>
<location filename="../src/qt3support/network/q3http.cpp" line="+40"/>
<location line="+47"/>
@@ -2241,7 +2251,7 @@ Do you want to delete it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-133"/>
+ <location line="-138"/>
<source>Connection refused (or timed out)</source>
<translation type="unfinished"></translation>
</message>
@@ -2271,7 +2281,7 @@ Do you want to delete it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/network/access/qhttp.cpp" line="-2259"/>
+ <location filename="../src/network/access/qhttp.cpp" line="-2263"/>
<source>HTTPS connection requested but SSL support not compiled in</source>
<translation type="unfinished"></translation>
</message>
@@ -2327,7 +2337,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QIBaseDriver</name>
<message>
- <location filename="../src/sql/drivers/ibase/qsql_ibase.cpp" line="+1378"/>
+ <location filename="../src/sql/drivers/ibase/qsql_ibase.cpp" line="+1428"/>
<source>Error opening database</source>
<translation type="unfinished"></translation>
</message>
@@ -2350,7 +2360,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QIBaseResult</name>
<message>
- <location line="-1077"/>
+ <location line="-1097"/>
<source>Unable to create BLOB</source>
<translation type="unfinished"></translation>
</message>
@@ -2370,7 +2380,7 @@ Do you want to delete it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+124"/>
+ <location line="+125"/>
<location line="+189"/>
<source>Could not find array</source>
<translation type="unfinished"></translation>
@@ -2440,7 +2450,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QIODevice</name>
<message>
- <location filename="../src/corelib/global/qglobal.cpp" line="+1830"/>
+ <location filename="../src/corelib/global/qglobal.cpp" line="+1869"/>
<source>Permission denied</source>
<translation type="unfinished"></translation>
</message>
@@ -2460,7 +2470,7 @@ Do you want to delete it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/corelib/io/qiodevice.cpp" line="+1506"/>
+ <location filename="../src/corelib/io/qiodevice.cpp" line="+1536"/>
<source>Unknown error</source>
<translation type="unfinished"></translation>
</message>
@@ -2468,7 +2478,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QInputContext</name>
<message>
- <location filename="../src/gui/inputmethod/qinputcontextfactory.cpp" line="+212"/>
+ <location filename="../src/gui/inputmethod/qinputcontextfactory.cpp" line="+242"/>
<source>XIM</source>
<translation type="unfinished"></translation>
</message>
@@ -2491,7 +2501,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QInputDialog</name>
<message>
- <location filename="../src/gui/dialogs/qinputdialog.cpp" line="+193"/>
+ <location filename="../src/gui/dialogs/qinputdialog.cpp" line="+223"/>
<source>Enter a value:</source>
<translation type="unfinished"></translation>
</message>
@@ -2499,7 +2509,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QLibrary</name>
<message>
- <location filename="../src/corelib/plugin/qlibrary.cpp" line="+348"/>
+ <location filename="../src/corelib/plugin/qlibrary.cpp" line="+378"/>
<source>Could not mmap &apos;%1&apos;: %2</source>
<translation type="unfinished"></translation>
</message>
@@ -2530,7 +2540,7 @@ Do you want to delete it anyway?</source>
</message>
<message>
<location line="-377"/>
- <location filename="../src/corelib/plugin/qpluginloader.cpp" line="+250"/>
+ <location filename="../src/corelib/plugin/qpluginloader.cpp" line="+280"/>
<source>The shared library was not found.</source>
<translation type="unfinished"></translation>
</message>
@@ -2545,8 +2555,8 @@ Do you want to delete it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/corelib/plugin/qlibrary_unix.cpp" line="+179"/>
- <location filename="../src/corelib/plugin/qlibrary_win.cpp" line="+69"/>
+ <location filename="../src/corelib/plugin/qlibrary_unix.cpp" line="+209"/>
+ <location filename="../src/corelib/plugin/qlibrary_win.cpp" line="+99"/>
<source>Cannot load library %1: %2</source>
<translation type="unfinished"></translation>
</message>
@@ -2566,7 +2576,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QLineEdit</name>
<message>
- <location filename="../src/gui/widgets/qlineedit.cpp" line="+2649"/>
+ <location filename="../src/gui/widgets/qlineedit.cpp" line="+2680"/>
<source>&amp;Undo</source>
<translation type="unfinished"></translation>
</message>
@@ -2604,8 +2614,8 @@ Do you want to delete it anyway?</source>
<context>
<name>QLocalServer</name>
<message>
- <location filename="../src/network/socket/qlocalserver.cpp" line="+196"/>
- <location filename="../src/network/socket/qlocalserver_unix.cpp" line="+201"/>
+ <location filename="../src/network/socket/qlocalserver.cpp" line="+226"/>
+ <location filename="../src/network/socket/qlocalserver_unix.cpp" line="+231"/>
<source>%1: Name error</source>
<translation type="unfinished"></translation>
</message>
@@ -2621,7 +2631,7 @@ Do you want to delete it anyway?</source>
</message>
<message>
<location line="+5"/>
- <location filename="../src/network/socket/qlocalserver_win.cpp" line="+127"/>
+ <location filename="../src/network/socket/qlocalserver_win.cpp" line="+158"/>
<source>%1: Unknown error %2</source>
<translation type="unfinished"></translation>
</message>
@@ -2629,8 +2639,8 @@ Do you want to delete it anyway?</source>
<context>
<name>QLocalSocket</name>
<message>
- <location filename="../src/network/socket/qlocalsocket_tcp.cpp" line="+102"/>
- <location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+104"/>
+ <location filename="../src/network/socket/qlocalsocket_tcp.cpp" line="+132"/>
+ <location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+134"/>
<source>%1: Connection refused</source>
<translation type="unfinished"></translation>
</message>
@@ -2643,7 +2653,7 @@ Do you want to delete it anyway?</source>
<message>
<location line="+3"/>
<location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+3"/>
- <location filename="../src/network/socket/qlocalsocket_win.cpp" line="+50"/>
+ <location filename="../src/network/socket/qlocalsocket_win.cpp" line="+80"/>
<location line="+43"/>
<source>%1: Invalid name</source>
<translation type="unfinished"></translation>
@@ -2700,7 +2710,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QMYSQLDriver</name>
<message>
- <location filename="../src/sql/drivers/mysql/qsql_mysql.cpp" line="+1200"/>
+ <location filename="../src/sql/drivers/mysql/qsql_mysql.cpp" line="+1231"/>
<source>Unable to open database &apos;</source>
<translation type="unfinished"></translation>
</message>
@@ -2710,7 +2720,7 @@ Do you want to delete it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+123"/>
+ <location line="+127"/>
<source>Unable to begin transaction</source>
<translation type="unfinished"></translation>
</message>
@@ -2728,7 +2738,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QMYSQLResult</name>
<message>
- <location line="-917"/>
+ <location line="-922"/>
<source>Unable to fetch data</source>
<translation type="unfinished"></translation>
</message>
@@ -2743,7 +2753,7 @@ Do you want to delete it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+189"/>
+ <location line="+190"/>
<location line="+8"/>
<source>Unable to prepare statement</source>
<translation type="unfinished"></translation>
@@ -2788,7 +2798,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QMdiArea</name>
<message>
- <location filename="../src/gui/widgets/qmdiarea.cpp" line="+260"/>
+ <location filename="../src/gui/widgets/qmdiarea.cpp" line="+290"/>
<source>(Untitled)</source>
<translation type="unfinished"></translation>
</message>
@@ -2796,7 +2806,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QMdiSubWindow</name>
<message>
- <location filename="../src/gui/widgets/qmdisubwindow.cpp" line="+250"/>
+ <location filename="../src/gui/widgets/qmdisubwindow.cpp" line="+280"/>
<source>%1 - [%2]</source>
<translation type="unfinished"></translation>
</message>
@@ -2889,7 +2899,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QMenu</name>
<message>
- <location filename="../src/plugins/accessible/widgets/qaccessiblemenu.cpp" line="+127"/>
+ <location filename="../src/plugins/accessible/widgets/qaccessiblemenu.cpp" line="+157"/>
<location line="+225"/>
<source>Close</source>
<translation type="unfinished"></translation>
@@ -2911,7 +2921,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QMessageBox</name>
<message>
- <location filename="../src/gui/dialogs/qmessagebox.cpp" line="-1105"/>
+ <location filename="../src/gui/dialogs/qmessagebox.cpp" line="-1111"/>
<source>Help</source>
<translation type="unfinished"></translation>
</message>
@@ -2924,17 +2934,12 @@ Do you want to delete it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+503"/>
+ <location line="+509"/>
<source>About Qt</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-15"/>
- <source>&lt;p&gt;This program uses Qt version %1.&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location line="-1584"/>
+ <location line="-1605"/>
<source>Show Details...</source>
<translation type="unfinished"></translation>
</message>
@@ -2945,19 +2950,14 @@ Do you want to delete it anyway?</source>
</message>
<message>
<location line="+1570"/>
- <source>&lt;h3&gt;About Qt&lt;/h3&gt;%1&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 a Nokia product. See &lt;a href=&quot;http://qtsoftware.com/qt/&quot;&gt;qtsoftware.com/qt/&lt;/a&gt; for more information.&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location line="+15"/>
- <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://qtsoftware.com/company/model/&quot;&gt;qtsoftware.com/company/model/&lt;/a&gt; for an overview of Qt licensing.&lt;/p&gt;</source>
+ <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://www.qtsoftware.com/products/licensing&quot;&gt;www.qtsoftware.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://www.qtsoftware.com/qt/&quot;&gt;www.qtsoftware.com/qt&lt;/a&gt; for more information.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>QMultiInputContext</name>
<message>
- <location filename="../src/plugins/inputmethods/imsw-multi/qmultiinputcontext.cpp" line="+58"/>
+ <location filename="../src/plugins/inputmethods/imsw-multi/qmultiinputcontext.cpp" line="+88"/>
<source>Select IM</source>
<translation type="unfinished"></translation>
</message>
@@ -2965,7 +2965,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QMultiInputContextPlugin</name>
<message>
- <location filename="../src/plugins/inputmethods/imsw-multi/qmultiinputcontextplugin.cpp" line="+65"/>
+ <location filename="../src/plugins/inputmethods/imsw-multi/qmultiinputcontextplugin.cpp" line="+95"/>
<source>Multiple input method switcher</source>
<translation type="unfinished"></translation>
</message>
@@ -2978,7 +2978,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QNativeSocketEngine</name>
<message>
- <location filename="../src/network/socket/qnativesocketengine.cpp" line="+176"/>
+ <location filename="../src/network/socket/qnativesocketengine.cpp" line="+206"/>
<source>The remote host closed the connection</source>
<translation type="unfinished"></translation>
</message>
@@ -3111,7 +3111,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QNetworkAccessCacheBackend</name>
<message>
- <location filename="../src/network/access/qnetworkaccesscachebackend.cpp" line="+35"/>
+ <location filename="../src/network/access/qnetworkaccesscachebackend.cpp" line="+65"/>
<source>Error opening %1</source>
<translation type="unfinished"></translation>
</message>
@@ -3119,7 +3119,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QNetworkAccessFileBackend</name>
<message>
- <location filename="../src/network/access/qnetworkaccessfilebackend.cpp" line="+69"/>
+ <location filename="../src/network/access/qnetworkaccessfilebackend.cpp" line="+99"/>
<source>Request for opening non-local file %1</source>
<translation type="unfinished"></translation>
</message>
@@ -3147,7 +3147,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QNetworkAccessFtpBackend</name>
<message>
- <location filename="../src/network/access/qnetworkaccessftpbackend.cpp" line="+135"/>
+ <location filename="../src/network/access/qnetworkaccessftpbackend.cpp" line="+165"/>
<source>No suitable proxy found</source>
<translation type="unfinished"></translation>
</message>
@@ -3157,7 +3157,7 @@ Do you want to delete it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+131"/>
+ <location line="+130"/>
<source>Logging in to %1 failed: authentication required</source>
<translation type="unfinished"></translation>
</message>
@@ -3175,7 +3175,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QNetworkAccessHttpBackend</name>
<message>
- <location filename="../src/network/access/qnetworkaccesshttpbackend.cpp" line="+565"/>
+ <location filename="../src/network/access/qnetworkaccesshttpbackend.cpp" line="+597"/>
<source>No suitable proxy found</source>
<translation type="unfinished"></translation>
</message>
@@ -3188,7 +3188,7 @@ Do you want to delete it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/network/access/qnetworkreplyimpl.cpp" line="+37"/>
+ <location filename="../src/network/access/qnetworkreplyimpl.cpp" line="+68"/>
<source>Protocol &quot;%1&quot; is unknown</source>
<translation type="unfinished"></translation>
</message>
@@ -3196,7 +3196,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QNetworkReplyImpl</name>
<message>
- <location line="+422"/>
+ <location line="+432"/>
<location line="+22"/>
<source>Operation canceled</source>
<translation type="unfinished"></translation>
@@ -3205,7 +3205,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QOCIDriver</name>
<message>
- <location filename="../src/sql/drivers/oci/qsql_oci.cpp" line="+2027"/>
+ <location filename="../src/sql/drivers/oci/qsql_oci.cpp" line="+2069"/>
<source>Unable to logon</source>
<translation type="unfinished"></translation>
</message>
@@ -3234,7 +3234,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QOCIResult</name>
<message>
- <location line="-976"/>
+ <location line="-963"/>
<location line="+161"/>
<location line="+15"/>
<source>Unable to bind column for batch execute</source>
@@ -3261,18 +3261,12 @@ Do you want to delete it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+29"/>
- <location line="+37"/>
+ <location line="+36"/>
<source>Unable to bind value</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-20"/>
- <source>Unable to execute select statement</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location line="+32"/>
+ <location line="+19"/>
<source>Unable to execute statement</source>
<translation type="unfinished"></translation>
</message>
@@ -3280,7 +3274,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QODBCDriver</name>
<message>
- <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="+1657"/>
+ <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="+1785"/>
<source>Unable to connect</source>
<translation type="unfinished"></translation>
</message>
@@ -3290,7 +3284,7 @@ Do you want to delete it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+234"/>
+ <location line="+242"/>
<source>Unable to disable autocommit</source>
<translation type="unfinished"></translation>
</message>
@@ -3313,19 +3307,19 @@ Do you want to delete it anyway?</source>
<context>
<name>QODBCResult</name>
<message>
- <location line="-1204"/>
+ <location line="-1218"/>
<location line="+349"/>
<source>QODBCResult::reset: Unable to set &apos;SQL_CURSOR_STATIC&apos; as statement attribute. Please check your ODBC driver configuration</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="-332"/>
- <location line="+625"/>
+ <location line="+626"/>
<source>Unable to execute statement</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="-554"/>
+ <location line="-555"/>
<source>Unable to fetch next</source>
<translation type="unfinished"></translation>
</message>
@@ -3335,19 +3329,19 @@ Do you want to delete it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+267"/>
+ <location line="+268"/>
<source>Unable to bind variable</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/sql/drivers/db2/qsql_db2.cpp" line="+194"/>
- <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="-474"/>
- <location line="+577"/>
+ <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="-475"/>
+ <location line="+578"/>
<source>Unable to fetch last</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="-671"/>
+ <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="-672"/>
<source>Unable to fetch</source>
<translation type="unfinished"></translation>
</message>
@@ -3365,12 +3359,12 @@ Do you want to delete it anyway?</source>
<context>
<name>QObject</name>
<message>
- <location filename="../src/gui/util/qdesktopservices_mac.cpp" line="+134"/>
+ <location filename="../src/gui/util/qdesktopservices_mac.cpp" line="+165"/>
<source>Home</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/network/access/qnetworkaccessdatabackend.cpp" line="+44"/>
+ <location filename="../src/network/access/qnetworkaccessdatabackend.cpp" line="+74"/>
<source>Operation not supported on %1</source>
<translation type="unfinished"></translation>
</message>
@@ -3380,7 +3374,7 @@ Do you want to delete it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/network/access/qnetworkaccessdebugpipebackend.cpp" line="+145"/>
+ <location filename="../src/network/access/qnetworkaccessdebugpipebackend.cpp" line="+175"/>
<source>Write error writing to %1: %2</source>
<translation type="unfinished"></translation>
</message>
@@ -3405,7 +3399,7 @@ Do you want to delete it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/network/kernel/qhostinfo.cpp" line="+147"/>
+ <location filename="../src/network/kernel/qhostinfo.cpp" line="+177"/>
<location line="+57"/>
<source>No host name given</source>
<translation type="unfinished"></translation>
@@ -3414,7 +3408,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QPPDOptionsModel</name>
<message>
- <location filename="../src/gui/dialogs/qprintdialog_unix.cpp" line="+1165"/>
+ <location filename="../src/gui/dialogs/qprintdialog_unix.cpp" line="+1195"/>
<source>Name</source>
<translation type="unfinished"></translation>
</message>
@@ -3427,7 +3421,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QPSQLDriver</name>
<message>
- <location filename="../src/sql/drivers/psql/qsql_psql.cpp" line="+732"/>
+ <location filename="../src/sql/drivers/psql/qsql_psql.cpp" line="+763"/>
<source>Unable to connect</source>
<translation type="unfinished"></translation>
</message>
@@ -3447,7 +3441,7 @@ Do you want to delete it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+336"/>
+ <location line="+358"/>
<source>Unable to subscribe</source>
<translation type="unfinished"></translation>
</message>
@@ -3460,12 +3454,12 @@ Do you want to delete it anyway?</source>
<context>
<name>QPSQLResult</name>
<message>
- <location line="-1035"/>
+ <location line="-1058"/>
<source>Unable to create query</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+373"/>
+ <location line="+374"/>
<source>Unable to prepare statement</source>
<translation type="unfinished"></translation>
</message>
@@ -3473,7 +3467,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QPageSetupWidget</name>
<message>
- <location filename="../src/gui/dialogs/qpagesetupdialog_unix.cpp" line="+274"/>
+ <location filename="../src/gui/dialogs/qpagesetupdialog_unix.cpp" line="+304"/>
<source>Centimeters (cm)</source>
<translation type="unfinished"></translation>
</message>
@@ -3589,7 +3583,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QPrintDialog</name>
<message>
- <location filename="../src/gui/painting/qprinterinfo_unix.cpp" line="+68"/>
+ <location filename="../src/gui/painting/qprinterinfo_unix.cpp" line="+98"/>
<source>locally connected</source>
<translation type="unfinished"></translation>
</message>
@@ -3606,7 +3600,7 @@ Do you want to delete it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qprintdialog_qws.cpp" line="+299"/>
+ <location filename="../src/gui/dialogs/qprintdialog_qws.cpp" line="+329"/>
<source>A0 (841 x 1189 mm)</source>
<translation type="unfinished"></translation>
</message>
@@ -3756,12 +3750,12 @@ Do you want to delete it anyway?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qprintdialog_win.cpp" line="+238"/>
+ <location filename="../src/gui/dialogs/qprintdialog_win.cpp" line="+268"/>
<source>OK</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qabstractprintdialog.cpp" line="+80"/>
+ <location filename="../src/gui/dialogs/qabstractprintdialog.cpp" line="+110"/>
<location line="+13"/>
<location filename="../src/gui/dialogs/qprintdialog_win.cpp" line="-2"/>
<source>Print</source>
@@ -4015,13 +4009,13 @@ Please choose a different file name.</source>
<context>
<name>QPrintPreviewDialog</name>
<message>
- <location filename="../src/gui/dialogs/qabstractpagesetupdialog.cpp" line="+38"/>
+ <location filename="../src/gui/dialogs/qabstractpagesetupdialog.cpp" line="+68"/>
<location line="+12"/>
<source>Page Setup</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qprintpreviewdialog.cpp" line="+222"/>
+ <location filename="../src/gui/dialogs/qprintpreviewdialog.cpp" line="+252"/>
<source>%1%</source>
<translation type="unfinished"></translation>
</message>
@@ -4288,8 +4282,8 @@ Please choose a different file name.</source>
<context>
<name>QProcess</name>
<message>
- <location filename="../src/corelib/io/qprocess_unix.cpp" line="+445"/>
- <location filename="../src/corelib/io/qprocess_win.cpp" line="+117"/>
+ <location filename="../src/corelib/io/qprocess_unix.cpp" line="+475"/>
+ <location filename="../src/corelib/io/qprocess_win.cpp" line="+147"/>
<source>Could not open input redirection for reading</source>
<translation type="unfinished"></translation>
</message>
@@ -4318,7 +4312,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/corelib/io/qprocess.cpp" line="+503"/>
+ <location filename="../src/corelib/io/qprocess.cpp" line="+533"/>
<location line="+52"/>
<location filename="../src/corelib/io/qprocess_win.cpp" line="-211"/>
<location line="+50"/>
@@ -4338,6 +4332,11 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
+ <location line="+912"/>
+ <source>No program defined</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<location filename="../src/corelib/io/qprocess_win.cpp" line="-341"/>
<source>Process failed to start</source>
<translation type="unfinished"></translation>
@@ -4346,7 +4345,7 @@ Please choose a different file name.</source>
<context>
<name>QProgressDialog</name>
<message>
- <location filename="../src/gui/dialogs/qprogressdialog.cpp" line="+152"/>
+ <location filename="../src/gui/dialogs/qprogressdialog.cpp" line="+182"/>
<source>Cancel</source>
<translation type="unfinished"></translation>
</message>
@@ -4370,7 +4369,7 @@ Please choose a different file name.</source>
<context>
<name>QRegExp</name>
<message>
- <location filename="../src/corelib/tools/qregexp.cpp" line="+34"/>
+ <location filename="../src/corelib/tools/qregexp.cpp" line="+64"/>
<source>no error occurred</source>
<translation type="unfinished"></translation>
</message>
@@ -4418,7 +4417,7 @@ Please choose a different file name.</source>
<context>
<name>QSQLite2Driver</name>
<message>
- <location filename="../src/sql/drivers/sqlite2/qsql_sqlite2.cpp" line="+353"/>
+ <location filename="../src/sql/drivers/sqlite2/qsql_sqlite2.cpp" line="+396"/>
<source>Error to open database</source>
<translation type="unfinished"></translation>
</message>
@@ -4441,12 +4440,12 @@ Please choose a different file name.</source>
<context>
<name>QSQLite2Result</name>
<message>
- <location line="-310"/>
+ <location line="-323"/>
<source>Unable to fetch results</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+139"/>
+ <location line="+147"/>
<source>Unable to execute statement</source>
<translation type="unfinished"></translation>
</message>
@@ -4454,7 +4453,7 @@ Please choose a different file name.</source>
<context>
<name>QSQLiteDriver</name>
<message>
- <location filename="../src/sql/drivers/sqlite/qsql_sqlite.cpp" line="+498"/>
+ <location filename="../src/sql/drivers/sqlite/qsql_sqlite.cpp" line="+528"/>
<source>Error opening database</source>
<translation type="unfinished"></translation>
</message>
@@ -4517,12 +4516,12 @@ Please choose a different file name.</source>
<context>
<name>QScrollBar</name>
<message>
- <location filename="../src/gui/widgets/qscrollbar.cpp" line="+419"/>
+ <location filename="../src/gui/widgets/qscrollbar.cpp" line="+448"/>
<source>Scroll here</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+3"/>
+ <location line="+2"/>
<source>Left edge</source>
<translation type="unfinished"></translation>
</message>
@@ -4532,7 +4531,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+2"/>
+ <location line="+1"/>
<source>Right edge</source>
<translation type="unfinished"></translation>
</message>
@@ -4542,7 +4541,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+3"/>
+ <location line="+2"/>
<source>Page left</source>
<translation type="unfinished"></translation>
</message>
@@ -4553,7 +4552,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+2"/>
+ <location line="+1"/>
<source>Page right</source>
<translation type="unfinished"></translation>
</message>
@@ -4564,7 +4563,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+3"/>
+ <location line="+2"/>
<source>Scroll left</source>
<translation type="unfinished"></translation>
</message>
@@ -4574,7 +4573,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+2"/>
+ <location line="+1"/>
<source>Scroll right</source>
<translation type="unfinished"></translation>
</message>
@@ -4602,7 +4601,7 @@ Please choose a different file name.</source>
<context>
<name>QSharedMemory</name>
<message>
- <location filename="../src/corelib/kernel/qsharedmemory.cpp" line="+177"/>
+ <location filename="../src/corelib/kernel/qsharedmemory.cpp" line="+207"/>
<source>%1: unable to set key on lock</source>
<translation type="unfinished"></translation>
</message>
@@ -4613,7 +4612,7 @@ Please choose a different file name.</source>
</message>
<message>
<location line="+168"/>
- <location filename="../src/corelib/kernel/qsharedmemory_p.h" line="+118"/>
+ <location filename="../src/corelib/kernel/qsharedmemory_p.h" line="+148"/>
<source>%1: unable to lock</source>
<translation type="unfinished"></translation>
</message>
@@ -4623,8 +4622,8 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/corelib/kernel/qsharedmemory_unix.cpp" line="+48"/>
- <location filename="../src/corelib/kernel/qsharedmemory_win.cpp" line="+57"/>
+ <location filename="../src/corelib/kernel/qsharedmemory_unix.cpp" line="+78"/>
+ <location filename="../src/corelib/kernel/qsharedmemory_win.cpp" line="+87"/>
<source>%1: permission denied</source>
<translation type="unfinished"></translation>
</message>
@@ -4702,7 +4701,7 @@ Please choose a different file name.</source>
<context>
<name>QShortcut</name>
<message>
- <location filename="../src/gui/kernel/qkeysequence.cpp" line="+343"/>
+ <location filename="../src/gui/kernel/qkeysequence.cpp" line="+373"/>
<source>Space</source>
<translation type="unfinished"></translation>
</message>
@@ -5283,7 +5282,7 @@ Please choose a different file name.</source>
<context>
<name>QSql</name>
<message>
- <location filename="../src/qt3support/sql/q3sqlmanager_p.cpp" line="+860"/>
+ <location filename="../src/qt3support/sql/q3sqlmanager_p.cpp" line="+890"/>
<source>Delete</source>
<translation type="unfinished"></translation>
</message>
@@ -5340,7 +5339,7 @@ Please choose a different file name.</source>
<context>
<name>QSslSocket</name>
<message>
- <location filename="../src/network/ssl/qsslsocket_openssl.cpp" line="+539"/>
+ <location filename="../src/network/ssl/qsslsocket_openssl.cpp" line="+569"/>
<source>Unable to write data: %1</source>
<translation type="unfinished"></translation>
</message>
@@ -5399,7 +5398,7 @@ Please choose a different file name.</source>
<name>QSystemSemaphore</name>
<message>
<location filename="../src/corelib/kernel/qsystemsemaphore_unix.cpp" line="-41"/>
- <location filename="../src/corelib/kernel/qsystemsemaphore_win.cpp" line="+36"/>
+ <location filename="../src/corelib/kernel/qsystemsemaphore_win.cpp" line="+66"/>
<source>%1: out of resources</source>
<translation type="unfinished"></translation>
</message>
@@ -5429,7 +5428,7 @@ Please choose a different file name.</source>
<context>
<name>QTDSDriver</name>
<message>
- <location filename="../src/sql/drivers/tds/qsql_tds.cpp" line="+552"/>
+ <location filename="../src/sql/drivers/tds/qsql_tds.cpp" line="+584"/>
<source>Unable to open connection</source>
<translation type="unfinished"></translation>
</message>
@@ -5455,7 +5454,7 @@ Please choose a different file name.</source>
<context>
<name>QTcpServer</name>
<message>
- <location filename="../src/network/socket/qtcpserver.cpp" line="+252"/>
+ <location filename="../src/network/socket/qtcpserver.cpp" line="+282"/>
<source>Operation on socket is not supported</source>
<translation type="unfinished"></translation>
</message>
@@ -5463,7 +5462,7 @@ Please choose a different file name.</source>
<context>
<name>QTextControl</name>
<message>
- <location filename="../src/gui/text/qtextcontrol.cpp" line="+1942"/>
+ <location filename="../src/gui/text/qtextcontrol.cpp" line="+1973"/>
<source>&amp;Undo</source>
<translation type="unfinished"></translation>
</message>
@@ -5521,7 +5520,7 @@ Please choose a different file name.</source>
<context>
<name>QUdpSocket</name>
<message>
- <location filename="../src/network/socket/qudpsocket.cpp" line="+139"/>
+ <location filename="../src/network/socket/qudpsocket.cpp" line="+169"/>
<source>This platform does not support IPv6</source>
<translation type="unfinished"></translation>
</message>
@@ -5529,7 +5528,7 @@ Please choose a different file name.</source>
<context>
<name>QUndoGroup</name>
<message>
- <location filename="../src/gui/util/qundogroup.cpp" line="+356"/>
+ <location filename="../src/gui/util/qundogroup.cpp" line="+386"/>
<source>Undo</source>
<translation type="unfinished"></translation>
</message>
@@ -5542,7 +5541,7 @@ Please choose a different file name.</source>
<context>
<name>QUndoModel</name>
<message>
- <location filename="../src/gui/util/qundoview.cpp" line="+71"/>
+ <location filename="../src/gui/util/qundoview.cpp" line="+101"/>
<source>&lt;empty&gt;</source>
<translation type="unfinished"></translation>
</message>
@@ -5550,7 +5549,7 @@ Please choose a different file name.</source>
<context>
<name>QUndoStack</name>
<message>
- <location filename="../src/gui/util/qundostack.cpp" line="+804"/>
+ <location filename="../src/gui/util/qundostack.cpp" line="+834"/>
<source>Undo</source>
<translation type="unfinished"></translation>
</message>
@@ -5621,7 +5620,7 @@ Please choose a different file name.</source>
<context>
<name>QWebFrame</name>
<message>
- <location filename="../src/3rdparty/webkit/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp" line="+686"/>
+ <location filename="../src/3rdparty/webkit/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp" line="+692"/>
<source>Request cancelled</source>
<translation type="unfinished"></translation>
</message>
@@ -6031,7 +6030,7 @@ Please choose a different file name.</source>
</translation>
</message>
<message>
- <location filename="../src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp" line="+1342"/>
+ <location filename="../src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp" line="+1322"/>
<source>JavaScript Alert - %1</source>
<translation type="unfinished"></translation>
</message>
@@ -6107,6 +6106,11 @@ Please choose a different file name.</source>
</message>
<message>
<location line="+3"/>
+ <source>Select all</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
<source>Select to the next character</source>
<translation type="unfinished"></translation>
</message>
@@ -6175,11 +6179,21 @@ Please choose a different file name.</source>
<source>Delete to the end of the word</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <location line="+33"/>
+ <source>Insert a new paragraph</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Insert a new line</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>QWhatsThisAction</name>
<message>
- <location filename="../src/gui/kernel/qwhatsthis.cpp" line="+492"/>
+ <location filename="../src/gui/kernel/qwhatsthis.cpp" line="+522"/>
<source>What&apos;s This?</source>
<translation type="unfinished"></translation>
</message>
@@ -6187,7 +6201,7 @@ Please choose a different file name.</source>
<context>
<name>QWidget</name>
<message>
- <location filename="../src/gui/kernel/qwidget.cpp" line="+5290"/>
+ <location filename="../src/gui/kernel/qwidget.cpp" line="+5326"/>
<source>*</source>
<translation type="unfinished"></translation>
</message>
@@ -6195,7 +6209,7 @@ Please choose a different file name.</source>
<context>
<name>QWizard</name>
<message>
- <location filename="../src/gui/dialogs/qwizard.cpp" line="+605"/>
+ <location filename="../src/gui/dialogs/qwizard.cpp" line="+637"/>
<source>Go Back</source>
<translation type="unfinished"></translation>
</message>
@@ -6253,7 +6267,7 @@ Please choose a different file name.</source>
<context>
<name>QWorkspace</name>
<message>
- <location filename="../src/gui/widgets/qworkspace.cpp" line="+1064"/>
+ <location filename="../src/gui/widgets/qworkspace.cpp" line="+1094"/>
<source>&amp;Restore</source>
<translation type="unfinished"></translation>
</message>
@@ -6323,7 +6337,7 @@ Please choose a different file name.</source>
<context>
<name>QXml</name>
<message>
- <location filename="../src/xml/sax/qxml.cpp" line="+28"/>
+ <location filename="../src/xml/sax/qxml.cpp" line="+58"/>
<source>no error occurred</source>
<translation type="unfinished"></translation>
</message>
@@ -6441,8 +6455,8 @@ Please choose a different file name.</source>
<context>
<name>QXmlStream</name>
<message>
- <location filename="../src/corelib/xml/qxmlstream.cpp" line="+562"/>
- <location filename="../src/corelib/xml/qxmlstream_p.h" line="+1739"/>
+ <location filename="../src/corelib/xml/qxmlstream.cpp" line="+592"/>
+ <location filename="../src/corelib/xml/qxmlstream_p.h" line="+1769"/>
<source>Extra content at end of document.</source>
<translation type="unfinished"></translation>
</message>
@@ -6626,7 +6640,7 @@ Please choose a different file name.</source>
<context>
<name>QtXmlPatterns</name>
<message>
- <location filename="../src/xmlpatterns/acceltree/qacceltreebuilder.cpp" line="+175"/>
+ <location filename="../src/xmlpatterns/acceltree/qacceltreebuilder.cpp" line="+205"/>
<source>An %1-attribute with value %2 has already been declared.</source>
<translation type="unfinished"></translation>
</message>
@@ -6636,17 +6650,17 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/api/qiodevicedelegate.cpp" line="+54"/>
+ <location filename="../src/xmlpatterns/api/qiodevicedelegate.cpp" line="+84"/>
<source>Network timeout.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/api/qxmlserializer.cpp" line="+290"/>
+ <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 type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qabstractdatetime.cpp" line="+50"/>
+ <location filename="../src/xmlpatterns/data/qabstractdatetime.cpp" line="+80"/>
<source>Year %1 is invalid because it begins with %2.</source>
<translation type="unfinished"></translation>
</message>
@@ -6686,7 +6700,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qabstractduration.cpp" line="+69"/>
+ <location filename="../src/xmlpatterns/data/qabstractduration.cpp" line="+99"/>
<location line="+15"/>
<source>At least one component must be present.</source>
<translation type="unfinished"></translation>
@@ -6697,7 +6711,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qabstractfloatmathematician.cpp" line="+34"/>
+ <location filename="../src/xmlpatterns/data/qabstractfloatmathematician.cpp" line="+64"/>
<source>No operand in an integer division, %1, can be %2.</source>
<translation type="unfinished"></translation>
</message>
@@ -6712,17 +6726,17 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qanyuri_p.h" line="+102"/>
+ <location filename="../src/xmlpatterns/data/qanyuri_p.h" line="+132"/>
<source>%1 is not a valid value of type %2.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qatomiccasters_p.h" line="+193"/>
+ <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 type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qatomicmathematicians.cpp" line="+35"/>
+ <location filename="../src/xmlpatterns/data/qatomicmathematicians.cpp" line="+65"/>
<source>Integer division (%1) by zero (%2) is undefined.</source>
<translation type="unfinished"></translation>
</message>
@@ -6753,17 +6767,17 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qatomicvalue.cpp" line="+49"/>
+ <location filename="../src/xmlpatterns/data/qatomicvalue.cpp" line="+79"/>
<source>A value of type %1 cannot have an Effective Boolean Value.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qboolean.cpp" line="+48"/>
+ <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 type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qderivedinteger_p.h" line="+372"/>
+ <location filename="../src/xmlpatterns/data/qderivedinteger_p.h" line="+402"/>
<source>Value %1 of type %2 exceeds maximum (%3).</source>
<translation type="unfinished"></translation>
</message>
@@ -6773,7 +6787,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qhexbinary.cpp" line="+61"/>
+ <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 type="unfinished"></translation>
</message>
@@ -6783,7 +6797,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qarithmeticexpression.cpp" line="+177"/>
+ <location filename="../src/xmlpatterns/expr/qarithmeticexpression.cpp" line="+207"/>
<source>Operator %1 cannot be used on type %2.</source>
<translation type="unfinished"></translation>
</message>
@@ -6793,7 +6807,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qattributenamevalidator.cpp" line="+36"/>
+ <location filename="../src/xmlpatterns/expr/qattributenamevalidator.cpp" line="+66"/>
<source>The namespace URI in the name for a computed attribute cannot be %1.</source>
<translation type="unfinished"></translation>
</message>
@@ -6803,7 +6817,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qcastas.cpp" line="+58"/>
+ <location filename="../src/xmlpatterns/expr/qcastas.cpp" line="+88"/>
<source>Type error in cast, expected %1, received %2.</source>
<translation type="unfinished"></translation>
</message>
@@ -6813,7 +6827,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qcastingplatform.cpp" line="+104"/>
+ <location filename="../src/xmlpatterns/expr/qcastingplatform.cpp" line="+134"/>
<source>No casting is possible with %1 as the target type.</source>
<translation type="unfinished"></translation>
</message>
@@ -6838,7 +6852,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qcommentconstructor.cpp" line="+37"/>
+ <location filename="../src/xmlpatterns/expr/qcommentconstructor.cpp" line="+67"/>
<source>A comment cannot contain %1</source>
<translation type="unfinished"></translation>
</message>
@@ -6848,7 +6862,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qcomparisonplatform.cpp" line="+137"/>
+ <location filename="../src/xmlpatterns/expr/qcomparisonplatform.cpp" line="+167"/>
<source>No comparisons can be done involving the type %1.</source>
<translation type="unfinished"></translation>
</message>
@@ -6858,12 +6872,12 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qdocumentcontentvalidator.cpp" line="+56"/>
+ <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 type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qexpressionfactory.cpp" line="+139"/>
+ <location filename="../src/xmlpatterns/expr/qexpressionfactory.cpp" line="+169"/>
<source>A library module cannot be evaluated directly. It must be imported from a main module.</source>
<translation type="unfinished"></translation>
</message>
@@ -6873,7 +6887,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qgenericpredicate.cpp" line="+76"/>
+ <location filename="../src/xmlpatterns/expr/qgenericpredicate.cpp" line="+106"/>
<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 type="unfinished"></translation>
</message>
@@ -6883,7 +6897,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qncnameconstructor_p.h" line="+83"/>
+ <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 type="unfinished"></translation>
</message>
@@ -6893,33 +6907,33 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qpath.cpp" line="+79"/>
+ <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 type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qprocessinginstructionconstructor.cpp" line="+54"/>
+ <location filename="../src/xmlpatterns/expr/qprocessinginstructionconstructor.cpp" line="+84"/>
<source>The data of a processing instruction cannot contain the string %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qqnameconstructor.cpp" line="+52"/>
+ <location filename="../src/xmlpatterns/expr/qqnameconstructor.cpp" line="+82"/>
<source>No namespace binding exists for the prefix %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qqnameconstructor_p.h" line="+126"/>
+ <location filename="../src/xmlpatterns/expr/qqnameconstructor_p.h" line="+156"/>
<source>No namespace binding exists for the prefix %1 in %2</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+12"/>
- <location filename="../src/xmlpatterns/functions/qqnamefns.cpp" line="+39"/>
+ <location filename="../src/xmlpatterns/functions/qqnamefns.cpp" line="+69"/>
<source>%1 is an invalid %2</source>
<translation type="unfinished"></translation>
</message>
<message numerus="yes">
- <location filename="../src/xmlpatterns/functions/qabstractfunctionfactory.cpp" line="+47"/>
+ <location filename="../src/xmlpatterns/functions/qabstractfunctionfactory.cpp" line="+77"/>
<source>%1 takes at most %n argument(s). %2 is therefore invalid.</source>
<translation type="unfinished">
<numerusform></numerusform>
@@ -6933,7 +6947,7 @@ Please choose a different file name.</source>
</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qaggregatefns.cpp" line="+90"/>
+ <location filename="../src/xmlpatterns/functions/qaggregatefns.cpp" line="+120"/>
<source>The first argument to %1 cannot be of type %2. It must be a numeric type, xs:yearMonthDuration or xs:dayTimeDuration.</source>
<translation type="unfinished"></translation>
</message>
@@ -6948,27 +6962,27 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qassemblestringfns.cpp" line="+58"/>
+ <location filename="../src/xmlpatterns/functions/qassemblestringfns.cpp" line="+88"/>
<source>%1 is not a valid XML 1.0 character.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qcomparingaggregator.cpp" line="+167"/>
+ <location filename="../src/xmlpatterns/functions/qcomparingaggregator.cpp" line="+197"/>
<source>The first argument to %1 cannot be of type %2.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qdatetimefn.cpp" line="+56"/>
+ <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 type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qerrorfn.cpp" line="+31"/>
+ <location filename="../src/xmlpatterns/functions/qerrorfn.cpp" line="+61"/>
<source>%1 was called.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qpatternmatchingfns.cpp" line="+64"/>
+ <location filename="../src/xmlpatterns/functions/qpatternmatchingfns.cpp" line="+94"/>
<source>%1 must be followed by %2 or %3, not at the end of the replacement string.</source>
<translation type="unfinished"></translation>
</message>
@@ -6983,7 +6997,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qpatternplatform.cpp" line="+62"/>
+ <location filename="../src/xmlpatterns/functions/qpatternplatform.cpp" line="+92"/>
<source>%1 matches newline characters</source>
<translation type="unfinished"></translation>
</message>
@@ -7018,17 +7032,17 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qsequencefns.cpp" line="+317"/>
+ <location filename="../src/xmlpatterns/functions/qsequencefns.cpp" line="+347"/>
<source>It will not be possible to retrieve %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qcontextnodechecker.cpp" line="+24"/>
+ <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 type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qsequencegeneratingfns.cpp" line="+249"/>
+ <location filename="../src/xmlpatterns/functions/qsequencegeneratingfns.cpp" line="+279"/>
<source>The default collection is undefined</source>
<translation type="unfinished"></translation>
</message>
@@ -7038,12 +7052,12 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qstringvaluefns.cpp" line="+222"/>
+ <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 type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qtimezonefns.cpp" line="+57"/>
+ <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 type="unfinished"></translation>
</message>
@@ -7053,17 +7067,17 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/janitors/qcardinalityverifier.cpp" line="+28"/>
+ <location filename="../src/xmlpatterns/janitors/qcardinalityverifier.cpp" line="+58"/>
<source>Required cardinality is %1; got cardinality %2.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/janitors/qitemverifier.cpp" line="+37"/>
+ <location filename="../src/xmlpatterns/janitors/qitemverifier.cpp" line="+67"/>
<source>The item %1 did not match the required type %2.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="+319"/>
+ <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="+379"/>
<location line="+7253"/>
<source>%1 is an unknown schema type.</source>
<translation type="unfinished"></translation>
@@ -7084,7 +7098,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/parser/qparsercontext.cpp" line="+63"/>
+ <location filename="../src/xmlpatterns/parser/qparsercontext.cpp" line="+93"/>
<source>The variable %1 is unused</source>
<translation type="unfinished"></translation>
</message>
@@ -7366,7 +7380,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/type/qcardinality.cpp" line="+25"/>
+ <location filename="../src/xmlpatterns/type/qcardinality.cpp" line="+55"/>
<source>empty</source>
<translation type="unfinished"></translation>
</message>
@@ -7391,7 +7405,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/type/qtypechecker.cpp" line="+33"/>
+ <location filename="../src/xmlpatterns/type/qtypechecker.cpp" line="+63"/>
<source>Required type is %1, but %2 was found.</source>
<translation type="unfinished"></translation>
</message>
@@ -7406,7 +7420,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/utils/qoutputvalidator.cpp" line="+56"/>
+ <location filename="../src/xmlpatterns/utils/qoutputvalidator.cpp" line="+86"/>
<source>It&apos;s not possible to add attributes after any other kind of node.</source>
<translation type="unfinished"></translation>
</message>
@@ -7416,7 +7430,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/utils/qxpathhelper_p.h" line="+90"/>
+ <location filename="../src/xmlpatterns/utils/qxpathhelper_p.h" line="+120"/>
<source>Only the Unicode Codepoint Collation is supported(%1). %2 is unsupported.</source>
<translation type="unfinished"></translation>
</message>
@@ -7426,7 +7440,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/acceltree/qacceltreeresourceloader.cpp" line="+284"/>
+ <location filename="../src/xmlpatterns/acceltree/qacceltreeresourceloader.cpp" line="+314"/>
<source>%1 is an unsupported encoding.</source>
<translation type="unfinished"></translation>
</message>
@@ -7441,13 +7455,13 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qapplytemplate.cpp" line="+89"/>
+ <location filename="../src/xmlpatterns/expr/qapplytemplate.cpp" line="+119"/>
<source>Ambiguous rule match.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qcomputednamespaceconstructor.cpp" line="+39"/>
- <source>In a namespace constructor, the value for a namespace value cannot be an empty string.</source>
+ <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 type="unfinished"></translation>
</message>
<message>
@@ -7466,12 +7480,12 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qevaluationcache.cpp" line="+87"/>
+ <location filename="../src/xmlpatterns/expr/qevaluationcache.cpp" line="+117"/>
<source>Circularity detected</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qtemplate.cpp" line="+115"/>
+ <location filename="../src/xmlpatterns/expr/qtemplate.cpp" line="+145"/>
<source>The parameter %1 is required, but no corresponding %2 is supplied.</source>
<translation type="unfinished"></translation>
</message>
@@ -7481,12 +7495,12 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qunparsedtextfn.cpp" line="+35"/>
+ <location filename="../src/xmlpatterns/functions/qunparsedtextfn.cpp" line="+65"/>
<source>The URI cannot have a fragment</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/parser/qxslttokenizer.cpp" line="+489"/>
+ <location filename="../src/xmlpatterns/parser/qxslttokenizer.cpp" line="+519"/>
<source>Element %1 is not allowed at this location.</source>
<translation type="unfinished"></translation>
</message>
@@ -7541,7 +7555,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/xmlpatterns/parser/qmaintainingreader.cpp" line="+153"/>
+ <location filename="../src/xmlpatterns/parser/qmaintainingreader.cpp" line="+183"/>
<source>Attribute %1 cannot appear on the element %2. Only the standard attributes can appear.</source>
<translation type="unfinished"></translation>
</message>
@@ -7616,7 +7630,7 @@ Please choose a different file name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+432"/>
+ <location line="+434"/>
<source>Element %1 cannot have a sequence constructor.</source>
<translation type="unfinished"></translation>
</message>
diff --git a/translations/qt_zh_CN.ts b/translations/qt_zh_CN.ts
index 14ec1cd..b0a7947 100644
--- a/translations/qt_zh_CN.ts
+++ b/translations/qt_zh_CN.ts
@@ -1,11 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.0" language="zh">
-<defaultcodec></defaultcodec>
<context>
<name>AudioOutput</name>
<message>
- <location filename="../src/3rdparty/phonon/phonon/audiooutput.cpp" line="+374"/>
+ <location filename="../src/3rdparty/phonon/phonon/audiooutput.cpp" line="+375"/>
<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;音频回放设备 &lt;b&gt;%1&lt;/b&gt; 没有工作。&lt;br/&gt;回滚到 &lt;b&gt;%2&lt;/b&gt;。&lt;/html&gt;</translation>
</message>
@@ -23,7 +22,7 @@
<context>
<name>CloseButton</name>
<message>
- <location filename="../src/gui/widgets/qtabbar.cpp" line="+2217"/>
+ <location filename="../src/gui/widgets/qtabbar.cpp" line="+2251"/>
<source>Close Tab</source>
<translation>关闭标签页</translation>
</message>
@@ -81,7 +80,7 @@
<context>
<name>Phonon::Gstreamer::MediaObject</name>
<message>
- <location filename="../src/3rdparty/phonon/gstreamer/mediaobject.cpp" line="+88"/>
+ <location filename="../src/3rdparty/phonon/gstreamer/mediaobject.cpp" line="+90"/>
<source>Cannot start playback.
Check your Gstreamer installation and make sure you
@@ -97,24 +96,24 @@ have libgstreamer-plugins-base installed.</source>
<translation>缺少一个需è¦çš„解ç å™¨ã€‚您需è¦å®‰è£…如下解ç å™¨æ¥æ’­æ”¾è¿™ä¸ªå†…容:%0</translation>
</message>
<message>
- <location line="+653"/>
- <location line="+9"/>
+ <location line="+676"/>
+ <location line="+8"/>
<location line="+15"/>
- <location line="+7"/>
- <location line="+5"/>
- <location line="+20"/>
- <location line="+317"/>
+ <location line="+9"/>
+ <location line="+6"/>
+ <location line="+19"/>
+ <location line="+335"/>
<location line="+24"/>
<source>Could not open media source.</source>
<translation>ä¸èƒ½æ‰“开媒体æºã€‚</translation>
</message>
<message>
- <location line="-381"/>
+ <location line="-403"/>
<source>Invalid source type.</source>
<translation>无效的æºç±»åž‹ã€‚</translation>
</message>
<message>
- <location line="+355"/>
+ <location line="+377"/>
<source>Could not locate media source.</source>
<translation>ä¸èƒ½å®šä½åª’体æºã€‚</translation>
</message>
@@ -148,7 +147,7 @@ have libgstreamer-plugins-base installed.</source>
<context>
<name>Q3Accel</name>
<message>
- <location filename="../src/qt3support/other/q3accel.cpp" line="+451"/>
+ <location filename="../src/qt3support/other/q3accel.cpp" line="+481"/>
<source>%1, %2 not defined</source>
<translation>%1,%2未定义</translation>
</message>
@@ -161,7 +160,7 @@ have libgstreamer-plugins-base installed.</source>
<context>
<name>Q3DataTable</name>
<message>
- <location filename="../src/qt3support/sql/q3datatable.cpp" line="+253"/>
+ <location filename="../src/qt3support/sql/q3datatable.cpp" line="+285"/>
<source>True</source>
<translation>真</translation>
</message>
@@ -189,7 +188,7 @@ have libgstreamer-plugins-base installed.</source>
<context>
<name>Q3FileDialog</name>
<message>
- <location filename="../src/qt3support/dialogs/q3filedialog.cpp" line="+834"/>
+ <location filename="../src/qt3support/dialogs/q3filedialog.cpp" line="+864"/>
<source>Copy or Move a File</source>
<translation>å¤åˆ¶æˆ–者移动一个文件</translation>
</message>
@@ -214,7 +213,7 @@ have libgstreamer-plugins-base installed.</source>
<location line="-157"/>
<location line="+49"/>
<location line="+2153"/>
- <location filename="../src/qt3support/dialogs/q3filedialog_mac.cpp" line="+80"/>
+ <location filename="../src/qt3support/dialogs/q3filedialog_mac.cpp" line="+110"/>
<source>All Files (*)</source>
<translation>所有文件 (*)</translation>
</message>
@@ -354,7 +353,7 @@ have libgstreamer-plugins-base installed.</source>
<message>
<location line="+704"/>
<location line="+2100"/>
- <location filename="../src/qt3support/dialogs/q3filedialog_win.cpp" line="+307"/>
+ <location filename="../src/qt3support/dialogs/q3filedialog_win.cpp" line="+337"/>
<source>Open</source>
<translation>打开</translation>
</message>
@@ -523,7 +522,7 @@ Check path and filename.</source>
<context>
<name>Q3LocalFs</name>
<message>
- <location filename="../src/qt3support/network/q3localfs.cpp" line="+100"/>
+ <location filename="../src/qt3support/network/q3localfs.cpp" line="+130"/>
<location line="+10"/>
<source>Could not read directory
%1</source>
@@ -573,7 +572,7 @@ to
<context>
<name>Q3MainWindow</name>
<message>
- <location filename="../src/qt3support/widgets/q3mainwindow.cpp" line="+2021"/>
+ <location filename="../src/qt3support/widgets/q3mainwindow.cpp" line="+2051"/>
<source>Line up</source>
<translation>排列</translation>
</message>
@@ -586,7 +585,7 @@ to
<context>
<name>Q3NetworkProtocol</name>
<message>
- <location filename="../src/qt3support/network/q3networkprotocol.cpp" line="+824"/>
+ <location filename="../src/qt3support/network/q3networkprotocol.cpp" line="+854"/>
<source>Operation stopped by the user</source>
<translation>æ“作被用户åœæ­¢</translation>
</message>
@@ -594,7 +593,7 @@ to
<context>
<name>Q3ProgressDialog</name>
<message>
- <location filename="../src/qt3support/dialogs/q3progressdialog.cpp" line="+194"/>
+ <location filename="../src/qt3support/dialogs/q3progressdialog.cpp" line="+224"/>
<location line="+61"/>
<source>Cancel</source>
<translation>å–消</translation>
@@ -603,7 +602,7 @@ to
<context>
<name>Q3TabDialog</name>
<message>
- <location filename="../src/qt3support/dialogs/q3tabdialog.cpp" line="+159"/>
+ <location filename="../src/qt3support/dialogs/q3tabdialog.cpp" line="+189"/>
<location line="+814"/>
<source>OK</source>
<translation>确认</translation>
@@ -632,7 +631,7 @@ to
<context>
<name>Q3TextEdit</name>
<message>
- <location filename="../src/qt3support/text/q3textedit.cpp" line="+5399"/>
+ <location filename="../src/qt3support/text/q3textedit.cpp" line="+5429"/>
<source>&amp;Undo</source>
<translation>撤消(&amp;U)</translation>
</message>
@@ -671,7 +670,7 @@ to
<context>
<name>Q3TitleBar</name>
<message>
- <location filename="../src/plugins/accessible/compat/q3complexwidgets.cpp" line="+216"/>
+ <location filename="../src/plugins/accessible/compat/q3complexwidgets.cpp" line="+246"/>
<source>System</source>
<translation>系统</translation>
</message>
@@ -739,7 +738,7 @@ to
<context>
<name>Q3ToolBar</name>
<message>
- <location filename="../src/qt3support/widgets/q3toolbar.cpp" line="+662"/>
+ <location filename="../src/qt3support/widgets/q3toolbar.cpp" line="+692"/>
<source>More...</source>
<translation>更多...</translation>
</message>
@@ -747,7 +746,7 @@ to
<context>
<name>Q3UrlOperator</name>
<message>
- <location filename="../src/qt3support/network/q3urloperator.cpp" line="+356"/>
+ <location filename="../src/qt3support/network/q3urloperator.cpp" line="+386"/>
<location line="+260"/>
<location line="+4"/>
<source>The protocol `%1&apos; is not supported</source>
@@ -799,7 +798,7 @@ to
<context>
<name>Q3Wizard</name>
<message>
- <location filename="../src/qt3support/dialogs/q3wizard.cpp" line="+147"/>
+ <location filename="../src/qt3support/dialogs/q3wizard.cpp" line="+177"/>
<source>&amp;Cancel</source>
<translation>å–消(&amp;C)</translation>
</message>
@@ -827,9 +826,9 @@ to
<context>
<name>QAbstractSocket</name>
<message>
- <location filename="../src/network/socket/qabstractsocket.cpp" line="+838"/>
- <location filename="../src/network/socket/qhttpsocketengine.cpp" line="+585"/>
- <location filename="../src/network/socket/qsocks5socketengine.cpp" line="+627"/>
+ <location filename="../src/network/socket/qabstractsocket.cpp" line="+868"/>
+ <location filename="../src/network/socket/qhttpsocketengine.cpp" line="+615"/>
+ <location filename="../src/network/socket/qsocks5socketengine.cpp" line="+657"/>
<location line="+26"/>
<source>Host not found</source>
<translation>主机未找到</translation>
@@ -872,7 +871,7 @@ to
<context>
<name>QAbstractSpinBox</name>
<message>
- <location filename="../src/gui/widgets/qabstractspinbox.cpp" line="+1169"/>
+ <location filename="../src/gui/widgets/qabstractspinbox.cpp" line="+1199"/>
<source>&amp;Step up</source>
<translation>增加(&amp;S)</translation>
</message>
@@ -890,12 +889,12 @@ to
<context>
<name>QApplication</name>
<message>
- <location filename="../src/gui/accessible/qaccessibleobject.cpp" line="+346"/>
+ <location filename="../src/gui/accessible/qaccessibleobject.cpp" line="+376"/>
<source>Activate</source>
<translation>激活</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qmessagebox.h" line="+322"/>
+ <location filename="../src/gui/dialogs/qmessagebox.h" line="+352"/>
<source>Executable &apos;%1&apos; requires Qt %2, found Qt %3.</source>
<translation>执行“%1â€éœ€è¦Qt %2,åªæ‰¾åˆ°äº†Qt %3。</translation>
</message>
@@ -905,7 +904,7 @@ to
<translation>ä¸å…¼å®¹çš„Qt错误</translation>
</message>
<message>
- <location filename="../src/gui/kernel/qapplication.cpp" line="+2212"/>
+ <location filename="../src/gui/kernel/qapplication.cpp" line="+2248"/>
<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>
@@ -942,7 +941,7 @@ to
<context>
<name>QCheckBox</name>
<message>
- <location filename="../src/plugins/accessible/widgets/simplewidgets.cpp" line="+84"/>
+ <location filename="../src/plugins/accessible/widgets/simplewidgets.cpp" line="+114"/>
<source>Uncheck</source>
<translation>å–消选中</translation>
</message>
@@ -960,7 +959,7 @@ to
<context>
<name>QColorDialog</name>
<message>
- <location filename="../src/gui/dialogs/qcolordialog.cpp" line="+1219"/>
+ <location filename="../src/gui/dialogs/qcolordialog.cpp" line="+1253"/>
<source>Hu&amp;e:</source>
<translation>色调(&amp;E):</translation>
</message>
@@ -1022,13 +1021,13 @@ to
<context>
<name>QComboBox</name>
<message>
- <location filename="../src/plugins/accessible/widgets/complexwidgets.cpp" line="+1741"/>
+ <location filename="../src/plugins/accessible/widgets/complexwidgets.cpp" line="+1771"/>
<location line="+65"/>
<source>Open</source>
<translation>打开</translation>
</message>
<message>
- <location filename="../src/gui/itemviews/qitemeditorfactory.cpp" line="+514"/>
+ <location filename="../src/gui/itemviews/qitemeditorfactory.cpp" line="+544"/>
<source>False</source>
<translation>å‡</translation>
</message>
@@ -1071,7 +1070,7 @@ to
<translation type="obsolete">%1:未知错误 %2</translation>
</message>
<message>
- <location filename="../src/corelib/kernel/qsystemsemaphore_unix.cpp" line="+89"/>
+ <location filename="../src/corelib/kernel/qsystemsemaphore_unix.cpp" line="+119"/>
<source>%1: key is empty</source>
<comment>QSystemSemaphore</comment>
<translation>%1:键是空的</translation>
@@ -1092,12 +1091,12 @@ to
<context>
<name>QDB2Driver</name>
<message>
- <location filename="../src/sql/drivers/db2/qsql_db2.cpp" line="+1217"/>
+ <location filename="../src/sql/drivers/db2/qsql_db2.cpp" line="+1276"/>
<source>Unable to connect</source>
<translation>ä¸èƒ½è¿žæŽ¥</translation>
</message>
<message>
- <location line="+263"/>
+ <location line="+303"/>
<source>Unable to commit transaction</source>
<translation>ä¸èƒ½æ交事务</translation>
</message>
@@ -1115,8 +1114,8 @@ to
<context>
<name>QDB2Result</name>
<message>
- <location line="-986"/>
- <location line="+242"/>
+ <location line="-1043"/>
+ <location line="+243"/>
<source>Unable to execute statement</source>
<translation>ä¸èƒ½æ‰§è¡Œè¯­å¥</translation>
</message>
@@ -1131,7 +1130,7 @@ to
<translation>ä¸èƒ½å¸®å®šå˜é‡</translation>
</message>
<message>
- <location line="+91"/>
+ <location line="+92"/>
<source>Unable to fetch record %1</source>
<translation>ä¸èƒ½èŽ·å–记录%1</translation>
</message>
@@ -1149,7 +1148,7 @@ to
<context>
<name>QDateTimeEdit</name>
<message>
- <location filename="../src/gui/widgets/qdatetimeedit.cpp" line="+2265"/>
+ <location filename="../src/gui/widgets/qdatetimeedit.cpp" line="+2295"/>
<source>AM</source>
<translation>AM</translation>
</message>
@@ -1172,7 +1171,7 @@ to
<context>
<name>QDial</name>
<message>
- <location filename="../src/plugins/accessible/widgets/rangecontrols.cpp" line="+921"/>
+ <location filename="../src/plugins/accessible/widgets/rangecontrols.cpp" line="+951"/>
<source>QDial</source>
<translation>QDial</translation>
</message>
@@ -1190,7 +1189,7 @@ to
<context>
<name>QDialog</name>
<message>
- <location filename="../src/gui/dialogs/qdialog.cpp" line="+567"/>
+ <location filename="../src/gui/dialogs/qdialog.cpp" line="+597"/>
<source>What&apos;s This?</source>
<translation>这是什么?</translation>
</message>
@@ -1203,9 +1202,9 @@ to
<context>
<name>QDialogButtonBox</name>
<message>
- <location filename="../src/gui/dialogs/qmessagebox.cpp" line="+1830"/>
+ <location filename="../src/gui/dialogs/qmessagebox.cpp" line="+1866"/>
<location line="+464"/>
- <location filename="../src/gui/widgets/qdialogbuttonbox.cpp" line="+531"/>
+ <location filename="../src/gui/widgets/qdialogbuttonbox.cpp" line="+561"/>
<source>OK</source>
<translation>确定</translation>
</message>
@@ -1328,7 +1327,7 @@ to
<context>
<name>QDirModel</name>
<message>
- <location filename="../src/gui/itemviews/qdirmodel.cpp" line="+423"/>
+ <location filename="../src/gui/itemviews/qdirmodel.cpp" line="+453"/>
<source>Name</source>
<translation>å称</translation>
</message>
@@ -1358,7 +1357,7 @@ to
<context>
<name>QDockWidget</name>
<message>
- <location filename="../src/plugins/accessible/widgets/qaccessiblewidgets.cpp" line="+1209"/>
+ <location filename="../src/plugins/accessible/widgets/qaccessiblewidgets.cpp" line="+1239"/>
<source>Close</source>
<translation>关闭</translation>
</message>
@@ -1389,7 +1388,7 @@ to
<context>
<name>QErrorMessage</name>
<message>
- <location filename="../src/gui/dialogs/qerrormessage.cpp" line="+162"/>
+ <location filename="../src/gui/dialogs/qerrormessage.cpp" line="+192"/>
<source>Debug Message:</source>
<translation>调试消æ¯ï¼š</translation>
</message>
@@ -1417,13 +1416,18 @@ to
<context>
<name>QFile</name>
<message>
- <location filename="../src/corelib/io/qfile.cpp" line="+678"/>
- <location line="+130"/>
+ <location filename="../src/corelib/io/qfile.cpp" line="+708"/>
+ <location line="+141"/>
<source>Destination file exists</source>
<translation>目标文件已存在</translation>
</message>
<message>
- <location line="+12"/>
+ <location line="-108"/>
+ <source>Cannot remove source file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+120"/>
<source>Cannot open %1 for input</source>
<translation>无法输入 %1 </translation>
</message>
@@ -1446,37 +1450,37 @@ to
<context>
<name>QFileDialog</name>
<message>
- <location filename="../src/gui/dialogs/qfiledialog.cpp" line="+484"/>
- <location line="+423"/>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="+515"/>
+ <location line="+444"/>
<source>All Files (*)</source>
<translation>所有文件 (*)</translation>
</message>
<message>
- <location line="+218"/>
+ <location line="+222"/>
<source>Directories</source>
<translation>目录</translation>
</message>
<message>
<location line="-3"/>
<location line="+50"/>
- <location line="+1440"/>
+ <location line="+1471"/>
<location line="+75"/>
<source>&amp;Open</source>
<translation>打开(&amp;O)</translation>
</message>
<message>
- <location line="-1565"/>
+ <location line="-1596"/>
<location line="+50"/>
<source>&amp;Save</source>
<translation>ä¿å­˜(&amp;S)</translation>
</message>
<message>
- <location line="-705"/>
+ <location line="-730"/>
<source>Open</source>
<translation>打开</translation>
</message>
<message>
- <location line="+1469"/>
+ <location line="+1515"/>
<source>%1 already exists.
Do you want to replace it?</source>
<translation>%1å·²ç»å­˜åœ¨ã€‚
@@ -1497,7 +1501,7 @@ Please verify the correct file name was given.</source>
<translation>我的计算机</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-1458"/>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-1504"/>
<source>&amp;Rename</source>
<translation>é‡å‘½å(&amp;R)</translation>
</message>
@@ -1543,13 +1547,13 @@ Please verify the correct file name was given.</source>
</message>
<message>
<location filename="../src/gui/dialogs/qfiledialog.cpp" line="+6"/>
- <location line="+623"/>
+ <location line="+648"/>
<source>Directory:</source>
<translation>目录:</translation>
</message>
<message>
- <location line="+773"/>
- <location line="+851"/>
+ <location line="+794"/>
+ <location line="+862"/>
<source>%1
Directory not found.
Please verify the correct directory name was given.</source>
@@ -1558,7 +1562,7 @@ Please verify the correct directory name was given.</source>
请核实已给定正确目录å。</translation>
</message>
<message>
- <location line="-217"/>
+ <location line="-218"/>
<source>&apos;%1&apos; is write protected.
Do you want to delete it anyway?</source>
<translation>“%1“是写ä¿æŠ¤çš„。
@@ -1575,17 +1579,17 @@ Do you want to delete it anyway?</source>
<translation>ä¸èƒ½åˆ é™¤ç›®å½•ã€‚</translation>
</message>
<message>
- <location line="+406"/>
+ <location line="+407"/>
<source>Recent Places</source>
<translation>最近的地方</translation>
</message>
<message>
- <location line="-2493"/>
+ <location line="-2550"/>
<source>Save As</source>
<translation>å¦å­˜ä¸º</translation>
</message>
<message>
- <location filename="../src/gui/itemviews/qfileiconprovider.cpp" line="+381"/>
+ <location filename="../src/gui/itemviews/qfileiconprovider.cpp" line="+411"/>
<source>Drive</source>
<translation>驱动器</translation>
</message>
@@ -1617,29 +1621,29 @@ Do you want to delete it anyway?</source>
<translation>å‰è¿›</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfiledialog.cpp" line="+1914"/>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="+1970"/>
<source>New Folder</source>
<translation>新建文件夹</translation>
</message>
<message>
- <location line="-1907"/>
+ <location line="-1963"/>
<source>&amp;New Folder</source>
<translation>新建文件夹(&amp;N)</translation>
</message>
<message>
- <location line="+631"/>
+ <location line="+656"/>
<location line="+38"/>
<source>&amp;Choose</source>
<translation>选择(&amp;C)</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qsidebar.cpp" line="+388"/>
+ <location filename="../src/gui/dialogs/qsidebar.cpp" line="+418"/>
<source>Remove</source>
<translation>移除</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-662"/>
- <location line="+627"/>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-687"/>
+ <location line="+652"/>
<source>File &amp;name:</source>
<translation>文件å称(&amp;N):</translation>
</message>
@@ -1656,7 +1660,7 @@ Do you want to delete it anyway?</source>
<translation>创建新文件夹</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfiledialog_win.cpp" line="+130"/>
+ <location filename="../src/gui/dialogs/qfiledialog_win.cpp" line="+160"/>
<source>All Files (*.*)</source>
<translation>所有文件 (*.*)</translation>
</message>
@@ -1664,7 +1668,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QFileSystemModel</name>
<message>
- <location filename="../src/gui/dialogs/qfilesystemmodel.cpp" line="+707"/>
+ <location filename="../src/gui/dialogs/qfilesystemmodel.cpp" line="+744"/>
<source>%1 TB</source>
<translation>%1 TB</translation>
</message>
@@ -1726,7 +1730,7 @@ Do you want to delete it anyway?</source>
<translation>日期被修改</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfilesystemmodel_p.h" line="+204"/>
+ <location filename="../src/gui/dialogs/qfilesystemmodel_p.h" line="+234"/>
<source>My Computer</source>
<translation>我的计算机</translation>
</message>
@@ -1739,7 +1743,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QFontDatabase</name>
<message>
- <location filename="../src/gui/text/qfontdatabase.cpp" line="+60"/>
+ <location filename="../src/gui/text/qfontdatabase.cpp" line="+90"/>
<location line="+1176"/>
<source>Normal</source>
<translation>普通</translation>
@@ -1956,7 +1960,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QFontDialog</name>
<message>
- <location filename="../src/gui/dialogs/qfontdialog.cpp" line="+742"/>
+ <location filename="../src/gui/dialogs/qfontdialog.cpp" line="+772"/>
<source>&amp;Font</source>
<translation>字体(&amp;F)</translation>
</message>
@@ -2005,8 +2009,8 @@ Do you want to delete it anyway?</source>
<context>
<name>QFtp</name>
<message>
- <location filename="../src/network/access/qftp.cpp" line="+796"/>
- <location filename="../src/qt3support/network/q3ftp.cpp" line="+653"/>
+ <location filename="../src/network/access/qftp.cpp" line="+826"/>
+ <location filename="../src/qt3support/network/q3ftp.cpp" line="+683"/>
<source>Not connected</source>
<translation>没有连接</translation>
</message>
@@ -2151,7 +2155,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QHostInfo</name>
<message>
- <location filename="../src/network/kernel/qhostinfo_p.h" line="+153"/>
+ <location filename="../src/network/kernel/qhostinfo_p.h" line="+183"/>
<source>Unknown error</source>
<translation>未知的错误</translation>
</message>
@@ -2159,11 +2163,11 @@ Do you want to delete it anyway?</source>
<context>
<name>QHostInfoAgent</name>
<message>
- <location filename="../src/network/kernel/qhostinfo_unix.cpp" line="+148"/>
+ <location filename="../src/network/kernel/qhostinfo_unix.cpp" line="+178"/>
<location line="+9"/>
<location line="+64"/>
<location line="+31"/>
- <location filename="../src/network/kernel/qhostinfo_win.cpp" line="+150"/>
+ <location filename="../src/network/kernel/qhostinfo_win.cpp" line="+180"/>
<location line="+9"/>
<location line="+40"/>
<location line="+27"/>
@@ -2189,21 +2193,21 @@ Do you want to delete it anyway?</source>
<context>
<name>QHttp</name>
<message>
- <location filename="../src/network/access/qhttp.cpp" line="+1544"/>
- <location line="+816"/>
- <location filename="../src/qt3support/network/q3http.cpp" line="+1130"/>
+ <location filename="../src/network/access/qhttp.cpp" line="+1574"/>
+ <location line="+820"/>
+ <location filename="../src/qt3support/network/q3http.cpp" line="+1160"/>
<location line="+567"/>
<source>Unknown error</source>
<translation>未知的错误</translation>
</message>
<message>
- <location line="-564"/>
+ <location line="-568"/>
<location filename="../src/qt3support/network/q3http.cpp" line="-370"/>
<source>Request aborted</source>
<translation>请求被放弃了</translation>
</message>
<message>
- <location line="+575"/>
+ <location line="+579"/>
<location filename="../src/qt3support/network/q3http.cpp" line="+381"/>
<source>No server set to connect to</source>
<translation>没有设置è¦è¿žæŽ¥çš„æœåŠ¡å™¨</translation>
@@ -2221,18 +2225,23 @@ Do you want to delete it anyway?</source>
<translation>æœåŠ¡å™¨å¼‚常地关闭了连接</translation>
</message>
<message>
- <location line="+357"/>
+ <location line="+179"/>
+ <source>Unknown authentication method</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+183"/>
<source>Error writing response to device</source>
<translation>å‘设备中进行写回å¤æ—¶å‘生错误</translation>
</message>
<message>
- <location filename="../src/network/access/qhttpnetworkconnection.cpp" line="+1712"/>
+ <location filename="../src/network/access/qhttpnetworkconnection.cpp" line="+876"/>
<location filename="../src/qt3support/network/q3http.cpp" line="+38"/>
<source>Connection refused</source>
<translation>连接被拒ç»</translation>
</message>
<message>
- <location filename="../src/network/access/qhttp.cpp" line="-299"/>
+ <location filename="../src/network/access/qhttp.cpp" line="-304"/>
<location filename="../src/network/access/qhttpnetworkconnection.cpp" line="-4"/>
<location filename="../src/qt3support/network/q3http.cpp" line="+3"/>
<source>Host %1 not found</source>
@@ -2253,7 +2262,7 @@ Do you want to delete it anyway?</source>
<translation>无效的HTTPå“应头</translation>
</message>
<message>
- <location line="+120"/>
+ <location line="+125"/>
<location line="+48"/>
<location filename="../src/qt3support/network/q3http.cpp" line="+40"/>
<location line="+47"/>
@@ -2302,7 +2311,7 @@ Do you want to delete it anyway?</source>
<translation>需è¦è®¤è¯</translation>
</message>
<message>
- <location line="-133"/>
+ <location line="-138"/>
<source>Connection refused (or timed out)</source>
<translation>连接被拒ç»(或者超时)</translation>
</message>
@@ -2332,7 +2341,7 @@ Do you want to delete it anyway?</source>
<translation>SSL æ¡æ‰‹å¤±è´¥</translation>
</message>
<message>
- <location filename="../src/network/access/qhttp.cpp" line="-2259"/>
+ <location filename="../src/network/access/qhttp.cpp" line="-2263"/>
<source>HTTPS connection requested but SSL support not compiled in</source>
<translation>HTTPS è¿žæŽ¥éœ€è¦ SSL,但它没有被编译进æ¥</translation>
</message>
@@ -2388,7 +2397,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QIBaseDriver</name>
<message>
- <location filename="../src/sql/drivers/ibase/qsql_ibase.cpp" line="+1378"/>
+ <location filename="../src/sql/drivers/ibase/qsql_ibase.cpp" line="+1428"/>
<source>Error opening database</source>
<translation>打开数æ®åº“错误</translation>
</message>
@@ -2411,7 +2420,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QIBaseResult</name>
<message>
- <location line="-1077"/>
+ <location line="-1097"/>
<source>Unable to create BLOB</source>
<translation>ä¸èƒ½åˆ›å»ºBLOB</translation>
</message>
@@ -2431,7 +2440,7 @@ Do you want to delete it anyway?</source>
<translation>ä¸èƒ½è¯»å–BLOB</translation>
</message>
<message>
- <location line="+124"/>
+ <location line="+125"/>
<location line="+189"/>
<source>Could not find array</source>
<translation>ä¸èƒ½æ‰¾åˆ°æ•°ç»„</translation>
@@ -2501,7 +2510,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QIODevice</name>
<message>
- <location filename="../src/corelib/global/qglobal.cpp" line="+1830"/>
+ <location filename="../src/corelib/global/qglobal.cpp" line="+1869"/>
<source>Permission denied</source>
<translation>æƒé™è¢«æ‹’ç»</translation>
</message>
@@ -2521,7 +2530,7 @@ Do you want to delete it anyway?</source>
<translation>设备上没有空间了</translation>
</message>
<message>
- <location filename="../src/corelib/io/qiodevice.cpp" line="+1506"/>
+ <location filename="../src/corelib/io/qiodevice.cpp" line="+1536"/>
<source>Unknown error</source>
<translation>未知的错误</translation>
</message>
@@ -2529,7 +2538,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QInputContext</name>
<message>
- <location filename="../src/gui/inputmethod/qinputcontextfactory.cpp" line="+212"/>
+ <location filename="../src/gui/inputmethod/qinputcontextfactory.cpp" line="+242"/>
<source>XIM</source>
<translation>XIM</translation>
</message>
@@ -2552,7 +2561,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QInputDialog</name>
<message>
- <location filename="../src/gui/dialogs/qinputdialog.cpp" line="+193"/>
+ <location filename="../src/gui/dialogs/qinputdialog.cpp" line="+223"/>
<source>Enter a value:</source>
<translation>输入一个值:</translation>
</message>
@@ -2572,7 +2581,7 @@ Do you want to delete it anyway?</source>
<translation type="obsolete">QLibrary::resolve_sys: 符å·â€œ%1â€åœ¨%2(%3)没有被定义</translation>
</message>
<message>
- <location filename="../src/corelib/plugin/qlibrary.cpp" line="+348"/>
+ <location filename="../src/corelib/plugin/qlibrary.cpp" line="+378"/>
<source>Could not mmap &apos;%1&apos;: %2</source>
<translation>ä¸èƒ½æ˜ å°„â€%1“:%2</translation>
</message>
@@ -2603,7 +2612,7 @@ Do you want to delete it anyway?</source>
</message>
<message>
<location line="-377"/>
- <location filename="../src/corelib/plugin/qpluginloader.cpp" line="+250"/>
+ <location filename="../src/corelib/plugin/qpluginloader.cpp" line="+280"/>
<source>The shared library was not found.</source>
<translation>共享库没有被找到。</translation>
</message>
@@ -2618,8 +2627,8 @@ Do you want to delete it anyway?</source>
<translation>æ’件“%1“使用了ä¸å…¼å®¹çš„Qt库。(ä¸èƒ½æ··åˆä½¿ç”¨åº“的调试版本和å‘布版本。)</translation>
</message>
<message>
- <location filename="../src/corelib/plugin/qlibrary_unix.cpp" line="+179"/>
- <location filename="../src/corelib/plugin/qlibrary_win.cpp" line="+69"/>
+ <location filename="../src/corelib/plugin/qlibrary_unix.cpp" line="+209"/>
+ <location filename="../src/corelib/plugin/qlibrary_win.cpp" line="+99"/>
<source>Cannot load library %1: %2</source>
<translation>无法加载库%1:%2</translation>
</message>
@@ -2639,7 +2648,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QLineEdit</name>
<message>
- <location filename="../src/gui/widgets/qlineedit.cpp" line="+2649"/>
+ <location filename="../src/gui/widgets/qlineedit.cpp" line="+2680"/>
<source>&amp;Undo</source>
<translation>撤消(&amp;U)</translation>
</message>
@@ -2677,8 +2686,8 @@ Do you want to delete it anyway?</source>
<context>
<name>QLocalServer</name>
<message>
- <location filename="../src/network/socket/qlocalserver.cpp" line="+196"/>
- <location filename="../src/network/socket/qlocalserver_unix.cpp" line="+201"/>
+ <location filename="../src/network/socket/qlocalserver.cpp" line="+226"/>
+ <location filename="../src/network/socket/qlocalserver_unix.cpp" line="+231"/>
<source>%1: Name error</source>
<translation>%1: å称错误</translation>
</message>
@@ -2694,7 +2703,7 @@ Do you want to delete it anyway?</source>
</message>
<message>
<location line="+5"/>
- <location filename="../src/network/socket/qlocalserver_win.cpp" line="+127"/>
+ <location filename="../src/network/socket/qlocalserver_win.cpp" line="+158"/>
<source>%1: Unknown error %2</source>
<translation>%1:未知错误 %2</translation>
</message>
@@ -2702,8 +2711,8 @@ Do you want to delete it anyway?</source>
<context>
<name>QLocalSocket</name>
<message>
- <location filename="../src/network/socket/qlocalsocket_tcp.cpp" line="+102"/>
- <location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+104"/>
+ <location filename="../src/network/socket/qlocalsocket_tcp.cpp" line="+132"/>
+ <location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+134"/>
<source>%1: Connection refused</source>
<translation>%1:连接被拒ç»</translation>
</message>
@@ -2716,7 +2725,7 @@ Do you want to delete it anyway?</source>
<message>
<location line="+3"/>
<location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+3"/>
- <location filename="../src/network/socket/qlocalsocket_win.cpp" line="+50"/>
+ <location filename="../src/network/socket/qlocalsocket_win.cpp" line="+80"/>
<location line="+43"/>
<source>%1: Invalid name</source>
<translation>%1:无效å称</translation>
@@ -2773,7 +2782,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QMYSQLDriver</name>
<message>
- <location filename="../src/sql/drivers/mysql/qsql_mysql.cpp" line="+1200"/>
+ <location filename="../src/sql/drivers/mysql/qsql_mysql.cpp" line="+1231"/>
<source>Unable to open database &apos;</source>
<translation>ä¸èƒ½æ‰“开数æ®åº“</translation>
</message>
@@ -2783,7 +2792,7 @@ Do you want to delete it anyway?</source>
<translation>ä¸èƒ½è¿žæŽ¥</translation>
</message>
<message>
- <location line="+123"/>
+ <location line="+127"/>
<source>Unable to begin transaction</source>
<translation>ä¸èƒ½å¼€å§‹äº‹åŠ¡</translation>
</message>
@@ -2801,7 +2810,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QMYSQLResult</name>
<message>
- <location line="-917"/>
+ <location line="-922"/>
<source>Unable to fetch data</source>
<translation>ä¸èƒ½èŽ·å–æ•°æ®</translation>
</message>
@@ -2816,7 +2825,7 @@ Do you want to delete it anyway?</source>
<translation>ä¸èƒ½å­˜å‚¨ç»“æžœ</translation>
</message>
<message>
- <location line="+189"/>
+ <location line="+190"/>
<location line="+8"/>
<source>Unable to prepare statement</source>
<translation>ä¸èƒ½å‡†å¤‡è¯­å¥</translation>
@@ -2861,7 +2870,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QMdiArea</name>
<message>
- <location filename="../src/gui/widgets/qmdiarea.cpp" line="+260"/>
+ <location filename="../src/gui/widgets/qmdiarea.cpp" line="+290"/>
<source>(Untitled)</source>
<translation>(未命åçš„)</translation>
</message>
@@ -2869,7 +2878,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QMdiSubWindow</name>
<message>
- <location filename="../src/gui/widgets/qmdisubwindow.cpp" line="+250"/>
+ <location filename="../src/gui/widgets/qmdisubwindow.cpp" line="+280"/>
<source>%1 - [%2]</source>
<translation>%1 - [%2]</translation>
</message>
@@ -2962,7 +2971,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QMenu</name>
<message>
- <location filename="../src/plugins/accessible/widgets/qaccessiblemenu.cpp" line="+127"/>
+ <location filename="../src/plugins/accessible/widgets/qaccessiblemenu.cpp" line="+157"/>
<location line="+225"/>
<source>Close</source>
<translation>关闭</translation>
@@ -3035,7 +3044,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QMessageBox</name>
<message>
- <location filename="../src/gui/dialogs/qmessagebox.cpp" line="-1105"/>
+ <location filename="../src/gui/dialogs/qmessagebox.cpp" line="-1111"/>
<source>Help</source>
<translation>帮助</translation>
</message>
@@ -3048,17 +3057,16 @@ Do you want to delete it anyway?</source>
<translation>确定</translation>
</message>
<message>
- <location line="+503"/>
+ <location line="+509"/>
<source>About Qt</source>
<translation>关于Qt</translation>
</message>
<message>
- <location line="-15"/>
<source>&lt;p&gt;This program uses Qt version %1.&lt;/p&gt;</source>
- <translation>&lt;p&gt;这个程åºä½¿ç”¨çš„是Qt %1版。&lt;/p&gt;</translation>
+ <translation type="obsolete">&lt;p&gt;这个程åºä½¿ç”¨çš„是Qt %1版。&lt;/p&gt;</translation>
</message>
<message>
- <location line="-1584"/>
+ <location line="-1605"/>
<source>Show Details...</source>
<translation>显示细节……</translation>
</message>
@@ -3069,13 +3077,16 @@ Do you want to delete it anyway?</source>
</message>
<message>
<location line="+1570"/>
+ <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://www.qtsoftware.com/products/licensing&quot;&gt;www.qtsoftware.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://www.qtsoftware.com/qt/&quot;&gt;www.qtsoftware.com/qt&lt;/a&gt; for more information.&lt;/p&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<source>&lt;h3&gt;About Qt&lt;/h3&gt;%1&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 a Nokia product. See &lt;a href=&quot;http://qtsoftware.com/qt/&quot;&gt;qtsoftware.com/qt/&lt;/a&gt; for more information.&lt;/p&gt;</source>
- <translation>&lt;h3&gt;关于Qt&lt;/h3&gt;%1&lt;p&gt;Qt是一个用于跨平å°åº”用程åºå¼€å‘çš„C++工具包。&lt;/p&gt;&lt;p&gt;对于MS&amp;nbsp;Windowsã€Mac&amp;nbsp;OS&amp;nbsp;Xã€Linux和所有主æµå•†ä¸šUnix,Qtæ供了å•ä¸€æºç¨‹åºçš„å¯ç§»æ¤æ€§ã€‚Qt也有用于嵌入å¼Linuxå’ŒWindows CE的版本。&lt;/p&gt;&lt;p&gt;Qt是Nokia的产å“。有关更多信æ¯ï¼Œè¯·å‚考&lt;a href=&quot;http://qtsoftware.com/qt/&quot;&gt;qtsoftware.com/qt/&lt;/a&gt;。&lt;/p&gt;</translation>
+ <translation type="obsolete">&lt;h3&gt;关于Qt&lt;/h3&gt;%1&lt;p&gt;Qt是一个用于跨平å°åº”用程åºå¼€å‘çš„C++工具包。&lt;/p&gt;&lt;p&gt;对于MS&amp;nbsp;Windowsã€Mac&amp;nbsp;OS&amp;nbsp;Xã€Linux和所有主æµå•†ä¸šUnix,Qtæ供了å•ä¸€æºç¨‹åºçš„å¯ç§»æ¤æ€§ã€‚Qt也有用于嵌入å¼Linuxå’ŒWindows CE的版本。&lt;/p&gt;&lt;p&gt;Qt是Nokia的产å“。有关更多信æ¯ï¼Œè¯·å‚考&lt;a href=&quot;http://qtsoftware.com/qt/&quot;&gt;qtsoftware.com/qt/&lt;/a&gt;。&lt;/p&gt;</translation>
</message>
<message>
- <location line="+15"/>
<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://qtsoftware.com/company/model/&quot;&gt;qtsoftware.com/company/model/&lt;/a&gt; for an overview of Qt licensing.&lt;/p&gt;</source>
- <translation>&lt;p&gt;这个程åºä½¿ç”¨äº†Qt %1å¼€æºç‰ˆæœ¬ã€‚&lt;/p&gt;&lt;p&gt;Qtå¼€æºç‰ˆæœ¬åªç”¨äºŽå¼€æºåº”用程åºçš„å¼€å‘。如果è¦å¼€å‘ç§æœ‰ï¼ˆé—­æºï¼‰è½¯ä»¶ï¼Œä½ éœ€è¦ä¸€ä¸ªå•†ä¸šçš„Qtå议。&lt;/p&gt;&lt;p&gt;有关Qtå议的概览,请å‚考&lt;a href=&quot;http://qtsoftware.com/company/model/&quot;&gt;qtsoftware.com/company/model/&lt;/a&gt;。&lt;/p&gt;</translation>
+ <translation type="obsolete">&lt;p&gt;这个程åºä½¿ç”¨äº†Qt %1å¼€æºç‰ˆæœ¬ã€‚&lt;/p&gt;&lt;p&gt;Qtå¼€æºç‰ˆæœ¬åªç”¨äºŽå¼€æºåº”用程åºçš„å¼€å‘。如果è¦å¼€å‘ç§æœ‰ï¼ˆé—­æºï¼‰è½¯ä»¶ï¼Œä½ éœ€è¦ä¸€ä¸ªå•†ä¸šçš„Qtå议。&lt;/p&gt;&lt;p&gt;有关Qtå议的概览,请å‚考&lt;a href=&quot;http://qtsoftware.com/company/model/&quot;&gt;qtsoftware.com/company/model/&lt;/a&gt;。&lt;/p&gt;</translation>
</message>
<message>
<source>&lt;h3&gt;About Qt&lt;/h3&gt;%1&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 Embedded.&lt;/p&gt;&lt;p&gt;Qt is a Trolltech product. See &lt;a href=&quot;http://qtsoftware.com/qt/&quot;&gt;qtsoftware.com/qt/&lt;/a&gt; for more information.&lt;/p&gt;</source>
@@ -3085,7 +3096,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QMultiInputContext</name>
<message>
- <location filename="../src/plugins/inputmethods/imsw-multi/qmultiinputcontext.cpp" line="+58"/>
+ <location filename="../src/plugins/inputmethods/imsw-multi/qmultiinputcontext.cpp" line="+88"/>
<source>Select IM</source>
<translation>选择输入法</translation>
</message>
@@ -3093,7 +3104,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QMultiInputContextPlugin</name>
<message>
- <location filename="../src/plugins/inputmethods/imsw-multi/qmultiinputcontextplugin.cpp" line="+65"/>
+ <location filename="../src/plugins/inputmethods/imsw-multi/qmultiinputcontextplugin.cpp" line="+95"/>
<source>Multiple input method switcher</source>
<translation>多输入法切æ¢å™¨</translation>
</message>
@@ -3106,7 +3117,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QNativeSocketEngine</name>
<message>
- <location filename="../src/network/socket/qnativesocketengine.cpp" line="+176"/>
+ <location filename="../src/network/socket/qnativesocketengine.cpp" line="+206"/>
<source>The remote host closed the connection</source>
<translation>远端主机关闭了这个连接</translation>
</message>
@@ -3239,7 +3250,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QNetworkAccessCacheBackend</name>
<message>
- <location filename="../src/network/access/qnetworkaccesscachebackend.cpp" line="+35"/>
+ <location filename="../src/network/access/qnetworkaccesscachebackend.cpp" line="+65"/>
<source>Error opening %1</source>
<translation>打开%1å‘生错误</translation>
</message>
@@ -3247,7 +3258,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QNetworkAccessFileBackend</name>
<message>
- <location filename="../src/network/access/qnetworkaccessfilebackend.cpp" line="+69"/>
+ <location filename="../src/network/access/qnetworkaccessfilebackend.cpp" line="+99"/>
<source>Request for opening non-local file %1</source>
<translation>正在打开éžæœ¬åœ°æ–‡ä»¶ %1 的请求</translation>
</message>
@@ -3275,7 +3286,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QNetworkAccessFtpBackend</name>
<message>
- <location filename="../src/network/access/qnetworkaccessftpbackend.cpp" line="+135"/>
+ <location filename="../src/network/access/qnetworkaccessftpbackend.cpp" line="+165"/>
<source>No suitable proxy found</source>
<translation>未找到åˆé€‚的代ç†</translation>
</message>
@@ -3285,7 +3296,7 @@ Do you want to delete it anyway?</source>
<translation>æ— æ³•è¯»å– %1:是一个目录</translation>
</message>
<message>
- <location line="+131"/>
+ <location line="+130"/>
<source>Logging in to %1 failed: authentication required</source>
<translation>登入 %1 失败:需è¦éªŒè¯</translation>
</message>
@@ -3303,7 +3314,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QNetworkAccessHttpBackend</name>
<message>
- <location filename="../src/network/access/qnetworkaccesshttpbackend.cpp" line="+565"/>
+ <location filename="../src/network/access/qnetworkaccesshttpbackend.cpp" line="+597"/>
<source>No suitable proxy found</source>
<translation>未找到åˆé€‚的代ç†</translation>
</message>
@@ -3316,7 +3327,7 @@ Do you want to delete it anyway?</source>
<translation>下载 %1 错误 - æœåŠ¡å™¨å›žå¤ï¼š%2</translation>
</message>
<message>
- <location filename="../src/network/access/qnetworkreplyimpl.cpp" line="+37"/>
+ <location filename="../src/network/access/qnetworkreplyimpl.cpp" line="+68"/>
<source>Protocol &quot;%1&quot; is unknown</source>
<translation>å议“%1â€æ˜¯æœªçŸ¥çš„</translation>
</message>
@@ -3324,7 +3335,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QNetworkReplyImpl</name>
<message>
- <location line="+422"/>
+ <location line="+432"/>
<location line="+22"/>
<source>Operation canceled</source>
<translation>æ“作被å–消</translation>
@@ -3333,7 +3344,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QOCIDriver</name>
<message>
- <location filename="../src/sql/drivers/oci/qsql_oci.cpp" line="+2027"/>
+ <location filename="../src/sql/drivers/oci/qsql_oci.cpp" line="+2069"/>
<source>Unable to logon</source>
<translation>ä¸èƒ½ç™»å½•</translation>
</message>
@@ -3362,7 +3373,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QOCIResult</name>
<message>
- <location line="-976"/>
+ <location line="-963"/>
<location line="+161"/>
<location line="+15"/>
<source>Unable to bind column for batch execute</source>
@@ -3389,18 +3400,16 @@ Do you want to delete it anyway?</source>
<translation>ä¸èƒ½å‡†å¤‡è¯­å¥</translation>
</message>
<message>
- <location line="+29"/>
- <location line="+37"/>
+ <location line="+36"/>
<source>Unable to bind value</source>
<translation>ä¸èƒ½ç»‘定值</translation>
</message>
<message>
- <location line="-20"/>
<source>Unable to execute select statement</source>
- <translation>ä¸èƒ½æ‰§è¡Œé€‰æ‹©è¯­å¥</translation>
+ <translation type="obsolete">ä¸èƒ½æ‰§è¡Œé€‰æ‹©è¯­å¥</translation>
</message>
<message>
- <location line="+32"/>
+ <location line="+19"/>
<source>Unable to execute statement</source>
<translation>ä¸èƒ½æ‰§è¡Œè¯­å¥</translation>
</message>
@@ -3408,7 +3417,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QODBCDriver</name>
<message>
- <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="+1657"/>
+ <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="+1785"/>
<source>Unable to connect</source>
<translation>ä¸èƒ½è¿žæŽ¥</translation>
</message>
@@ -3418,7 +3427,7 @@ Do you want to delete it anyway?</source>
<translation>ä¸èƒ½è¿žæŽ¥â€”驱动程åºä¸æ”¯æŒæ‰€æœ‰åŠŸèƒ½</translation>
</message>
<message>
- <location line="+234"/>
+ <location line="+242"/>
<source>Unable to disable autocommit</source>
<translation>ä¸èƒ½ç¦æ­¢è‡ªåŠ¨æ交</translation>
</message>
@@ -3441,19 +3450,19 @@ Do you want to delete it anyway?</source>
<context>
<name>QODBCResult</name>
<message>
- <location line="-1204"/>
+ <location line="-1218"/>
<location line="+349"/>
<source>QODBCResult::reset: Unable to set &apos;SQL_CURSOR_STATIC&apos; as statement attribute. Please check your ODBC driver configuration</source>
<translation>QODBCResult::reset: ä¸èƒ½æŠŠâ€œSQL_CURSOR_STATICâ€è®¾ç½®ä¸ºè¯­å¥å±žæ€§ã€‚请检查你的ODBC驱动程åºè®¾ç½®ã€‚</translation>
</message>
<message>
<location line="-332"/>
- <location line="+625"/>
+ <location line="+626"/>
<source>Unable to execute statement</source>
<translation>ä¸èƒ½æ‰§è¡Œè¯­å¥</translation>
</message>
<message>
- <location line="-554"/>
+ <location line="-555"/>
<source>Unable to fetch next</source>
<translation>ä¸èƒ½èŽ·å–下一个</translation>
</message>
@@ -3463,19 +3472,19 @@ Do you want to delete it anyway?</source>
<translation>ä¸èƒ½å‡†å¤‡è¯­å¥</translation>
</message>
<message>
- <location line="+267"/>
+ <location line="+268"/>
<source>Unable to bind variable</source>
<translation>ä¸èƒ½å¸®å®šå˜é‡</translation>
</message>
<message>
<location filename="../src/sql/drivers/db2/qsql_db2.cpp" line="+194"/>
- <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="-474"/>
- <location line="+577"/>
+ <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="-475"/>
+ <location line="+578"/>
<source>Unable to fetch last</source>
<translation>ä¸èƒ½èŽ·å–最åŽä¸€ä¸ª</translation>
</message>
<message>
- <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="-671"/>
+ <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="-672"/>
<source>Unable to fetch</source>
<translation>ä¸èƒ½èŽ·å–</translation>
</message>
@@ -3493,12 +3502,12 @@ Do you want to delete it anyway?</source>
<context>
<name>QObject</name>
<message>
- <location filename="../src/gui/util/qdesktopservices_mac.cpp" line="+134"/>
+ <location filename="../src/gui/util/qdesktopservices_mac.cpp" line="+165"/>
<source>Home</source>
<translation>家</translation>
</message>
<message>
- <location filename="../src/network/access/qnetworkaccessdatabackend.cpp" line="+44"/>
+ <location filename="../src/network/access/qnetworkaccessdatabackend.cpp" line="+74"/>
<source>Operation not supported on %1</source>
<translation>在 %1 上ä¸è¢«æ”¯æŒçš„æ“作</translation>
</message>
@@ -3508,7 +3517,7 @@ Do you want to delete it anyway?</source>
<translation>无效的 URI:%1</translation>
</message>
<message>
- <location filename="../src/network/access/qnetworkaccessdebugpipebackend.cpp" line="+145"/>
+ <location filename="../src/network/access/qnetworkaccessdebugpipebackend.cpp" line="+175"/>
<source>Write error writing to %1: %2</source>
<translation>写入 %1 错误:%2</translation>
</message>
@@ -3533,7 +3542,7 @@ Do you want to delete it anyway?</source>
<translation>å议错误:收到了大å°ä¸º 0 的包</translation>
</message>
<message>
- <location filename="../src/network/kernel/qhostinfo.cpp" line="+147"/>
+ <location filename="../src/network/kernel/qhostinfo.cpp" line="+177"/>
<location line="+57"/>
<source>No host name given</source>
<translation>未指定主机å</translation>
@@ -3542,7 +3551,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QPPDOptionsModel</name>
<message>
- <location filename="../src/gui/dialogs/qprintdialog_unix.cpp" line="+1165"/>
+ <location filename="../src/gui/dialogs/qprintdialog_unix.cpp" line="+1195"/>
<source>Name</source>
<translation>å称</translation>
</message>
@@ -3555,7 +3564,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QPSQLDriver</name>
<message>
- <location filename="../src/sql/drivers/psql/qsql_psql.cpp" line="+732"/>
+ <location filename="../src/sql/drivers/psql/qsql_psql.cpp" line="+763"/>
<source>Unable to connect</source>
<translation>ä¸èƒ½è¿žæŽ¥</translation>
</message>
@@ -3575,7 +3584,7 @@ Do you want to delete it anyway?</source>
<translation>ä¸èƒ½å›žæ»šäº‹åŠ¡</translation>
</message>
<message>
- <location line="+336"/>
+ <location line="+358"/>
<source>Unable to subscribe</source>
<translation>ä¸èƒ½è®¢é˜…</translation>
</message>
@@ -3588,12 +3597,12 @@ Do you want to delete it anyway?</source>
<context>
<name>QPSQLResult</name>
<message>
- <location line="-1035"/>
+ <location line="-1058"/>
<source>Unable to create query</source>
<translation>ä¸èƒ½åˆ›å»ºæŸ¥è¯¢</translation>
</message>
<message>
- <location line="+373"/>
+ <location line="+374"/>
<source>Unable to prepare statement</source>
<translation>ä¸èƒ½å‡†å¤‡è¯­å¥</translation>
</message>
@@ -3601,7 +3610,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QPageSetupWidget</name>
<message>
- <location filename="../src/gui/dialogs/qpagesetupdialog_unix.cpp" line="+274"/>
+ <location filename="../src/gui/dialogs/qpagesetupdialog_unix.cpp" line="+304"/>
<source>Centimeters (cm)</source>
<translation>厘米 (cm)</translation>
</message>
@@ -3717,7 +3726,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QPrintDialog</name>
<message>
- <location filename="../src/gui/painting/qprinterinfo_unix.cpp" line="+68"/>
+ <location filename="../src/gui/painting/qprinterinfo_unix.cpp" line="+98"/>
<source>locally connected</source>
<translation>本地已ç»è¿žæŽ¥çš„</translation>
</message>
@@ -3734,7 +3743,7 @@ Do you want to delete it anyway?</source>
<translation>未知的</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qprintdialog_qws.cpp" line="+345"/>
+ <location filename="../src/gui/dialogs/qprintdialog_qws.cpp" line="+375"/>
<source>Print all</source>
<translation>打å°å…¨éƒ¨</translation>
</message>
@@ -3899,12 +3908,12 @@ Do you want to delete it anyway?</source>
<translation>美国普通10å·ä¿¡å° (105 x 241 毫米)</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qprintdialog_win.cpp" line="+238"/>
+ <location filename="../src/gui/dialogs/qprintdialog_win.cpp" line="+268"/>
<source>OK</source>
<translation>确定</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qabstractprintdialog.cpp" line="+80"/>
+ <location filename="../src/gui/dialogs/qabstractprintdialog.cpp" line="+110"/>
<location line="+13"/>
<location filename="../src/gui/dialogs/qprintdialog_win.cpp" line="-2"/>
<source>Print</source>
@@ -4146,13 +4155,13 @@ Please choose a different file name.</source>
<context>
<name>QPrintPreviewDialog</name>
<message>
- <location filename="../src/gui/dialogs/qabstractpagesetupdialog.cpp" line="+38"/>
+ <location filename="../src/gui/dialogs/qabstractpagesetupdialog.cpp" line="+68"/>
<location line="+12"/>
<source>Page Setup</source>
<translation>页é¢è®¾ç½®</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qprintpreviewdialog.cpp" line="+222"/>
+ <location filename="../src/gui/dialogs/qprintpreviewdialog.cpp" line="+252"/>
<source>%1%</source>
<translation>%1%</translation>
</message>
@@ -4419,8 +4428,8 @@ Please choose a different file name.</source>
<context>
<name>QProcess</name>
<message>
- <location filename="../src/corelib/io/qprocess_unix.cpp" line="+445"/>
- <location filename="../src/corelib/io/qprocess_win.cpp" line="+117"/>
+ <location filename="../src/corelib/io/qprocess_unix.cpp" line="+475"/>
+ <location filename="../src/corelib/io/qprocess_win.cpp" line="+147"/>
<source>Could not open input redirection for reading</source>
<translation>无法打开用于读å–的输入é‡å®šå‘</translation>
</message>
@@ -4449,7 +4458,7 @@ Please choose a different file name.</source>
<translation>进程处ç†è¶…æ—¶</translation>
</message>
<message>
- <location filename="../src/corelib/io/qprocess.cpp" line="+503"/>
+ <location filename="../src/corelib/io/qprocess.cpp" line="+533"/>
<location line="+52"/>
<location filename="../src/corelib/io/qprocess_win.cpp" line="-211"/>
<location line="+50"/>
@@ -4469,6 +4478,11 @@ Please choose a different file name.</source>
<translation>进程已崩溃</translation>
</message>
<message>
+ <location line="+912"/>
+ <source>No program defined</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<location filename="../src/corelib/io/qprocess_win.cpp" line="-341"/>
<source>Process failed to start</source>
<translation>å¯åŠ¨è¿›ç¨‹å¤±è´¥</translation>
@@ -4477,7 +4491,7 @@ Please choose a different file name.</source>
<context>
<name>QProgressDialog</name>
<message>
- <location filename="../src/gui/dialogs/qprogressdialog.cpp" line="+152"/>
+ <location filename="../src/gui/dialogs/qprogressdialog.cpp" line="+182"/>
<source>Cancel</source>
<translation>撤消</translation>
</message>
@@ -4501,7 +4515,7 @@ Please choose a different file name.</source>
<context>
<name>QRegExp</name>
<message>
- <location filename="../src/corelib/tools/qregexp.cpp" line="+34"/>
+ <location filename="../src/corelib/tools/qregexp.cpp" line="+64"/>
<source>no error occurred</source>
<translation>没有错误å‘生</translation>
</message>
@@ -4549,7 +4563,7 @@ Please choose a different file name.</source>
<context>
<name>QSQLite2Driver</name>
<message>
- <location filename="../src/sql/drivers/sqlite2/qsql_sqlite2.cpp" line="+353"/>
+ <location filename="../src/sql/drivers/sqlite2/qsql_sqlite2.cpp" line="+396"/>
<source>Error to open database</source>
<translation>打开数æ®åº“错误</translation>
</message>
@@ -4572,12 +4586,12 @@ Please choose a different file name.</source>
<context>
<name>QSQLite2Result</name>
<message>
- <location line="-310"/>
+ <location line="-323"/>
<source>Unable to fetch results</source>
<translation>ä¸èƒ½èŽ·å–结果</translation>
</message>
<message>
- <location line="+139"/>
+ <location line="+147"/>
<source>Unable to execute statement</source>
<translation>ä¸èƒ½æ‰§è¡Œè¯­å¥</translation>
</message>
@@ -4585,7 +4599,7 @@ Please choose a different file name.</source>
<context>
<name>QSQLiteDriver</name>
<message>
- <location filename="../src/sql/drivers/sqlite/qsql_sqlite.cpp" line="+498"/>
+ <location filename="../src/sql/drivers/sqlite/qsql_sqlite.cpp" line="+528"/>
<source>Error opening database</source>
<translation>打开数æ®åº“错误</translation>
</message>
@@ -4648,12 +4662,12 @@ Please choose a different file name.</source>
<context>
<name>QScrollBar</name>
<message>
- <location filename="../src/gui/widgets/qscrollbar.cpp" line="+419"/>
+ <location filename="../src/gui/widgets/qscrollbar.cpp" line="+448"/>
<source>Scroll here</source>
<translation>滚动到这里</translation>
</message>
<message>
- <location line="+3"/>
+ <location line="+2"/>
<source>Left edge</source>
<translation>左边缘</translation>
</message>
@@ -4663,7 +4677,7 @@ Please choose a different file name.</source>
<translation>顶部</translation>
</message>
<message>
- <location line="+2"/>
+ <location line="+1"/>
<source>Right edge</source>
<translation>å³è¾¹ç¼˜</translation>
</message>
@@ -4673,7 +4687,7 @@ Please choose a different file name.</source>
<translation>底部</translation>
</message>
<message>
- <location line="+3"/>
+ <location line="+2"/>
<source>Page left</source>
<translation>左一页</translation>
</message>
@@ -4684,7 +4698,7 @@ Please choose a different file name.</source>
<translation>上一页</translation>
</message>
<message>
- <location line="+2"/>
+ <location line="+1"/>
<source>Page right</source>
<translation>å³ä¸€é¡µ</translation>
</message>
@@ -4695,7 +4709,7 @@ Please choose a different file name.</source>
<translation>下一页</translation>
</message>
<message>
- <location line="+3"/>
+ <location line="+2"/>
<source>Scroll left</source>
<translation>å‘左滚动</translation>
</message>
@@ -4705,7 +4719,7 @@ Please choose a different file name.</source>
<translation>å‘上滚动</translation>
</message>
<message>
- <location line="+2"/>
+ <location line="+1"/>
<source>Scroll right</source>
<translation>å‘å³æ»šåŠ¨</translation>
</message>
@@ -4733,7 +4747,7 @@ Please choose a different file name.</source>
<context>
<name>QSharedMemory</name>
<message>
- <location filename="../src/corelib/kernel/qsharedmemory.cpp" line="+177"/>
+ <location filename="../src/corelib/kernel/qsharedmemory.cpp" line="+207"/>
<source>%1: unable to set key on lock</source>
<translation>%1:无法设置é”定的键</translation>
</message>
@@ -4744,7 +4758,7 @@ Please choose a different file name.</source>
</message>
<message>
<location line="+168"/>
- <location filename="../src/corelib/kernel/qsharedmemory_p.h" line="+118"/>
+ <location filename="../src/corelib/kernel/qsharedmemory_p.h" line="+148"/>
<source>%1: unable to lock</source>
<translation>%1:无法é”定</translation>
</message>
@@ -4754,8 +4768,8 @@ Please choose a different file name.</source>
<translation>%1:无法å–消é”定</translation>
</message>
<message>
- <location filename="../src/corelib/kernel/qsharedmemory_unix.cpp" line="+48"/>
- <location filename="../src/corelib/kernel/qsharedmemory_win.cpp" line="+57"/>
+ <location filename="../src/corelib/kernel/qsharedmemory_unix.cpp" line="+78"/>
+ <location filename="../src/corelib/kernel/qsharedmemory_win.cpp" line="+87"/>
<source>%1: permission denied</source>
<translation>%1:æƒé™è¢«æ‹’ç»</translation>
</message>
@@ -4833,7 +4847,7 @@ Please choose a different file name.</source>
<context>
<name>QShortcut</name>
<message>
- <location filename="../src/gui/kernel/qkeysequence.cpp" line="+343"/>
+ <location filename="../src/gui/kernel/qkeysequence.cpp" line="+373"/>
<source>Space</source>
<translation>空格</translation>
</message>
@@ -5418,7 +5432,7 @@ Please choose a different file name.</source>
<context>
<name>QSql</name>
<message>
- <location filename="../src/qt3support/sql/q3sqlmanager_p.cpp" line="+860"/>
+ <location filename="../src/qt3support/sql/q3sqlmanager_p.cpp" line="+890"/>
<source>Delete</source>
<translation>删除</translation>
</message>
@@ -5475,7 +5489,7 @@ Please choose a different file name.</source>
<context>
<name>QSslSocket</name>
<message>
- <location filename="../src/network/ssl/qsslsocket_openssl.cpp" line="+539"/>
+ <location filename="../src/network/ssl/qsslsocket_openssl.cpp" line="+569"/>
<source>Unable to write data: %1</source>
<translation>ä¸èƒ½å†™å…¥æ•°æ®ï¼š%1</translation>
</message>
@@ -5534,7 +5548,7 @@ Please choose a different file name.</source>
<name>QSystemSemaphore</name>
<message>
<location filename="../src/corelib/kernel/qsystemsemaphore_unix.cpp" line="-41"/>
- <location filename="../src/corelib/kernel/qsystemsemaphore_win.cpp" line="+36"/>
+ <location filename="../src/corelib/kernel/qsystemsemaphore_win.cpp" line="+66"/>
<source>%1: out of resources</source>
<translation>%1:资æºè€—尽了</translation>
</message>
@@ -5564,7 +5578,7 @@ Please choose a different file name.</source>
<context>
<name>QTDSDriver</name>
<message>
- <location filename="../src/sql/drivers/tds/qsql_tds.cpp" line="+552"/>
+ <location filename="../src/sql/drivers/tds/qsql_tds.cpp" line="+584"/>
<source>Unable to open connection</source>
<translation>ä¸èƒ½æ‰“开连接</translation>
</message>
@@ -5590,7 +5604,7 @@ Please choose a different file name.</source>
<context>
<name>QTcpServer</name>
<message>
- <location filename="../src/network/socket/qtcpserver.cpp" line="+252"/>
+ <location filename="../src/network/socket/qtcpserver.cpp" line="+282"/>
<source>Operation on socket is not supported</source>
<translation>socketæ“作ä¸è¢«æ”¯æŒ</translation>
</message>
@@ -5598,7 +5612,7 @@ Please choose a different file name.</source>
<context>
<name>QTextControl</name>
<message>
- <location filename="../src/gui/text/qtextcontrol.cpp" line="+1942"/>
+ <location filename="../src/gui/text/qtextcontrol.cpp" line="+1973"/>
<source>&amp;Undo</source>
<translation>撤消(&amp;U)</translation>
</message>
@@ -5656,7 +5670,7 @@ Please choose a different file name.</source>
<context>
<name>QUdpSocket</name>
<message>
- <location filename="../src/network/socket/qudpsocket.cpp" line="+139"/>
+ <location filename="../src/network/socket/qudpsocket.cpp" line="+169"/>
<source>This platform does not support IPv6</source>
<translation>这个平å°ä¸æ”¯æŒIPv6</translation>
</message>
@@ -5664,7 +5678,7 @@ Please choose a different file name.</source>
<context>
<name>QUndoGroup</name>
<message>
- <location filename="../src/gui/util/qundogroup.cpp" line="+356"/>
+ <location filename="../src/gui/util/qundogroup.cpp" line="+386"/>
<source>Undo</source>
<translation>撤销</translation>
</message>
@@ -5677,7 +5691,7 @@ Please choose a different file name.</source>
<context>
<name>QUndoModel</name>
<message>
- <location filename="../src/gui/util/qundoview.cpp" line="+71"/>
+ <location filename="../src/gui/util/qundoview.cpp" line="+101"/>
<source>&lt;empty&gt;</source>
<translation>&lt;空白&gt;</translation>
</message>
@@ -5685,7 +5699,7 @@ Please choose a different file name.</source>
<context>
<name>QUndoStack</name>
<message>
- <location filename="../src/gui/util/qundostack.cpp" line="+804"/>
+ <location filename="../src/gui/util/qundostack.cpp" line="+834"/>
<source>Undo</source>
<translation>撤销</translation>
</message>
@@ -5756,7 +5770,7 @@ Please choose a different file name.</source>
<context>
<name>QWebFrame</name>
<message>
- <location filename="../src/3rdparty/webkit/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp" line="+686"/>
+ <location filename="../src/3rdparty/webkit/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp" line="+692"/>
<source>Request cancelled</source>
<translation>请求被å–消了</translation>
</message>
@@ -6166,7 +6180,7 @@ Please choose a different file name.</source>
</translation>
</message>
<message>
- <location filename="../src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp" line="+1342"/>
+ <location filename="../src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp" line="+1322"/>
<source>JavaScript Alert - %1</source>
<translation>JavaScript警告 - %1</translation>
</message>
@@ -6242,6 +6256,11 @@ Please choose a different file name.</source>
</message>
<message>
<location line="+3"/>
+ <source>Select all</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
<source>Select to the next character</source>
<translation>选中到下一个字符</translation>
</message>
@@ -6310,11 +6329,21 @@ Please choose a different file name.</source>
<source>Delete to the end of the word</source>
<translation>删除到å•è¯å°¾</translation>
</message>
+ <message>
+ <location line="+33"/>
+ <source>Insert a new paragraph</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Insert a new line</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>QWhatsThisAction</name>
<message>
- <location filename="../src/gui/kernel/qwhatsthis.cpp" line="+492"/>
+ <location filename="../src/gui/kernel/qwhatsthis.cpp" line="+522"/>
<source>What&apos;s This?</source>
<translation>这是什么?</translation>
</message>
@@ -6322,7 +6351,7 @@ Please choose a different file name.</source>
<context>
<name>QWidget</name>
<message>
- <location filename="../src/gui/kernel/qwidget.cpp" line="+5290"/>
+ <location filename="../src/gui/kernel/qwidget.cpp" line="+5326"/>
<source>*</source>
<translation>*</translation>
</message>
@@ -6330,7 +6359,7 @@ Please choose a different file name.</source>
<context>
<name>QWizard</name>
<message>
- <location filename="../src/gui/dialogs/qwizard.cpp" line="+605"/>
+ <location filename="../src/gui/dialogs/qwizard.cpp" line="+637"/>
<source>Go Back</source>
<translation>返回</translation>
</message>
@@ -6392,7 +6421,7 @@ Please choose a different file name.</source>
<context>
<name>QWorkspace</name>
<message>
- <location filename="../src/gui/widgets/qworkspace.cpp" line="+1064"/>
+ <location filename="../src/gui/widgets/qworkspace.cpp" line="+1094"/>
<source>&amp;Restore</source>
<translation>æ¢å¤(&amp;R)</translation>
</message>
@@ -6462,7 +6491,7 @@ Please choose a different file name.</source>
<context>
<name>QXml</name>
<message>
- <location filename="../src/xml/sax/qxml.cpp" line="+28"/>
+ <location filename="../src/xml/sax/qxml.cpp" line="+58"/>
<source>no error occurred</source>
<translation>没有错误å‘生</translation>
</message>
@@ -6580,8 +6609,8 @@ Please choose a different file name.</source>
<context>
<name>QXmlStream</name>
<message>
- <location filename="../src/corelib/xml/qxmlstream.cpp" line="+562"/>
- <location filename="../src/corelib/xml/qxmlstream_p.h" line="+1739"/>
+ <location filename="../src/corelib/xml/qxmlstream.cpp" line="+592"/>
+ <location filename="../src/corelib/xml/qxmlstream_p.h" line="+1769"/>
<source>Extra content at end of document.</source>
<translation>文档末尾有é¢å¤–内容。</translation>
</message>
@@ -6765,7 +6794,7 @@ Please choose a different file name.</source>
<context>
<name>QtXmlPatterns</name>
<message>
- <location filename="../src/xmlpatterns/acceltree/qacceltreebuilder.cpp" line="+175"/>
+ <location filename="../src/xmlpatterns/acceltree/qacceltreebuilder.cpp" line="+205"/>
<source>An %1-attribute with value %2 has already been declared.</source>
<translation>带有值 %2 çš„ %1 属性已ç»å£°æ˜Žè¿‡äº†ã€‚</translation>
</message>
@@ -6775,12 +6804,12 @@ Please choose a different file name.</source>
<translation>一个 %1 属性必须带有一个有效的 %2 作为值,但 %3 å´ä¸æ˜¯ã€‚</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/api/qiodevicedelegate.cpp" line="+54"/>
+ <location filename="../src/xmlpatterns/api/qiodevicedelegate.cpp" line="+84"/>
<source>Network timeout.</source>
<translation>网络超时。</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/api/qxmlserializer.cpp" line="+290"/>
+ <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>元素 %1 ä¸èƒ½è¢«ä¸²è¡ŒåŒ–,因为它出现在文档元素之外。</translation>
</message>
@@ -6789,7 +6818,7 @@ Please choose a different file name.</source>
<translation type="obsolete">属性元素 %1 ä¸èƒ½è¢«ä¸²è¡ŒåŒ–,因为它出现在最顶层。</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qabstractdatetime.cpp" line="+50"/>
+ <location filename="../src/xmlpatterns/data/qabstractdatetime.cpp" line="+80"/>
<source>Year %1 is invalid because it begins with %2.</source>
<translation>%1 年是无效的,因为应该从 %2 开始。</translation>
</message>
@@ -6829,7 +6858,7 @@ Please choose a different file name.</source>
<translation>溢出:数æ®æ— æ³•è¢«å‘ˆçŽ°ã€‚</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qabstractduration.cpp" line="+69"/>
+ <location filename="../src/xmlpatterns/data/qabstractduration.cpp" line="+99"/>
<location line="+15"/>
<source>At least one component must be present.</source>
<translation>至少有一个组件被呈现。</translation>
@@ -6840,7 +6869,7 @@ Please choose a different file name.</source>
<translation>至少一个时间组件必须出现在这个 %1 ç•Œé™ä¹‹åŽã€‚</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qabstractfloatmathematician.cpp" line="+34"/>
+ <location filename="../src/xmlpatterns/data/qabstractfloatmathematician.cpp" line="+64"/>
<source>No operand in an integer division, %1, can be %2.</source>
<translation>在整数除法中没有æ“作数,%1,å¯ä»¥æ˜¯ %2。</translation>
</message>
@@ -6855,17 +6884,17 @@ Please choose a different file name.</source>
<translation>除法中的第二个æ“作数,%1,ä¸èƒ½æ˜¯é›¶(%2)。</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qanyuri_p.h" line="+102"/>
+ <location filename="../src/xmlpatterns/data/qanyuri_p.h" line="+132"/>
<source>%1 is not a valid value of type %2.</source>
<translation>%1 ä¸æ˜¯ç±»åž‹ä¸º %2 的有效值。</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qatomiccasters_p.h" line="+193"/>
+ <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>当从 %2 抛出到 %1 时,æºå€¼ä¸èƒ½æ˜¯ %3。</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qatomicmathematicians.cpp" line="+35"/>
+ <location filename="../src/xmlpatterns/data/qatomicmathematicians.cpp" line="+65"/>
<source>Integer division (%1) by zero (%2) is undefined.</source>
<translation>整数除法(%1)除零(%2)是未定义的。</translation>
</message>
@@ -6896,17 +6925,17 @@ Please choose a different file name.</source>
<translation>一个类型为 %1 的值乘以 %2 或者 %3(正负无穷)是ä¸å…许的。</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qatomicvalue.cpp" line="+49"/>
+ <location filename="../src/xmlpatterns/data/qatomicvalue.cpp" line="+79"/>
<source>A value of type %1 cannot have an Effective Boolean Value.</source>
<translation>一个类型为 %1 的值ä¸èƒ½æ˜¯ä¸€ä¸ªæœ‰æ•ˆçš„布尔值(Effective Boolean Value)。</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qboolean.cpp" line="+48"/>
+ <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>有效的布尔值(Effective Boolean Value)ä¸èƒ½è¢«ç”¨äºŽè®¡ç®—一个包å«ä¸¤ä¸ªæˆ–者更多原å­å€¼çš„åºåˆ—。</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qderivedinteger_p.h" line="+372"/>
+ <location filename="../src/xmlpatterns/data/qderivedinteger_p.h" line="+402"/>
<source>Value %1 of type %2 exceeds maximum (%3).</source>
<translation>类型为 %2 的值 %1 超过了最大值(%3)。</translation>
</message>
@@ -6916,7 +6945,7 @@ Please choose a different file name.</source>
<translation>类型为 %2 的值 %1 超过了最å°å€¼(%3)。</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qhexbinary.cpp" line="+61"/>
+ <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>类型为 %1 的值必须包å«å¶æ•°ä¸ªæ•°å­—。值 %2 ä¸æ˜¯è¿™æ ·çš„。</translation>
</message>
@@ -6926,7 +6955,7 @@ Please choose a different file name.</source>
<translation>%1 ä¸æ˜¯ç±»åž‹ä¸º %2 的有效值。</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qarithmeticexpression.cpp" line="+177"/>
+ <location filename="../src/xmlpatterns/expr/qarithmeticexpression.cpp" line="+207"/>
<source>Operator %1 cannot be used on type %2.</source>
<translation>æ“作符 %1 ä¸èƒ½è¢«ç”¨äºŽç±»åž‹ %2。</translation>
</message>
@@ -6936,7 +6965,7 @@ Please choose a different file name.</source>
<translation>æ“作符 %1 ä¸èƒ½è¢«ç”¨äºŽç±»åž‹ä¸º %2 å’Œ %3 的原å­å€¼ã€‚</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qattributenamevalidator.cpp" line="+36"/>
+ <location filename="../src/xmlpatterns/expr/qattributenamevalidator.cpp" line="+66"/>
<source>The namespace URI in the name for a computed attribute cannot be %1.</source>
<translation>一个被计算的属性的å称中的命å空间 URI ä¸èƒ½æ˜¯ %1。</translation>
</message>
@@ -6946,7 +6975,7 @@ Please choose a different file name.</source>
<translation>一个被计算的属性的å称ä¸èƒ½ä½¿ç”¨å¸¦æœ‰æœ¬åœ°å称 %2 的命å空间 URI %1。</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qcastas.cpp" line="+58"/>
+ <location filename="../src/xmlpatterns/expr/qcastas.cpp" line="+88"/>
<source>Type error in cast, expected %1, received %2.</source>
<translation>抛出类型错误,期望的是 %1,收到的是 %2。</translation>
</message>
@@ -6956,7 +6985,7 @@ Please choose a different file name.</source>
<translation>当抛出到 %1 或者它的派生类时,æºç±»åž‹å¿…须是åŒä¸€ç±»åž‹ï¼Œæˆ–者它必须是一个字符串类型。类型 %2 是ä¸è¢«å…许的。</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qcastingplatform.cpp" line="+104"/>
+ <location filename="../src/xmlpatterns/expr/qcastingplatform.cpp" line="+134"/>
<source>No casting is possible with %1 as the target type.</source>
<translation>无法以 %1 为目标类型进行抛出。</translation>
</message>
@@ -6981,7 +7010,7 @@ Please choose a different file name.</source>
<translation>从 %2 抛出到 %1 失败:%3</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qcommentconstructor.cpp" line="+37"/>
+ <location filename="../src/xmlpatterns/expr/qcommentconstructor.cpp" line="+67"/>
<source>A comment cannot contain %1</source>
<translation>注释ä¸èƒ½åŒ…å« %1</translation>
</message>
@@ -6991,7 +7020,7 @@ Please choose a different file name.</source>
<translation>注释ä¸èƒ½ä»¥ %1 结尾。</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qcomparisonplatform.cpp" line="+137"/>
+ <location filename="../src/xmlpatterns/expr/qcomparisonplatform.cpp" line="+167"/>
<source>No comparisons can be done involving the type %1.</source>
<translation>对于类型 %1 ä¸èƒ½è¿›è¡Œæ¯”较。</translation>
</message>
@@ -7001,12 +7030,12 @@ Please choose a different file name.</source>
<translation>在类型 %2 å’Œ %3 的原å­å€¼ä¹‹é—´ï¼Œæ“作符 %1 是ä¸å¯ç”¨çš„。</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qdocumentcontentvalidator.cpp" line="+56"/>
+ <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>一个属性节点ä¸èƒ½æ˜¯ä¸€ä¸ªæ–‡æ¡£èŠ‚点的å­èŠ‚点。因此,这个属性 %1 所在ä½ç½®æ˜¯ä¸åˆé€‚的。</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qexpressionfactory.cpp" line="+139"/>
+ <location filename="../src/xmlpatterns/expr/qexpressionfactory.cpp" line="+169"/>
<source>A library module cannot be evaluated directly. It must be imported from a main module.</source>
<translation>一个库模å—ä¸èƒ½è¢«ç›´æŽ¥è¯„估。它必须从一个主模å—中导入。</translation>
</message>
@@ -7016,7 +7045,7 @@ Please choose a different file name.</source>
<translation>没有å为 %1 的模æ¿å­˜åœ¨ã€‚</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qgenericpredicate.cpp" line="+76"/>
+ <location filename="../src/xmlpatterns/expr/qgenericpredicate.cpp" line="+106"/>
<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>类型为 %1 的值ä¸èƒ½è¢«åˆ¤æ–­ã€‚一个判断必须是数值类型或者一个有效的布尔值(Effective Boolean Value)类型。</translation>
</message>
@@ -7026,7 +7055,7 @@ Please choose a different file name.</source>
<translation>一个定ä½åˆ¤æ–­å¿…须评估一个å•ä¸€æ•°å€¼ã€‚</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qncnameconstructor_p.h" line="+83"/>
+ <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>一个处ç†æŒ‡ä»¤ä¸­çš„目标å称ä¸èƒ½æ˜¯ä»»ä½•å¤§å°å†™æ··åˆçš„ %1。因此,%2 是无效的。</translation>
</message>
@@ -7036,33 +7065,33 @@ Please choose a different file name.</source>
<translation>%1 ä¸æ˜¯å¤„ç†æŒ‡ä»¤çš„有效目标å称。它必须是值 %2,例如 %3。</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qpath.cpp" line="+79"/>
+ <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>一个路径中的最åŽä¸€æ­¥å¿…须包å«èŠ‚点或者原å­å€¼ã€‚它ä¸èƒ½æ˜¯ä¸¤è€…的一个组åˆã€‚</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qprocessinginstructionconstructor.cpp" line="+54"/>
+ <location filename="../src/xmlpatterns/expr/qprocessinginstructionconstructor.cpp" line="+84"/>
<source>The data of a processing instruction cannot contain the string %1</source>
<translation>处ç†æŒ‡ä»¤çš„æ•°æ®ä¸èƒ½åŒ…å«å­—符串 %1</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qqnameconstructor.cpp" line="+52"/>
+ <location filename="../src/xmlpatterns/expr/qqnameconstructor.cpp" line="+82"/>
<source>No namespace binding exists for the prefix %1</source>
<translation>对于å‰ç¼€ %1,没有存在绑定的命å空间。</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qqnameconstructor_p.h" line="+126"/>
+ <location filename="../src/xmlpatterns/expr/qqnameconstructor_p.h" line="+156"/>
<source>No namespace binding exists for the prefix %1 in %2</source>
<translation>对于 %2 中的å‰ç¼€ %1,没有存在绑定的命å空间。</translation>
</message>
<message>
<location line="+12"/>
- <location filename="../src/xmlpatterns/functions/qqnamefns.cpp" line="+39"/>
+ <location filename="../src/xmlpatterns/functions/qqnamefns.cpp" line="+69"/>
<source>%1 is an invalid %2</source>
<translation>%1 是一个无效的 %2。</translation>
</message>
<message numerus="yes">
- <location filename="../src/xmlpatterns/functions/qabstractfunctionfactory.cpp" line="+47"/>
+ <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 最多å¯ä»¥æœ‰ %n 个å‚数。因此 %2 是无效的。</numerusform>
@@ -7076,7 +7105,7 @@ Please choose a different file name.</source>
</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qaggregatefns.cpp" line="+90"/>
+ <location filename="../src/xmlpatterns/functions/qaggregatefns.cpp" line="+120"/>
<source>The first argument to %1 cannot be of type %2. It must be a numeric type, xs:yearMonthDuration or xs:dayTimeDuration.</source>
<translation>%1 的第一个å‚æ•°ä¸èƒ½æ˜¯ç±»åž‹ %2 的。它必须是数字类型的,xs:yearMonthDuration 或者 xs:dayTimeDuration。</translation>
</message>
@@ -7091,27 +7120,27 @@ Please choose a different file name.</source>
<translation>%1 的第二个å‚æ•°ä¸èƒ½æ˜¯ç±»åž‹ %2 的。它必须是类型 %3ã€%4 或者 %5 的。</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qassemblestringfns.cpp" line="+58"/>
+ <location filename="../src/xmlpatterns/functions/qassemblestringfns.cpp" line="+88"/>
<source>%1 is not a valid XML 1.0 character.</source>
<translation>%1 ä¸æ˜¯ä¸€ä¸ªæœ‰æ•ˆçš„ XML 1.0 字符。</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qcomparingaggregator.cpp" line="+167"/>
+ <location filename="../src/xmlpatterns/functions/qcomparingaggregator.cpp" line="+197"/>
<source>The first argument to %1 cannot be of type %2.</source>
<translation>%1 的第一个å‚æ•°ä¸èƒ½æ˜¯ç±»åž‹ %2 的。</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qdatetimefn.cpp" line="+56"/>
+ <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>如果两个值都有区å移(zone offset),它们必须拥有相åŒçš„区å移。%1 å’Œ %2 的区å移是ä¸åŒçš„。</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qerrorfn.cpp" line="+31"/>
+ <location filename="../src/xmlpatterns/functions/qerrorfn.cpp" line="+61"/>
<source>%1 was called.</source>
<translation>%1 被调用了。</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qpatternmatchingfns.cpp" line="+64"/>
+ <location filename="../src/xmlpatterns/functions/qpatternmatchingfns.cpp" line="+94"/>
<source>%1 must be followed by %2 or %3, not at the end of the replacement string.</source>
<translation>%1 必须被 %2 或者 %3 è·Ÿéšï¼Œä¸èƒ½åœ¨æ›¿æ¢å­—符串的末尾。</translation>
</message>
@@ -7126,7 +7155,7 @@ Please choose a different file name.</source>
<translation>在这个替æ¢å­—符串中,%1 åªèƒ½è¢«ç”¨äºŽè½¬ä¹‰å®ƒæœ¬èº«æˆ–者 %2,而ä¸æ˜¯ %3</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qpatternplatform.cpp" line="+62"/>
+ <location filename="../src/xmlpatterns/functions/qpatternplatform.cpp" line="+92"/>
<source>%1 matches newline characters</source>
<translation>%1 匹é…了æ¢è¡Œç¬¦</translation>
</message>
@@ -7161,17 +7190,17 @@ Please choose a different file name.</source>
<translation>如果第一个å‚数是空åºåˆ—或者零长度字符串(无命å空间),那么就ä¸èƒ½æŒ‡å®šå‰ç¼€ã€‚å‰ç¼€ %1 被指定了。</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qsequencefns.cpp" line="+317"/>
+ <location filename="../src/xmlpatterns/functions/qsequencefns.cpp" line="+347"/>
<source>It will not be possible to retrieve %1.</source>
<translation>å°†ä¸èƒ½èŽ·å– %1。</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qcontextnodechecker.cpp" line="+24"/>
+ <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>函数 %1 的第二个å‚数的根节点必须是一个文档节点。%2 ä¸æ˜¯ä¸€ä¸ªæ–‡æ¡£èŠ‚点。</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qsequencegeneratingfns.cpp" line="+249"/>
+ <location filename="../src/xmlpatterns/functions/qsequencegeneratingfns.cpp" line="+279"/>
<source>The default collection is undefined</source>
<translation>默认收集(collection)是未定义的</translation>
</message>
@@ -7181,12 +7210,12 @@ Please choose a different file name.</source>
<translation>æ— æ³•èŽ·å– %1</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qstringvaluefns.cpp" line="+222"/>
+ <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>ä¸æ”¯æŒæ­£è§„化(normalization)è¡¨å• %1。被支æŒçš„表å•æ˜¯ %2ã€%3ã€%4 å’Œ %5,以åŠæ— ï¼Œä¾‹å¦‚空字符串(无正规化)。</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qtimezonefns.cpp" line="+57"/>
+ <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>区å移(zone offset)必须在 %1...%2 范围之内。%3 是在范围之外的。</translation>
</message>
@@ -7196,17 +7225,17 @@ Please choose a different file name.</source>
<translation>%1 ä¸æ˜¯åˆ†é’Ÿçš„整数。</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/janitors/qcardinalityverifier.cpp" line="+28"/>
+ <location filename="../src/xmlpatterns/janitors/qcardinalityverifier.cpp" line="+58"/>
<source>Required cardinality is %1; got cardinality %2.</source>
<translation>所需è¦çš„表间关系是 %1;得到的表间关系å´æ˜¯ %2。</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/janitors/qitemverifier.cpp" line="+37"/>
+ <location filename="../src/xmlpatterns/janitors/qitemverifier.cpp" line="+67"/>
<source>The item %1 did not match the required type %2.</source>
<translation>项 %1 和所需的类型 %2 ä¸åŒ¹é…。</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="+319"/>
+ <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="+379"/>
<location line="+7253"/>
<source>%1 is an unknown schema type.</source>
<translation>%1 是一个未知的方案类型。</translation>
@@ -7227,7 +7256,7 @@ Please choose a different file name.</source>
<translation>没有å称为 %1 çš„å˜é‡å­˜åœ¨ã€‚</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/parser/qparsercontext.cpp" line="+63"/>
+ <location filename="../src/xmlpatterns/parser/qparsercontext.cpp" line="+93"/>
<source>The variable %1 is unused</source>
<translation>å˜é‡ %1 没有被使用</translation>
</message>
@@ -7525,7 +7554,7 @@ Please choose a different file name.</source>
<translation>一个扩展表达å¼çš„å称必须在一个命å空间中。</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/type/qcardinality.cpp" line="+25"/>
+ <location filename="../src/xmlpatterns/type/qcardinality.cpp" line="+55"/>
<source>empty</source>
<translation>空白</translation>
</message>
@@ -7550,7 +7579,7 @@ Please choose a different file name.</source>
<translation>零或者更多</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/type/qtypechecker.cpp" line="+33"/>
+ <location filename="../src/xmlpatterns/type/qtypechecker.cpp" line="+63"/>
<source>Required type is %1, but %2 was found.</source>
<translation>需è¦çš„类型是 %1,但是找到的是 %2。</translation>
</message>
@@ -7565,7 +7594,7 @@ Please choose a different file name.</source>
<translation>焦点未定义。</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/utils/qoutputvalidator.cpp" line="+56"/>
+ <location filename="../src/xmlpatterns/utils/qoutputvalidator.cpp" line="+86"/>
<source>It&apos;s not possible to add attributes after any other kind of node.</source>
<translation>ä¸èƒ½åœ¨ä»»ä½•å…¶å®ƒç±»åž‹èŠ‚点åŽæ·»åŠ å±žæ€§ã€‚</translation>
</message>
@@ -7575,7 +7604,7 @@ Please choose a different file name.</source>
<translation>一个å称为 %1 的属性已ç»è¢«åˆ›å»ºã€‚</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/utils/qxpathhelper_p.h" line="+90"/>
+ <location filename="../src/xmlpatterns/utils/qxpathhelper_p.h" line="+120"/>
<source>Only the Unicode Codepoint Collation is supported(%1). %2 is unsupported.</source>
<translation>åªæ”¯æŒ Unicode 代ç ç‚¹æ ¡éªŒ(Unicode Codepoint Collation)(%1)。%2 是ä¸è¢«æ”¯æŒçš„。</translation>
</message>
@@ -7585,7 +7614,7 @@ Please choose a different file name.</source>
<translation>属性 %1 ä¸èƒ½è¢«ä¸²è¡ŒåŒ–,因为它出现在最顶层。</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/acceltree/qacceltreeresourceloader.cpp" line="+284"/>
+ <location filename="../src/xmlpatterns/acceltree/qacceltreeresourceloader.cpp" line="+314"/>
<source>%1 is an unsupported encoding.</source>
<translation> %1 是ä¸è¢«æ”¯æŒçš„ç¼–ç ã€‚</translation>
</message>
@@ -7600,14 +7629,18 @@ Please choose a different file name.</source>
<translation>在使用编ç %3çš„%2中出现的代ç ç‚¹%1ä¸æ˜¯ä¸€ä¸ªæœ‰æ•ˆçš„XML字符。</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qapplytemplate.cpp" line="+89"/>
+ <location filename="../src/xmlpatterns/expr/qapplytemplate.cpp" line="+119"/>
<source>Ambiguous rule match.</source>
<translation>å«ç³Šè§„则匹é…。</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qcomputednamespaceconstructor.cpp" line="+39"/>
<source>In a namespace constructor, the value for a namespace value cannot be an empty string.</source>
- <translation>在一个命å空间构造中,命å空间的值ä¸èƒ½ä¸ºç©ºå­—符串。</translation>
+ <translation type="obsolete">在一个命å空间构造中,命å空间的值ä¸èƒ½ä¸ºç©ºå­—符串。</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 type="unfinished"></translation>
</message>
<message>
<location line="+11"/>
@@ -7625,12 +7658,12 @@ Please choose a different file name.</source>
<translation>åªæœ‰å‰ç¼€%1å¯ä»¥ç»‘定到%2,å之也一样</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qevaluationcache.cpp" line="+87"/>
+ <location filename="../src/xmlpatterns/expr/qevaluationcache.cpp" line="+117"/>
<source>Circularity detected</source>
<translation>检测到环</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qtemplate.cpp" line="+115"/>
+ <location filename="../src/xmlpatterns/expr/qtemplate.cpp" line="+145"/>
<source>The parameter %1 is required, but no corresponding %2 is supplied.</source>
<translation>需è¦å‚æ•°%1,但是没有æ供对应的%2。</translation>
</message>
@@ -7640,12 +7673,12 @@ Please choose a different file name.</source>
<translation>å‚æ•°%1已传递,但没有相应的%2存在。</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qunparsedtextfn.cpp" line="+35"/>
+ <location filename="../src/xmlpatterns/functions/qunparsedtextfn.cpp" line="+65"/>
<source>The URI cannot have a fragment</source>
<translation>URIä¸èƒ½æœ‰ç‰‡æ®µ</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/parser/qxslttokenizer.cpp" line="+489"/>
+ <location filename="../src/xmlpatterns/parser/qxslttokenizer.cpp" line="+519"/>
<source>Element %1 is not allowed at this location.</source>
<translation>元素%1ä¸èƒ½åœ¨è¿™ä¸ªä½ç½®ã€‚</translation>
</message>
@@ -7700,7 +7733,7 @@ Please choose a different file name.</source>
<translation>在元素%2çš„%1属性中至少è¦æŒ‡å®šä¸€ä¸ªæ¨¡å¼ã€‚</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/parser/qmaintainingreader.cpp" line="+153"/>
+ <location filename="../src/xmlpatterns/parser/qmaintainingreader.cpp" line="+183"/>
<source>Attribute %1 cannot appear on the element %2. Only the standard attributes can appear.</source>
<translation>属性%1ä¸èƒ½å‡ºçŽ°åœ¨å…ƒç´ %2上。åªæœ‰æ ‡å‡†å±žæ€§å¯ä»¥å‡ºçŽ°ã€‚</translation>
</message>
@@ -7775,7 +7808,7 @@ Please choose a different file name.</source>
<translation>元素%1ä¸èƒ½æœ‰å­å…ƒç´ ã€‚</translation>
</message>
<message>
- <location line="+432"/>
+ <location line="+434"/>
<source>Element %1 cannot have a sequence constructor.</source>
<translation>元素%1ä¸èƒ½æœ‰é¡ºåºæž„造。</translation>
</message>
diff --git a/translations/qt_zh_TW.ts b/translations/qt_zh_TW.ts
index 5fccebf..bcb6f8d 100644
--- a/translations/qt_zh_TW.ts
+++ b/translations/qt_zh_TW.ts
@@ -1,18 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS><TS version="1.1" language="zh_TW">
-<defaultcodec></defaultcodec>
+<!DOCTYPE TS>
+<TS version="2.0" language="zh_TW">
<context>
<name>AudioOutput</name>
<message>
- <location filename="../src/3rdparty/phonon/phonon/audiooutput.cpp" line="374"/>
+ <location filename="../src/3rdparty/phonon/phonon/audiooutput.cpp" line="+375"/>
<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;音效播放è£ç½® &lt;b&gt;%1&lt;/b&gt; 未能é‹ä½œã€‚&lt;br/&gt;改用é è¨­è£ç½® &lt;b&gt;%2&lt;/b&gt;。&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;音效播放è£ç½® &lt;b&gt;%1&lt;/b&gt; å·²å¯ä½¿ç”¨ï¼Œå› ç‚ºæœ‰è¼ƒé«˜å„ªå…ˆæ¬Šï¼Œå› æ­¤å°‡åˆ‡æ›åˆ°è©²è£ç½®ã€‚&lt;/html&gt;</translation>
</message>
<message>
+ <location line="+3"/>
<source>Revert back to device &apos;%1&apos;</source>
<translation>回復到è£ç½® %1</translation>
</message>
@@ -20,7 +22,7 @@
<context>
<name>CloseButton</name>
<message>
- <location filename="../src/gui/widgets/qtabbar.cpp" line="2217"/>
+ <location filename="../src/gui/widgets/qtabbar.cpp" line="+2251"/>
<source>Close Tab</source>
<translation>關閉分é </translation>
</message>
@@ -39,27 +41,32 @@
<context>
<name>Phonon::</name>
<message>
- <location filename="../src/3rdparty/phonon/phonon/phononnamespace.cpp" line="55"/>
+ <location filename="../src/3rdparty/phonon/phonon/phononnamespace.cpp" line="+55"/>
<source>Notifications</source>
<translation>通知</translation>
</message>
<message>
+ <location line="+2"/>
<source>Music</source>
<translation>音樂</translation>
</message>
<message>
+ <location line="+2"/>
<source>Video</source>
<translation>å½±åƒ</translation>
</message>
<message>
+ <location line="+2"/>
<source>Communication</source>
<translation>通訊</translation>
</message>
<message>
+ <location line="+2"/>
<source>Games</source>
<translation>éŠæˆ²</translation>
</message>
<message>
+ <location line="+2"/>
<source>Accessibility</source>
<translation>輔助è£ç½®</translation>
</message>
@@ -67,13 +74,14 @@
<context>
<name>Phonon::Gstreamer::Backend</name>
<message>
- <location filename="../src/3rdparty/phonon/gstreamer/backend.cpp" line="171"/>
+ <location filename="../src/3rdparty/phonon/gstreamer/backend.cpp" line="+171"/>
<source>Warning: You do not seem to have the package gstreamer0.10-plugins-good installed.
Some video features have been disabled.</source>
<translation>警告:您å¯èƒ½æ²’æœ‰å®‰è£ gstreamer0.10-plugins-good。
有些影åƒçš„功能將被關閉。</translation>
</message>
<message>
+ <location line="+5"/>
<source>Warning: You do not seem to have the base GStreamer plugins installed.
All audio and video support has been disabled</source>
<translation>警告:您å¯èƒ½æ²’æœ‰å®‰è£ GStreamer 外掛程å¼ã€‚ 所有音效與影åƒæ”¯æ´å°‡è¢«é—œé–‰ã€‚</translation>
@@ -82,7 +90,7 @@
<context>
<name>Phonon::Gstreamer::MediaObject</name>
<message>
- <location filename="../src/3rdparty/phonon/gstreamer/mediaobject.cpp" line="88"/>
+ <location filename="../src/3rdparty/phonon/gstreamer/mediaobject.cpp" line="+90"/>
<source>Cannot start playback.
Check your Gstreamer installation and make sure you
@@ -93,26 +101,39 @@ have libgstreamer-plugins-base installed.</source>
libgstreamer-plugins-base 套件。</translation>
</message>
<message>
+ <location line="+113"/>
<source>A required codec is missing. You need to install the following codec(s) to play this content: %0</source>
<translation>找ä¸åˆ°éœ€è¦çš„編解碼器。您需è¦å®‰è£ä»¥ä¸‹çš„套件來播放此內容:%0</translation>
</message>
<message>
+ <location line="+676"/>
+ <location line="+8"/>
+ <location line="+15"/>
+ <location line="+9"/>
+ <location line="+6"/>
+ <location line="+19"/>
+ <location line="+335"/>
+ <location line="+24"/>
<source>Could not open media source.</source>
<translation>無法開啟媒體來æºã€‚</translation>
</message>
<message>
+ <location line="-403"/>
<source>Invalid source type.</source>
<translation>ä¸åˆæ³•çš„來æºåž‹æ…‹ã€‚</translation>
</message>
<message>
+ <location line="+377"/>
<source>Could not locate media source.</source>
<translation>無法定ä½åª’體來æºã€‚</translation>
</message>
<message>
+ <location line="+10"/>
<source>Could not open audio device. The device is already in use.</source>
<translation>無法開啟音效è£ç½®ã€‚è£ç½®å·²åœ¨ä½¿ç”¨ä¸­ã€‚</translation>
</message>
<message>
+ <location line="+13"/>
<source>Could not decode media source.</source>
<translation>無法解碼媒體來æºã€‚</translation>
</message>
@@ -120,10 +141,15 @@ libgstreamer-plugins-base 套件。</translation>
<context>
<name>Phonon::VolumeSlider</name>
<message>
+ <location filename="../src/3rdparty/phonon/phonon/volumeslider.cpp" line="+42"/>
+ <location line="+18"/>
<source>Volume: %1%</source>
<translation>音é‡ï¼š%1%</translation>
</message>
<message>
+ <location line="-15"/>
+ <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>使用此滑動器來調整音é‡ã€‚最左邊的ä½ç½®ç‚º 0%,最å³é‚Šçš„為 %1%。</translation>
</message>
@@ -131,11 +157,12 @@ libgstreamer-plugins-base 套件。</translation>
<context>
<name>Q3Accel</name>
<message>
- <location filename="../src/qt3support/other/q3accel.cpp" line="451"/>
+ <location filename="../src/qt3support/other/q3accel.cpp" line="+481"/>
<source>%1, %2 not defined</source>
<translation>%1,%2 未定義</translation>
</message>
<message>
+ <location line="+36"/>
<source>Ambiguous %1 not handled</source>
<translation>ä¸æ˜Žç¢ºçš„ %1 尚未處ç†</translation>
</message>
@@ -143,23 +170,27 @@ libgstreamer-plugins-base 套件。</translation>
<context>
<name>Q3DataTable</name>
<message>
- <location filename="../src/qt3support/sql/q3datatable.cpp" line="253"/>
+ <location filename="../src/qt3support/sql/q3datatable.cpp" line="+285"/>
<source>True</source>
<translation>真</translation>
</message>
<message>
+ <location line="+1"/>
<source>False</source>
<translation>å‡</translation>
</message>
<message>
+ <location line="+505"/>
<source>Insert</source>
<translation>æ’å…¥</translation>
</message>
<message>
+ <location line="+1"/>
<source>Update</source>
<translation>æ›´æ–°</translation>
</message>
<message>
+ <location line="+1"/>
<source>Delete</source>
<translation>刪除</translation>
</message>
@@ -167,242 +198,313 @@ libgstreamer-plugins-base 套件。</translation>
<context>
<name>Q3FileDialog</name>
<message>
- <location filename="../src/qt3support/dialogs/q3filedialog.cpp" line="834"/>
+ <location filename="../src/qt3support/dialogs/q3filedialog.cpp" line="+864"/>
<source>Copy or Move a File</source>
<translation>複製或移動檔案</translation>
</message>
<message>
+ <location line="+8"/>
<source>Read: %1</source>
<translation>讀å–:%1</translation>
</message>
<message>
+ <location line="+6"/>
+ <location line="+30"/>
<source>Write: %1</source>
<translation>寫入:%1</translation>
</message>
<message>
+ <location line="-22"/>
+ <location line="+1575"/>
<source>Cancel</source>
<translation>å–消</translation>
</message>
<message>
- <location filename="../src/qt3support/dialogs/q3filedialog_mac.cpp" line="80"/>
+ <location line="-157"/>
+ <location line="+49"/>
+ <location line="+2153"/>
+ <location filename="../src/qt3support/dialogs/q3filedialog_mac.cpp" line="+110"/>
<source>All Files (*)</source>
<translation>所有檔案 (*)</translation>
</message>
<message>
+ <location line="-2089"/>
<source>Name</source>
<translation>å稱</translation>
</message>
<message>
+ <location line="+1"/>
<source>Size</source>
<translation>大å°</translation>
</message>
<message>
+ <location line="+2"/>
<source>Type</source>
<translation>åž‹æ…‹</translation>
</message>
<message>
+ <location line="+1"/>
<source>Date</source>
<translation>日期</translation>
</message>
<message>
+ <location line="+1"/>
<source>Attributes</source>
<translation>屬性</translation>
</message>
<message>
+ <location line="+35"/>
+ <location line="+2031"/>
<source>&amp;OK</source>
<translation>確定(&amp;O)</translation>
</message>
<message>
+ <location line="-1991"/>
<source>Look &amp;in:</source>
<translation>尋找於(&amp;I):</translation>
</message>
<message>
+ <location line="+1"/>
+ <location line="+1981"/>
+ <location line="+16"/>
<source>File &amp;name:</source>
<translation>檔å(&amp;N):</translation>
</message>
<message>
+ <location line="-1996"/>
<source>File &amp;type:</source>
<translation>檔案型態(&amp;T):</translation>
</message>
<message>
+ <location line="+7"/>
<source>Back</source>
<translation>返回</translation>
</message>
<message>
+ <location line="+7"/>
<source>One directory up</source>
<translation>往上一層目錄</translation>
</message>
<message>
+ <location line="+9"/>
<source>Create New Folder</source>
<translation>建立新資料夾</translation>
</message>
<message>
+ <location line="+18"/>
<source>List View</source>
<translation>列表檢視</translation>
</message>
<message>
+ <location line="+8"/>
<source>Detail View</source>
<translation>詳細檢視</translation>
</message>
<message>
+ <location line="+9"/>
<source>Preview File Info</source>
<translation>é è¦½æª”案資訊</translation>
</message>
<message>
+ <location line="+23"/>
<source>Preview File Contents</source>
<translation>é è¦½æª”案內容</translation>
</message>
<message>
+ <location line="+88"/>
<source>Read-write</source>
<translation>å¯è®€å¯«</translation>
</message>
<message>
+ <location line="+1"/>
<source>Read-only</source>
<translation>唯讀</translation>
</message>
<message>
+ <location line="+1"/>
<source>Write-only</source>
<translation>唯寫</translation>
</message>
<message>
+ <location line="+1"/>
<source>Inaccessible</source>
<translation>無法存å–</translation>
</message>
<message>
+ <location line="+2"/>
<source>Symlink to File</source>
<translation>到檔案的符號連çµ</translation>
</message>
<message>
+ <location line="+1"/>
<source>Symlink to Directory</source>
<translation>到目錄的符號連çµ</translation>
</message>
<message>
+ <location line="+1"/>
<source>Symlink to Special</source>
<translation>到特殊節點的符號連çµ</translation>
</message>
<message>
+ <location line="+1"/>
<source>File</source>
<translation>檔案</translation>
</message>
<message>
+ <location line="+1"/>
<source>Dir</source>
<translation>目錄</translation>
</message>
<message>
+ <location line="+1"/>
<source>Special</source>
<translation>特殊節點</translation>
</message>
<message>
- <location filename="../src/qt3support/dialogs/q3filedialog_win.cpp" line="307"/>
+ <location line="+704"/>
+ <location line="+2100"/>
+ <location filename="../src/qt3support/dialogs/q3filedialog_win.cpp" line="+337"/>
<source>Open</source>
<translation>é–‹å•Ÿ</translation>
</message>
<message>
- <location filename="../src/qt3support/dialogs/q3filedialog_win.cpp" line="84"/>
+ <location line="-1990"/>
+ <location filename="../src/qt3support/dialogs/q3filedialog_win.cpp" line="+84"/>
<source>Save As</source>
<translation>å¦å­˜æ–°æª”</translation>
</message>
<message>
+ <location line="+642"/>
+ <location line="+5"/>
+ <location line="+355"/>
<source>&amp;Open</source>
<translation>é–‹å•Ÿ(&amp;O)</translation>
</message>
<message>
+ <location line="-357"/>
+ <location line="+341"/>
<source>&amp;Save</source>
<translation>儲存(&amp;S)</translation>
</message>
<message>
+ <location line="-334"/>
<source>&amp;Rename</source>
<translation>é‡æ–°å‘½å(&amp;R)</translation>
</message>
<message>
+ <location line="+1"/>
<source>&amp;Delete</source>
<translation>刪除(&amp;D)</translation>
</message>
<message>
+ <location line="+20"/>
<source>R&amp;eload</source>
<translation>é‡æ–°è¼‰å…¥(&amp;E)</translation>
</message>
<message>
+ <location line="+4"/>
<source>Sort by &amp;Name</source>
<translation>ä¾å稱排åº(&amp;N)</translation>
</message>
<message>
+ <location line="+2"/>
<source>Sort by &amp;Size</source>
<translation>ä¾å¤§å°æŽ’åº(&amp;S)</translation>
</message>
<message>
+ <location line="+1"/>
<source>Sort by &amp;Date</source>
<translation>ä¾æ—¥æœŸæŽ’åº(&amp;D)</translation>
</message>
<message>
+ <location line="+2"/>
<source>&amp;Unsorted</source>
<translation>未排åº(&amp;U)</translation>
</message>
<message>
+ <location line="+15"/>
<source>Sort</source>
<translation>排åº</translation>
</message>
<message>
+ <location line="+4"/>
<source>Show &amp;hidden files</source>
<translation>顯示隱è—檔(&amp;H)</translation>
</message>
<message>
+ <location line="+31"/>
<source>the file</source>
<translation>此檔案</translation>
</message>
<message>
+ <location line="+2"/>
<source>the directory</source>
<translation>此目錄</translation>
</message>
<message>
+ <location line="+2"/>
<source>the symlink</source>
<translation>此符號連çµ</translation>
</message>
<message>
+ <location line="+3"/>
<source>Delete %1</source>
<translation>刪除 %1</translation>
</message>
<message>
+ <location line="+1"/>
<source>&lt;qt&gt;Are you sure you wish to delete %1 &quot;%2&quot;?&lt;/qt&gt;</source>
<translation>&lt;qt&gt;您確定è¦åˆªé™¤ %1 &quot;%2&quot; 嗎?&lt;/qt&gt;</translation>
</message>
<message>
+ <location line="+2"/>
<source>&amp;Yes</source>
<translation>是(&amp;Y)</translation>
</message>
<message>
+ <location line="+0"/>
<source>&amp;No</source>
<translation>å¦(&amp;N)</translation>
</message>
<message>
+ <location line="+36"/>
<source>New Folder 1</source>
<translation>新資料夾 1</translation>
</message>
<message>
+ <location line="+5"/>
<source>New Folder</source>
<translation>新資料夾</translation>
</message>
<message>
+ <location line="+5"/>
<source>New Folder %1</source>
<translation>新資料夾 %1</translation>
</message>
<message>
+ <location line="+98"/>
<source>Find Directory</source>
<translation>尋找目錄</translation>
</message>
<message>
+ <location line="+5"/>
+ <location line="+108"/>
<source>Directories</source>
<translation>目錄</translation>
</message>
<message>
+ <location line="-2"/>
<source>Directory:</source>
<translation>目錄:</translation>
</message>
<message>
+ <location line="+40"/>
+ <location line="+1110"/>
<source>Error</source>
<translation>錯誤</translation>
</message>
<message>
+ <location line="-1109"/>
<source>%1
File not found.
Check path and filename.</source>
@@ -411,14 +513,17 @@ Check path and filename.</source>
請檢查路徑與檔å。</translation>
</message>
<message>
+ <location filename="../src/qt3support/dialogs/q3filedialog_win.cpp" line="-289"/>
<source>All Files (*.*)</source>
<translation>所有檔案 (*.*)</translation>
</message>
<message>
+ <location line="+375"/>
<source>Open </source>
<translation>é–‹å•Ÿ </translation>
</message>
<message>
+ <location line="+155"/>
<source>Select a Directory</source>
<translation>è«‹é¸æ“‡ä¸€å€‹ç›®éŒ„</translation>
</message>
@@ -426,24 +531,29 @@ Check path and filename.</source>
<context>
<name>Q3LocalFs</name>
<message>
+ <location filename="../src/qt3support/network/q3localfs.cpp" line="+130"/>
+ <location line="+10"/>
<source>Could not read directory
%1</source>
<translation>無法讀å–目錄
%1</translation>
</message>
<message>
+ <location line="+45"/>
<source>Could not create directory
%1</source>
<translation>無法建立目錄
%1</translation>
</message>
<message>
+ <location line="+34"/>
<source>Could not remove file or directory
%1</source>
<translation>無法移除目錄
%1</translation>
</message>
<message>
+ <location line="+27"/>
<source>Could not rename
%1
to
@@ -454,12 +564,14 @@ to
%2</translation>
</message>
<message>
+ <location line="+25"/>
<source>Could not open
%1</source>
<translation>無法開啟
%1</translation>
</message>
<message>
+ <location line="+68"/>
<source>Could not write
%1</source>
<translation>無法寫入
@@ -469,11 +581,12 @@ to
<context>
<name>Q3MainWindow</name>
<message>
- <location filename="../src/qt3support/widgets/q3mainwindow.cpp" line="2021"/>
+ <location filename="../src/qt3support/widgets/q3mainwindow.cpp" line="+2051"/>
<source>Line up</source>
<translation>排列</translation>
</message>
<message>
+ <location line="+2"/>
<source>Customize...</source>
<translation>自訂...</translation>
</message>
@@ -481,7 +594,7 @@ to
<context>
<name>Q3NetworkProtocol</name>
<message>
- <location filename="../src/qt3support/network/q3networkprotocol.cpp" line="824"/>
+ <location filename="../src/qt3support/network/q3networkprotocol.cpp" line="+854"/>
<source>Operation stopped by the user</source>
<translation>使用者已中止æ“作</translation>
</message>
@@ -489,6 +602,8 @@ to
<context>
<name>Q3ProgressDialog</name>
<message>
+ <location filename="../src/qt3support/dialogs/q3progressdialog.cpp" line="+224"/>
+ <location line="+61"/>
<source>Cancel</source>
<translation>å–消</translation>
</message>
@@ -496,22 +611,28 @@ to
<context>
<name>Q3TabDialog</name>
<message>
+ <location filename="../src/qt3support/dialogs/q3tabdialog.cpp" line="+189"/>
+ <location line="+814"/>
<source>OK</source>
<translation>確定</translation>
</message>
<message>
+ <location line="-356"/>
<source>Apply</source>
<translation>套用</translation>
</message>
<message>
+ <location line="+43"/>
<source>Help</source>
<translation>說明</translation>
</message>
<message>
+ <location line="+45"/>
<source>Defaults</source>
<translation>é è¨­</translation>
</message>
<message>
+ <location line="+50"/>
<source>Cancel</source>
<translation>å–消</translation>
</message>
@@ -519,31 +640,38 @@ to
<context>
<name>Q3TextEdit</name>
<message>
- <location filename="../src/qt3support/text/q3textedit.cpp" line="5399"/>
+ <location filename="../src/qt3support/text/q3textedit.cpp" line="+5429"/>
<source>&amp;Undo</source>
<translation>復原(&amp;U)</translation>
</message>
<message>
+ <location line="+1"/>
<source>&amp;Redo</source>
<translation>é‡åš(&amp;R)</translation>
</message>
<message>
+ <location line="+5"/>
<source>Cu&amp;t</source>
<translation>剪下(&amp;T)</translation>
</message>
<message>
+ <location line="+1"/>
<source>&amp;Copy</source>
<translation>複製(&amp;C)</translation>
</message>
<message>
+ <location line="+2"/>
<source>&amp;Paste</source>
<translation>貼上(&amp;P)</translation>
</message>
<message>
+ <location line="+3"/>
<source>Clear</source>
<translation>清除</translation>
</message>
<message>
+ <location line="+4"/>
+ <location line="+2"/>
<source>Select All</source>
<translation>全部é¸æ“‡</translation>
</message>
@@ -551,55 +679,67 @@ to
<context>
<name>Q3TitleBar</name>
<message>
- <location filename="../src/plugins/accessible/compat/q3complexwidgets.cpp" line="216"/>
+ <location filename="../src/plugins/accessible/compat/q3complexwidgets.cpp" line="+246"/>
<source>System</source>
<translation>系統</translation>
</message>
<message>
+ <location line="+3"/>
<source>Restore up</source>
<translation>å‘上æ¢å¾©</translation>
</message>
<message>
+ <location line="+1"/>
<source>Minimize</source>
<translation>最å°åŒ–</translation>
</message>
<message>
+ <location line="+3"/>
<source>Restore down</source>
<translation>å‘下æ¢å¾©</translation>
</message>
<message>
+ <location line="+1"/>
<source>Maximize</source>
<translation>最大化</translation>
</message>
<message>
+ <location line="+2"/>
<source>Close</source>
<translation>關閉</translation>
</message>
<message>
+ <location line="+18"/>
<source>Contains commands to manipulate the window</source>
<translation>包å«è¦æ“作此視窗的指令</translation>
</message>
<message>
+ <location line="+3"/>
<source>Puts a minimized back to normal</source>
<translation>將最å°åŒ–視窗放回原大å°</translation>
</message>
<message>
+ <location line="+1"/>
<source>Moves the window out of the way</source>
<translation>把視窗移開</translation>
</message>
<message>
+ <location line="+3"/>
<source>Puts a maximized window back to normal</source>
<translation>將最大化視窗放回原大å°</translation>
</message>
<message>
+ <location line="+1"/>
<source>Makes the window full screen</source>
<translation>將視窗放大到全畫é¢</translation>
</message>
<message>
+ <location line="+2"/>
<source>Closes the window</source>
<translation>關閉視窗</translation>
</message>
<message>
+ <location line="+2"/>
<source>Displays the name of the window and contains controls to manipulate it</source>
<translation>顯示視窗å稱,並包å«æ“作它的控制元件</translation>
</message>
@@ -607,7 +747,7 @@ to
<context>
<name>Q3ToolBar</name>
<message>
- <location filename="../src/qt3support/widgets/q3toolbar.cpp" line="662"/>
+ <location filename="../src/qt3support/widgets/q3toolbar.cpp" line="+692"/>
<source>More...</source>
<translation>更多...</translation>
</message>
@@ -615,38 +755,51 @@ to
<context>
<name>Q3UrlOperator</name>
<message>
+ <location filename="../src/qt3support/network/q3urloperator.cpp" line="+386"/>
+ <location line="+260"/>
+ <location line="+4"/>
<source>The protocol `%1&apos; is not supported</source>
<translation>å”定 %1 未支æ´</translation>
</message>
<message>
+ <location line="-260"/>
<source>The protocol `%1&apos; does not support listing directories</source>
<translation>å”定 %1 未支æ´åˆ—出目錄</translation>
</message>
<message>
+ <location line="+3"/>
<source>The protocol `%1&apos; does not support creating new directories</source>
<translation>å”定 %1 未支æ´å»ºç«‹æ–°ç›®éŒ„</translation>
</message>
<message>
+ <location line="+3"/>
<source>The protocol `%1&apos; does not support removing files or directories</source>
<translation>å”定 %1 未支æ´ç§»é™¤æª”案或目錄</translation>
</message>
<message>
+ <location line="+3"/>
<source>The protocol `%1&apos; does not support renaming files or directories</source>
<translation>å”定 %1 未支æ´é‡æ–°å‘½å檔案或目錄</translation>
</message>
<message>
+ <location line="+3"/>
<source>The protocol `%1&apos; does not support getting files</source>
<translation>å”定 %1 未支æ´å–得檔案</translation>
</message>
<message>
+ <location line="+3"/>
<source>The protocol `%1&apos; does not support putting files</source>
<translation>å”定 %1 未支æ´å¯«å…¥æª”案</translation>
</message>
<message>
+ <location line="+243"/>
+ <location line="+4"/>
<source>The protocol `%1&apos; does not support copying or moving files or directories</source>
<translation>å”定 %1 未支æ´è¤‡è£½æˆ–移動檔案或目錄</translation>
</message>
<message>
+ <location line="+237"/>
+ <location line="+1"/>
<source>(unknown)</source>
<translation>(未知)</translation>
</message>
@@ -654,23 +807,27 @@ to
<context>
<name>Q3Wizard</name>
<message>
- <location filename="../src/qt3support/dialogs/q3wizard.cpp" line="147"/>
+ <location filename="../src/qt3support/dialogs/q3wizard.cpp" line="+177"/>
<source>&amp;Cancel</source>
<translation>å–消(&amp;C)</translation>
</message>
<message>
+ <location line="+1"/>
<source>&lt; &amp;Back</source>
<translation><返回(&amp;B)</translation>
</message>
<message>
+ <location line="+1"/>
<source>&amp;Next &gt;</source>
<translation>下一個(&amp;N)></translation>
</message>
<message>
+ <location line="+1"/>
<source>&amp;Finish</source>
<translation>完æˆ(&amp;F)</translation>
</message>
<message>
+ <location line="+1"/>
<source>&amp;Help</source>
<translation>說明(&amp;H)</translation>
</message>
@@ -678,31 +835,44 @@ to
<context>
<name>QAbstractSocket</name>
<message>
+ <location filename="../src/network/socket/qabstractsocket.cpp" line="+868"/>
+ <location filename="../src/network/socket/qhttpsocketengine.cpp" line="+615"/>
+ <location filename="../src/network/socket/qsocks5socketengine.cpp" line="+657"/>
+ <location line="+26"/>
<source>Host not found</source>
<translation>找ä¸åˆ°ä¸»æ©Ÿ</translation>
</message>
<message>
- <location filename="../src/network/socket/qsocks5socketengine.cpp" line="4"/>
+ <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>連線被拒</translation>
</message>
<message>
+ <location line="+141"/>
<source>Connection timed out</source>
<translation>連線逾時</translation>
</message>
<message>
+ <location line="-547"/>
+ <location line="+787"/>
+ <location line="+208"/>
<source>Operation on socket is not supported</source>
<translation>Socket çš„æ“作未被支æ´</translation>
</message>
<message>
+ <location line="+137"/>
<source>Socket operation timed out</source>
<translation>Socket æ“作逾時</translation>
</message>
<message>
+ <location line="+380"/>
<source>Socket is not connected</source>
<translation>Socket 未連線</translation>
</message>
<message>
+ <location filename="../src/network/socket/qsocks5socketengine.cpp" line="-8"/>
<source>Network unreachable</source>
<translation>無法使用網路</translation>
</message>
@@ -710,15 +880,17 @@ to
<context>
<name>QAbstractSpinBox</name>
<message>
- <location filename="../src/gui/widgets/qabstractspinbox.cpp" line="1169"/>
+ <location filename="../src/gui/widgets/qabstractspinbox.cpp" line="+1199"/>
<source>&amp;Step up</source>
<translation>單步å‘上(&amp;S)</translation>
</message>
<message>
+ <location line="+2"/>
<source>Step &amp;down</source>
<translation>單步å‘下(&amp;D)</translation>
</message>
<message>
+ <location line="-8"/>
<source>&amp;Select All</source>
<translation>全部é¸æ“‡(&amp;S)</translation>
</message>
@@ -726,27 +898,28 @@ to
<context>
<name>QApplication</name>
<message>
- <location filename="../src/gui/accessible/qaccessibleobject.cpp" line="346"/>
+ <location filename="../src/gui/accessible/qaccessibleobject.cpp" line="+376"/>
<source>Activate</source>
<translation>å•Ÿå‹•</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qmessagebox.h" line="322"/>
+ <location filename="../src/gui/dialogs/qmessagebox.h" line="+352"/>
<source>Executable &apos;%1&apos; requires Qt %2, found Qt %3.</source>
<translation>執行檔 %1 éœ€è¦ Qt %2,但åªæ‰¾åˆ° Qt %3。</translation>
</message>
<message>
+ <location line="+2"/>
<source>Incompatible Qt Library Error</source>
<translation>Qt 函å¼åº«ä¸ç›¸å®¹çš„錯誤</translation>
</message>
<message>
- <location filename="../src/gui/kernel/qapplication.cpp" line="2212"/>
+ <location filename="../src/gui/kernel/qapplication.cpp" line="+2248"/>
<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>
<message>
- <location filename="../src/gui/accessible/qaccessibleobject.cpp" line="2"/>
+ <location filename="../src/gui/accessible/qaccessibleobject.cpp" line="+2"/>
<source>Activates the program&apos;s main window</source>
<translation>啟動程å¼çš„主視窗</translation>
</message>
@@ -754,18 +927,22 @@ to
<context>
<name>QAxSelect</name>
<message>
+ <location filename="../src/activeqt/container/qaxselect.ui"/>
<source>Select ActiveX Control</source>
<translation>é¸æ“‡ ActiveX 控制</translation>
</message>
<message>
+ <location/>
<source>OK</source>
<translation>確定</translation>
</message>
<message>
+ <location/>
<source>&amp;Cancel</source>
<translation>å–消(&amp;C)</translation>
</message>
<message>
+ <location/>
<source>COM &amp;Object:</source>
<translation>COM 物件(&amp;O)</translation>
</message>
@@ -773,15 +950,17 @@ to
<context>
<name>QCheckBox</name>
<message>
- <location filename="../src/plugins/accessible/widgets/simplewidgets.cpp" line="84"/>
+ <location filename="../src/plugins/accessible/widgets/simplewidgets.cpp" line="+114"/>
<source>Uncheck</source>
<translation>å–消勾é¸</translation>
</message>
<message>
+ <location line="+3"/>
<source>Check</source>
<translation>勾é¸</translation>
</message>
<message>
+ <location line="+1"/>
<source>Toggle</source>
<translation>切æ›</translation>
</message>
@@ -789,43 +968,52 @@ to
<context>
<name>QColorDialog</name>
<message>
- <location filename="../src/gui/dialogs/qcolordialog.cpp" line="1219"/>
+ <location filename="../src/gui/dialogs/qcolordialog.cpp" line="+1253"/>
<source>Hu&amp;e:</source>
<translation>色調(&amp;E):</translation>
</message>
<message>
+ <location line="+1"/>
<source>&amp;Sat:</source>
<translation>飽和度(&amp;S):</translation>
</message>
<message>
+ <location line="+1"/>
<source>&amp;Val:</source>
<translation>亮度(&amp;V):</translation>
</message>
<message>
+ <location line="+1"/>
<source>&amp;Red:</source>
<translation>紅(&amp;R):</translation>
</message>
<message>
+ <location line="+1"/>
<source>&amp;Green:</source>
<translation>綠(&amp;G):</translation>
</message>
<message>
+ <location line="+1"/>
<source>Bl&amp;ue:</source>
<translation>è—(&amp;U):</translation>
</message>
<message>
+ <location line="+1"/>
<source>A&amp;lpha channel:</source>
<translation>Alpha 色頻(&amp;L):</translation>
</message>
<message>
+ <location line="+101"/>
<source>Select Color</source>
<translation>é¸æ“‡é¡è‰²</translation>
</message>
<message>
+ <location line="+137"/>
<source>&amp;Basic colors</source>
<translation>基本é¡è‰²(&amp;B)</translation>
</message>
<message>
+ <location line="+1"/>
<source>&amp;Custom colors</source>
<translation>自訂é¡è‰²(&amp;C)</translation>
</message>
@@ -842,6 +1030,7 @@ to
<translation type="obsolete">å–消</translation>
</message>
<message>
+ <location line="+1"/>
<source>&amp;Add to Custom Colors</source>
<translation>新增到自訂é¡è‰²(&amp;A)</translation>
</message>
@@ -853,20 +1042,23 @@ to
<context>
<name>QComboBox</name>
<message>
+ <location filename="../src/plugins/accessible/widgets/complexwidgets.cpp" line="+1771"/>
+ <location line="+65"/>
<source>Open</source>
<translation>é–‹å•Ÿ</translation>
</message>
<message>
- <location filename="../src/gui/itemviews/qitemeditorfactory.cpp" line="514"/>
+ <location filename="../src/gui/itemviews/qitemeditorfactory.cpp" line="+544"/>
<source>False</source>
<translation>å‡</translation>
</message>
<message>
+ <location line="+1"/>
<source>True</source>
<translation>真</translation>
</message>
<message>
- <location filename="../src/plugins/accessible/widgets/complexwidgets.cpp" line="0"/>
+ <location filename="../src/plugins/accessible/widgets/complexwidgets.cpp" line="+0"/>
<source>Close</source>
<translation>關閉</translation>
</message>
@@ -899,17 +1091,19 @@ to
<translation type="obsolete">%1:未知的錯誤 %2</translation>
</message>
<message>
- <location filename="../src/corelib/kernel/qsystemsemaphore_unix.cpp" line="89"/>
+ <location filename="../src/corelib/kernel/qsystemsemaphore_unix.cpp" line="+119"/>
<source>%1: key is empty</source>
<comment>QSystemSemaphore</comment>
<translation>%1:éµå€¼æ˜¯ç©ºçš„</translation>
</message>
<message>
+ <location line="+12"/>
<source>%1: unable to make key</source>
<comment>QSystemSemaphore</comment>
<translation>%1:無法產生éµå€¼</translation>
</message>
<message>
+ <location line="+9"/>
<source>%1: ftok failed</source>
<comment>QSystemSemaphore</comment>
<translation>%1:ftok 失敗</translation>
@@ -918,19 +1112,22 @@ to
<context>
<name>QDB2Driver</name>
<message>
- <location filename="../src/sql/drivers/db2/qsql_db2.cpp" line="1217"/>
+ <location filename="../src/sql/drivers/db2/qsql_db2.cpp" line="+1276"/>
<source>Unable to connect</source>
<translation>無法連接</translation>
</message>
<message>
+ <location line="+303"/>
<source>Unable to commit transaction</source>
<translation>無法æ交事務</translation>
</message>
<message>
+ <location line="+17"/>
<source>Unable to rollback transaction</source>
<translation>無法å轉事務</translation>
</message>
<message>
+ <location line="+15"/>
<source>Unable to set autocommit</source>
<translation>無法設定自動æ交</translation>
</message>
@@ -938,26 +1135,33 @@ to
<context>
<name>QDB2Result</name>
<message>
+ <location line="-1043"/>
+ <location line="+243"/>
<source>Unable to execute statement</source>
<translation>無法執行敘述</translation>
</message>
<message>
+ <location line="-206"/>
<source>Unable to prepare statement</source>
<translation>無法準備敘述</translation>
</message>
<message>
+ <location line="+196"/>
<source>Unable to bind variable</source>
<translation>無法çµåˆè®Šæ•¸</translation>
</message>
<message>
+ <location line="+92"/>
<source>Unable to fetch record %1</source>
<translation>無法抓å–紀錄 %1</translation>
</message>
<message>
+ <location line="+17"/>
<source>Unable to fetch next</source>
<translation>無法抓å–下一筆</translation>
</message>
<message>
+ <location line="+20"/>
<source>Unable to fetch first</source>
<translation>無法抓å–第一筆</translation>
</message>
@@ -965,19 +1169,22 @@ to
<context>
<name>QDateTimeEdit</name>
<message>
- <location filename="../src/gui/widgets/qdatetimeedit.cpp" line="2265"/>
+ <location filename="../src/gui/widgets/qdatetimeedit.cpp" line="+2295"/>
<source>AM</source>
<translation>AM</translation>
</message>
<message>
+ <location line="+0"/>
<source>am</source>
<translation>am</translation>
</message>
<message>
+ <location line="+2"/>
<source>PM</source>
<translation>PM</translation>
</message>
<message>
+ <location line="+0"/>
<source>pm</source>
<translation>pm</translation>
</message>
@@ -985,15 +1192,17 @@ to
<context>
<name>QDial</name>
<message>
- <location filename="../src/plugins/accessible/widgets/rangecontrols.cpp" line="921"/>
+ <location filename="../src/plugins/accessible/widgets/rangecontrols.cpp" line="+951"/>
<source>QDial</source>
<translation>QDial</translation>
</message>
<message>
+ <location line="+2"/>
<source>SpeedoMeter</source>
<translation>SpeedoMeter</translation>
</message>
<message>
+ <location line="+2"/>
<source>SliderHandle</source>
<translation>SliderHandle</translation>
</message>
@@ -1001,11 +1210,12 @@ to
<context>
<name>QDialog</name>
<message>
- <location filename="../src/gui/dialogs/qdialog.cpp" line="567"/>
+ <location filename="../src/gui/dialogs/qdialog.cpp" line="+597"/>
<source>What&apos;s This?</source>
<translation>這是什麼?</translation>
</message>
<message>
+ <location line="-115"/>
<source>Done</source>
<translation>完æˆ</translation>
</message>
@@ -1013,100 +1223,124 @@ to
<context>
<name>QDialogButtonBox</name>
<message>
- <location filename="../src/gui/widgets/qdialogbuttonbox.cpp" line="531"/>
+ <location filename="../src/gui/dialogs/qmessagebox.cpp" line="+1866"/>
+ <location line="+464"/>
+ <location filename="../src/gui/widgets/qdialogbuttonbox.cpp" line="+561"/>
<source>OK</source>
<translation>確定</translation>
</message>
<message>
- <location filename="../src/gui/widgets/qdialogbuttonbox.cpp" line="3"/>
+ <location filename="../src/gui/widgets/qdialogbuttonbox.cpp" line="+3"/>
<source>Save</source>
<translation>儲存</translation>
</message>
<message>
+ <location line="+0"/>
<source>&amp;Save</source>
<translation>儲存(&amp;S)</translation>
</message>
<message>
+ <location line="+3"/>
<source>Open</source>
<translation>é–‹å•Ÿ</translation>
</message>
<message>
+ <location line="+3"/>
<source>Cancel</source>
<translation>å–消</translation>
</message>
<message>
+ <location line="+0"/>
<source>&amp;Cancel</source>
<translation>å–消(&amp;C)</translation>
</message>
<message>
+ <location line="+3"/>
<source>Close</source>
<translation>關閉</translation>
</message>
<message>
+ <location line="+0"/>
<source>&amp;Close</source>
<translation>關閉(&amp;C)</translation>
</message>
<message>
+ <location line="+3"/>
<source>Apply</source>
<translation>套用</translation>
</message>
<message>
+ <location line="+3"/>
<source>Reset</source>
<translation>é‡ç½®</translation>
</message>
<message>
+ <location line="+3"/>
<source>Help</source>
<translation>說明</translation>
</message>
<message>
+ <location line="+4"/>
<source>Don&apos;t Save</source>
<translation>ä¸è¦å„²å­˜</translation>
</message>
<message>
+ <location line="+4"/>
<source>Discard</source>
<translation>丟棄</translation>
</message>
<message>
+ <location line="+3"/>
<source>&amp;Yes</source>
<translation>是(&amp;Y)</translation>
</message>
<message>
+ <location line="+3"/>
<source>Yes to &amp;All</source>
<translation>全部回答是(&amp;A)</translation>
</message>
<message>
+ <location line="+3"/>
<source>&amp;No</source>
<translation>å¦(&amp;N)</translation>
</message>
<message>
+ <location line="+3"/>
<source>N&amp;o to All</source>
<translation>全部回答å¦(&amp;O)</translation>
</message>
<message>
+ <location line="+3"/>
<source>Save All</source>
<translation>全部儲存</translation>
</message>
<message>
+ <location line="+3"/>
<source>Abort</source>
<translation>中止</translation>
</message>
<message>
+ <location line="+3"/>
<source>Retry</source>
<translation>é‡è©¦</translation>
</message>
<message>
+ <location line="+3"/>
<source>Ignore</source>
<translation>忽略</translation>
</message>
<message>
+ <location line="+3"/>
<source>Restore Defaults</source>
<translation>回復é è¨­å€¼</translation>
</message>
<message>
+ <location line="-29"/>
<source>Close without Saving</source>
<translation>關閉而ä¸å„²å­˜</translation>
</message>
<message>
+ <location line="-27"/>
<source>&amp;OK</source>
<translation>確定(&amp;O)</translation>
</message>
@@ -1114,25 +1348,29 @@ to
<context>
<name>QDirModel</name>
<message>
- <location filename="../src/gui/itemviews/qdirmodel.cpp" line="423"/>
+ <location filename="../src/gui/itemviews/qdirmodel.cpp" line="+453"/>
<source>Name</source>
<translation>å稱</translation>
</message>
<message>
+ <location line="+1"/>
<source>Size</source>
<translation>大å°</translation>
</message>
<message>
+ <location line="+3"/>
<source>Kind</source>
<comment>Match OS X Finder</comment>
<translation>種類</translation>
</message>
<message>
+ <location line="+2"/>
<source>Type</source>
<comment>All other platforms</comment>
<translation>åž‹æ…‹</translation>
</message>
<message>
+ <location line="+6"/>
<source>Date Modified</source>
<translation>變更日期</translation>
</message>
@@ -1140,15 +1378,17 @@ to
<context>
<name>QDockWidget</name>
<message>
- <location filename="../src/plugins/accessible/widgets/qaccessiblewidgets.cpp" line="1209"/>
+ <location filename="../src/plugins/accessible/widgets/qaccessiblewidgets.cpp" line="+1239"/>
<source>Close</source>
<translation>關閉</translation>
</message>
<message>
+ <location line="+2"/>
<source>Dock</source>
<translation>嵌入</translation>
</message>
<message>
+ <location line="+1"/>
<source>Float</source>
<translation>飄浮</translation>
</message>
@@ -1156,10 +1396,12 @@ to
<context>
<name>QDoubleSpinBox</name>
<message>
+ <location filename="../src/plugins/accessible/widgets/rangecontrols.cpp" line="-537"/>
<source>More</source>
<translation>更多</translation>
</message>
<message>
+ <location line="+2"/>
<source>Less</source>
<translation>較少</translation>
</message>
@@ -1167,23 +1409,27 @@ to
<context>
<name>QErrorMessage</name>
<message>
- <location filename="../src/gui/dialogs/qerrormessage.cpp" line="162"/>
+ <location filename="../src/gui/dialogs/qerrormessage.cpp" line="+192"/>
<source>Debug Message:</source>
<translation>除錯訊æ¯ï¼š</translation>
</message>
<message>
+ <location line="+3"/>
<source>Warning:</source>
<translation>警告:</translation>
</message>
<message>
+ <location line="+3"/>
<source>Fatal Error:</source>
<translation>åš´é‡éŒ¯èª¤ï¼š</translation>
</message>
<message>
+ <location line="+193"/>
<source>&amp;Show this message again</source>
<translation>å†åº¦é¡¯ç¤ºæ­¤è¨Šæ¯(&amp;S)</translation>
</message>
<message>
+ <location line="+1"/>
<source>&amp;OK</source>
<translation>確定(&amp;O)</translation>
</message>
@@ -1191,22 +1437,33 @@ to
<context>
<name>QFile</name>
<message>
+ <location filename="../src/corelib/io/qfile.cpp" line="+708"/>
+ <location line="+141"/>
<source>Destination file exists</source>
<translation>目標檔已存在</translation>
</message>
<message>
+ <location line="-108"/>
+ <source>Cannot remove source file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+120"/>
<source>Cannot open %1 for input</source>
<translation>無法開啟 %1 以輸入</translation>
</message>
<message>
+ <location line="+17"/>
<source>Cannot open for output</source>
<translation>無法開啟 %1 以輸出</translation>
</message>
<message>
+ <location line="+10"/>
<source>Failure to write block</source>
<translation>寫入å€å¡Šæ™‚失敗</translation>
</message>
<message>
+ <location line="+13"/>
<source>Cannot create %1 for output</source>
<translation>無法建立 %1 以輸出</translation>
</message>
@@ -1214,32 +1471,44 @@ to
<context>
<name>QFileDialog</name>
<message>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="+515"/>
+ <location line="+444"/>
<source>All Files (*)</source>
<translation>所有檔案 (*)</translation>
</message>
<message>
+ <location line="+222"/>
<source>Directories</source>
<translation>目錄</translation>
</message>
<message>
+ <location line="-3"/>
+ <location line="+50"/>
+ <location line="+1471"/>
+ <location line="+75"/>
<source>&amp;Open</source>
<translation>é–‹å•Ÿ(&amp;O)</translation>
</message>
<message>
+ <location line="-1596"/>
+ <location line="+50"/>
<source>&amp;Save</source>
<translation>儲存(&amp;S)</translation>
</message>
<message>
+ <location line="-730"/>
<source>Open</source>
<translation>é–‹å•Ÿ</translation>
</message>
<message>
+ <location line="+1515"/>
<source>%1 already exists.
Do you want to replace it?</source>
<translation>%1 已存在
您è¦å–代它嗎?</translation>
</message>
<message>
+ <location line="+20"/>
<source>%1
File not found.
Please verify the correct file name was given.</source>
@@ -1248,43 +1517,58 @@ Please verify the correct file name was given.</source>
請檢查檔å是å¦æ­£ç¢ºã€‚</translation>
</message>
<message>
- <location filename="../src/gui/itemviews/qdirmodel.cpp" line="402"/>
+ <location filename="../src/gui/itemviews/qdirmodel.cpp" line="+402"/>
<source>My Computer</source>
<translation>我的電腦</translation>
</message>
<message>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-1504"/>
<source>&amp;Rename</source>
<translation>é‡æ–°å‘½å(&amp;R)</translation>
</message>
<message>
+ <location line="+1"/>
<source>&amp;Delete</source>
<translation>刪除(&amp;D)</translation>
</message>
<message>
+ <location line="+1"/>
<source>Show &amp;hidden files</source>
<translation>顯示隱è—檔(&amp;H)</translation>
</message>
<message>
+ <location filename="../src/gui/dialogs/qfiledialog.ui"/>
+ <location filename="../src/gui/dialogs/qfiledialog_wince.ui"/>
<source>Back</source>
<translation>返回</translation>
</message>
<message>
+ <location/>
+ <location filename="../src/gui/dialogs/qfiledialog_wince.ui"/>
<source>Parent Directory</source>
<translation>父目錄</translation>
</message>
<message>
+ <location/>
+ <location filename="../src/gui/dialogs/qfiledialog_wince.ui"/>
<source>List View</source>
<translation>列表檢視</translation>
</message>
<message>
+ <location/>
+ <location filename="../src/gui/dialogs/qfiledialog_wince.ui"/>
<source>Detail View</source>
<translation>詳細檢視</translation>
</message>
<message>
+ <location/>
+ <location filename="../src/gui/dialogs/qfiledialog_wince.ui"/>
<source>Files of type:</source>
<translation>檔案型態:</translation>
</message>
<message>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="+6"/>
+ <location line="+648"/>
<source>Directory:</source>
<translation>目錄:</translation>
</message>
@@ -1297,6 +1581,8 @@ Please verify the correct file name was given</source>
請檢查檔å是å¦æ­£ç¢ºã€‚</translation>
</message>
<message>
+ <location line="+794"/>
+ <location line="+862"/>
<source>%1
Directory not found.
Please verify the correct directory name was given.</source>
@@ -1305,84 +1591,105 @@ Please verify the correct directory name was given.</source>
請檢查目錄å稱是å¦æ­£ç¢ºã€‚</translation>
</message>
<message>
+ <location line="-218"/>
<source>&apos;%1&apos; is write protected.
Do you want to delete it anyway?</source>
<translation>%1 有寫入ä¿è­·ã€‚
您確定è¦åˆªé™¤å®ƒå—Žï¼Ÿ</translation>
</message>
<message>
+ <location line="+5"/>
<source>Are sure you want to delete &apos;%1&apos;?</source>
<translation>您確定è¦åˆªé™¤ %1 嗎?</translation>
</message>
<message>
+ <location line="+15"/>
<source>Could not delete directory.</source>
<translation>無法刪除目錄。</translation>
</message>
<message>
+ <location line="+407"/>
<source>Recent Places</source>
<translation>最近的地方</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfiledialog_win.cpp" line="130"/>
+ <location filename="../src/gui/dialogs/qfiledialog_win.cpp" line="+160"/>
<source>All Files (*.*)</source>
<translation>所有檔案 (*.*)</translation>
</message>
<message>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-2550"/>
<source>Save As</source>
<translation>å¦å­˜æ–°æª”</translation>
</message>
<message>
- <location filename="../src/gui/itemviews/qfileiconprovider.cpp" line="381"/>
+ <location filename="../src/gui/itemviews/qfileiconprovider.cpp" line="+411"/>
<source>Drive</source>
<translation>ç£ç¢Ÿ</translation>
</message>
<message>
+ <location line="+3"/>
+ <location line="+1"/>
<source>File</source>
<translation>檔案</translation>
</message>
<message>
+ <location line="+29"/>
<source>Unknown</source>
<translation>未知</translation>
</message>
<message>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-4"/>
<source>Find Directory</source>
<translation>尋找目錄</translation>
</message>
<message>
+ <location line="+29"/>
<source>Show </source>
<translation>顯示 </translation>
</message>
<message>
+ <location filename="../src/gui/dialogs/qfiledialog.ui"/>
+ <location filename="../src/gui/dialogs/qfiledialog_wince.ui"/>
<source>Forward</source>
<translation>å¾€å‰</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfiledialog.cpp" line="1914"/>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="+1970"/>
<source>New Folder</source>
<translation>新資料夾</translation>
</message>
<message>
+ <location line="-1963"/>
<source>&amp;New Folder</source>
<translation>新增資料夾(&amp;N)</translation>
</message>
<message>
+ <location line="+656"/>
+ <location line="+38"/>
<source>&amp;Choose</source>
<translation>é¸æ“‡(&amp;C)</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qsidebar.cpp" line="388"/>
+ <location filename="../src/gui/dialogs/qsidebar.cpp" line="+418"/>
<source>Remove</source>
<translation>移除</translation>
</message>
<message>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-687"/>
+ <location line="+652"/>
<source>File &amp;name:</source>
<translation>檔å(&amp;N):</translation>
</message>
<message>
+ <location filename="../src/gui/dialogs/qfiledialog.ui"/>
+ <location filename="../src/gui/dialogs/qfiledialog_wince.ui"/>
<source>Look in:</source>
<translation>尋找於:</translation>
</message>
<message>
+ <location/>
+ <location filename="../src/gui/dialogs/qfiledialog_wince.ui"/>
<source>Create New Folder</source>
<translation>建立新資料夾</translation>
</message>
@@ -1390,62 +1697,74 @@ Do you want to delete it anyway?</source>
<context>
<name>QFileSystemModel</name>
<message>
- <location filename="../src/gui/dialogs/qfilesystemmodel.cpp" line="791"/>
+ <location filename="../src/gui/dialogs/qfilesystemmodel.cpp" line="+828"/>
<source>Invalid filename</source>
<translation>ä¸åˆæ³•çš„檔å</translation>
</message>
<message>
+ <location line="+1"/>
<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;無法使用å稱 &quot;%1&quot;。&lt;/b&gt;&lt;p&gt;請使用其它å稱,字元數少一點,或是ä¸è¦æœ‰æ¨™é»žç¬¦è™Ÿã€‚</translation>
</message>
<message>
+ <location line="+63"/>
<source>Name</source>
<translation>å稱</translation>
</message>
<message>
+ <location line="+2"/>
<source>Size</source>
<translation>大å°</translation>
</message>
<message>
+ <location line="+4"/>
<source>Kind</source>
<comment>Match OS X Finder</comment>
<translation>種類</translation>
</message>
<message>
+ <location line="+2"/>
<source>Type</source>
<comment>All other platforms</comment>
<translation>åž‹æ…‹</translation>
</message>
<message>
+ <location line="+7"/>
<source>Date Modified</source>
<translation>變更日期</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfilesystemmodel_p.h" line="204"/>
+ <location filename="../src/gui/dialogs/qfilesystemmodel_p.h" line="+234"/>
<source>My Computer</source>
<translation>我的電腦</translation>
</message>
<message>
+ <location line="+2"/>
<source>Computer</source>
<translation>電腦</translation>
</message>
<message>
+ <location filename="../src/gui/dialogs/qfilesystemmodel.cpp" line="-163"/>
<source>%1 TB</source>
<translation>%1 TB</translation>
</message>
<message>
+ <location line="+2"/>
<source>%1 GB</source>
<translation>%1 GB</translation>
</message>
<message>
+ <location line="+2"/>
<source>%1 MB</source>
<translation>%1 MB</translation>
</message>
<message>
+ <location line="+2"/>
<source>%1 KB</source>
<translation>%1 KB</translation>
</message>
<message>
+ <location line="+1"/>
<source>%1 bytes</source>
<translation>%1 ä½å…ƒçµ„</translation>
</message>
@@ -1453,166 +1772,216 @@ Do you want to delete it anyway?</source>
<context>
<name>QFontDatabase</name>
<message>
+ <location filename="../src/gui/text/qfontdatabase.cpp" line="+90"/>
+ <location line="+1176"/>
<source>Normal</source>
<translation>正常</translation>
</message>
<message>
+ <location line="-1173"/>
+ <location line="+12"/>
+ <location line="+1149"/>
<source>Bold</source>
<translation>ç²—é«”</translation>
</message>
<message>
+ <location line="-1158"/>
+ <location line="+1160"/>
<source>Demi Bold</source>
<translation>åŠç²—é«”</translation>
</message>
<message>
+ <location line="-1157"/>
+ <location line="+18"/>
+ <location line="+1135"/>
<source>Black</source>
<translation>黑體</translation>
</message>
<message>
+ <location line="-1145"/>
<source>Demi</source>
<translation>åŠé«”</translation>
</message>
<message>
+ <location line="+6"/>
+ <location line="+1145"/>
<source>Light</source>
<translation>輕體</translation>
</message>
<message>
+ <location line="-1004"/>
+ <location line="+1007"/>
<source>Italic</source>
<translation>斜體</translation>
</message>
<message>
+ <location line="-1004"/>
+ <location line="+1006"/>
<source>Oblique</source>
<translation>傾斜體</translation>
</message>
<message>
+ <location line="+705"/>
<source>Any</source>
<translation>任何</translation>
</message>
<message>
+ <location line="+3"/>
<source>Latin</source>
<translation>拉ä¸</translation>
</message>
<message>
+ <location line="+3"/>
<source>Greek</source>
<translation>希臘</translation>
</message>
<message>
+ <location line="+3"/>
<source>Cyrillic</source>
<translation>斯拉夫</translation>
</message>
<message>
+ <location line="+3"/>
<source>Armenian</source>
<translation>亞美尼亞</translation>
</message>
<message>
+ <location line="+3"/>
<source>Hebrew</source>
<translation>希伯來</translation>
</message>
<message>
+ <location line="+3"/>
<source>Arabic</source>
<translation>阿拉伯</translation>
</message>
<message>
+ <location line="+3"/>
<source>Syriac</source>
<translation>敘利亞</translation>
</message>
<message>
+ <location line="+3"/>
<source>Thaana</source>
<translation>Thaana</translation>
</message>
<message>
+ <location line="+3"/>
<source>Devanagari</source>
<translation>Devanagari</translation>
</message>
<message>
+ <location line="+3"/>
<source>Bengali</source>
<translation>孟加拉</translation>
</message>
<message>
+ <location line="+3"/>
<source>Gurmukhi</source>
<translation>Gurmukhi</translation>
</message>
<message>
+ <location line="+3"/>
<source>Gujarati</source>
<translation>Gujarati</translation>
</message>
<message>
+ <location line="+3"/>
<source>Oriya</source>
<translation>Oriya</translation>
</message>
<message>
+ <location line="+3"/>
<source>Tamil</source>
<translation>å¦ç±³çˆ¾</translation>
</message>
<message>
+ <location line="+3"/>
<source>Telugu</source>
<translation>Telugu</translation>
</message>
<message>
+ <location line="+3"/>
<source>Kannada</source>
<translation>åŽé”é‚£</translation>
</message>
<message>
+ <location line="+3"/>
<source>Malayalam</source>
<translation>馬來語</translation>
</message>
<message>
+ <location line="+3"/>
<source>Sinhala</source>
<translation>錫蘭</translation>
</message>
<message>
+ <location line="+3"/>
<source>Thai</source>
<translation>泰語</translation>
</message>
<message>
+ <location line="+3"/>
<source>Lao</source>
<translation>寮國</translation>
</message>
<message>
+ <location line="+3"/>
<source>Tibetan</source>
<translation>西è—</translation>
</message>
<message>
+ <location line="+3"/>
<source>Myanmar</source>
<translation>緬甸</translation>
</message>
<message>
+ <location line="+3"/>
<source>Georgian</source>
<translation>喬治亞</translation>
</message>
<message>
+ <location line="+3"/>
<source>Khmer</source>
<translation>高棉</translation>
</message>
<message>
+ <location line="+3"/>
<source>Simplified Chinese</source>
<translation>簡體中文</translation>
</message>
<message>
+ <location line="+3"/>
<source>Traditional Chinese</source>
<translation>ç¹é«”中文</translation>
</message>
<message>
+ <location line="+3"/>
<source>Japanese</source>
<translation>日語</translation>
</message>
<message>
+ <location line="+3"/>
<source>Korean</source>
<translation>韓語</translation>
</message>
<message>
+ <location line="+3"/>
<source>Vietnamese</source>
<translation>越å—</translation>
</message>
<message>
+ <location line="+3"/>
<source>Symbol</source>
<translation>符號</translation>
</message>
<message>
+ <location line="+3"/>
<source>Ogham</source>
<translation>æ­ç”˜</translation>
</message>
<message>
+ <location line="+3"/>
<source>Runic</source>
<translation>盧æ©</translation>
</message>
@@ -1620,39 +1989,48 @@ Do you want to delete it anyway?</source>
<context>
<name>QFontDialog</name>
<message>
- <location filename="../src/gui/dialogs/qfontdialog.cpp" line="742"/>
+ <location filename="../src/gui/dialogs/qfontdialog.cpp" line="+772"/>
<source>&amp;Font</source>
<translation>å­—åž‹(&amp;F)</translation>
</message>
<message>
+ <location line="+1"/>
<source>Font st&amp;yle</source>
<translation>字型樣å¼(&amp;Y)</translation>
</message>
<message>
+ <location line="+1"/>
<source>&amp;Size</source>
<translation>大å°(&amp;S)</translation>
</message>
<message>
+ <location line="+1"/>
<source>Effects</source>
<translation>效果</translation>
</message>
<message>
+ <location line="+1"/>
<source>Stri&amp;keout</source>
<translation>刪除線(&amp;K)</translation>
</message>
<message>
+ <location line="+1"/>
<source>&amp;Underline</source>
<translation>底線(&amp;U)</translation>
</message>
<message>
+ <location line="+1"/>
<source>Sample</source>
<translation>範例</translation>
</message>
<message>
+ <location line="+1"/>
<source>Wr&amp;iting System</source>
<translation>寫入系統(&amp;I)</translation>
</message>
<message>
+ <location line="-604"/>
+ <location line="+247"/>
<source>Select Font</source>
<translation>é¸æ“‡å­—åž‹</translation>
</message>
@@ -1660,116 +2038,145 @@ Do you want to delete it anyway?</source>
<context>
<name>QFtp</name>
<message>
- <location filename="../src/qt3support/network/q3ftp.cpp" line="653"/>
+ <location filename="../src/network/access/qftp.cpp" line="+826"/>
+ <location filename="../src/qt3support/network/q3ftp.cpp" line="+683"/>
<source>Not connected</source>
<translation>未連線</translation>
</message>
<message>
- <location filename="../src/qt3support/network/q3ftp.cpp" line="65"/>
+ <location line="+65"/>
+ <location filename="../src/qt3support/network/q3ftp.cpp" line="+65"/>
<source>Host %1 not found</source>
<translation>找ä¸åˆ°ä¸»æ©Ÿ %1</translation>
</message>
<message>
- <location filename="../src/qt3support/network/q3ftp.cpp" line="4"/>
+ <location line="+4"/>
+ <location filename="../src/qt3support/network/q3ftp.cpp" line="+4"/>
<source>Connection refused to host %1</source>
<translation>連線到主機 %1 被拒</translation>
</message>
<message>
+ <location line="+4"/>
<source>Connection timed out to host %1</source>
<translation>連線到主機 %1 逾時</translation>
</message>
<message>
+ <location line="+104"/>
+ <location filename="../src/qt3support/network/q3ftp.cpp" line="+102"/>
+ <location line="+1451"/>
<source>Connected to host %1</source>
<translation>已連接到主機 %1</translation>
</message>
<message>
+ <location line="+219"/>
+ <location filename="../src/qt3support/network/q3ftp.cpp" line="-1290"/>
<source>Connection refused for data connection</source>
<translation>資料連線被拒</translation>
</message>
<message>
+ <location line="+178"/>
+ <location line="+29"/>
+ <location filename="../src/qt3support/network/q3ftp.cpp" line="+195"/>
+ <location line="+728"/>
<source>Unknown error</source>
<translation>未知的錯誤</translation>
</message>
<message>
- <location filename="../src/qt3support/network/q3ftp.cpp" line="77"/>
+ <location line="+889"/>
+ <location filename="../src/qt3support/network/q3ftp.cpp" line="+77"/>
<source>Connecting to host failed:
%1</source>
<translation>連線到主機失敗:
%1</translation>
</message>
<message>
- <location filename="../src/qt3support/network/q3ftp.cpp" line="3"/>
+ <location line="+4"/>
+ <location filename="../src/qt3support/network/q3ftp.cpp" line="+3"/>
<source>Login failed:
%1</source>
<translation>登入失敗:
%1</translation>
</message>
<message>
- <location filename="../src/qt3support/network/q3ftp.cpp" line="3"/>
+ <location line="+4"/>
+ <location filename="../src/qt3support/network/q3ftp.cpp" line="+3"/>
<source>Listing directory failed:
%1</source>
<translation>列出目錄時失敗:
%1</translation>
</message>
<message>
- <location filename="../src/qt3support/network/q3ftp.cpp" line="3"/>
+ <location line="+4"/>
+ <location filename="../src/qt3support/network/q3ftp.cpp" line="+3"/>
<source>Changing directory failed:
%1</source>
<translation>變更目錄時失敗:
%1</translation>
</message>
<message>
- <location filename="../src/qt3support/network/q3ftp.cpp" line="3"/>
+ <location line="+4"/>
+ <location filename="../src/qt3support/network/q3ftp.cpp" line="+3"/>
<source>Downloading file failed:
%1</source>
<translation>下載檔案時失敗:
%1</translation>
</message>
<message>
- <location filename="../src/qt3support/network/q3ftp.cpp" line="3"/>
+ <location line="+4"/>
+ <location filename="../src/qt3support/network/q3ftp.cpp" line="+3"/>
<source>Uploading file failed:
%1</source>
<translation>上傳檔案時失敗:
%1</translation>
</message>
<message>
- <location filename="../src/qt3support/network/q3ftp.cpp" line="3"/>
+ <location line="+4"/>
+ <location filename="../src/qt3support/network/q3ftp.cpp" line="+3"/>
<source>Removing file failed:
%1</source>
<translation>移除檔案時失敗:
%1</translation>
</message>
<message>
- <location filename="../src/qt3support/network/q3ftp.cpp" line="3"/>
+ <location line="+4"/>
+ <location filename="../src/qt3support/network/q3ftp.cpp" line="+3"/>
<source>Creating directory failed:
%1</source>
<translation>建立目錄時失敗:
%1</translation>
</message>
<message>
- <location filename="../src/qt3support/network/q3ftp.cpp" line="3"/>
+ <location line="+4"/>
+ <location filename="../src/qt3support/network/q3ftp.cpp" line="+3"/>
<source>Removing directory failed:
%1</source>
<translation>移除目錄時失敗:
%1</translation>
</message>
<message>
+ <location line="+28"/>
+ <location filename="../src/qt3support/network/q3ftp.cpp" line="+25"/>
+ <location line="+250"/>
<source>Connection closed</source>
<translation>連線已關閉</translation>
</message>
<message>
+ <location filename="../src/qt3support/network/q3ftp.cpp" line="-11"/>
<source>Host %1 found</source>
<translation>找到主機 %1</translation>
</message>
<message>
+ <location line="+4"/>
<source>Connection to %1 closed</source>
<translation>到 %1 的連線已關閉</translation>
</message>
<message>
+ <location line="+3"/>
<source>Host found</source>
<translation>找到主機</translation>
</message>
<message>
+ <location line="+2"/>
<source>Connected to host</source>
<translation>已連線到主機</translation>
</message>
@@ -1777,7 +2184,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QHostInfo</name>
<message>
- <location filename="../src/network/kernel/qhostinfo_p.h" line="153"/>
+ <location filename="../src/network/kernel/qhostinfo_p.h" line="+183"/>
<source>Unknown error</source>
<translation>未知的錯誤</translation>
</message>
@@ -1785,14 +2192,29 @@ Do you want to delete it anyway?</source>
<context>
<name>QHostInfoAgent</name>
<message>
+ <location filename="../src/network/kernel/qhostinfo_unix.cpp" line="+178"/>
+ <location line="+9"/>
+ <location line="+64"/>
+ <location line="+31"/>
+ <location filename="../src/network/kernel/qhostinfo_win.cpp" line="+180"/>
+ <location line="+9"/>
+ <location line="+40"/>
+ <location line="+27"/>
<source>Host not found</source>
<translation>找ä¸åˆ°ä¸»æ©Ÿ</translation>
</message>
<message>
+ <location line="-44"/>
+ <location line="+39"/>
+ <location filename="../src/network/kernel/qhostinfo_win.cpp" line="-34"/>
+ <location line="+29"/>
<source>Unknown address type</source>
<translation>未知的ä½å€åž‹æ…‹</translation>
</message>
<message>
+ <location line="+8"/>
+ <location filename="../src/network/kernel/qhostinfo_win.cpp" line="-19"/>
+ <location line="+27"/>
<source>Unknown error</source>
<translation>未知的錯誤</translation>
</message>
@@ -1800,116 +2222,155 @@ Do you want to delete it anyway?</source>
<context>
<name>QHttp</name>
<message>
+ <location filename="../src/network/access/qhttp.cpp" line="+1574"/>
+ <location line="+820"/>
+ <location filename="../src/qt3support/network/q3http.cpp" line="+1160"/>
+ <location line="+567"/>
<source>Unknown error</source>
<translation>未知的錯誤</translation>
</message>
<message>
+ <location line="-568"/>
+ <location filename="../src/qt3support/network/q3http.cpp" line="-370"/>
<source>Request aborted</source>
<translation>è¦æ±‚中止</translation>
</message>
<message>
- <location filename="../src/qt3support/network/q3http.cpp" line="381"/>
+ <location line="+579"/>
+ <location filename="../src/qt3support/network/q3http.cpp" line="+381"/>
<source>No server set to connect to</source>
<translation>沒有設定è¦é€£ç·šåˆ°å“ªå€‹ä¼ºæœå™¨</translation>
</message>
<message>
- <location filename="../src/qt3support/network/q3http.cpp" line="56"/>
+ <location line="+164"/>
+ <location filename="../src/qt3support/network/q3http.cpp" line="+56"/>
<source>Wrong content length</source>
<translation>錯誤的內容長度</translation>
</message>
<message>
- <location filename="../src/qt3support/network/q3http.cpp" line="4"/>
+ <location line="+4"/>
+ <location filename="../src/qt3support/network/q3http.cpp" line="+4"/>
<source>Server closed connection unexpectedly</source>
<translation>伺æœå™¨ç„¡é è­¦é—œé–‰é€£ç·š</translation>
</message>
<message>
+ <location line="+179"/>
+ <source>Unknown authentication method</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+183"/>
<source>Error writing response to device</source>
<translation>寫入回應到è£ç½®æ™‚發生錯誤</translation>
</message>
<message>
- <location filename="../src/qt3support/network/q3http.cpp" line="38"/>
+ <location filename="../src/network/access/qhttpnetworkconnection.cpp" line="+876"/>
+ <location filename="../src/qt3support/network/q3http.cpp" line="+38"/>
<source>Connection refused</source>
<translation>連線被拒</translation>
</message>
<message>
- <location filename="../src/qt3support/network/q3http.cpp" line="3"/>
+ <location filename="../src/network/access/qhttp.cpp" line="-304"/>
+ <location filename="../src/network/access/qhttpnetworkconnection.cpp" line="-4"/>
+ <location filename="../src/qt3support/network/q3http.cpp" line="+3"/>
<source>Host %1 not found</source>
<translation>找ä¸åˆ°ä¸»æ©Ÿ %1</translation>
</message>
<message>
- <location filename="../src/qt3support/network/q3http.cpp" line="3"/>
+ <location line="+20"/>
+ <location filename="../src/network/access/qhttpnetworkconnection.cpp" line="+10"/>
+ <location line="+19"/>
+ <location filename="../src/qt3support/network/q3http.cpp" line="+3"/>
<source>HTTP request failed</source>
<translation>HTTP è¦æ±‚失敗</translation>
</message>
<message>
- <location filename="../src/qt3support/network/q3http.cpp" line="69"/>
+ <location line="+73"/>
+ <location filename="../src/qt3support/network/q3http.cpp" line="+69"/>
<source>Invalid HTTP response header</source>
<translation>ä¸åˆæ³•çš„ HTTP 回覆標頭</translation>
</message>
<message>
+ <location line="+125"/>
+ <location line="+48"/>
+ <location filename="../src/qt3support/network/q3http.cpp" line="+40"/>
+ <location line="+47"/>
<source>Invalid HTTP chunked body</source>
<translation>ä¸åˆæ³•çš„ HTTP å€å¡Šä¸»é«”</translation>
</message>
<message>
- <location filename="../src/qt3support/network/q3http.cpp" line="294"/>
+ <location filename="../src/qt3support/network/q3http.cpp" line="+294"/>
<source>Host %1 found</source>
<translation>找到主機 %1</translation>
</message>
<message>
+ <location line="+3"/>
<source>Connected to host %1</source>
<translation>已連接到主機 %1</translation>
</message>
<message>
+ <location line="+3"/>
<source>Connection to %1 closed</source>
<translation>到 %1 的連線已關閉</translation>
</message>
<message>
+ <location line="+8"/>
<source>Host found</source>
<translation>找到主機</translation>
</message>
<message>
+ <location line="+3"/>
<source>Connected to host</source>
<translation>已連線到主機</translation>
</message>
<message>
- <location filename="../src/qt3support/network/q3http.cpp" line="3"/>
+ <location filename="../src/network/access/qhttpnetworkconnection.cpp" line="-22"/>
+ <location filename="../src/qt3support/network/q3http.cpp" line="+3"/>
<source>Connection closed</source>
<translation>連線已關閉</translation>
</message>
<message>
+ <location filename="../src/network/access/qhttp.cpp" line="-135"/>
<source>Proxy authentication required</source>
<translation>代ç†ä¼ºæœå™¨éœ€è¦èªè­‰</translation>
</message>
<message>
+ <location line="+4"/>
<source>Authentication required</source>
<translation>需è¦èªè­‰</translation>
</message>
<message>
+ <location line="-138"/>
<source>Connection refused (or timed out)</source>
<translation>連線被拒(或連線逾時)</translation>
</message>
<message>
- <location filename="../src/network/access/qhttpnetworkconnection.cpp" line="6"/>
+ <location filename="../src/network/access/qhttpnetworkconnection.cpp" line="+6"/>
<source>Proxy requires authentication</source>
<translation>代ç†ä¼ºæœå™¨éœ€è¦èªè­‰</translation>
</message>
<message>
+ <location line="+3"/>
<source>Host requires authentication</source>
<translation>主機需è¦èªè­‰</translation>
</message>
<message>
+ <location line="+3"/>
<source>Data corrupted</source>
<translation>資料已æ毀</translation>
</message>
<message>
+ <location line="+3"/>
<source>Unknown protocol specified</source>
<translation>指定了未知的å”定</translation>
</message>
<message>
+ <location line="+3"/>
<source>SSL handshake failed</source>
<translation>SSL æºé€šå¤±æ•—</translation>
</message>
<message>
+ <location filename="../src/network/access/qhttp.cpp" line="-2263"/>
<source>HTTPS connection requested but SSL support not compiled in</source>
<translation>HTTPS 連線需è¦çš„ SSL 支æ´ä¸¦æœªç·¨è­¯é€²ä¾†</translation>
</message>
@@ -1917,38 +2378,47 @@ Do you want to delete it anyway?</source>
<context>
<name>QHttpSocketEngine</name>
<message>
+ <location filename="../src/network/socket/qhttpsocketengine.cpp" line="-89"/>
<source>Did not receive HTTP response from proxy</source>
<translation>未從代ç†ä¼ºæœå™¨æŽ¥æ”¶åˆ° HTTP 回應</translation>
</message>
<message>
+ <location line="+25"/>
<source>Error parsing authentication request from proxy</source>
<translation>剖æžå¾žä»£ç†ä¼ºæœå™¨å‚³ä¾†çš„èªè­‰è¦æ±‚時發生錯誤</translation>
</message>
<message>
+ <location line="+31"/>
<source>Authentication required</source>
<translation>需è¦èªè­‰</translation>
</message>
<message>
+ <location line="+27"/>
<source>Proxy denied connection</source>
<translation>代ç†ä¼ºæœå™¨æ‹’絕連線</translation>
</message>
<message>
+ <location line="+10"/>
<source>Error communicating with HTTP proxy</source>
<translation>與 HTTP 代ç†ä¼ºæœå™¨è¯ç¹«æ™‚發生錯誤</translation>
</message>
<message>
+ <location line="+23"/>
<source>Proxy server not found</source>
<translation>找ä¸åˆ°ä»£ç†ä¼ºæœå™¨</translation>
</message>
<message>
+ <location line="+2"/>
<source>Proxy connection refused</source>
<translation>代ç†ä¼ºæœå™¨é€£ç·šè¢«æ‹’</translation>
</message>
<message>
+ <location line="+2"/>
<source>Proxy server connection timed out</source>
<translation>代ç†ä¼ºæœå™¨é€£ç·šé€¾æ™‚</translation>
</message>
<message>
+ <location line="+2"/>
<source>Proxy connection closed prematurely</source>
<translation>代ç†ä¼ºæœå™¨é€£ç·šå·²ä¸æ­£å¸¸é—œé–‰</translation>
</message>
@@ -1956,19 +2426,22 @@ Do you want to delete it anyway?</source>
<context>
<name>QIBaseDriver</name>
<message>
- <location filename="../src/sql/drivers/ibase/qsql_ibase.cpp" line="1378"/>
+ <location filename="../src/sql/drivers/ibase/qsql_ibase.cpp" line="+1428"/>
<source>Error opening database</source>
<translation>開啟資料庫發生錯誤</translation>
</message>
<message>
+ <location line="+54"/>
<source>Could not start transaction</source>
<translation>無法開始事務</translation>
</message>
<message>
+ <location line="+13"/>
<source>Unable to commit transaction</source>
<translation>無法æ交事務</translation>
</message>
<message>
+ <location line="+13"/>
<source>Unable to rollback transaction</source>
<translation>無法å轉事務</translation>
</message>
@@ -1976,70 +2449,89 @@ Do you want to delete it anyway?</source>
<context>
<name>QIBaseResult</name>
<message>
+ <location line="-1097"/>
<source>Unable to create BLOB</source>
<translation>無法建立 BLOB</translation>
</message>
<message>
+ <location line="+6"/>
<source>Unable to write BLOB</source>
<translation>無法寫入 BLOB</translation>
</message>
<message>
+ <location line="+14"/>
<source>Unable to open BLOB</source>
<translation>無法開啟 BLOB</translation>
</message>
<message>
+ <location line="+16"/>
<source>Unable to read BLOB</source>
<translation>ç„¡æ³•è®€å– BLOB</translation>
</message>
<message>
+ <location line="+125"/>
+ <location line="+189"/>
<source>Could not find array</source>
<translation>找ä¸åˆ°é™£åˆ—</translation>
</message>
<message>
+ <location line="-157"/>
<source>Could not get array data</source>
<translation>無法å–得陣列資料</translation>
</message>
<message>
+ <location line="+212"/>
<source>Could not get query info</source>
<translation>無法å–得查詢資訊</translation>
</message>
<message>
+ <location line="+20"/>
<source>Could not start transaction</source>
<translation>無法開始事務</translation>
</message>
<message>
+ <location line="+19"/>
<source>Unable to commit transaction</source>
<translation>無法æ交事務</translation>
</message>
<message>
+ <location line="+33"/>
<source>Could not allocate statement</source>
<translation>無法é…置敘述</translation>
</message>
<message>
+ <location line="+5"/>
<source>Could not prepare statement</source>
<translation>無法準備敘述</translation>
</message>
<message>
+ <location line="+5"/>
+ <location line="+7"/>
<source>Could not describe input statement</source>
<translation>無法æ述輸入敘述</translation>
</message>
<message>
+ <location line="+10"/>
<source>Could not describe statement</source>
<translation>無法æ述敘述</translation>
</message>
<message>
+ <location line="+115"/>
<source>Unable to close statement</source>
<translation>無法關閉敘述</translation>
</message>
<message>
+ <location line="+8"/>
<source>Unable to execute query</source>
<translation>無法執行查詢</translation>
</message>
<message>
+ <location line="+46"/>
<source>Could not fetch next item</source>
<translation>無法抓å–下一個項目</translation>
</message>
<message>
+ <location line="+160"/>
<source>Could not get statement info</source>
<translation>無法å–得敘述資訊</translation>
</message>
@@ -2047,24 +2539,27 @@ Do you want to delete it anyway?</source>
<context>
<name>QIODevice</name>
<message>
- <location filename="../src/corelib/global/qglobal.cpp" line="1830"/>
+ <location filename="../src/corelib/global/qglobal.cpp" line="+1869"/>
<source>Permission denied</source>
<translation>權é™ä¸è¶³</translation>
</message>
<message>
+ <location line="+3"/>
<source>Too many open files</source>
<translation>é–‹å•ŸéŽå¤šæª”案</translation>
</message>
<message>
+ <location line="+3"/>
<source>No such file or directory</source>
<translation>找ä¸åˆ°è©²æª”案或目錄</translation>
</message>
<message>
+ <location line="+3"/>
<source>No space left on device</source>
<translation>è£ç½®ä¸Šå·²ç„¡ç©ºé–“</translation>
</message>
<message>
- <location filename="../src/corelib/io/qiodevice.cpp" line="1506"/>
+ <location filename="../src/corelib/io/qiodevice.cpp" line="+1536"/>
<source>Unknown error</source>
<translation>未知的錯誤</translation>
</message>
@@ -2072,19 +2567,22 @@ Do you want to delete it anyway?</source>
<context>
<name>QInputContext</name>
<message>
- <location filename="../src/gui/inputmethod/qinputcontextfactory.cpp" line="212"/>
+ <location filename="../src/gui/inputmethod/qinputcontextfactory.cpp" line="+242"/>
<source>XIM</source>
<translation>XIM</translation>
</message>
<message>
+ <location line="+23"/>
<source>XIM input method</source>
<translation>XIM 輸入法</translation>
</message>
<message>
+ <location line="+4"/>
<source>Windows input method</source>
<translation>Windows 輸入法</translation>
</message>
<message>
+ <location line="+4"/>
<source>Mac OS X input method</source>
<translation>Mac OS X 輸入法</translation>
</message>
@@ -2092,7 +2590,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QInputDialog</name>
<message>
- <location filename="../src/gui/dialogs/qinputdialog.cpp" line="193"/>
+ <location filename="../src/gui/dialogs/qinputdialog.cpp" line="+223"/>
<source>Enter a value:</source>
<translation>請輸入值:</translation>
</message>
@@ -2112,55 +2610,66 @@ Do you want to delete it anyway?</source>
<translation type="obsolete">QLibrary::resolve_sys: 符號 &quot;%1&quot; 未定義於 %2 (%3)</translation>
</message>
<message>
- <location filename="../src/corelib/plugin/qlibrary.cpp" line="348"/>
+ <location filename="../src/corelib/plugin/qlibrary.cpp" line="+378"/>
<source>Could not mmap &apos;%1&apos;: %2</source>
<translation>無法 mmap &apos;%1&apos;:%2</translation>
</message>
<message>
+ <location line="+22"/>
<source>Plugin verification data mismatch in &apos;%1&apos;</source>
<translation>在 %1 中的外掛程å¼ç¢ºèªè³‡æ–™ä¸ç¬¦åˆ</translation>
</message>
<message>
+ <location line="+6"/>
<source>Could not unmap &apos;%1&apos;: %2</source>
<translation>無法 unmap &apos;%1&apos;:%2</translation>
</message>
<message>
+ <location line="+302"/>
<source>The plugin &apos;%1&apos; uses incompatible Qt library. (%2.%3.%4) [%5]</source>
<translation>å¤–æŽ›ç¨‹å¼ %1 使用ä¸ç›¸å®¹çš„ Qt 函å¼åº«ï¼ˆ%2.%3.%4)ã€%5】</translation>
</message>
<message>
+ <location line="+20"/>
<source>The plugin &apos;%1&apos; uses incompatible Qt library. Expected build key &quot;%2&quot;, got &quot;%3&quot;</source>
<translation>å¤–æŽ›ç¨‹å¼ %1 使用ä¸ç›¸å®¹çš„ Qt 函å¼åº«ã€‚é æœŸå»ºæ§‹é‘° %2,å»å¾—到 %3</translation>
</message>
<message>
+ <location line="+340"/>
<source>Unknown error</source>
<translation>未知的錯誤</translation>
</message>
<message>
- <location filename="../src/corelib/plugin/qpluginloader.cpp" line="250"/>
+ <location line="-377"/>
+ <location filename="../src/corelib/plugin/qpluginloader.cpp" line="+280"/>
<source>The shared library was not found.</source>
<translation>找ä¸åˆ°åˆ†äº«å‡½å¼åº«</translation>
</message>
<message>
+ <location line="+2"/>
<source>The file &apos;%1&apos; is not a valid Qt plugin.</source>
<translation>檔案 %1 ä¸æ˜¯åˆæ³•çš„ Qt 外掛程å¼ã€‚</translation>
</message>
<message>
+ <location line="+43"/>
<source>The plugin &apos;%1&apos; uses incompatible Qt library. (Cannot mix debug and release libraries.)</source>
<translation>å¤–æŽ›ç¨‹å¼ %1 使用ä¸ç›¸å®¹çš„ Qt 函å¼åº«ã€‚(ä¸èƒ½å°‡é™¤éŒ¯èˆ‡é‡‹å‡ºç‰ˆçš„函å¼åº«æ··åœ¨ä¸€èµ·ã€‚)</translation>
</message>
<message>
- <location filename="../src/corelib/plugin/qlibrary_win.cpp" line="69"/>
+ <location filename="../src/corelib/plugin/qlibrary_unix.cpp" line="+209"/>
+ <location filename="../src/corelib/plugin/qlibrary_win.cpp" line="+99"/>
<source>Cannot load library %1: %2</source>
<translation>無法載入函å¼åº« %1:%2</translation>
</message>
<message>
- <location filename="../src/corelib/plugin/qlibrary_win.cpp" line="26"/>
+ <location line="+16"/>
+ <location filename="../src/corelib/plugin/qlibrary_win.cpp" line="+26"/>
<source>Cannot unload library %1: %2</source>
<translation>無法å¸è¼‰å‡½å¼åº« %1:%2</translation>
</message>
<message>
- <location filename="../src/corelib/plugin/qlibrary_win.cpp" line="15"/>
+ <location line="+31"/>
+ <location filename="../src/corelib/plugin/qlibrary_win.cpp" line="+15"/>
<source>Cannot resolve symbol &quot;%1&quot; in %2: %3</source>
<translation>無法å解 %2 內的符號 %1:%3</translation>
</message>
@@ -2168,31 +2677,37 @@ Do you want to delete it anyway?</source>
<context>
<name>QLineEdit</name>
<message>
- <location filename="../src/gui/widgets/qlineedit.cpp" line="2649"/>
+ <location filename="../src/gui/widgets/qlineedit.cpp" line="+2680"/>
<source>&amp;Undo</source>
<translation>復原(&amp;U)</translation>
</message>
<message>
+ <location line="+4"/>
<source>&amp;Redo</source>
<translation>é‡åš(&amp;R)</translation>
</message>
<message>
+ <location line="+7"/>
<source>Cu&amp;t</source>
<translation>剪下(&amp;T)</translation>
</message>
<message>
+ <location line="+4"/>
<source>&amp;Copy</source>
<translation>複製(&amp;C)</translation>
</message>
<message>
+ <location line="+4"/>
<source>&amp;Paste</source>
<translation>貼上(&amp;P)</translation>
</message>
<message>
+ <location line="+5"/>
<source>Delete</source>
<translation>刪除</translation>
</message>
<message>
+ <location line="+6"/>
<source>Select All</source>
<translation>全部é¸æ“‡</translation>
</message>
@@ -2200,20 +2715,24 @@ Do you want to delete it anyway?</source>
<context>
<name>QLocalServer</name>
<message>
- <location filename="../src/network/socket/qlocalserver_unix.cpp" line="201"/>
+ <location filename="../src/network/socket/qlocalserver.cpp" line="+226"/>
+ <location filename="../src/network/socket/qlocalserver_unix.cpp" line="+231"/>
<source>%1: Name error</source>
<translation>%1:å稱錯誤</translation>
</message>
<message>
+ <location filename="../src/network/socket/qlocalserver_unix.cpp" line="-8"/>
<source>%1: Permission denied</source>
<translation>%1:存å–被拒</translation>
</message>
<message>
+ <location line="+12"/>
<source>%1: Address in use</source>
<translation>%1:ä½å€ä½¿ç”¨ä¸­</translation>
</message>
<message>
- <location filename="../src/network/socket/qlocalserver_win.cpp" line="127"/>
+ <location line="+5"/>
+ <location filename="../src/network/socket/qlocalserver_win.cpp" line="+158"/>
<source>%1: Unknown error %2</source>
<translation>%1:未知的錯誤 %2</translation>
</message>
@@ -2221,54 +2740,70 @@ Do you want to delete it anyway?</source>
<context>
<name>QLocalSocket</name>
<message>
- <location filename="../src/network/socket/qlocalsocket_unix.cpp" line="104"/>
+ <location filename="../src/network/socket/qlocalsocket_tcp.cpp" line="+132"/>
+ <location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+134"/>
<source>%1: Connection refused</source>
<translation>%1:連線被拒</translation>
</message>
<message>
- <location filename="../src/network/socket/qlocalsocket_unix.cpp" line="3"/>
+ <location line="+3"/>
+ <location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+3"/>
<source>%1: Remote closed</source>
<translation>%1:é ç«¯å·²é—œé–‰</translation>
</message>
<message>
+ <location line="+3"/>
+ <location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+3"/>
+ <location filename="../src/network/socket/qlocalsocket_win.cpp" line="+80"/>
+ <location line="+43"/>
<source>%1: Invalid name</source>
<translation>%1:ä¸åˆæ³•çš„å稱</translation>
</message>
<message>
- <location filename="../src/network/socket/qlocalsocket_unix.cpp" line="3"/>
+ <location line="+3"/>
+ <location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+3"/>
<source>%1: Socket access error</source>
<translation>%1:Socket ä½å€éŒ¯èª¤</translation>
</message>
<message>
- <location filename="../src/network/socket/qlocalsocket_unix.cpp" line="3"/>
+ <location line="+3"/>
+ <location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+3"/>
<source>%1: Socket resource error</source>
<translation>%1:Socket 資æºéŒ¯èª¤</translation>
</message>
<message>
- <location filename="../src/network/socket/qlocalsocket_unix.cpp" line="3"/>
+ <location line="+3"/>
+ <location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+3"/>
<source>%1: Socket operation timed out</source>
<translation>%1:Socket æ“作逾時</translation>
</message>
<message>
- <location filename="../src/network/socket/qlocalsocket_unix.cpp" line="3"/>
+ <location line="+3"/>
+ <location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+3"/>
<source>%1: Datagram too large</source>
<translation>%1:資料包éŽå¤§</translation>
</message>
<message>
+ <location line="+3"/>
+ <location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+3"/>
+ <location filename="../src/network/socket/qlocalsocket_win.cpp" line="-48"/>
<source>%1: Connection error</source>
<translation>%1:連線錯誤</translation>
</message>
<message>
- <location filename="../src/network/socket/qlocalsocket_unix.cpp" line="3"/>
+ <location line="+3"/>
+ <location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+3"/>
<source>%1: The socket operation is not supported</source>
<translation>%1:socket æ“作未支æ´</translation>
</message>
<message>
+ <location line="+4"/>
<source>%1: Unknown error</source>
<translation>%1:未知的錯誤</translation>
</message>
<message>
- <location filename="../src/network/socket/qlocalsocket_win.cpp" line="10"/>
+ <location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+4"/>
+ <location filename="../src/network/socket/qlocalsocket_win.cpp" line="+10"/>
<source>%1: Unknown error %2</source>
<translation>%1:未知的錯誤 %2</translation>
</message>
@@ -2276,23 +2811,27 @@ Do you want to delete it anyway?</source>
<context>
<name>QMYSQLDriver</name>
<message>
- <location filename="../src/sql/drivers/mysql/qsql_mysql.cpp" line="1200"/>
+ <location filename="../src/sql/drivers/mysql/qsql_mysql.cpp" line="+1231"/>
<source>Unable to open database &apos;</source>
<translation>無法開啟資料庫</translation>
</message>
<message>
+ <location line="+7"/>
<source>Unable to connect</source>
<translation>無法連線</translation>
</message>
<message>
+ <location line="+127"/>
<source>Unable to begin transaction</source>
<translation>無法開始事務</translation>
</message>
<message>
+ <location line="+17"/>
<source>Unable to commit transaction</source>
<translation>無法æ交事務</translation>
</message>
<message>
+ <location line="+17"/>
<source>Unable to rollback transaction</source>
<translation>無法å轉事務</translation>
</message>
@@ -2300,46 +2839,59 @@ Do you want to delete it anyway?</source>
<context>
<name>QMYSQLResult</name>
<message>
+ <location line="-922"/>
<source>Unable to fetch data</source>
<translation>無法抓å–資料</translation>
</message>
<message>
+ <location line="+176"/>
<source>Unable to execute query</source>
<translation>無法執行查詢</translation>
</message>
<message>
+ <location line="+6"/>
<source>Unable to store result</source>
<translation>無法儲存çµæžœ</translation>
</message>
<message>
+ <location line="+190"/>
+ <location line="+8"/>
<source>Unable to prepare statement</source>
<translation>無法準備敘述</translation>
</message>
<message>
+ <location line="+34"/>
<source>Unable to reset statement</source>
<translation>無法é‡ç½®æ•˜è¿°</translation>
</message>
<message>
+ <location line="+87"/>
<source>Unable to bind value</source>
<translation>無法çµåˆæ•¸å€¼</translation>
</message>
<message>
+ <location line="+11"/>
<source>Unable to execute statement</source>
<translation>無法執行敘述</translation>
</message>
<message>
+ <location line="+14"/>
+ <location line="+21"/>
<source>Unable to bind outvalues</source>
<translation>無法çµåˆè¼¸å‡ºå€¼</translation>
</message>
<message>
+ <location line="-12"/>
<source>Unable to store statement results</source>
<translation>無法儲存敘述çµæžœ</translation>
</message>
<message>
+ <location line="-253"/>
<source>Unable to execute next query</source>
<translation>無法執行下一個查詢</translation>
</message>
<message>
+ <location line="+10"/>
<source>Unable to store next result</source>
<translation>無法儲存下一個çµæžœ</translation>
</message>
@@ -2347,7 +2899,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QMdiArea</name>
<message>
- <location filename="../src/gui/widgets/qmdiarea.cpp" line="260"/>
+ <location filename="../src/gui/widgets/qmdiarea.cpp" line="+290"/>
<source>(Untitled)</source>
<translation>(未命å)</translation>
</message>
@@ -2355,75 +2907,92 @@ Do you want to delete it anyway?</source>
<context>
<name>QMdiSubWindow</name>
<message>
- <location filename="../src/gui/widgets/qmdisubwindow.cpp" line="250"/>
+ <location filename="../src/gui/widgets/qmdisubwindow.cpp" line="+280"/>
<source>%1 - [%2]</source>
<translation>%1 - [%2]</translation>
</message>
<message>
+ <location line="+72"/>
<source>Close</source>
<translation>關閉</translation>
</message>
<message>
+ <location line="-18"/>
<source>Minimize</source>
<translation>最å°åŒ–</translation>
</message>
<message>
+ <location line="+13"/>
<source>Restore Down</source>
<translation>å‘下æ¢å¾©</translation>
</message>
<message>
+ <location line="+707"/>
<source>&amp;Restore</source>
<translation>回復(&amp;R)</translation>
</message>
<message>
+ <location line="+3"/>
<source>&amp;Move</source>
<translation>移動(&amp;M)</translation>
</message>
<message>
+ <location line="+1"/>
<source>&amp;Size</source>
<translation>大å°(&amp;S)</translation>
</message>
<message>
+ <location line="+1"/>
<source>Mi&amp;nimize</source>
<translation>最å°åŒ–(&amp;N)</translation>
</message>
<message>
+ <location line="+2"/>
<source>Ma&amp;ximize</source>
<translation>最大化(&amp;X)</translation>
</message>
<message>
+ <location line="+2"/>
<source>Stay on &amp;Top</source>
<translation>留在頂端(&amp;T)</translation>
</message>
<message>
+ <location line="+3"/>
<source>&amp;Close</source>
<translation>關閉(&amp;C)</translation>
</message>
<message>
+ <location line="-787"/>
<source>- [%1]</source>
<translation>- [%1]</translation>
</message>
<message>
+ <location line="+58"/>
<source>Maximize</source>
<translation>最大化</translation>
</message>
<message>
+ <location line="+3"/>
<source>Unshade</source>
<translation>å–消é®è”½</translation>
</message>
<message>
+ <location line="+3"/>
<source>Shade</source>
<translation>é®è”½</translation>
</message>
<message>
+ <location line="+6"/>
<source>Restore</source>
<translation>回復</translation>
</message>
<message>
+ <location line="+6"/>
<source>Help</source>
<translation>說明</translation>
</message>
<message>
+ <location line="+3"/>
<source>Menu</source>
<translation>é¸å–®</translation>
</message>
@@ -2431,14 +3000,21 @@ Do you want to delete it anyway?</source>
<context>
<name>QMenu</name>
<message>
+ <location filename="../src/plugins/accessible/widgets/qaccessiblemenu.cpp" line="+157"/>
+ <location line="+225"/>
<source>Close</source>
<translation>關閉</translation>
</message>
<message>
+ <location line="-224"/>
+ <location line="+225"/>
<source>Open</source>
<translation>é–‹å•Ÿ</translation>
</message>
<message>
+ <location line="-223"/>
+ <location line="+225"/>
+ <location line="+51"/>
<source>Execute</source>
<translation>執行</translation>
</message>
@@ -2497,40 +3073,53 @@ Do you want to delete it anyway?</source>
<context>
<name>QMessageBox</name>
<message>
+ <location filename="../src/gui/dialogs/qmessagebox.cpp" line="-1111"/>
<source>Help</source>
<translation>說明</translation>
</message>
<message>
+ <location line="-853"/>
+ <location line="+852"/>
+ <location filename="../src/gui/dialogs/qmessagebox.h" line="-52"/>
+ <location line="+8"/>
<source>OK</source>
<translation>確定</translation>
</message>
<message>
+ <location line="+509"/>
<source>About Qt</source>
<translation>關於 Qt</translation>
</message>
<message>
<source>&lt;p&gt;This program uses Qt version %1.&lt;/p&gt;</source>
- <translation>&lt;p&gt; 這個程å¼ä½¿ç”¨ Qt 版本 %1&lt;/p&gt;</translation>
+ <translation type="obsolete">&lt;p&gt; 這個程å¼ä½¿ç”¨ Qt 版本 %1&lt;/p&gt;</translation>
</message>
<message>
<source>&lt;h3&gt;About Qt&lt;/h3&gt;%1&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 Qtopia Core.&lt;/p&gt;&lt;p&gt;Qt is a Trolltech product. See &lt;a href=&quot;http://qtsoftware.com/qt/&quot;&gt;qtsoftware.com/qt/&lt;/a&gt; for more information.&lt;/p&gt;</source>
<translation type="obsolete">&lt;h3&gt;關於 Qt&lt;/h3&gt;%1&lt;p&gt;Qt 為一個跨平å°çš„ C++ 開發工具。&lt;/p&gt;&lt;p&gt;Qt æä¾›å„å¹³å°ç›¸å®¹æ©Ÿåˆ¶ï¼Œåªè¦å¯«ä¸€ä»½ç¨‹å¼ç¢¼ï¼Œå°±å¯ä»¥åœ¨ MS&amp;nbsp;Windowsã€Mac&amp;nbsp;OS&amp;nbsp;Xã€Linux 與å„主è¦çš„商業 Unix å¹³å°ä¸Šç·¨è­¯ã€‚Qt 也å¯ä»¥ç”¨ Qtopia Core 用於嵌入å¼ç³»çµ±ã€‚&lt;/p&gt;&lt;p&gt;Qt 為 Trolltech 的產å“。詳情請åƒè€ƒ &lt;a href=&quot;http://qtsoftware.com/qt/&quot;&gt;qtsoftware.com/qt/&lt;/a&gt;。&lt;/p&gt;</translation>
</message>
<message>
+ <location line="-1605"/>
<source>Show Details...</source>
<translation>顯示詳情...</translation>
</message>
<message>
+ <location line="+1"/>
<source>Hide Details...</source>
<translation>éš±è—詳情...</translation>
</message>
<message>
+ <location line="+1570"/>
+ <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://www.qtsoftware.com/products/licensing&quot;&gt;www.qtsoftware.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://www.qtsoftware.com/qt/&quot;&gt;www.qtsoftware.com/qt&lt;/a&gt; for more information.&lt;/p&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<source>&lt;h3&gt;About Qt&lt;/h3&gt;%1&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 a Nokia product. See &lt;a href=&quot;http://qtsoftware.com/qt/&quot;&gt;qtsoftware.com/qt/&lt;/a&gt; for more information.&lt;/p&gt;</source>
- <translation>&lt;h3&gt;關於 Qt&lt;/h3&gt;%1&lt;p&gt;Qt 為一個跨平å°çš„ C++ 開發工具。&lt;/p&gt;&lt;p&gt;Qt æä¾›å„å¹³å°ç›¸å®¹æ©Ÿåˆ¶ï¼Œåªè¦å¯«ä¸€ä»½ç¨‹å¼ç¢¼ï¼Œå°±å¯ä»¥åœ¨ MS&amp;nbsp;Windowsã€Mac&amp;nbsp;OS&amp;nbsp;Xã€Linux 與å„主è¦çš„商業 Unix å¹³å°ä¸Šç·¨è­¯ã€‚Qt ä¹Ÿæœ‰ç”¨æ–¼åµŒå…¥å¼ Linux 與 Windows CE 的版本。&lt;/p&gt;&lt;p&gt;Qt 為 Nokia 的產å“。詳情請åƒè€ƒ &lt;a href=&quot;http://qtsoftware.com/qt/&quot;&gt;qtsoftware.com/qt/&lt;/a&gt;。&lt;/p&gt;</translation>
+ <translation type="obsolete">&lt;h3&gt;關於 Qt&lt;/h3&gt;%1&lt;p&gt;Qt 為一個跨平å°çš„ C++ 開發工具。&lt;/p&gt;&lt;p&gt;Qt æä¾›å„å¹³å°ç›¸å®¹æ©Ÿåˆ¶ï¼Œåªè¦å¯«ä¸€ä»½ç¨‹å¼ç¢¼ï¼Œå°±å¯ä»¥åœ¨ MS&amp;nbsp;Windowsã€Mac&amp;nbsp;OS&amp;nbsp;Xã€Linux 與å„主è¦çš„商業 Unix å¹³å°ä¸Šç·¨è­¯ã€‚Qt ä¹Ÿæœ‰ç”¨æ–¼åµŒå…¥å¼ Linux 與 Windows CE 的版本。&lt;/p&gt;&lt;p&gt;Qt 為 Nokia 的產å“。詳情請åƒè€ƒ &lt;a href=&quot;http://qtsoftware.com/qt/&quot;&gt;qtsoftware.com/qt/&lt;/a&gt;。&lt;/p&gt;</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://qtsoftware.com/company/model/&quot;&gt;qtsoftware.com/company/model/&lt;/a&gt; for an overview of Qt licensing.&lt;/p&gt;</source>
- <translation>&lt;p&gt;這個程å¼ä½¿ç”¨äº† Qt 開放æºç¢¼ç‰ˆæœ¬ %1。&lt;/p&gt;&lt;p&gt;Qt 開放æºç¢¼ç‰ˆæœ¬æ˜¯å°ˆé–€ç‚ºäº†é–‹ç™¼é–‹æ”¾æºç¢¼æ‡‰ç”¨ç¨‹å¼ä½¿ç”¨çš„版本。若是您è¦é–‹ç™¼å°ˆåˆ©ç§æœ‰ï¼ˆå°é–‰ï¼‰è»Ÿé«”ï¼Œæ‚¨éœ€è¦ Qt 的商業授權。&lt;/p&gt;&lt;p&gt;Qt 的授權概è¦è«‹åƒè€ƒ &lt;a href=&quot;http://qtsoftware.com/company/model/&quot;&gt;qtsoftware.com/company/model/&lt;/a&gt;。&lt;/p&gt;</translation>
+ <translation type="obsolete">&lt;p&gt;這個程å¼ä½¿ç”¨äº† Qt 開放æºç¢¼ç‰ˆæœ¬ %1。&lt;/p&gt;&lt;p&gt;Qt 開放æºç¢¼ç‰ˆæœ¬æ˜¯å°ˆé–€ç‚ºäº†é–‹ç™¼é–‹æ”¾æºç¢¼æ‡‰ç”¨ç¨‹å¼ä½¿ç”¨çš„版本。若是您è¦é–‹ç™¼å°ˆåˆ©ç§æœ‰ï¼ˆå°é–‰ï¼‰è»Ÿé«”ï¼Œæ‚¨éœ€è¦ Qt 的商業授權。&lt;/p&gt;&lt;p&gt;Qt 的授權概è¦è«‹åƒè€ƒ &lt;a href=&quot;http://qtsoftware.com/company/model/&quot;&gt;qtsoftware.com/company/model/&lt;/a&gt;。&lt;/p&gt;</translation>
</message>
<message>
<source>&lt;h3&gt;About Qt&lt;/h3&gt;%1&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 Embedded.&lt;/p&gt;&lt;p&gt;Qt is a Trolltech product. See &lt;a href=&quot;http://qtsoftware.com/qt/&quot;&gt;qtsoftware.com/qt/&lt;/a&gt; for more information.&lt;/p&gt;</source>
@@ -2540,7 +3129,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QMultiInputContext</name>
<message>
- <location filename="../src/plugins/inputmethods/imsw-multi/qmultiinputcontext.cpp" line="58"/>
+ <location filename="../src/plugins/inputmethods/imsw-multi/qmultiinputcontext.cpp" line="+88"/>
<source>Select IM</source>
<translation>é¸æ“‡è¼¸å…¥æ³•</translation>
</message>
@@ -2548,11 +3137,12 @@ Do you want to delete it anyway?</source>
<context>
<name>QMultiInputContextPlugin</name>
<message>
- <location filename="../src/plugins/inputmethods/imsw-multi/qmultiinputcontextplugin.cpp" line="65"/>
+ <location filename="../src/plugins/inputmethods/imsw-multi/qmultiinputcontextplugin.cpp" line="+95"/>
<source>Multiple input method switcher</source>
<translation>多é‡è¼¸å…¥æ³•åˆ‡æ›å™¨</translation>
</message>
<message>
+ <location line="+7"/>
<source>Multiple input method switcher that uses the context menu of the text widgets</source>
<translation>使用文字元件中的內文é¸å–®çš„多é‡è¼¸å…¥æ³•åˆ‡æ›å™¨</translation>
</message>
@@ -2560,107 +3150,132 @@ Do you want to delete it anyway?</source>
<context>
<name>QNativeSocketEngine</name>
<message>
- <location filename="../src/network/socket/qnativesocketengine.cpp" line="176"/>
+ <location filename="../src/network/socket/qnativesocketengine.cpp" line="+206"/>
<source>The remote host closed the connection</source>
<translation>é ç«¯ä¸»æ©Ÿé—œé–‰äº†é€£ç·š</translation>
</message>
<message>
+ <location line="+3"/>
<source>Network operation timed out</source>
<translation>網路æ“作逾時</translation>
</message>
<message>
+ <location line="+3"/>
<source>Out of resources</source>
<translation>資æºä¸è¶³</translation>
</message>
<message>
+ <location line="+3"/>
<source>Unsupported socket operation</source>
<translation>未支æ´çš„ socket æ“作</translation>
</message>
<message>
+ <location line="+3"/>
<source>Protocol type not supported</source>
<translation>å”定型態未支æ´</translation>
</message>
<message>
+ <location line="+3"/>
<source>Invalid socket descriptor</source>
<translation>ä¸åˆæ³•çš„ socket æè¿°å­</translation>
</message>
<message>
+ <location line="+6"/>
<source>Network unreachable</source>
<translation>無法使用網路</translation>
</message>
<message>
+ <location line="+3"/>
<source>Permission denied</source>
<translation>權é™ä¸è¶³</translation>
</message>
<message>
+ <location line="+3"/>
<source>Connection timed out</source>
<translation>連線逾時</translation>
</message>
<message>
+ <location line="+3"/>
<source>Connection refused</source>
<translation>連線被拒</translation>
</message>
<message>
+ <location line="+3"/>
<source>The bound address is already in use</source>
<translation>çµåˆçš„ä½å€å·²ç¶“在使用中</translation>
</message>
<message>
+ <location line="+3"/>
<source>The address is not available</source>
<translation>無法å–å¾—ä½å€</translation>
</message>
<message>
+ <location line="+3"/>
<source>The address is protected</source>
<translation>æ­¤ä½å€å·²è¢«ä¿è­·</translation>
</message>
<message>
+ <location line="+6"/>
<source>Unable to send a message</source>
<translation>無法é€å‡ºè¨Šæ¯</translation>
</message>
<message>
+ <location line="+3"/>
<source>Unable to receive a message</source>
<translation>無法接收訊æ¯</translation>
</message>
<message>
+ <location line="+3"/>
<source>Unable to write</source>
<translation>無法寫入</translation>
</message>
<message>
+ <location line="+3"/>
<source>Network error</source>
<translation>網路錯誤</translation>
</message>
<message>
+ <location line="+3"/>
<source>Another socket is already listening on the same port</source>
<translation>å¦ä¸€å€‹ socket 已經在監è½åŒä¸€å€‹é€£æŽ¥åŸ </translation>
</message>
<message>
+ <location line="-66"/>
<source>Unable to initialize non-blocking socket</source>
<translation>無法åˆå§‹åŒ–éžé˜»æ“‹æ€§ socket</translation>
</message>
<message>
+ <location line="+3"/>
<source>Unable to initialize broadcast socket</source>
<translation>無法åˆå§‹åŒ–廣播 socket</translation>
</message>
<message>
+ <location line="+3"/>
<source>Attempt to use IPv6 socket on a platform with no IPv6 support</source>
<translation>試圖在沒有 IPv6 支æ´çš„å¹³å°ä¸Šä½¿ç”¨ IPv6 socket</translation>
</message>
<message>
+ <location line="+21"/>
<source>Host unreachable</source>
<translation>無法連線到主機</translation>
</message>
<message>
+ <location line="+24"/>
<source>Datagram was too large to send</source>
<translation>資料éŽå¤§ç„¡æ³•é€å‡º</translation>
</message>
<message>
+ <location line="+18"/>
<source>Operation on non-socket</source>
<translation>å°éž socket æ“作</translation>
</message>
<message>
+ <location line="+6"/>
<source>Unknown error</source>
<translation>未知的錯誤</translation>
</message>
<message>
+ <location line="-3"/>
<source>The proxy type is invalid for this operation</source>
<translation>代ç†ä¼ºæœå™¨åž‹æ…‹ç„¡æ³•æ”¯æ´æ­¤æ“作</translation>
</message>
@@ -2668,7 +3283,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QNetworkAccessCacheBackend</name>
<message>
- <location filename="../src/network/access/qnetworkaccesscachebackend.cpp" line="35"/>
+ <location filename="../src/network/access/qnetworkaccesscachebackend.cpp" line="+65"/>
<source>Error opening %1</source>
<translation>開啟 %1 發生錯誤</translation>
</message>
@@ -2676,23 +3291,27 @@ Do you want to delete it anyway?</source>
<context>
<name>QNetworkAccessFileBackend</name>
<message>
- <location filename="../src/network/access/qnetworkaccessfilebackend.cpp" line="69"/>
+ <location filename="../src/network/access/qnetworkaccessfilebackend.cpp" line="+99"/>
<source>Request for opening non-local file %1</source>
<translation>è¦æ±‚é–‹å•Ÿéžæœ¬åœ°ç«¯æª”案 %1</translation>
</message>
<message>
+ <location line="+42"/>
<source>Error opening %1: %2</source>
<translation>開啟 %1 發生錯誤:%2</translation>
</message>
<message>
+ <location line="+56"/>
<source>Write error writing to %1: %2</source>
<translation>寫入 %1 時發生錯誤:%2</translation>
</message>
<message>
+ <location line="+33"/>
<source>Cannot open %1: Path is a directory</source>
<translation>無法開啟 %1:此路徑是一個目錄</translation>
</message>
<message>
+ <location line="+21"/>
<source>Read error reading from %1: %2</source>
<translation>從 %1 讀å–錯誤:%2</translation>
</message>
@@ -2700,23 +3319,27 @@ Do you want to delete it anyway?</source>
<context>
<name>QNetworkAccessFtpBackend</name>
<message>
- <location filename="../src/network/access/qnetworkaccessftpbackend.cpp" line="135"/>
+ <location filename="../src/network/access/qnetworkaccessftpbackend.cpp" line="+165"/>
<source>No suitable proxy found</source>
<translation>找ä¸åˆ°åˆé©çš„代ç†ä¼ºæœå™¨</translation>
</message>
<message>
+ <location line="+14"/>
<source>Cannot open %1: is a directory</source>
<translation>無法開啟 %1:是一個目錄</translation>
</message>
<message>
+ <location line="+130"/>
<source>Logging in to %1 failed: authentication required</source>
<translation>登入 %1 失敗:需è¦èªè­‰</translation>
</message>
<message>
+ <location line="+39"/>
<source>Error while downloading %1: %2</source>
<translation>下載 %1 時發生錯誤:%2</translation>
</message>
<message>
+ <location line="+2"/>
<source>Error while uploading %1: %2</source>
<translation>上傳 %1 時發生錯誤:%2</translation>
</message>
@@ -2724,7 +3347,7 @@ Do you want to delete it anyway?</source>
<context>
<name>QNetworkAccessHttpBackend</name>
<message>
- <location filename="../src/network/access/qnetworkaccesshttpbackend.cpp" line="565"/>
+ <location filename="../src/network/access/qnetworkaccesshttpbackend.cpp" line="+597"/>
<source>No suitable proxy found</source>
<translation>找ä¸åˆ°åˆé©çš„代ç†ä¼ºæœå™¨</translation>
</message>
@@ -2732,11 +3355,12 @@ Do you want to delete it anyway?</source>
<context>
<name>QNetworkReply</name>
<message>
+ <location line="+128"/>
<source>Error downloading %1 - server replied: %2</source>
<translation>下載 %1 時發生錯誤─伺æœå™¨å›žæ‡‰ï¼š%2</translation>
</message>
<message>
- <location filename="../src/network/access/qnetworkreplyimpl.cpp" line="37"/>
+ <location filename="../src/network/access/qnetworkreplyimpl.cpp" line="+68"/>
<source>Protocol &quot;%1&quot; is unknown</source>
<translation>未知的å”定 %1</translation>
</message>
@@ -2744,6 +3368,8 @@ Do you want to delete it anyway?</source>
<context>
<name>QNetworkReplyImpl</name>
<message>
+ <location line="+432"/>
+ <location line="+22"/>
<source>Operation canceled</source>
<translation>å–消æ“作</translation>
</message>
@@ -2751,24 +3377,28 @@ Do you want to delete it anyway?</source>
<context>
<name>QOCIDriver</name>
<message>
- <location filename="../src/sql/drivers/oci/qsql_oci.cpp" line="2027"/>
+ <location filename="../src/sql/drivers/oci/qsql_oci.cpp" line="+2069"/>
<source>Unable to logon</source>
<translation>無法登入</translation>
</message>
<message>
+ <location line="-144"/>
<source>Unable to initialize</source>
<comment>QOCIDriver</comment>
<translation>無法åˆå§‹åŒ–</translation>
</message>
<message>
+ <location line="+215"/>
<source>Unable to begin transaction</source>
<translation>無法開始事務</translation>
</message>
<message>
+ <location line="+19"/>
<source>Unable to commit transaction</source>
<translation>無法æ交事務</translation>
</message>
<message>
+ <location line="+19"/>
<source>Unable to rollback transaction</source>
<translation>無法å轉事務</translation>
</message>
@@ -2776,34 +3406,43 @@ Do you want to delete it anyway?</source>
<context>
<name>QOCIResult</name>
<message>
+ <location line="-963"/>
+ <location line="+161"/>
+ <location line="+15"/>
<source>Unable to bind column for batch execute</source>
<translation>無法çµåˆæ¬„ä½ä»¥åšæ‰¹æ¬¡åŸ·è¡Œ</translation>
</message>
<message>
+ <location line="+15"/>
<source>Unable to execute batch statement</source>
<translation>無法執行批次敘述</translation>
</message>
<message>
+ <location line="+302"/>
<source>Unable to goto next</source>
<translation>無法跳到下一個</translation>
</message>
<message>
+ <location line="+59"/>
<source>Unable to alloc statement</source>
<translation>無法é…置敘述</translation>
</message>
<message>
+ <location line="+15"/>
<source>Unable to prepare statement</source>
<translation>無法準備敘述</translation>
</message>
<message>
+ <location line="+36"/>
<source>Unable to bind value</source>
<translation>無法çµåˆæ•¸å€¼</translation>
</message>
<message>
<source>Unable to execute select statement</source>
- <translation>無法執行é¸å–的敘述</translation>
+ <translation type="obsolete">無法執行é¸å–的敘述</translation>
</message>
<message>
+ <location line="+19"/>
<source>Unable to execute statement</source>
<translation>無法執行敘述</translation>
</message>
@@ -2811,27 +3450,32 @@ Do you want to delete it anyway?</source>
<context>
<name>QODBCDriver</name>
<message>
- <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="1657"/>
+ <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="+1785"/>
<source>Unable to connect</source>
<translation>無法連接</translation>
</message>
<message>
+ <location line="+6"/>
<source>Unable to connect - Driver doesn&apos;t support all needed functionality</source>
<translation>無法連接─驅動程å¼ç„¡æ³•æ”¯æ´æ‰€æœ‰éœ€è¦çš„功能</translation>
</message>
<message>
+ <location line="+242"/>
<source>Unable to disable autocommit</source>
<translation>無法關閉自動æ交功能</translation>
</message>
<message>
+ <location line="+17"/>
<source>Unable to commit transaction</source>
<translation>無法æ交事務</translation>
</message>
<message>
+ <location line="+17"/>
<source>Unable to rollback transaction</source>
<translation>無法å轉事務</translation>
</message>
<message>
+ <location line="+15"/>
<source>Unable to enable autocommit</source>
<translation>無法開啟自動æ交功能</translation>
</message>
@@ -2839,38 +3483,51 @@ Do you want to delete it anyway?</source>
<context>
<name>QODBCResult</name>
<message>
+ <location line="-1218"/>
+ <location line="+349"/>
<source>QODBCResult::reset: Unable to set &apos;SQL_CURSOR_STATIC&apos; as statement attribute. Please check your ODBC driver configuration</source>
<translation>QODBCResult::reset: 無法設定 SQL_CURSOR_STATIC åšç‚ºæ•˜è¿°å±¬æ€§ã€‚請檢查您的 ODBC 驅動程å¼çš„設定</translation>
</message>
<message>
+ <location line="-332"/>
+ <location line="+626"/>
<source>Unable to execute statement</source>
<translation>無法執行敘述</translation>
</message>
<message>
+ <location line="-555"/>
<source>Unable to fetch next</source>
<translation>無法抓å–下一筆</translation>
</message>
<message>
+ <location line="+279"/>
<source>Unable to prepare statement</source>
<translation>無法準備敘述</translation>
</message>
<message>
+ <location line="+268"/>
<source>Unable to bind variable</source>
<translation>無法çµåˆè®Šæ•¸</translation>
</message>
<message>
+ <location filename="../src/sql/drivers/db2/qsql_db2.cpp" line="+194"/>
+ <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="-475"/>
+ <location line="+578"/>
<source>Unable to fetch last</source>
<translation>無法抓å–最後一筆</translation>
</message>
<message>
+ <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="-672"/>
<source>Unable to fetch</source>
<translation>無法抓å–</translation>
</message>
<message>
+ <location line="+44"/>
<source>Unable to fetch first</source>
<translation>無法抓å–第一筆</translation>
</message>
<message>
+ <location line="+19"/>
<source>Unable to fetch previous</source>
<translation>無法抓å–å‰ä¸€ç­†</translation>
</message>
@@ -2878,41 +3535,48 @@ Do you want to delete it anyway?</source>
<context>
<name>QObject</name>
<message>
- <location filename="../src/gui/util/qdesktopservices_mac.cpp" line="134"/>
+ <location filename="../src/gui/util/qdesktopservices_mac.cpp" line="+165"/>
<source>Home</source>
<translation>首é </translation>
</message>
<message>
- <location filename="../src/network/access/qnetworkaccessdatabackend.cpp" line="44"/>
+ <location filename="../src/network/access/qnetworkaccessdatabackend.cpp" line="+74"/>
<source>Operation not supported on %1</source>
<translation>在 %1 上ä¸æ”¯æ´æ­¤æ“作</translation>
</message>
<message>
+ <location line="+53"/>
<source>Invalid URI: %1</source>
<translation>ä¸åˆæ³•çš„網å€ï¼š%1</translation>
</message>
<message>
- <location filename="../src/network/access/qnetworkaccessdebugpipebackend.cpp" line="145"/>
+ <location filename="../src/network/access/qnetworkaccessdebugpipebackend.cpp" line="+175"/>
<source>Write error writing to %1: %2</source>
<translation>寫入 %1 時發生錯誤:%2</translation>
</message>
<message>
+ <location line="+57"/>
<source>Read error reading from %1: %2</source>
<translation>從 %1 讀å–錯誤:%2</translation>
</message>
<message>
+ <location line="+31"/>
<source>Socket error on %1: %2</source>
<translation>%1 上發生 socket 錯誤:%2</translation>
</message>
<message>
+ <location line="+15"/>
<source>Remote host closed the connection prematurely on %1</source>
<translation>æ–¼ %1 上é ç«¯ä¸»æ©Ÿé—œé–‰äº†ä¸æ­£å¸¸çš„連線</translation>
</message>
<message>
+ <location line="+53"/>
<source>Protocol error: packet of size 0 received</source>
<translation>å”定錯誤:接收到大å°ç‚º 0 çš„å°åŒ…</translation>
</message>
<message>
+ <location filename="../src/network/kernel/qhostinfo.cpp" line="+177"/>
+ <location line="+57"/>
<source>No host name given</source>
<translation>未指定主機</translation>
</message>
@@ -2920,11 +3584,12 @@ Do you want to delete it anyway?</source>
<context>
<name>QPPDOptionsModel</name>
<message>
- <location filename="../src/gui/dialogs/qprintdialog_unix.cpp" line="1165"/>
+ <location filename="../src/gui/dialogs/qprintdialog_unix.cpp" line="+1195"/>
<source>Name</source>
<translation>å稱</translation>
</message>
<message>
+ <location line="+2"/>
<source>Value</source>
<translation>值</translation>
</message>
@@ -2932,27 +3597,32 @@ Do you want to delete it anyway?</source>
<context>
<name>QPSQLDriver</name>
<message>
- <location filename="../src/sql/drivers/psql/qsql_psql.cpp" line="732"/>
+ <location filename="../src/sql/drivers/psql/qsql_psql.cpp" line="+763"/>
<source>Unable to connect</source>
<translation>無法連線</translation>
</message>
<message>
+ <location line="+49"/>
<source>Could not begin transaction</source>
<translation>無法開始事務</translation>
</message>
<message>
+ <location line="+17"/>
<source>Could not commit transaction</source>
<translation>無法æ交事務</translation>
</message>
<message>
+ <location line="+16"/>
<source>Could not rollback transaction</source>
<translation>無法å轉事務</translation>
</message>
<message>
+ <location line="+358"/>
<source>Unable to subscribe</source>
<translation>無法訂閱</translation>
</message>
<message>
+ <location line="+32"/>
<source>Unable to unsubscribe</source>
<translation>無法å–消訂閱</translation>
</message>
@@ -2960,10 +3630,12 @@ Do you want to delete it anyway?</source>
<context>
<name>QPSQLResult</name>
<message>
+ <location line="-1058"/>
<source>Unable to create query</source>
<translation>無法建立查詢</translation>
</message>
<message>
+ <location line="+374"/>
<source>Unable to prepare statement</source>
<translation>無法準備敘述</translation>
</message>
@@ -2971,83 +3643,102 @@ Do you want to delete it anyway?</source>
<context>
<name>QPageSetupWidget</name>
<message>
- <location filename="../src/gui/dialogs/qpagesetupdialog_unix.cpp" line="274"/>
+ <location filename="../src/gui/dialogs/qpagesetupdialog_unix.cpp" line="+304"/>
<source>Centimeters (cm)</source>
<translation>公分</translation>
</message>
<message>
+ <location line="+0"/>
<source>Millimeters (mm)</source>
<translation>公厘</translation>
</message>
<message>
+ <location line="+0"/>
<source>Inches (in)</source>
<translation>英å‹</translation>
</message>
<message>
+ <location line="+0"/>
<source>Points (pt)</source>
<translation>點</translation>
</message>
<message>
+ <location filename="../src/gui/dialogs/qpagesetupwidget.ui"/>
<source>Form</source>
<translation>表單</translation>
</message>
<message>
+ <location/>
<source>Paper</source>
<translation>紙張</translation>
</message>
<message>
+ <location/>
<source>Page size:</source>
<translation>紙張大å°ï¼š</translation>
</message>
<message>
+ <location/>
<source>Width:</source>
<translation>寬度:</translation>
</message>
<message>
+ <location/>
<source>Height:</source>
<translation>高度:</translation>
</message>
<message>
+ <location/>
<source>Paper source:</source>
<translation>紙張來æºï¼š</translation>
</message>
<message>
+ <location/>
<source>Orientation</source>
<translation>æ–¹å‘</translation>
</message>
<message>
+ <location/>
<source>Portrait</source>
<translation>縱å‘</translation>
</message>
<message>
+ <location/>
<source>Landscape</source>
<translation>æ©«å‘</translation>
</message>
<message>
+ <location/>
<source>Reverse landscape</source>
<translation>ååºæ©«å‘</translation>
</message>
<message>
+ <location/>
<source>Reverse portrait</source>
<translation>ååºç¸±å‘</translation>
</message>
<message>
+ <location/>
<source>Margins</source>
<translation>é‚Šç·£</translation>
</message>
<message>
+ <location/>
<source>top margin</source>
<translation>上緣</translation>
</message>
<message>
+ <location/>
<source>left margin</source>
<translation>左緣</translation>
</message>
<message>
+ <location/>
<source>right margin</source>
<translation>å³ç·£</translation>
</message>
<message>
+ <location/>
<source>bottom margin</source>
<translation>下緣</translation>
</message>
@@ -3055,11 +3746,12 @@ Do you want to delete it anyway?</source>
<context>
<name>QPluginLoader</name>
<message>
- <location filename="../src/corelib/plugin/qpluginloader.cpp" line="24"/>
+ <location filename="../src/corelib/plugin/qpluginloader.cpp" line="+24"/>
<source>Unknown error</source>
<translation>未知的錯誤</translation>
</message>
<message>
+ <location line="-68"/>
<source>The plugin was not loaded.</source>
<translation>外掛程å¼æœªè¼‰å…¥ã€‚</translation>
</message>
@@ -3067,15 +3759,19 @@ Do you want to delete it anyway?</source>
<context>
<name>QPrintDialog</name>
<message>
- <location filename="../src/gui/painting/qprinterinfo_unix.cpp" line="68"/>
+ <location filename="../src/gui/painting/qprinterinfo_unix.cpp" line="+98"/>
<source>locally connected</source>
<translation>本地連接</translation>
</message>
<message>
+ <location line="+23"/>
+ <location line="+225"/>
<source>Aliases: %1</source>
<translation>別å:%1</translation>
</message>
<message>
+ <location line="+223"/>
+ <location line="+199"/>
<source>unknown</source>
<translation>未知</translation>
</message>
@@ -3088,128 +3784,157 @@ Do you want to delete it anyway?</source>
<translation type="obsolete">æ©«å‘</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qprintdialog_qws.cpp" line="299"/>
+ <location filename="../src/gui/dialogs/qprintdialog_qws.cpp" line="+329"/>
<source>A0 (841 x 1189 mm)</source>
<translation>A0 (841 x 1189 mm)</translation>
</message>
<message>
+ <location line="+1"/>
<source>A1 (594 x 841 mm)</source>
<translation>A1 (594 x 841 mm)</translation>
</message>
<message>
+ <location line="+1"/>
<source>A2 (420 x 594 mm)</source>
<translation>A2 (420 x 594 mm)</translation>
</message>
<message>
+ <location line="+1"/>
<source>A3 (297 x 420 mm)</source>
<translation>A3 (297 x 420 mm)</translation>
</message>
<message>
+ <location line="+1"/>
<source>A4 (210 x 297 mm, 8.26 x 11.7 inches)</source>
<translation>A4 (210 x 297 mm, 8.26 x 11.7 英å‹)</translation>
</message>
<message>
+ <location line="+1"/>
<source>A5 (148 x 210 mm)</source>
<translation>A5 (148 x 210 mm)</translation>
</message>
<message>
+ <location line="+1"/>
<source>A6 (105 x 148 mm)</source>
<translation>A6 (105 x 148 mm)</translation>
</message>
<message>
+ <location line="+1"/>
<source>A7 (74 x 105 mm)</source>
<translation>A7 (74 x 105 mm)</translation>
</message>
<message>
+ <location line="+1"/>
<source>A8 (52 x 74 mm)</source>
<translation>A8 (52 x 74 mm)</translation>
</message>
<message>
+ <location line="+1"/>
<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="+1"/>
<source>B1 (707 x 1000 mm)</source>
<translation>B1 (707 x 1000 mm)</translation>
</message>
<message>
+ <location line="+1"/>
<source>B2 (500 x 707 mm)</source>
<translation>B2 (500 x 707 mm)</translation>
</message>
<message>
+ <location line="+1"/>
<source>B3 (353 x 500 mm)</source>
<translation>B3 (353 x 500 mm)</translation>
</message>
<message>
+ <location line="+1"/>
<source>B4 (250 x 353 mm)</source>
<translation>B4 (250 x 353 mm)</translation>
</message>
<message>
+ <location line="+1"/>
<source>B5 (176 x 250 mm, 6.93 x 9.84 inches)</source>
<translation>B5 (176 x 250 mm, 6.93 x 9.84 英å‹)</translation>
</message>
<message>
+ <location line="+1"/>
<source>B6 (125 x 176 mm)</source>
<translation>B6 (125 x 176 mm)</translation>
</message>
<message>
+ <location line="+1"/>
<source>B7 (88 x 125 mm)</source>
<translation>B7 (88 x 125 mm)</translation>
</message>
<message>
+ <location line="+1"/>
<source>B8 (62 x 88 mm)</source>
<translation>B8 (62 x 88 mm)</translation>
</message>
<message>
+ <location line="+1"/>
<source>B9 (44 x 62 mm)</source>
<translation>B9 (44 x 62 mm)</translation>
</message>
<message>
+ <location line="+1"/>
<source>B10 (31 x 44 mm)</source>
<translation>B10 (31 x 44 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="+1"/>
<source>DLE (110 x 220 mm)</source>
<translation>DLE (110 x 220 mm)</translation>
</message>
<message>
+ <location line="+1"/>
<source>Executive (7.5 x 10 inches, 191 x 254 mm)</source>
<translation>Executive (7.5 x 10 英å‹, 191 x 254 mm)</translation>
</message>
<message>
+ <location line="+1"/>
<source>Folio (210 x 330 mm)</source>
<translation>å°é–‹ (210 x 330 mm)</translation>
</message>
<message>
+ <location line="+1"/>
<source>Ledger (432 x 279 mm)</source>
<translation>Ledger (432 x 279 mm)</translation>
</message>
<message>
+ <location line="+1"/>
<source>Legal (8.5 x 14 inches, 216 x 356 mm)</source>
<translation>Legal (8.5 x 14 英å‹, 216 x 356 mm)</translation>
</message>
<message>
+ <location line="+1"/>
<source>Letter (8.5 x 11 inches, 216 x 279 mm)</source>
<translation>Letter (8.5 x 11 英å‹, 216 x 279 mm)</translation>
</message>
<message>
+ <location line="+1"/>
<source>Tabloid (279 x 432 mm)</source>
<translation>Tabloid (279 x 432 mm)</translation>
</message>
<message>
+ <location line="+1"/>
<source>US Common #10 Envelope (105 x 241 mm)</source>
<translation>US 常用 10 è™Ÿä¿¡å° (105x241 mm)</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qprintdialog_win.cpp" line="238"/>
+ <location filename="../src/gui/dialogs/qprintdialog_win.cpp" line="+268"/>
<source>OK</source>
<translation>確定</translation>
</message>
@@ -3230,6 +3955,9 @@ Do you want to delete it anyway?</source>
<translation type="obsolete">紙張來æºï¼š</translation>
</message>
<message>
+ <location filename="../src/gui/dialogs/qabstractprintdialog.cpp" line="+110"/>
+ <location line="+13"/>
+ <location filename="../src/gui/dialogs/qprintdialog_win.cpp" line="-2"/>
<source>Print</source>
<translation>列å°</translation>
</message>
@@ -3242,6 +3970,7 @@ Do you want to delete it anyway?</source>
<translation type="obsolete">å°è¡¨æ©Ÿ</translation>
</message>
<message>
+ <location filename="../src/gui/dialogs/qprintdialog_unix.cpp" line="-357"/>
<source>Print To File ...</source>
<translation>列å°åˆ°æª”案...</translation>
</message>
@@ -3274,11 +4003,12 @@ Do you want to delete it anyway?</source>
<translation type="obsolete">列å°åˆ°æª”案</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qprintdialog_qws.cpp" line="19"/>
+ <location filename="../src/gui/dialogs/qprintdialog_qws.cpp" line="+19"/>
<source>Print range</source>
<translation>列å°ç¯„åœ</translation>
</message>
<message>
+ <location line="-2"/>
<source>Print all</source>
<translation>全部列å°</translation>
</message>
@@ -3323,190 +4053,234 @@ Do you want to delete it anyway?</source>
<translation type="obsolete">é›™é¢åˆ—å°</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qprintdialog_unix.cpp" line="80"/>
+ <location filename="../src/gui/dialogs/qprintdialog_unix.cpp" line="+80"/>
<source>File %1 is not writable.
Please choose a different file name.</source>
<translation>檔案 %1 無法寫入。
è«‹é¸æ“‡å…¶å®ƒæª”å。</translation>
</message>
<message>
+ <location line="+4"/>
<source>%1 already exists.
Do you want to overwrite it?</source>
<translation>%1 已存在。
您è¦è¦†å¯«å®ƒå—Žï¼Ÿ</translation>
</message>
<message>
+ <location filename="../src/gui/dialogs/qprintdialog_qws.cpp" line="-227"/>
<source>File exists</source>
<translation>檔案已存在</translation>
</message>
<message>
+ <location line="+1"/>
<source>&lt;qt&gt;Do you want to overwrite it?&lt;/qt&gt;</source>
<translation>&lt;qt&gt;您è¦è¦†å¯«å®ƒå—Žï¼Ÿ&lt;/qt&gt;</translation>
</message>
<message>
+ <location line="+227"/>
<source>Print selection</source>
<translation>列å°é¸æ“‡å€</translation>
</message>
<message>
+ <location filename="../src/gui/dialogs/qprintdialog_unix.cpp" line="-8"/>
<source>%1 is a directory.
Please choose a different file name.</source>
<translation>%1 是一個目錄。
è«‹é¸æ“‡å…¶ä»–檔å。</translation>
</message>
<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 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 line="+1"/>
<source>Executive</source>
<translation>Executive</translation>
</message>
<message>
+ <location line="+1"/>
<source>Folio</source>
<translation>Folio</translation>
</message>
<message>
+ <location line="+1"/>
<source>Ledger</source>
<translation>Ledger</translation>
</message>
<message>
+ <location line="+1"/>
<source>Legal</source>
<translation>Legal</translation>
</message>
<message>
+ <location line="+1"/>
<source>Letter</source>
<translation>Letter</translation>
</message>
<message>
+ <location line="+1"/>
<source>Tabloid</source>
<translation>Tabloid</translation>
</message>
<message>
+ <location line="+1"/>
<source>US Common #10 Envelope</source>
<translation>US Common #10 Envelope</translation>
</message>
<message>
+ <location line="+1"/>
<source>Custom</source>
<translation>自訂</translation>
</message>
<message>
+ <location filename="../src/gui/dialogs/qprintdialog_unix.cpp" line="-522"/>
+ <location line="+68"/>
<source>&amp;Options &gt;&gt;</source>
<translation>æ“作 (&amp;O) &gt;&gt;</translation>
</message>
<message>
+ <location line="-63"/>
<source>&amp;Print</source>
<translation>列å°(&amp;P)</translation>
</message>
<message>
+ <location line="+67"/>
<source>&amp;Options &lt;&lt;</source>
<translation>æ“作 (&amp;O) &lt;&lt;</translation>
</message>
<message>
+ <location line="+253"/>
<source>Print to File (PDF)</source>
<translation>列å°åˆ°æª”案(PDF)</translation>
</message>
<message>
+ <location line="+1"/>
<source>Print to File (Postscript)</source>
<translation>列å°åˆ°æª”案(Postscript)</translation>
</message>
<message>
+ <location line="+45"/>
<source>Local file</source>
<translation>本地端檔案</translation>
</message>
<message>
+ <location line="+1"/>
<source>Write %1 file</source>
<translation>寫入 %1 檔案</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qprintdialog_win.cpp" line="1"/>
+ <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>起始數值ä¸èƒ½å¤§æ–¼çµæŸæ•¸å€¼</translation>
</message>
@@ -3514,87 +4288,108 @@ Please choose a different file name.</source>
<context>
<name>QPrintPreviewDialog</name>
<message>
+ <location filename="../src/gui/dialogs/qabstractpagesetupdialog.cpp" line="+68"/>
+ <location line="+12"/>
<source>Page Setup</source>
<translation>é é¢è¨­å®š</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qprintpreviewdialog.cpp" line="222"/>
+ <location filename="../src/gui/dialogs/qprintpreviewdialog.cpp" line="+252"/>
<source>%1%</source>
<translation>%1%</translation>
</message>
<message>
+ <location line="+79"/>
<source>Print Preview</source>
<translation>列å°é è¦½</translation>
</message>
<message>
+ <location line="+29"/>
<source>Next page</source>
<translation>下一é </translation>
</message>
<message>
+ <location line="+1"/>
<source>Previous page</source>
<translation>å‰ä¸€é </translation>
</message>
<message>
+ <location line="+1"/>
<source>First page</source>
<translation>第一é </translation>
</message>
<message>
+ <location line="+1"/>
<source>Last page</source>
<translation>最後一é </translation>
</message>
<message>
+ <location line="+9"/>
<source>Fit width</source>
<translation>符åˆå¯¬åº¦</translation>
</message>
<message>
+ <location line="+1"/>
<source>Fit page</source>
<translation>符åˆé é¢</translation>
</message>
<message>
+ <location line="+11"/>
<source>Zoom in</source>
<translation>放大</translation>
</message>
<message>
+ <location line="+1"/>
<source>Zoom out</source>
<translation>縮å°</translation>
</message>
<message>
+ <location line="+6"/>
<source>Portrait</source>
<translation>縱å‘</translation>
</message>
<message>
+ <location line="+1"/>
<source>Landscape</source>
<translation>æ©«å‘</translation>
</message>
<message>
+ <location line="+10"/>
<source>Show single page</source>
<translation>顯示單一é é¢</translation>
</message>
<message>
+ <location line="+1"/>
<source>Show facing pages</source>
<translation>顯示å°é¢</translation>
</message>
<message>
+ <location line="+1"/>
<source>Show overview of all pages</source>
<translation>顯示所有é é¢é è¦½</translation>
</message>
<message>
+ <location line="+15"/>
<source>Print</source>
<translation>列å°</translation>
</message>
<message>
+ <location line="+1"/>
<source>Page setup</source>
<translation>列å°è¨­å®š</translation>
</message>
<message>
+ <location line="+1"/>
<source>Close</source>
<translation>關閉</translation>
</message>
<message>
+ <location line="+151"/>
<source>Export to PDF</source>
<translation>匯出到 PDF 檔</translation>
</message>
<message>
+ <location line="+3"/>
<source>Export to PostScript</source>
<translation>匯出到 PostScript 檔</translation>
</message>
@@ -3617,14 +4412,17 @@ Please choose a different file name.</source>
<context>
<name>QPrintPropertiesWidget</name>
<message>
+ <location filename="../src/gui/dialogs/qprintpropertieswidget.ui"/>
<source>Form</source>
<translation>表單</translation>
</message>
<message>
+ <location/>
<source>Page</source>
<translation>é é¢</translation>
</message>
<message>
+ <location/>
<source>Advanced</source>
<translation>進階</translation>
</message>
@@ -3632,78 +4430,97 @@ Please choose a different file name.</source>
<context>
<name>QPrintSettingsOutput</name>
<message>
+ <location filename="../src/gui/dialogs/qprintsettingsoutput.ui"/>
<source>Form</source>
<translation>表單</translation>
</message>
<message>
+ <location/>
<source>Copies</source>
<translation>份數</translation>
</message>
<message>
+ <location/>
<source>Print range</source>
<translation>列å°ç¯„åœ</translation>
</message>
<message>
+ <location/>
<source>Print all</source>
<translation>全部列å°</translation>
</message>
<message>
+ <location/>
<source>Pages from</source>
<translation>指定é é¢ï¼šå¾ž</translation>
</message>
<message>
+ <location/>
<source>to</source>
<translation>到</translation>
</message>
<message>
+ <location/>
<source>Selection</source>
<translation>é¸æ“‡å€</translation>
</message>
<message>
+ <location/>
<source>Output Settings</source>
<translation>輸出設定</translation>
</message>
<message>
+ <location/>
<source>Copies:</source>
<translation>份數:</translation>
</message>
<message>
+ <location/>
<source>Collate</source>
<translation>æ ¡å°</translation>
</message>
<message>
+ <location/>
<source>Reverse</source>
<translation>åå‘</translation>
</message>
<message>
+ <location/>
<source>Options</source>
<translation>é¸é …</translation>
</message>
<message>
+ <location/>
<source>Color Mode</source>
<translation>é¡è‰²æ¨¡å¼</translation>
</message>
<message>
+ <location/>
<source>Color</source>
<translation>é¡è‰²</translation>
</message>
<message>
+ <location/>
<source>Grayscale</source>
<translation>ç°éšŽ</translation>
</message>
<message>
+ <location/>
<source>Duplex Printing</source>
<translation>雙工列å°</translation>
</message>
<message>
+ <location/>
<source>None</source>
<translation>ç„¡</translation>
</message>
<message>
+ <location/>
<source>Long side</source>
<translation>é•·é‚Š</translation>
</message>
<message>
+ <location/>
<source>Short side</source>
<translation>短邊</translation>
</message>
@@ -3711,38 +4528,47 @@ Please choose a different file name.</source>
<context>
<name>QPrintWidget</name>
<message>
+ <location filename="../src/gui/dialogs/qprintwidget.ui"/>
<source>Form</source>
<translation>表單</translation>
</message>
<message>
+ <location/>
<source>Printer</source>
<translation>å°è¡¨æ©Ÿ</translation>
</message>
<message>
+ <location/>
<source>&amp;Name:</source>
<translation>å稱(&amp;N):</translation>
</message>
<message>
+ <location/>
<source>P&amp;roperties</source>
<translation>屬性(&amp;R)</translation>
</message>
<message>
+ <location/>
<source>Location:</source>
<translation>ä½ç½®ï¼š</translation>
</message>
<message>
+ <location/>
<source>Preview</source>
<translation>é è¦½</translation>
</message>
<message>
+ <location/>
<source>Type:</source>
<translation>型態:</translation>
</message>
<message>
+ <location/>
<source>Output &amp;file:</source>
<translation>輸出檔案(&amp;F):</translation>
</message>
<message>
+ <location/>
<source>...</source>
<translation>...</translation>
</message>
@@ -3750,37 +4576,62 @@ Please choose a different file name.</source>
<context>
<name>QProcess</name>
<message>
- <location filename="../src/corelib/io/qprocess_win.cpp" line="117"/>
+ <location filename="../src/corelib/io/qprocess_unix.cpp" line="+475"/>
+ <location filename="../src/corelib/io/qprocess_win.cpp" line="+147"/>
<source>Could not open input redirection for reading</source>
<translation>無法開啟輸入導å‘以讀å–</translation>
</message>
<message>
- <location filename="../src/corelib/io/qprocess_win.cpp" line="36"/>
+ <location line="+12"/>
+ <location filename="../src/corelib/io/qprocess_win.cpp" line="+36"/>
<source>Could not open output redirection for writing</source>
<translation>無法開啟輸出導å‘以寫入</translation>
</message>
<message>
+ <location line="+235"/>
<source>Resource error (fork failure): %1</source>
<translation>資æºéŒ¯èª¤ï¼ˆfork 失敗):%1</translation>
</message>
<message>
+ <location line="+259"/>
+ <location line="+53"/>
+ <location line="+74"/>
+ <location line="+67"/>
+ <location filename="../src/corelib/io/qprocess_win.cpp" line="+422"/>
+ <location line="+50"/>
+ <location line="+75"/>
+ <location line="+42"/>
+ <location line="+54"/>
<source>Process operation timed out</source>
<translation>行程æ“作逾時</translation>
</message>
<message>
+ <location filename="../src/corelib/io/qprocess.cpp" line="+533"/>
+ <location line="+52"/>
+ <location filename="../src/corelib/io/qprocess_win.cpp" line="-211"/>
+ <location line="+50"/>
<source>Error reading from process</source>
<translation>從行程讀å–時發生錯誤</translation>
</message>
<message>
- <location filename="../src/corelib/io/qprocess_win.cpp" line="140"/>
+ <location line="+47"/>
+ <location line="+779"/>
+ <location filename="../src/corelib/io/qprocess_win.cpp" line="+140"/>
<source>Error writing to process</source>
<translation>寫入行程時發生錯誤</translation>
</message>
<message>
+ <location line="-709"/>
<source>Process crashed</source>
<translation>行程已崩潰</translation>
</message>
<message>
+ <location line="+912"/>
+ <source>No program defined</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/corelib/io/qprocess_win.cpp" line="-341"/>
<source>Process failed to start</source>
<translation>啟動行程失敗</translation>
</message>
@@ -3788,7 +4639,7 @@ Please choose a different file name.</source>
<context>
<name>QProgressDialog</name>
<message>
- <location filename="../src/gui/dialogs/qprogressdialog.cpp" line="152"/>
+ <location filename="../src/gui/dialogs/qprogressdialog.cpp" line="+182"/>
<source>Cancel</source>
<translation>å–消</translation>
</message>
@@ -3796,6 +4647,7 @@ Please choose a different file name.</source>
<context>
<name>QPushButton</name>
<message>
+ <location filename="../src/plugins/accessible/widgets/simplewidgets.cpp" line="-8"/>
<source>Open</source>
<translation>é–‹å•Ÿ</translation>
</message>
@@ -3803,6 +4655,7 @@ Please choose a different file name.</source>
<context>
<name>QRadioButton</name>
<message>
+ <location line="+12"/>
<source>Check</source>
<translation>勾é¸</translation>
</message>
@@ -3810,39 +4663,47 @@ Please choose a different file name.</source>
<context>
<name>QRegExp</name>
<message>
- <location filename="../src/corelib/tools/qregexp.cpp" line="34"/>
+ <location filename="../src/corelib/tools/qregexp.cpp" line="+64"/>
<source>no error occurred</source>
<translation>沒有發生錯誤</translation>
</message>
<message>
+ <location line="+1"/>
<source>disabled feature used</source>
<translation>使用已關閉的功能</translation>
</message>
<message>
+ <location line="+1"/>
<source>bad char class syntax</source>
<translation>錯誤的字元類別語法</translation>
</message>
<message>
+ <location line="+1"/>
<source>bad lookahead syntax</source>
<translation>錯誤的 lookahead 語法</translation>
</message>
<message>
+ <location line="+1"/>
<source>bad repetition syntax</source>
<translation>錯誤的é‡è¦†èªžæ³•</translation>
</message>
<message>
+ <location line="+1"/>
<source>invalid octal value</source>
<translation>ä¸åˆæ³•çš„八進ä½å€¼</translation>
</message>
<message>
+ <location line="+1"/>
<source>missing left delim</source>
<translation>少了左方的å€éš”符</translation>
</message>
<message>
+ <location line="+1"/>
<source>unexpected end</source>
<translation>未é æœŸé‡åˆ°çµå°¾</translation>
</message>
<message>
+ <location line="+1"/>
<source>met internal limit</source>
<translation>é‡åˆ°å…§éƒ¨é™åˆ¶</translation>
</message>
@@ -3850,19 +4711,22 @@ Please choose a different file name.</source>
<context>
<name>QSQLite2Driver</name>
<message>
- <location filename="../src/sql/drivers/sqlite2/qsql_sqlite2.cpp" line="353"/>
+ <location filename="../src/sql/drivers/sqlite2/qsql_sqlite2.cpp" line="+396"/>
<source>Error to open database</source>
<translation>開啟資料庫時發生錯誤</translation>
</message>
<message>
+ <location line="+41"/>
<source>Unable to begin transaction</source>
<translation>無法開始事務</translation>
</message>
<message>
+ <location line="+17"/>
<source>Unable to commit transaction</source>
<translation>無法æ交事務</translation>
</message>
<message>
+ <location line="+17"/>
<source>Unable to rollback Transaction</source>
<translation>無法å轉事務</translation>
</message>
@@ -3870,10 +4734,12 @@ Please choose a different file name.</source>
<context>
<name>QSQLite2Result</name>
<message>
+ <location line="-323"/>
<source>Unable to fetch results</source>
<translation>無法抓å–çµæžœ</translation>
</message>
<message>
+ <location line="+147"/>
<source>Unable to execute statement</source>
<translation>無法執行敘述</translation>
</message>
@@ -3881,19 +4747,22 @@ Please choose a different file name.</source>
<context>
<name>QSQLiteDriver</name>
<message>
- <location filename="../src/sql/drivers/sqlite/qsql_sqlite.cpp" line="498"/>
+ <location filename="../src/sql/drivers/sqlite/qsql_sqlite.cpp" line="+528"/>
<source>Error opening database</source>
<translation>開啟資料庫發生錯誤</translation>
</message>
<message>
+ <location line="+11"/>
<source>Error closing database</source>
<translation>關閉資料庫發生錯誤</translation>
</message>
<message>
+ <location line="+20"/>
<source>Unable to begin transaction</source>
<translation>無法開始事務</translation>
</message>
<message>
+ <location line="+15"/>
<source>Unable to commit transaction</source>
<translation>無法æ交事務</translation>
</message>
@@ -3902,6 +4771,7 @@ Please choose a different file name.</source>
<translation type="obsolete">無法å轉事務</translation>
</message>
<message>
+ <location line="+15"/>
<source>Unable to rollback transaction</source>
<translation>無法å轉事務</translation>
</message>
@@ -3909,26 +4779,34 @@ Please choose a different file name.</source>
<context>
<name>QSQLiteResult</name>
<message>
+ <location line="-400"/>
+ <location line="+66"/>
+ <location line="+8"/>
<source>Unable to fetch row</source>
<translation>無法抓å–列</translation>
</message>
<message>
+ <location line="+63"/>
<source>Unable to execute statement</source>
<translation>無法執行敘述</translation>
</message>
<message>
+ <location line="+20"/>
<source>Unable to reset statement</source>
<translation>無法é‡ç½®æ•˜è¿°</translation>
</message>
<message>
+ <location line="+45"/>
<source>Unable to bind parameters</source>
<translation>無法çµåˆåƒæ•¸</translation>
</message>
<message>
+ <location line="+7"/>
<source>Parameter count mismatch</source>
<translation>åƒæ•¸æ•¸é‡ä¸ç¬¦åˆ</translation>
</message>
<message>
+ <location line="-208"/>
<source>No query</source>
<translation>沒有查詢</translation>
</message>
@@ -3936,69 +4814,84 @@ Please choose a different file name.</source>
<context>
<name>QScrollBar</name>
<message>
- <location filename="../src/gui/widgets/qscrollbar.cpp" line="419"/>
+ <location filename="../src/gui/widgets/qscrollbar.cpp" line="+448"/>
<source>Scroll here</source>
<translation>在此æ²è»¸</translation>
</message>
<message>
+ <location line="+2"/>
<source>Left edge</source>
<translation>左邊緣</translation>
</message>
<message>
+ <location line="+0"/>
<source>Top</source>
<translation>頂端</translation>
</message>
<message>
+ <location line="+1"/>
<source>Right edge</source>
<translation>å³é‚Šç·£</translation>
</message>
<message>
+ <location line="+0"/>
<source>Bottom</source>
<translation>底端</translation>
</message>
<message>
+ <location line="+2"/>
<source>Page left</source>
<translation>é é¢å·¦æ–¹</translation>
</message>
<message>
- <location filename="../src/plugins/accessible/widgets/rangecontrols.cpp" line="143"/>
+ <location line="+0"/>
+ <location filename="../src/plugins/accessible/widgets/rangecontrols.cpp" line="+143"/>
<source>Page up</source>
<translation>é é¢ä¸Šæ–¹</translation>
</message>
<message>
+ <location line="+1"/>
<source>Page right</source>
<translation>é é¢å³æ–¹</translation>
</message>
<message>
- <location filename="../src/plugins/accessible/widgets/rangecontrols.cpp" line="4"/>
+ <location line="+0"/>
+ <location filename="../src/plugins/accessible/widgets/rangecontrols.cpp" line="+4"/>
<source>Page down</source>
<translation>é é¢ä¸‹æ–¹</translation>
</message>
<message>
+ <location line="+2"/>
<source>Scroll left</source>
<translation>往左æ²è»¸</translation>
</message>
<message>
+ <location line="+0"/>
<source>Scroll up</source>
<translation>往上æ²è»¸</translation>
</message>
<message>
+ <location line="+1"/>
<source>Scroll right</source>
<translation>å¾€å³æ²è»¸</translation>
</message>
<message>
+ <location line="+0"/>
<source>Scroll down</source>
<translation>往下æ²è»¸</translation>
</message>
<message>
+ <location filename="../src/plugins/accessible/widgets/rangecontrols.cpp" line="-6"/>
<source>Line up</source>
<translation>å°ä¸ŠæŽ’列</translation>
</message>
<message>
+ <location line="+4"/>
<source>Position</source>
<translation>ä½ç½®</translation>
</message>
<message>
+ <location line="+4"/>
<source>Line down</source>
<translation>å°ä¸‹æŽ’列</translation>
</message>
@@ -4006,81 +4899,99 @@ Please choose a different file name.</source>
<context>
<name>QSharedMemory</name>
<message>
- <location filename="../src/corelib/kernel/qsharedmemory.cpp" line="177"/>
+ <location filename="../src/corelib/kernel/qsharedmemory.cpp" line="+207"/>
<source>%1: unable to set key on lock</source>
<translation>%1:無法設定éµå€¼</translation>
</message>
<message>
+ <location line="+81"/>
<source>%1: create size is less then 0</source>
<translation>%1:建立大å°å°æ–¼ 0</translation>
</message>
<message>
- <location filename="../src/corelib/kernel/qsharedmemory_p.h" line="118"/>
+ <location line="+168"/>
+ <location filename="../src/corelib/kernel/qsharedmemory_p.h" line="+148"/>
<source>%1: unable to lock</source>
<translation>%1:無法鎖定</translation>
</message>
<message>
+ <location line="+22"/>
<source>%1: unable to unlock</source>
<translation>%1:無法解除鎖定</translation>
</message>
<message>
- <location filename="../src/corelib/kernel/qsharedmemory_win.cpp" line="57"/>
+ <location filename="../src/corelib/kernel/qsharedmemory_unix.cpp" line="+78"/>
+ <location filename="../src/corelib/kernel/qsharedmemory_win.cpp" line="+87"/>
<source>%1: permission denied</source>
<translation>%1:存å–被拒</translation>
</message>
<message>
+ <location line="+4"/>
+ <location filename="../src/corelib/kernel/qsharedmemory_win.cpp" line="-22"/>
<source>%1: already exists</source>
<translation>%1:已存在</translation>
</message>
<message>
- <location filename="../src/corelib/kernel/qsharedmemory_win.cpp" line="9"/>
+ <location line="+4"/>
+ <location filename="../src/corelib/kernel/qsharedmemory_win.cpp" line="+9"/>
<source>%1: doesn&apos;t exists</source>
<translation>%1:ä¸å­˜åœ¨</translation>
</message>
<message>
- <location filename="../src/corelib/kernel/qsharedmemory_win.cpp" line="9"/>
+ <location line="+6"/>
+ <location filename="../src/corelib/kernel/qsharedmemory_win.cpp" line="+9"/>
<source>%1: out of resources</source>
<translation>%1:資æºä¸è¶³</translation>
</message>
<message>
- <location filename="../src/corelib/kernel/qsharedmemory_win.cpp" line="7"/>
+ <location line="+4"/>
+ <location filename="../src/corelib/kernel/qsharedmemory_win.cpp" line="+7"/>
<source>%1: unknown error %2</source>
<translation>%1:未知的錯誤 %2</translation>
</message>
<message>
+ <location line="+21"/>
<source>%1: key is empty</source>
<translation>%1:éµå€¼æ˜¯ç©ºçš„</translation>
</message>
<message>
+ <location line="+8"/>
<source>%1: unix key file doesn&apos;t exists</source>
<translation>%1:unix éµå€¼æª”ä¸å­˜åœ¨</translation>
</message>
<message>
+ <location line="+7"/>
<source>%1: ftok failed</source>
<translation>%1:ftok 失敗</translation>
</message>
<message>
- <location filename="../src/corelib/kernel/qsharedmemory_win.cpp" line="15"/>
+ <location line="+51"/>
+ <location filename="../src/corelib/kernel/qsharedmemory_win.cpp" line="+15"/>
<source>%1: unable to make key</source>
<translation>%1:無法產生éµå€¼</translation>
</message>
<message>
+ <location line="+20"/>
<source>%1: system-imposed size restrictions</source>
<translation>%1:系統大å°é™åˆ¶</translation>
</message>
<message>
+ <location line="+53"/>
<source>%1: not attached</source>
<translation>%1:未附加</translation>
</message>
<message>
+ <location filename="../src/corelib/kernel/qsharedmemory_win.cpp" line="-27"/>
<source>%1: invalid size</source>
<translation>%1:ä¸åˆæ³•çš„大å°</translation>
</message>
<message>
+ <location line="+68"/>
<source>%1: key error</source>
<translation>%1:éµå€¼éŒ¯èª¤</translation>
</message>
<message>
+ <location line="+38"/>
<source>%1: size query failed</source>
<translation>%1:大å°æŸ¥è©¢å¤±æ•—</translation>
</message>
@@ -4088,371 +4999,466 @@ Please choose a different file name.</source>
<context>
<name>QShortcut</name>
<message>
- <location filename="../src/gui/kernel/qkeysequence.cpp" line="343"/>
+ <location filename="../src/gui/kernel/qkeysequence.cpp" line="+373"/>
<source>Space</source>
<translation>空白éµ</translation>
</message>
<message>
+ <location line="+1"/>
<source>Esc</source>
<translation>Esc</translation>
</message>
<message>
+ <location line="+1"/>
<source>Tab</source>
<translation>Tab</translation>
</message>
<message>
+ <location line="+1"/>
<source>Backtab</source>
<translation>Backtab</translation>
</message>
<message>
+ <location line="+1"/>
<source>Backspace</source>
<translation>Backspace</translation>
</message>
<message>
+ <location line="+1"/>
<source>Return</source>
<translation>Return</translation>
</message>
<message>
+ <location line="+1"/>
<source>Enter</source>
<translation>Enter</translation>
</message>
<message>
+ <location line="+1"/>
<source>Ins</source>
<translation>Ins</translation>
</message>
<message>
+ <location line="+1"/>
<source>Del</source>
<translation>Del</translation>
</message>
<message>
+ <location line="+1"/>
<source>Pause</source>
<translation>Pause</translation>
</message>
<message>
+ <location line="+1"/>
<source>Print</source>
<translation>Print</translation>
</message>
<message>
+ <location line="+1"/>
<source>SysReq</source>
<translation>SysReq</translation>
</message>
<message>
+ <location line="+1"/>
<source>Home</source>
<translation>Home</translation>
</message>
<message>
+ <location line="+1"/>
<source>End</source>
<translation>End</translation>
</message>
<message>
+ <location line="+1"/>
<source>Left</source>
<translation>å·¦éµ</translation>
</message>
<message>
+ <location line="+1"/>
<source>Up</source>
<translation>上éµ</translation>
</message>
<message>
+ <location line="+1"/>
<source>Right</source>
<translation>å³éµ</translation>
</message>
<message>
+ <location line="+1"/>
<source>Down</source>
<translation>下éµ</translation>
</message>
<message>
+ <location line="+1"/>
<source>PgUp</source>
<translation>PgUp</translation>
</message>
<message>
+ <location line="+1"/>
<source>PgDown</source>
<translation>PgDown</translation>
</message>
<message>
+ <location line="+1"/>
<source>CapsLock</source>
<translation>大寫鎖定</translation>
</message>
<message>
+ <location line="+1"/>
<source>NumLock</source>
<translation>數字鎖定</translation>
</message>
<message>
+ <location line="+1"/>
<source>ScrollLock</source>
<translation>æ²è»¸éŽ–定</translation>
</message>
<message>
+ <location line="+1"/>
<source>Menu</source>
<translation>é¸å–®</translation>
</message>
<message>
+ <location line="+1"/>
<source>Help</source>
<translation>說明</translation>
</message>
<message>
+ <location line="+3"/>
<source>Back</source>
<translation>返回</translation>
</message>
<message>
+ <location line="+1"/>
<source>Forward</source>
<translation>å¾€å‰</translation>
</message>
<message>
+ <location line="+1"/>
<source>Stop</source>
<translation>åœæ­¢</translation>
</message>
<message>
+ <location line="+1"/>
<source>Refresh</source>
<translation>刷新</translation>
</message>
<message>
+ <location line="+1"/>
<source>Volume Down</source>
<translation>音é‡é™ä½Ž</translation>
</message>
<message>
+ <location line="+1"/>
<source>Volume Mute</source>
<translation>éœéŸ³</translation>
</message>
<message>
+ <location line="+1"/>
<source>Volume Up</source>
<translation>音é‡æ高</translation>
</message>
<message>
+ <location line="+1"/>
<source>Bass Boost</source>
<translation>é‡ä½ŽéŸ³</translation>
</message>
<message>
+ <location line="+1"/>
<source>Bass Up</source>
<translation>Bass Up</translation>
</message>
<message>
+ <location line="+1"/>
<source>Bass Down</source>
<translation>Bass Down</translation>
</message>
<message>
+ <location line="+1"/>
<source>Treble Up</source>
<translation>Treble Up</translation>
</message>
<message>
+ <location line="+1"/>
<source>Treble Down</source>
<translation>Treble Down</translation>
</message>
<message>
+ <location line="+1"/>
<source>Media Play</source>
<translation>媒體播放</translation>
</message>
<message>
+ <location line="+1"/>
<source>Media Stop</source>
<translation>媒體åœæ­¢</translation>
</message>
<message>
+ <location line="+1"/>
<source>Media Previous</source>
<translation>媒體å‰ä¸€é¦–</translation>
</message>
<message>
+ <location line="+1"/>
<source>Media Next</source>
<translation>媒體下一首</translation>
</message>
<message>
+ <location line="+1"/>
<source>Media Record</source>
<translation>媒體錄音</translation>
</message>
<message>
+ <location line="+2"/>
<source>Favorites</source>
<translation>我的最愛</translation>
</message>
<message>
+ <location line="+1"/>
<source>Search</source>
<translation>æœå°‹</translation>
</message>
<message>
+ <location line="+1"/>
<source>Standby</source>
<translation>待命</translation>
</message>
<message>
+ <location line="+1"/>
<source>Open URL</source>
<translation>開啟網å€</translation>
</message>
<message>
+ <location line="+1"/>
<source>Launch Mail</source>
<translation>啟動郵件程å¼</translation>
</message>
<message>
+ <location line="+1"/>
<source>Launch Media</source>
<translation>啟動媒體程å¼</translation>
</message>
<message>
+ <location line="+1"/>
<source>Launch (0)</source>
<translation>啟動(0)</translation>
</message>
<message>
+ <location line="+1"/>
<source>Launch (1)</source>
<translation>啟動(1)</translation>
</message>
<message>
+ <location line="+1"/>
<source>Launch (2)</source>
<translation>啟動(2)</translation>
</message>
<message>
+ <location line="+1"/>
<source>Launch (3)</source>
<translation>啟動(3)</translation>
</message>
<message>
+ <location line="+1"/>
<source>Launch (4)</source>
<translation>啟動(4)</translation>
</message>
<message>
+ <location line="+1"/>
<source>Launch (5)</source>
<translation>啟動(5)</translation>
</message>
<message>
+ <location line="+1"/>
<source>Launch (6)</source>
<translation>啟動(6)</translation>
</message>
<message>
+ <location line="+1"/>
<source>Launch (7)</source>
<translation>啟動(7)</translation>
</message>
<message>
+ <location line="+1"/>
<source>Launch (8)</source>
<translation>啟動(8)</translation>
</message>
<message>
+ <location line="+1"/>
<source>Launch (9)</source>
<translation>啟動(9)</translation>
</message>
<message>
+ <location line="+1"/>
<source>Launch (A)</source>
<translation>啟動(A)</translation>
</message>
<message>
+ <location line="+1"/>
<source>Launch (B)</source>
<translation>啟動(B)</translation>
</message>
<message>
+ <location line="+1"/>
<source>Launch (C)</source>
<translation>啟動(C)</translation>
</message>
<message>
+ <location line="+1"/>
<source>Launch (D)</source>
<translation>啟動(D)</translation>
</message>
<message>
+ <location line="+1"/>
<source>Launch (E)</source>
<translation>啟動(E)</translation>
</message>
<message>
+ <location line="+1"/>
<source>Launch (F)</source>
<translation>啟動(F)</translation>
</message>
<message>
+ <location line="+4"/>
<source>Print Screen</source>
<translation>列å°èž¢å¹•</translation>
</message>
<message>
+ <location line="+1"/>
<source>Page Up</source>
<translation>往上一é </translation>
</message>
<message>
+ <location line="+1"/>
<source>Page Down</source>
<translation>往下一é </translation>
</message>
<message>
+ <location line="+1"/>
<source>Caps Lock</source>
<translation>大寫鎖定</translation>
</message>
<message>
+ <location line="+1"/>
<source>Num Lock</source>
<translation>數字鎖定</translation>
</message>
<message>
+ <location line="+1"/>
<source>Number Lock</source>
<translation>數字鎖定</translation>
</message>
<message>
+ <location line="+1"/>
<source>Scroll Lock</source>
<translation>æ²è»¸éŽ–定</translation>
</message>
<message>
+ <location line="+1"/>
<source>Insert</source>
<translation>æ’å…¥</translation>
</message>
<message>
+ <location line="+1"/>
<source>Delete</source>
<translation>刪除</translation>
</message>
<message>
+ <location line="+1"/>
<source>Escape</source>
<translation>Escape</translation>
</message>
<message>
+ <location line="+1"/>
<source>System Request</source>
<translation>系統è¦æ±‚ SysRq</translation>
</message>
<message>
+ <location line="+4"/>
<source>Select</source>
<translation>é¸æ“‡</translation>
</message>
<message>
+ <location line="+1"/>
<source>Yes</source>
<translation>是</translation>
</message>
<message>
+ <location line="+1"/>
<source>No</source>
<translation>å¦</translation>
</message>
<message>
+ <location line="+4"/>
<source>Context1</source>
<translation>內文1</translation>
</message>
<message>
+ <location line="+1"/>
<source>Context2</source>
<translation>內文2</translation>
</message>
<message>
+ <location line="+1"/>
<source>Context3</source>
<translation>內文3</translation>
</message>
<message>
+ <location line="+1"/>
<source>Context4</source>
<translation>內文4</translation>
</message>
<message>
+ <location line="+1"/>
<source>Call</source>
<translation>呼å«</translation>
</message>
<message>
+ <location line="+1"/>
<source>Hangup</source>
<translation>掛斷</translation>
</message>
<message>
+ <location line="+1"/>
<source>Flip</source>
<translation>å轉</translation>
</message>
<message>
+ <location line="+527"/>
+ <location line="+122"/>
<source>Ctrl</source>
<translation>Ctrl</translation>
</message>
<message>
+ <location line="-121"/>
+ <location line="+125"/>
<source>Shift</source>
<translation>Shift</translation>
</message>
<message>
+ <location line="-124"/>
+ <location line="+122"/>
<source>Alt</source>
<translation>Alt</translation>
</message>
<message>
+ <location line="-121"/>
+ <location line="+117"/>
<source>Meta</source>
<translation>Meta</translation>
</message>
<message>
+ <location line="-25"/>
<source>+</source>
<translation>+</translation>
</message>
<message>
+ <location line="+46"/>
<source>F%1</source>
<translation>F%1</translation>
</message>
<message>
+ <location line="-720"/>
<source>Home Page</source>
<translation>首é </translation>
</message>
@@ -4460,23 +5466,27 @@ Please choose a different file name.</source>
<context>
<name>QSlider</name>
<message>
- <location filename="../src/plugins/accessible/widgets/rangecontrols.cpp" line="151"/>
+ <location filename="../src/plugins/accessible/widgets/rangecontrols.cpp" line="+151"/>
<source>Page left</source>
<translation>é é¢å·¦æ–¹</translation>
</message>
<message>
+ <location line="+0"/>
<source>Page up</source>
<translation>é é¢ä¸Šæ–¹</translation>
</message>
<message>
+ <location line="+2"/>
<source>Position</source>
<translation>ä½ç½®</translation>
</message>
<message>
+ <location line="+3"/>
<source>Page right</source>
<translation>é é¢å³æ–¹</translation>
</message>
<message>
+ <location line="+0"/>
<source>Page down</source>
<translation>é é¢ä¸‹æ–¹</translation>
</message>
@@ -4484,54 +5494,67 @@ Please choose a different file name.</source>
<context>
<name>QSocks5SocketEngine</name>
<message>
+ <location filename="../src/network/socket/qsocks5socketengine.cpp" line="-67"/>
<source>Connection to proxy refused</source>
<translation>代ç†ä¼ºæœå™¨é€£ç·šè¢«æ‹’</translation>
</message>
<message>
+ <location line="+4"/>
<source>Connection to proxy closed prematurely</source>
<translation>代ç†ä¼ºæœå™¨é€£ç·šå·²ä¸æ­£å¸¸é—œé–‰</translation>
</message>
<message>
+ <location line="+4"/>
<source>Proxy host not found</source>
<translation>找ä¸åˆ°ä»£ç†ä¼ºæœå™¨</translation>
</message>
<message>
+ <location line="+5"/>
<source>Connection to proxy timed out</source>
<translation>代ç†ä¼ºæœå™¨é€£ç·šé€¾æ™‚</translation>
</message>
<message>
+ <location line="+17"/>
<source>Proxy authentication failed</source>
<translation>代ç†ä¼ºæœå™¨èªè­‰å¤±æ•—</translation>
</message>
<message>
+ <location line="+1"/>
<source>Proxy authentication failed: %1</source>
<translation>代ç†ä¼ºæœå™¨èªè­‰å¤±æ•—:%1</translation>
</message>
<message>
+ <location line="+9"/>
<source>SOCKS version 5 protocol error</source>
<translation>SOCKS 5 çš„å”定錯誤</translation>
</message>
<message>
+ <location line="+19"/>
<source>General SOCKSv5 server failure</source>
<translation>一般的 SOCKSv5 伺æœå™¨éŒ¯èª¤</translation>
</message>
<message>
+ <location line="+4"/>
<source>Connection not allowed by SOCKSv5 server</source>
<translation>連線未被 SOCKSv5 伺æœå™¨å…許</translation>
</message>
<message>
+ <location line="+16"/>
<source>TTL expired</source>
<translation>TTL 逾時</translation>
</message>
<message>
+ <location line="+4"/>
<source>SOCKSv5 command not supported</source>
<translation>SOCKSv5 指令未被支æ´</translation>
</message>
<message>
+ <location line="+4"/>
<source>Address type not supported</source>
<translation>ä½å€åž‹æ…‹æœªè¢«æ”¯æ´</translation>
</message>
<message>
+ <location line="+5"/>
<source>Unknown SOCKSv5 proxy error code 0x%1</source>
<translation>未知的 SOCKSv5 代ç†ä¼ºæœå™¨éŒ¯èª¤ä»£ç¢¼ 0x%1</translation>
</message>
@@ -4540,6 +5563,7 @@ Please choose a different file name.</source>
<translation type="obsolete">連接到 socks 伺æœå™¨æ™‚發生 socks5 逾時錯誤</translation>
</message>
<message>
+ <location line="+685"/>
<source>Network operation timed out</source>
<translation>網路æ“作逾時</translation>
</message>
@@ -4547,10 +5571,12 @@ Please choose a different file name.</source>
<context>
<name>QSpinBox</name>
<message>
+ <location filename="../src/plugins/accessible/widgets/rangecontrols.cpp" line="-574"/>
<source>More</source>
<translation>更多</translation>
</message>
<message>
+ <location line="+2"/>
<source>Less</source>
<translation>較少</translation>
</message>
@@ -4558,43 +5584,56 @@ Please choose a different file name.</source>
<context>
<name>QSql</name>
<message>
- <location filename="../src/qt3support/sql/q3sqlmanager_p.cpp" line="860"/>
+ <location filename="../src/qt3support/sql/q3sqlmanager_p.cpp" line="+890"/>
<source>Delete</source>
<translation>刪除</translation>
</message>
<message>
+ <location line="+1"/>
<source>Delete this record?</source>
<translation>è¦åˆªé™¤é€™ç­†ç´€éŒ„嗎?</translation>
</message>
<message>
+ <location line="+1"/>
+ <location line="+16"/>
+ <location line="+36"/>
<source>Yes</source>
<translation>是</translation>
</message>
<message>
+ <location line="-51"/>
+ <location line="+16"/>
+ <location line="+36"/>
<source>No</source>
<translation>å¦</translation>
</message>
<message>
+ <location line="-44"/>
<source>Insert</source>
<translation>æ’å…¥</translation>
</message>
<message>
+ <location line="+2"/>
<source>Update</source>
<translation>æ›´æ–°</translation>
</message>
<message>
+ <location line="+4"/>
<source>Save edits?</source>
<translation>è¦å„²å­˜ç·¨è¼¯éŽçš„內容嗎?</translation>
</message>
<message>
+ <location line="+3"/>
<source>Cancel</source>
<translation>å–消</translation>
</message>
<message>
+ <location line="+32"/>
<source>Confirm</source>
<translation>確èª</translation>
</message>
<message>
+ <location line="+1"/>
<source>Cancel your edits?</source>
<translation>è¦å–消編輯嗎?</translation>
</message>
@@ -4602,43 +5641,52 @@ Please choose a different file name.</source>
<context>
<name>QSslSocket</name>
<message>
- <location filename="../src/network/ssl/qsslsocket_openssl.cpp" line="539"/>
+ <location filename="../src/network/ssl/qsslsocket_openssl.cpp" line="+569"/>
<source>Unable to write data: %1</source>
<translation>無法寫入資料:%1</translation>
</message>
<message>
+ <location line="+119"/>
<source>Error while reading: %1</source>
<translation>讀å–時發生錯誤:%1</translation>
</message>
<message>
+ <location line="+96"/>
<source>Error during SSL handshake: %1</source>
<translation>SSL åŒæ­¥æ™‚發生錯誤:%1</translation>
</message>
<message>
+ <location line="-524"/>
<source>Error creating SSL context (%1)</source>
<translation>建立 SSL 內文時發生錯誤(%1)</translation>
</message>
<message>
+ <location line="+25"/>
<source>Invalid or empty cipher list (%1)</source>
<translation>ä¸åˆæ³•æˆ–空白的加密清單(%1)</translation>
</message>
<message>
+ <location line="+62"/>
<source>Error creating SSL session, %1</source>
<translation>建立 SSL 工作階段時發生錯誤:%1</translation>
</message>
<message>
+ <location line="+15"/>
<source>Error creating SSL session: %1</source>
<translation>建立 SSL 工作階段時發生錯誤:%1</translation>
</message>
<message>
+ <location line="-61"/>
<source>Cannot provide a certificate with no key, %1</source>
<translation>沒有金鑰無法æ供憑證:%1</translation>
</message>
<message>
+ <location line="+7"/>
<source>Error loading local certificate, %1</source>
<translation>載入本地憑證時發生錯誤:%1</translation>
</message>
<message>
+ <location line="+12"/>
<source>Error loading private key, %1</source>
<translation>載入ç§é‘°æ™‚發生錯誤:%1</translation>
</message>
@@ -4647,6 +5695,7 @@ Please choose a different file name.</source>
<translation type="obsolete">ç§é‘°èˆ‡å…¬é‘°ä¸ç¬¦ï¼š%1</translation>
</message>
<message>
+ <location line="+7"/>
<source>Private key does not certificate public key, %1</source>
<translation>ç§å¯†é‡‘鑰無法èªè­‰å…¬é–‹é‡‘鑰,%1</translation>
</message>
@@ -4654,25 +5703,30 @@ Please choose a different file name.</source>
<context>
<name>QSystemSemaphore</name>
<message>
- <location filename="../src/corelib/kernel/qsystemsemaphore_win.cpp" line="36"/>
+ <location filename="../src/corelib/kernel/qsystemsemaphore_unix.cpp" line="-41"/>
+ <location filename="../src/corelib/kernel/qsystemsemaphore_win.cpp" line="+66"/>
<source>%1: out of resources</source>
<translation>%1:資æºä¸è¶³</translation>
</message>
<message>
- <location filename="../src/corelib/kernel/qsystemsemaphore_win.cpp" line="4"/>
+ <location line="-13"/>
+ <location filename="../src/corelib/kernel/qsystemsemaphore_win.cpp" line="+4"/>
<source>%1: permission denied</source>
<translation>%1:存å–被拒</translation>
</message>
<message>
+ <location line="+4"/>
<source>%1: already exists</source>
<translation>%1:已存在</translation>
</message>
<message>
+ <location line="+4"/>
<source>%1: does not exist</source>
<translation>%1:ä¸å­˜åœ¨</translation>
</message>
<message>
- <location filename="../src/corelib/kernel/qsystemsemaphore_win.cpp" line="3"/>
+ <location line="+9"/>
+ <location filename="../src/corelib/kernel/qsystemsemaphore_win.cpp" line="+3"/>
<source>%1: unknown error %2</source>
<translation>%1:未知的錯誤 %2</translation>
</message>
@@ -4680,11 +5734,12 @@ Please choose a different file name.</source>
<context>
<name>QTDSDriver</name>
<message>
- <location filename="../src/sql/drivers/tds/qsql_tds.cpp" line="552"/>
+ <location filename="../src/sql/drivers/tds/qsql_tds.cpp" line="+584"/>
<source>Unable to open connection</source>
<translation>無法開啟連線</translation>
</message>
<message>
+ <location line="+5"/>
<source>Unable to use database</source>
<translation>無法使用資料庫</translation>
</message>
@@ -4692,10 +5747,12 @@ Please choose a different file name.</source>
<context>
<name>QTabBar</name>
<message>
+ <location filename="../src/plugins/accessible/widgets/complexwidgets.cpp" line="-326"/>
<source>Scroll Left</source>
<translation>往左æ²è»¸</translation>
</message>
<message>
+ <location line="+0"/>
<source>Scroll Right</source>
<translation>å¾€å³æ²è»¸</translation>
</message>
@@ -4707,7 +5764,7 @@ Please choose a different file name.</source>
<translation type="obsolete">未支æ´çš„ socket æ“作</translation>
</message>
<message>
- <location filename="../src/network/socket/qtcpserver.cpp" line="252"/>
+ <location filename="../src/network/socket/qtcpserver.cpp" line="+282"/>
<source>Operation on socket is not supported</source>
<translation>Socket çš„æ“作未被支æ´</translation>
</message>
@@ -4715,35 +5772,42 @@ Please choose a different file name.</source>
<context>
<name>QTextControl</name>
<message>
- <location filename="../src/gui/text/qtextcontrol.cpp" line="1942"/>
+ <location filename="../src/gui/text/qtextcontrol.cpp" line="+1973"/>
<source>&amp;Undo</source>
<translation>復原(&amp;U)</translation>
</message>
<message>
+ <location line="+2"/>
<source>&amp;Redo</source>
<translation>é‡åš(&amp;R)</translation>
</message>
<message>
+ <location line="+4"/>
<source>Cu&amp;t</source>
<translation>剪下(&amp;T)</translation>
</message>
<message>
+ <location line="+5"/>
<source>&amp;Copy</source>
<translation>複製(&amp;C)</translation>
</message>
<message>
+ <location line="+7"/>
<source>Copy &amp;Link Location</source>
<translation>複製連çµä½å€(&amp;L)</translation>
</message>
<message>
+ <location line="+6"/>
<source>&amp;Paste</source>
<translation>貼上(&amp;P)</translation>
</message>
<message>
+ <location line="+3"/>
<source>Delete</source>
<translation>刪除</translation>
</message>
<message>
+ <location line="+7"/>
<source>Select All</source>
<translation>全部é¸æ“‡</translation>
</message>
@@ -4751,10 +5815,14 @@ Please choose a different file name.</source>
<context>
<name>QToolButton</name>
<message>
+ <location filename="../src/plugins/accessible/widgets/simplewidgets.cpp" line="+254"/>
+ <location line="+6"/>
<source>Press</source>
<translation>按下</translation>
</message>
<message>
+ <location line="-4"/>
+ <location line="+8"/>
<source>Open</source>
<translation>é–‹å•Ÿ</translation>
</message>
@@ -4762,7 +5830,7 @@ Please choose a different file name.</source>
<context>
<name>QUdpSocket</name>
<message>
- <location filename="../src/network/socket/qudpsocket.cpp" line="139"/>
+ <location filename="../src/network/socket/qudpsocket.cpp" line="+169"/>
<source>This platform does not support IPv6</source>
<translation>此平å°ä¸æ”¯æ´ IPv6</translation>
</message>
@@ -4770,11 +5838,12 @@ Please choose a different file name.</source>
<context>
<name>QUndoGroup</name>
<message>
- <location filename="../src/gui/util/qundogroup.cpp" line="356"/>
+ <location filename="../src/gui/util/qundogroup.cpp" line="+386"/>
<source>Undo</source>
<translation>復原</translation>
</message>
<message>
+ <location line="+28"/>
<source>Redo</source>
<translation>é‡åš</translation>
</message>
@@ -4782,7 +5851,7 @@ Please choose a different file name.</source>
<context>
<name>QUndoModel</name>
<message>
- <location filename="../src/gui/util/qundoview.cpp" line="71"/>
+ <location filename="../src/gui/util/qundoview.cpp" line="+101"/>
<source>&lt;empty&gt;</source>
<translation><空白></translation>
</message>
@@ -4790,11 +5859,12 @@ Please choose a different file name.</source>
<context>
<name>QUndoStack</name>
<message>
- <location filename="../src/gui/util/qundostack.cpp" line="804"/>
+ <location filename="../src/gui/util/qundostack.cpp" line="+834"/>
<source>Undo</source>
<translation>復原</translation>
</message>
<message>
+ <location line="+27"/>
<source>Redo</source>
<translation>é‡åš</translation>
</message>
@@ -4802,47 +5872,57 @@ Please choose a different file name.</source>
<context>
<name>QUnicodeControlCharacterMenu</name>
<message>
- <location filename="../src/gui/text/qtextcontrol.cpp" line="884"/>
+ <location filename="../src/gui/text/qtextcontrol.cpp" line="+884"/>
<source>LRM Left-to-right mark</source>
<translation>LRM 左到å³æ¨™è¨˜</translation>
</message>
<message>
+ <location line="+1"/>
<source>RLM Right-to-left mark</source>
<translation>RLM å³åˆ°å·¦æ¨™è¨˜</translation>
</message>
<message>
+ <location line="+1"/>
<source>ZWJ Zero width joiner</source>
<translation>ZWJ 零寬度連接器</translation>
</message>
<message>
+ <location line="+1"/>
<source>ZWNJ Zero width non-joiner</source>
<translation>ZWNJ 零寬度éžé€£æŽ¥å™¨</translation>
</message>
<message>
+ <location line="+1"/>
<source>ZWSP Zero width space</source>
<translation>ZWSP 零寬度空白</translation>
</message>
<message>
+ <location line="+1"/>
<source>LRE Start of left-to-right embedding</source>
<translation>LRE 左到å³åµŒå…¥èµ·é»ž</translation>
</message>
<message>
+ <location line="+1"/>
<source>RLE Start of right-to-left embedding</source>
<translation>RLE å³åˆ°å·¦åµŒå…¥èµ·é»ž</translation>
</message>
<message>
+ <location line="+1"/>
<source>LRO Start of left-to-right override</source>
<translation>LRO 左到å³è¦†å¯«èµ·é»ž</translation>
</message>
<message>
+ <location line="+1"/>
<source>RLO Start of right-to-left override</source>
<translation>RLO å³åˆ°å·¦è¦†å¯«èµ·é»ž</translation>
</message>
<message>
+ <location line="+1"/>
<source>PDF Pop directional formatting</source>
<translation>PDF 彈出方å‘æ ¼å¼</translation>
</message>
<message>
+ <location line="+6"/>
<source>Insert Unicode control character</source>
<translation>æ’å…¥è¬åœ‹ç¢¼æŽ§åˆ¶å­—å…ƒ</translation>
</message>
@@ -4850,27 +5930,32 @@ Please choose a different file name.</source>
<context>
<name>QWebFrame</name>
<message>
- <location filename="../src/3rdparty/webkit/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp" line="686"/>
+ <location filename="../src/3rdparty/webkit/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp" line="+692"/>
<source>Request cancelled</source>
<translation>請求已å–消</translation>
</message>
<message>
+ <location line="+17"/>
<source>Request blocked</source>
<translation>請求已被阻擋</translation>
</message>
<message>
+ <location line="+7"/>
<source>Cannot show URL</source>
<translation>無法顯示網å€</translation>
</message>
<message>
+ <location line="+6"/>
<source>Frame load interruped by policy change</source>
<translation>å½±åƒè¼‰å…¥å› æ”¿ç­–變更而中斷</translation>
</message>
<message>
+ <location line="+6"/>
<source>Cannot show mimetype</source>
<translation>無法顯示 MIME 型態</translation>
</message>
<message>
+ <location line="+6"/>
<source>File does not exist</source>
<translation>檔案ä¸å­˜åœ¨</translation>
</message>
@@ -4878,316 +5963,376 @@ Please choose a different file name.</source>
<context>
<name>QWebPage</name>
<message>
- <location filename="../src/3rdparty/webkit/WebCore/platform/network/qt/QNetworkReplyHandler.cpp" line="382"/>
+ <location filename="../src/3rdparty/webkit/WebCore/platform/network/qt/QNetworkReplyHandler.cpp" line="+382"/>
<source>Bad HTTP request</source>
<translation>ä¸è‰¯çš„ HTTP 請求</translation>
</message>
<message>
- <location filename="../src/3rdparty/webkit/WebCore/platform/qt/Localizations.cpp" line="42"/>
+ <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>æ交</translation>
</message>
<message>
+ <location line="+5"/>
<source>Submit</source>
<comment>Submit (input element) alt text for &lt;input&gt; elements with no alt, title, or value</comment>
<translation>æ交</translation>
</message>
<message>
+ <location line="+5"/>
<source>Reset</source>
<comment>default label for Reset buttons in forms on web pages</comment>
<translation>é‡ç½®</translation>
</message>
<message>
+ <location line="+10"/>
<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>這是å¯æœå°‹çš„索引。請輸入關éµå­—: </translation>
</message>
<message>
+ <location line="+5"/>
<source>Choose File</source>
<comment>title for file button used in HTML forms</comment>
<translation>é¸æ“‡æª”案</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>未é¸å–任何檔案</translation>
</message>
<message>
+ <location line="+5"/>
<source>Open in New Window</source>
<comment>Open in New Window context menu item</comment>
<translation>在新視窗開啟</translation>
</message>
<message>
+ <location line="+5"/>
<source>Save Link...</source>
<comment>Download Linked File context menu item</comment>
<translation>儲存連çµ...</translation>
</message>
<message>
+ <location line="+5"/>
<source>Copy Link</source>
<comment>Copy Link context menu item</comment>
<translation>複製連çµ</translation>
</message>
<message>
+ <location line="+5"/>
<source>Open Image</source>
<comment>Open Image in New Window context menu item</comment>
<translation>é–‹å•Ÿå½±åƒ</translation>
</message>
<message>
+ <location line="+5"/>
<source>Save Image</source>
<comment>Download Image context menu item</comment>
<translation>儲存影åƒ</translation>
</message>
<message>
+ <location line="+5"/>
<source>Copy Image</source>
<comment>Copy Link context menu item</comment>
<translation>複製影åƒ</translation>
</message>
<message>
+ <location line="+5"/>
<source>Open Frame</source>
<comment>Open Frame in New Window context menu item</comment>
<translation>開啟框架</translation>
</message>
<message>
+ <location line="+5"/>
<source>Copy</source>
<comment>Copy context menu item</comment>
<translation>複製</translation>
</message>
<message>
+ <location line="+5"/>
<source>Go Back</source>
<comment>Back context menu item</comment>
<translation>往回</translation>
</message>
<message>
+ <location line="+5"/>
<source>Go Forward</source>
<comment>Forward context menu item</comment>
<translation>å¾€å‰</translation>
</message>
<message>
+ <location line="+5"/>
<source>Stop</source>
<comment>Stop context menu item</comment>
<translation>åœæ­¢</translation>
</message>
<message>
+ <location line="+5"/>
<source>Reload</source>
<comment>Reload context menu item</comment>
<translation>é‡æ–°è¼‰å…¥</translation>
</message>
<message>
+ <location line="+5"/>
<source>Cut</source>
<comment>Cut context menu item</comment>
<translation>剪下</translation>
</message>
<message>
+ <location line="+5"/>
<source>Paste</source>
<comment>Paste context menu item</comment>
<translation>貼上</translation>
</message>
<message>
+ <location line="+5"/>
<source>No Guesses Found</source>
<comment>No Guesses Found context menu item</comment>
<translation>找ä¸åˆ°å¯èƒ½çš„內容</translation>
</message>
<message>
+ <location line="+5"/>
<source>Ignore</source>
<comment>Ignore Spelling context menu item</comment>
<translation>忽略</translation>
</message>
<message>
+ <location line="+5"/>
<source>Add To Dictionary</source>
<comment>Learn Spelling context menu item</comment>
<translation>新增到字典</translation>
</message>
<message>
+ <location line="+5"/>
<source>Search The Web</source>
<comment>Search The Web context menu item</comment>
<translation>æœå°‹ç«™å°</translation>
</message>
<message>
+ <location line="+5"/>
<source>Look Up In Dictionary</source>
<comment>Look Up in Dictionary context menu item</comment>
<translation>在字典裡æœå°‹</translation>
</message>
<message>
+ <location line="+5"/>
<source>Open Link</source>
<comment>Open Link context menu item</comment>
<translation>開啟連çµ</translation>
</message>
<message>
+ <location line="+5"/>
<source>Ignore</source>
<comment>Ignore Grammar context menu item</comment>
<translation>忽略</translation>
</message>
<message>
+ <location line="+5"/>
<source>Spelling</source>
<comment>Spelling and Grammar context sub-menu item</comment>
<translation>拼字</translation>
</message>
<message>
+ <location line="+5"/>
<source>Show Spelling and Grammar</source>
<comment>menu item title</comment>
<translation>顯示拼字與文法</translation>
</message>
<message>
+ <location line="+1"/>
<source>Hide Spelling and Grammar</source>
<comment>menu item title</comment>
<translation>éš±è—拼字與文法</translation>
</message>
<message>
+ <location line="+5"/>
<source>Check Spelling</source>
<comment>Check spelling context menu item</comment>
<translation>檢查拼字</translation>
</message>
<message>
+ <location line="+5"/>
<source>Check Spelling While Typing</source>
<comment>Check spelling while typing context menu item</comment>
<translation>打字時立å³æª¢æŸ¥æ‹¼å­—</translation>
</message>
<message>
+ <location line="+5"/>
<source>Check Grammar With Spelling</source>
<comment>Check grammar with spelling context menu item</comment>
<translation>檢查拼字與文法</translation>
</message>
<message>
+ <location line="+5"/>
<source>Fonts</source>
<comment>Font context sub-menu item</comment>
<translation>å­—åž‹</translation>
</message>
<message>
+ <location line="+5"/>
<source>Bold</source>
<comment>Bold context menu item</comment>
<translation>ç²—é«”</translation>
</message>
<message>
+ <location line="+5"/>
<source>Italic</source>
<comment>Italic context menu item</comment>
<translation>斜體</translation>
</message>
<message>
+ <location line="+5"/>
<source>Underline</source>
<comment>Underline context menu item</comment>
<translation>底線</translation>
</message>
<message>
+ <location line="+5"/>
<source>Outline</source>
<comment>Outline context menu item</comment>
<translation>外框線</translation>
</message>
<message>
+ <location line="+5"/>
<source>Direction</source>
<comment>Writing direction context sub-menu item</comment>
<translation>æ–¹å‘</translation>
</message>
<message>
+ <location line="+5"/>
<source>Text Direction</source>
<comment>Text direction context sub-menu item</comment>
<translation>文字方å‘</translation>
</message>
<message>
+ <location line="+5"/>
<source>Default</source>
<comment>Default writing direction context menu item</comment>
<translation>é è¨­</translation>
</message>
<message>
+ <location line="+5"/>
<source>LTR</source>
<comment>Left to Right context menu item</comment>
<translation>左到å³</translation>
</message>
<message>
+ <location line="+5"/>
<source>RTL</source>
<comment>Right to Left context menu item</comment>
<translation>å³åˆ°å·¦</translation>
</message>
<message>
+ <location line="+5"/>
<source>Inspect</source>
<comment>Inspect Element context menu item</comment>
<translation>查驗</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>沒有最近的æœå°‹</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>最近的æœå°‹</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>清除最近的æœå°‹</translation>
</message>
<message>
+ <location line="+75"/>
<source>Unknown</source>
<comment>Unknown filesize FTP directory listing item</comment>
<translation>未知</translation>
</message>
<message>
+ <location line="+5"/>
<source>%1 (%2x%3 pixels)</source>
<comment>Title string for images</comment>
<translation>%1(%2x%3 åƒç´ ï¼‰</translation>
</message>
<message>
- <location filename="../src/3rdparty/webkit/WebKit/qt/WebCoreSupport/InspectorClientQt.cpp" line="185"/>
+ <location filename="../src/3rdparty/webkit/WebKit/qt/WebCoreSupport/InspectorClientQt.cpp" line="+185"/>
<source>Web Inspector - %2</source>
<translation>網站查驗器─%2</translation>
</message>
<message>
- <location filename="../src/3rdparty/webkit/WebCore/platform/qt/ScrollbarQt.cpp" line="58"/>
+ <location filename="../src/3rdparty/webkit/WebCore/platform/qt/ScrollbarQt.cpp" line="+58"/>
<source>Scroll here</source>
<translation>在此æ²è»¸</translation>
</message>
<message>
+ <location line="+3"/>
<source>Left edge</source>
<translation>左邊緣</translation>
</message>
<message>
+ <location line="+0"/>
<source>Top</source>
<translation>頂端</translation>
</message>
<message>
+ <location line="+1"/>
<source>Right edge</source>
<translation>å³é‚Šç·£</translation>
</message>
<message>
+ <location line="+0"/>
<source>Bottom</source>
<translation>底端</translation>
</message>
<message>
+ <location line="+3"/>
<source>Page left</source>
<translation>é é¢å·¦æ–¹</translation>
</message>
<message>
+ <location line="+0"/>
<source>Page up</source>
<translation>é é¢ä¸Šæ–¹</translation>
</message>
<message>
+ <location line="+1"/>
<source>Page right</source>
<translation>é é¢å³æ–¹</translation>
</message>
<message>
+ <location line="+0"/>
<source>Page down</source>
<translation>é é¢ä¸‹æ–¹</translation>
</message>
<message>
+ <location line="+3"/>
<source>Scroll left</source>
<translation>往左æ²è»¸</translation>
</message>
<message>
+ <location line="+0"/>
<source>Scroll up</source>
<translation>往上æ²è»¸</translation>
</message>
<message>
+ <location line="+1"/>
<source>Scroll right</source>
<translation>å¾€å³æ²è»¸</translation>
</message>
<message>
+ <location line="+0"/>
<source>Scroll down</source>
<translation>往下æ²è»¸</translation>
</message>
<message numerus="yes">
- <location filename="../src/3rdparty/webkit/WebCore/platform/qt/FileChooserQt.cpp" line="45"/>
+ <location filename="../src/3rdparty/webkit/WebCore/platform/qt/FileChooserQt.cpp" line="+45"/>
<source>%n file(s)</source>
<comment>number of chosen file</comment>
<translation>
@@ -5195,127 +6340,170 @@ Please choose a different file name.</source>
</translation>
</message>
<message>
- <location filename="../src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp" line="1342"/>
+ <location filename="../src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp" line="+1322"/>
<source>JavaScript Alert - %1</source>
<translation>JavaScript 警告 ─ %1</translation>
</message>
<message>
+ <location line="+15"/>
<source>JavaScript Confirm - %1</source>
<translation>JavaScript ç¢ºèª â”€ %1</translation>
</message>
<message>
+ <location line="+17"/>
<source>JavaScript Prompt - %1</source>
<translation>JavaScript æ示 ─ %1</translation>
</message>
<message>
+ <location line="+333"/>
<source>Move the cursor to the next character</source>
<translation>移動游標到下一個字元</translation>
</message>
<message>
+ <location line="+3"/>
<source>Move the cursor to the previous character</source>
<translation>移動游標到å‰ä¸€å€‹å­—å…ƒ</translation>
</message>
<message>
+ <location line="+3"/>
<source>Move the cursor to the next word</source>
<translation>移動游標到下一個單字</translation>
</message>
<message>
+ <location line="+3"/>
<source>Move the cursor to the previous word</source>
<translation>移動游標到å‰ä¸€å€‹å–®å­—</translation>
</message>
<message>
+ <location line="+3"/>
<source>Move the cursor to the next line</source>
<translation>移動游標到下一行</translation>
</message>
<message>
+ <location line="+3"/>
<source>Move the cursor to the previous line</source>
<translation>移動游標到å‰ä¸€è¡Œ</translation>
</message>
<message>
+ <location line="+3"/>
<source>Move the cursor to the start of the line</source>
<translation>移動游標到這一行的起頭</translation>
</message>
<message>
+ <location line="+3"/>
<source>Move the cursor to the end of the line</source>
<translation>移動游標到這一行的çµå°¾</translation>
</message>
<message>
+ <location line="+3"/>
<source>Move the cursor to the start of the block</source>
<translation>移動游標到這一個å€å¡Šçš„èµ·é ­</translation>
</message>
<message>
+ <location line="+3"/>
<source>Move the cursor to the end of the block</source>
<translation>移動游標到這一個å€å¡Šçš„çµå°¾</translation>
</message>
<message>
+ <location line="+3"/>
<source>Move the cursor to the start of the document</source>
<translation>移動游標到這一個文件的起頭</translation>
</message>
<message>
+ <location line="+3"/>
<source>Move the cursor to the end of the document</source>
<translation>移動游標到這一個文件的çµå°¾</translation>
</message>
<message>
+ <location line="+3"/>
+ <source>Select all</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
<source>Select to the next character</source>
<translation>é¸æ“‡åˆ°ä¸‹ä¸€å€‹å­—å…ƒ</translation>
</message>
<message>
+ <location line="+3"/>
<source>Select to the previous character</source>
<translation>é¸æ“‡åˆ°å‰ä¸€å€‹å­—å…ƒ</translation>
</message>
<message>
+ <location line="+3"/>
<source>Select to the next word</source>
<translation>é¸æ“‡åˆ°ä¸‹ä¸€å€‹å–®å­—</translation>
</message>
<message>
+ <location line="+3"/>
<source>Select to the previous word</source>
<translation>é¸æ“‡åˆ°å‰ä¸€å€‹å–®å­—</translation>
</message>
<message>
+ <location line="+3"/>
<source>Select to the next line</source>
<translation>é¸æ“‡åˆ°ä¸‹ä¸€è¡Œ</translation>
</message>
<message>
+ <location line="+3"/>
<source>Select to the previous line</source>
<translation>é¸æ“‡åˆ°å‰ä¸€è¡Œ</translation>
</message>
<message>
+ <location line="+3"/>
<source>Select to the start of the line</source>
<translation>é¸æ“‡åˆ°é€™ä¸€è¡Œçš„èµ·é ­</translation>
</message>
<message>
+ <location line="+3"/>
<source>Select to the end of the line</source>
<translation>é¸æ“‡åˆ°é€™ä¸€è¡Œçš„çµå°¾</translation>
</message>
<message>
+ <location line="+3"/>
<source>Select to the start of the block</source>
<translation>é¸æ“‡åˆ°é€™ä¸€å€‹å€å¡Šçš„èµ·é ­</translation>
</message>
<message>
+ <location line="+3"/>
<source>Select to the end of the block</source>
<translation>é¸æ“‡åˆ°é€™ä¸€å€‹å€å¡Šçš„çµå°¾</translation>
</message>
<message>
+ <location line="+3"/>
<source>Select to the start of the document</source>
<translation>é¸æ“‡åˆ°é€™ä¸€å€‹æ–‡ä»¶çš„èµ·é ­</translation>
</message>
<message>
+ <location line="+3"/>
<source>Select to the end of the document</source>
<translation>é¸æ“‡åˆ°é€™ä¸€å€‹æ–‡ä»¶çš„çµå°¾</translation>
</message>
<message>
+ <location line="+3"/>
<source>Delete to the start of the word</source>
<translation>刪除到此單字的起頭</translation>
</message>
<message>
+ <location line="+3"/>
<source>Delete to the end of the word</source>
<translation>刪除到此單字的çµå°¾</translation>
</message>
+ <message>
+ <location line="+33"/>
+ <source>Insert a new paragraph</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Insert a new line</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>QWhatsThisAction</name>
<message>
- <location filename="../src/gui/kernel/qwhatsthis.cpp" line="492"/>
+ <location filename="../src/gui/kernel/qwhatsthis.cpp" line="+522"/>
<source>What&apos;s This?</source>
<translation>這是什麼?</translation>
</message>
@@ -5323,7 +6511,7 @@ Please choose a different file name.</source>
<context>
<name>QWidget</name>
<message>
- <location filename="../src/gui/kernel/qwidget.cpp" line="5290"/>
+ <location filename="../src/gui/kernel/qwidget.cpp" line="+5326"/>
<source>*</source>
<translation>+</translation>
</message>
@@ -5331,19 +6519,22 @@ Please choose a different file name.</source>
<context>
<name>QWizard</name>
<message>
- <location filename="../src/gui/dialogs/qwizard.cpp" line="605"/>
+ <location filename="../src/gui/dialogs/qwizard.cpp" line="+637"/>
<source>Go Back</source>
<translation>往回</translation>
</message>
<message>
+ <location line="+3"/>
<source>Continue</source>
<translation>繼續</translation>
</message>
<message>
+ <location line="+5"/>
<source>Commit</source>
<translation>æ交</translation>
</message>
<message>
+ <location line="+2"/>
<source>Done</source>
<translation>完æˆ</translation>
</message>
@@ -5352,30 +6543,37 @@ Please choose a different file name.</source>
<translation type="obsolete">離開</translation>
</message>
<message>
+ <location line="+4"/>
<source>Help</source>
<translation>說明</translation>
</message>
<message>
+ <location line="-14"/>
<source>&lt; &amp;Back</source>
<translation><返回(&amp;B)</translation>
</message>
<message>
+ <location line="+10"/>
<source>&amp;Finish</source>
<translation>完æˆ(&amp;F)</translation>
</message>
<message>
+ <location line="+2"/>
<source>Cancel</source>
<translation>å–消</translation>
</message>
<message>
+ <location line="+2"/>
<source>&amp;Help</source>
<translation>說明(&amp;H)</translation>
</message>
<message>
+ <location line="-8"/>
<source>&amp;Next</source>
<translation>下一個(&amp;N)</translation>
</message>
<message>
+ <location line="+0"/>
<source>&amp;Next &gt;</source>
<translation>下一個(&amp;N)></translation>
</message>
@@ -5383,55 +6581,69 @@ Please choose a different file name.</source>
<context>
<name>QWorkspace</name>
<message>
- <location filename="../src/gui/widgets/qworkspace.cpp" line="1064"/>
+ <location filename="../src/gui/widgets/qworkspace.cpp" line="+1094"/>
<source>&amp;Restore</source>
<translation>回復(&amp;R)</translation>
</message>
<message>
+ <location line="+1"/>
<source>&amp;Move</source>
<translation>移動(&amp;M)</translation>
</message>
<message>
+ <location line="+1"/>
<source>&amp;Size</source>
<translation>大å°(&amp;S)</translation>
</message>
<message>
+ <location line="+2"/>
<source>Mi&amp;nimize</source>
<translation>最å°åŒ–(&amp;N)</translation>
</message>
<message>
+ <location line="+2"/>
<source>Ma&amp;ximize</source>
<translation>最大化(&amp;X)</translation>
</message>
<message>
+ <location line="+2"/>
<source>&amp;Close</source>
<translation>關閉(&amp;C)</translation>
</message>
<message>
+ <location line="+6"/>
<source>Stay on &amp;Top</source>
<translation>留在頂端(&amp;T)</translation>
</message>
<message>
+ <location line="+3"/>
+ <location line="+1059"/>
<source>Sh&amp;ade</source>
<translation>é®è”½(&amp;A)</translation>
</message>
<message>
+ <location line="-278"/>
+ <location line="+60"/>
<source>%1 - [%2]</source>
<translation>%1 - [%2]</translation>
</message>
<message>
+ <location line="-1837"/>
<source>Minimize</source>
<translation>最å°åŒ–</translation>
</message>
<message>
+ <location line="+2"/>
<source>Restore Down</source>
<translation>å‘下æ¢å¾©</translation>
</message>
<message>
+ <location line="-4"/>
<source>Close</source>
<translation>關閉</translation>
</message>
<message>
+ <location line="+2053"/>
<source>&amp;Unshade</source>
<translation>å–消é®è”½(&amp;U)</translation>
</message>
@@ -5439,95 +6651,117 @@ Please choose a different file name.</source>
<context>
<name>QXml</name>
<message>
- <location filename="../src/xml/sax/qxml.cpp" line="28"/>
+ <location filename="../src/xml/sax/qxml.cpp" line="+58"/>
<source>no error occurred</source>
<translation>沒有發生錯誤</translation>
</message>
<message>
+ <location line="+1"/>
<source>error triggered by consumer</source>
<translation>用戶觸發的錯誤</translation>
</message>
<message>
+ <location line="+1"/>
<source>unexpected end of file</source>
<translation>未é æœŸé‡åˆ°æª”案çµå°¾</translation>
</message>
<message>
+ <location line="+1"/>
<source>more than one document type definition</source>
<translation>定義了一個以上的文件型態</translation>
</message>
<message>
+ <location line="+1"/>
<source>error occurred while parsing element</source>
<translation>剖æžå…ƒç´ æ™‚發生錯誤</translation>
</message>
<message>
+ <location line="+1"/>
<source>tag mismatch</source>
<translation>標籤ä¸å°ç¨±</translation>
</message>
<message>
+ <location line="+1"/>
<source>error occurred while parsing content</source>
<translation>剖æžå…§å®¹æ™‚發生錯誤</translation>
</message>
<message>
+ <location line="+1"/>
<source>unexpected character</source>
<translation>éžé æœŸçš„å­—å…ƒ</translation>
</message>
<message>
+ <location line="+1"/>
<source>invalid name for processing instruction</source>
<translation>處ç†æŒ‡ä»¤æ™‚çš„ä¸åˆæ³•å稱</translation>
</message>
<message>
+ <location line="+1"/>
<source>version expected while reading the XML declaration</source>
<translation>è®€å– XML 宣告時應有版本號</translation>
</message>
<message>
+ <location line="+1"/>
<source>wrong value for standalone declaration</source>
<translation>ç¨ç«‹å®£å‘Šæ™‚的值錯誤</translation>
</message>
<message>
+ <location line="+1"/>
<source>encoding declaration or standalone declaration expected while reading the XML declaration</source>
<translation>è®€å– XML 宣告時應有編碼宣告或ç¨ç«‹å®£å‘Š</translation>
</message>
<message>
+ <location line="+1"/>
<source>standalone declaration expected while reading the XML declaration</source>
<translation>è®€å– XML 宣告時應有讀立宣告</translation>
</message>
<message>
+ <location line="+1"/>
<source>error occurred while parsing document type definition</source>
<translation>剖æžæ–‡ä»¶åž‹æ…‹å®šç¾©æ™‚發生錯誤</translation>
</message>
<message>
+ <location line="+1"/>
<source>letter is expected</source>
<translation>é æœŸæ‡‰ç‚ºå­—æ¯</translation>
</message>
<message>
+ <location line="+1"/>
<source>error occurred while parsing comment</source>
<translation>剖æžè¨»è§£æ™‚發生錯誤</translation>
</message>
<message>
+ <location line="+1"/>
<source>error occurred while parsing reference</source>
<translation>剖æžåƒè€ƒæ™‚發生錯誤</translation>
</message>
<message>
+ <location line="+1"/>
<source>internal general entity reference not allowed in DTD</source>
<translation>在 DTD 中ä¸å…許內部產生的實體åƒè€ƒ</translation>
</message>
<message>
+ <location line="+1"/>
<source>external parsed general entity reference not allowed in attribute value</source>
<translation>在屬性值中ä¸å…許使用外部剖æžçš„實體åƒè€ƒ</translation>
</message>
<message>
+ <location line="+1"/>
<source>external parsed general entity reference not allowed in DTD</source>
<translation>在 DTD 中ä¸å…許使用外部剖æžçš„實體åƒè€ƒ</translation>
</message>
<message>
+ <location line="+1"/>
<source>unparsed entity reference in wrong context</source>
<translation>在錯誤的內文中有未剖æžçš„實體åƒè€ƒ</translation>
</message>
<message>
+ <location line="+1"/>
<source>recursive entities</source>
<translation>éžè¿´çš„實體</translation>
</message>
<message>
+ <location line="+1"/>
<source>error in the text declaration of an external entity</source>
<translation>在外部實體中的文字宣告有錯誤</translation>
</message>
@@ -5535,47 +6769,58 @@ Please choose a different file name.</source>
<context>
<name>QXmlStream</name>
<message>
- <location filename="../src/corelib/xml/qxmlstream_p.h" line="1739"/>
+ <location filename="../src/corelib/xml/qxmlstream.cpp" line="+592"/>
+ <location filename="../src/corelib/xml/qxmlstream_p.h" line="+1769"/>
<source>Extra content at end of document.</source>
<translation>文件尾端有多餘的內容。</translation>
</message>
<message>
+ <location line="+222"/>
<source>Invalid entity value.</source>
<translation>ä¸åˆæ³•çš„實體值</translation>
</message>
<message>
+ <location line="+107"/>
<source>Invalid XML character.</source>
<translation>ä¸åˆæ³•çš„ XML 字元。</translation>
</message>
<message>
+ <location line="+259"/>
<source>Sequence &apos;]]&gt;&apos; not allowed in content.</source>
<translation>在內文中ä¸å…許有åºåˆ— &quot;]]&gt;&quot;。</translation>
</message>
<message>
+ <location line="+309"/>
<source>Namespace prefix &apos;%1&apos; not declared</source>
<translation>命å空間的å‰ç½®å­—串 %1 未宣告</translation>
</message>
<message>
+ <location line="+78"/>
<source>Attribute redefined.</source>
<translation>屬性é‡å®šç¾©ã€‚</translation>
</message>
<message>
+ <location line="+115"/>
<source>Unexpected character &apos;%1&apos; in public id literal.</source>
<translation>在公開代碼字元中é‡åˆ°éžé æœŸçš„å­—å…ƒ %1。</translation>
</message>
<message>
+ <location line="+28"/>
<source>Invalid XML version string.</source>
<translation>ä¸åˆæ³•çš„ XML 版本字串。</translation>
</message>
<message>
+ <location line="+2"/>
<source>Unsupported XML version.</source>
<translation>未支æ´çš„ XML 版本。</translation>
</message>
<message>
+ <location line="+23"/>
<source>%1 is an invalid encoding name.</source>
<translation>%1 為ä¸åˆæ³•çš„編碼å稱。</translation>
</message>
<message>
+ <location line="+7"/>
<source>Encoding %1 is unsupported</source>
<translation>編碼 %1 ä¸æ”¯æ´ã€‚</translation>
</message>
@@ -5584,100 +6829,128 @@ Please choose a different file name.</source>
<translation type="obsolete">ä¸åˆæ³•çš„ XML 編碼å稱。</translation>
</message>
<message>
+ <location line="+16"/>
<source>Standalone accepts only yes or no.</source>
<translation>ç¨ç«‹å¯¦é«”åªæŽ¥å— yes 或 no。</translation>
</message>
<message>
+ <location line="+2"/>
<source>Invalid attribute in XML declaration.</source>
<translation>XML 宣告中有ä¸åˆæ³•çš„屬性。</translation>
</message>
<message>
+ <location line="+16"/>
<source>Premature end of document.</source>
<translation>文件çµå°¾ä¸æ­£ç¢ºã€‚</translation>
</message>
<message>
+ <location line="+2"/>
<source>Invalid document.</source>
<translation>ä¸åˆæ³•çš„文件。</translation>
</message>
<message>
+ <location line="+40"/>
<source>Expected </source>
<translation>é æœŸæ‡‰ç‚º </translation>
</message>
<message>
+ <location line="+11"/>
<source>, but got &apos;</source>
<translation>,但是看到的是 </translation>
</message>
<message>
+ <location line="+4"/>
<source>Unexpected &apos;</source>
<translation>éžé æœŸ</translation>
</message>
<message>
+ <location line="+210"/>
<source>Expected character data.</source>
<translation>é æœŸçš„字元資料。</translation>
</message>
<message>
+ <location filename="../src/corelib/xml/qxmlstream_p.h" line="-995"/>
<source>Recursive entity detected.</source>
<translation>åµæ¸¬åˆ°éžè¿´å¯¦é«”。</translation>
</message>
<message>
+ <location line="+516"/>
<source>Start tag expected.</source>
<translation>é æœŸæ‡‰æœ‰é–‹å§‹æ¨™ç±¤ã€‚</translation>
</message>
<message>
+ <location line="+222"/>
<source>XML declaration not at start of document.</source>
<translation>XML 宣告沒有在文件開始處。</translation>
</message>
<message>
+ <location line="-31"/>
<source>NDATA in parameter entity declaration.</source>
<translation>在åƒæ•¸å¯¦é«”宣告有 NDATA。</translation>
</message>
<message>
+ <location line="+34"/>
<source>%1 is an invalid processing instruction name.</source>
<translation>%1 是ä¸åˆæ³•çš„處ç†æŒ‡ä»¤å稱。</translation>
</message>
<message>
+ <location line="+11"/>
<source>Invalid processing instruction name.</source>
<translation>ä¸åˆæ³•çš„處ç†æŒ‡ä»¤å稱。</translation>
</message>
<message>
+ <location filename="../src/corelib/xml/qxmlstream.cpp" line="-521"/>
+ <location line="+12"/>
+ <location filename="../src/corelib/xml/qxmlstream_p.h" line="+164"/>
+ <location line="+53"/>
<source>Illegal namespace declaration.</source>
<translation>ä¸åˆæ³•çš„命å空間宣告。</translation>
</message>
<message>
- <location filename="../src/corelib/xml/qxmlstream_p.h" line="15"/>
+ <location filename="../src/corelib/xml/qxmlstream_p.h" line="+15"/>
<source>Invalid XML name.</source>
<translation>ä¸åˆæ³•çš„ XML å稱。</translation>
</message>
<message>
+ <location line="+23"/>
<source>Opening and ending tag mismatch.</source>
<translation>開啟與çµæŸçš„標籤ä¸å°ç¨±ã€‚</translation>
</message>
<message>
+ <location line="+18"/>
<source>Reference to unparsed entity &apos;%1&apos;.</source>
<translation>åƒè€ƒåˆ°æœªå‰–æžçš„實體 %1。</translation>
</message>
<message>
+ <location line="-13"/>
+ <location line="+61"/>
+ <location line="+40"/>
<source>Entity &apos;%1&apos; not declared.</source>
<translation>實體 %1 未宣告。</translation>
</message>
<message>
+ <location line="-26"/>
<source>Reference to external entity &apos;%1&apos; in attribute value.</source>
<translation>在屬性值中åƒè€ƒåˆ°å¤–部實體 %1。</translation>
</message>
<message>
+ <location line="+40"/>
<source>Invalid character reference.</source>
<translation>ä¸åˆæ³•çš„å­—å…ƒåƒè€ƒã€‚</translation>
</message>
<message>
+ <location filename="../src/corelib/xml/qxmlstream.cpp" line="-75"/>
+ <location filename="../src/corelib/xml/qxmlstream_p.h" line="-823"/>
<source>Encountered incorrectly encoded content.</source>
<translation>é‡åˆ°ä¸æ­£ç¢ºçš„編碼內容。</translation>
</message>
<message>
+ <location line="+274"/>
<source>The standalone pseudo attribute must appear after the encoding.</source>
<translation>ç¨ç«‹çš„虛擬屬性必須在編碼之後出ç¾ã€‚</translation>
</message>
<message>
- <location filename="../src/corelib/xml/qxmlstream_p.h" line="562"/>
+ <location filename="../src/corelib/xml/qxmlstream_p.h" line="+562"/>
<source>%1 is an invalid PUBLIC identifier.</source>
<translation>%1 為ä¸åˆæ³•çš„ PUBLIC 識別å­ã€‚</translation>
</message>
@@ -5685,21 +6958,22 @@ Please choose a different file name.</source>
<context>
<name>QtXmlPatterns</name>
<message>
- <location filename="../src/xmlpatterns/acceltree/qacceltreebuilder.cpp" line="175"/>
+ <location filename="../src/xmlpatterns/acceltree/qacceltreebuilder.cpp" line="+205"/>
<source>An %1-attribute with value %2 has already been declared.</source>
<translation>已宣告屬性 %1 的值為 %2。</translation>
</message>
<message>
+ <location line="+13"/>
<source>An %1-attribute must have a valid %2 as value, which %3 isn&apos;t.</source>
<translation>屬性 %1 必須以åˆæ³•çš„ %2 為值,而 %3 是ä¸åˆæ³•çš„。</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/api/qiodevicedelegate.cpp" line="54"/>
+ <location filename="../src/xmlpatterns/api/qiodevicedelegate.cpp" line="+84"/>
<source>Network timeout.</source>
<translation>網路逾時。</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/api/qxmlserializer.cpp" line="290"/>
+ <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>元素 %1 無法åºåˆ—化,因為似乎是在文件元素之外。</translation>
</message>
@@ -5708,425 +6982,482 @@ Please choose a different file name.</source>
<translation type="obsolete">屬性元素 %1 無法åºåˆ—化,因為似乎是在頂層。</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qabstractdatetime.cpp" line="50"/>
+ <location filename="../src/xmlpatterns/data/qabstractdatetime.cpp" line="+80"/>
<source>Year %1 is invalid because it begins with %2.</source>
<translation>年份 %1 ä¸åˆæ³•ï¼Œå› ç‚ºæ˜¯å¾ž %2 開始的。</translation>
</message>
<message>
+ <location line="+19"/>
<source>Day %1 is outside the range %2..%3.</source>
<translation>日期 %1 已超出 %2 到 %3 的範åœã€‚</translation>
</message>
<message>
+ <location line="+7"/>
<source>Month %1 is outside the range %2..%3.</source>
<translation>月份 %1 已超出 %2 到 %3 的範åœã€‚</translation>
</message>
<message>
+ <location line="+10"/>
<source>Overflow: Can&apos;t represent date %1.</source>
<translation>溢ä½ï¼šç„¡æ³•è¡¨ç¤ºæ—¥æœŸ %1。</translation>
</message>
<message>
+ <location line="+9"/>
<source>Day %1 is invalid for month %2.</source>
<translation>月份 %2 中沒有日期 %1。</translation>
</message>
<message>
+ <location line="+49"/>
<source>Time 24:%1:%2.%3 is invalid. Hour is 24, but minutes, seconds, and milliseconds are not all 0; </source>
<translation>時間 24:%1:%2.%3 ä¸åˆæ³•ã€‚å°æ™‚為 24 則分ã€ç§’與毫秒都必須是 0。
</translation>
</message>
<message>
+ <location line="+13"/>
<source>Time %1:%2:%3.%4 is invalid.</source>
<translation>時間 %1:%2:%3.%4 ä¸åˆæ³•ã€‚</translation>
</message>
<message>
+ <location line="+115"/>
<source>Overflow: Date can&apos;t be represented.</source>
<translation>溢ä½ï¼šç„¡æ³•è¡¨ç¤ºæ—¥æœŸã€‚</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>必須表é”至少一個組件。</translation>
</message>
<message>
+ <location line="-7"/>
<source>At least one time component must appear after the %1-delimiter.</source>
<translation>在分隔符 %1 後必須至少有一個時間組件。</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qabstractfloatmathematician.cpp" line="34"/>
+ <location filename="../src/xmlpatterns/data/qabstractfloatmathematician.cpp" line="+64"/>
<source>No operand in an integer division, %1, can be %2.</source>
<translation>整數除法沒有é‹ä½œå°è±¡ï¼Œ%1,å¯ä»¥æ˜¯ %2</translation>
</message>
<message>
+ <location line="+7"/>
<source>The first operand in an integer division, %1, cannot be infinity (%2).</source>
<translation>整數除法的第一個é‹ç®—å°è±¡ %1 ä¸èƒ½æ˜¯ç„¡é™å¤§ï¼ˆ%2)。</translation>
</message>
<message>
+ <location line="+6"/>
<source>The second operand in a division, %1, cannot be zero (%2).</source>
<translation>整數除法的第二個é‹ç®—å°è±¡ %1 ä¸èƒ½æ˜¯é›¶ï¼ˆ%2)。</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qanyuri_p.h" line="102"/>
+ <location filename="../src/xmlpatterns/data/qanyuri_p.h" line="+132"/>
<source>%1 is not a valid value of type %2.</source>
<translation>%1 ä¸æ˜¯åˆæ³•çš„ %2 型態的值。</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qatomiccasters_p.h" line="193"/>
+ <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>從 %2 轉æ›åž‹æ…‹ç‚º %1 的時候,來æºæ•¸å€¼ä¸èƒ½æ˜¯ %3。</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qatomicmathematicians.cpp" line="35"/>
+ <location filename="../src/xmlpatterns/data/qatomicmathematicians.cpp" line="+65"/>
<source>Integer division (%1) by zero (%2) is undefined.</source>
<translation>整數除法 %1 除以零(%2)的行為未定義。</translation>
</message>
<message>
+ <location line="+7"/>
<source>Division (%1) by zero (%2) is undefined.</source>
<translation>除法 %1 除以零(%2)的行為未定義。</translation>
</message>
<message>
+ <location line="+7"/>
<source>Modulus division (%1) by zero (%2) is undefined.</source>
<translation>餘數除法 %1 除以零(%2)的行為未定義。</translation>
</message>
<message>
+ <location line="+122"/>
+ <location line="+32"/>
<source>Dividing a value of type %1 by %2 (not-a-number) is not allowed.</source>
<translation>將型態 %1 除以 %2(éžæ•¸å€¼ï¼‰æ˜¯ä¸å…許的。</translation>
</message>
<message>
+ <location line="-20"/>
<source>Dividing a value of type %1 by %2 or %3 (plus or minus zero) is not allowed.</source>
<translation>將型態 %1 除以 %2 或 %3(正或負零)是ä¸å…許的。</translation>
</message>
<message>
+ <location line="+32"/>
<source>Multiplication of a value of type %1 by %2 or %3 (plus or minus infinity) is not allowed.</source>
<translation>將型態 %1 乘以 %2 或 %3(正或負無é™å¤§ï¼‰æ˜¯ä¸å…許的。</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qatomicvalue.cpp" line="49"/>
+ <location filename="../src/xmlpatterns/data/qatomicvalue.cpp" line="+79"/>
<source>A value of type %1 cannot have an Effective Boolean Value.</source>
<translation>åž‹æ…‹ %1 ä¸èƒ½æœ‰å¯¦éš›å¸ƒæž—值。</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qboolean.cpp" line="48"/>
+ <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>實際布林值(Effective Boolean)無法用在兩個或兩個以上的原數值(atomic value)的計算。</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qderivedinteger_p.h" line="372"/>
+ <location filename="../src/xmlpatterns/data/qderivedinteger_p.h" line="+402"/>
<source>Value %1 of type %2 exceeds maximum (%3).</source>
<translation>åž‹æ…‹ %2 的數值 %1 已超éŽæœ€å¤§å€¼ï¼ˆ%3)。</translation>
</message>
<message>
+ <location line="+9"/>
<source>Value %1 of type %2 is below minimum (%3).</source>
<translation>åž‹æ…‹ %2 的數值 %1 已低éŽæœ€å°å€¼ï¼ˆ%3)。</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/data/qhexbinary.cpp" line="61"/>
+ <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>åž‹æ…‹ %1 的值必須包å«å¶æ•¸å€‹æ•¸å­—。數值 %2 未符åˆæ­¤æ¢ä»¶ã€‚</translation>
</message>
<message>
+ <location line="+19"/>
<source>%1 is not valid as a value of type %2.</source>
<translation>%1 ä¸æ˜¯åˆæ³•çš„ %2 型態的值。</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qarithmeticexpression.cpp" line="177"/>
+ <location filename="../src/xmlpatterns/expr/qarithmeticexpression.cpp" line="+207"/>
<source>Operator %1 cannot be used on type %2.</source>
<translation>æ“作元 %1 ä¸èƒ½ç”¨æ–¼åž‹æ…‹ %2。</translation>
</message>
<message>
+ <location line="+17"/>
<source>Operator %1 cannot be used on atomic values of type %2 and %3.</source>
<translation>æ“作元 %1 ä¸èƒ½ç”¨æ–¼åž‹æ…‹ %2 與 %3 的原數值。</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qattributenamevalidator.cpp" line="36"/>
+ <location filename="../src/xmlpatterns/expr/qattributenamevalidator.cpp" line="+66"/>
<source>The namespace URI in the name for a computed attribute cannot be %1.</source>
<translation>在已計算屬性的å稱的命å空間網å€ä¸èƒ½æ˜¯ %1。</translation>
</message>
<message>
+ <location line="+9"/>
<source>The name for a computed attribute cannot have the namespace URI %1 with the local name %2.</source>
<translation>在已計算屬性的å稱ä¸èƒ½åŒæ™‚有命åç©ºé–“ç¶²å€ %1 與本地端å稱 %2。</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qcastas.cpp" line="58"/>
+ <location filename="../src/xmlpatterns/expr/qcastas.cpp" line="+88"/>
<source>Type error in cast, expected %1, received %2.</source>
<translation>轉æ›åž‹æ…‹éŒ¯èª¤ï¼Œæ‡‰ç‚º %1 但接收到 %2。</translation>
</message>
<message>
+ <location 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>轉æ›ç‚ºåž‹æ…‹ %1 或其è¡ç”Ÿåž‹æ…‹æ™‚,來æºæ•¸å€¼å¿…須是相åŒåž‹æ…‹ï¼Œæˆ–者是字串。型態 %2 是ä¸è¢«å…許的。</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qcastingplatform.cpp" line="104"/>
+ <location filename="../src/xmlpatterns/expr/qcastingplatform.cpp" line="+134"/>
<source>No casting is possible with %1 as the target type.</source>
<translation>ä¸èƒ½è½‰æ›åˆ° %1 型態。</translation>
</message>
<message>
+ <location line="+15"/>
<source>It is not possible to cast from %1 to %2.</source>
<translation>ä¸èƒ½å¾ž %1 轉æ›åˆ° %2。</translation>
</message>
<message>
+ <location line="+27"/>
<source>Casting to %1 is not possible because it is an abstract type, and can therefore never be instantiated.</source>
<translation>無法轉æ›åˆ° %1 因為它是一個抽象型態,ä¸èƒ½è¢«å¯¦é«”化。</translation>
</message>
<message>
+ <location line="+23"/>
<source>It&apos;s not possible to cast the value %1 of type %2 to %3</source>
<translation>無法轉æ›åž‹æ…‹ %2 的數值 %1 到 %3</translation>
</message>
<message>
+ <location line="+8"/>
<source>Failure when casting from %1 to %2: %3</source>
<translation>從 %1 轉æ›åˆ° %2 時失敗:%3</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qcommentconstructor.cpp" line="37"/>
+ <location filename="../src/xmlpatterns/expr/qcommentconstructor.cpp" line="+67"/>
<source>A comment cannot contain %1</source>
<translation>註解ä¸èƒ½åŒ…å« %1</translation>
</message>
<message>
+ <location line="+6"/>
<source>A comment cannot end with a %1.</source>
<translation>註解ä¸èƒ½ä»¥ %1 åšçµå°¾</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qcomparisonplatform.cpp" line="137"/>
+ <location filename="../src/xmlpatterns/expr/qcomparisonplatform.cpp" line="+167"/>
<source>No comparisons can be done involving the type %1.</source>
<translation>包å«åž‹æ…‹ %1 時ä¸èƒ½åšæ¯”較。</translation>
</message>
<message>
+ <location line="+14"/>
<source>Operator %1 is not available between atomic values of type %2 and %3.</source>
<translation>æ“作元 %1 ä¸èƒ½ç”¨æ–¼åž‹æ…‹ %2 與 %3 的原數值。</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qdocumentcontentvalidator.cpp" line="56"/>
+ <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>屬性點ä¸èƒ½åšç‚ºæ–‡ä»¶é»žçš„å­ç¯€é»žã€‚因此,屬性 %1 çš„ä½ç½®ä¸åˆé©ã€‚</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qexpressionfactory.cpp" line="139"/>
+ <location filename="../src/xmlpatterns/expr/qexpressionfactory.cpp" line="+169"/>
<source>A library module cannot be evaluated directly. It must be imported from a main module.</source>
<translation>ä¸èƒ½ç›´æŽ¥è¨ˆç®—函å¼æ¨¡çµ„。必須è¦å¾žä¸»æ¨¡çµ„匯入。</translation>
</message>
<message>
+ <location line="+40"/>
<source>No template by name %1 exists.</source>
<translation>沒有å為 %1 的樣本存在。</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qgenericpredicate.cpp" line="76"/>
+ <location filename="../src/xmlpatterns/expr/qgenericpredicate.cpp" line="+106"/>
<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>åž‹æ…‹ %1 的值ä¸èƒ½æ˜¯è¬‚詞(predicate)。謂詞必須是數值型態,或是實際布林值。</translation>
</message>
<message>
+ <location line="+32"/>
<source>A positional predicate must evaluate to a single numeric value.</source>
<translation>ä½ç½®è¬‚詞必須能計算出單一的數值。</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qncnameconstructor_p.h" line="83"/>
+ <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>處ç†æŒ‡ä»¤çš„目標å稱ä¸èƒ½æ˜¯ä»»ä½•å¤§å°å¯«çµ„åˆçš„ %1。因此,%2 是ä¸åˆæ³•çš„值。</translation>
</message>
<message>
+ <location 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 ä¸æ˜¯ä¸€å€‹åˆæ³•çš„處ç†æŒ‡ä»¤çš„目標å稱。必須是 %2 的值,例如 %3。</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qpath.cpp" line="79"/>
+ <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>路徑的最後一步必須是節點或原值,而ä¸èƒ½åœ¨å…©è€…之間。</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qprocessinginstructionconstructor.cpp" line="54"/>
+ <location filename="../src/xmlpatterns/expr/qprocessinginstructionconstructor.cpp" line="+84"/>
<source>The data of a processing instruction cannot contain the string %1</source>
<translation>處ç†æŒ‡ä»¤çš„資料ä¸èƒ½åŒ…å«å­—串 %1</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qqnameconstructor.cpp" line="52"/>
+ <location filename="../src/xmlpatterns/expr/qqnameconstructor.cpp" line="+82"/>
<source>No namespace binding exists for the prefix %1</source>
<translation>å‰ç½®å­—串 %1 沒有çµåˆå‘½å空間</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qqnameconstructor_p.h" line="126"/>
+ <location filename="../src/xmlpatterns/expr/qqnameconstructor_p.h" line="+156"/>
<source>No namespace binding exists for the prefix %1 in %2</source>
<translation>在 %2 çš„å‰ç½®å­—串 %1 沒有çµåˆå‘½å空間</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qqnamefns.cpp" line="39"/>
+ <location line="+12"/>
+ <location filename="../src/xmlpatterns/functions/qqnamefns.cpp" line="+69"/>
<source>%1 is an invalid %2</source>
<translation>%1 是ä¸åˆæ³•çš„ %2</translation>
</message>
<message numerus="yes">
- <location filename="../src/xmlpatterns/functions/qabstractfunctionfactory.cpp" line="47"/>
+ <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 最多åªèƒ½æœ‰ %n 個åƒæ•¸ï¼Œå› æ­¤ %2 是ä¸åˆæ³•çš„。</numerusform>
</translation>
</message>
<message numerus="yes">
+ <location line="+11"/>
<source>%1 requires at least %n argument(s). %2 is therefore invalid.</source>
<translation>
<numerusform>%1 è‡³å°‘éœ€è¦ %n 個åƒæ•¸ï¼Œå› æ­¤ %2 是ä¸åˆæ³•çš„。</numerusform>
</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qaggregatefns.cpp" line="90"/>
+ <location filename="../src/xmlpatterns/functions/qaggregatefns.cpp" line="+120"/>
<source>The first argument to %1 cannot be of type %2. It must be a numeric type, xs:yearMonthDuration or xs:dayTimeDuration.</source>
<translation>å‘¼å« %1 的第一個åƒæ•¸ä¸èƒ½æ˜¯ %2 型態。必須是數值型態,xs.yearMonthDuration 或 xs.dayTimeDuration。</translation>
</message>
<message>
+ <location line="+74"/>
<source>The first argument to %1 cannot be of type %2. It must be of type %3, %4, or %5.</source>
<translation>å‘¼å« %1 的第一個åƒæ•¸ä¸èƒ½æ˜¯ %2 型態。必須是 %3ã€%4 或 %5 型態。</translation>
</message>
<message>
+ <location line="+91"/>
<source>The second argument to %1 cannot be of type %2. It must be of type %3, %4, or %5.</source>
<translation>å‘¼å« %1 的第二個åƒæ•¸ä¸èƒ½æ˜¯ %2 型態。必須是 %3ã€%4 或 %5 型態。</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qassemblestringfns.cpp" line="58"/>
+ <location filename="../src/xmlpatterns/functions/qassemblestringfns.cpp" line="+88"/>
<source>%1 is not a valid XML 1.0 character.</source>
<translation>%1 ä¸æ˜¯åˆæ³•çš„ XML 1.0 字元。</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qcomparingaggregator.cpp" line="167"/>
+ <location filename="../src/xmlpatterns/functions/qcomparingaggregator.cpp" line="+197"/>
<source>The first argument to %1 cannot be of type %2.</source>
<translation>å‘¼å« %1 的第一個åƒæ•¸ä¸èƒ½æ˜¯ %2 型態。</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qdatetimefn.cpp" line="56"/>
+ <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>如果兩個值都有å€åŸŸä½ç§»ï¼Œå‰‡å¿…須是相åŒçš„å€åŸŸä½ç§»ã€‚%1 與 %2 並ä¸ç›¸åŒã€‚</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qerrorfn.cpp" line="31"/>
+ <location filename="../src/xmlpatterns/functions/qerrorfn.cpp" line="+61"/>
<source>%1 was called.</source>
<translation>%1 已被呼å«ã€‚</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qpatternmatchingfns.cpp" line="64"/>
+ <location filename="../src/xmlpatterns/functions/qpatternmatchingfns.cpp" line="+94"/>
<source>%1 must be followed by %2 or %3, not at the end of the replacement string.</source>
<translation>%1 後é¢å¿…須跟著 %2 或 %3,而éžå–代字串的çµå°¾ã€‚</translation>
</message>
<message>
+ <location line="+39"/>
<source>In the replacement string, %1 must be followed by at least one digit when not escaped.</source>
<translation>在å–代字串中,在未脫逸的情形下 %1 必須至少跟著一ä½æ•¸å­—。</translation>
</message>
<message>
+ <location line="+26"/>
<source>In the replacement string, %1 can only be used to escape itself or %2, not %3</source>
<translation>在å–代字串中,%1 åªèƒ½ç”¨æ–¼è‡ªèº«æˆ– %2 çš„è„«é€¸ï¼Œè€Œéž %3。</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qpatternplatform.cpp" line="62"/>
+ <location filename="../src/xmlpatterns/functions/qpatternplatform.cpp" line="+92"/>
<source>%1 matches newline characters</source>
<translation>%1 符åˆäº†æ›è¡Œå­—å…ƒ</translation>
</message>
<message>
+ <location line="+4"/>
<source>%1 and %2 match the start and end of a line.</source>
<translation>%1 與 %2 符åˆäº†ä¸€è¡Œçš„開始與çµå°¾ã€‚</translation>
</message>
<message>
+ <location line="+6"/>
<source>Matches are case insensitive</source>
<translation>比å°ç‚ºå€åˆ†å¤§å°å¯«</translation>
</message>
<message>
+ <location line="+4"/>
<source>Whitespace characters are removed, except when they appear in character classes</source>
<translation>空白字元已移除,除éžå®ƒå€‘出ç¾åœ¨å­—元類別</translation>
</message>
<message>
+ <location line="+99"/>
<source>%1 is an invalid regular expression pattern: %2</source>
<translation>%1 是ä¸åˆæ³•çš„æ­£è¦è¡¨ç¤ºå¼æ¨£å¼ï¼š%2</translation>
</message>
<message>
+ <location line="+30"/>
<source>%1 is an invalid flag for regular expressions. Valid flags are:</source>
<translation>%1 是正è¦è¡¨ç¤ºå¼ä¸­ä¸åˆæ³•çš„旗標。åˆæ³•çš„旗標有:</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qqnamefns.cpp" line="17"/>
+ <location filename="../src/xmlpatterns/functions/qqnamefns.cpp" line="+17"/>
<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>如果第一個åƒæ•¸æ˜¯ç©ºåºåˆ—,或是長度為 0 的字串(沒有命å空間),則無法指定å‰ç½®å­—串。但是您指定了 %1。</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qsequencefns.cpp" line="317"/>
+ <location filename="../src/xmlpatterns/functions/qsequencefns.cpp" line="+347"/>
<source>It will not be possible to retrieve %1.</source>
<translation>無法å–å¾— %1。</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qcontextnodechecker.cpp" line="24"/>
+ <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>å‡½å¼ %1 的第二個åƒæ•¸çš„根節點必須是文件節點。%2 ä¸æ˜¯æ–‡ä»¶ç¯€é»žã€‚</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qsequencegeneratingfns.cpp" line="249"/>
+ <location filename="../src/xmlpatterns/functions/qsequencegeneratingfns.cpp" line="+279"/>
<source>The default collection is undefined</source>
<translation>é è¨­çš„收è—未定義</translation>
</message>
<message>
+ <location line="+13"/>
<source>%1 cannot be retrieved</source>
<translation>%1 無法å–å¾—</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qstringvaluefns.cpp" line="222"/>
+ <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>未支æ´å¸¸æ…‹åŒ–表單 %1。支æ´çš„表單有 %2ã€%3ã€%4ã€%5,以åŠç„¡ï¼ˆä¹Ÿå°±æ˜¯ç©ºå­—串,未常態化)。</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qtimezonefns.cpp" line="57"/>
+ <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>å€åŸŸä½ç§»å¿…須是在 %1 到 %2 範åœä¹‹å…§ã€‚%3 已超出範åœã€‚</translation>
</message>
<message>
+ <location line="+12"/>
<source>%1 is not a whole number of minutes.</source>
<translation>%1 ä¸æ˜¯åˆ†é˜çš„數值。</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/janitors/qcardinalityverifier.cpp" line="28"/>
+ <location filename="../src/xmlpatterns/janitors/qcardinalityverifier.cpp" line="+58"/>
<source>Required cardinality is %1; got cardinality %2.</source>
<translation>需è¦çš„基數為 %1;得到的是 %2。</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/janitors/qitemverifier.cpp" line="37"/>
+ <location filename="../src/xmlpatterns/janitors/qitemverifier.cpp" line="+67"/>
<source>The item %1 did not match the required type %2.</source>
<translation>é …ç›® %1 未符åˆéœ€è¦çš„åž‹æ…‹ %2。</translation>
</message>
<message>
+ <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="+379"/>
+ <location line="+7253"/>
<source>%1 is an unknown schema type.</source>
<translation>%1 是未知的機制型態。</translation>
</message>
<message>
+ <location line="-6971"/>
<source>Only one %1 declaration can occur in the query prolog.</source>
<translation>åªæœ‰ä¸€å€‹ %1 宣告å¯ä»¥åœ¨æŸ¥è©¢ä¸­ã€‚</translation>
</message>
<message>
+ <location line="+188"/>
<source>The initialization of variable %1 depends on itself</source>
<translation>變數 %1 çš„åˆå§‹åŒ–與自身相ä¾ã€‚</translation>
</message>
<message>
+ <location line="+63"/>
<source>No variable by name %1 exists</source>
<translation>沒有å為 %1 的變數存在</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/parser/qparsercontext.cpp" line="63"/>
+ <location filename="../src/xmlpatterns/parser/qparsercontext.cpp" line="+93"/>
<source>The variable %1 is unused</source>
<translation>變數 %1 未使用</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="2841"/>
+ <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="+2841"/>
<source>Version %1 is not supported. The supported XQuery version is 1.0.</source>
<translation>版本 %1 未支æ´ã€‚支æ´çš„ XQuery 版本為 1.0。</translation>
</message>
<message>
+ <location line="+16"/>
<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>編碼 %1 ä¸åˆæ³•ã€‚å¿…é ˆåªèƒ½åŒ…å«æ‹‰ä¸å­—元,ä¸å«ç©ºç™½ï¼Œä¸¦ä¸”è¦ç¬¦åˆæ­£è¦è¡¨ç¤ºå¼ %2。</translation>
</message>
<message>
+ <location line="+55"/>
<source>No function with signature %1 is available</source>
<translation>沒有簽章為 %1 的函å¼å¯ä½¿ç”¨</translation>
</message>
<message>
+ <location line="+72"/>
+ <location line="+10"/>
<source>A default namespace declaration must occur before function, variable, and option declarations.</source>
<translation>é è¨­çš„命å空間宣告必須在函å¼ã€è®Šæ•¸èˆ‡é¸é …宣告之å‰ã€‚</translation>
</message>
<message>
+ <location line="+10"/>
<source>Namespace declarations must occur before function, variable, and option declarations.</source>
<translation>命å空間宣告必須在函å¼ã€è®Šæ•¸èˆ‡é¸é …宣告之å‰ã€‚</translation>
</message>
<message>
+ <location line="+11"/>
<source>Module imports must occur before function, variable, and option declarations.</source>
<translation>模組匯入必須在函å¼ã€è®Šæ•¸èˆ‡é¸é …宣告之å‰ã€‚</translation>
</message>
<message>
+ <location line="+200"/>
<source>It is not possible to redeclare prefix %1.</source>
<translation>無法é‡å®£å‘Šå‰ç½®å­—串 %1。</translation>
</message>
@@ -6135,22 +7466,27 @@ Please choose a different file name.</source>
<translation type="obsolete">åªæœ‰å‰ç½®å­—串 %1 å¯ä»¥è¢«å®£å‘Šèˆ‡å‘½å空間 %2 çµåˆã€‚它é è¨­å·²ç¶“與å‰ç½®å­—串 %1 çµåˆã€‚</translation>
</message>
<message>
+ <location line="+18"/>
<source>Prefix %1 is already declared in the prolog.</source>
<translation>å‰ç½®å­—串 %1 已在 prolog 中宣告。</translation>
</message>
<message>
+ <location line="+95"/>
<source>The name of an option must have a prefix. There is no default namespace for options.</source>
<translation>é¸é …å稱必須有å‰ç½®å­—串。沒有é¸é …çš„é è¨­å‘½å空間。</translation>
</message>
<message>
+ <location line="+171"/>
<source>The Schema Import feature is not supported, and therefore %1 declarations cannot occur.</source>
<translation>機制匯入功能未支æ´ï¼Œå› æ­¤æœ‰ %1 個宣告無法é”æˆã€‚</translation>
</message>
<message>
+ <location line="+13"/>
<source>The target namespace of a %1 cannot be empty.</source>
<translation>%1 的目標命å空間ä¸èƒ½æ˜¯ç©ºçš„。</translation>
</message>
<message>
+ <location line="+8"/>
<source>The module import feature is not supported</source>
<translation>模組匯入功能未支æ´ã€‚</translation>
</message>
@@ -6159,6 +7495,7 @@ Please choose a different file name.</source>
<translation type="obsolete">å稱為 %1 的變數已經在 prolog 中宣告。</translation>
</message>
<message>
+ <location line="+52"/>
<source>No value is available for the external variable by name %1.</source>
<translation>å為 %1 的外部變數沒有å¯ç”¨çš„值。</translation>
</message>
@@ -6167,162 +7504,202 @@ Please choose a different file name.</source>
<translation type="obsolete">使用者定義的函å¼çš„命å空間ä¸èƒ½æ˜¯ç©ºçš„(請試試使用é å®šç¾©å‰ç½®å­—串 %1)</translation>
</message>
<message>
+ <location line="-4154"/>
<source>A construct was encountered which only is allowed in XQuery.</source>
<translation>é‡åˆ°äº†å»ºæ§‹ï¼Œå¯¦éš›ä¸Šåªèƒ½å…許在 XQuery 內。</translation>
</message>
<message>
+ <location line="+118"/>
<source>A template by name %1 has already been declared.</source>
<translation>å為 %1 的屬性已被宣告。</translation>
</message>
<message>
+ <location line="+3581"/>
<source>The keyword %1 cannot occur with any other mode name.</source>
<translation>é—œéµå­— %1 ä¸èƒ½èˆ‡ä»»ä½•å…¶å®ƒæ¨¡å¼å稱一起存在。</translation>
</message>
<message>
+ <location line="+29"/>
<source>The value of attribute %1 must of type %2, which %3 isn&apos;t.</source>
<translation>屬性 %1 的值必須為型態 %2,但 %3 ä¸æ˜¯ã€‚</translation>
</message>
<message>
+ <location line="+75"/>
<source>The prefix %1 can not be bound. By default, it is already bound to the namespace %2.</source>
<translation>å‰ç½®å­—串 %1 ä¸èƒ½è¢«çµåˆã€‚é è¨­å®ƒå·²èˆ‡å‘½å空間 %2 çµåˆã€‚</translation>
</message>
<message>
+ <location line="+312"/>
<source>A variable by name %1 has already been declared.</source>
<translation>å為 %1 的變數已被宣告。</translation>
</message>
<message>
+ <location line="+135"/>
<source>A stylesheet function must have a prefixed name.</source>
<translation>樣å¼è¡¨å‡½å¼å¿…須有å‰ç½®å稱。</translation>
</message>
<message>
+ <location line="+9"/>
<source>The namespace for a user defined function cannot be empty (try the predefined prefix %1 which exists for cases like this)</source>
<translation>使用者定義函å¼çš„命å空間ä¸èƒ½ç‚ºç©ºç™½ï¼ˆè«‹è©¦è‘—用é å…ˆå®šç¾©çš„å‰ç½®å­—串 %1)</translation>
</message>
<message>
+ <location line="+9"/>
<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>命å空間 %1 已被ä¿ç•™ï¼Œå› æ­¤ä½¿ç”¨è€…定義函å¼ä¸èƒ½ä½¿ç”¨å®ƒã€‚請試試é å®šç¾©å‰ç½®å­—串 %2。</translation>
</message>
<message>
+ <location line="+12"/>
<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>在函å¼æ¨¡çµ„中的使用者定義函å¼çš„命å空間必須與模組的命å空間相åŒã€‚也就是,應該為 %1 而ä¸æ˜¯ %2。</translation>
</message>
<message>
+ <location line="+34"/>
<source>A function already exists with the signature %1.</source>
<translation>已經有簽章為 %1 的函å¼å­˜åœ¨ã€‚</translation>
</message>
<message>
+ <location line="+23"/>
<source>No external functions are supported. All supported functions can be used directly, without first declaring them as external</source>
<translation>未支æ´å¤–部函å¼ã€‚所有支æ´çš„å«å¼å¯ä»¥ç›´æŽ¥ä½¿ç”¨è€Œä¸éœ€è¦å…ˆå®£å‘Šç‚ºå¤–部函å¼ã€‚</translation>
</message>
<message>
+ <location line="+37"/>
<source>An argument by name %1 has already been declared. Every argument name must be unique.</source>
<translation>å稱為 %1 çš„åƒæ•¸å·²è¢«å®£å‘Šã€‚æ¯å€‹åƒæ•¸å稱必須唯一。</translation>
</message>
<message>
+ <location line="+179"/>
<source>When function %1 is used for matching inside a pattern, the argument must be a variable reference or a string literal.</source>
<translation>ç•¶å‡½å¼ %1 用於樣å¼æ¯”å°æ™‚,åƒæ•¸å¿…須是變數åƒè€ƒæˆ–字串。</translation>
</message>
<message>
+ <location line="+11"/>
<source>In an XSL-T pattern, the first argument to function %1 must be a string literal, when used for matching.</source>
<translation>在 XSL-T 樣å¼å…§ï¼Œå‡½å¼ %1 的第一個åƒæ•¸å¿…須是字串,以便用於比å°ã€‚</translation>
</message>
<message>
+ <location line="+14"/>
<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>在 XSL-T 樣å¼å…§ï¼Œå‡½å¼ %1 的第一個åƒæ•¸å¿…須是文字或變數åƒè€ƒï¼Œä»¥ä¾¿ç”¨æ–¼æ¯”å°ã€‚</translation>
</message>
<message>
+ <location line="+9"/>
<source>In an XSL-T pattern, function %1 cannot have a third argument.</source>
<translation>在 XSL-T 樣å¼å…§ï¼Œå‡½å¼ %1 çš„ä¸èƒ½æœ‰ç¬¬ä¸‰å€‹åƒæ•¸ã€‚</translation>
</message>
<message>
+ <location line="+10"/>
<source>In an XSL-T pattern, only function %1 and %2, not %3, can be used for matching.</source>
<translation>在 XSL-T 樣å¼å…§ï¼Œåªæœ‰å‡½å¼ %1,%2 å¯ä»¥ç”¨æ–¼æ¯”å°ã€‚%3 ä¸è¡Œã€‚</translation>
</message>
<message>
+ <location line="+63"/>
<source>In an XSL-T pattern, axis %1 cannot be used, only axis %2 or %3 can.</source>
<translation>在 XSL-T 樣å¼å…§ï¼Œä¸èƒ½ç”¨ %1 軸,åªèƒ½ç”¨ %2 或 %3。</translation>
</message>
<message>
+ <location line="+126"/>
<source>%1 is an invalid template mode name.</source>
<translation>%1 ä¸æ˜¯åˆæ³•çš„樣本模å¼å稱。</translation>
</message>
<message>
+ <location line="+44"/>
<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>與 for 敘述çµåˆçš„變數å稱必須與ä½ç½®è®Šæ•¸ä¸åŒã€‚因此,有兩個å為 %1 的變數è¡çªäº†ã€‚</translation>
</message>
<message>
+ <location line="+758"/>
<source>The Schema Validation Feature is not supported. Hence, %1-expressions may not be used.</source>
<translation>未支æ´æ©Ÿåˆ¶ç¢ºèªåŠŸèƒ½ã€‚%1 敘述無法使用。</translation>
</message>
<message>
+ <location line="+39"/>
<source>None of the pragma expressions are supported. Therefore, a fallback expression must be present</source>
<translation>æœªæ”¯æ´ pragma 敘述。因次,必須有é è¨­çš„敘述。</translation>
</message>
<message>
+ <location line="+267"/>
<source>Each name of a template parameter must be unique; %1 is duplicated.</source>
<translation>æ¯å€‹æ¨£æœ¬åƒæ•¸çš„å稱必須唯一;%1 已經被使用。</translation>
</message>
<message>
+ <location line="+129"/>
<source>The %1-axis is unsupported in XQuery</source>
<translation>XQuery ä¸­æœªæ”¯æ´ %1 軸</translation>
</message>
<message>
+ <location line="+1150"/>
<source>%1 is not a valid name for a processing-instruction.</source>
<translation>%1 ä¸æ˜¯è™•ç†æŒ‡ä»¤çš„åˆæ³•å稱。</translation>
</message>
<message>
+ <location line="-7029"/>
<source>%1 is not a valid numeric literal.</source>
<translation>%1 ä¸æ˜¯åˆæ³•çš„數值。</translation>
</message>
<message>
+ <location line="+6165"/>
<source>No function by name %1 is available.</source>
<translation>沒有å為 %1 的函å¼ã€‚</translation>
</message>
<message>
+ <location line="+102"/>
<source>The namespace URI cannot be the empty string when binding to a prefix, %1.</source>
<translation>è¦èˆ‡å‰ç½®å­—串 %1 çµåˆçš„命å空間網å€ä¸èƒ½æ˜¯ç©ºå­—串。</translation>
</message>
<message>
+ <location line="+7"/>
<source>%1 is an invalid namespace URI.</source>
<translation>%1 是ä¸åˆæ³•çš„命å空間網å€ã€‚</translation>
</message>
<message>
+ <location line="+6"/>
<source>It is not possible to bind to the prefix %1</source>
<translation>無法與å‰ç½®å­—串 %1 çµåˆã€‚</translation>
</message>
<message>
+ <location line="+7"/>
<source>Namespace %1 can only be bound to %2 (and it is, in either case, pre-declared).</source>
<translation>命å空間 %1 åªèƒ½èˆ‡ %2 çµåˆï¼ˆä¹Ÿå°±æ˜¯èªªï¼Œè¦é å…ˆå®šç¾©ï¼‰ã€‚</translation>
</message>
<message>
+ <location line="+8"/>
<source>Prefix %1 can only be bound to %2 (and it is, in either case, pre-declared).</source>
<translation>å‰ç½®å­—串 %1 åªèƒ½èˆ‡ %2 çµåˆï¼ˆä¹Ÿå°±æ˜¯èªªï¼Œè¦é å…ˆå®šç¾©ï¼‰ã€‚</translation>
</message>
<message>
+ <location line="+15"/>
<source>Two namespace declaration attributes have the same name: %1.</source>
<translation>有兩個命å空間宣告的屬性有相åŒçš„å稱:%1</translation>
</message>
<message>
+ <location line="+89"/>
<source>The namespace URI must be a constant and cannot use enclosed expressions.</source>
<translation>命å空間網å€å¿…須是常數,並且ä¸èƒ½ä½¿ç”¨å°é–‰æ•˜è¿°ã€‚</translation>
</message>
<message>
+ <location line="+16"/>
<source>An attribute by name %1 has already appeared on this element.</source>
<translation>å為 %1 的屬性已出ç¾åœ¨æ­¤å…ƒç´ ã€‚</translation>
</message>
<message>
+ <location line="+61"/>
<source>A direct element constructor is not well-formed. %1 is ended with %2.</source>
<translation>直接元素建構器沒有完整產生。%1 以 %2 çµæŸã€‚</translation>
</message>
<message>
+ <location line="+458"/>
<source>The name %1 does not refer to any schema type.</source>
<translation>å稱 %1 未指å‘任何機制型態。</translation>
</message>
<message>
+ <location line="+10"/>
<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 是複數型態,無法轉æ›æˆè¤‡æ•¸åž‹æ…‹ã€‚然而,轉æ›ç‚ºåŽŸåž‹æ…‹ï¼Œå¦‚ %2 是å¯è¡Œçš„。</translation>
</message>
<message>
+ <location line="+9"/>
<source>%1 is not an atomic type. Casting is only possible to atomic types.</source>
<translation>%1 ä¸æ˜¯ä¸€å€‹åŽŸåž‹æ…‹ã€‚åªèƒ½è½‰æ›ç‚ºåŽŸåž‹æ…‹ã€‚</translation>
</message>
@@ -6331,260 +7708,313 @@ Please choose a different file name.</source>
<translation type="obsolete">%1 ä¸æ˜¯ä¸€å€‹åˆæ³•çš„處ç†æŒ‡ä»¤çš„å稱。因此å稱測試永é ä¸æœƒæˆåŠŸã€‚</translation>
</message>
<message>
+ <location line="+145"/>
+ <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 ä¸æ˜¯ç¯„åœå…§å±¬æ€§å®£å‘Šã€‚注æ„機制匯入功能未支æ´ã€‚</translation>
</message>
<message>
+ <location line="+48"/>
<source>The name of an extension expression must be in a namespace.</source>
<translation>延伸敘述的å稱必須在命å空間內。</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/type/qcardinality.cpp" line="25"/>
+ <location filename="../src/xmlpatterns/type/qcardinality.cpp" line="+55"/>
<source>empty</source>
<translation>空白</translation>
</message>
<message>
+ <location line="+2"/>
<source>zero or one</source>
<translation>0 或 1 個</translation>
</message>
<message>
+ <location line="+2"/>
<source>exactly one</source>
<translation>剛好一個</translation>
</message>
<message>
+ <location line="+2"/>
<source>one or more</source>
<translation>一個以上</translation>
</message>
<message>
+ <location line="+2"/>
<source>zero or more</source>
<translation>0 個以上</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/type/qtypechecker.cpp" line="33"/>
+ <location filename="../src/xmlpatterns/type/qtypechecker.cpp" line="+63"/>
<source>Required type is %1, but %2 was found.</source>
<translation>需è¦çš„型態為 %1,但找到 %2。</translation>
</message>
<message>
+ <location line="+44"/>
<source>Promoting %1 to %2 may cause loss of precision.</source>
<translation>å°‡ %1 抬å‡ç‚º %2 å¯èƒ½æœƒå¤±åŽ»ç²¾ç¢ºåº¦ã€‚</translation>
</message>
<message>
+ <location line="+49"/>
<source>The focus is undefined.</source>
<translation>焦點未定義。</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/utils/qoutputvalidator.cpp" line="56"/>
+ <location filename="../src/xmlpatterns/utils/qoutputvalidator.cpp" line="+86"/>
<source>It&apos;s not possible to add attributes after any other kind of node.</source>
<translation>ä¸èƒ½åœ¨ä»»ä½•å…¶å®ƒç¨®é¡žçš„節點後é¢åŠ å…¥å±¬æ€§ã€‚</translation>
</message>
<message>
+ <location line="+7"/>
<source>An attribute by name %1 has already been created.</source>
<translation>å為 %1 的屬性已被建立。</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/utils/qxpathhelper_p.h" line="90"/>
+ <location filename="../src/xmlpatterns/utils/qxpathhelper_p.h" line="+120"/>
<source>Only the Unicode Codepoint Collation is supported(%1). %2 is unsupported.</source>
<translation>åªæ”¯æ´ Unicode Codepoint Collation(%1)。%2 未支æ´ã€‚;</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/api/qxmlserializer.cpp" line="60"/>
+ <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>屬性元素 %1 無法åºåˆ—化,因為似乎是在頂層。</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/acceltree/qacceltreeresourceloader.cpp" line="284"/>
+ <location filename="../src/xmlpatterns/acceltree/qacceltreeresourceloader.cpp" line="+314"/>
<source>%1 is an unsupported encoding.</source>
<translation>%1 是個未被支æ´çš„編碼。</translation>
</message>
<message>
+ <location line="+16"/>
<source>%1 contains octets which are disallowed in the requested encoding %2.</source>
<translation>%1 包å«äº†åœ¨è¦æ±‚的編碼 %2 å…§ä¸å…許的八進ä½å€¼ã€‚</translation>
</message>
<message>
+ <location line="+18"/>
<source>The codepoint %1, occurring in %2 using encoding %3, is an invalid XML character.</source>
<translation>在 %2 內的代碼點 %1(編碼 %3)是一個ä¸åˆæ³•çš„ XML 字元。</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qapplytemplate.cpp" line="89"/>
+ <location filename="../src/xmlpatterns/expr/qapplytemplate.cpp" line="+119"/>
<source>Ambiguous rule match.</source>
<translation>ä¸æ˜Žç¢ºçš„è¦å‰‡ç¬¦åˆã€‚</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qcomputednamespaceconstructor.cpp" line="39"/>
<source>In a namespace constructor, the value for a namespace value cannot be an empty string.</source>
- <translation>在命å空間建構å­ä¸­ï¼Œå‘½å空間的值ä¸èƒ½æ˜¯ç©ºå­—串。</translation>
+ <translation type="obsolete">在命å空間建構å­ä¸­ï¼Œå‘½å空間的值ä¸èƒ½æ˜¯ç©ºå­—串。</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 type="unfinished"></translation>
</message>
<message>
+ <location line="+11"/>
<source>The prefix must be a valid %1, which %2 is not.</source>
<translation>å‰ç½®å­—串必須是åˆæ³•çš„ %1,但 %2 ä¸æ˜¯ã€‚</translation>
</message>
<message>
+ <location line="+14"/>
<source>The prefix %1 cannot be bound.</source>
<translation>å‰ç½®å­—串 %1 ä¸èƒ½è¢«çµåˆã€‚</translation>
</message>
<message>
+ <location line="+10"/>
<source>Only the prefix %1 can be bound to %2 and vice versa.</source>
<translation>åªæœ‰å‰ç½®å­—串 %1 能與 %2 çµåˆã€‚å之亦然。</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qevaluationcache.cpp" line="87"/>
+ <location filename="../src/xmlpatterns/expr/qevaluationcache.cpp" line="+117"/>
<source>Circularity detected</source>
<translation>åµæ¸¬åˆ°ç’°ç‹€</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qtemplate.cpp" line="115"/>
+ <location filename="../src/xmlpatterns/expr/qtemplate.cpp" line="+145"/>
<source>The parameter %1 is required, but no corresponding %2 is supplied.</source>
<translation>需è¦åƒæ•¸ %1,但是沒有æ供相關的 %2。</translation>
</message>
<message>
+ <location line="-71"/>
<source>The parameter %1 is passed, but no corresponding %2 exists.</source>
<translation>åƒæ•¸ %1 已傳é€ï¼Œä½†æ‰¾ä¸åˆ°ç›¸é—œçš„ %2。</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qunparsedtextfn.cpp" line="35"/>
+ <location filename="../src/xmlpatterns/functions/qunparsedtextfn.cpp" line="+65"/>
<source>The URI cannot have a fragment</source>
<translation>URI ä¸èƒ½æœ‰ç‰‡æ®µã€‚</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/parser/qxslttokenizer.cpp" line="489"/>
+ <location filename="../src/xmlpatterns/parser/qxslttokenizer.cpp" line="+519"/>
<source>Element %1 is not allowed at this location.</source>
<translation>元素 %1 ä¸èƒ½åœ¨æ­¤ä½ç½®ã€‚</translation>
</message>
<message>
+ <location line="+9"/>
<source>Text nodes are not allowed at this location.</source>
<translation>文字節點ä¸èƒ½åœ¨æ­¤ä½ç½®ã€‚</translation>
</message>
<message>
+ <location line="+20"/>
<source>Parse error: %1</source>
<translation>剖æžéŒ¯èª¤ï¼š%1</translation>
</message>
<message>
+ <location line="+62"/>
<source>The value of the XSL-T version attribute must be a value of type %1, which %2 isn&apos;t.</source>
<translation>XLS-T 版本屬性的值必須是型態 %1 的值,而 %2 ä¸æ˜¯ã€‚</translation>
</message>
<message>
+ <location line="+20"/>
<source>Running an XSL-T 1.0 stylesheet with a 2.0 processor.</source>
<translation>使用 2.0 處ç†å™¨åŸ·è¡Œ XSL-T 1.0 樣å¼è¡¨ä¸­ã€‚</translation>
</message>
<message>
+ <location line="+108"/>
<source>Unknown XSL-T attribute %1.</source>
<translation>未知的 XSL-T 屬性 %1。</translation>
</message>
<message>
+ <location line="+23"/>
<source>Attribute %1 and %2 are mutually exclusive.</source>
<translation>屬性 %1 與 %2 彼此互斥。</translation>
</message>
<message>
+ <location line="+166"/>
<source>In a simplified stylesheet module, attribute %1 must be present.</source>
<translation>在簡化的樣å¼è¡¨æ¨¡çµ„中,屬性 %1 必須存在。</translation>
</message>
<message>
+ <location line="+72"/>
<source>If element %1 has no attribute %2, it cannot have attribute %3 or %4.</source>
<translation>若元素 %1 沒有屬性 %2,則也ä¸èƒ½æœ‰å±¬æ€§ %3 或 %4。</translation>
</message>
<message>
+ <location line="+9"/>
<source>Element %1 must have at least one of the attributes %2 or %3.</source>
<translation>元素 %1 必須至少有屬性 %2 或 %3 其中一個。</translation>
</message>
<message>
+ <location line="+28"/>
<source>At least one mode must be specified in the %1-attribute on element %2.</source>
<translation>在元素 %2 çš„ %1 屬性中至少è¦æŒ‡å®šä¸€å€‹æ¨¡å¼ã€‚</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/parser/qmaintainingreader.cpp" line="153"/>
+ <location filename="../src/xmlpatterns/parser/qmaintainingreader.cpp" line="+183"/>
<source>Attribute %1 cannot appear on the element %2. Only the standard attributes can appear.</source>
<translation>屬性 %1 ä¸èƒ½å‡ºç¾åœ¨å…ƒç´  %2。åªèƒ½æœ‰æ¨™æº–屬性。</translation>
</message>
<message>
+ <location line="+6"/>
<source>Attribute %1 cannot appear on the element %2. Only %3 is allowed, and the standard attributes.</source>
<translation>屬性 %1 ä¸èƒ½å‡ºç¾åœ¨å…ƒç´  %2。åªèƒ½æœ‰ %3 以åŠæ¨™æº–屬性。</translation>
</message>
<message>
+ <location line="+8"/>
<source>Attribute %1 cannot appear on the element %2. Allowed is %3, %4, and the standard attributes.</source>
<translation>屬性 %1 ä¸èƒ½å‡ºç¾åœ¨å…ƒç´  %2。åªèƒ½æœ‰ %3,%4 以åŠæ¨™æº–屬性。</translation>
</message>
<message>
+ <location line="+9"/>
<source>Attribute %1 cannot appear on the element %2. Allowed is %3, and the standard attributes.</source>
<translation>屬性 %1 ä¸èƒ½å‡ºç¾åœ¨å…ƒç´  %2。åªèƒ½æœ‰ %3 以åŠæ¨™æº–屬性。</translation>
</message>
<message>
+ <location line="+13"/>
<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>XSL-T 元素內的 XSL-T 屬性必須放在空(null)的命å空間,而ä¸æ˜¯åƒ %1 在 XSL-T 命å空間。</translation>
</message>
<message>
+ <location line="+12"/>
<source>The attribute %1 must appear on element %2.</source>
<translation>屬性 %1 必須在元素 %2 內出ç¾ã€‚</translation>
</message>
<message>
+ <location line="+8"/>
<source>The element with local name %1 does not exist in XSL-T.</source>
<translation>有本地å稱 %1 的元素在 XSL-T å…§ä¸å­˜åœ¨ã€‚</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/parser/qxslttokenizer.cpp" line="123"/>
+ <location filename="../src/xmlpatterns/parser/qxslttokenizer.cpp" line="+123"/>
<source>Element %1 must come last.</source>
<translation>元素 %1 必須最後出ç¾ã€‚</translation>
</message>
<message>
+ <location line="+24"/>
<source>At least one %1-element must occur before %2.</source>
<translation>至少一個元素 %1 è¦å‡ºç¾åœ¨ %2 之å‰ã€‚</translation>
</message>
<message>
+ <location line="+7"/>
<source>Only one %1-element can appear.</source>
<translation>åªèƒ½å‡ºç¾ä¸€å€‹å…ƒç´  %1。</translation>
</message>
<message>
+ <location line="+31"/>
<source>At least one %1-element must occur inside %2.</source>
<translation>至少一個元素 %1 è¦å‡ºç¾åœ¨ %2 之內。</translation>
</message>
<message>
+ <location line="+58"/>
<source>When attribute %1 is present on %2, a sequence constructor cannot be used.</source>
<translation>當屬性 %1 出ç¾åœ¨ %2 內時,ä¸èƒ½ä½¿ç”¨åºåˆ—建構å­ã€‚</translation>
</message>
<message>
+ <location line="+13"/>
<source>Element %1 must have either a %2-attribute or a sequence constructor.</source>
<translation>元素 %1 必須至少有一個屬性 %2 或一個åºåˆ—建構å­ã€‚</translation>
</message>
<message>
+ <location line="+125"/>
<source>When a parameter is required, a default value cannot be supplied through a %1-attribute or a sequence constructor.</source>
<translation>當需è¦åƒæ•¸æ™‚,ä¸èƒ½é€éŽå±¬æ€§ %1 或åºåˆ—建構å­æä¾›é è¨­å€¼ã€‚</translation>
</message>
<message>
+ <location line="+270"/>
<source>Element %1 cannot have children.</source>
<translation>元素 %1 ä¸èƒ½æœ‰å­å…ƒç´ ã€‚</translation>
</message>
<message>
+ <location line="+434"/>
<source>Element %1 cannot have a sequence constructor.</source>
<translation>元素 %1ä¸èƒ½æœ‰åºåˆ—建構å­ã€‚</translation>
</message>
<message>
+ <location line="+86"/>
+ <location line="+9"/>
<source>The attribute %1 cannot appear on %2, when it is a child of %3.</source>
<translation>屬性 %1 ä¸èƒ½å‡ºç¾åœ¨ %2,因為它是 %3 çš„å­å…ƒç´ ã€‚</translation>
</message>
<message>
+ <location line="+15"/>
<source>A parameter in a function cannot be declared to be a tunnel.</source>
<translation>函å¼å…§çš„åƒæ•¸ä¸èƒ½è¢«å®£å‘Šç‚ºé€šé“(tunnel)。</translation>
</message>
<message>
+ <location line="+149"/>
<source>This processor is not Schema-aware and therefore %1 cannot be used.</source>
<translation>此處ç†å™¨ä¸æ˜¯ Schema-aware,因此ä¸èƒ½ä½¿ç”¨ %1。</translation>
</message>
<message>
+ <location line="+57"/>
<source>Top level stylesheet elements must be in a non-null namespace, which %1 isn&apos;t.</source>
<translation>頂層樣å¼è¡¨å…ƒç´ å¿…須是éžç©ºç™½çš„命å空間,而 %1 ä¸æ˜¯ã€‚</translation>
</message>
<message>
+ <location line="+48"/>
<source>The value for attribute %1 on element %2 must either be %3 or %4, not %5.</source>
<translation>元素 %2 內屬性 %1 的值必須是 %3 或 %4,而ä¸æ˜¯ %5。</translation>
</message>
<message>
+ <location line="+20"/>
<source>Attribute %1 cannot have the value %2.</source>
<translation>屬性 %1 的值ä¸èƒ½ç‚º %2。</translation>
</message>
<message>
+ <location line="+58"/>
<source>The attribute %1 can only appear on the first %2 element.</source>
<translation>屬性 %1 åªèƒ½å‡ºç¾åœ¨å‰ %2 個元素內。</translation>
</message>
<message>
+ <location line="+99"/>
<source>At least one %1 element must appear as child of %2.</source>
<translation>%2 必須至少有一個å­å…ƒç´  %1。</translation>
</message>
@@ -6592,11 +8022,13 @@ Please choose a different file name.</source>
<context>
<name>VolumeSlider</name>
<message>
- <location filename="../src/3rdparty/phonon/phonon/volumeslider.cpp" line="67"/>
+ <location filename="../src/3rdparty/phonon/phonon/volumeslider.cpp" line="+67"/>
<source>Muted</source>
<translation>éœéŸ³</translation>
</message>
<message>
+ <location line="+5"/>
+ <location line="+15"/>
<source>Volume: %1%</source>
<translation>音é‡ï¼š%1%</translation>
</message>
diff --git a/translations/qtconfig_pl.ts b/translations/qtconfig_pl.ts
index cff5eb1..cafc022 100644
--- a/translations/qtconfig_pl.ts
+++ b/translations/qtconfig_pl.ts
@@ -1,10 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS><TS version="2.0" language="pl_PL">
-<defaultcodec></defaultcodec>
+<!DOCTYPE TS>
+<TS version="2.0" language="pl_PL">
<context>
<name>MainWindow</name>
<message>
- <location filename="../tools/qtconfig/mainwindow.cpp" line="+344"/>
+ <location filename="../tools/qtconfig/mainwindow.cpp" line="+351"/>
<source>On The Spot</source>
<translation>W oknie dokumentu (On-The-Spot)</translation>
</message>
@@ -76,7 +76,7 @@
<translation>Użyj prostego oprogramowania renderującego</translation>
</message>
<message>
- <location line="+74"/>
+ <location line="+79"/>
<source>Over The Spot</source>
<translation>Nad oknem dokumentu (Over-The-Spot)</translation>
</message>
@@ -91,17 +91,21 @@
<translation>W dodatkowym oknie (Root)</translation>
</message>
<message>
- <location line="+455"/>
+ <location line="+466"/>
<source>Select a Directory</source>
<translation>Wybierz katalog</translation>
</message>
<message>
<location line="+17"/>
+ <source>&lt;h3&gt;%1&lt;/h3&gt;&lt;br/&gt;Version %2&lt;br/&gt;&lt;br/&gt;Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).&lt;br/&gt;&lt;br/&gt;The program is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.&lt;br/&gt; </source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<source>&lt;h3&gt;%1&lt;/h3&gt;&lt;br/&gt;Version %2</source>
- <translation>&lt;h3&gt;%1&lt;/h3&gt;&lt;br/&gt;Wersja %2</translation>
+ <translation type="obsolete">&lt;h3&gt;%1&lt;/h3&gt;&lt;br/&gt;Wersja %2</translation>
</message>
<message>
- <location line="+20"/>
+ <location line="+6"/>
<location line="+1"/>
<location line="+8"/>
<source>Qt Configuration</source>
@@ -133,12 +137,22 @@
<translation>&amp;Anuluj</translation>
</message>
<message>
- <location line="-577"/>
+ <location line="-578"/>
<source>No changes to be saved.</source>
<translation>Brak zmian do zapisania.</translation>
</message>
<message>
- <location line="+4"/>
+ <location line="-259"/>
+ <source>Desktop Settings (Default)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Choose style and palette based on your desktop settings.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+258"/>
<source>Saving changes...</source>
<translation>Zapisywanie zmian...</translation>
</message>
@@ -809,6 +823,14 @@ p, li { white-space: pre-wrap; }
</message>
</context>
<context>
+ <name>PreviewFrame</name>
+ <message>
+ <location filename="../tools/qtconfig/previewframe.cpp" line="+81"/>
+ <source>Desktop settings will only take effect after an application restart.</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
<name>PreviewWidgetBase</name>
<message>
<location filename="../tools/qtconfig/previewwidgetbase.ui"/>
diff --git a/translations/qtconfig_untranslated.ts b/translations/qtconfig_untranslated.ts
index 09f8985..e0f85c3 100644
--- a/translations/qtconfig_untranslated.ts
+++ b/translations/qtconfig_untranslated.ts
@@ -1,9 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS><TS version="2.0">
+<!DOCTYPE TS>
+<TS version="2.0">
<context>
<name>MainWindow</name>
<message>
- <location filename="../tools/qtconfig/mainwindow.cpp" line="+344"/>
+ <location filename="../tools/qtconfig/mainwindow.cpp" line="+202"/>
+ <source>Desktop Settings (Default)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Choose style and palette based on your desktop settings.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+144"/>
<source>On The Spot</source>
<translation type="unfinished"></translation>
</message>
@@ -75,7 +86,7 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+26"/>
+ <location line="+27"/>
<source>No changes to be saved.</source>
<translation type="unfinished"></translation>
</message>
@@ -85,7 +96,7 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+44"/>
+ <location line="+48"/>
<source>Over The Spot</source>
<translation type="unfinished"></translation>
</message>
@@ -100,17 +111,17 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+455"/>
+ <location line="+466"/>
<source>Select a Directory</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+17"/>
- <source>&lt;h3&gt;%1&lt;/h3&gt;&lt;br/&gt;Version %2</source>
+ <source>&lt;h3&gt;%1&lt;/h3&gt;&lt;br/&gt;Version %2&lt;br/&gt;&lt;br/&gt;Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).&lt;br/&gt;&lt;br/&gt;The program is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.&lt;br/&gt; </source>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+20"/>
+ <location line="+6"/>
<location line="+1"/>
<location line="+8"/>
<source>Qt Configuration</source>
@@ -796,6 +807,14 @@ p, li { white-space: pre-wrap; }
</message>
</context>
<context>
+ <name>PreviewFrame</name>
+ <message>
+ <location filename="../tools/qtconfig/previewframe.cpp" line="+81"/>
+ <source>Desktop settings will only take effect after an application restart.</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
<name>PreviewWidgetBase</name>
<message>
<location filename="../tools/qtconfig/previewwidgetbase.ui"/>
diff --git a/translations/qtconfig_zh_CN.ts b/translations/qtconfig_zh_CN.ts
index 90d3e6b..63e198c 100644
--- a/translations/qtconfig_zh_CN.ts
+++ b/translations/qtconfig_zh_CN.ts
@@ -1,16 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.0" language="zh_CN">
-<defaultcodec></defaultcodec>
<context>
<name>MainWindow</name>
<message>
- <location filename="../tools/qtconfig/mainwindow.cpp" line="+344"/>
+ <location filename="../tools/qtconfig/mainwindow.cpp" line="+351"/>
<source>On The Spot</source>
<translation>客户端程åºé¢„编辑模å¼(On The Spot)</translation>
</message>
<message>
- <location line="+157"/>
+ <location line="+162"/>
<source>Over The Spot</source>
<translation>光标跟éšé£Žæ ¼(Over The Spot)</translation>
</message>
@@ -25,17 +24,16 @@
<translation>输入æœåŠ¡å™¨é¢„编辑模å¼(Root)</translation>
</message>
<message>
- <location line="+455"/>
+ <location line="+466"/>
<source>Select a Directory</source>
<translation>选择一个目录</translation>
</message>
<message>
- <location line="+17"/>
<source>&lt;h3&gt;%1&lt;/h3&gt;&lt;br/&gt;Version %2</source>
- <translation>&lt;h3&gt;%1&lt;/h3&gt;&lt;br/&gt;版本 %2</translation>
+ <translation type="obsolete">&lt;h3&gt;%1&lt;/h3&gt;&lt;br/&gt;版本 %2</translation>
</message>
<message>
- <location line="+20"/>
+ <location line="+23"/>
<location line="+1"/>
<location line="+8"/>
<source>Qt Configuration</source>
@@ -67,7 +65,7 @@
<translation>å–消(&amp;C)</translation>
</message>
<message>
- <location line="-577"/>
+ <location line="-578"/>
<source>No changes to be saved.</source>
<translation>没有å˜åŒ–被ä¿å­˜ã€‚</translation>
</message>
@@ -77,7 +75,7 @@
<translation>正在ä¿å­˜å˜åŒ–...</translation>
</message>
<message>
- <location line="-80"/>
+ <location line="-81"/>
<location line="+1"/>
<location line="+38"/>
<location line="+1"/>
@@ -85,7 +83,17 @@
<translation>自动(默认)</translation>
</message>
<message>
- <location line="-38"/>
+ <location line="-222"/>
+ <source>Desktop Settings (Default)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Choose style and palette based on your desktop settings.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+179"/>
<source>Choose audio output automatically.</source>
<translation>自动选择音频输出。</translation>
</message>
@@ -133,7 +141,12 @@
<translation>使用简å•çš„软件渲染。</translation>
</message>
<message>
- <location line="-47"/>
+ <location line="+566"/>
+ <source>&lt;h3&gt;%1&lt;/h3&gt;&lt;br/&gt;Version %2&lt;br/&gt;&lt;br/&gt;Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).&lt;br/&gt;&lt;br/&gt;The program is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.&lt;br/&gt; </source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="-613"/>
<location line="+1"/>
<source>aRts</source>
<translation>aRts</translation>
@@ -810,6 +823,14 @@ p, li { white-space: pre-wrap; }
</message>
</context>
<context>
+ <name>PreviewFrame</name>
+ <message>
+ <location filename="../tools/qtconfig/previewframe.cpp" line="+81"/>
+ <source>Desktop settings will only take effect after an application restart.</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
<name>PreviewWidgetBase</name>
<message>
<location filename="../tools/qtconfig/previewwidgetbase.ui"/>
diff --git a/translations/qtconfig_zh_TW.ts b/translations/qtconfig_zh_TW.ts
index 88f9bb0..d55614d 100644
--- a/translations/qtconfig_zh_TW.ts
+++ b/translations/qtconfig_zh_TW.ts
@@ -1,110 +1,158 @@
<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS><TS version="1.1" language="zh_TW">
-<defaultcodec></defaultcodec>
+<!DOCTYPE TS>
+<TS version="2.0" language="zh_TW">
<context>
<name>MainWindow</name>
<message>
- <location filename="../tools/qtconfig/mainwindow.cpp" line="344"/>
+ <location filename="../tools/qtconfig/mainwindow.cpp" line="+351"/>
<source>On The Spot</source>
<translation>On The Spot(在輸入處輸入)</translation>
</message>
<message>
+ <location line="+110"/>
<source>No changes to be saved.</source>
<translation>沒有è¦å„²å­˜çš„變更。</translation>
</message>
<message>
+ <location line="+4"/>
<source>Saving changes...</source>
<translation>儲存變更...</translation>
</message>
<message>
+ <location line="+48"/>
<source>Over The Spot</source>
<translation>Over The Spot(在輸入處æ供編輯視窗)</translation>
</message>
<message>
+ <location line="+2"/>
<source>Off The Spot</source>
<translation>Off The Spot(在輸入處下方æ供編輯視窗)</translation>
</message>
<message>
+ <location line="+2"/>
<source>Root</source>
<translation>Root(使用根視窗)</translation>
</message>
<message>
+ <location line="+466"/>
<source>Select a Directory</source>
<translation>é¸æ“‡ä¸€å€‹ç›®éŒ„</translation>
</message>
<message>
<source>&lt;h3&gt;%1&lt;/h3&gt;&lt;br/&gt;Version %2</source>
- <translation>&lt;h3&gt;%1&lt;/h3&gt;&lt;br/&gt;版本 %2</translation>
+ <translation type="obsolete">&lt;h3&gt;%1&lt;/h3&gt;&lt;br/&gt;版本 %2</translation>
</message>
<message>
+ <location line="+23"/>
+ <location line="+1"/>
+ <location line="+8"/>
<source>Qt Configuration</source>
<translation>Qt 設定</translation>
</message>
<message>
+ <location line="+22"/>
<source>Save Changes</source>
<translation>儲存變更</translation>
</message>
<message>
+ <location line="+1"/>
<source>Save changes to settings?</source>
<translation>è¦å„²å­˜è¨­å®šçš„變更嗎?</translation>
</message>
<message>
+ <location line="+1"/>
<source>&amp;Yes</source>
<translation>是(&amp;Y)</translation>
</message>
<message>
+ <location line="+0"/>
<source>&amp;No</source>
<translation>å¦(&amp;N)</translation>
</message>
<message>
+ <location line="+0"/>
<source>&amp;Cancel</source>
<translation>å–消(&amp;C)</translation>
</message>
<message>
+ <location line="-655"/>
+ <location line="+1"/>
+ <location line="+38"/>
+ <location line="+1"/>
<source>Auto (default)</source>
<translation>自動(é è¨­ï¼‰</translation>
</message>
<message>
+ <location line="-222"/>
+ <source>Desktop Settings (Default)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Choose style and palette based on your desktop settings.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+179"/>
<source>Choose audio output automatically.</source>
<translation>自動é¸æ“‡éŸ³æ•ˆè¼¸å‡ºã€‚</translation>
</message>
<message>
+ <location line="+34"/>
<source>Phonon GStreamer backend not available.</source>
<translation>沒有 Phonon GStreamer 後端介é¢ã€‚</translation>
</message>
<message>
+ <location line="+4"/>
<source>Choose render method automatically</source>
<translation>自動é¸æ“‡æˆåƒæ–¹æ³•</translation>
</message>
<message>
+ <location line="+2"/>
+ <location line="+1"/>
<source>X11</source>
<translation>X11</translation>
</message>
<message>
+ <location line="+0"/>
<source>Use X11 Overlays</source>
<translation>使用 X11 æˆåƒ</translation>
</message>
<message>
+ <location line="+3"/>
+ <location line="+1"/>
<source>OpenGL</source>
<translation>OpenGL</translation>
</message>
<message>
+ <location line="+0"/>
<source>Use OpenGL if avaiable</source>
<translation>å¯ä»¥çš„話使用 OpenGL</translation>
</message>
<message>
+ <location line="+2"/>
+ <location line="+1"/>
<source>Software</source>
<translation>軟體</translation>
</message>
<message>
+ <location line="+0"/>
<source>Use simple software rendering</source>
<translation>使用簡單的軟體æˆåƒ</translation>
</message>
<message>
+ <location line="+566"/>
+ <source>&lt;h3&gt;%1&lt;/h3&gt;&lt;br/&gt;Version %2&lt;br/&gt;&lt;br/&gt;Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).&lt;br/&gt;&lt;br/&gt;The program is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.&lt;br/&gt; </source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="-613"/>
+ <location line="+1"/>
<source>aRts</source>
<translation>aRts</translation>
</message>
<message>
+ <location line="+1"/>
<source>Experimental aRts support for GStreamer.</source>
<translation>GStreamer 中實驗性的 aRts 支æ´ã€‚</translation>
</message>
@@ -112,318 +160,397 @@
<context>
<name>MainWindowBase</name>
<message>
+ <location filename="../tools/qtconfig/mainwindowbase.ui"/>
<source>Qt Configuration</source>
<translation>Qt 設定</translation>
</message>
<message>
+ <location/>
<source>Appearance</source>
<translation>外觀</translation>
</message>
<message>
+ <location/>
<source>GUI Style</source>
<translation>使用者介é¢é¢¨æ ¼</translation>
</message>
<message>
+ <location/>
<source>Select GUI &amp;Style:</source>
<translation>é¸æ“‡ä½¿ç”¨è€…介é¢é¢¨æ ¼(&amp;S):</translation>
</message>
<message>
+ <location/>
<source>Build Palette</source>
<translation>建構調色盤</translation>
</message>
<message>
+ <location/>
<source>&amp;3-D Effects:</source>
<translation>立體效果(&amp;3):</translation>
</message>
<message>
+ <location/>
<source>Window Back&amp;ground:</source>
<translation>視窗背景(&amp;G):</translation>
</message>
<message>
+ <location/>
<source>&amp;Tune Palette...</source>
<translation>調整調色盤(&amp;T)...</translation>
</message>
<message>
+ <location/>
<source>Preview</source>
<translation>é è¦½</translation>
</message>
<message>
+ <location/>
<source>Select &amp;Palette:</source>
<translation>é¸æ“‡èª¿è‰²ç›¤(&amp;P):</translation>
</message>
<message>
+ <location/>
<source>Active Palette</source>
<translation>啟動調色盤</translation>
</message>
<message>
+ <location/>
<source>Inactive Palette</source>
<translation>åœç”¨èª¿è‰²ç›¤</translation>
</message>
<message>
+ <location/>
<source>Disabled Palette</source>
<translation>關閉調色盤</translation>
</message>
<message>
+ <location/>
<source>Fonts</source>
<translation>å­—åž‹</translation>
</message>
<message>
+ <location/>
<source>Default Font</source>
<translation>é è¨­å­—åž‹</translation>
</message>
<message>
+ <location/>
<source>&amp;Style:</source>
<translation>風格(&amp;S)</translation>
</message>
<message>
+ <location/>
<source>&amp;Point Size:</source>
<translation>點大å°(&amp;P):</translation>
</message>
<message>
+ <location/>
<source>F&amp;amily:</source>
<translation>家æ—(&amp;A):</translation>
</message>
<message>
+ <location/>
<source>Sample Text</source>
<translation>範例文字</translation>
</message>
<message>
+ <location/>
<source>Font Substitution</source>
<translation>字型替æ›</translation>
</message>
<message>
+ <location/>
<source>S&amp;elect or Enter a Family:</source>
<translation>é¸æ“‡æˆ–輸入一個字型家æ—(&amp;E):</translation>
</message>
<message>
+ <location/>
<source>Current Substitutions:</source>
<translation>ç›®å‰çš„替代:</translation>
</message>
<message>
+ <location/>
<source>Up</source>
<translation>上</translation>
</message>
<message>
+ <location/>
<source>Down</source>
<translation>下</translation>
</message>
<message>
+ <location/>
<source>Remove</source>
<translation>移除</translation>
</message>
<message>
+ <location/>
<source>Select s&amp;ubstitute Family:</source>
<translation>é¸æ“‡æ›¿ä»£å®¶æ—(&amp;U):</translation>
</message>
<message>
+ <location/>
<source>Add</source>
<translation>新增</translation>
</message>
<message>
+ <location/>
<source>Interface</source>
<translation>介é¢</translation>
</message>
<message>
+ <location/>
<source>Feel Settings</source>
<translation>感覺設定</translation>
</message>
<message>
+ <location/>
<source> ms</source>
<translation> 毫秒</translation>
</message>
<message>
+ <location/>
<source>&amp;Double Click Interval:</source>
<translation>雙擊間隔(&amp;D):</translation>
</message>
<message>
+ <location/>
<source>No blinking</source>
<translation>ä¸é–ƒçˆ</translation>
</message>
<message>
+ <location/>
<source>&amp;Cursor Flash Time:</source>
<translation>游標閃çˆæ™‚é–“(&amp;C):</translation>
</message>
<message>
+ <location/>
<source> lines</source>
<translation> 行</translation>
</message>
<message>
+ <location/>
<source>Wheel &amp;Scroll Lines:</source>
<translation>滾輪æ²è»¸è¡Œæ•¸(&amp;S):</translation>
</message>
<message>
+ <location/>
<source>Resolve symlinks in URLs</source>
<translation>解譯網å€ä¸­çš„符號連çµ</translation>
</message>
<message>
+ <location/>
<source>GUI Effects</source>
<translation>使用者介é¢æ•ˆæžœ</translation>
</message>
<message>
+ <location/>
<source>&amp;Enable</source>
<translation>é–‹å•Ÿ(&amp;E)</translation>
</message>
<message>
+ <location/>
<source>Alt+E</source>
<translation>Alt+E</translation>
</message>
<message>
+ <location/>
<source>&amp;Menu Effect:</source>
<translation>é¸å–®æ•ˆæžœ(&amp;M)</translation>
</message>
<message>
+ <location/>
<source>C&amp;omboBox Effect:</source>
<translation>下拉å¼é¸å–®æ•ˆæžœ(&amp;O):</translation>
</message>
<message>
+ <location/>
<source>&amp;ToolTip Effect:</source>
<translation>工具æ示效果(&amp;T):</translation>
</message>
<message>
+ <location/>
<source>Tool&amp;Box Effect:</source>
<translation>工具盒效果(&amp;B):</translation>
</message>
<message>
+ <location/>
<source>Disable</source>
<translation>關閉</translation>
</message>
<message>
+ <location/>
<source>Animate</source>
<translation>å‹•ç•«</translation>
</message>
<message>
+ <location/>
<source>Fade</source>
<translation>淡出</translation>
</message>
<message>
+ <location/>
<source>Global Strut</source>
<translation>全域支柱(Strut)</translation>
</message>
<message>
+ <location/>
<source>Minimum &amp;Width:</source>
<translation>最å°å¯¬åº¦(&amp;W):</translation>
</message>
<message>
+ <location/>
<source>Minimum Hei&amp;ght:</source>
<translation>最å°é«˜åº¦(&amp;G):</translation>
</message>
<message>
+ <location/>
<source> pixels</source>
<translation> åƒç´ </translation>
</message>
<message>
+ <location/>
<source>Enhanced support for languages written right-to-left</source>
<translation>å°ç”±å³åˆ°å·¦å¯«çš„語言加強支æ´</translation>
</message>
<message>
+ <location/>
<source>XIM Input Style:</source>
<translation>XIM 輸入風格:</translation>
</message>
<message>
+ <location/>
<source>On The Spot</source>
<translation>On The Spot(在輸入處輸入)</translation>
</message>
<message>
+ <location/>
<source>Over The Spot</source>
<translation>Over The Spot(在輸入處æ供編輯視窗)</translation>
</message>
<message>
+ <location/>
<source>Off The Spot</source>
<translation>Off The Spot(在輸入處下方æ供編輯視窗)</translation>
</message>
<message>
+ <location/>
<source>Root</source>
<translation>Root(使用根視窗)</translation>
</message>
<message>
+ <location/>
<source>Default Input Method:</source>
<translation>é è¨­è¼¸å…¥æ³•ï¼š</translation>
</message>
<message>
+ <location/>
<source>Printer</source>
<translation>å°è¡¨æ©Ÿ</translation>
</message>
<message>
+ <location/>
<source>Enable Font embedding</source>
<translation>開啟字型嵌入</translation>
</message>
<message>
+ <location/>
<source>Font Paths</source>
<translation>字型路徑</translation>
</message>
<message>
+ <location/>
<source>Browse...</source>
<translation>ç€è¦½...</translation>
</message>
<message>
+ <location/>
<source>Press the &lt;b&gt;Browse&lt;/b&gt; button or enter a directory and press Enter to add them to the list.</source>
<translation>按下「ç€è¦½ã€éµæˆ–輸入一個目錄並按 Enter éµä¾†åŠ å…¥åˆ—表中。</translation>
</message>
<message>
+ <location/>
<source>&amp;File</source>
<translation>檔案(&amp;F)</translation>
</message>
<message>
+ <location/>
<source>&amp;Help</source>
<translation>說明(&amp;H)</translation>
</message>
<message>
+ <location/>
<source>&amp;Save</source>
<translation>儲存(&amp;S)</translation>
</message>
<message>
+ <location/>
<source>Save</source>
<translation>儲存</translation>
</message>
<message>
+ <location/>
<source>Ctrl+S</source>
<translation>Ctrl+S</translation>
</message>
<message>
+ <location/>
<source>E&amp;xit</source>
<translation>離開(&amp;X)</translation>
</message>
<message>
+ <location/>
<source>Exit</source>
<translation>離開</translation>
</message>
<message>
+ <location/>
<source>&amp;About</source>
<translation>關於(&amp;A)</translation>
</message>
<message>
+ <location/>
<source>About</source>
<translation>關於</translation>
</message>
<message>
+ <location/>
<source>About &amp;Qt</source>
<translation>關於Qt (&amp;Q)</translation>
</message>
<message>
+ <location/>
<source>About Qt</source>
<translation>關於Qt</translation>
</message>
<message>
+ <location/>
<source>Phonon</source>
<translation>Phonon</translation>
</message>
<message>
+ <location/>
<source>About Phonon</source>
<translation>關於 Phonon</translation>
</message>
<message>
+ <location/>
<source>Current Version:</source>
<translation>ç›®å‰ç‰ˆæœ¬ï¼š</translation>
</message>
<message>
+ <location/>
<source>Not available</source>
<translation>無法使用</translation>
</message>
<message>
+ <location/>
<source>Website:</source>
<translation>網站:</translation>
</message>
<message>
+ <location/>
<source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
@@ -436,10 +563,12 @@ p, li { white-space: pre-wrap; }
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;a href=&quot;http://phonon.kde.org&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#0000ff;&quot;&gt;http://phonon.kde.org&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
<message>
+ <location/>
<source>About GStreamer</source>
<translation>關於 GStreamer</translation>
</message>
<message>
+ <location/>
<source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
@@ -452,18 +581,22 @@ p, li { white-space: pre-wrap; }
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;a href=&quot;http://gstreamer.freedesktop.org/&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#0000ff;&quot;&gt;http://gstreamer.freedesktop.org/&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
<message>
+ <location/>
<source>GStreamer backend settings</source>
<translation>GStreamer 後端介é¢è¨­å®š</translation>
</message>
<message>
+ <location/>
<source>Preferred audio sink:</source>
<translation>é è¨­ä½¿ç”¨çš„音效槽</translation>
</message>
<message>
+ <location/>
<source>Preferred render method:</source>
<translation>é è¨­ä½¿ç”¨çš„æˆåƒæ–¹æ³•:</translation>
</message>
<message>
+ <location/>
<source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
@@ -476,6 +609,7 @@ p, li { white-space: pre-wrap; }
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-style:italic;&quot;&gt;注æ„:變更這些設定å¯èƒ½æœƒç„¡æ³•è®“應用程å¼æ­£ç¢ºå•Ÿå‹•ã€‚&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
<message>
+ <location/>
<source>Please use the KDE Control Center to set the palette.</source>
<translation>請使用 KDE 控制中心來設定調色盤。</translation>
</message>
@@ -483,217 +617,278 @@ p, li { white-space: pre-wrap; }
<context>
<name>PaletteEditorAdvancedBase</name>
<message>
+ <location filename="../tools/qtconfig/paletteeditoradvancedbase.ui"/>
<source>Tune Palette</source>
<translation>調整調色盤</translation>
</message>
<message>
+ <location/>
<source>&lt;b&gt;Edit Palette&lt;/b&gt;&lt;p&gt;Change the palette of the current widget or form.&lt;/p&gt;&lt;p&gt;Use a generated palette or select colors for each color group and each color role.&lt;/p&gt;&lt;p&gt;The palette can be tested with different widget layouts in the preview section.&lt;/p&gt;</source>
<translation>&lt;b&gt;編輯調色盤&lt;/b&gt;&lt;p&gt;變更目å‰å…ƒä»¶æˆ–表單的調色盤。&lt;/p&gt;&lt;p&gt;使用產生的調色盤,或é¸æ“‡æ¯å€‹é¡è‰²ç¾¤çµ„或é¡è‰²è§’色的é¡è‰²ã€‚&lt;/p&gt;&lt;p&gt;調色盤å¯ä»¥åœ¨é è¦½å€ä¸­ç”¨ä¸åŒçš„元件佈局來測試。&lt;/p&gt;</translation>
</message>
<message>
+ <location/>
<source>Select &amp;Palette:</source>
<translation>é¸æ“‡èª¿è‰²ç›¤(&amp;P):</translation>
</message>
<message>
+ <location/>
<source>Active Palette</source>
<translation>啟動調色盤</translation>
</message>
<message>
+ <location/>
<source>Inactive Palette</source>
<translation>åœç”¨èª¿è‰²ç›¤</translation>
</message>
<message>
+ <location/>
<source>Disabled Palette</source>
<translation>關閉調色盤</translation>
</message>
<message>
+ <location/>
<source>Auto</source>
<translation>自動</translation>
</message>
<message>
+ <location/>
<source>Build inactive palette from active</source>
<translation>從啟用的調色盤建立新的éžå•Ÿç”¨çš„調色盤</translation>
</message>
<message>
+ <location/>
<source>Build disabled palette from active</source>
<translation>從啟用的調色盤建立新的關閉的調色盤</translation>
</message>
<message>
+ <location/>
<source>Central color &amp;roles</source>
<translation>å°‡é¡è‰²è§’色置中(&amp;R)</translation>
</message>
<message>
+ <location/>
<source>Choose central color role</source>
<translation>é¸æ“‡ä¸­å¤®é¡è‰²è§’色</translation>
</message>
<message>
+ <location/>
<source>&lt;b&gt;Select a color role.&lt;/b&gt;&lt;p&gt;Available central roles are: &lt;ul&gt; &lt;li&gt;Window - general background color.&lt;/li&gt; &lt;li&gt;WindowText - general foreground color. &lt;/li&gt; &lt;li&gt;Base - used as background color for e.g. text entry widgets, usually white or another light color. &lt;/li&gt; &lt;li&gt;Text - the foreground color used with Base. Usually this is the same as WindowText, in what case it must provide good contrast both with Window and Base. &lt;/li&gt; &lt;li&gt;Button - general button background color, where buttons need a background different from Window, as in the Macintosh style. &lt;/li&gt; &lt;li&gt;ButtonText - a foreground color used with the Button color. &lt;/li&gt; &lt;li&gt;Highlight - a color to indicate a selected or highlighted item. &lt;/li&gt; &lt;li&gt;HighlightedText - a text color that contrasts to Highlight. &lt;/li&gt; &lt;li&gt;BrightText - a text color that is very different from WindowText and contrasts well with e.g. black. &lt;/li&gt; &lt;/ul&gt; &lt;/p&gt;</source>
<translation>&lt;b&gt;é¸æ“‡é¡è‰²è§’色&lt;/b&gt;&lt;p&gt;å¯ç”¨çš„中央角色包括:&lt;ul&gt;&lt;li&gt;視窗─一般背景é¡è‰²ã€‚&lt;/li&gt;&lt;li&gt;視窗文字─一般å‰æ™¯æ–‡å­—&lt;/li&gt;&lt;li&gt;基底─用於如文字輸入元件的背景,通常是白色或其它較淡的é¡è‰²ã€‚&lt;/li&gt;&lt;li&gt;文字─與基底一起使用的å‰æ™¯é¡è‰²ã€‚通常是與視窗文字一樣,這樣å¯ä»¥è®“視窗與基底都有好的å°æ¯”效果。&lt;/li&gt;&lt;li&gt;按éµâ”€ä¸€èˆ¬æŒ‰éµçš„背景é¡è‰²ï¼Œè¦èˆ‡è¦–窗的背景é¡è‰²ä¸åŒï¼Œå°±åƒéº¥é‡‘å¡”å¼çš„風格。&lt;/li&gt;&lt;li&gt;按éµæ–‡å­—─用於按éµçš„å‰æ™¯é¡è‰²ã€‚&lt;/li&gt;&lt;li&gt;çªé¡¯â”€ç”¨æ–¼é¸æ“‡å€æˆ–çªé¡¯é …目的é¡è‰²ã€‚&lt;/li&gt;&lt;li&gt;çªé¡¯æ–‡å­—─çªé¡¯æ–‡å­—用的é¡è‰²ã€‚&lt;/li&gt;&lt;li&gt;明亮文字─與視窗文字éžå¸¸ä¸åŒçš„文字é¡è‰²ã€‚&lt;/li&gt;&lt;/ul&gt;&lt;/p&gt;</translation>
</message>
<message>
+ <location/>
<source>Window</source>
<translation>視窗</translation>
</message>
<message>
+ <location/>
<source>WindowText</source>
<translation>視窗文字</translation>
</message>
<message>
+ <location/>
<source>Button</source>
<translation>按éµ</translation>
</message>
<message>
+ <location/>
<source>Base</source>
<translation>基底</translation>
</message>
<message>
+ <location/>
<source>Text</source>
<translation>文字</translation>
</message>
<message>
+ <location/>
<source>BrightText</source>
<translation>明亮文字</translation>
</message>
<message>
+ <location/>
<source>ButtonText</source>
<translation>按éµæ–‡å­—</translation>
</message>
<message>
+ <location/>
<source>Highlight</source>
<translation>çªé¡¯</translation>
</message>
<message>
+ <location/>
<source>HighlightedText</source>
<translation>çªé¡¯æ–‡å­—</translation>
</message>
<message>
+ <location/>
<source>&amp;Select Color:</source>
<translation>é¸æ“‡é¡è‰²(&amp;S):</translation>
</message>
<message>
+ <location/>
<source>Choose a color</source>
<translation>é¸æ“‡ä¸€å€‹é¡è‰²</translation>
</message>
<message>
+ <location/>
<source>Choose a color for the selected central color role.</source>
<translation>é¸æ“‡ç”¨æ–¼é¸å–的中央é¡è‰²è§’色的é¡è‰²ã€‚</translation>
</message>
<message>
+ <location/>
<source>3-D shadow &amp;effects</source>
<translation>立體陰影效果(&amp;E)</translation>
</message>
<message>
+ <location/>
<source>Build &amp;from button color</source>
<translation>從按éµé¡è‰²å»ºç«‹(&amp;F)</translation>
</message>
<message>
+ <location/>
<source>Generate shadings</source>
<translation>產生é®è”½</translation>
</message>
<message>
+ <location/>
<source>Check to let 3D-effect colors be calculated from button-color.</source>
<translation>勾é¸ä»¥è®“立體效果å¯ä»¥å¾žæŒ‰éµé¡è‰²ä¸­è¨ˆç®—é¡è‰²ã€‚</translation>
</message>
<message>
+ <location/>
<source>Choose 3D-effect color role</source>
<translation>é¸æ“‡ç«‹é«”效果é¡è‰²è§’色</translation>
</message>
<message>
+ <location/>
<source>&lt;b&gt;Select a color role.&lt;/b&gt;&lt;p&gt;Available effect roles are: &lt;ul&gt; &lt;li&gt;Light - lighter than Button color. &lt;/li&gt; &lt;li&gt;Midlight - between Button and Light. &lt;/li&gt; &lt;li&gt;Mid - between Button and Dark. &lt;/li&gt; &lt;li&gt;Dark - darker than Button. &lt;/li&gt; &lt;li&gt;Shadow - a very dark color. &lt;/li&gt; &lt;/ul&gt;</source>
<translation>&lt;b&gt;é¸æ“‡é¡è‰²è§’色:&lt;/b&gt;&lt;p&gt;å¯ç”¨çš„角色包括:&lt;ul&gt;&lt;li&gt;淡─比按éµé¡è‰²æ·¡ã€‚&lt;li&gt;&lt;li&gt;中淡─在按éµé¡è‰²èˆ‡æ·¡è‰²ä¹‹é–“。&lt;/li&gt;&lt;li&gt;中等─在按éµé¡è‰²èˆ‡æš—色之間。&lt;/li&gt;&lt;li&gt;暗色─比按éµé¡è‰²æš—。&lt;/li&gt;&lt;li&gt;陰影:éžå¸¸æš—çš„é¡è‰²ã€‚&lt;/li&gt;&lt;/ul&gt;</translation>
</message>
<message>
+ <location/>
<source>Light</source>
<translation>æ·¡</translation>
</message>
<message>
+ <location/>
<source>Midlight</source>
<translation>中淡</translation>
</message>
<message>
+ <location/>
<source>Mid</source>
<translation>中等</translation>
</message>
<message>
+ <location/>
<source>Dark</source>
<translation>æš—</translation>
</message>
<message>
+ <location/>
<source>Shadow</source>
<translation>é™°å½±</translation>
</message>
<message>
+ <location/>
<source>Select Co&amp;lor:</source>
<translation>é¸æ“‡é¡è‰²(&amp;O):</translation>
</message>
<message>
+ <location/>
<source>Choose a color for the selected effect color role.</source>
<translation>é¸æ“‡ç”¨æ–¼é¸å–的效果é¡è‰²è§’色的é¡è‰²ã€‚</translation>
</message>
<message>
+ <location/>
<source>OK</source>
<translation>確定</translation>
</message>
<message>
+ <location/>
<source>Close dialog and apply all changes.</source>
<translation>關閉å°è©±æ¡†ï¼Œå¥—用所有的變更。</translation>
</message>
<message>
+ <location/>
<source>Cancel</source>
<translation>å–消</translation>
</message>
<message>
+ <location/>
<source>Close dialog and discard all changes.</source>
<translation>關閉å°è©±æ¡†ï¼Œä¸¦ä¸Ÿæ£„所有的變更。</translation>
</message>
</context>
<context>
+ <name>PreviewFrame</name>
+ <message>
+ <location filename="../tools/qtconfig/previewframe.cpp" line="+81"/>
+ <source>Desktop settings will only take effect after an application restart.</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
<name>PreviewWidgetBase</name>
<message>
+ <location filename="../tools/qtconfig/previewwidgetbase.ui"/>
<source>Preview Window</source>
<translation>é è¦½è¦–窗</translation>
</message>
<message>
+ <location/>
<source>ButtonGroup</source>
<translation>按éµç¾¤çµ„</translation>
</message>
<message>
+ <location/>
<source>RadioButton1</source>
<translation>圓鈕1</translation>
</message>
<message>
+ <location/>
<source>RadioButton2</source>
<translation>圓鈕2</translation>
</message>
<message>
+ <location/>
<source>RadioButton3</source>
<translation>圓鈕3</translation>
</message>
<message>
+ <location/>
<source>ButtonGroup2</source>
<translation>按éµç¾¤çµ„2</translation>
</message>
<message>
+ <location/>
<source>CheckBox1</source>
<translation>勾é¸ç›’1</translation>
</message>
<message>
+ <location/>
<source>CheckBox2</source>
<translation>勾é¸ç›’2</translation>
</message>
<message>
+ <location/>
<source>LineEdit</source>
<translation>行編輯å€</translation>
</message>
<message>
+ <location/>
<source>ComboBox</source>
<translation>下拉å¼é¸å–®</translation>
</message>
<message>
+ <location/>
<source>PushButton</source>
<translation>按éµ</translation>
</message>
<message>
+ <location/>
<source>&lt;p&gt;
&lt;a href=&quot;http://qtsoftware.com&quot;&gt;http://qtsoftware.com&lt;/a&gt;
&lt;/p&gt;
diff --git a/translations/qvfb_pl.ts b/translations/qvfb_pl.ts
index ac42503..a5baaed 100644
--- a/translations/qvfb_pl.ts
+++ b/translations/qvfb_pl.ts
@@ -1,10 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS><TS version="2.0" language="pl">
-<defaultcodec></defaultcodec>
+<!DOCTYPE TS>
+<TS version="2.0" language="pl">
<context>
<name>AnimationSaveWidget</name>
<message>
- <location filename="../tools/qvfb/qvfb.cpp" line="+824"/>
+ <location filename="../tools/qvfb/qvfb.cpp" line="+850"/>
<location line="+204"/>
<source>Record</source>
<translation>Nagraj</translation>
@@ -249,7 +249,7 @@
<context>
<name>DeviceSkin</name>
<message>
- <location filename="../tools/shared/deviceskin/deviceskin.cpp" line="+49"/>
+ <location filename="../tools/shared/deviceskin/deviceskin.cpp" line="+79"/>
<source>The image file &apos;%1&apos; could not be loaded.</source>
<translation>Nie można załadować pliku z obrazkiem &apos;%1&apos;.</translation>
</message>
diff --git a/translations/qvfb_untranslated.ts b/translations/qvfb_untranslated.ts
index 0f75227..cc18132 100644
--- a/translations/qvfb_untranslated.ts
+++ b/translations/qvfb_untranslated.ts
@@ -1,9 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS><TS version="2.0">
+<!DOCTYPE TS>
+<TS version="2.0">
<context>
<name>AnimationSaveWidget</name>
<message>
- <location filename="../tools/qvfb/qvfb.cpp" line="+824"/>
+ <location filename="../tools/qvfb/qvfb.cpp" line="+850"/>
<location line="+204"/>
<source>Record</source>
<translation type="unfinished"></translation>
@@ -248,7 +249,7 @@
<context>
<name>DeviceSkin</name>
<message>
- <location filename="../tools/shared/deviceskin/deviceskin.cpp" line="+49"/>
+ <location filename="../tools/shared/deviceskin/deviceskin.cpp" line="+79"/>
<source>The image file &apos;%1&apos; could not be loaded.</source>
<translation type="unfinished"></translation>
</message>
diff --git a/translations/qvfb_zh_CN.ts b/translations/qvfb_zh_CN.ts
index cbccfe3..d9c816d 100644
--- a/translations/qvfb_zh_CN.ts
+++ b/translations/qvfb_zh_CN.ts
@@ -4,7 +4,7 @@
<context>
<name>AnimationSaveWidget</name>
<message>
- <location filename="../tools/qvfb/qvfb.cpp" line="+824"/>
+ <location filename="../tools/qvfb/qvfb.cpp" line="+850"/>
<location line="+204"/>
<source>Record</source>
<translation>录åƒ</translation>
@@ -249,7 +249,7 @@
<context>
<name>DeviceSkin</name>
<message>
- <location filename="../tools/shared/deviceskin/deviceskin.cpp" line="+49"/>
+ <location filename="../tools/shared/deviceskin/deviceskin.cpp" line="+79"/>
<source>The image file &apos;%1&apos; could not be loaded.</source>
<translation>图åƒæ–‡ä»¶â€œ%1â€ä¸èƒ½è¢«åŠ è½½ã€‚</translation>
</message>
diff --git a/translations/qvfb_zh_TW.ts b/translations/qvfb_zh_TW.ts
index a48aae4..b789479 100644
--- a/translations/qvfb_zh_TW.ts
+++ b/translations/qvfb_zh_TW.ts
@@ -1,57 +1,74 @@
<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS><TS version="1.1" language="zh_TW">
-<defaultcodec></defaultcodec>
+<!DOCTYPE TS>
+<TS version="2.0" language="zh_TW">
<context>
<name>AnimationSaveWidget</name>
<message>
+ <location filename="../tools/qvfb/qvfb.cpp" line="+850"/>
+ <location line="+204"/>
<source>Record</source>
<translation>錄影</translation>
</message>
<message>
+ <location line="-202"/>
<source>Reset</source>
<translation>é‡ç½®</translation>
</message>
<message>
+ <location line="+2"/>
<source>Save</source>
<translation>儲存</translation>
</message>
<message>
+ <location line="+18"/>
<source>Save in MPEG format (requires netpbm package installed)</source>
<translation>以 MPEG æ ¼å¼å„²å­˜ (需è¦å®‰è£ netpbm 套件)</translation>
</message>
<message>
+ <location line="+8"/>
+ <location line="+206"/>
<source>Click record to begin recording.</source>
<translation>按下「錄影ã€é–‹å§‹éŒ„影。</translation>
</message>
<message>
+ <location line="-115"/>
+ <location line="+147"/>
<source>Finished saving.</source>
<translation>完æˆå„²å­˜ã€‚</translation>
</message>
<message>
+ <location line="-63"/>
<source>Paused. Click record to resume, or save if done.</source>
<translation>已暫åœã€‚按下「錄影ã€å¯ä»¥ç¹¼çºŒï¼ŒæŒ‰ã€Œå„²å­˜ã€è¡¨ç¤ºå·²å®Œæˆã€‚</translation>
</message>
<message>
+ <location line="+6"/>
<source>Pause</source>
<translation>æš«åœ</translation>
</message>
<message>
+ <location line="+1"/>
<source>Recording...</source>
<translation>錄影中...</translation>
</message>
<message>
+ <location line="+40"/>
<source>Saving... </source>
<translation>儲存中...</translation>
</message>
<message>
+ <location line="+4"/>
+ <location line="+4"/>
<source>Save animation...</source>
<translation>儲存動畫...</translation>
</message>
<message>
+ <location line="+2"/>
<source>Save canceled.</source>
<translation>儲存已å–消。</translation>
</message>
<message>
+ <location line="+9"/>
<source>Save failed!</source>
<translation>儲存失敗!</translation>
</message>
@@ -59,138 +76,172 @@
<context>
<name>Config</name>
<message>
+ <location filename="../tools/qvfb/config.ui"/>
<source>Configure</source>
<translation>設定</translation>
</message>
<message>
+ <location/>
<source>Size</source>
<translation>大å°</translation>
</message>
<message>
+ <location/>
<source>176x220 &quot;SmartPhone&quot;</source>
<translation>176x220 「智慧型手機ã€</translation>
</message>
<message>
+ <location/>
<source>240x320 &quot;PDA&quot;</source>
<translation>240x320 「PDAã€</translation>
</message>
<message>
+ <location/>
<source>320x240 &quot;TV&quot; / &quot;QVGA&quot;</source>
<translation>320x240 「TVã€/「QVGAã€</translation>
</message>
<message>
+ <location/>
<source>640x480 &quot;VGA&quot;</source>
<translation>640x480「VGAã€</translation>
</message>
<message>
+ <location/>
<source>800x600</source>
<translation>800x600</translation>
</message>
<message>
+ <location/>
<source>1024x768</source>
<translation>1024x768</translation>
</message>
<message>
+ <location/>
<source>Custom</source>
<translation>自訂</translation>
</message>
<message>
+ <location/>
<source>Depth</source>
<translation>深度</translation>
</message>
<message>
+ <location/>
<source>1 bit monochrome</source>
<translation>1 ä½å…ƒå–®è‰²</translation>
</message>
<message>
+ <location/>
<source>4 bit grayscale</source>
<translation>4 ä½å…ƒç°éšŽ</translation>
</message>
<message>
+ <location/>
<source>8 bit</source>
<translation>8 ä½å…ƒ</translation>
</message>
<message>
+ <location/>
<source>12 (16) bit</source>
<translation>12 (16) ä½å…ƒ</translation>
</message>
<message>
+ <location/>
<source>16 bit</source>
<translation>16 ä½å…ƒ</translation>
</message>
<message>
+ <location/>
<source>18 bit</source>
<translation>18 ä½å…ƒ</translation>
</message>
<message>
+ <location/>
<source>24 bit</source>
<translation>24 ä½å…ƒ</translation>
</message>
<message>
+ <location/>
<source>32 bit</source>
<translation>32 ä½å…ƒ</translation>
</message>
<message>
+ <location/>
<source>Skin</source>
<translation>外觀</translation>
</message>
<message>
+ <location/>
<source>None</source>
<translation>ç„¡</translation>
</message>
<message>
+ <location/>
<source>Emulate touch screen (no mouse move)</source>
<translation>模擬觸控å¼èž¢å¹•ï¼ˆæ²’有滑鼠移動)</translation>
</message>
<message>
+ <location/>
<source>Emulate LCD screen (Only with fixed zoom of 3.0 times magnification)</source>
<translation>模擬液晶螢幕(åªå›ºå®šç¸®æ”¾ 3 å€ï¼‰</translation>
</message>
<message>
+ <location/>
<source>&lt;p&gt;Note that any applications using the virtual framebuffer will be terminated if you change the Size or Depth &lt;i&gt;above&lt;/i&gt;. You may freely modify the Gamma &lt;i&gt;below&lt;/i&gt;.</source>
<translation>&lt;p&gt;注æ„,任何使用此虛擬 framebuffer 的應用程å¼åœ¨æ‚¨è®Šæ›´å¤§å°æˆ–深度後都會被終止。ä¸éŽè®Šæ›´åº•ä¸‹çš„ Gamma 值則ä¸æœƒã€‚</translation>
</message>
<message>
+ <location/>
<source>Gamma</source>
<translation>Gamma</translation>
</message>
<message>
+ <location/>
<source>Blue</source>
<translation>è—</translation>
</message>
<message>
+ <location/>
<source>1.0</source>
<translation>1.0</translation>
</message>
<message>
+ <location/>
<source>Green</source>
<translation>綠</translation>
</message>
<message>
+ <location/>
<source>All</source>
<translation>全部</translation>
</message>
<message>
+ <location/>
<source>Red</source>
<translation>ç´…</translation>
</message>
<message>
+ <location/>
<source>Set all to 1.0</source>
<translation>把所有的值都設為 1.0</translation>
</message>
<message>
+ <location/>
<source>&amp;OK</source>
<translation>確定(&amp;O)</translation>
</message>
<message>
+ <location/>
<source>&amp;Cancel</source>
<translation>å–消(&amp;C)</translation>
</message>
<message>
+ <location/>
<source>15 bit</source>
<translation>15 ä½å…ƒ</translation>
</message>
<message>
+ <location/>
<source>32 bit ARGB</source>
<translation>32 ä½å…ƒ ARGB</translation>
</message>
@@ -198,47 +249,57 @@
<context>
<name>DeviceSkin</name>
<message>
- <location filename="../tools/shared/deviceskin/deviceskin.cpp" line="49"/>
+ <location filename="../tools/shared/deviceskin/deviceskin.cpp" line="+79"/>
<source>The image file &apos;%1&apos; could not be loaded.</source>
<translation>無法載入影åƒæª” &apos;%1&apos;。</translation>
</message>
<message>
+ <location line="+64"/>
<source>The skin directory &apos;%1&apos; does not contain a configuration file.</source>
<translation>外觀目錄 %1 內並沒有設定檔。</translation>
</message>
<message>
+ <location line="+5"/>
<source>The skin configuration file &apos;%1&apos; could not be opened.</source>
<translation>無法開啟外觀設定檔 %1。</translation>
</message>
<message>
+ <location line="+6"/>
<source>The skin configuration file &apos;%1&apos; could not be read: %2</source>
<translation>無法讀å–外觀設定檔 %1。</translation>
</message>
<message>
+ <location line="+70"/>
<source>Syntax error: %1</source>
<translation>語法錯誤:%1</translation>
</message>
<message>
+ <location line="+21"/>
<source>The skin &quot;up&quot; image file &apos;%1&apos; does not exist.</source>
<translation>「上ã€çš„外觀影åƒæª” %1 ä¸å­˜åœ¨ã€‚</translation>
</message>
<message>
+ <location line="+10"/>
<source>The skin &quot;down&quot; image file &apos;%1&apos; does not exist.</source>
<translation>「下ã€çš„外觀影åƒæª” %1 ä¸å­˜åœ¨ã€‚</translation>
</message>
<message>
+ <location line="+11"/>
<source>The skin &quot;closed&quot; image file &apos;%1&apos; does not exist.</source>
<translation>「關閉ã€çš„外觀影åƒæª” %1 ä¸å­˜åœ¨ã€‚</translation>
</message>
<message>
+ <location line="+12"/>
<source>The skin cursor image file &apos;%1&apos; does not exist.</source>
<translation>游標的外觀影åƒæª” %1 ä¸å­˜åœ¨ã€‚</translation>
</message>
<message>
+ <location line="+25"/>
<source>Syntax error in area definition: %1</source>
<translation>å€åŸŸå®šç¾©ä¸­æœ‰èªžæ³•éŒ¯èª¤ï¼š%1</translation>
</message>
<message>
+ <location line="+38"/>
<source>Mismatch in number of areas, expected %1, got %2.</source>
<translation>å€åŸŸæ•¸é‡ä¸ç¬¦ï¼Œæ‡‰ç‚º %1,但實際上是 %2。</translation>
</message>
@@ -246,14 +307,17 @@
<context>
<name>QVFb</name>
<message>
+ <location filename="../tools/qvfb/qvfb.cpp" line="-487"/>
<source>Browse...</source>
<translation>ç€è¦½...</translation>
</message>
<message>
+ <location line="+126"/>
<source>Load Custom Skin...</source>
<translation>載入自訂的外觀...</translation>
</message>
<message>
+ <location line="+1"/>
<source>All QVFB Skins (*.skin)</source>
<translation>所有 QVFB 外觀檔 (*.skin)</translation>
</message>
diff --git a/util/install/archive/archive.pro b/util/install/archive/archive.pro
deleted file mode 100644
index e313a4a..0000000
--- a/util/install/archive/archive.pro
+++ /dev/null
@@ -1,9 +0,0 @@
-TEMPLATE = lib
-CONFIG += staticlib
-CONFIG += qt x11
-CONFIG -= dll
-TARGET = arq
-
-SOURCES += qarchive.cpp ../keygen/keyinfo.cpp
-HEADERS += qarchive.h
-!zlib:unix:LIBS += -lz
diff --git a/util/install/archive/qarchive.cpp b/util/install/archive/qarchive.cpp
deleted file mode 100644
index dd51c65..0000000
--- a/util/install/archive/qarchive.cpp
+++ /dev/null
@@ -1,471 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Qt Software Information (qt-info@nokia.com)
-**
-** This file is part of the utils 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** 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.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at qt-sales@nokia.com.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-#include "qarchive.h"
-#include <qdatastream.h>
-#include <qfileinfo.h>
-#include <qdir.h>
-#include <qapplication.h>
-#include "../../../src/3rdparty/zlib/zlib.h"
-#include "../keygen/keyinfo.h"
-#ifdef Q_OS_UNIX
-# include <sys/stat.h>
-# include <unistd.h>
-# include <sys/types.h>
-# include <utime.h>
-#endif
-
-enum ChunkType {
- ChunkDirectory = 0,
- ChunkFile = 1,
- ChunkSymlink = 2,
- ChunkBeginHeader = 3,
- ChunkEndHeader = 4
-};
-
-static bool createDir( const QString& fullPath )
-{
- QStringList hierarchy = QStringList::split( QDir::separator(), fullPath );
- QString pathComponent, tmpPath;
- QDir dirTmp;
-#ifdef Q_OS_UNIX
- dirTmp = "/";
-#endif
-
- for( QStringList::Iterator it = hierarchy.begin(); it != hierarchy.end(); ++it ) {
- pathComponent = *it + QDir::separator();
- tmpPath += pathComponent;
- if (!dirTmp.exists(tmpPath) && !dirTmp.mkdir(tmpPath))
- return false;
- }
- return true;
-}
-
-QArchive::QArchive( const QString& archivePath )
-{
- setPath( archivePath );
-
- bufferSize = 512 * 1024;
-}
-
-QArchive::~QArchive()
-{
-}
-
-void QArchive::setPath( const QString& archivePath )
-{
- QString fullName = archivePath;
- if( fullName.right( 4 ) != ".arq" )
- fullName += ".arq";
- arcFile.setName( fullName );
-}
-
-bool QArchive::open( int mode )
-{
- switch( mode ) {
- case IO_ReadOnly:
- // Fallthrough intentional
- case IO_WriteOnly:
- if( arcFile.open( mode ) )
- return true;
- break;
- }
- return false;
-}
-
-void QArchive::close()
-{
- if( arcFile.isOpen() )
- arcFile.close();
-}
-
-bool QArchive::writeFile( const QString& fileName, const QString& localPath )
-{
- if( arcFile.isOpen() ) {
- QDataStream outStream( &arcFile );
- QFileInfo fi( fileName );
-
- QFile inFile( fi.absFilePath() );
- QByteArray inBuffer;
- QByteArray outBuffer( bufferSize );
- z_stream ztream;
- bool continueCompressing;
-
- if(symbolicLinks() && fi.isSymLink()) {
- outStream << (int)ChunkSymlink;
- outStream << fi.fileName().latin1();
- outStream << fi.readLink().latin1();
- } else if( inFile.open( IO_ReadOnly ) ) {
- if( inBuffer.resize( fi.size() ) ) {
- outStream << (int)ChunkFile;
- outStream << fi.fileName().latin1();
- outStream << fi.lastModified();
- {
- int perm = -1;
-#ifdef Q_OS_UNIX
- struct stat st;
- if(!::stat(fi.filePath().latin1(), &st))
- perm = (int)st.st_mode;
-#endif
- outStream << perm;
- }
- if( verbosityMode & Source )
- emit operationFeedback( "Deflating " + fi.absFilePath() + "..." );
- else if( verbosityMode & Destination )
- emit operationFeedback( "Deflating " + localPath + "/" + fi.fileName() + "..." );
- ztream.next_in = (unsigned char*)inBuffer.data();
- ztream.avail_in = inBuffer.size();
- ztream.total_in = 0;
- ztream.next_out = (unsigned char*)outBuffer.data();
- ztream.avail_out = outBuffer.size();
- ztream.total_out = 0;
- ztream.msg = NULL;
- ztream.zalloc = (alloc_func)NULL;
- ztream.zfree = (free_func)NULL;
- ztream.opaque = (voidpf)NULL;
- ztream.data_type = Z_BINARY;
- deflateInit( &ztream, 9 );
- if ( inBuffer.data() )
- inFile.readBlock( inBuffer.data(), inBuffer.size() );
-
- continueCompressing = true;
- while( continueCompressing ) {
- if(qApp)
- qApp->processEvents();
- continueCompressing = ( deflate( &ztream, Z_FINISH ) == Z_OK );
- if( !ztream.avail_out ) {
- if( !outBuffer.resize( outBuffer.size() + bufferSize ) )
- qFatal( "Could not allocate compression buffer!" );
- ztream.next_out = (unsigned char*)&outBuffer.data()[ ztream.total_out ];
- ztream.avail_out = bufferSize;
- }
- }
-
- emit operationFeedback( QString( "done. %1 => %2 (%3%)\n" )
- .arg( ztream.total_in )
- .arg( ztream.total_out )
- .arg( int(
- double( ztream.total_out ) / double( ztream.total_in ) * 100 ) ) );
- deflateEnd( &ztream );
- // Now write the compressed data to the output
- outStream << ztream.total_out;
- outStream.writeRawBytes( outBuffer.data(), ztream.total_out );
- }
- inFile.close();
- return true;
- } else {
- return false;
- }
- }
- return false;
-}
-
-bool QArchive::setDirectory( const QString& dirName )
-{
- if( arcFile.isOpen() ) {
- QString fullName = dirName;
- QDataStream outStream( &arcFile );
- if( fullName.right( 1 ) != "/" )
- fullName += "/";
- outStream << (int)ChunkDirectory;
- outStream << fullName.latin1();
- return true;
- }
- return false;
-}
-
-bool QArchive::writeHeader( const QArchiveHeader header )
-{
- if( arcFile.isOpen() ) {
- QDataStream outStream( &arcFile );
- outStream << (int)ChunkBeginHeader;
- outStream << header.mayorVersion();
- outStream << header.minorVersion();
- outStream << header.features();
- outStream << header.description();
- outStream << header.extraData;
- outStream << (int)ChunkEndHeader;
- return true;
- }
- return false;
-}
-
-bool QArchive::writeDir( const QString &dirName1, bool includeLastComponent, const QString &localPath1 )
-{
- if( arcFile.isOpen() ) {
- QString localPath = localPath1, dirName = dirName1;
- if(localPath.right(1) == "/")
- localPath.truncate(localPath.length()-1);
- if(dirName.right(1) == "/")
- dirName.truncate(dirName.length()-1);
-
- QFileInfo fi( dirName );
-
- if( includeLastComponent )
- setDirectory( fi.fileName() );
- QDir dir( dirName );
- const QFileInfoList* dirEntries = dir.entryInfoList();
- QFileInfoListIterator dirIter( *dirEntries );
- QDataStream outStream( &arcFile );
- QFileInfo* pFi;
-
- dirIter.toLast();
- while( ( pFi = dirIter.current() ) ) {
- if( pFi->fileName() != "." && pFi->fileName() != ".." ) {
- if( pFi->isDir() )
- writeDir( pFi->absFilePath(), true, localPath + "/" +
- pFi->fileName() ); // Subdirs should always get its name in the archive.
- else
- writeFile( pFi->absFilePath(), localPath );
- }
- --dirIter;
- }
- setDirectory( ".." );
- return true;
- }
- return false;
-}
-
-bool QArchive::writeFileList( const QStringList fileList )
-{
- for( QStringList::ConstIterator it = fileList.begin(); it != fileList.end(); ++it ) {
- if( !writeFile( (*it) ) )
- return false;
- }
- return true;
-}
-
-bool QArchive::writeDirList( const QStringList dirList, bool includeLastComponent )
-{
- for( QStringList::ConstIterator it = dirList.begin(); it != dirList.end(); ++it ) {
- QString lastComponent = (*it).mid( (*it).findRev( "/" ) + 1 );
- if( !writeDir( (*it), includeLastComponent, lastComponent ) )
- return false;
- }
- return true;
-}
-
-void QArchive::setVerbosity( int verbosity )
-{
- verbosityMode = verbosity;
-}
-
-QArchiveHeader* QArchive::readArchiveHeader()
-{
- QDataStream inStream( &arcFile );
- return readArchiveHeader( &inStream );
-}
-
-/*
- Reads the archive header and returns it on success. If an error occurs, it
- returns 0. The caller has to delete the object.
-*/
-QArchiveHeader* QArchive::readArchiveHeader( QDataStream *inStream )
-{
- int chunktype;
- QArchiveHeader *header = new QArchiveHeader;
-
- *inStream >> chunktype;
- if( chunktype == ChunkBeginHeader ) {
- *inStream >> header->_mayorVersion;
- *inStream >> header->_minorVersion;
- if ( header->mayorVersion()!=1 || header->minorVersion()!=0 ) {
- emit operationFeedback( "Incompatible package version" );
- delete header;
- return 0;
- }
- *inStream >> header->_features;
- *inStream >> header->_description;
- *inStream >> header->extraData;
- *inStream >> chunktype;
- if ( chunktype != ChunkEndHeader ) {
- emit operationFeedback( "Invalid package header" );
- delete header;
- return 0;
- }
- } else {
- emit operationFeedback( "No package header found." );
- delete header;
- return 0;
- }
- return header;
-}
-
-bool QArchive::readArchive( const QString &outpath, const QString &key )
-{
- QDataStream inStream( &arcFile );
- return readArchive( &inStream, outpath, key );
-}
-
-bool QArchive::readArchive( QDataStream *inStream, const QString &outpath, const QString &key )
-{
- QDataStream outStream;
- QFile outFile;
- QDir outDir;
- QByteArray inBuffer;
- QByteArray outBuffer( bufferSize );
- z_stream ztream;
- bool continueDeCompressing;
- QString entryName, dirName, symName;
- int entryLength, chunktype;
-
- //get the key
- QArchiveHeader *header = readArchiveHeader( inStream );
- if ( header == 0 )
- return false;
- uint infeatures = featuresForKey( key );
- if( (header->features() & infeatures) != header->features()) {
- emit operationFeedback( "Invalid key" );
- return false;
- }
-
- // Set up the initial directory.
- // If the dir does not exist, try to create it
- dirName = QDir::toNativeSeparators( outpath );
- outDir.setPath( dirName );
- if( !outDir.exists( dirName ) && !createDir( dirName ) )
- return false;
- outDir.cd( dirName );
-
- while( !inStream->atEnd() ) {
- //get our type
- *inStream >> chunktype;
- if(chunktype == ChunkDirectory) {
- *inStream >> entryLength;
- inBuffer.resize( entryLength );
- inStream->readRawBytes( inBuffer.data(), entryLength );
- entryName = inBuffer.data();
-
- if( verbosityMode & Source )
- emit operationFeedback( "Directory " + entryName + "... " );
- if( entryName == "../" ) {
- outDir.cdUp();
- } else {
- dirName = QDir::toNativeSeparators( outDir.absPath() +
- QString( "/" ) + entryName.left( entryName.length() - 1 ) );
- if( verbosityMode & Destination )
- emit operationFeedback( "Directory " + dirName + "... " );
-
- if( !outDir.exists( dirName ) && !createDir( dirName ) ) {
- emit operationFeedback( "Cannot create directory: " + dirName );
- return false;
- }
- outDir.cd( dirName );
- }
- } else if(chunktype == ChunkFile) {
- *inStream >> entryLength;
- inBuffer.resize( entryLength );
- inStream->readRawBytes( inBuffer.data(), entryLength );
- entryName = inBuffer.data();
-
- int filePerm;
- QDateTime timeStamp;
- QString fileName = QDir::toNativeSeparators( outDir.absPath() + QString( "/" ) + entryName );
- outFile.setName( fileName );
- if( outFile.open( IO_WriteOnly ) ) {
- *inStream >> timeStamp; // Get timestamp from the archive
- *inStream >> filePerm;
- outStream.setDevice( &outFile );
- *inStream >> entryLength;
- if( verbosityMode & Source )
- emit operationFeedback( "Expanding " + entryName + "..." );
- else if( verbosityMode & Destination )
- emit operationFeedback( "Expanding " + fileName + "..." );
- inBuffer.resize( entryLength );
- inStream->readRawBytes( inBuffer.data(), entryLength );
- ztream.next_in = (unsigned char*)inBuffer.data();
- ztream.avail_in = entryLength;
- ztream.total_in = 0;
- ztream.msg = NULL;
- ztream.zalloc = (alloc_func)0;
- ztream.zfree = (free_func)0;
- ztream.opaque = (voidpf)0;
- ztream.data_type = Z_BINARY;
- inflateInit( &ztream );
- continueDeCompressing = true;
- while( continueDeCompressing ) {
- ztream.next_out = (unsigned char*)outBuffer.data();
- ztream.avail_out = outBuffer.size();
- ztream.total_out = 0;
- continueDeCompressing = ( inflate( &ztream, Z_NO_FLUSH ) == Z_OK );
- outStream.writeRawBytes( outBuffer.data(), ztream.total_out );
- }
- inflateEnd( &ztream );
- outFile.close();
-#ifdef Q_OS_UNIX
- QDateTime t; t.setTime_t(0); //epoch
- struct utimbuf tb;
- tb.actime = tb.modtime = t.secsTo(timeStamp);
- utime(fileName.local8Bit(), &tb);
- if(filePerm != -1)
- chmod(fileName.local8Bit(), (mode_t)filePerm);
-#endif
- } else {
- emit operationFeedback( "Cannot open: " + fileName );
- return false;
- }
- } else if(chunktype == ChunkSymlink) {
- *inStream >> entryLength;
- inBuffer.resize( entryLength );
- inStream->readRawBytes( inBuffer.data(), entryLength );
- entryName = inBuffer.data();
- QString fileName = QDir::toNativeSeparators( outDir.absPath() + QString( "/" ) + entryName );
-
- *inStream >> entryLength;
- inBuffer.resize( entryLength );
- inStream->readRawBytes( inBuffer.data(), entryLength );
- symName = inBuffer.data();
- if( verbosityMode & Source )
- emit operationFeedback( "Linking " + symName + "... " );
- else if( verbosityMode & Destination )
- emit operationFeedback( "Linking " + fileName + "... " );
-#ifdef Q_OS_UNIX
- symlink( symName.local8Bit(), fileName.local8Bit() );
-#endif
- } else {
- if( verbosityMode & Source )
- emit operationFeedback( QString("Unknown chunk: %d") .arg(chunktype) );
- }
- if( verbosityMode & Progress )
- emit operationFeedback( inStream->device()->at() );
- }
- return true;
-}
-
diff --git a/util/install/archive/qarchive.h b/util/install/archive/qarchive.h
deleted file mode 100644
index 351a48b..0000000
--- a/util/install/archive/qarchive.h
+++ /dev/null
@@ -1,138 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Qt Software Information (qt-info@nokia.com)
-**
-** This file is part of the utils 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** 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.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at qt-sales@nokia.com.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-#ifndef QARCHIVE_H
-#define QARCHIVE_H
-
-#include <qstring.h>
-#include <qfile.h>
-#include <qstringlist.h>
-#include <qobject.h>
-
-class QArchiveHeader
-{
-public:
- QArchiveHeader( uint feat, const QString& desc=QString(), uchar mayorVer = 1, uchar minorVer = 0 )
- : _features(feat), _description(desc), _mayorVersion(mayorVer), _minorVersion(minorVer)
- {}
-
- uint features() const
- { return _features; }
-
- QString description() const
- { return _description; }
-
- uchar mayorVersion() const
- { return _mayorVersion; }
-
- uchar minorVersion() const
- { return _minorVersion; }
-
- void addExtraData( const QString& key, const QString& value )
- { extraData.insert( key, value ); }
-
- QString findExtraData( const QString& key ) const
- { return extraData[key]; }
-
-private:
- QArchiveHeader()
- {}
-
- uint _features;
- QString _description;
- uchar _mayorVersion;
- uchar _minorVersion;
- QMap<QString,QString> extraData;
-
- friend class QArchive;
-};
-
-class QArchive : public QObject
-{
- Q_OBJECT
-public:
- QArchive( const QString& archivePath = QString() );
- ~QArchive();
-
- void setPath( const QString& archivePath );
- void setVerbosity( int verbosity );
-
- bool symbolicLinks() const { return doSyms; }
- void setSymbolicLinks(bool b) { doSyms = b; }
-
- bool open( int mode );
- void close();
- bool isOpen() { return arcFile.isOpen(); }
-
- bool writeHeader( const QArchiveHeader header );
- bool writeFile( const QString& fileName, const QString& localPath = QString() );
- bool writeFileList( const QStringList fileList );
- bool writeDir( const QString& dirName, bool includeLastComponent = false,
- const QString& localPath = QString() );
- bool writeDirList( const QStringList dirList, bool includeLastComponent = true );
-
- QArchiveHeader* readArchiveHeader();
- QArchiveHeader* readArchiveHeader( QDataStream *inStream );
-
- bool readArchive( const QString &outpath, const QString &key = QString() );
- bool readArchive( QDataStream *inStream, const QString &outpath, const QString &key = QString() );
-private:
- QFile arcFile;
-
- int bufferSize;
- int verbosityMode;
- uint doSyms : 1;
- bool setDirectory( const QString& dirName );
-signals:
- void operationFeedback( const QString& );
- void operationFeedback( int );
-
-public:
- enum {
- NoFeedback = 0x00,
- OnlyNames = 0x01,
- Verbose = 0x02,
- Source = 0x10,
- Destination = 0x20,
- Progress = 0x40
- };
-};
-
-#endif
diff --git a/util/install/configure_installer.cache b/util/install/configure_installer.cache
deleted file mode 100644
index 9427b74..0000000
--- a/util/install/configure_installer.cache
+++ /dev/null
@@ -1,30 +0,0 @@
--disable-table
--disable-iconview
--disable-workspace
--disable-xml
--disable-network
--disable-canvas
--disable-opengl
--disable-sql
--release
--static
--lean
--no-dsp
--no-thread
--no-accessibility
--qt-style-windowsxp
--no-style-motif
--no-style-cde
--no-style-sgi
--no-style-motifplus
--no-style-platinum
--no-big-codecs
--no-jpeg
--no-png
--spec win32-msvc
--saveconfig installer
--D QT_NO_COLORNAMES
--D QT_NO_BEZIER
--D QT_NO_EFFECTS
--D QT_NO_DIRECTPAINTER
--D QT_NO_SVG
diff --git a/util/install/install.pro b/util/install/install.pro
deleted file mode 100644
index 4106453..0000000
--- a/util/install/install.pro
+++ /dev/null
@@ -1,9 +0,0 @@
-TEMPLATE = subdirs
-CONFIG += ordered
-
-SUBDIRS += archive \
- package \
- keygen
-
-win32:SUBDIRS += win
-mac:SUBDIRS += mac
diff --git a/util/install/keygen/keygen.pro b/util/install/keygen/keygen.pro
deleted file mode 100644
index 59daf75..0000000
--- a/util/install/keygen/keygen.pro
+++ /dev/null
@@ -1,13 +0,0 @@
-CONFIG += qt console
-SOURCES += keyinfo.cpp
-keychk {
- TEMPLATE = lib
- TARGET = keychk
- DESTDIR = ../../../lib/
- CONFIG -= shared dll
- CONFIG += staticlib
-} else {
- TEMPLATE = app
- TARGET = keygen
- SOURCES += main.cpp
-} \ No newline at end of file
diff --git a/util/install/keygen/keyinfo.cpp b/util/install/keygen/keyinfo.cpp
deleted file mode 100644
index 9ad5404..0000000
--- a/util/install/keygen/keyinfo.cpp
+++ /dev/null
@@ -1,164 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Qt Software Information (qt-info@nokia.com)
-**
-** This file is part of the utils 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** 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.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at qt-sales@nokia.com.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include <qregexp.h>
-
-#include "keyinfo.h"
-
-// Magic values
-enum {
- ProductMagic = 0xB292,
- PlatformMagic = 0x5C7E,
- LicenseSchemaMagic = 0xE3B,
- LicenseIDMagic = 0xCE57,
- FeatureMagic = 0x4D5
-};
-
-static const char Xalphabet[] = "WX9MUEC7AJH3KS6DB4YFG2L5PQRT8VNZ";
-static const int XAlphabetSize = sizeof(Xalphabet) - 1;
-
-static QString encodeBaseX(uint k)
-{
- QString str;
- do {
- str += QChar(Xalphabet[ k % XAlphabetSize ]);
- k /= XAlphabetSize;
- } while (k > 0u);
- return str;
-}
-
-static uint decodeBaseX(const QString &str)
-{
- uint k = 0;
- int i = str.length();
- while (i > 0) {
- i--;
- const char *p = strchr(Xalphabet, str[i].unicode());
- if (p == 0) {
- return 0;
- } else {
- k = (k * XAlphabetSize) + (p - Xalphabet);
- }
- }
- return k;
-}
-
-static const QDate StartDate(2001, 1, 1);
-static const uint MaxDays = 4000;
-
-static QString encodedExpiryDate(const QDate &date)
-{
- uint days = StartDate.daysTo(date);
- if (days >= MaxDays)
- days = MaxDays - 1;
- uint x = (days << 7) ^ days;
- return encodeBaseX(x ^ 0x0000beef);
-}
-
-static QDate decodedExpiryDate(const QString &encodedDate)
-{
- QDate date;
- uint y = decodeBaseX(encodedDate);
- uint x = y ^ 0x0000beef;
- uint days = ( (x >> 7) ^ x ) >> 7;
- if (days >= MaxDays)
- return QDate();
- date = StartDate.addDays( days );
- if (encodedExpiryDate(date) != encodedDate)
- return QDate();
- return date;
-}
-
-bool decodeLicenseKey(const QString &licenseKey,
- uint *products,
- uint *platforms,
- uint *licenseSchema,
- uint *licenseFeatures,
- uint *licenseID,
- QDate *expiryDate)
-{
- QStringList licenseParts;
- int dash = -1;
- do {
- int start = dash + 1;
- dash = licenseKey.indexOf('-', start);
- licenseParts.append(licenseKey.mid(start, dash - start));
- } while (dash != -1);
-
- // license keys have 7 fields
- if (licenseParts.size() != 7) {
- // invalid key
- return false;
- }
- QString productPart = licenseParts.at(0);
- QString platformPart = licenseParts.at(1);
- QString licenseSchemaPart = licenseParts.at(2);
- QString licenseFeaturesPart = licenseParts.at(3);
- QString licenseIDPart = licenseParts.at(4);
- QString expiryDatePart = licenseParts.at(5);
- QString checksumPart = licenseParts.at(6);
- QString keyPart = productPart
- + '-' + platformPart
- + '-' + licenseSchemaPart
- + '-' + licenseFeaturesPart
- + '-' + licenseIDPart
- + '-' + expiryDatePart;
-
- // verify the crc
- QByteArray ba = keyPart.toLatin1();
- int crc = qChecksum(ba.constData(), ba.size());
- QString checksumVerification = QString("%1%2")
- .arg((crc & 0xff),2,16,QChar('0'))
- .arg((crc >> 8 & 0xff),2,16,QChar('0'))
- .toUpper();
- if (checksumPart != checksumVerification) {
- // invalid checksum
- return false;
- }
-
- *products = decodeBaseX(productPart) ^ ProductMagic;
- *platforms = decodeBaseX(platformPart) ^ PlatformMagic;
- *licenseSchema = decodeBaseX(licenseSchemaPart) ^ LicenseSchemaMagic;
- *licenseFeatures = decodeBaseX(licenseFeaturesPart) ^ FeatureMagic;
- *licenseID = decodeBaseX(licenseIDPart) ^ LicenseIDMagic;
- *expiryDate = decodedExpiryDate(expiryDatePart);
- return true;
-}
diff --git a/util/install/keygen/keyinfo.h b/util/install/keygen/keyinfo.h
deleted file mode 100644
index 9b3687a..0000000
--- a/util/install/keygen/keyinfo.h
+++ /dev/null
@@ -1,123 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Qt Software Information (qt-info@nokia.com)
-**
-** This file is part of the utils 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** 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.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at qt-sales@nokia.com.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef KEYINFO_H
-#define KEYINFO_H
-
-// Products
-enum {
- // the first 10 bits are reserved for Qt editions
- QtUniversal = 0x00000001,
- QtDesktop = 0x00000002,
- QtDesktopLight = 0x00000004,
- QtConsole = 0x00000008,
- QtDesignerOnly = 0x00000010,
- QtReserved1 = 0x00000020,
- QtReserved2 = 0x00000040,
- QtReserved3 = 0x00000080,
- QtReserved4 = 0x00000100,
- QtReserved5 = 0x00000200,
- QtProductMask = 0x000003ff,
-
- // the next 10 bits are reserved for Qtopia editions
- QtopiaPDA = 0x00000400,
- QtopiaPhone = 0x00000800,
- QtopiaRefboard = 0x00001000,
- QtopiaReserved1 = 0x00002000,
- QtopiaReserved2 = 0x00004000,
- QtopiaReserved3 = 0x00008000,
- QtopiaReserved4 = 0x00010000,
- QtopiaReserved5 = 0x00020000,
- QtopiaReserved6 = 0x00040000,
- QtopiaReserved7 = 0x00080000,
-
- // other products get the upper 12 bits
- Teambuilder = 0x00100000,
- Solutions = 0x00200000,
- QSA = 0x00400000,
- OtherReserved1 = 0x00800000,
- OtherReserved2 = 0x01000000,
- OtherReserved3 = 0x02000000,
- OtherReserved4 = 0x04000000,
- OtherReserved5 = 0x08000000,
- OtherReserved6 = 0x10000000,
- OtherReserved7 = 0x20000000,
- OtherReserved8 = 0x40000000,
- OtherReserved9 = 0x80000000,
-};
-
-// Platforms
-enum {
- PlatformX11 = 0x01,
- PlatformEmbedded = 0x02,
- PlatformWindows = 0x04,
- PlatformMac = 0x08
-};
-
-// LicenseSchema
-enum {
- SupportedEvaluation = 0x01,
- UnsupportedEvaluation = 0x02,
- FullSourceEvaluation = 0x04,
- FullCommercial = 0x08
-};
-
-// LicenseFeatures
-enum {
- USCustomer = 0x01
-};
-
-#include <qdatetime.h>
-#include <qstring.h>
-
-/*
- Decodes the \a licenseKey. This function returns true if 1) decoding
- was successful and 2) the checksum matches, otherwise it returns false.
-*/
-bool decodeLicenseKey(const QString &licenseKey,
- uint *products,
- uint *platforms,
- uint *licenseSchema,
- uint *licenseFeatures,
- uint *licenseID,
- QDate *expiryDate);
-
-#endif
diff --git a/util/install/keygen/main.cpp b/util/install/keygen/main.cpp
deleted file mode 100644
index b6eee41..0000000
--- a/util/install/keygen/main.cpp
+++ /dev/null
@@ -1,250 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Qt Software Information (qt-info@nokia.com)
-**
-** This file is part of the utils 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** 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.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at qt-sales@nokia.com.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include <qfile.h>
-
-#include <stdio.h>
-#include <stdlib.h>
-
-#include "keyinfo.h"
-
-static void printNewKey( uint features, const QDate& expiryDate )
-{
- QFile in;
- QFile out;
- QString fn;
- char block[10];
-
- fn.sprintf( "next.%.2x", features );
- in.setFileName( fn );
- if ( !in.open(QFile::ReadOnly) )
- return;
- int ent = QString( in.readAll() ).toInt();
- in.close();
-
- fn.sprintf( "table.%.2x", features );
- in.setFileName( fn );
- if ( !in.open(QFile::ReadOnly) )
- return;
- in.seek( ent * 10 );
- in.read( block, 9 );
- block[9] = '\0';
- in.close();
-
- ent++;
- if ( ent == (1 << NumRandomBits) )
- ent = 1; // skip first entry
-
- fn.sprintf( "next.%.2x", features );
- out.setFileName( fn );
- if ( !out.open(QFile::WriteOnly) )
- return;
- QString s = QString::number( ent ) + QChar( '\n' );
- out.write( s.toLocal8Bit(), s.length() );
- out.close();
-
- if ( strlen(block) == 9 && block[4] == '-' )
- printf( "%s%s\n", block, qPrintable(encodedExpiryDate(expiryDate)) );
-}
-
-static QString textForFeatures( uint features )
-{
- QString text;
-
- if ( (features & Feature_US) != 0 )
- text += QString( " -us" );
- if ( (features & Feature_Enterprise) != 0 )
- text += QString( " -enterprise" );
- if ( (features & Feature_Unix) != 0 )
- text += QString( " -unix" );
- if ( (features & Feature_Windows) != 0 )
- text += QString( " -windows" );
- if ( (features & Feature_Mac) != 0 )
- text += QString( " -mac" );
- if ( (features & Feature_Embedded) != 0 )
- text += QString( " -embedded" );
- if ( (features & Feature_Extra1) != 0 )
- text += QString( " -extra1" );
- if ( (features & Feature_Extra2) != 0 )
- text += QString( " -extra2" );
-
- text = text.trimmed();
- if ( text.isEmpty() )
- text = QString( "invalid key" );
- return text;
-}
-
-static QString textForDate( const QDate& date )
-{
- if ( date.isValid() ) {
- return date.toString( Qt::ISODate );
- } else {
- return QString( "invalid date" );
- }
-}
-
-static void reset()
-{
- for ( uint features = 0; features < (1 << NumFeatures); features++ ) {
- printf( "Resetting 'table.%.2x' and 'next.%.2x' (%s)\n", features,
- features, qPrintable(textForFeatures(features)) );
-
- QFile out;
- QString fn;
-
- fn.sprintf( "table.%.2x", features );
- out.setFileName( fn );
- if ( !out.open(QFile::WriteOnly) ) {
- fprintf( stderr, "Cannot open '%s' for writing\n", qPrintable(fn) );
- exit( EXIT_FAILURE );
- }
-
- for ( uint bits = 0; bits < (1 << NumRandomBits); bits++ ) {
- QString k = keyForFeatures( features, bits ) + QChar( '\n' );
- out.write( k.toLatin1(), k.length() );
-
- /*
- We check that the generated keys give access to the
- correct feature sets. This accounts for most of the
- processing time of the function.
- */
-#if 1
- if ( featuresForKey(k) != features ) {
- fprintf( stderr, "Internal error in featuresForKey(\"%s\")\n",
- qPrintable(k.trimmed()) );
- exit( EXIT_FAILURE );
- }
- if ( (features & ~(Feature_US | Feature_Enterprise |
- Feature_Unix)) == 0 ) {
- if ( featuresForKeyOnUnix(k) != features ) {
- fprintf( stderr,
- "Internal error in featuresForKeyOnUnix(\"%s\")\n",
- qPrintable(k.trimmed()) );
- exit( EXIT_FAILURE );
- }
- }
-#endif
- }
- out.close();
-
- fn.sprintf( "next.%.2x", features );
- out.setFileName( fn );
- if ( !out.open(QFile::WriteOnly) ) {
- fprintf( stderr, "Cannot open '%s' for writing\n", qPrintable(fn) );
- exit( EXIT_FAILURE );
- }
- out.write( "1\n", 2 ); // skip first key
- out.close();
- }
-}
-
-int main( int argc, char **argv )
-{
- if ( argc == 1 || (strcmp(argv[1], "check") != 0 &&
- strcmp(argv[1], "new") != 0 &&
- strcmp(argv[1], "reset") != 0) ) {
- fprintf( stderr, "Usage:\n"
- " keygen check <key>\n"
- " keygen new YYYY-MM-DD [-us] [-enterprise] [-unix]\n"
- " [-windows] [-mac] [-embedded] [-extra1] [-extra2]\n"
- " keygen reset\n" );
- exit( EXIT_FAILURE );
- }
-
- if ( strcmp(argv[1], "check") == 0 ) {
- if ( argc != 3 ) {
- fprintf( stderr, "Usage:\n"
- " mkcode check <key>\n" );
- exit( EXIT_FAILURE );
- }
-
- QString key( argv[2] );
-
- printf("Unix check: %s\n",
- qPrintable(textForFeatures(featuresForKeyOnUnix(QString(argv[2])))));
- printf("Full check: %s\n",
- qPrintable(textForFeatures(featuresForKey(QString(argv[2])))));
- if ( featuresForKey(QString(argv[2])) != 0 )
- printf("Expiry date: %s\n",
- qPrintable(textForDate(decodedExpiryDate(key.mid(9)))));
- } else if ( strcmp(argv[1], "new") == 0 ) {
- uint features = 0;
-
- if ( argc < 3 ) {
- fprintf( stderr, "Usage:\n"
- " mkcode new YYYY-MM-DD [features]\n" );
- exit( EXIT_FAILURE );
- }
-
- QDate expiryDate = QDate::fromString( QString(argv[2]), Qt::ISODate );
- if ( !expiryDate.isValid() ) {
- fprintf( stderr, "Date '%s' not in YYYY-MM-DD format\n", argv[2] );
- exit( EXIT_FAILURE );
- }
-
- for ( int i = 3; i < argc; i++ ) {
- if ( strcmp(argv[i], "-us") == 0 ) {
- features |= Feature_US;
- } else if ( strcmp(argv[i], "-enterprise") == 0 ) {
- features |= Feature_Enterprise;
- } else if ( strcmp(argv[i], "-unix") == 0 ) {
- features |= Feature_Unix;
- } else if ( strcmp(argv[i], "-windows") == 0 ) {
- features |= Feature_Windows;
- } else if ( strcmp(argv[i], "-mac") == 0 ) {
- features |= Feature_Mac;
- } else if ( strcmp(argv[i], "-embedded") == 0 ) {
- features |= Feature_Embedded;
- } else if ( strcmp(argv[i], "-extra1") == 0 ) {
- features |= Feature_Extra1;
- } else if ( strcmp(argv[i], "-extra2") == 0 ) {
- features |= Feature_Extra2;
- } else {
- fprintf( stderr, "Unknown flag '%s'\n", argv[i] );
- exit( EXIT_FAILURE );
- }
- }
- printNewKey( features, expiryDate );
- } else {
- reset();
- }
- return 0;
-}
diff --git a/util/install/mac/licensedlg.ui b/util/install/mac/licensedlg.ui
deleted file mode 100644
index a20bd44..0000000
--- a/util/install/mac/licensedlg.ui
+++ /dev/null
@@ -1,134 +0,0 @@
-<!DOCTYPE UI><UI version="3.0" stdsetdef="1">
-<class>LicenseDialog</class>
-<widget class="QDialog">
- <property name="name">
- <cstring>LicenseDialog</cstring>
- </property>
- <property name="geometry">
- <rect>
- <x>0</x>
- <y>0</y>
- <width>582</width>
- <height>531</height>
- </rect>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>5</hsizetype>
- <vsizetype>5</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="caption">
- <string>License Agreement</string>
- </property>
- <property name="sizeGripEnabled">
- <bool>true</bool>
- </property>
- <vbox>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <property name="margin">
- <number>11</number>
- </property>
- <property name="spacing">
- <number>6</number>
- </property>
- <widget class="QTextView">
- <property name="name">
- <cstring>licenseText</cstring>
- </property>
- <property name="text">
- <string>License text goes here</string>
- </property>
- </widget>
- <widget class="QLayoutWidget">
- <property name="name">
- <cstring>Layout1</cstring>
- </property>
- <hbox>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <property name="margin">
- <number>0</number>
- </property>
- <property name="spacing">
- <number>6</number>
- </property>
- <spacer>
- <property name="name" stdset="0">
- <cstring>Horizontal Spacing2</cstring>
- </property>
- <property name="orientation">
- <enum>Horizontal</enum>
- </property>
- <property name="sizeType">
- <enum>Expanding</enum>
- </property>
- <property name="sizeHint">
- <size>
- <width>20</width>
- <height>20</height>
- </size>
- </property>
- </spacer>
- <widget class="QPushButton">
- <property name="name">
- <cstring>buttonReject</cstring>
- </property>
- <property name="text">
- <string>Reject</string>
- </property>
- <property name="accel">
- <number>0</number>
- </property>
- <property name="autoDefault">
- <bool>true</bool>
- </property>
- <property name="default">
- <bool>true</bool>
- </property>
- </widget>
- <widget class="QPushButton">
- <property name="name">
- <cstring>buttonAccept</cstring>
- </property>
- <property name="text">
- <string>Accept</string>
- </property>
- <property name="accel">
- <number>0</number>
- </property>
- <property name="autoDefault">
- <bool>true</bool>
- </property>
- </widget>
- </hbox>
- </widget>
- </vbox>
-</widget>
-<connections>
- <connection>
- <sender>buttonReject</sender>
- <signal>pressed()</signal>
- <receiver>LicenseDialog</receiver>
- <slot>reject()</slot>
- </connection>
- <connection>
- <sender>buttonAccept</sender>
- <signal>clicked()</signal>
- <receiver>LicenseDialog</receiver>
- <slot>reject()</slot>
- </connection>
- <connection>
- <sender>buttonAccept</sender>
- <signal>pressed()</signal>
- <receiver>LicenseDialog</receiver>
- <slot>accept()</slot>
- </connection>
-</connections>
-<layoutdefaults spacing="6" margin="11"/>
-</UI>
diff --git a/util/install/mac/mac.pro b/util/install/mac/mac.pro
deleted file mode 100644
index ad13bea..0000000
--- a/util/install/mac/mac.pro
+++ /dev/null
@@ -1,11 +0,0 @@
-TEMPLATE = app
-TARGET = unpackage
-mac:TARGET = qt-mac-commercial-3.0.0
-mac:RC_FILE = unpackage.icns
-HEADERS = unpackdlgimpl.h licensedlgimpl.h
-SOURCES = main.cpp unpackdlgimpl.cpp licensedlgimpl.cpp
-INTERFACES += unpackdlg.ui licensedlg.ui
-INCLUDEPATH += ../archive ../keygen
-CONFIG += qt
-unix:LIBS += -L$$QT_BUILD_TREE/util/install/archive -larq
-
diff --git a/util/install/mac/main.cpp b/util/install/mac/main.cpp
deleted file mode 100644
index ede85a6..0000000
--- a/util/install/mac/main.cpp
+++ /dev/null
@@ -1,117 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Qt Software Information (qt-info@nokia.com)
-**
-** This file is part of the utils 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** 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.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at qt-sales@nokia.com.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "unpackdlgimpl.h"
-#include "qarchive.h"
-#include <qapplication.h>
-#include <qdir.h>
-#include <qfileinfo.h>
-
-class ConsoleOutput : public QObject
-{
- Q_OBJECT
-public:
- ConsoleOutput() : QObject() { }
- ~ConsoleOutput() { }
-public slots:
- void updateProgress( const QString& str) { qDebug("%s", str.latin1()); }
-};
-#include "main.moc"
-
-static int usage(const char *argv0, const char *un=NULL) {
- if(un)
- fprintf(stderr, "Unknown command: %s\n", un);
- else
- fprintf(stderr, "Usage:\n");
- fprintf(stderr, "%s [options] files...\n", argv0);
-
- fprintf(stderr, "\nOptions:\n");
- fprintf(stderr, " -k [k] : Use k as the key to open provided files\n");
- fprintf(stderr, " -s : Quiet mode, will not output process\n");
- fprintf(stderr, " -h : This help\n");
- return 665;
-}
-
-int main( int argc, char** argv )
-{
- QString key;
- bool output = true;
- QStringList files;
- QApplication app( argc, argv );
- for(int i = 1; i < argc; i++) {
- //options
- if(!strcmp(argv[i], "-s"))
- output = false;
- else if(!strcmp(argv[i], "-k"))
- key = argv[++i];
- else if(!strcmp(argv[i], "-h"))
- return usage(argv[0]);
- //files
- else if(*(argv[i]) != '-')
- files.append(argv[i]);
- //unknown
- else
- return usage(argv[0], argv[i]);
- }
- if(!files.isEmpty()) {
- QArchive archive;
- ConsoleOutput out;
- QObject::connect( &archive, SIGNAL( operationFeedback( const QString& ) ),
- &out, SLOT( updateProgress( const QString& ) ) );
- if(output)
- archive.setVerbosity( QArchive::Destination | QArchive::Verbose );
- for(QStringList::Iterator it = files.begin(); it != files.end(); ++it) {
- archive.setPath( (*it) );
- if( !archive.open( IO_ReadOnly ) ) {
- qDebug("Failed to open input %s", (*it).latin1());
- continue;
- }
- if(!archive.readArchive( QDir::currentDirPath(), key ))
- qDebug("Failed to unpack %s", (*it).latin1());
- archive.close();
- }
- } else {
- UnpackDlgImpl dlg(key);
- dlg.exec();
- }
- return 0;
-}
-
diff --git a/util/install/mac/unpackage.icns b/util/install/mac/unpackage.icns
deleted file mode 100644
index 20139b9..0000000
--- a/util/install/mac/unpackage.icns
+++ /dev/null
Binary files differ
diff --git a/util/install/mac/unpackdlg.ui b/util/install/mac/unpackdlg.ui
deleted file mode 100644
index ba4898e..0000000
--- a/util/install/mac/unpackdlg.ui
+++ /dev/null
@@ -1,330 +0,0 @@
-<!DOCTYPE UI><UI version="3.0" stdsetdef="1">
-<class>UnpackDlg</class>
-<widget class="QDialog">
- <property name="name">
- <cstring>UnpackDlg</cstring>
- </property>
- <property name="geometry">
- <rect>
- <x>0</x>
- <y>0</y>
- <width>678</width>
- <height>337</height>
- </rect>
- </property>
- <property name="caption">
- <string>Install unpacking tool</string>
- </property>
- <vbox>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <property name="margin">
- <number>11</number>
- </property>
- <property name="spacing">
- <number>6</number>
- </property>
- <widget class="QLayoutWidget">
- <property name="name">
- <cstring>Layout24</cstring>
- </property>
- <hbox>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <property name="margin">
- <number>0</number>
- </property>
- <property name="spacing">
- <number>6</number>
- </property>
- <widget class="QLabel">
- <property name="name">
- <cstring>pixmapLabel</cstring>
- </property>
- <property name="pixmap">
- <pixmap>image0</pixmap>
- </property>
- <property name="scaledContents">
- <bool>false</bool>
- </property>
- <property name="alignment">
- <set>AlignAuto|AlignTop</set>
- </property>
- </widget>
- <widget class="QLayoutWidget">
- <property name="name">
- <cstring>Layout23</cstring>
- </property>
- <vbox>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <property name="margin">
- <number>0</number>
- </property>
- <property name="spacing">
- <number>6</number>
- </property>
- <widget class="QLabel">
- <property name="name">
- <cstring>headerLabel</cstring>
- </property>
- <property name="font">
- <font>
- <bold>1</bold>
- </font>
- </property>
- <property name="text">
- <string>Open Qt/CD Package</string>
- </property>
- </widget>
- <widget class="QLayoutWidget">
- <property name="name">
- <cstring>Layout22</cstring>
- </property>
- <vbox>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <property name="margin">
- <number>0</number>
- </property>
- <property name="spacing">
- <number>6</number>
- </property>
- <widget class="QLayoutWidget">
- <property name="name">
- <cstring>Layout21</cstring>
- </property>
- <vbox>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <property name="margin">
- <number>0</number>
- </property>
- <property name="spacing">
- <number>6</number>
- </property>
- <widget class="QLayoutWidget">
- <property name="name">
- <cstring>Layout19</cstring>
- </property>
- <hbox>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <property name="margin">
- <number>0</number>
- </property>
- <property name="spacing">
- <number>6</number>
- </property>
- <widget class="QLabel">
- <property name="name">
- <cstring>destLabel</cstring>
- </property>
- <property name="text">
- <string>Destination path:</string>
- </property>
- </widget>
- <spacer>
- <property name="name">
- <cstring>Spacer12</cstring>
- </property>
- <property name="orientation">
- <enum>Horizontal</enum>
- </property>
- <property name="sizeType">
- <enum>Fixed</enum>
- </property>
- <property name="sizeHint">
- <size>
- <width>1</width>
- <height>20</height>
- </size>
- </property>
- </spacer>
- <widget class="QLineEdit">
- <property name="name">
- <cstring>destPath</cstring>
- </property>
- </widget>
- <widget class="QPushButton">
- <property name="name">
- <cstring>destButton</cstring>
- </property>
- <property name="text">
- <string></string>
- </property>
- <property name="pixmap">
- <pixmap>image1</pixmap>
- </property>
- </widget>
- </hbox>
- </widget>
- <widget class="QLayoutWidget">
- <property name="name">
- <cstring>Layout20</cstring>
- </property>
- <hbox>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <property name="margin">
- <number>0</number>
- </property>
- <property name="spacing">
- <number>6</number>
- </property>
- <widget class="QLabel">
- <property name="name">
- <cstring>TextLabel1</cstring>
- </property>
- <property name="text">
- <string>License Key:</string>
- </property>
- </widget>
- <spacer>
- <property name="name">
- <cstring>Spacer13</cstring>
- </property>
- <property name="orientation">
- <enum>Horizontal</enum>
- </property>
- <property name="sizeType">
- <enum>Fixed</enum>
- </property>
- <property name="sizeHint">
- <size>
- <width>24</width>
- <height>20</height>
- </size>
- </property>
- </spacer>
- <widget class="QLineEdit">
- <property name="name">
- <cstring>srcKey</cstring>
- </property>
- </widget>
- </hbox>
- </widget>
- </vbox>
- </widget>
- <widget class="QTextView">
- <property name="name">
- <cstring>logOutput</cstring>
- </property>
- </widget>
- <widget class="QLayoutWidget">
- <property name="name">
- <cstring>Layout4</cstring>
- </property>
- <hbox>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <property name="margin">
- <number>0</number>
- </property>
- <property name="spacing">
- <number>6</number>
- </property>
- <spacer>
- <property name="name">
- <cstring>Spacer1</cstring>
- </property>
- <property name="orientation">
- <enum>Horizontal</enum>
- </property>
- <property name="sizeType">
- <enum>Expanding</enum>
- </property>
- <property name="sizeHint">
- <size>
- <width>20</width>
- <height>20</height>
- </size>
- </property>
- </spacer>
- <widget class="QPushButton">
- <property name="name">
- <cstring>unpackButton</cstring>
- </property>
- <property name="text">
- <string>Unpack</string>
- </property>
- </widget>
- <widget class="QPushButton">
- <property name="name">
- <cstring>cancelButton</cstring>
- </property>
- <property name="text">
- <string>Cancel</string>
- </property>
- </widget>
- <spacer>
- <property name="name">
- <cstring>Spacer2</cstring>
- </property>
- <property name="orientation">
- <enum>Horizontal</enum>
- </property>
- <property name="sizeType">
- <enum>Expanding</enum>
- </property>
- <property name="sizeHint">
- <size>
- <width>20</width>
- <height>20</height>
- </size>
- </property>
- </spacer>
- </hbox>
- </widget>
- </vbox>
- </widget>
- </vbox>
- </widget>
- </hbox>
- </widget>
- </vbox>
-</widget>
-<images>
- <image name="image0">
- <data format="XPM.GZ" length="30371">789cdd7c594f23cbb6e6fbf9155b27de8e5a716d8c01abd50f600633786286abfb105366da608cb10dc657fddf7bc51ac269a04e517b975abbbb5096fd919991b1e62122f98f7ffd71db6bfff1affff8c774666603f7872bcccb1ffff2f3d1e8fd3fffeb7ffdf73ffe59ad54fe88c7d646e58f8d7ffe8f7ffc53cdff707fa80afe43dc4f782762a30457f1bc394b18cfab19e34dbebf9730ddff2e98eeb72b4cf74f19efd0fdd6248ce77d5730df5f3076747d6811aef2fc3d3fbfcaf3b123c43b429f794a98e6f72898c7cf12a6f97519f378669430ddaf05f3fd2a61babfc398e9332661ba7f2998ef6f244cf4df0bdea0f33963a6df0e13a6f17605d378be92309ecf64fe8ec653fc3ce15fe8264ce38d198b7c5f18333de18cb1cce736e26a925fa831e6f3d95ec278de6ac134df704f58e6935f0ba6f3ee2561baff5c30d1631e18f37cf384f9fe5dc63c7f25f7f3fc4c9bf0063fdf0e180bfd743ed16b4e09cbf5ca3296eb0d63799e62ccf717680f1b69fcbc9730c9eb5630db5f83318f97df244cfab2c758e4b1245c93f9bd32e6e76533c63c9ea7f934d2f58eb15c7f9f30e9478db1e8f73963b14f7a5e6393c7731b11d7aae9fa2163996f3f611aff96b0dcaf7cc278de7519cbfc91dfb586dcef2784e5fe2c4b18cf177b8299bf0bc64caf9b264cf67c2698ae57323e3fdf2d13a6f9cbf8c28f9384c93e503f37abc25ff3cc58c6d38465bce25030db4b9b318faf2e1226fa2f05b37fb9215c677ee846c244df1be33af3eb4130dd5ff0fcea0dd63ff4a79b46e6af34639e8fa3f99a3af3d7e78cebec8f9a8c793c95254cf2ed0866fb1d11deaa32fde8bfeb1b222f7b40b8eed97eee046f3470fea784b7aa3cfebd60a66f91309d7f124cfea5088c991fe199313f2f3f466c923ce8fa447f7e4578ab5aabe2f88e318f674e12a6f17605d3f39d67ccfc513b8299bf4a305d9f3f32e6f915fb82f9fa8b84495f3a82f9fe82f036f3c7d884c9fff604d3f5d99c31cfdf22ffb622bf895f0709d3f3d279a6f79031df1f3619376a28bf7cc998e71b2e05f3f3657c4fd79b09e134df8560be7e85f1fac0e36fb33cec3861badf0a667d183166fdcd0682999f7dc1cc4f94d7569257a810deaed27cb30ee33acd27ef0a267db1778c797cbd2d98c6f7af09d3787dc1747fd64d18cfab0563d607fb9030f1775f308d1f2e12267eed08e6f15b8477449efb82597ff1feed9ae89f191016f9e81dc6cc6fffc058ec792998edf55130c7ff3bc2f2bc6012c6f9fa53c1345fb3c198e5998784897fcf82f9fa2663e66f2ef7337f3deacbb615f9e409f3f89631cfd70f09efb07db93bc1ac9f26619acf89e04d7c5ede66ccf32d0ac63c1fbbcb58f8f396305eef2682e9fa624ab8c1f2c85e04d3f5f655305d1fd0de776a22ff901396f9fbbb8489ff4782999f3b8c99ff99dccffcf655c144af4dd76f1a9caf8cc7fc0e0973be7c4138cdff50308f7fc258ec6b9f31cb571582f97c3761a207ed6fc726fadf0927fd538c79fcec5430d1137a09233de1867183ce671b09e3f9ec9c31dba7ca05337d6f82e97e759a30deef7705d7b1fecb1e090b3f4c9f31d39b6f3266fad43861d2b71661c3fc35178299bf3709d3f58e31f3a358264cfc467b83f4899f5f78c6a2af81b03ccfdf32167db109133f268299dfe709233f6c87b161792e04d3f9fc8471e0e769c1747d1809a6f1dd3161bbc1f16e2298ed7f85e9fe5dc1ccdf47c65b9ccf5e274cfe50c6dfe27c82e76f0d3f6f2b61b2df84e9fa8cf8e7c41ecc0d63d68f6c4ad8883fda13ccf6dc14ccfabe4818c7d35b82693c2798e3697ecf98f96d3a8c997f393f5ff851d88469fcba60f607b384c91f9c31667e8553c11c2f2682891e7d2198e7e304b3fd1c3166fe9aed84299f7a124ce3eb56c2943fee0be6e79d0ba6e7b903c681f3f1b784291e2e05f3f8bb09537d91eee7f8ba9d308d5f25ec581ff553c2347e5330d733370913ffe47ad647779d30c5b7b960be5f9e27fa87f1c26c8abf7433c2a23ff65930f9a3d04998ecafce98edd96f3236ac2f2f8c597fc21be1646f23c12ccf9384493f9560f687d78c591fc28660badf5f254cfe54c6dfa2fb2dcf4ff4c1e582391e68c1accf321ed3139a09533c180ae6f9ed30667df13e61f20f9960ce2f5dc224cf3bc13c9f743fe98bee09667e0f0433fd8709e3fc4c9570d2af79c2a45f23c1acbfd384e9fc9160b68f76c2c4ff743dfbf715a6f3db82997f45c2383f2df363fdd579c2f47c2598e7e712a6f30bc1ccaf9784499fdf0573bc64fe3bf617fa24611a6f28989f374998e2f9bd60ce876a8c59deea3661b2bf9660d6b746c2647f581f1927f1d1927c92ffcc170993bd9d0b26fb53ef8c99beec4a30eb7f4d305def041b8e0fb70953fc6f0b66fdae0a66fd3e4b98e27385b1c487ad84e9f9424fa0fb0be27ff267619630f1e34830e7871b09533ebf2d98e3f1306192f75830ebdb0ad37cde04d37c8ccc87f5cdbd0a6679bd254cf2ac08e67cbd9e30c5a7749ee6a7bb0953feb414ccf9c8ad609a8f67fe893eaa03c1ac8f0f09537ce909e67e712b61f217f78259bf9a09d37cae04d37cf44dc2649fc78cc57f05c1cc9fab8469be323ff657f99e60eea76c264cfac6fcf6ec8f544530c7e71bc19cdfa17ddb941f1686b0f87ff79830e97b8f31d3afb61326ff742598ef3f12ccfafe9630f9537ebef85f35104cd7ab4dc2e25fb34230fb9f61c2c41f2f98f3a5c098fda1bd4a98f44f09e67cad9630e53b5dc1dcff90e7b1feb9b9608e17fb09933dcb7cc43f1e244cf2d910ccfab897303d7f2c98fd914b98eca32598f9bdc224af07c1ccffe384e97c9db1c4d7f384c91e847fac9fc52c61ea0f3d0ae678b69130f1c70ae67a2b4f98e63f15ccfeee2c61cacf593e9ee36d3e4898e6772598e3e546c2d43f60fa3cfb138ffec27ad14f7bcd38b03e1e0bde227eed124efef34530fbc346c2144faa82d93f7704d378f96dc2e43feb8c59ffb271c294bf5c0be6783c4898fc515f30e7579782b99e3e14ccf9da5430cd47a5eb693ec51b63d657b59f30d99f16ccfdac79c2a40f35c1eccf3705b37c9b0993fe9d32967ae03561ca1f841f520fbc244ce7df05b3fe9d254cfe2017ccfeba2598f3efc38449fe5b8445df7425617a9e17ccf30909933def09e6fa649130e9df8e60f65f078c255f2b12a6e76582b9de68264cfe4b0b667f83f1c9d545dfb21bc6e2bf2f05b33e9a84c9deb61973bcb32782b93e550993bf7e12cccf3f12ccfa9f274cfa95c6a3e7bb016396afad274cf1aa10ccf1789430c59b3dc1ec5f2e1326fb9f08667b6f274cf27e15ccf9cb7dc234df343fe65743f0760dcfcf098bbeb8938469fe6782595f6cc224df8160b697a384c97fb60573fed34998ecfd5030e71bd70993bc8d60a24f6f0a66fd784f98e8ed31667d34d709d37c653cd6c7fe2c613aff2898eb519730e9d3a960b6c7b384c95ed378ec5fb384293fdf124cf4e4321efb2bdf4e98e6b32f98eda796309d7f16ccfe238dc7fd50a19ff53d7f154cf32b8e0573be72c798f5d9cc1226ff89fec3adfc4f5f30cbc3264cf181f897fc85ad264cfa9109667fdf10ccf5c4b6601e7f9830c9fb4030e973088c25ffd182b93eab08e678db4a98e623e38bfc6cc2444f2198edad9b30c9f75830cdd79f254cfe49e89778b32798ede730619acfb360b69fbb8429fff082397f6a264cf97a4d30d713070913ff7605733c95e74b3edf4f98f46d2698fb8b8d8469be3b82d9bfcaf8e2bfb612267e907ec3edecefb0bfe7933fc813a6f986bae01d9477fece98e553bc0866fa9a82595f1e0493be646dc13b16714f706313e77bcc58facb7dc12cff4230f1cfba8469bee97e7a5efe96303e4f093decfffd4c30dbc366c224cf5bc1f47c5711ccf6f64c38883fde17ccfafb2898f5f14930cf4fee97fa09f3691f84defc5270c321be232ce3db4bc17cfd91601abf3fd34a1badfeeca7b6dac1f1f1f36707dd5b3afeea3c50164afbdf7c846f1cf1ba4ce770fca6e7525cfccb3cc94b47fa3d9eb33f91e96f9249fcfc2d72c97581fc2d1ff4fbdf2def9fcae577f024c9c17c3ecae759562bbb1968f73b9eff1bede5a31df84f32fad1f5ae74cfdfc15e4abee947b2e1e3935dfdedece56b1ff599df24a7e2837dfdddec65283e0b3e1ff4236ace28da027eb7681378c4dfc3e7283e9d3f1ffe66f6e2f5931ec3cca22ce4f311a87ad613b689917e81c3027ed6d3f81da90e7ceddfc75e6630434fb3433cd673b48348e1ab7ec3dfd1aca3df5ac031d5ef48d192a9fa3bd98b476d899a3644cba6dfcd35c598b7282bd4b017bdabf79092056b6213cefd8dec05789feb7da022cefa000ecec970f616671ced66a10ff51150d142b944998cf1bee3dfe5cb7e8b5c4e60462738a338eb5398f1996eeb8eeec2ec7bbaafcfe1b8d097fa4a5feb1b7d0bbfbfd3f72897785fe577f9b2df622ffbba0a335260d51bba0633ddd475bda5b7f58e6e28ad9432cac26194535e0595a95c156aa086fa4e81f5abc7ffabf18562b7c4ef726c9798f1aa976aa4bbea498dd5b39ac0ac5fd454cdf098a979e988bf9bc2d957f5a616ea5d2dd5ae3e52d186c287677cf46f3ff577dfb11778c2091c43d564dda71c6aa4f6d5813a54477aac5aea589da85375a6da30db0ece79a6bafcd9537d38e678ac288ac7b9bad0dbea525da96b75a35fd5adbad34f30f654eda97ba0700972ab94ea2255ce2dfe84bd60ac56d5c833a1466d002535fda636e1b3aeb6d4b6da01593460f6f338b85130fb3eccba7cccf1137fe07ccf18a42ad2a38c35ce78bd3001bcb8070fff883ecf81d62a93e9efe414dfb517960b5343779a181b4c6e0a5d370333340f2403a4e4118e11ccb49b6413bfa34ccc53a4847fb4c8c88ccdb399981733057b6b452a805371c631875896e5f117ed252bd90b1d2706ee34733534afe6cd2c505f70e6c86b91c3ec8b036563de8916f8a6cdc82ccd2e52f462f64c13e4b36f0ed05bc7383506591dfe8a1ffb99bd4459c801387ad13773645ae6d89c9853a06004735ac2ff239e6dd4b4b25cc45e84a2a865ac89789c01654b944f5bef988ee9aa163c1ba85107fad1f47e947bffb9f892342b03ef5ba82373a896a6af1b668c1cc5d9e00c4dc96fad66bfb29fd5b9deca76e02752f30ebf07eb31e7e6c25c9a2b98e113cc70887941f69dbcfa3bf6122d5e6462aee1730094dc80ad47ddea1a93ac7d8e728832e927bbd125fb50289fbed9859f25caa7079f4857f4064cfdd4dc9a3b736f2a603773736daa5fd53c7fd25ec47f88dd0c74d76c40f48b966cd8024630ab51b215f155fd0f3f2b5bead12752326759aeec6c666a60399ba60e165f355b9f7a09f9a7f97d3fbe440f1933156fb6cd11c864c734924f026aac260aac688b42ea66e2bb30de4cd9cf81fb055b5fd1d7b3265d471c204fddb6d63ad5b21ef3b5396a9bd14f36fc457b89f12466816f68271bca20254bd479b48028934883cdc04769f9ad9adadc16aa61dacada0148f25c35387ac28f1db2cdf430d64ca3ada1762ae4d05439fb602eeda32ddb6d8d8ebf908f3d42461f7d4ad4ae1ba6e4294a0564429ad5b3620fa8253607ffe6ec931ddb673bb12fc6d9a99dd9b97db56f76616a4015c9a967dfc9ee8d66fbd1384e0fa95dda5d885f475cd5c5fae74162cc47dff66d7b79b37bb12eb44dbb0f163fa3d89e62f99cf88bf612e7d780391cd8437b645bf6580ded896e8307afdb537d6fcf74d7b66dc7766dcff6416630963d8f1187c763ef069862e8d05ed84ba02670f6142bba55bd937f96cbcfecc55ec108efa662afed0df033ca44a34c6e55274615e0e4083406754a4dec9dbdb7155bb51bb666376d5d3f002762351cabe8784ced9699da6d90d70ee46fe7e4b36d2346a8e401a2d67560b4a903057706a889d967ac8106a6f7b117fd4bf632b457ceea6be7209ecc536c8fb1503c30ccc216a611d7df5ce67257c08ceb7ae40668b5944f57b0ff7282f8c51cb8a17b708f6e14a36d1c0dc6eda16f331c69e7400b48d93db9b17bc67a7481f9f473c977adf5dfbe155f208b50c76e824fed925f8a76021683f6e25ee273ddd4cddcdc1e47db72affd191eb1c68cd573dea75ecd10e354cced82ba710bf76e5ba6e3966e173517e502f18af30763306b38777bfade35dd3ed4a447585d7fd187fb81bdace7a040b73b5075c82c16e82b3bc94ae66c231da4e4d01db996adb96377e20edca99ebb33d4ed68b1f3943bc4fa3e56d219c6f337d554f7ae0dd474d0766664779441a36f1c459fe8baae67725b03d9bc60b5fdb1b6ca3fdb0b1e94933eb87e9c01f8ae421dd8ba3b77179839aeb214e05ab49b2813c87227ee522df5a17b5bd365a93b629efdecae8092a1de77d7b15ae8cfb8fb3a7637a0bdb7ee2e5203f9c03bc7a6197be8c7c84177ef2a2013b07ae0d0c3daf8d917f6427ac7311ecfbee293ab1021eb6adb6dc47c9e231965f0e2c71ac6ba9adb3447d88d7883fb3efa981357d74f989d6ec0358faae5b6dcb6dbd1bbaae91afa006475e68171187d7a6b791be70bde78eb9df7baa20e809a3c1e31eeadd5a25fc9c521f67aae6a3ee8579f9942ed407d12a3631fe36017eb14f2c01d9fdba9db744db04abfaec3c9de6af0f43ec8057c982ffcc00fcdb97fd057ba03b50a7a5875e31ffdc83fb1a6f5487b25af032ddbf56337078f32f2cfd47beb539f54f2c4757b59e95d406b7d420d83ac01f85dc7a8d2659e75390644ad9efa897ff150d1629f0b3b4bcc89728f1fb20f5581dfeffa999ffb57ec059c5bebdfa0d66fd93d770df71de96bbf70cb186739cef456725133ffee97906d0e40c324beacf2c47f2317b86292f0a369f95d947e47ea77ce8b418ffd9e6ffa7d7dc8bd2eeef2f178abdc76df1d80262dfc813ff4471851a217797177eec1b7fcb1aef80079560b6473e2f7906b7db61b3c50171afed49f41b63976afe5f59b28971fd80bd1dbc4fe6306b20990ddb521a249cdd8e17ae5318e0f1ab1035eb806a3beeadcb7c1b65eb93f1c3ef4f35fc13676fd9befc48a2766291e46f43ddfd757ae0d9ca8b8aa3f572d90cd05663752ddb06ca2c7f197fe0a28bfc67cccb2adacf56b3eca85fdcb84fac2a607fa7d13bd3f669233ae4f204d8cb49885bfd5b7661be24995ebcd917e4e7139875a872263ec9dd56026775126d6f87ba0a50299c254195f051fd65637a0655011fb0d5f3398aba1ec4729e644cfd6f69ba02375b47ea2866a5e27f9d95a7c117b71c8570ffc3a055b78c6917bab5e0a771d1af6ce0d21b69ff82d8ce9867b282f3c56116b501ef35d5ff96db013a024d53694dbbfd80568da0e7021cab6114015b87f20754e4fea9a604015dd9a0ffb54bf7c8aa3312fae20ed6dbda926907529e9ad48561eadd1de071fc2aaee13df82b5fabe3e8e72018d7021b39590636cefa53c9fabaea8a9ee2e146e07e45bd10f611086e101ad739ee2ff0873804e78f4fb9019e51885b98e11b994ec25acc518879960fc7e1646d187a56cbe97783a855cb8e20ab0c44ac967d138735d094f668becc7b5c3d82ed0e2a977b694aa2cc65ea4c886e710d76580dfe1c56c3acc2ab99f26fd9b1ed6002f7aea4e308f18fd582ea2e3bcb2e0c8a785a9de420fba92c923ca680e75dfa1ad8659085fac41eeebaa6f433d089484cc8dc31c2999c6f824b5096792317e4c6d115ec31b64afc04de3752f2c4c1b3d739f7d18710146b1d16752a6bada37f0d15e42d2f1f87d17b48c74b2e3fba8bdc29f3e575c51c38eec86b6ee15f5777d0df2186af413ec06dec1ccded1a3a74a9a7361c98d63e6d50ecbb0abcf30568cc25e68725f64955bcca94b13f621c68c29bf13fb4e3d22918bec4f21dec61a215e39801c6b0746eda69e17c9e509463d0887e08d69edd1acc513f202d10b6f8571a078b2aa4b34e5c258ffe8c8f3d0b26ffa1c72805dd4fb03530fc75827cd52a48cf97f23d20279d9d0676cfdd223fa185f5672c9d15e9e5d5c8570fa309cacf5ea492e9017db853d0ea7509f288ec3ebebf96390ed9d3f349370861e76c4d9e8aada22cb9e9953bbf0037b165ef400b21cef6277af65261fe4d2a72810da6e6ce6b4729b8eec47f60287c3fa3aae750d744fe9558715e3f163d4319b878e1b834f99637d62573a8bf6f6a8a721f383701429095dee6f18d632d219ccb3cc69e8f937a89e15f790632c72c0fb138ca95ce5518f07fe9f9a5ae8bbc8ede8cbe479c32fea9750f663c09f0cb2c53e752a520f92e5a21ae1dc9eb8377706b9ebf843fc0dfa28ecf9c37011bd46e8a2adcf57f2e0efd12f15e112b470007695e926f67ab0e60cd370156351eaf3cc531c005b0ad72897951ffbaaae74124bd977cff500bed8d298e2913ba66d8e751beaf89c471baa1a64a2b462a7205778f347d89f8db5dbaa53f4245dc068296e37dc845bb0b9f8ec26e8fd84c601ca0ef59569f3733b29fb47efed2ec31dead000e79a7faa5f441ed3241bf2110b7d6907eb7acb5e32ae971c81740bc871e15a7f4ef527d62eefb692e2c988fd955af531639f42f5c37da884aaadc62e2bd635919a3713ab35d050b389b4248fac648dc0860d35c28a2ce6e68a7de75772615a396b8ffb262e14adf890a58a5c80163b05ef48757cd4f327904b0572e1a52ff455c8a91f917afd7d96498f7a9d51f7432d6c86ba83fc0ae49f61a536d1e3b015edc61c85ed923ecc1225605fe638468275b9acd98be4612297b8badd8c7a6f5fd85ee66b7201fee8d8ef7a028d8add8809d4ed077165cef8b01176205b99829dee52fe51f65da9d3ba5473b76b17a1117ca6dd75a6dcb5012b06b92cd51ef8b44b940bd9a9746823771aba0e7975e4f49473f12fea17c9a522addce574516fb10a5bb37efc3cb7737d1f7d9dd4ed99864aebc0bf6506b36a8331fec92ce3ac4526b246063876d267e6c12e329b454f53852a3aae50417e0eb1edda76504729779ba57c3946e829cbc5fec05ec4ffb8642f16f7af1c41ede2d7ec85bec7dee4ab3d83da9ef28421e8fbd4ec43a5c573b0641bd2fbef97ee979e7e0fbd024497ccab56d452b2393d527ba69285d0c23ae99db8881519dc9d65901390bda8926d7f968b4bb4e2dea1e0f4bb7b5081abafa7922f03bd8358dd056f7c021a36027e36a3efcaf2e849e37a0c75c8b9472c3e6cae646d997cfb082bbb76b8cc0a15fbc5b1eb01f9023cb7930d62af9cf3a555be305517d990fc5869cdeeabfa6525972718d9417cddd5b7d90366aca9eec6181cabbc8e6deb26f820a01c7cd93344c60baab4b86fdfe3da6396a2c3aabfd251abd5898e2dcc4656e87bf44b316f18b8b1da89fd25be66657553d7710f1c5fcaf5d65775a54d7e6c14d75c60f46ef6489911d65f31f3884f889588331dd7a44a1a34e4de0f5126ef19d5e71df263e493b15b2c729aa7be1755da5dccc8c6d91368d61862d4abe9857eacfa639f9a7433c5ff69f69c4df451796fed0fea7d5fb21792d1d29e652f54a1336f7b69d5e5458d6d136b4888d9d934c3d5225ecb33680b86b57cce1e6dc9155869ed2c5597e7d91c624aecb32ccd912a40c273a99295746566669cbd8266bfa3bdacf5f3d6e3cb87ded824f62ea1deaf676f7609baab793dbec73d32f0b9d9227b87ba33a0576e674bf0a253dff515f23d7668a81ad6e4b1c23df2b7875c794c3d96b9f428d5b9996443d0835d37771750d38c582fbbc88579b617bd58d8f04558ed39a73ecc677b29d7d04ddc21528b39ab9f664deebeaed61fe77185c2f6ed04eafddd787d063eccda2841388319b1352c8ba853e350c90e541b65d043cdfab0fe8ff9e73968da21d84303fb4a587db15ce2d51de0df5bb0196958d956febd5ce27e87107517e47397b5386b2f5113addf1676273b768bd879028a3aee363b092d8c92185da43e518dec343bcbda5927eecd40aee8b49eb9ea81c61d3f8dac9bf5b27e94a1ea82bd3c81749eb8dee982269c6717e0911e925c065ff4c7a4672972910a0b6a18d5ca2ed38a0279d7a5e4b9ea2cbb72efd8bb0fba65b7dc83b5907b507f4b6ac653d0c56b5b75adec06b2b4f65ac495b57ed65ad0a4dbec2ebb4fde4e5610694de6d4df6615b39d5591eb71be94937d5cafcccb7d798e3539d4ec55fde2c6fe926c99b30feca5609d77ee46b615ed4ac5cab565cf20d3bfc1fc784e76a26cb611c6b1fef475bb9159a4a6c375ea6a5502e41c3f2daf21dbf89dd7a171ad3a7eeff84bbb1d3b4aa02f2bb92c3ef593cbbde4d551c96a66cb5f679b5907fd8ae1ce03ae609977177d703be647591db2ca273dcbb6eca9bb858ab340df14b5700111745b2b739ded649048678d70b956a74aff6b1ebd0266d0144f9e56392073a5611739a457b1f64c75ac43b97c692f5fadd1c2f7766ec01aa7e099240e477fcbeb24666167fa1ad74162edd2f43bee36b77600740c2037b8ca1ddb2079d0fbdce741d68dd2ea395394728bd5aa2e69d83b543b4bdbd135ea11c5fe9bb9ce33ac81eda7fed8bfdb0bb3e7e6507f377005ff4cc9ea1b652173f3e03a61accf621755dd466af2dc1fe64578cd0b7de176f4301f60cd18f3ad984fdce7431b57fa67f9431c09d76ce71f7e66bc262d786a8bfc517720371ee37e67de97f355dcffc97aa5f3ad7c943fc59eb239438f3ac79c8b346266f37c6c3bfe512f6c8027eceb51fe9c4ff2977c9acf207b1fc7da249f47bd066a9af9ab6de66f26faef6959db64f6a55ee58c8fe819cff385b9d2afae1afba0e5b5b75fdc0f6383cbdff325ae26d18e84954fa3194cf35d3f024ddbc5950bf035fa31df833a6317f78a7bcc748690819e00356f20e7f7bc692631b67247efa35c5639f99cc7dfb7d15756f3038c00e26fffc4fa3e2866dd2f9d46be3d96e2367a68dcfb31ce0ffd223f522d3d7655ebb16e1f415d72e5fa9cad56f29699e1ea858218719f0d7d1fb3a325f6db3ec946aaebf89bfc383ff10d57cd4fb117baaa5dfec4fabedf32f3fc2c6fa7ae9d64f39c57c55cd316609daffadae4b8feeeb1e68c4f8b1d9f937c90774026201f57c59a27f65a1a7937ef7177f58b1fee6dcea0fe9ce833983dad1b0cd7d6773ed52f3f5bdf071b98e7fdec5aeff09a56bfbc36127d90c5d565bfe73bf979d0612fee61716fdaab235ac1cd5b489d41b9c41ed8c86ce617f9657e8571eb0b7b419b8433f9757e93df86a95404257bc97fdd5edc993b7067603377f9bda9513ce6b58719c750ac35719744ecc6297f05b54d17eabf297618e23a7e8d570e21f7d683bc12776ee5d5bccb31fe4b4b61aaa05acb376c3b4cf31aae70ad7a969fde79fae67efe870c94df17f9a69f8864d866651db3c73a1ebd9376f7793ddfb2ceb55c966fd37b30aa15ac6dbaa16965d6f4f31dbf0779d78c7a66dca3e5ff45e6c96e629c6ca865cc1fb06f67535cc9b11a34dfb7173d2d347c8ef34aa1cc5d5ce9a748873b2464ef7479271b3c5d5933b437766c0f0b53d8b8a73ff7852b7c5e140122efb9dc93fce267c994f69a9b36d4b147660a5ee309bc89f48c547acfe9dbf1450fb2a3108a4c5b0741ab2828a78abb7153964879f43b579f1df4b610e1a0fe7d80cc14324e13a93bc5a88254f07e1aea03947b2df33599509c891c3bcf16c5c0e4295f5cbdff97ff4a7cc92b51ba50cb8174a192857cd7d3feaeceaa5faf569dc08f3d97d52751bd4499aa5437764be70c57f6eb72e96176709e0db289e9adadef97d7bfbfb7df12ac1577509df9cccc8b61f1503cc60c4d7520475baed6e1d3a1a973b1c220b1f7555d2c14a34c70df56c956cc67b9c40a0f57fd4c3102aeaef6c39472c8efda4bf1640edd1ba4a5afd8d7b7c5389bd85d3354ab370f64cd57e423bb3ffac98ed6f6c2727642f5c957d1fed39e73c84741678be762f2e3f72fbe135fc02bbfe94198e18ade89aeda601f8b177b01c1f701ede691a36757a5fdc93273a89687f0437d8c1eea3ef668d25adb135fc7ab4df9f5ca76d6fa01408d392fa621d3cbd27af52fc7976266afccb68dd1ead5548b79f15abc4134bcb5b3624135e79a5c64c5a4b4237e8dc7e2f7a45b245dc0598cf1c53bbe75f2c18f41ec2fecd2765d139ebbeae5add6e3be6f2feb07af69066f5e6dc5edb92e76034b3ba4d63cacac3ab0ccb8e2ed49bdc2fe2feee19de6c77692df1605afdca4ddbfe0e121532e96c56eecfbb8abd2bcd6d6afbff9bed8873ddbd8c11ee823b793efe5c322147bf8ce08e51dbd354ad67a2ed8555a96282699a1fee4fbf9893e0bdeb66d0f3ba043eccecca21f377be602df9c1bf3be832fdf77feeefb626bc718fb9a0bc82a5aa0bfdda2e9ad1fbb0d7e07866a68b8d036e0476a51a62cfe1e7e4cb60776d3c1cca7e196c57ebeb04ddf88556f981607be1375379e233afd4d7e84fbfb2771cfc5c7daf717e2cbea28d70bf89661dc03696b7925abb87161fc6b71684eb19335fb20978fbe8adf1b330d7f691750fd76a0d28a6ba49043e73575658f7c07f7484c43cb2efd8d3e044af64a7bc6bf7a9fecdbef579679c1fb8da75071c5aea9cba02cd01093ad0bd5bcee5fc3a35de2cef0cf6fbf51be36552fa696358ba3a265b78b634dbbb6a03e811a3ed30fb666a6c5897d500a65728276f2cefb6c3cf661d6de49ff95f8f28907f8562eee9d7cc1b7d30edc89f7902bb57dcbb4f2bedfb72f763fec17a7a16d6a10552de62f0dbf9765eac27582c95ec3866b9a695681fc5bc55c1a2aad83ac1673ab980b63b5362946104fa6d177018e32996325365e9b4fbe2e979fda4be96f8cd0de08de0bfe8c3dc4d81f3bf0cff6d1d68b335ff719e408d3a8156ea896a15fb4dd65d8283af9c84ef3ad6ce81eec76dc091fee62050db1eb153e1f78a6588fe2f717bd28ba6e1fbd70c03d0443f23af4fed89fb4972ffe860856c0633d51b8a21d77a7d13a7ffc1ebd2444d4b8b30d321e9787eb70a74676c3b5ed861a853b5b8bab54402d7720788d4bdebec6bd9eb8a3788cbb8097f15335b1371af7342fb97bbfeecbbe1f5f3efcfd971ffa384b33e3fd2ab2cf6b547a3772fdefc394df975cffbdfba0176bf7fd689ebf602f3ffefb2eb8a383726afc8cbc9d970ea1eed367ead9afafa5acf759fedddfc658c3bff43ef217b259eb8508ef429a256910bdb35fbeaf1caf655fe62aa7b069afc1577f0ba8ac2b097f3bbee45fcac77f88bbab73eb7f2b21603f7efae93e1977d5835cf556567b3ecbfb6cdc9a4e7c8a31dfccc7f28fb25993cb0ffe46d257f1794d8683d55e8f8fcff918db4a357e19af8dfb4db9145ff0bf2cb3affe3eccc7fb0b5d5e4f7022aff535948fbee9836d7c96c9afd5fbf1f3447f5ea359f1245b7b3756d610e327fdd588d21bc072be7c7cf25bf4bc75b9969e9be402d7153decf7ff8abdacf3f48b7764b42af9a2c873c76fedacbfcffc950c3ffba7b2dd7c96fd4a4e701d50b22697efe6c8bf92b77dd4f9ef9effd1f3beb4a1b2effb7e7cf97fe2f84d7f7fec6ff1f9ff955cfef7fffcc7ff011f3a1368</data>
- </image>
- <image name="image1">
- <data format="XPM.GZ" length="1085">789c5dd0cd6ee2301000e03b4f11911b5ad1189290a8da0324a5e90f29941e2aadf6e0d84ea10d1020849ad5befb7a3cceaa29e2e06f663c33ce55cf7a9dcfacde55e758d16acd2cb6a207abc74f9b8dfcf5fbe79f4e97f896fabb8145ba3f3addbec5ac74b715704ed5d9769c01cb73e0423368f80224c190e53e70091c389e83d98366e83942679f0c43cc7e0087c4f3307b63c8b1d559337459c6810f48df137aab49436c750f748917320f78418e4cf65993fa04b33572c4313b067a039f333de80e39e238680ff4d5d2581c69d2c0c3ad8e0db1f30619127cd1dcd00c7a4452824c80a321359d73cd8c129c1b1b0acc726030a414b31299f9989d1952a4d0ccc23073819f861c973c2133d3b904aacf6ceeda9a8c12bc5b219929de21f9005900a99bf9f8e9a8a159728a5477f5d77847367719305373b1788b14668d4c9337d95b2437ef5d03b9c84df10a28fc866fc05c9522fbf0b369c6b8d0c7ffb1fc6db57effb0bfc68acd7657ee0fedba63599dea73d18a7dca525ec6ed3aa16293a81d2bf232beb1bfc578d58a416731ad641da95381b1e3f496ca939432c9f3bb7b8c450f8fb39994b18c93493a36fda2a7b9aa8ae3e4b278b69b192aa822499dc2d6cddc68b94ff697f46c7fdd255ad6f5e2dbdbfac7c3cbd8ecf7f7baf30f538f0154</data>
- </image>
-</images>
-<connections>
- <connection>
- <sender>cancelButton</sender>
- <signal>clicked()</signal>
- <receiver>UnpackDlg</receiver>
- <slot>reject()</slot>
- </connection>
- <connection>
- <sender>destButton</sender>
- <signal>clicked()</signal>
- <receiver>UnpackDlg</receiver>
- <slot>clickedDestButton()</slot>
- </connection>
- <connection>
- <sender>unpackButton</sender>
- <signal>clicked()</signal>
- <receiver>UnpackDlg</receiver>
- <slot>clickedUnpack()</slot>
- </connection>
-</connections>
-<slots>
- <slot>clickedDestButton()</slot>
- <slot>clickedUnpack()</slot>
- <slot>destroy()</slot>
- <slot>init()</slot>
-</slots>
-<layoutdefaults spacing="6" margin="11"/>
-</UI>
diff --git a/util/install/mac/unpackdlgimpl.cpp b/util/install/mac/unpackdlgimpl.cpp
deleted file mode 100644
index 5538f4d..0000000
--- a/util/install/mac/unpackdlgimpl.cpp
+++ /dev/null
@@ -1,200 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Qt Software Information (qt-info@nokia.com)
-**
-** This file is part of the utils 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** 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.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at qt-sales@nokia.com.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-#include "unpackdlgimpl.h"
-#include "licensedlgimpl.h"
-#include "keyinfo.h"
-#include <qdir.h>
-#include <qfiledialog.h>
-#include <qlineedit.h>
-#include <qtextview.h>
-#include <qpushbutton.h>
-#include <qarchive.h>
-#include <qmessagebox.h>
-#include <qregexp.h>
-#include <qapplication.h>
-#include <unistd.h>
-#include <stdlib.h>
-
-UnpackDlgImpl::UnpackDlgImpl( QString key, QWidget* pParent, const char* pName, WindowFlags f ) :
- UnpackDlg( pParent, pName, f )
-{
- destPath->setText( QDir::currentDirPath() );
- if(!key.isNull()) {
- srcKey->setText(key);
- } else if(QFile::exists( QDir::homeDirPath() + "/.qt-license")) {
- QFile lic( QDir::homeDirPath() + "/.qt-license");
- if( lic.open( IO_ReadOnly ) ) {
- QString buffer;
- while( lic.readLine( buffer, 1024 ) != -1 ) {
- if( buffer[ 0 ] != '#' ) {
- QStringList components = QStringList::split( '=', buffer );
- QStringList::Iterator it = components.begin();
- QString key = (*it++).stripWhiteSpace().replace( QRegExp( QString( "\"" ) ), QString() );
- if(key.upper() == "LICENSEKEY") {
- QString value = (*it++).stripWhiteSpace().replace( QRegExp( QString( "\"" ) ), QString() );
- srcKey->setText(value);
- }
- }
- }
- lic.close();
- }
- }
- connect( srcKey, SIGNAL( textChanged( const QString& ) ), this, SLOT( licenseKeyChanged() ) );
- licenseKeyChanged();
- logOutput->setWordWrap( QTextView::WidgetWidth );
- logOutput->setWrapPolicy( QTextView::Anywhere );
-}
-
-void UnpackDlgImpl::clickedDestButton()
-{
- QString dest = QFileDialog::getExistingDirectory( destPath->text(), this, NULL, "Select destination directory" );
- if (!dest.isNull())
- destPath->setText( dest );
-}
-
-void UnpackDlgImpl::clickedUnpack()
-{
- QArchive archive;
- connect( &archive, SIGNAL( operationFeedback( const QString& ) ), this, SLOT( updateProgress( const QString& ) ) );
- connect( &archive, SIGNAL( operationFeedback( int ) ), this, SLOT( updateProgress( int ) ) );
-
- archive.setVerbosity( QArchive::Destination | QArchive::Verbose | QArchive::Progress );
-
- QString dest = destPath->text(), src="qt-mac-commercial-3.0.0.app/Contents/Qt/qtmac.arq";
- if(!dest.isEmpty() && dest.right(1) != "/")
- dest += "/";
- archive.setPath( src );
- if( !archive.open( IO_ReadOnly ) ) {
- QMessageBox::critical( NULL, "Failure", "Failed to open input " + src);
- return;
- } else if(!QFile::exists(dest) ) {
- QDir d;
- if(!d.mkdir(dest)) {
- QMessageBox::critical( NULL, "Failure", "Failed to open directory " + dest);
- return;
- }
- }
- unpackButton->setDisabled( true );
- srcKey->setDisabled( true );
- destPath->setDisabled( true );
- destButton->setDisabled( true );
- LicenseDialogImpl licenseDialog( this );
- if((!licenseDialog.showLicense( featuresForKeyOnUnix( srcKey->text() ) & Feature_US )) ||
- (!licenseDialog.exec())) {
- QMessageBox::critical( NULL, "Failure", "The license agreement was rejected." );
- updateProgress( "License rejected" );
- unpackButton->setDisabled( false );
- srcKey->setDisabled( false );
- destPath->setDisabled( false );
- destButton->setDisabled( false );
- return;
- }
-
- QString srcName = "qt-mac-commercial-3.0.0.app/Contents/Qt/LICENSE";
- QString destName = "/qt-mac-commercial-3.0.0/.LICENSE";
- QString srcName2 = srcName;
- if ( featuresForKeyOnUnix( srcKey->text() ) & Feature_US )
- srcName2 = srcName2 + "-US";
- if((!archive.readArchive( dest, srcKey->text() )) ||
- (!copyFile( srcName, dest + destName )) ||
- (!copyFile( srcName + "-US", dest + destName + "-US" )) ||
- (!copyFile( srcName2, dest + "/qt-mac-commercial-3.0.0/LICENSE" )))
- {
- QMessageBox::critical( NULL, "Failure", "Failed to unpack " + src);
- archive.close();
- }
- else {
- QMessageBox::information( NULL, "Archive unpacked", "Qt has been "
- "extracted to " + dest + "qt-mac-commerical-3.0.0\nPlease read "
- "the INSTALL.macosx file for installation instructions." );
- cancelButton->setText( "Quit" );
- }
-}
-
-bool UnpackDlgImpl::copyFile( const QString& src, const QString& dest )
-{
- int len;
- const int buflen = 4096;
- char buf[buflen];
- QFileInfo info( src );
- QFile srcFile( src ), destFile( dest );
- if (!srcFile.open( IO_ReadOnly ))
- return false;
- destFile.remove();
- if (!destFile.open( IO_WriteOnly )) {
- srcFile.close();
- return false;
- }
- while (!srcFile.atEnd()) {
- len = srcFile.readBlock( buf, buflen );
- if (len <= 0)
- break;
- if (destFile.writeBlock( buf, len ) != len)
- return false;
- }
- destFile.flush();
- return true;
-}
-
-void UnpackDlgImpl::updateProgress( const QString& message )
-{
- logOutput->append( message );
-}
-
-void UnpackDlgImpl::updateProgress( int )
-{
- qApp->processEvents();
-}
-
-void UnpackDlgImpl::licenseKeyChanged()
-{
- QRegExp keyExpr("^....-....-....");
- if ((keyExpr.search( srcKey->text() ) != -1) &&
- (featuresForKey( srcKey->text() ) & Feature_Mac))
- unpackButton->setEnabled( true );
- else
- unpackButton->setEnabled( false );
-}
-
-void UnpackDlgImpl::reject()
-{
- exit( 0 );
-}
diff --git a/util/install/package/main.cpp b/util/install/package/main.cpp
deleted file mode 100644
index 39c71db..0000000
--- a/util/install/package/main.cpp
+++ /dev/null
@@ -1,397 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Qt Software Information (qt-info@nokia.com)
-**
-** This file is part of the utils 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** 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.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at qt-sales@nokia.com.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-#include "qarchive.h"
-#include <qapplication.h>
-#include <qfileinfo.h>
-#include "keyinfo.h"
-#if defined(Q_OS_WIN32)
-#include <windows.h>
-#endif
-
-class ConsoleOutput : public QObject
-{
- Q_OBJECT
-public:
- ConsoleOutput() : QObject() { }
- ~ConsoleOutput() { }
-public slots:
- void updateProgress( const QString& str) { qDebug("%s", str.latin1()); }
-};
-
-static int usage(const char *argv0, const char *un=NULL) {
- if(un)
- fprintf(stderr, "Unknown command: %s\n", un);
- else
- fprintf(stderr, "Usage:\n");
- fprintf(stderr, "%s [options] [keyinfo] files...\n", argv0);
-
- fprintf(stderr, "\nOptions:\n");
- fprintf(stderr, " -o file : Outputs archive to file\n");
- fprintf(stderr, " -n : Follow symbolic links, do not archive the link\n");
- fprintf(stderr, " -s : Quiet mode, will not output process\n");
- fprintf(stderr, " -desc text : Add the description text to the archive (e.g. \"Qt 3.0.0\")\n");
- fprintf(stderr, " -extra k v : Adds the extra value v with the key k to the archive\n");
- fprintf(stderr, " -h : This help\n");
-
- fprintf(stderr, "\nKey Info:\n");
- fprintf(stderr, " -win : Windows Archive\n");
- fprintf(stderr, " -unix : Unix Archive\n");
- fprintf(stderr, " -mac : Mac OS X Archive\n");
- fprintf(stderr, " -embedded : Embedded Archive\n");
-
- fprintf(stderr, "\nThe following options are not for packaging and can't be\n" );
- fprintf(stderr, "combined with the options above or any other option:\n\n" );
- fprintf(stderr, " -unpack file : Unpack the archive file to the current directory\n");
- fprintf(stderr, " -getdesc file : Print the description text of the archive file\n");
- fprintf(stderr, " -getextra k file : Print the extra value for the key k of the archive file\n");
-#if defined(Q_OS_WIN32)
- fprintf(stderr, " -res file1 file2 : Add the archive file1 as the binary resource\n");
- fprintf(stderr, " QT_ARQ to the excutable file2\n");
- fprintf(stderr, " -getres file : Get the binary resource QT_ARQ from the executable\n" );
- fprintf(stderr, " file and store it under qt.arq\n");
- fprintf(stderr, " -namedres RES_NAME file1 file2:\n");
- fprintf(stderr, " Add the file1 as the binary resource\n");
- fprintf(stderr, " RES_NAME to the excutable file2\n");
- fprintf(stderr, " -license LICENSE file2:\n");
- fprintf(stderr, " Add the license LICENSE as the binary resource\n");
- fprintf(stderr, " LICENSE to the excutable file2\n");
- fprintf(stderr, " -license-us LICENSE-US file2:\n");
- fprintf(stderr, " Add the license LICENSE-US as the binary resource\n");
- fprintf(stderr, " LICENSE-US to the excutable file2\n");
-#endif
- return 665;
-}
-
-static int unpack( const char *filename, bool verbose )
-{
- QArchive arq( filename );
- ConsoleOutput output;
- if ( verbose )
- output.connect( &arq, SIGNAL(operationFeedback(const QString&)), SLOT(updateProgress(const QString&)) );
- if ( !arq.open( IO_ReadOnly ) ) {
- fprintf(stderr, "Can't open the archive %s file to unpack", filename);
- return 42;
- }
- if ( !arq.readArchive( ".", "G87A-QJFE-DQF9" ) ) {
- fprintf(stderr, "Couldn't unpack the archive %s", filename);
- return 42;
- }
- return 0;
-}
-
-static int getdesc( const char *filename )
-{
- QArchive arq( filename );
- ConsoleOutput output;
- output.connect( &arq, SIGNAL(operationFeedback(const QString&)), SLOT(updateProgress(const QString&)) );
- if ( !arq.open( IO_ReadOnly ) ) {
- fprintf(stderr, "Can't open the archive %s file to get description", filename);
- return 42;
- }
- QArchiveHeader *header = arq.readArchiveHeader();
- if ( !header ) {
- fprintf(stderr, "Can't find the header in the archive %s file", filename);
- return 42;
- }
- if ( !header->description().isNull() ) {
- fprintf(stdout, header->description().latin1() );
- }
- return 0;
-}
-
-static int getextra( const char *key, const char *filename )
-{
- QArchive arq( filename );
- ConsoleOutput output;
- output.connect( &arq, SIGNAL(operationFeedback(const QString&)), SLOT(updateProgress(const QString&)) );
- if ( !arq.open( IO_ReadOnly ) ) {
- fprintf(stderr, "Can't open the archive %s file to get description", filename);
- return 42;
- }
- QArchiveHeader *header = arq.readArchiveHeader();
- if ( !header ) {
- fprintf(stderr, "Can't find the header in the archive %s file", filename);
- return 42;
- }
- QString extraData = header->findExtraData(key);
- if ( !extraData.isNull() ) {
- fprintf(stdout, extraData.latin1() );
- }
- return 0;
-}
-
-
-int main( int argc, char** argv )
-{
- uint features = 0;
- bool output = true, doSyms = true;
- QString desc;
- QString dest;
- QMap<QString,QString> extra;
-#if defined(Q_OS_WIN32)
- QString arq, exe;
- QString resName;
- bool doRes = false;
- bool doLicense = false;
- bool doLicenseUs = false;
- bool getRes = false;
-#endif
- QStringList files;
- int i;
- for( i = 1; i < argc; i++ ) {
- //options
- if(!strcmp(argv[i], "-o")) {
- if ( ++i < argc )
- dest = argv[i];
- else
- return usage(argv[0]);
- } else if(!strcmp(argv[i], "-n")) {
- doSyms = false;
- } else if(!strcmp(argv[i], "-s")) {
- output = false;
- } else if(!strcmp(argv[i], "-desc")) {
- if ( ++i < argc )
- desc = argv[i];
- else
- return usage(argv[0]);
- } else if(!strcmp(argv[i], "-extra")) {
- QString key, value;
- if ( ++i < argc )
- key = argv[i];
- else
- return usage(argv[0]);
- if ( ++i < argc )
- value = argv[i];
- else
- return usage(argv[0]);
- extra.insert( key, value );
- } else if(!strcmp(argv[i], "-h")) {
- return usage(argv[0]);
- //keyinfo
- } else if(!strcmp(argv[i], "-unix")) {
- features |= Feature_Unix;
- } else if(!strcmp(argv[i], "-win")) {
- features |= Feature_Windows;
- } else if(!strcmp(argv[i], "-mac")) {
- features |= Feature_Mac;
- } else if(!strcmp(argv[i], "-embedded")) {
- features |= Feature_Embedded;
- //unpack
- } else if(!strcmp(argv[i], "-unpack")) {
- if ( ++i < argc )
- return unpack( argv[i], output );
- //getdesc
- } else if(!strcmp(argv[i], "-getdesc")) {
- if ( ++i < argc )
- return getdesc( argv[i] );
- //getextra
- } else if(!strcmp(argv[i], "-getextra")) {
- if ( ++i < argc ) {
- if ( ++i < argc )
- return getextra( argv[i-1], argv[i] );
- }
-#if defined(Q_OS_WIN32)
- //res (Windows only)
- } else if(!strcmp(argv[i], "-res")) {
- doRes = true;
- if ( ++i < argc )
- arq = argv[i];
- if ( ++i < argc )
- exe = argv[i];
- //getres (Windows only)
- } else if(!strcmp(argv[i], "-getres")) {
- getRes = true;
- if ( ++i < argc )
- exe = argv[i];
- //res (Windows only)
- } else if(!strcmp(argv[i], "-namedres")) {
- doRes = true;
- if ( ++i < argc )
- resName = argv[i];
- if ( ++i < argc )
- arq = argv[i];
- if ( ++i < argc )
- exe = argv[i];
- //license (Windows only)
- } else if(!strcmp(argv[i], "-license")) {
- doLicense = true;
- if ( ++i < argc )
- arq = argv[i];
- if ( ++i < argc )
- exe = argv[i];
- //licenseUs (Windows only)
- } else if(!strcmp(argv[i], "-license-us")) {
- doLicenseUs = true;
- if ( ++i < argc )
- arq = argv[i];
- if ( ++i < argc )
- exe = argv[i];
-#endif
- //files
- } else if(*(argv[i]) != '-') {
- files.append(argv[i]);
- //unknown
- } else {
- return usage(argv[0], argv[i]);
- }
- }
-#if defined(Q_OS_WIN32)
- if ( doRes || doLicense || doLicenseUs ) {
- if ( arq.isEmpty() || exe.isEmpty() )
- return usage(argv[0], argv[i]);
- QFile fArq( arq );
- if ( !fArq.open( IO_ReadOnly ) ) {
- if ( doRes ) {
- fprintf(stderr, "Could not open archive %s", arq.latin1() );
- } else {
- fprintf(stderr, "Could not open license %s", arq.latin1() );
- }
- return -1;
- }
- QByteArray ba = fArq.readAll();
- // ignore wide character versions (this is for internal use only)
- HANDLE hExe = BeginUpdateResourceA( exe.latin1(), false );
- if ( hExe == 0 ) {
- fprintf(stderr, "Could not load executable %s\n", exe.latin1() );
- qSystemWarning( "" );
- return -1;
- }
- if ( resName.isEmpty() ) {
- if ( doRes ) {
- resName = "QT_ARQ";
- } else if ( doLicense ){
- resName = "LICENSE";
- } else {
- resName = "LICENSE-US";
- }
- }
- if ( !UpdateResourceA(hExe,RT_RCDATA,resName.latin1(),0,ba.data(),ba.count()) ) {
- EndUpdateResource( hExe, true );
- fprintf(stderr, "Could not update executable %s\n", exe.latin1() );
- qSystemWarning( "" );
- return -1;
- }
- if ( !EndUpdateResource(hExe,false) ) {
- fprintf(stderr, "Could not update executable %s\n", exe.latin1() );
- qSystemWarning( "" );
- return -1;
- }
- return 0;
- }
- if ( getRes ) {
- if ( exe.isEmpty() )
- return usage(argv[0], argv[i]);
- arq = "qt.arq";
- QFile fArq( arq );
- if ( !fArq.open( IO_WriteOnly ) ) {
- fprintf(stderr, "Could not open archive %s\n", arq.latin1() );
- return -1;
- }
- // ignore wide character versions (this is for internal use only)
- HMODULE hExe = LoadLibraryA( exe.latin1() );
- if ( hExe == NULL ) {
- fprintf(stderr, "Could not load executable %s\n", exe.latin1() );
- qSystemWarning( "" );
- return -1;
- }
- HRSRC resource = FindResource( hExe, "QT_ARQ", RT_RCDATA );
- HGLOBAL hglobal = LoadResource( hExe, resource );
- int arSize = SizeofResource( hExe, resource );
- if ( arSize == 0 ) {
- fprintf(stderr, "Could not get size of resource\n" );
- qSystemWarning( "" );
- return -1;
- }
- char *arData = (char*)LockResource( hglobal );
- if ( arData == 0 ) {
- fprintf(stderr, "Could not lock resource\n" );
- qSystemWarning( "" );
- return -1;
- }
- fArq.writeBlock( arData, arSize );
- FreeLibrary( hExe );
- return 0;
- }
-#endif
- if(!files.isEmpty()) {
- if(dest.isEmpty()) {
- qDebug("Please specify an output package");
- return 666;
- }
-
- QArchive archive;
- ConsoleOutput out;
- if(output) {
- QObject::connect( &archive, SIGNAL( operationFeedback( const QString& ) ),
- &out, SLOT( updateProgress( const QString& ) ) );
- archive.setVerbosity( QArchive::Destination | QArchive::Verbose );
- }
- archive.setSymbolicLinks(doSyms);
- archive.setPath( dest );
- if( !archive.open( IO_WriteOnly ) ) {
- qDebug("Failed to open output %s", dest.latin1());
- return 666;
- }
- QArchiveHeader header( features, desc );
- QMap<QString,QString>::Iterator exIt;
- for ( exIt = extra.begin(); exIt != extra.end(); ++exIt ) {
- header.addExtraData( exIt.key(), exIt.data() );
- }
- archive.writeHeader( header );
- for(QStringList::Iterator it = files.begin(); it != files.end(); ++it) {
- QFileInfo f((*it));
- if(!f.exists()) {
- qDebug("Failed to open %s", (*it).latin1());
- continue;
- }
- if(f.isDir())
- archive.writeDir( (*it), true, (*it) );
- else
- archive.writeFile( (*it), (*it) );
- }
- archive.close();
- } else {
- return usage(argv[0]);
- }
- return 0;
-}
-
-#include "main.moc"
diff --git a/util/install/package/package.pro b/util/install/package/package.pro
deleted file mode 100644
index 4edc96e..0000000
--- a/util/install/package/package.pro
+++ /dev/null
@@ -1,25 +0,0 @@
-TEMPLATE = app
-SOURCES = main.cpp
-INCLUDEPATH += ../archive $$QT_SOURCE_TREE/include ../keygen
-CONFIG += qt console
-TARGET = package
-win32:DESTDIR = ../../../bin
-unix:LIBS += -L$$QT_BUILD_TREE/util/install/archive -larq
-win32:LIBS += ../archive/arq.lib
-DEFINES -= UNICODE
-
-win32:!shared:SOURCES += \
- ../../../src/3rdparty/zlib/adler32.c \
- ../../../src/3rdparty/zlib/compress.c \
- ../../../src/3rdparty/zlib/crc32.c \
- ../../../src/3rdparty/zlib/deflate.c \
- ../../../src/3rdparty/zlib/gzio.c \
- ../../../src/3rdparty/zlib/infblock.c \
- ../../../src/3rdparty/zlib/infcodes.c \
- ../../../src/3rdparty/zlib/inffast.c \
- ../../../src/3rdparty/zlib/inflate.c \
- ../../../src/3rdparty/zlib/inftrees.c \
- ../../../src/3rdparty/zlib/infutil.c \
- ../../../src/3rdparty/zlib/trees.c \
- ../../../src/3rdparty/zlib/uncompr.c \
- ../../../src/3rdparty/zlib/zutil.c
diff --git a/util/install/win/archive.cpp b/util/install/win/archive.cpp
deleted file mode 100644
index 81f8e53..0000000
--- a/util/install/win/archive.cpp
+++ /dev/null
@@ -1,115 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Qt Software Information (qt-info@nokia.com)
-**
-** This file is part of the utils 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** 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.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at qt-sales@nokia.com.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-#include "archive.h"
-#include "resource.h"
-#include <qfile.h>
-#include <qmessagebox.h>
-#include <windows.h>
-
-bool addArchive( const QString& name )
-{
- QByteArray ba ;
-
- // Copy the install.exe first, since we can't update our own application
- char aName[512];
- if ( GetModuleFileNameA( 0, aName, 512 ) == 0 ) { // we don't need wide character versions
- QMessageBox::critical( 0,
- "Could not add archive",
- QString( "Could not add archive %1.\n"
- "Could not get the name of the application.").arg(name)
- );
- return false;
- }
- QFile fromFile( aName );
- if ( !fromFile.open( IO_ReadOnly ) ) {
- QMessageBox::critical( 0,
- "Could not add archive",
- QString("Could not copy executable %1.\n").arg(aName)
- );
- return false;
- }
- QString destinationName = name;
- if ( destinationName.right(4) == ".arq" ) {
- destinationName =destinationName.left( destinationName.length()-4 );
- }
- destinationName += ".exe";
- QFile toFile( destinationName );
- if ( !toFile.open( IO_WriteOnly ) ) {
- QMessageBox::critical( 0,
- "Could not add archive",
- QString("Could not copy executable %1 to %2.\n").arg(aName).arg(destinationName)
- );
- return false;
- }
- ba = fromFile.readAll();
- toFile.writeBlock( ba );
- toFile.close();
-
- // load the .arq file
- QFile fArq( name );
- if ( !fArq.open( IO_ReadOnly ) ) {
- QMessageBox::critical( 0,
- "Could not add archive",
- QString("Could not open archive %1.\n").arg(name)
- );
- return false;
- }
- ba = fArq.readAll();
-
- // update the binary res
- ResourceSaver res( destinationName );
- QString errorMsg;
- if ( !res.setData( "QT_ARQ", ba, &errorMsg ) ) {
- QMessageBox::critical( 0,
- "Could not add archive",
- QString("Could not add archive %1.\n").arg(name) + errorMsg
- );
- return false;
- }
-
-#if 0
- QMessageBox::information( 0,
- "Archive added",
- QString("Added the archive %1.\n").arg(name) + errorMsg
- );
-#endif
- return true;
-}
diff --git a/util/install/win/dialogs/folderdlg.ui b/util/install/win/dialogs/folderdlg.ui
deleted file mode 100644
index c5427e2..0000000
--- a/util/install/win/dialogs/folderdlg.ui
+++ /dev/null
@@ -1,184 +0,0 @@
-<!DOCTYPE UI><UI version="3.0" stdsetdef="1">
-<class>FolderDlg</class>
-<widget class="QDialog">
- <property name="name">
- <cstring>FolderDlg</cstring>
- </property>
- <property name="geometry">
- <rect>
- <x>0</x>
- <y>0</y>
- <width>323</width>
- <height>369</height>
- </rect>
- </property>
- <property name="caption">
- <string>Select installation folder</string>
- </property>
- <vbox>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <property name="margin">
- <number>11</number>
- </property>
- <property name="spacing">
- <number>6</number>
- </property>
- <widget class="QListView">
- <column>
- <property name="text">
- <string>Start menu folder tree</string>
- </property>
- <property name="clickable">
- <bool>true</bool>
- </property>
- <property name="resizeable">
- <bool>true</bool>
- </property>
- </column>
- <property name="name">
- <cstring>folderTree</cstring>
- </property>
- </widget>
- <widget class="QLayoutWidget">
- <property name="name">
- <cstring>Layout2</cstring>
- </property>
- <hbox>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <property name="margin">
- <number>0</number>
- </property>
- <property name="spacing">
- <number>6</number>
- </property>
- <widget class="QLabel">
- <property name="name">
- <cstring>nameLabel</cstring>
- </property>
- <property name="text">
- <string>Folder name</string>
- </property>
- </widget>
- <widget class="QLineEdit">
- <property name="name">
- <cstring>folderName</cstring>
- </property>
- </widget>
- </hbox>
- </widget>
- <widget class="QLayoutWidget">
- <property name="name">
- <cstring>Layout1</cstring>
- </property>
- <hbox>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <property name="margin">
- <number>0</number>
- </property>
- <property name="spacing">
- <number>6</number>
- </property>
- <spacer>
- <property name="name" stdset="0">
- <cstring>Spacer1</cstring>
- </property>
- <property name="orientation">
- <enum>Horizontal</enum>
- </property>
- <property name="sizeType">
- <enum>Expanding</enum>
- </property>
- <property name="sizeHint">
- <size>
- <width>20</width>
- <height>20</height>
- </size>
- </property>
- </spacer>
- <widget class="QPushButton">
- <property name="name">
- <cstring>okButton</cstring>
- </property>
- <property name="text">
- <string>Ok</string>
- </property>
- </widget>
- <widget class="QPushButton">
- <property name="name">
- <cstring>cancelButton</cstring>
- </property>
- <property name="text">
- <string>Cancel</string>
- </property>
- </widget>
- <spacer>
- <property name="name" stdset="0">
- <cstring>Spacer2</cstring>
- </property>
- <property name="orientation">
- <enum>Horizontal</enum>
- </property>
- <property name="sizeType">
- <enum>Expanding</enum>
- </property>
- <property name="sizeHint">
- <size>
- <width>20</width>
- <height>20</height>
- </size>
- </property>
- </spacer>
- </hbox>
- </widget>
- </vbox>
-</widget>
-<connections>
- <connection>
- <sender>okButton</sender>
- <signal>clicked()</signal>
- <receiver>FolderDlg</receiver>
- <slot>accept()</slot>
- </connection>
- <connection>
- <sender>cancelButton</sender>
- <signal>clicked()</signal>
- <receiver>FolderDlg</receiver>
- <slot>reject()</slot>
- </connection>
- <connection>
- <sender>folderTree</sender>
- <signal>expanded(QListViewItem*)</signal>
- <receiver>FolderDlg</receiver>
- <slot>expandedDir(QListViewItem*)</slot>
- </connection>
- <connection>
- <sender>folderTree</sender>
- <signal>collapsed(QListViewItem*)</signal>
- <receiver>FolderDlg</receiver>
- <slot>collapsedDir(QListViewItem*)</slot>
- </connection>
- <connection>
- <sender>folderTree</sender>
- <signal>selectionChanged(QListViewItem*)</signal>
- <receiver>FolderDlg</receiver>
- <slot>selectedDir(QListViewItem*)</slot>
- </connection>
- <slot access="public" language="C++">collapsedDir( QListViewItem* )</slot>
- <slot access="protected" language="C++">destroy()</slot>
- <slot access="public" language="C++">expandedDir( QListViewItem* )</slot>
- <slot access="public" language="C++">selectedDir( QListViewItem* )</slot>
- <slot access="protected" language="C++">init()</slot>
-</connections>
-<tabstops>
- <tabstop>folderTree</tabstop>
- <tabstop>folderName</tabstop>
- <tabstop>okButton</tabstop>
- <tabstop>cancelButton</tabstop>
-</tabstops>
-</UI>
diff --git a/util/install/win/dialogs/folderdlgimpl.cpp b/util/install/win/dialogs/folderdlgimpl.cpp
deleted file mode 100644
index 8c3c27f..0000000
--- a/util/install/win/dialogs/folderdlgimpl.cpp
+++ /dev/null
@@ -1,119 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Qt Software Information (qt-info@nokia.com)
-**
-** This file is part of the utils 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** 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.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at qt-sales@nokia.com.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-#include "folderdlgimpl.h"
-#include "../shell.h"
-#include <qlineedit.h>
-#include <qlistview.h>
-#include <qpixmap.h>
-#include <qdir.h>
-
-FolderDlgImpl::FolderDlgImpl( QWidget* parent, const char* name, bool modal, WindowFlags f ) :
- FolderDlg( parent, name, modal, f )
-{
-}
-
-void FolderDlgImpl::setup( QString programsFolder, QString folder )
-{
- folderName->setText( folder );
- if( programsFolder.length() ) {
- QString topLevel = programsFolder.mid( programsFolder.findRev( '\\' ) + 1 );
- QListViewItem* topItem = new QListViewItem( folderTree, topLevel );
- topItem->setOpen( true );
- topItem->setPixmap( 0, *WinShell::getOpenFolderImage() );
-
- ScanFolder( programsFolder, topItem );
-
- }
-}
-
-void FolderDlgImpl::ScanFolder( QString folderPath, QListViewItem* parent )
-{
- QDir folderDir( folderPath );
- folderDir.setFilter( QDir::Dirs );
- folderDir.setSorting( QDir::Name | QDir::IgnoreCase );
- const QFileInfoList* fiList = folderDir.entryInfoList();
- QFileInfoListIterator it( *fiList );
- QFileInfo* fi;
-
- while( ( fi = it.current() ) ) {
- if( fi->fileName()[0] != '.' ) { // Exclude dot-dirs
- QListViewItem* item = new QListViewItem( parent, fi->fileName() );
- item->setOpen( false );
- item->setPixmap( 0, *WinShell::getClosedFolderImage() );
- ScanFolder( fi->absFilePath(), item );
- }
- ++it;
- }
-}
-
-void FolderDlgImpl::expandedDir( QListViewItem* item )
-{
- item->setPixmap( 0, *WinShell::getOpenFolderImage() );
-}
-
-void FolderDlgImpl::collapsedDir( QListViewItem* item )
-{
- item->setPixmap( 0, *WinShell::getClosedFolderImage() );
-}
-
-QString FolderDlgImpl::getFolderName()
-{
- return folderName->text();
-}
-
-/*
-** This will replace the contents of the folderName lineedit widget.
-**
-** The algoritm will traverse the item tree until it gets to the toplevel
-** item, prepending each name to the folder name as it goes
-*/
-void FolderDlgImpl::selectedDir( QListViewItem* item )
-{
- QListViewItem* currentItem = item;
- QString newFolder;
-
- while( currentItem->parent() ) {
- newFolder = currentItem->text( 0 ) + QString( "\\" ) + newFolder;
- currentItem = currentItem->parent();
- }
- newFolder.truncate( newFolder.length() - 1 );
- folderName->setText( newFolder );
-}
diff --git a/util/install/win/environment.cpp b/util/install/win/environment.cpp
deleted file mode 100644
index bbf5719..0000000
--- a/util/install/win/environment.cpp
+++ /dev/null
@@ -1,362 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Qt Software Information (qt-info@nokia.com)
-**
-** This file is part of the utils 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** 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.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at qt-sales@nokia.com.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-#include "environment.h"
-#include <qnamespace.h>
-#include <qfile.h>
-#include <qtextstream.h>
-#include <qfileinfo.h>
-#include <qdir.h>
-#include <qsettings.h>
-#if defined(Q_OS_WIN32)
-#include <windows.h>
-#endif
-#include <stdlib.h>
-#include <string.h>
-#include <errno.h>
-
-QString QEnvironment::getEnv( const QString &varName, int envBlock )
-{
-#if defined(Q_OS_WIN32)
- OSVERSIONINFOA osvi;
- HKEY hkKey;
- bool isWinMe = false;
-
- if( envBlock & GlobalEnv )
- hkKey = HKEY_LOCAL_MACHINE;
- else
- hkKey = HKEY_CURRENT_USER;
-
- osvi.dwOSVersionInfoSize = sizeof( OSVERSIONINFOA );
- GetVersionExA( &osvi );
- if( int( qWinVersion() ) & int( Qt::WV_98 ) ) {
- if( osvi.dwMinorVersion == 90 )
- isWinMe = true;
- }
-
- if( envBlock & PersistentEnv ) {
- if( int( qWinVersion() ) & int( Qt::WV_NT_based ) ) {
- HKEY env;
- QByteArray buffer;
- DWORD size( 0 );
- QString value;
-
- if( RegOpenKeyExW( hkKey, L"Environment", 0, KEY_READ, &env ) == ERROR_SUCCESS ) {
- RegQueryValueExW( env, (const wchar_t*) varName.ucs2(), 0, NULL, NULL, &size );
- buffer.resize( size );
- RegQueryValueExW( env, (const wchar_t*) varName.ucs2(), 0, NULL, (unsigned char*)buffer.data(), &size );
- for( int i = 0; i < ( int )buffer.size(); i += 2 ) {
- QChar c( buffer[ i ], buffer[ i + 1 ] );
- if( !c.isNull() )
- value += c;
- }
- RegCloseKey( env );
- return value;
- }
- else {
- return QString();
- }
- }
- else { // Win 9x
- // Persistent environment on Windows 9x is not fully supported yet.
- return QString( getenv( varName ) );
- }
- }
- if( envBlock & LocalEnv ) {
- if( int( qWinVersion() ) & int( Qt::WV_NT_based ) ) {
- int size = GetEnvironmentVariableW( (TCHAR*)varName.ucs2(), 0, 0 );
- if ( size == 0 )
- return QString();
- TCHAR *data = new TCHAR[ size ];
- GetEnvironmentVariableW( (TCHAR*)varName.ucs2(), data, size );
- QString ret = QString::fromUcs2( data );
- delete[] data;
- return ret;
- } else {
- QCString varNameL = varName.local8Bit();
- int size = GetEnvironmentVariableA( varNameL.data(), 0, 0 );
- if ( size == 0 )
- return QString();
- char *data = new char[ size ];
- GetEnvironmentVariableA( varNameL.data(), data, size );
- QString ret = QString::fromLocal8Bit( data );
- delete[] data;
- return ret;
- }
- }
-#elif defined(Q_OS_UNIX)
-// Persistent environment on Unix is not supported yet.
- if( envBlock & LocalEnv ) {
- return QString( getenv( varName ) );
- }
-#endif
- return QString();
-}
-
-void QEnvironment::putEnv( const QString &varName, const QString &varValue, int envBlock )
-{
-#if defined(Q_OS_WIN32)
- OSVERSIONINFOA osvi;
- HKEY hkKey;
- bool isWinMe = false;
-
- if( envBlock & GlobalEnv )
- hkKey = HKEY_LOCAL_MACHINE;
- else
- hkKey = HKEY_CURRENT_USER;
-
- osvi.dwOSVersionInfoSize = sizeof( OSVERSIONINFOA );
- GetVersionExA( &osvi );
- if( int( qWinVersion() ) & int( Qt::WV_98 ) ) {
- if( osvi.dwMinorVersion == 90 )
- isWinMe = true;
- }
-
- if( envBlock & PersistentEnv ) {
- if( int( qWinVersion() ) & int( Qt::WV_NT_based ) ) {
-
- HKEY env;
- QByteArray buffer;
-
- buffer.resize( varValue.length() * 2 + 2 );
- const QChar *data = varValue.unicode();
- int i;
- for ( i = 0; i < (int)varValue.length(); ++i ) {
- buffer[ 2*i ] = data[ i ].cell();
- buffer[ (2*i)+1 ] = data[ i ].row();
- }
- buffer[ (2*i) ] = 0;
- buffer[ (2*i)+1 ] = 0;
-
- if( RegOpenKeyExW( hkKey, L"Environment", 0, KEY_WRITE, &env ) == ERROR_SUCCESS ) {
- RegSetValueExW( env, (const wchar_t*) varName.ucs2(), 0, REG_EXPAND_SZ, (const unsigned char*)buffer.data(), buffer.size() );
- RegCloseKey( env );
- }
- DWORD res;
- SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, 0, LPARAM("Environment"), SMTO_ABORTIFHUNG | SMTO_BLOCK, 1, &res);
- }
- else { // Win 9x
- QFile autoexec( "c:\\autoexec.bat" );
- QTextStream ostream( &autoexec );
- ostream.setEncoding( QTextStream::Locale );
-
- if( autoexec.open( IO_Append | IO_ReadWrite | IO_Translate ) ) {
- ostream << "set " << varName << "=" << varValue << endl;
- autoexec.close();
- }
- }
- }
- if( envBlock & LocalEnv ) {
- if( int( qWinVersion() ) & int( Qt::WV_NT_based ) ) {
- SetEnvironmentVariableW( (TCHAR*)varName.ucs2(), (const wchar_t*) varValue.ucs2() );
- } else {
- SetEnvironmentVariableA( varName.local8Bit(), varValue.local8Bit() );
- }
- }
-#else
- if( envBlock & LocalEnv )
- setenv( varName, varValue, 1 );
-#endif
-}
-
-void QEnvironment::removeEnv( const QString &varName, int envBlock )
-{
-#if defined(Q_OS_WIN32)
- HKEY hkKey;
- if( envBlock & GlobalEnv )
- hkKey = HKEY_LOCAL_MACHINE;
- else
- hkKey = HKEY_CURRENT_USER;
-
- if( envBlock & PersistentEnv ) {
- if( int( qWinVersion() ) & int( Qt::WV_NT_based ) ) {
- HKEY env;
- if( RegOpenKeyExW( hkKey, L"Environment", 0, KEY_WRITE, &env ) == ERROR_SUCCESS ) {
- RegDeleteValue( env, (const wchar_t*) varName.ucs2() );
- RegCloseKey( env );
- }
- }
- else { // Win 9x
- QFile autoexec( "c:\\autoexec.bat" );
- QTextStream ostream( &autoexec );
- ostream.setEncoding( QTextStream::Locale );
-
- if( autoexec.open( IO_Append | IO_ReadWrite | IO_Translate ) ) {
- ostream << "set " << varName << "=" << endl;
- autoexec.close();
- }
- }
- }
-
- if( envBlock & LocalEnv ) {
- if( int( qWinVersion() ) & int( Qt::WV_NT_based ) ) {
- SetEnvironmentVariableW( (TCHAR*)varName.ucs2(), 0 );
- } else {
- SetEnvironmentVariableA( varName.local8Bit(), 0 );
- }
- }
-#endif
-}
-
-#if defined(Q_OS_WIN32)
-void QEnvironment::recordUninstall( const QString &displayName, const QString &cmdString )
-{
- QSettings settings;
- settings.insertSearchPath(QSettings::Windows, "/Microsoft/Windows/CurrentVersion/Uninstall");
- settings.beginGroup("/" + displayName);
- settings.writeEntry("/DisplayName", displayName);
- settings.writeEntry("/Publisher", "Nokia Corporation and/or its subsidiary(-ies)");
- settings.writeEntry("/URLInfoAbout", "http://qtsoftware.com");
- settings.writeEntry("/HelpLink", "http://qtsoftware.com/support");
- settings.writeEntry("/UninstallString", cmdString);
- settings.endGroup();
-}
-
-void QEnvironment::removeUninstall( const QString &displayName )
-{
- QSettings settings;
- settings.insertSearchPath(QSettings::Windows, "/Microsoft/Windows/CurrentVersion/Uninstall");
- settings.beginGroup("/" + displayName);
- settings.removeEntry("/DisplayName");
- settings.removeEntry("/Publisher");
- settings.removeEntry("/URLInfoAbout");
- settings.removeEntry("/DisplayVersion");
- settings.removeEntry("/HelpLink");
- settings.removeEntry("/UninstallString");
- settings.removeEntry("/.");
- settings.endGroup();
-}
-
-QString QEnvironment::getRegistryString( const QString &keyName, const QString &valueName, int scope )
-{
- QString value;
- HKEY scopeKeys[] = { HKEY_CURRENT_USER, HKEY_LOCAL_MACHINE };
- HKEY key;
- DWORD valueSize( 0 );
- QByteArray buffer, expBuffer;
-
- if( int( qWinVersion() ) & int(Qt::WV_NT_based) ) {
- if( RegOpenKeyExW( scopeKeys[ scope ], (const wchar_t*) keyName.ucs2(), 0, KEY_READ, &key ) == ERROR_SUCCESS ) {
- if( RegQueryValueExW( key, (const wchar_t*) valueName.ucs2(), NULL, NULL, NULL, &valueSize ) == ERROR_SUCCESS ) {
- buffer.resize( valueSize );
- if( RegQueryValueExW( key, (const wchar_t*) valueName.ucs2(), NULL, NULL, (unsigned char*)buffer.data(), &valueSize ) == ERROR_SUCCESS ) {
- valueSize = ExpandEnvironmentStringsW( (WCHAR*)buffer.data(), NULL, 0 );
- expBuffer.resize( valueSize * 2 );
- ExpandEnvironmentStringsW( (WCHAR*)buffer.data(), (WCHAR*)expBuffer.data(), valueSize );
- for( int i = 0; i < ( int )expBuffer.size(); i += 2 ) {
- QChar c( expBuffer[ i ], expBuffer[ i + 1 ] );
- if ( !c.isNull() )
- value += c;
- }
- }
- }
- RegCloseKey( key );
- }
- }
- else {
- if( RegOpenKeyExA( scopeKeys[ scope ], keyName.local8Bit(), 0, KEY_READ, &key ) == ERROR_SUCCESS ) {
- if( RegQueryValueExA( key, valueName.local8Bit(), NULL, NULL, NULL, &valueSize ) == ERROR_SUCCESS ) {
- buffer.resize( valueSize );
- if( RegQueryValueExA( key, valueName.local8Bit(), NULL, NULL, (unsigned char*)buffer.data(), &valueSize ) == ERROR_SUCCESS ) {
- valueSize = ExpandEnvironmentStringsA( buffer.data(), NULL, 0 );
- expBuffer.resize( valueSize );
- ExpandEnvironmentStringsA( buffer.data(), expBuffer.data(), valueSize );
- value = expBuffer.data();
- }
- }
- RegCloseKey( key );
- }
- }
- return value;
-}
-#endif
-
-QString QEnvironment::getTempPath()
-{
-#if defined(Q_OS_WIN32)
- DWORD tmpSize;
- QByteArray tmp;
- QString tmpPath;
-
- if( int( qWinVersion() ) & int( Qt::WV_NT_based ) ) {
- tmpSize = GetTempPathW( 0, NULL );
- tmp.resize( tmpSize * 2 );
- GetTempPathW( tmpSize, (WCHAR*)tmp.data() );
- for( int i = 0; i < ( int )tmp.size(); i += 2 ) {
- QChar c( tmp[ i ], tmp[ i + 1 ] );
- if( !c.isNull() )
- tmpPath += c;
- }
- }
- else {
- tmpSize = GetTempPathA( 0, NULL );
- tmp.resize( tmpSize * 2 );
- GetTempPathA( tmpSize, tmp.data() );
- tmpPath = tmp.data();
- }
-#elif defined(Q_OS_UNIX)
- QString tmpPath = "/tmp";
-#endif
- return tmpPath;
-}
-
-QString QEnvironment::getLastError()
-{
- return strerror( errno );
-}
-
-QString QEnvironment::getFSFileName( const QString& fileName )
-{
-#if defined(Q_OS_WIN32)
- QByteArray buffer( MAX_PATH );
- QString tmp( fileName );
-
- GetVolumeInformationA( fileName.left( fileName.find( '\\' ) + 1 ).local8Bit(), NULL, NULL, NULL, NULL, NULL, buffer.data(), buffer.size() );
- if( QString( buffer.data() ) != "NTFS" ) {
- DWORD dw;
- dw = GetShortPathNameA( fileName.local8Bit(), (char*)buffer.data(), buffer.size() );
- if( dw > 0 )
- tmp = buffer.data();
- }
-#elif defined(Q_OS_UNIX)
- QString tmp( fileName );
-#endif
- return tmp;
-}
diff --git a/util/install/win/environment.h b/util/install/win/environment.h
deleted file mode 100644
index d0f45e4..0000000
--- a/util/install/win/environment.h
+++ /dev/null
@@ -1,73 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Qt Software Information (qt-info@nokia.com)
-**
-** This file is part of the utils 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** 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.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at qt-sales@nokia.com.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-#ifndef ENVIRONMENT_H
-#define ENVIRONMENT_H
-
-#include <qstring.h>
-
-class QEnvironment
-{
-public:
- static QString getEnv( const QString &varName, int envBlock = LocalEnv );
- static void putEnv( const QString &varName, const QString &varValue, int envBlock = LocalEnv );
- static void removeEnv( const QString &varName, int envBlock = LocalEnv );
-#if defined(Q_OS_WIN32)
- static QString getRegistryString( const QString &keyName, const QString &valueName, int scope = CurrentUser );
- static void recordUninstall( const QString &displayName, const QString &cmdString );
- static void removeUninstall( const QString &displayName );
-#endif
- static QString getTempPath();
- static QString getLastError();
- static QString getFSFileName( const QString& fileName );
-
- enum {
- LocalEnv = 1,
- PersistentEnv = 2,
- GlobalEnv = 4
- };
-
- enum {
- CurrentUser = 0,
- LocalMachine = 1
- };
-};
-
-#endif
diff --git a/util/install/win/globalinformation.cpp b/util/install/win/globalinformation.cpp
deleted file mode 100644
index a05db1e..0000000
--- a/util/install/win/globalinformation.cpp
+++ /dev/null
@@ -1,168 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Qt Software Information (qt-info@nokia.com)
-**
-** This file is part of the utils 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** 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.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at qt-sales@nokia.com.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-#include "globalinformation.h"
-
-GlobalInformation::GlobalInformation() :
- _qtVersionStr( QT_VERSION_STR ),
- _reconfig( false )
-{
-#if defined(Q_OS_WIN32)
- _sysId = Other;
-#elif defined(Q_OS_MACX)
- _sysId = MACX;
-#else
- _sysId = MingW32;
-#endif
-}
-
-GlobalInformation::~GlobalInformation()
-{
-}
-
-void GlobalInformation::setReconfig( bool r )
-{
- _reconfig = r;
-}
-
-bool GlobalInformation::reconfig() const
-{
- return _reconfig;
-}
-
-void GlobalInformation::setQtVersionStr( const QString& qvs )
-{
- _qtVersionStr = qvs;
-}
-
-QString GlobalInformation::qtVersionStr() const
-{
- return _qtVersionStr;
-}
-
-#if defined(QSA)
-void GlobalInformation::setQsaVersionStr( const QString& qvs )
-{
- _qsaVersionStr = qvs;
-}
-
-QString GlobalInformation::qsaVersionStr() const
-{
- return _qsaVersionStr;
-}
-#endif
-
-void GlobalInformation::setSysId( SysId s )
-{
- _sysId = s;
-}
-
-GlobalInformation::SysId GlobalInformation::sysId() const
-{
- return _sysId;
-}
-
-QString GlobalInformation::text(Text t) const
-{
- QString str;
-
- switch (_sysId) {
- case MSVC:
- if (t == IDE)
- str = "Microsoft Visual Studio 6.0";
- else if (t == Mkspec)
- str = "win32-msvc";
- else if (t == MakeTool)
- str = "nmake.exe";
- break;
- case MSVCNET:
- if (t == IDE)
- str = "Microsoft Visual Studio .NET";
- else if (t == Mkspec)
- str = "win32-msvc.net";
- else if (t == MakeTool)
- str = "nmake.exe";
- break;
- case Watcom:
- if (t == Mkspec)
- str = "win32-watcom";
- else if (t == MakeTool)
- str = "wmake.exe";
- break;
- case Intel:
- if (t == Mkspec)
- str = "win32-icc";
- else if (t == MakeTool)
- str = "nmake.exe";
- break;
- case GCC:
- if (t == Mkspec)
- str = "win32-g++";
- else if (t == MakeTool)
- str = "gmake.exe";
- break;
- case MACX:
- if (t == Mkspec)
- str = "mac-g++";
- else if (t == MakeTool)
- str = "make";
- break;
- case MinGW:
- if (t == Mkspec)
- str = "win32-g++";
- else if (t == MakeTool)
- str = "mingw32-make.exe";
- break;
- case Borland:
- if (t == Mkspec)
- str = "win32-borland";
- else if (t == MakeTool)
- str = "make.exe";
- break;
- default:
- if (t == Mkspec)
- str = "Custom";
- else if (t == MakeTool)
- str = "make.exe";
- break;
- }
-
- return str;
-}
diff --git a/util/install/win/globalinformation.h b/util/install/win/globalinformation.h
deleted file mode 100644
index 843dac6..0000000
--- a/util/install/win/globalinformation.h
+++ /dev/null
@@ -1,93 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Qt Software Information (qt-info@nokia.com)
-**
-** This file is part of the utils 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** 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.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at qt-sales@nokia.com.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-#ifndef GLOBALINFORMATION_H
-#define GLOBALINFORMATION_H
-#include <qstring.h>
-
-class GlobalInformation
-{
-public:
- GlobalInformation();
- ~GlobalInformation();
-
- void setReconfig( bool );
- bool reconfig() const;
- void setQtVersionStr( const QString& );
- QString qtVersionStr() const;
-#if defined(QSA)
- void setQsaVersionStr( const QString& );
- QString qsaVersionStr() const;
-#endif
-
- enum SysId {
- MSVCNET = 0,
- MSVC = 1,
- Borland = 2,
- MinGW = 3,
- Other = 4,
- Watcom = 5,
- Intel = 6,
- GCC = 7,
- MACX = 8
- };
- void setSysId( SysId );
- SysId sysId() const;
-
- enum Text {
- MakeTool,
- IDE,
- Mkspec
- };
-
- QString text(Text t) const;
-
-private:
- bool _reconfig;
- QString _qtVersionStr;
-#if defined(QSA)
- QString _qsaVersionStr;
-#endif
- SysId _sysId;
-};
-
-extern GlobalInformation globalInformation;
-
-#endif // GLOBALINFORMATION_H
diff --git a/util/install/win/install-edu.rc b/util/install/win/install-edu.rc
deleted file mode 100644
index 3e50c1c..0000000
--- a/util/install/win/install-edu.rc
+++ /dev/null
@@ -1,3 +0,0 @@
-IDI_ICON1 ICON DISCARDABLE "install.ico"
-LICENSE RCDATA "../../../dist/edu/LICENSE"
-QT_ARQ RCDATA "qt.arq"
diff --git a/util/install/win/install-eval.rc b/util/install/win/install-eval.rc
deleted file mode 100644
index 78f0477..0000000
--- a/util/install/win/install-eval.rc
+++ /dev/null
@@ -1,3 +0,0 @@
-IDI_ICON1 ICON DISCARDABLE "install.ico"
-LICENSE RCDATA "../../../dist/trial/LICENSE"
-QT_ARQ RCDATA "qt.arq"
diff --git a/util/install/win/install-noncommercial.rc b/util/install/win/install-noncommercial.rc
deleted file mode 100644
index b7d5b7c..0000000
--- a/util/install/win/install-noncommercial.rc
+++ /dev/null
@@ -1,4 +0,0 @@
-IDI_ICON1 ICON DISCARDABLE "install.ico"
-LICENSE RCDATA "../../../dist/noncommercial/LICENSE"
-LICENSE-US RCDATA "../../../dist/noncommercial/LICENSE-US"
-QT_ARQ RCDATA "qt.arq"
diff --git a/util/install/win/install-qsa.rc b/util/install/win/install-qsa.rc
deleted file mode 100644
index f971c3f..0000000
--- a/util/install/win/install-qsa.rc
+++ /dev/null
@@ -1,5 +0,0 @@
-IDI_ICON1 ICON DISCARDABLE "install.ico"
-LICENSE RCDATA "../../../dist/trial/LICENSE"
-LICENSE_QSA RCDATA "../../../../qsa/dist/eval/LICENSE.EVAL"
-QT_ARQ RCDATA "qt.arq"
-QSA_ARQ RCDATA "qt.arq"
diff --git a/util/install/win/install.ico b/util/install/win/install.ico
deleted file mode 100644
index b996fb7..0000000
--- a/util/install/win/install.ico
+++ /dev/null
Binary files differ
diff --git a/util/install/win/install.rc b/util/install/win/install.rc
deleted file mode 100644
index 321c245..0000000
--- a/util/install/win/install.rc
+++ /dev/null
@@ -1,4 +0,0 @@
-IDI_ICON1 ICON DISCARDABLE "install.ico"
-LICENSE RCDATA "../../../dist/commercial/LICENSE"
-LICENSE-US RCDATA "../../../dist/commercial/LICENSE-US"
-QT_ARQ RCDATA "qt.arq"
diff --git a/util/install/win/main.cpp b/util/install/win/main.cpp
deleted file mode 100644
index 0c21523..0000000
--- a/util/install/win/main.cpp
+++ /dev/null
@@ -1,100 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Qt Software Information (qt-info@nokia.com)
-**
-** This file is part of the utils 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** 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.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at qt-sales@nokia.com.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-#include <qapplication.h>
-#include <qmessagebox.h>
-#include "setupwizardimpl.h"
-#include "resource.h"
-#include "globalinformation.h"
-#include "environment.h"
-
-#if defined Q_OS_WIN32
-#include "archive.h"
-#endif
-
-GlobalInformation globalInformation;
-SetupWizardImpl *wizard = 0;
-
-int main( int argc, char** argv )
-{
- QApplication app( argc, argv );
- int res( -1 );
-
- for( int i = 0; i < app.argc(); i++ ) {
- if( QString( app.argv()[i] ) == "-reconfig" ) {
- globalInformation.setReconfig( true );
-
- QString qmakespec = QEnvironment::getEnv( "QMAKESPEC" );
- for (int mks = 0; mks <= GlobalInformation::MACX; ++mks) {
- if (globalInformation.text(GlobalInformation::Mkspec) == qmakespec) {
- globalInformation.setSysId((GlobalInformation::SysId)mks);
- break;
- }
- }
-
- if ( ++i < app.argc() ) {
- globalInformation.setQtVersionStr( app.argv()[i] );
- }
- break;
-#if defined(Q_OS_WIN32)
- } else if ( QString( app.argv()[i] ) == "-add-archive" ) {
- // -add-archive is an internal option to add the
- // binary resource QT_ARQ
- if ( ++i < app.argc() ) {
- if ( addArchive( app.argv()[i] ) )
- return 0;
- }
- return res;
-#endif
- }
- }
-
- wizard = new SetupWizardImpl( 0, 0, false, Qt::WStyle_NormalBorder | Qt::WStyle_Customize | Qt::WStyle_MinMax | Qt::WStyle_SysMenu | Qt::WStyle_Title );
- wizard->show();
-
- app.setMainWidget( wizard );
- res = app.exec();
-
- wizard->stopProcesses();
-
- //### memory leak
-
- return res;
-}
diff --git a/util/install/win/pages/buildpage.ui b/util/install/win/pages/buildpage.ui
deleted file mode 100644
index 0ab4965..0000000
--- a/util/install/win/pages/buildpage.ui
+++ /dev/null
@@ -1,92 +0,0 @@
-<!DOCTYPE UI><UI version="3.2" stdsetdef="1">
-<class>BuildPage</class>
-<widget class="QWidget">
- <property name="name">
- <cstring>BuildPage</cstring>
- </property>
- <property name="geometry">
- <rect>
- <x>0</x>
- <y>0</y>
- <width>462</width>
- <height>276</height>
- </rect>
- </property>
- <property name="caption">
- <string>Form11</string>
- </property>
- <hbox>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <property name="margin">
- <number>11</number>
- </property>
- <property name="spacing">
- <number>6</number>
- </property>
- <widget class="QLayoutWidget">
- <property name="name">
- <cstring>layout13</cstring>
- </property>
- <vbox>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <widget class="QTextView">
- <property name="name">
- <cstring>outputDisplay</cstring>
- </property>
- <property name="font">
- <font>
- <family>Courier</family>
- </font>
- </property>
- <property name="vScrollBarMode">
- <enum>AlwaysOn</enum>
- </property>
- <property name="hScrollBarMode">
- <enum>AlwaysOn</enum>
- </property>
- <property name="textFormat">
- <enum>LogText</enum>
- </property>
- <property name="wordWrap">
- <enum>NoWrap</enum>
- </property>
- <property name="autoFormatting">
- <set>AutoNone</set>
- </property>
- </widget>
- <widget class="QLayoutWidget">
- <property name="name">
- <cstring>layout12</cstring>
- </property>
- <hbox>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <widget class="QProgressBar">
- <property name="name">
- <cstring>compileProgress</cstring>
- </property>
- <property name="percentageVisible">
- <bool>false</bool>
- </property>
- </widget>
- <widget class="QPushButton">
- <property name="name">
- <cstring>restartBuild</cstring>
- </property>
- <property name="text">
- <string>&lt;Replace&gt;</string>
- </property>
- </widget>
- </hbox>
- </widget>
- </vbox>
- </widget>
- </hbox>
-</widget>
-<layoutdefaults spacing="6" margin="11"/>
-</UI>
diff --git a/util/install/win/pages/configpage.ui b/util/install/win/pages/configpage.ui
deleted file mode 100644
index 8223d8e..0000000
--- a/util/install/win/pages/configpage.ui
+++ /dev/null
@@ -1,474 +0,0 @@
-<!DOCTYPE UI><UI version="3.0" stdsetdef="1">
-<class>ConfigPage</class>
-<widget class="QWidget">
- <property name="name">
- <cstring>ConfigPage</cstring>
- </property>
- <property name="geometry">
- <rect>
- <x>0</x>
- <y>0</y>
- <width>460</width>
- <height>284</height>
- </rect>
- </property>
- <property name="caption">
- <string>Form9</string>
- </property>
- <hbox>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <property name="margin">
- <number>11</number>
- </property>
- <property name="spacing">
- <number>6</number>
- </property>
- <widget class="QLayoutWidget">
- <property name="name">
- <cstring>Layout3</cstring>
- </property>
- <grid>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <property name="margin">
- <number>0</number>
- </property>
- <property name="spacing">
- <number>6</number>
- </property>
- <widget class="QCheckBox" row="1" column="3">
- <property name="name">
- <cstring>rebuildInstallation</cstring>
- </property>
- <property name="text">
- <string>Rebuild Qt after reconfiguration</string>
- </property>
- <property name="checked">
- <bool>true</bool>
- </property>
- </widget>
- <widget class="QTextView" row="0" column="2" rowspan="1" colspan="2">
- <property name="name">
- <cstring>explainOption</cstring>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>5</hsizetype>
- <vsizetype>5</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>200</width>
- <height>0</height>
- </size>
- </property>
- <property name="palette">
- <palette>
- <active>
- <color>
- <red>0</red>
- <green>0</green>
- <blue>0</blue>
- </color>
- <color>
- <red>212</red>
- <green>208</green>
- <blue>200</blue>
- </color>
- <color>
- <red>255</red>
- <green>255</green>
- <blue>255</blue>
- </color>
- <color>
- <red>233</red>
- <green>231</green>
- <blue>227</blue>
- </color>
- <color>
- <red>106</red>
- <green>104</green>
- <blue>100</blue>
- </color>
- <color>
- <red>141</red>
- <green>138</green>
- <blue>133</blue>
- </color>
- <color>
- <red>0</red>
- <green>0</green>
- <blue>0</blue>
- </color>
- <color>
- <red>255</red>
- <green>255</green>
- <blue>255</blue>
- </color>
- <color>
- <red>0</red>
- <green>0</green>
- <blue>0</blue>
- </color>
- <color>
- <red>212</red>
- <green>208</green>
- <blue>200</blue>
- </color>
- <color>
- <red>212</red>
- <green>208</green>
- <blue>200</blue>
- </color>
- <color>
- <red>0</red>
- <green>0</green>
- <blue>0</blue>
- </color>
- <color>
- <red>10</red>
- <green>36</green>
- <blue>106</blue>
- </color>
- <color>
- <red>255</red>
- <green>255</green>
- <blue>255</blue>
- </color>
- <color>
- <red>0</red>
- <green>0</green>
- <blue>255</blue>
- </color>
- <color>
- <red>255</red>
- <green>0</green>
- <blue>255</blue>
- </color>
- </active>
- <disabled>
- <color>
- <red>128</red>
- <green>128</green>
- <blue>128</blue>
- </color>
- <color>
- <red>212</red>
- <green>208</green>
- <blue>200</blue>
- </color>
- <color>
- <red>255</red>
- <green>255</green>
- <blue>255</blue>
- </color>
- <color>
- <red>243</red>
- <green>239</green>
- <blue>230</blue>
- </color>
- <color>
- <red>106</red>
- <green>104</green>
- <blue>100</blue>
- </color>
- <color>
- <red>141</red>
- <green>138</green>
- <blue>133</blue>
- </color>
- <color>
- <red>0</red>
- <green>0</green>
- <blue>0</blue>
- </color>
- <color>
- <red>255</red>
- <green>255</green>
- <blue>255</blue>
- </color>
- <color>
- <red>128</red>
- <green>128</green>
- <blue>128</blue>
- </color>
- <color>
- <red>212</red>
- <green>208</green>
- <blue>200</blue>
- </color>
- <color>
- <red>212</red>
- <green>208</green>
- <blue>200</blue>
- </color>
- <color>
- <red>0</red>
- <green>0</green>
- <blue>0</blue>
- </color>
- <color>
- <red>10</red>
- <green>36</green>
- <blue>106</blue>
- </color>
- <color>
- <red>255</red>
- <green>255</green>
- <blue>255</blue>
- </color>
- <color>
- <red>0</red>
- <green>0</green>
- <blue>255</blue>
- </color>
- <color>
- <red>255</red>
- <green>0</green>
- <blue>255</blue>
- </color>
- </disabled>
- <inactive>
- <color>
- <red>0</red>
- <green>0</green>
- <blue>0</blue>
- </color>
- <color>
- <red>212</red>
- <green>208</green>
- <blue>200</blue>
- </color>
- <color>
- <red>255</red>
- <green>255</green>
- <blue>255</blue>
- </color>
- <color>
- <red>243</red>
- <green>239</green>
- <blue>230</blue>
- </color>
- <color>
- <red>106</red>
- <green>104</green>
- <blue>100</blue>
- </color>
- <color>
- <red>141</red>
- <green>138</green>
- <blue>133</blue>
- </color>
- <color>
- <red>0</red>
- <green>0</green>
- <blue>0</blue>
- </color>
- <color>
- <red>255</red>
- <green>255</green>
- <blue>255</blue>
- </color>
- <color>
- <red>0</red>
- <green>0</green>
- <blue>0</blue>
- </color>
- <color>
- <red>212</red>
- <green>208</green>
- <blue>200</blue>
- </color>
- <color>
- <red>212</red>
- <green>208</green>
- <blue>200</blue>
- </color>
- <color>
- <red>0</red>
- <green>0</green>
- <blue>0</blue>
- </color>
- <color>
- <red>10</red>
- <green>36</green>
- <blue>106</blue>
- </color>
- <color>
- <red>255</red>
- <green>255</green>
- <blue>255</blue>
- </color>
- <color>
- <red>0</red>
- <green>0</green>
- <blue>255</blue>
- </color>
- <color>
- <red>255</red>
- <green>0</green>
- <blue>255</blue>
- </color>
- </inactive>
- </palette>
- </property>
- </widget>
- <widget class="QLabel" row="1" column="0">
- <property name="name">
- <cstring>currentInstLabel</cstring>
- </property>
- <property name="text">
- <string>Active Qt installation</string>
- </property>
- </widget>
- <widget class="QLabel" row="1" column="1" rowspan="1" colspan="2">
- <property name="name">
- <cstring>currentInstallation</cstring>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>7</hsizetype>
- <vsizetype>1</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="frameShape">
- <enum>StyledPanel</enum>
- </property>
- <property name="frameShadow">
- <enum>Sunken</enum>
- </property>
- <property name="text">
- <string></string>
- </property>
- </widget>
- <widget class="QTabWidget" row="0" column="0" rowspan="1" colspan="2">
- <property name="name">
- <cstring>configTabs</cstring>
- </property>
- <widget class="QWidget">
- <property name="name">
- <cstring>installTab</cstring>
- </property>
- <attribute name="title">
- <string>Install</string>
- </attribute>
- <vbox>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <property name="margin">
- <number>11</number>
- </property>
- <property name="spacing">
- <number>6</number>
- </property>
- <widget class="QListView">
- <column>
- <property name="text">
- <string>Installation options</string>
- </property>
- <property name="clickable">
- <bool>true</bool>
- </property>
- <property name="resizeable">
- <bool>false</bool>
- </property>
- </column>
- <property name="name">
- <cstring>installList</cstring>
- </property>
- </widget>
- </vbox>
- </widget>
- <widget class="QWidget">
- <property name="name">
- <cstring>generalTab</cstring>
- </property>
- <attribute name="title">
- <string>General</string>
- </attribute>
- <grid>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <property name="margin">
- <number>11</number>
- </property>
- <property name="spacing">
- <number>6</number>
- </property>
- <widget class="QListView" row="0" column="0">
- <column>
- <property name="text">
- <string>Qt Library configuration</string>
- </property>
- <property name="clickable">
- <bool>true</bool>
- </property>
- <property name="resizeable">
- <bool>false</bool>
- </property>
- </column>
- <property name="name">
- <cstring>configList</cstring>
- </property>
- </widget>
- </grid>
- </widget>
- <widget class="QWidget">
- <property name="name">
- <cstring>advancedTab</cstring>
- </property>
- <attribute name="title">
- <string>Advanced</string>
- </attribute>
- <hbox>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <property name="margin">
- <number>11</number>
- </property>
- <property name="spacing">
- <number>6</number>
- </property>
- <widget class="QListView">
- <column>
- <property name="text">
- <string>Advanced options</string>
- </property>
- <property name="clickable">
- <bool>true</bool>
- </property>
- <property name="resizeable">
- <bool>true</bool>
- </property>
- </column>
- <property name="name">
- <cstring>advancedList</cstring>
- </property>
- </widget>
- </hbox>
- </widget>
- </widget>
- </grid>
- </widget>
- </hbox>
-</widget>
-<tabstops>
- <tabstop>configTabs</tabstop>
- <tabstop>configList</tabstop>
- <tabstop>explainOption</tabstop>
- <tabstop>rebuildInstallation</tabstop>
- <tabstop>advancedList</tabstop>
-</tabstops>
-<layoutdefaults spacing="6" margin="11"/>
-</UI>
diff --git a/util/install/win/pages/finishpage.ui b/util/install/win/pages/finishpage.ui
deleted file mode 100644
index de6b5f7..0000000
--- a/util/install/win/pages/finishpage.ui
+++ /dev/null
@@ -1,63 +0,0 @@
-<!DOCTYPE UI><UI version="3.0" stdsetdef="1">
-<class>FinishPage</class>
-<widget class="QWidget">
- <property name="name">
- <cstring>FinishPage</cstring>
- </property>
- <property name="geometry">
- <rect>
- <x>0</x>
- <y>0</y>
- <width>444</width>
- <height>284</height>
- </rect>
- </property>
- <property name="caption">
- <string>Form12</string>
- </property>
- <hbox>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <property name="margin">
- <number>11</number>
- </property>
- <property name="spacing">
- <number>6</number>
- </property>
- <widget class="QLayoutWidget">
- <property name="name">
- <cstring>Layout1</cstring>
- </property>
- <vbox>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <property name="margin">
- <number>0</number>
- </property>
- <property name="spacing">
- <number>6</number>
- </property>
- <widget class="QTextView">
- <property name="name">
- <cstring>finishText</cstring>
- </property>
- </widget>
- <widget class="QCheckBox">
- <property name="name">
- <cstring>showReadmeCheck</cstring>
- </property>
- <property name="text">
- <string>Show README file</string>
- </property>
- <property name="checked">
- <bool>true</bool>
- </property>
- </widget>
- </vbox>
- </widget>
- </hbox>
-</widget>
-<layoutdefaults spacing="6" margin="11"/>
-</UI>
diff --git a/util/install/win/pages/folderspage.ui b/util/install/win/pages/folderspage.ui
deleted file mode 100644
index ada15f7..0000000
--- a/util/install/win/pages/folderspage.ui
+++ /dev/null
@@ -1,259 +0,0 @@
-<!DOCTYPE UI><UI version="3.0" stdsetdef="1">
-<class>FoldersPage</class>
-<widget class="QWidget">
- <property name="name">
- <cstring>FoldersPage</cstring>
- </property>
- <property name="geometry">
- <rect>
- <x>0</x>
- <y>0</y>
- <width>443</width>
- <height>284</height>
- </rect>
- </property>
- <property name="caption">
- <string>Form8</string>
- </property>
- <hbox>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <property name="margin">
- <number>11</number>
- </property>
- <property name="spacing">
- <number>6</number>
- </property>
- <widget class="QLayoutWidget">
- <property name="name">
- <cstring>Layout15</cstring>
- </property>
- <grid>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <property name="margin">
- <number>0</number>
- </property>
- <property name="spacing">
- <number>6</number>
- </property>
- <widget class="QGroupBox" row="0" column="0">
- <property name="name">
- <cstring>folderBox</cstring>
- </property>
- <property name="title">
- <string>Folders and paths</string>
- </property>
- <grid>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <property name="margin">
- <number>11</number>
- </property>
- <property name="spacing">
- <number>6</number>
- </property>
- <widget class="QLabel" row="0" column="0">
- <property name="name">
- <cstring>folderLabel</cstring>
- </property>
- <property name="text">
- <string>Program &amp;folder</string>
- </property>
- <property name="buddy" stdset="0">
- <cstring>folderPath</cstring>
- </property>
- </widget>
- <widget class="QLayoutWidget" row="0" column="1" rowspan="1" colspan="2">
- <property name="name">
- <cstring>Layout2</cstring>
- </property>
- <hbox>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <property name="margin">
- <number>0</number>
- </property>
- <property name="spacing">
- <number>6</number>
- </property>
- <widget class="QLineEdit">
- <property name="name">
- <cstring>folderPath</cstring>
- </property>
- <property name="frameShape">
- <enum>StyledPanel</enum>
- </property>
- <property name="frameShadow">
- <enum>Sunken</enum>
- </property>
- </widget>
- <widget class="QPushButton">
- <property name="name">
- <cstring>folderPathButton</cstring>
- </property>
- <property name="text">
- <string></string>
- </property>
- <property name="pixmap">
- <pixmap>image0</pixmap>
- </property>
- </widget>
- </hbox>
- </widget>
- <widget class="QLabel" row="1" column="0">
- <property name="name">
- <cstring>qtDirLabel</cstring>
- </property>
- <property name="text">
- <string>Set &amp;QTDIR</string>
- </property>
- <property name="buddy" stdset="0">
- <cstring>qtDirCheck</cstring>
- </property>
- </widget>
- <widget class="QLabel" row="2" column="0">
- <property name="name">
- <cstring>devSysLabel</cstring>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>5</hsizetype>
- <vsizetype>1</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="text">
- <string>&amp;Path</string>
- </property>
- <property name="buddy" stdset="0">
- <cstring>devSysPath</cstring>
- </property>
- </widget>
- <widget class="QLayoutWidget" row="2" column="1" rowspan="1" colspan="2">
- <property name="name">
- <cstring>Layout3</cstring>
- </property>
- <hbox>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <property name="margin">
- <number>0</number>
- </property>
- <property name="spacing">
- <number>6</number>
- </property>
- <widget class="QLineEdit">
- <property name="name">
- <cstring>devSysPath</cstring>
- </property>
- </widget>
- <widget class="QPushButton">
- <property name="name">
- <cstring>devSysPathButton</cstring>
- </property>
- <property name="text">
- <string></string>
- </property>
- <property name="pixmap">
- <pixmap>image0</pixmap>
- </property>
- </widget>
- </hbox>
- </widget>
- <widget class="QLabel" row="3" column="0">
- <property name="name">
- <cstring>groupLabel</cstring>
- </property>
- <property name="text">
- <string>Folder &amp;group</string>
- </property>
- <property name="buddy" stdset="0">
- <cstring>folderGroups</cstring>
- </property>
- </widget>
- <widget class="QComboBox" row="3" column="1" rowspan="1" colspan="2">
- <property name="name">
- <cstring>folderGroups</cstring>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>7</hsizetype>
- <vsizetype>0</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- </widget>
- <widget class="QCheckBox" row="1" column="1">
- <property name="name">
- <cstring>qtDirCheck</cstring>
- </property>
- <property name="text">
- <string></string>
- </property>
- <property name="checked">
- <bool>true</bool>
- </property>
- </widget>
- <spacer row="1" column="2">
- <property name="name" stdset="0">
- <cstring>Spacer8</cstring>
- </property>
- <property name="orientation">
- <enum>Horizontal</enum>
- </property>
- <property name="sizeType">
- <enum>Expanding</enum>
- </property>
- <property name="sizeHint">
- <size>
- <width>20</width>
- <height>20</height>
- </size>
- </property>
- </spacer>
- </grid>
- </widget>
- <spacer row="1" column="0">
- <property name="name" stdset="0">
- <cstring>Spacer2</cstring>
- </property>
- <property name="orientation">
- <enum>Vertical</enum>
- </property>
- <property name="sizeType">
- <enum>Expanding</enum>
- </property>
- <property name="sizeHint">
- <size>
- <width>20</width>
- <height>20</height>
- </size>
- </property>
- </spacer>
- </grid>
- </widget>
- </hbox>
-</widget>
-<images>
- <image name="image0">
- <data format="XPM.GZ" length="379">789c5d8ecb0a02310c45f7fd8ad0ec069907f531207e82e252101769b5388b51d07121e2bf6b1f195b6f28cd3d24b7ad0ad86dd75054e23ed0d0193067ba41717cf4fd737f58bd846ce6d028984123274296606073bd9c5c8fdf1eeba92b678db36dddaa60c959abec2258cdd62a9fc3424477a50cfdc18cc5d9c0e20eaffbbf90260c2a390f35c54a1823fa9bc39fc63cc3429e4b51cccb5060398a6c5478f7bd141fb90a5251</data>
- </image>
-</images>
-<tabstops>
- <tabstop>folderPath</tabstop>
- <tabstop>folderPathButton</tabstop>
- <tabstop>qtDirCheck</tabstop>
- <tabstop>devSysPath</tabstop>
- <tabstop>devSysPathButton</tabstop>
- <tabstop>folderGroups</tabstop>
-</tabstops>
-<layoutdefaults spacing="6" margin="11"/>
-</UI>
diff --git a/util/install/win/pages/licenseagreementpage.ui b/util/install/win/pages/licenseagreementpage.ui
deleted file mode 100644
index 5349e1f..0000000
--- a/util/install/win/pages/licenseagreementpage.ui
+++ /dev/null
@@ -1,202 +0,0 @@
-<!DOCTYPE UI><UI version="3.2" stdsetdef="1">
-<class>LicenseAgreementPage</class>
-<widget class="QWidget">
- <property name="name">
- <cstring>LicenseAgreementPage</cstring>
- </property>
- <property name="geometry">
- <rect>
- <x>0</x>
- <y>0</y>
- <width>440</width>
- <height>284</height>
- </rect>
- </property>
- <property name="caption">
- <string>Form3</string>
- </property>
- <hbox>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <property name="margin">
- <number>11</number>
- </property>
- <property name="spacing">
- <number>6</number>
- </property>
- <widget class="QLayoutWidget">
- <property name="name">
- <cstring>layout4</cstring>
- </property>
- <vbox>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <widget class="QLayoutWidget">
- <property name="name">
- <cstring>countryLayout</cstring>
- </property>
- <hbox>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <spacer>
- <property name="name">
- <cstring>spacer4</cstring>
- </property>
- <property name="orientation">
- <enum>Horizontal</enum>
- </property>
- <property name="sizeType">
- <enum>Expanding</enum>
- </property>
- <property name="sizeHint">
- <size>
- <width>31</width>
- <height>21</height>
- </size>
- </property>
- </spacer>
- <widget class="QLabel">
- <property name="name">
- <cstring>countryLabel</cstring>
- </property>
- <property name="text">
- <string>Please choose your region:</string>
- </property>
- </widget>
- <widget class="QComboBox">
- <item>
- <property name="text">
- <string>North or South America</string>
- </property>
- </item>
- <item>
- <property name="text">
- <string>Anywhere outside North and South America</string>
- </property>
- </item>
- <property name="name">
- <cstring>countryCombo</cstring>
- </property>
- </widget>
- <spacer>
- <property name="name">
- <cstring>spacer3</cstring>
- </property>
- <property name="orientation">
- <enum>Horizontal</enum>
- </property>
- <property name="sizeType">
- <enum>Expanding</enum>
- </property>
- <property name="sizeHint">
- <size>
- <width>51</width>
- <height>21</height>
- </size>
- </property>
- </spacer>
- </hbox>
- </widget>
- <widget class="QTextView">
- <property name="name">
- <cstring>introText</cstring>
- </property>
- <property name="text">
- <string>The license could not be found in the package. The package might be corrupted.
-Please contact support@trolltech.com to resolve the problem.</string>
- </property>
- </widget>
- <widget class="QLayoutWidget">
- <property name="name">
- <cstring>Layout3</cstring>
- </property>
- <hbox>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <property name="margin">
- <number>0</number>
- </property>
- <property name="spacing">
- <number>6</number>
- </property>
- <spacer>
- <property name="name">
- <cstring>Spacer1_3</cstring>
- </property>
- <property name="orientation">
- <enum>Horizontal</enum>
- </property>
- <property name="sizeType">
- <enum>Expanding</enum>
- </property>
- <property name="sizeHint">
- <size>
- <width>156</width>
- <height>20</height>
- </size>
- </property>
- </spacer>
- <widget class="QButtonGroup">
- <property name="name">
- <cstring>licenceButtons</cstring>
- </property>
- <property name="frameShape">
- <enum>NoFrame</enum>
- </property>
- <property name="title">
- <string></string>
- </property>
- <vbox>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <widget class="QRadioButton">
- <property name="name">
- <cstring>acceptLicense</cstring>
- </property>
- <property name="text">
- <string>I agree</string>
- </property>
- </widget>
- <widget class="QRadioButton">
- <property name="name">
- <cstring>rejectLicense</cstring>
- </property>
- <property name="text">
- <string>I disagree</string>
- </property>
- <property name="checked">
- <bool>true</bool>
- </property>
- </widget>
- </vbox>
- </widget>
- <spacer>
- <property name="name">
- <cstring>Spacer3</cstring>
- </property>
- <property name="orientation">
- <enum>Horizontal</enum>
- </property>
- <property name="sizeType">
- <enum>Expanding</enum>
- </property>
- <property name="sizeHint">
- <size>
- <width>155</width>
- <height>20</height>
- </size>
- </property>
- </spacer>
- </hbox>
- </widget>
- </vbox>
- </widget>
- </hbox>
-</widget>
-<layoutdefaults spacing="6" margin="11"/>
-</UI>
diff --git a/util/install/win/pages/licensepage.ui b/util/install/win/pages/licensepage.ui
deleted file mode 100644
index 9c7b98c..0000000
--- a/util/install/win/pages/licensepage.ui
+++ /dev/null
@@ -1,264 +0,0 @@
-<!DOCTYPE UI><UI version="3.0" stdsetdef="1">
-<class>LicensePage</class>
-<widget class="QWidget">
- <property name="name">
- <cstring>LicensePage</cstring>
- </property>
- <property name="geometry">
- <rect>
- <x>0</x>
- <y>0</y>
- <width>445</width>
- <height>284</height>
- </rect>
- </property>
- <property name="caption">
- <string>Form2</string>
- </property>
- <hbox>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <property name="margin">
- <number>11</number>
- </property>
- <property name="spacing">
- <number>6</number>
- </property>
- <widget class="QLayoutWidget">
- <property name="name">
- <cstring>Layout6</cstring>
- </property>
- <grid>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <property name="margin">
- <number>0</number>
- </property>
- <property name="spacing">
- <number>6</number>
- </property>
- <widget class="QLabel" row="3" column="0">
- <property name="name">
- <cstring>licenseeLabel</cstring>
- </property>
- <property name="text">
- <string>Licensee</string>
- </property>
- </widget>
- <widget class="QLabel" row="5" column="0">
- <property name="name">
- <cstring>expiryLabel</cstring>
- </property>
- <property name="text">
- <string>Support and upgrade expiry</string>
- </property>
- </widget>
- <widget class="QLineEdit" row="5" column="1">
- <property name="name">
- <cstring>expiryDate</cstring>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>7</hsizetype>
- <vsizetype>0</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- </widget>
- <widget class="QLineEdit" row="2" column="1">
- <property name="name">
- <cstring>licenseID</cstring>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>7</hsizetype>
- <vsizetype>0</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- </widget>
- <widget class="QLabel" row="1" column="0">
- <property name="name">
- <cstring>customerIDLabel</cstring>
- </property>
- <property name="text">
- <string>Customer ID</string>
- </property>
- </widget>
- <widget class="QLineEdit" row="6" column="1">
- <property name="name">
- <cstring>key</cstring>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>7</hsizetype>
- <vsizetype>0</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- </widget>
- <widget class="QLabel" row="4" column="0">
- <property name="name">
- <cstring>productsLabel</cstring>
- </property>
- <property name="text">
- <string>Products</string>
- </property>
- <property name="buddy" stdset="0">
- <cstring>productsString</cstring>
- </property>
- </widget>
- <widget class="QLineEdit" row="3" column="1">
- <property name="name">
- <cstring>licenseeName</cstring>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>7</hsizetype>
- <vsizetype>0</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- </widget>
- <widget class="QLabel" row="0" column="0" rowspan="1" colspan="2">
- <property name="name">
- <cstring>licenseInfoHeader</cstring>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>7</hsizetype>
- <vsizetype>1</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="text">
- <string>Enter the supplied license information here, all fields except Licensee are mandatory.
-Alternatively, the installation wizard may read them from a license file.</string>
- </property>
- <property name="alignment">
- <set>WordBreak|AlignVCenter</set>
- </property>
- </widget>
- <widget class="QComboBox" row="4" column="1">
- <item>
- <property name="text">
- <string>qt-professional</string>
- </property>
- </item>
- <item>
- <property name="text">
- <string>qt-enterprise</string>
- </property>
- </item>
- <property name="name">
- <cstring>productsString</cstring>
- </property>
- </widget>
- <spacer row="8" column="1">
- <property name="name">
- <cstring>Spacer7</cstring>
- </property>
- <property name="orientation">
- <enum>Vertical</enum>
- </property>
- <property name="sizeType">
- <enum>Expanding</enum>
- </property>
- </spacer>
- <widget class="QLabel" row="2" column="0">
- <property name="name">
- <cstring>licenseIDLabel</cstring>
- </property>
- <property name="text">
- <string>License ID</string>
- </property>
- </widget>
- <widget class="QLayoutWidget" row="7" column="0" rowspan="1" colspan="2">
- <property name="name">
- <cstring>Layout5</cstring>
- </property>
- <hbox>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <property name="margin">
- <number>0</number>
- </property>
- <property name="spacing">
- <number>6</number>
- </property>
- <spacer>
- <property name="name">
- <cstring>Spacer5</cstring>
- </property>
- <property name="orientation">
- <enum>Horizontal</enum>
- </property>
- <property name="sizeType">
- <enum>Expanding</enum>
- </property>
- </spacer>
- <widget class="QPushButton">
- <property name="name">
- <cstring>readLicenseButton</cstring>
- </property>
- <property name="text">
- <string>Read from file...</string>
- </property>
- </widget>
- <spacer>
- <property name="name">
- <cstring>Spacer6</cstring>
- </property>
- <property name="orientation">
- <enum>Horizontal</enum>
- </property>
- <property name="sizeType">
- <enum>Expanding</enum>
- </property>
- </spacer>
- </hbox>
- </widget>
- <widget class="QLineEdit" row="1" column="1">
- <property name="name">
- <cstring>customerID</cstring>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>7</hsizetype>
- <vsizetype>0</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- </widget>
- <widget class="QLabel" row="6" column="0">
- <property name="name">
- <cstring>keyLabel</cstring>
- </property>
- <property name="text">
- <string>Product key</string>
- </property>
- </widget>
- </grid>
- </widget>
- </hbox>
-</widget>
-<tabstops>
- <tabstop>customerID</tabstop>
- <tabstop>licenseID</tabstop>
- <tabstop>licenseeName</tabstop>
- <tabstop>productsString</tabstop>
- <tabstop>expiryDate</tabstop>
- <tabstop>key</tabstop>
- <tabstop>readLicenseButton</tabstop>
-</tabstops>
-<layoutdefaults spacing="6" margin="11"/>
-</UI>
diff --git a/util/install/win/pages/optionspage.ui b/util/install/win/pages/optionspage.ui
deleted file mode 100644
index 01033d2..0000000
--- a/util/install/win/pages/optionspage.ui
+++ /dev/null
@@ -1,503 +0,0 @@
-<!DOCTYPE UI><UI version="3.2" stdsetdef="1">
-<class>OptionsPage</class>
-<widget class="QWidget">
- <property name="name">
- <cstring>OptionsPage</cstring>
- </property>
- <property name="geometry">
- <rect>
- <x>0</x>
- <y>0</y>
- <width>413</width>
- <height>372</height>
- </rect>
- </property>
- <property name="caption">
- <string>Form7</string>
- </property>
- <hbox>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <property name="margin">
- <number>11</number>
- </property>
- <property name="spacing">
- <number>6</number>
- </property>
- <widget class="QLayoutWidget">
- <property name="name">
- <cstring>layout8</cstring>
- </property>
- <vbox>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <widget class="QGroupBox">
- <property name="name">
- <cstring>optionsGroup</cstring>
- </property>
- <property name="title">
- <string>Installation options</string>
- </property>
- <grid>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <property name="margin">
- <number>11</number>
- </property>
- <property name="spacing">
- <number>6</number>
- </property>
- <widget class="QLabel" row="0" column="0" rowspan="1" colspan="2">
- <property name="name">
- <cstring>pathLabel</cstring>
- </property>
- <property name="text">
- <string>Destination &amp;path (appr. 1Gb free space required)</string>
- </property>
- <property name="buddy" stdset="0">
- <cstring>installPath</cstring>
- </property>
- </widget>
- <widget class="QLayoutWidget" row="1" column="0" rowspan="1" colspan="2">
- <property name="name">
- <cstring>pathLayout</cstring>
- </property>
- <hbox>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <property name="margin">
- <number>0</number>
- </property>
- <property name="spacing">
- <number>6</number>
- </property>
- <widget class="QLineEdit">
- <property name="name">
- <cstring>installPath</cstring>
- </property>
- <property name="frameShape">
- <enum>LineEditPanel</enum>
- </property>
- <property name="frameShadow">
- <enum>Sunken</enum>
- </property>
- </widget>
- <widget class="QPushButton">
- <property name="name">
- <cstring>installPathButton</cstring>
- </property>
- <property name="text">
- <string></string>
- </property>
- <property name="pixmap">
- <pixmap>image0</pixmap>
- </property>
- </widget>
- </hbox>
- </widget>
- <widget class="QCheckBox" row="2" column="1">
- <property name="name">
- <cstring>installExamples</cstring>
- </property>
- <property name="text">
- <string>Build &amp;Examples</string>
- </property>
- <property name="accel">
- <string>Alt+E</string>
- </property>
- <property name="checked">
- <bool>true</bool>
- </property>
- </widget>
- <widget class="QCheckBox" row="2" column="0">
- <property name="name">
- <cstring>installTools</cstring>
- </property>
- <property name="text">
- <string>Build &amp;Tools</string>
- </property>
- <property name="checked">
- <bool>true</bool>
- </property>
- </widget>
- <widget class="QCheckBox" row="3" column="0">
- <property name="name">
- <cstring>installExtensions</cstring>
- </property>
- <property name="text">
- <string>Build E&amp;xtensions</string>
- </property>
- <property name="checked">
- <bool>true</bool>
- </property>
- </widget>
- <widget class="QCheckBox" row="3" column="1">
- <property name="name">
- <cstring>installTutorials</cstring>
- </property>
- <property name="text">
- <string>Build T&amp;utorials</string>
- </property>
- <property name="accel">
- <string>Alt+U</string>
- </property>
- <property name="checked">
- <bool>true</bool>
- </property>
- </widget>
- <widget class="QCheckBox" row="4" column="1">
- <property name="name">
- <cstring>skipBuild</cstring>
- </property>
- <property name="text">
- <string>&amp;Skip Build Step</string>
- </property>
- <property name="accel">
- <string>Alt+S</string>
- </property>
- </widget>
- <widget class="QCheckBox" row="4" column="0">
- <property name="name">
- <cstring>installDocs</cstring>
- </property>
- <property name="text">
- <string>Install &amp;documentation</string>
- </property>
- <property name="accel">
- <string>Alt+D</string>
- </property>
- <property name="checked">
- <bool>true</bool>
- </property>
- </widget>
- </grid>
- </widget>
- <widget class="QButtonGroup">
- <property name="name">
- <cstring>sysGroup</cstring>
- </property>
- <property name="title">
- <string>Compiler options</string>
- </property>
- <grid>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <property name="margin">
- <number>11</number>
- </property>
- <property name="spacing">
- <number>6</number>
- </property>
- <widget class="QLayoutWidget" row="0" column="1">
- <property name="name">
- <cstring>layout13</cstring>
- </property>
- <vbox>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <widget class="QCheckBox">
- <property name="name">
- <cstring>installIDEIntegration</cstring>
- </property>
- <property name="enabled">
- <bool>false</bool>
- </property>
- <property name="text">
- <string>&amp;Integrate with IDE</string>
- </property>
- <property name="accel">
- <string></string>
- </property>
- <property name="checked">
- <bool>true</bool>
- </property>
- <property name="buttonGroupId">
- <number>99</number>
- </property>
- </widget>
- <spacer>
- <property name="name">
- <cstring>spacer7_2</cstring>
- </property>
- <property name="orientation">
- <enum>Vertical</enum>
- </property>
- <property name="sizeType">
- <enum>Expanding</enum>
- </property>
- <property name="sizeHint">
- <size>
- <width>40</width>
- <height>40</height>
- </size>
- </property>
- </spacer>
- </vbox>
- </widget>
- <widget class="QLayoutWidget" row="1" column="0" rowspan="1" colspan="2">
- <property name="name">
- <cstring>layout21</cstring>
- </property>
- <vbox>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <widget class="QLayoutWidget">
- <property name="name">
- <cstring>layout20</cstring>
- </property>
- <hbox>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <widget class="QRadioButton">
- <property name="name">
- <cstring>sysOther</cstring>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>0</hsizetype>
- <vsizetype>0</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="text">
- <string>Other</string>
- </property>
- <property name="buttonGroupId">
- <number>4</number>
- </property>
- </widget>
- <widget class="QComboBox">
- <item>
- <property name="text">
- <string>win32-watcom</string>
- </property>
- </item>
- <property name="name">
- <cstring>sysOtherCombo</cstring>
- </property>
- <property name="enabled">
- <bool>false</bool>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>5</hsizetype>
- <vsizetype>0</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="duplicatesEnabled">
- <bool>false</bool>
- </property>
- </widget>
- <spacer>
- <property name="name">
- <cstring>spacer9</cstring>
- </property>
- <property name="orientation">
- <enum>Horizontal</enum>
- </property>
- <property name="sizeType">
- <enum>Expanding</enum>
- </property>
- <property name="sizeHint">
- <size>
- <width>121</width>
- <height>21</height>
- </size>
- </property>
- </spacer>
- </hbox>
- </widget>
- <widget class="QLabel">
- <property name="name">
- <cstring>noteLabel</cstring>
- </property>
- <property name="text">
- <string>Note: The compilers specified in the 'Other' section are not officially supported.</string>
- </property>
- </widget>
- </vbox>
- </widget>
- <widget class="QLayoutWidget" row="0" column="0">
- <property name="name">
- <cstring>layout7</cstring>
- </property>
- <vbox>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <widget class="QRadioButton">
- <property name="name">
- <cstring>sysMsvcNet</cstring>
- </property>
- <property name="text">
- <string>Microsoft Visual C++ .&amp;NET</string>
- </property>
- <property name="accel">
- <string>Alt+N</string>
- </property>
- <property name="buttonGroupId">
- <number>0</number>
- </property>
- </widget>
- <widget class="QRadioButton">
- <property name="name">
- <cstring>sysMsvc</cstring>
- </property>
- <property name="text">
- <string>Microsoft &amp;Visual C++</string>
- </property>
- <property name="accel">
- <string>Alt+V</string>
- </property>
- <property name="buttonGroupId">
- <number>1</number>
- </property>
- </widget>
- <widget class="QRadioButton">
- <property name="name">
- <cstring>sysBorland</cstring>
- </property>
- <property name="text">
- <string>&amp;Borland C++</string>
- </property>
- <property name="accel">
- <string>Alt+V</string>
- </property>
- <property name="buttonGroupId">
- <number>2</number>
- </property>
- </widget>
- <widget class="QRadioButton">
- <property name="name">
- <cstring>sysMinGW</cstring>
- </property>
- <property name="text">
- <string>MinGW32</string>
- </property>
- <property name="buttonGroupId">
- <number>3</number>
- </property>
- </widget>
- <widget class="QRadioButton">
- <property name="name">
- <cstring>sysIntel</cstring>
- </property>
- <property name="text">
- <string>Intel C++</string>
- </property>
- <property name="buttonGroupId">
- <number>6</number>
- </property>
- </widget>
- </vbox>
- </widget>
-
- </grid>
- </widget>
- <spacer>
- <property name="name">
- <cstring>spacer6</cstring>
- </property>
- <property name="orientation">
- <enum>Vertical</enum>
- </property>
- <property name="sizeType">
- <enum>Expanding</enum>
- </property>
- <property name="sizeHint">
- <size>
- <width>20</width>
- <height>64</height>
- </size>
- </property>
- </spacer>
- </vbox>
- </widget>
- </hbox>
-</widget>
-<images>
- <image name="image0">
- <data format="XPM.GZ" length="379">789c5d8ec10ac2300c86ef7d8ad0dc8a6cad4e3b101f41f1288887b43ae6610a3a0f22bebb766de6e65f4af27f247f9b2bd86dd7a072716fa93d7bf035dd401d1f4df3dc1f562f21cd02cc0ce660e444c80c3c6cae9753e8f1dba3d6bad03a581f6c5994d36829d8ca56365ac7b6b25d0e0b11431932ec2e8e589a8d2cedf07af71772845119e7a1a374068c11fdcde14f7d9e6721cf0d51ca1ba1c8c628b15ef1ddf7527c00b6995250</data>
- </image>
-</images>
-<connections>
- <connection>
- <sender>sysOther</sender>
- <signal>toggled(bool)</signal>
- <receiver>sysOtherCombo</receiver>
- <slot>setEnabled(bool)</slot>
- </connection>
- <connection>
- <sender>sysBorland</sender>
- <signal>toggled(bool)</signal>
- <receiver>installIDEIntegration</receiver>
- <slot>setDisabled(bool)</slot>
- </connection>
- <connection>
- <sender>sysMsvcNet</sender>
- <signal>toggled(bool)</signal>
- <receiver>installIDEIntegration</receiver>
- <slot>setEnabled(bool)</slot>
- </connection>
- <connection>
- <sender>sysMsvc</sender>
- <signal>toggled(bool)</signal>
- <receiver>installIDEIntegration</receiver>
- <slot>setEnabled(bool)</slot>
- </connection>
- <connection>
- <sender>sysOther</sender>
- <signal>toggled(bool)</signal>
- <receiver>installIDEIntegration</receiver>
- <slot>setDisabled(bool)</slot>
- </connection>
- <connection>
- <sender>sysMinGW</sender>
- <signal>toggled(bool)</signal>
- <receiver>installIDEIntegration</receiver>
- <slot>setDisabled(bool)</slot>
- </connection>
- <connection>
- <sender>sysIntel</sender>
- <signal>toggled(bool)</signal>
- <receiver>installIDEIntegration</receiver>
- <slot>setEnabled(bool)</slot>
- </connection>
- <connection>
- <sender>skipBuild</sender>
- <signal>toggled(bool)</signal>
- <receiver>installTools</receiver>
- <slot>setDisabled(bool)</slot>
- </connection>
- <connection>
- <sender>skipBuild</sender>
- <signal>toggled(bool)</signal>
- <receiver>installTutorials</receiver>
- <slot>setDisabled(bool)</slot>
- </connection>
- <connection>
- <sender>skipBuild</sender>
- <signal>toggled(bool)</signal>
- <receiver>installExtensions</receiver>
- <slot>setDisabled(bool)</slot>
- </connection>
- <connection>
- <sender>skipBuild</sender>
- <signal>toggled(bool)</signal>
- <receiver>installExamples</receiver>
- <slot>setDisabled(bool)</slot>
- </connection>
-</connections>
-<layoutdefaults spacing="6" margin="11"/>
-</UI>
diff --git a/util/install/win/pages/pages.cpp b/util/install/win/pages/pages.cpp
deleted file mode 100644
index 3ee4093..0000000
--- a/util/install/win/pages/pages.cpp
+++ /dev/null
@@ -1,349 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Qt Software Information (qt-info@nokia.com)
-**
-** This file is part of the utils 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** 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.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at qt-sales@nokia.com.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-#include "pages.h"
-#include "resource.h"
-#include "../environment.h"
-#include <qcombobox.h>
-#include <qlineedit.h>
-#include <qcheckbox.h>
-#include <qlabel.h>
-#include <qvalidator.h>
-#include <qdir.h>
-#include <qbuttongroup.h>
-#include <qpushbutton.h>
-#include <qradiobutton.h>
-#include <qmultilineedit.h>
-#include <qfiledialog.h>
-#include <qtabwidget.h>
-#include <qmessagebox.h>
-#include <setupwizardimpl.h>
-#include <qtextbrowser.h>
-#include <qtextview.h>
-#include <qlayout.h>
-
-#if defined(Q_OS_WIN32)
-#include <windows.h>
-#endif
-
-extern SetupWizardImpl *wizard;
-
-BuildPageImpl::BuildPageImpl( QWidget* parent, const char* name, WindowFlags fl )
- : BuildPage( parent, name, fl )
-{
-}
-
-ConfigPageImpl::ConfigPageImpl( QWidget* parent, const char* name, WindowFlags fl )
- : ConfigPage( parent, name, fl )
-{
- if( globalInformation.reconfig() ) {
- currentInstLabel->show();
- currentInstallation->show();
-#if defined(Q_OS_WIN32)
- // Makes no sense to have the rebuild installation option on DOS based
- // Windows
- if ( qWinVersion() & WV_NT_based )
-#endif
- rebuildInstallation->show();
-#if defined(Q_OS_WIN32)
- else {
- rebuildInstallation->setChecked( false );
- rebuildInstallation->hide();
- }
-#endif
- } else {
- currentInstLabel->hide();
- currentInstallation->hide();
- rebuildInstallation->hide();
- }
-#if defined(EVAL) || defined(EDU) || defined(NON_COMMERCIAL)
- // ### these pages should probably be included but all options should be
- // disabled so that the evaluation customer can see how he can configure Qt
- configTabs->removePage( generalTab );
- configTabs->removePage( advancedTab );
-#else
- configTabs->removePage( installTab );
-#endif
-}
-
-FinishPageImpl::FinishPageImpl( QWidget* parent, const char* name, WindowFlags fl )
- : FinishPage( parent, name, fl )
-{
-#if !defined(Q_OS_WIN32)
- showReadmeCheck->hide();
-#endif
-}
-
-FoldersPageImpl::FoldersPageImpl( QWidget* parent, const char* name, WindowFlags fl )
- : FoldersPage( parent, name, fl )
-{
-#if defined(Q_OS_WIN32)
- QByteArray buffer( 256 );
- unsigned long buffSize( buffer.size() );
- GetUserNameA( buffer.data(), &buffSize );
- folderGroups->insertItem( "Anyone who uses this computer (all users)" );
- folderGroups->insertItem( QString( "Only for me (" ) + QString( buffer.data() ) + ")" );
-#if defined(QSA)
- folderPath->setText( QString( "QSA " ) + globalInformation.qsaVersionStr() );
-#else
- folderPath->setText( QString( "Qt " ) + globalInformation.qtVersionStr() );
-#endif
- if( qWinVersion() & Qt::WV_NT_based ) // On NT we also have a common folder
- folderGroups->setEnabled( true );
- else
- folderGroups->setDisabled( true );
-#elif defined(Q_OS_UNIX)
- folderGroups->setDisabled( true );
-#endif
-}
-
-LicenseAgreementPageImpl::LicenseAgreementPageImpl( QWidget* parent, const char* name, WindowFlags fl )
- : LicenseAgreementPage( parent, name, fl ),
- titleStr("License agreement")
-{
-#if !defined(NON_COMMERCIAL)
- countryLabel->hide();
- countryCombo->hide();
- delete countryLayout;
-#else
- connect( countryCombo, SIGNAL(activated(int)), SLOT(countryChanged(int)) );
-#endif
- connect( licenceButtons, SIGNAL(clicked(int)), SLOT(licenseAction(int)));
-}
-
-void LicenseAgreementPageImpl::licenseAction(int act)
-{
- if( act )
- wizard->setNextEnabled( this, false );
- else
- wizard->setNextEnabled( this, true );
-}
-
-void LicenseAgreementPageImpl::countryChanged(int index)
-{
- ResourceLoader *rcLoader;
- if ( index == 0 )
- rcLoader = new ResourceLoader( "LICENSE-US" );
- else
- rcLoader = new ResourceLoader( "LICENSE" );
-
- if ( rcLoader->isValid() ) {
- introText->setText( rcLoader->data() );
- } else {
- QMessageBox::critical( this, tr("Package corrupted"),
- tr("Could not find the LICENSE file in the package.\nThe package might be corrupted.") );
- }
-}
-
-LicensePageImpl::LicensePageImpl( QWidget* parent, const char* name, WindowFlags fl )
- : LicensePage( parent, name, fl )
-{
-#if defined(Q_OS_MAC)
- // StyledPanel style looks very windowsish
- customerID->setFrameShape( QFrame::LineEditPanel );
-#endif
- customerID->setFocus();
-#if defined(EVAL)
- // ### improve text
-# if defined(QSA)
- licenseInfoHeader->setText( tr("Thank you for your interest in QSA.\n"
- "Please enter the license information you got for this evaluation version of QSA.") );
-# else
- licenseInfoHeader->setText( tr("Thank you for your interest in Qt.\n"
- "Please enter the license information you got for this evaluation version of Qt.") );
-# endif
-
- customerIDLabel->setText( tr("Name") );
- licenseIDLabel->setText( tr("Company name") );
- licenseeLabel->setText( tr("Serial number") );
- evalName = customerID;
- evalCompany = licenseID;
- serialNumber = licenseeName;
-
- expiryLabel->hide();
- expiryDate->hide();
- productsLabel->hide();
- productsString->hide();
- keyLabel->hide();
- key->hide();
- readLicenseButton->hide();
-#elif defined(EDU)
- licenseInfoHeader->setText( tr("Please enter the license information for the educational edition of Qt.") );
-
- customerIDLabel->setText( tr("Educational institution") );
- licenseeLabel->setText( tr("Serial number") );
- university = customerID;
- serialNumber = licenseeName;
-
- licenseIDLabel->hide();
- licenseID->hide();
- expiryLabel->hide();
- expiryDate->hide();
- productsLabel->hide();
- productsString->hide();
- keyLabel->hide();
- key->hide();
- readLicenseButton->hide();
-#else
- licenseID->setValidator( new QIntValidator( -1, 9999999, licenseID ) );
-
- // expiryDate and productsString comes from the license key
- expiryDate->setEnabled( false );
- productsString->setEnabled( false );
- keyLabel->setText( tr("License key") );
- licenseInfoHeader->setText( tr("Please enter your license information.\n"
- "The License key is required to be able to proceed with the installation process.") );
-#endif
-}
-
-QValidator::State InstallPathValidator::validate( QString& input, int& ) const
-{
- if ( ( globalInformation.sysId() == GlobalInformation::MSVC ||
- globalInformation.sysId() == GlobalInformation::MSVCNET )
- && input.contains( QRegExp("\\s") ) ) {
- QMessageBox::warning( 0, "Invalid directory", "No whitespace is allowed in the directory name due to a limitation with MSVC" );
- return Intermediate;
- } else if ( globalInformation.sysId() == GlobalInformation::Borland && input.contains( "-" ) ) {
- QMessageBox::warning( 0, "Invalid directory", "No '-' characters are allowed in the directory name due to a limitation in the "
- "Borland linker" );
- return Intermediate;
- }
- return Acceptable;
-}
-
-OptionsPageImpl::OptionsPageImpl( QWidget* parent, const char* name, WindowFlags fl )
- : OptionsPage( parent, name, fl ),
- titleStr("Options"),
- shortTitleStr("Choose options")
-{
- connect( installPathButton, SIGNAL(clicked()), SLOT(choosePath()));
- sysGroup->setButton(globalInformation.sysId());
-#if defined(EVAL) || defined(EDU) || defined(NON_COMMERCIAL)
- sysOther->hide();
- sysOtherCombo->hide();
- noteLabel->hide();
-#endif
-#if defined(Q_OS_WIN32)
- installPath->setText(
- QString( "C:\\Qt\\" ) +
- QString( globalInformation.qtVersionStr() ).replace( QRegExp("\\s"), "" ).replace( QRegExp("-"), "" )
- );
- installPath->setValidator( new InstallPathValidator( this ) );
-#elif defined(Q_OS_MAC)
- // ### the replace for Windows is done because qmake has problems with
- // spaces and Borland has problems with "-" in the filenames -- I don't
- // think that there is a need for this on Mac (rms)
- QString base("QtMac-");
- base = QDir::homeDirPath() + QDir::separator() + base;
-#if defined(EVAL)
- base += "Eval-";
-#elif defined(EDU)
- base += "Edu-";
-#endif
- installPath->setText(base + QString( globalInformation.qtVersionStr() ).replace( QRegExp("\\s"), "" ));
- sysGroup->hide();
-#endif
-}
-
-void OptionsPageImpl::choosePath()
-{
- QDir dir( installPath->text() );
-
-#if defined(Q_OS_WIN32)
- if( !dir.exists() ) {
-# if defined(QSA)
- dir.setPath( "C:\\Qt_QSA" );
-# else
- dir.setPath( "C:\\Qt" );
-#endif
- }
-
- QString dest = QFileDialog::getExistingDirectory( installPath->text(), this, NULL, "Select installation directory" );
- if ( dest.isNull() ) {
-# if defined(QSA)
- dest = "C:\\Qt_QSA";
-# else
- dest = "C:\\Qt";
-# endif
- }
- if ( dest.right(1) == "\\" ) {
-# if defined(QSA)
- dest += "Qt_QSA";
-# else
- dest += "Qt";
-# endif
- }
- if ( dest.contains( QRegExp( "\\s" ) ) && !sysBorland->isChecked() )
- QMessageBox::warning( 0, "Invalid directory", "No whitespace is allowed in the directory name due to a limitation with MSVC" );
- else if ( dest.contains( "-" ) && sysBorland->isChecked() )
- QMessageBox::warning( 0, "Invalid directory", "No '-' characters are allowed in the directory name due to a limitation with the Borland linker" );
- else {
- dir.setPath( dest );
- installPath->setText( QDir::toNativeSeparators(dir.absPath()) );
- }
-#elif defined(Q_OS_MAC)
- if( !dir.exists() )
- dir.setPath( "/" );
-
- QString dest = QFileDialog::getExistingDirectory( installPath->text(), this, NULL, "Select installation directory" );
- if (!dest.isNull())
- installPath->setText( dest );
-#endif
-}
-
-ProgressPageImpl::ProgressPageImpl( QWidget* parent, const char* name, WindowFlags fl )
- : ProgressPage( parent, name, fl )
-{
- // ######### At the moment, we show only one line when unpacking. So the
- // horizontal scrollbar is never shown for now to avoid flickering.
- filesDisplay->setHScrollBarMode( QScrollView::AlwaysOff );
-}
-
-#if defined(Q_OS_WIN32)
-WinIntroPageImpl::WinIntroPageImpl( QWidget* parent, const char* name, WindowFlags fl )
- : WinIntroPage( parent, name, fl )
-{
-#if defined(QSA)
- textBrowser->setText( "<p>This program installs Qt and QSA.</p>" + textBrowser->text() );
-#else
- textBrowser->setText( "<p>This program installs Qt.</p>" + textBrowser->text() );
-#endif
-}
-#endif
diff --git a/util/install/win/pages/pages.h b/util/install/win/pages/pages.h
deleted file mode 100644
index 8108f42..0000000
--- a/util/install/win/pages/pages.h
+++ /dev/null
@@ -1,226 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Qt Software Information (qt-info@nokia.com)
-**
-** This file is part of the utils 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** 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.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at qt-sales@nokia.com.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-#ifndef PAGES_H
-#define PAGES_H
-
-#include <qvalidator.h>
-
-#include "buildpage.h"
-#include "configpage.h"
-#include "finishpage.h"
-#include "folderspage.h"
-#include "licenseagreementpage.h"
-#include "licensepage.h"
-#include "optionspage.h"
-#include "progresspage.h"
-#include "winintropage.h"
-#include "../globalinformation.h"
-
-class Page
-{
-public:
- virtual QString title() const = 0;
- virtual QString shortTitle() const = 0;
-};
-
-class BuildPageImpl : public BuildPage, public Page
-{
- Q_OBJECT
-public:
- BuildPageImpl( QWidget* parent = 0, const char* name = 0, WindowFlags fl = 0 );
- ~BuildPageImpl() {}
- QString title() const
- {
-#if defined(EVAL) || defined(EDU) || defined(NON_COMMERCIAL)
- return "Building Qt Examples and Tutorial";
-#else
- return "Building Qt";
-#endif
- }
- QString shortTitle() const
- {
-#if defined(EVAL) || defined(EDU) || defined(NON_COMMERCIAL)
- return "Build Qt Examples";
-#else
- return "Build Qt";
-#endif
- }
-};
-
-class ConfigPageImpl : public ConfigPage, public Page
-{
- Q_OBJECT
-public:
- ConfigPageImpl( QWidget* parent = 0, const char* name = 0, WindowFlags fl = 0 );
- ~ConfigPageImpl() {}
- QString title() const
- {
- if( globalInformation.reconfig() )
- return "Reconfigure Qt";
- else
- return "Configuration";
- }
- QString shortTitle() const
- { return "Configure Qt"; }
-};
-
-class FinishPageImpl : public FinishPage, public Page
-{
- Q_OBJECT
-public:
- FinishPageImpl( QWidget* parent = 0, const char* name = 0, WindowFlags fl = 0 );
- ~FinishPageImpl() {}
- QString title() const
- { return "Finished"; }
- QString shortTitle() const
- { return "Finish"; }
-};
-
-class FoldersPageImpl : public FoldersPage, public Page
-{
- Q_OBJECT
-public:
- FoldersPageImpl( QWidget* parent = 0, const char* name = 0, WindowFlags fl = 0 );
- ~FoldersPageImpl() {}
- QString title() const
- { return "Folders"; }
- QString shortTitle() const
- { return "Choose folders"; }
-};
-
-class LicenseAgreementPageImpl : public LicenseAgreementPage, public Page
-{
- Q_OBJECT
-public:
- LicenseAgreementPageImpl( QWidget* parent = 0, const char* name = 0, WindowFlags fl = 0 );
- ~LicenseAgreementPageImpl() {}
- QString title() const
- { return titleStr; }
- QString shortTitle() const
- { return titleStr; }
-
-private slots:
- void licenseAction(int);
- void countryChanged(int);
-
-public:
- QString titleStr;
-};
-
-class LicensePageImpl : public LicensePage, public Page
-{
- Q_OBJECT
-public:
- LicensePageImpl( QWidget* parent = 0, const char* name = 0, WindowFlags fl = 0 );
- ~LicensePageImpl() {}
- QString title() const
- {
-#if defined(QSA)
- return QString("License Information to Install QSA %1").arg(globalInformation.qsaVersionStr());
-#else
- return QString("License Information to Install Qt %1").arg(globalInformation.qtVersionStr());
-#endif
- }
- QString shortTitle() const
- { return "License information"; }
-
-#if defined(EVAL)
- QLineEdit* evalName;
- QLineEdit* evalCompany;
- QLineEdit* serialNumber;
-#elif defined(EDU)
- QLineEdit* university;
- QLineEdit* serialNumber;
-#endif
-};
-
-class InstallPathValidator : public QValidator
-{
-public:
- InstallPathValidator( QObject* parent = 0, const char* name = 0 ) : QValidator( parent, name ) {}
- ~InstallPathValidator() {}
- QValidator::State validate( QString& input, int& ) const;
-};
-
-class OptionsPageImpl : public OptionsPage, public Page
-{
- Q_OBJECT
-public:
- OptionsPageImpl( QWidget* parent = 0, const char* name = 0, WindowFlags fl = 0 );
- ~OptionsPageImpl() {}
- QString title() const
- { return titleStr; }
- QString shortTitle() const
- { return shortTitleStr; }
-
-private slots:
- void choosePath();
-
-public:
- QString titleStr;
- QString shortTitleStr;
-};
-
-class ProgressPageImpl : public ProgressPage, public Page
-{
- Q_OBJECT
-public:
- ProgressPageImpl( QWidget* parent = 0, const char* name = 0, WindowFlags fl = 0 );
- ~ProgressPageImpl() {}
- QString title() const
- { return "Installing"; }
- QString shortTitle() const
- { return "Install files"; }
-};
-
-class WinIntroPageImpl : public WinIntroPage, public Page
-{
- Q_OBJECT
-public:
- WinIntroPageImpl( QWidget* parent = 0, const char* name = 0, WindowFlags fl = 0 );
- ~WinIntroPageImpl() {}
- QString title() const
- { return "Introduction"; }
- QString shortTitle() const
- { return "Introduction"; }
-};
-
-#endif // PAGES_H
diff --git a/util/install/win/pages/progresspage.ui b/util/install/win/pages/progresspage.ui
deleted file mode 100644
index 927d975..0000000
--- a/util/install/win/pages/progresspage.ui
+++ /dev/null
@@ -1,78 +0,0 @@
-<!DOCTYPE UI><UI version="3.2" stdsetdef="1">
-<class>ProgressPage</class>
-<widget class="QWidget">
- <property name="name">
- <cstring>ProgressPage</cstring>
- </property>
- <property name="geometry">
- <rect>
- <x>0</x>
- <y>0</y>
- <width>440</width>
- <height>286</height>
- </rect>
- </property>
- <property name="caption">
- <string>Form10</string>
- </property>
- <hbox>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <property name="margin">
- <number>11</number>
- </property>
- <property name="spacing">
- <number>6</number>
- </property>
- <widget class="QLayoutWidget">
- <property name="name">
- <cstring>layout2</cstring>
- </property>
- <vbox>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <widget class="QTextEdit">
- <property name="name">
- <cstring>filesDisplay</cstring>
- </property>
- <property name="vScrollBarMode">
- <enum>AlwaysOn</enum>
- </property>
- <property name="hScrollBarMode">
- <enum>AlwaysOff</enum>
- </property>
- <property name="textFormat">
- <enum>LogText</enum>
- </property>
- <property name="linkUnderline">
- <bool>false</bool>
- </property>
- <property name="wordWrap">
- <enum>NoWrap</enum>
- </property>
- <property name="undoDepth">
- <number>0</number>
- </property>
- <property name="autoFormatting">
- <set>AutoNone</set>
- </property>
- </widget>
- <widget class="QProgressBar">
- <property name="name">
- <cstring>operationProgress</cstring>
- </property>
- <property name="centerIndicator">
- <bool>false</bool>
- </property>
- <property name="percentageVisible">
- <bool>false</bool>
- </property>
- </widget>
- </vbox>
- </widget>
- </hbox>
-</widget>
-<layoutdefaults spacing="6" margin="11"/>
-</UI>
diff --git a/util/install/win/pages/sidedecoration.ui b/util/install/win/pages/sidedecoration.ui
deleted file mode 100644
index 1ea5761..0000000
--- a/util/install/win/pages/sidedecoration.ui
+++ /dev/null
@@ -1,108 +0,0 @@
-<!DOCTYPE UI><UI version="3.0" stdsetdef="1">
-<class>SideDecoration</class>
-<widget class="QWidget">
- <property name="name">
- <cstring>SideDecoration</cstring>
- </property>
- <property name="geometry">
- <rect>
- <x>0</x>
- <y>0</y>
- <width>122</width>
- <height>156</height>
- </rect>
- </property>
- <property name="caption">
- <string>Form1</string>
- </property>
- <vbox>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <property name="margin">
- <number>11</number>
- </property>
- <property name="spacing">
- <number>6</number>
- </property>
- <widget class="QLabel">
- <property name="name">
- <cstring>logoPixmap</cstring>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>0</hsizetype>
- <vsizetype>0</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="pixmap">
- <pixmap>image0</pixmap>
- </property>
- <property name="scaledContents">
- <bool>false</bool>
- </property>
- <property name="alignment">
- <set>AlignTop</set>
- </property>
- <property name="vAlign" stdset="0">
- </property>
- </widget>
- <widget class="QLayoutWidget">
- <property name="name">
- <cstring>Layout1</cstring>
- </property>
- <vbox>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <property name="margin">
- <number>0</number>
- </property>
- <property name="spacing">
- <number>0</number>
- </property>
- <widget class="QLabel">
- <property name="name">
- <cstring>versionLabel</cstring>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>1</hsizetype>
- <vsizetype>0</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="text">
- <string>Installing Qt</string>
- </property>
- </widget>
- <widget class="QLabel">
- <property name="name">
- <cstring>editionLabel</cstring>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>1</hsizetype>
- <vsizetype>0</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="text">
- <string>(Clear me)</string>
- </property>
- </widget>
- </vbox>
- </widget>
- </vbox>
-</widget>
-<images>
- <image name="image0">
- <data format="XPM.GZ" length="55092">789cccbd47b7eb38b2ef397f9fa2d6e5ecae5e7cf266d0035266cb6da7ed77af1ed07b2f1aa9bf7c83883f704c56d5cd7c75bb5f95d6c9ca5f8a22114044202200f0fccffffcdbe7d3fddffef37ffe8fea625c02eb6f966f947ffb4fbb4e92ebfff57fff9fffcffff88fe160f0b7fecf68389bfe6df41fffc7fff80febf96fd6df9401ff5fcff64232ffde36244f7a762ac953fefd56f29cf35cf2a267f3072ff9f733c906e7836493f35eb2c59fd74ab6797b1f243bfcfb46b2cb7fef0a1e72799c5af2907f7f94cce5732cc963fefd483297cf3a8387d43f992999ffde0c25f3dfb79a64de5f662099dfcfe924cf386f24f3fe4a44ff0fd17e5b327f9e772799dfcfb8078fa87d662499cbebbb9249de6fc9bcbd9d2f99dab795ccc7b31a48e6e3b71a4ae6e315ed25f3f1b04f82a93f0dc1636a9ff32999daf32599f757a54ae6fde17e48e6fae23892b97e78a2bd63ea1f438cef849e97e892f9f7652b99b76f3d91cce53763f0947e6f08fd9c1137b664de5e43c83fc7f53bf0022cf475499c8be719c4f113d824de5cc01671fd0eb6895dbaff50d8ab174ae6f2ad3ac9a47f63c924df4832d73f732a99f777f324998fb73993ccfb5f7f96ccc7df3a49e6e3514592b9bd3aa664ae1fd6bd646eaf9a2b98f4ddf52573fdb58e60d89f6d49e6df9b13c97c3c1d45326fbf634826ffb2934cfee40086fdf88164de7ff65232d9eb9b646e1fa607867e9bbe641a8f816092cf14f2423f4d070c7d8b9f25f3e7bbaf60e89fb791ccfb3b15df43ffe22f30f42f13f240ffea1b18fab716bf877ee967b043dc92bf1f0ea16fdd9af3a8f740bc3dbe64f2f70bc9bcbfcd2fc9bcbfbd4432f90b4730f5cff55e3297bfc9c0187f732899f4772099c6e35b321f7f6b0fc6f8daa6649aff7692f9f3724d32d7f7cb4932ef6ffb4e32e9b302c6f86723c9dcdefc50326f9ff32e99f7975382a10fd75c32d7e795906742fdd3bd49e6df67a2bdd09ff20886beb89164fefcd54932ef9ffa2c98fca72bda0b7d6a9f25f3feb0c4f842bf9a07b0d02fd13fd0afe2090cffd6c660e85b24ae87be05a40f63e1df8277c9bc7debab643e5e575732efef6e2799cb1bfcf89ecbdbed2573fd5cfd781e1fcf952d98fa3b91cf277f74cd24f3fe0f3ec08807ba8d64ae9fc54232e98f27993faff9f13df787ae680ff4d57995cce57103c95c7fac3bc97c7c7c5f308d67b8028bf9f72299cbd3dc49e6f2981f92797fd69664de5f7e2499dbb33b92ccdb6f2dc1d067772099fca72e99b7ff6a49a6f946f437f4b9bd48267934b0d0ef77c9bc7dad68df9cee9fee25f3fe69447fcc31df88f1843eaf6e92f9f3da89649a0fee25f3f1cb85be41ff0331bed07f5f8ca7f0a7d43f13a1df9d2a99f777f32899dfffea80111faeae92b93cee41f090f7effa0c463ce77f48a6f9ee51321fafeb4930f547bb01433fecb164fe7cff5b321f2f2f92ccfb3f93d793bd745b30f421ae2593bfd94be6fd1b2692b93cde4e32b79fda164ced8ddec1d017e74332f9dbb564de5e772899e299140c7dcaa692b93db8df92797fe61d18fe3117e303fd59b792e979b164de3f8918ff05f5cf46f40ff4c715e301fdb9bd80e13f57f792797fad4a30fce906bf17f3f51ae331c4fc19a13d43f89780e693a9f0a7ed028cebfd4e321fafe6198c7cc00b2473f9bc77c95cdf4a4ff0908fc75a5c8f78bfb52553fcf02999ebbfdf08a6f10e5ec1c2bfdc49a6f97c2b99e6ff27c9642f3fbee7fab416f2407fc299643efe912f99ec692099cbd3b492b9bc9ab8ff94c63711fd0bfdb2a792c93e2ac9140f689229df5125f3feed5660e85ffd2a99fce34432efdfee00867e5e14c9941f8ec0d0bfcc904cf9572a99b7a76e25f3fe73c760a1afaa646ebf99e85fe86f2ec61bfaea0b79e11f0ba12f2eda8bfb4b7d267b98897c64dd81a1cfeb503297afbd934cf1d45e30fc93f81ef363b896ccefbf3a4a26793dc1149fae7d30f247ff2a99ea1d3fbee7fed68b05a31eb1924cf9c2083ca5f6076bc9542fd948e6fa900e2473fdbbbc09463d630246be1a6692f9f84481643edef95532b73f5df01cfd7993ccdb7be92453beb5924cf3c14432efbf5cfc7e01fffa2999e6bfb1646e5f9b022ce2cba364de3e37114cfec132c0d047f74d32f9e37b30f26b2f05431f5763c9bc7f42c1d04797e6cf99d0c71be41fc21fa52a18fe24207d9f0bfd5a1d04d3f8570fe009d573dca3642e7fbb054f697ca237c1246f3a944cf53a5b32c5a72f60f81bd796ccaf4f2bc994af2d2593be6f2453bea682e7345eed4e32d5ff14c9bcbf2f57c95cff7dd15ef8a35097ccdb93cd25537e2bfa6b3124fffd055ec2bfcc24537c548045fe518331decda7647ebd2eda6ba37fc478c01f6d44ffb8d43e1ded17e3af3960cc97f5022cf481e257a6dd149fd96bf08cc6ffe64aa6f92604c35eec4032b7efab2799e2375b30e94b2aae5f50ff58aa642e6fe148a67ce1065e927fb80d2553bd2494cc9fdf3e49a6fc45c863c07e1dc97cfcd3a3606a5f7d05633e887682497faf4bb08df8e2030cfb2bc9de17a2ff4bf49f886762f4cf10f666bd80618f3e8dff92f5177f5e914be6ed2f36e005c91b5f24533cf22598ecafeec04be467ae64f28757b041bfaf5f040f29fe68c0268d9726da63917e14a2bdd0c7f424998f5f44fdb314fd91bf83a18f8105467fdc4660e86783e789fee94a30e215e3118c78a3a0f9dc60fd45fa34072f491fc329d8a0f685a964aae7dfc0265d5f2f05537f568f60d86bb091ccfbe36248e6fad988dfbba85f8e24533e48f66f88fe892b30fa67634ba6f97508467f6d1cb0a827435ed11f35fa6388f9c9a7f8c814f157fd065e92fe5f6e6083e42f5cb0897ac417d8227dca3fc036f55fb305431fba77c1747f3b02bba4df3ad9ab29e42f669229df46fb647fe460d8d3aa0243fecd2758d4bbefc0a21eb403a33f2a8a772c263f6fff35055ba827d1f85aa2bf2f1a58f4f70a8cfb252a18febdf1c0f02701f58f2dda7f5d48a6fe9b8071fff21d2cfc83603caf51c1b87fb106433f4b1a1f87fd17eebf1b17ec903efbd43e46b0f71a0c79cb2d58c4e72d18cf2f1bb078be0dc6f3339abf5cd11f8906c6f5de1a8cf846e3f6c1cbe724df068cf6548964ae3f1b130c7f9096608c7f7603a3bde90e8ce7bb2f60b4d77e00c39f075c9f98f639e47fa34832d7e7f84c2c9eb7ba80216ffb08c6f3cc042cd64f1a30e42f9760d88fe382d19e1ced19c11e42aebf0cf17cd306435ecb04a33d610e16f20b16f1470a16ed3981457cf9443c82bdae2660e19f79bc341c8be7d70e18cfd71ec022df8ac178feaa05e379d72bf108e3df70ff369cc8fe1d8345bc9c81d1fe60452cfaeb7a03c3be74ba7e2adbd382f1fbcb3b18e3910dc1689f4df24e657fd4603cafb2c168bffb0cc6f32b1ebf0c67e2fe01e9d34cdcef1283e12faa6f30ee67f860e1ffe660a1efdc7f0ee7e2fed58c58b6e70cc6ef8d002cd6173db0a83f2dc0d0b78edbf77021e5bd078bf6aec1f87d41fabd14f2155bb0f8fd108cdfeb2330da93de83f1fc8ac6d310f2ac1a309ed772ff3734c5fdb48d64ee0fb72e58d4e75ec0f87d7202a33f0d713df4a5237bb7e4782a60b11ee681d15eed112cee1782a1cf158f4f86b6b8bf6581c5fa2af5a733823f762d30eed7d2efdd11f2efcd1d18d76bdc5e468311f2a3c007e379f5082cea75f760e8fbfa8d782cf49dfba3d150fcbebc030b7bdc83a17f099faf472371ffe64c2ceed73460e883cefb6b3416f7ab4fc463e10f2c30e46b8927e279b94b2cee6f6cc1d087ec092cec4930c6f342f24f85fc46442caef75660e8cf85fb93d18cfd9ec783f1162ceaa37cfe19cdc5fd3ceabfb990d79d80d13eeb152cd64fe9fa85f8de7c05a33df9188cf66cbec0d0c7f50d0c7df3b8ff1f2d85bcce002ce227078ceb1d0f2cfca54e3c41fb6f74bd21ef5780f17c5d058bf53beeaf46e618ebd77a2299c77f5bba9f25c6b7f4c1c2bfbd80d19eeb07f104fda1933cb678de2603e37eba01c6ef6f57b0a8ff71ff3d72c6a8b7e8d47faee88fb507c6effd188cdf3bdc1ec67d38c739e2e3c5a63393e21723269e60fde4f22c99d677b93e307577285eb7b8fd8f27ecfe9cf50e0c7d8a79ff8ca7ec7bfefb6b412cc627db81c57e823730ead9eb1158d43fb8bce399b8fe7a0716eb5d7330c663c3fb733c67eda1fa484d2cc6c39a83a11fed193ca57a651282b13e16f3f96ebc9860bdc8d880c5fe810c2cf21bae8fe3e544d4cb23c93c5ed30a30ea071b170cff92d0f81813d443d71730eaed9a07c6f53eb7b7b1c9bee7fa117c49a6f5024b30c5b3760cb6b19ec9e3adb13331e8face93ccfbaf3883f13c23013ba8a72e05d3fd0d1b8c7c734df23b53d8df86facf9da03e7e1b80f1fc82f7e76430813e6d63e229fa3be5e333194e4cd40b52b04ded31b8fe4e4653110ff2fa0a73a736f28d9a788afd67fa180cfd6a1db0588fe3fe7f32610accfb77c3f59721f2c77c493cc5fe0aaf00e37eb731788afa4e059ed1f8361f60d48f6dde1f93d914ebc7460a46bd2fe4fd37994fc7940f6cbec1e89f98cf5f93a578def5013c433d86da6f4c51bf09b9bd4dcce982f2b39cebcbc49a22fff6b83e4dec29ea15d95932adb704c433acffebf43c776ad1fd039d7886f5d315bf3f5356f09acf77d3d1d4a5fa65734f3cc3fe035d134cf7372c30ec355b824dc413dc3fb0e9906574dcdf79c4e2f74501c6fa5b74104cdfb73c3e9d4ea6d6887f7fdb10b3e791bef1f9940ddf1ceb078fe005f5b7c5e7e3e96c86f58f8d0246fd3a76c1f311f9b377b043e31bf07c693a9fa1de19df816dec07f804bb584fa3fe5accc47a86069e517b82002cd6f775b043f39bc6e3dde9923d8eeb7332035bd47f3705ec60ff824d3cc7fecf84ebefd498c19e2faf609bfa2be6f9f0d49c2d51cff5c016e5fb2b176c8f78fb8b15d8a5fa99c9e7d7a93543fdab1b831dfafde6287844f5d10e8cf1af49bfac39c63bff024f499e98ee6fb3fb937f7d023bd4fed407bb435aafb124d37e2d5d30b53f03cf87d43eeb0d8cf5dd7803c67cb7e1f63d75587f707df1e9fece7c30a2fd5d7b30f6b3469f9269fdc792cce5594dc1587fba52ffb84c1edebecd5e326f7f41faebceb19f2cda8271bfa6133ca2e727e0118d4fb2164cfa9c2892f978af4c30eca1f1c19321d7bf2bff7e3660e34ff5e53bb043cfaf5dc174bf6c0076a97fdb929805acfcfb6d0446bdbee4ed9f0d857eddd660f89b6e2298da5f05c4ac3f687e6bc0c311ad87e07a263f9f0fda77f094da537f8067245fc5f569369a1963d29f2b31eb5fdabfe20ba6e7a777e0d188ff3eb9815906c29fa78227d04f053ca3f6b65c3f6663260fd553a93d2cfca4fec91bc95cfeea041e517f5fb8fece2662fcdd023c86ff33c1d31167cd06cf21cf5c308d679d8017d41f0df72fb3e9cc1ef3ebab14ec8c69bfc05432ed47d38885fe5d4cc9b4fe37028fc8fecb37c9649f25784cf6ebbf82e7f47dbc042fe87e05f5cf4ce8936b82e7f4fb36113ca6f17a002fe8f986b8de80fe8bef4dd28fc292cce52fa68269fc4d1effb0db2f49decd0c0c7fdc92fe2ce6131a3f6d2d98fcb7bf02cf49bf370330d68fea5a30fdde38831dfabea3fe59b2fea178b0009bd41e4f03db23aeff37713decb5f00593fc2df5a7c1ee47eb6f2330eadd17156c8ea87ff7609bfc45590b267f78d5c02e714bfa6ab2f1207ff80136c87ef22918f34dfe06c67cd186c48b018dafcee3cd99c5ee47faa48217647f99609bf4c7a0f1b2160392afa3f6da6cfc68bcd69279ff949f6093daef4ec1f067f5817831a4e76de8f70ebb9ece177c806d6abfb3235ec0dfba2bc9b4df9bc6d7ed1376ae5f5c3fe703263f6f4f520a1e53fc99102f66d4be8cf7cf7cc8e4e3d7673e784c7cdd82a7d4de5a03c3fe751e9f3265c2fca09be009d94fc2e397394b87c99f186bf08cfa4fe3fd3b9fb0e7717dacc792e97c0b8f5f58f8bb20d6793d613e5f2cc7b49fc5005bd49e35b56fb1c4fcecf1fe9e2fd9f7743dfdde582ca83f8267b049ed59f3f9686eb2eb69fd782699d62fa83de67244f67de1fa3eb79643b237ef2698f4ab9e8347d4feb0008fc99e1c6a8fbd70d05f4762261e6f9f46e3e730a6f3160618fdbbe6f9c6dc5d0ea8bd0df5bf6b88f89aebdfa25f00a5f8ff4e32edd749c0636aff66019ee17939780e7de2f92a73f643e8bb031e537b7c133c237bf5dec073ba7f44f71f1a225ea3e78f447f79dfe011ddcfe3f22dc68c29feff06e379ba0e9ed2ef0b1effb1747d44f3b1fd0d5ed2f78d0236c65cdf367c7e5fb0009858bf07cfd15f7bf082f4a3492473f96f19d8257b6df8f82e66cb05f55fbe223630ff6f797cbc98b3f67079527afe82319d17e1f6b7581a03fafdc693ccc7d7a0fb194b97da7bbb111b63f2af1bae9f0bd31810eb7cbd61612d1dd2bf94da671943c8cfe7af856d8c69be6e0563be594f2573fdd7b8bd2c1c763ded0f53c01392c7bb4ae6fdd3717d5db8c684fa4bbb134cdfa767f094e28180fba3e5c080fff15fc0b309f5ef9764d24ff13dfc43cae7a3e5d0807d6cf8782d47acbdfcfeed0b783ea1fad50ebca0ef6f3ed82079a32f30f2c5644f6c627f5acce7df655fd0e1e3930460a662dc3f1cc14beaaf40133ca178a8069bf47cdf90ccc74ff3c10e8de78dfa676c8afd09b564daff5982b1ff36a6f64c58ffd2fed40b7836a1fac504bc9c50fd6101c6fc97abc426e2b3700fc67911f3018cf33ac99d643e1edd198cf3176e07463da4fa0063bf8826be47bd53e7fe773965e345fded806db217eb1d8c78f29612b3f6923ea9603cbffb0663bf4949d7b38083c663b3022f68fceb7bb043f6118682a9ff8c02ec92bfcbe9fe7dba49f5c30d18fb636c9e2f2ce7ecf7144f2a6097e4bbe5c4ecf7140fcdc0b0b734018bfde03a784af3c53504cfb15f47dc0ffb0bbb8160ecbffc002fa95e58edc1d8bf1a4dc1163d2f36c1a8575495609c5f1a4aa6f3a134febd83e2ed2f376093faafa3e72fcc01f1f50b3c217ddd5660ac37ad63f00cfe5407cf69beef5230ea35c6026c60bfe55532e55b39d8a4eb6f73b0d8df20ee6f637fe04a32cdff03b043fd757b904cf9d9168c7ae7ed2299ce7b3692697fc898d8c2f99ddb128cf3b317f49f85fa6348f75f1a06d9afb604c37ff817b04dfa1c0ec10ee9bb4ef22ecd015d7fdd8047345eb5079e907e598e60d2d7b40363ffe3762598e2d5750e16e703d692297ffc128cf35768af897afb36108cfaee5c32d56b0f9269fe2e24f3f61731d880ff5125d37ed80558ac974c25d37ec09d64de7fe64132f73fea27d8a2f15732c9b4bea008a6f655a23fb1dfb28c24d3fe470d8c7ae1ed5132e95b2099cf8fa6e82fd4e3c32fc9b4bee3125b38ef7723ff641816d99b7d03dbe48fc22bd8a1f9f95a825d9adf4af28706eb1ede5eaf060fe97aaf133ca1fc5605237e6d8ee009e5bbd5198cf58b4efc1efb6fb71730f67bae66e025c5df8a09c6fecae020998fafd248a6f3ba909fd93b6f4f71025bb0af52329ddf9849e6cf533fc036e993924ba6f96726993f2fcec00ef57ff12e99e2c34a32ed7f0cc1f017d5bb649aef7cc9bc3f22f13c97fa4fc3f859388f5a6d25f3f69443c1d86f3b06e37c4be54ae6edd354c9bc7dd791643aefdc4aa67acf2b18e7f134f13dced325a4ef26d3379affc95f9826e2cb952a99c6f7153ca57835fd0463ff691108267fb579028b78c2001b34dee14532bf7f62814df88b4832d52f2ab085f59d0118eba3752899ecff2699eae307c9b43fb405431f9454329d2fbb97ccdb938cc02ee95b2adaebd2f8b590dfc279e448974ce3f12998e67b4d30ce074713c934ff403e0be72d2dba9fc5e607defeca014fc85f5413f094e2313b954cfea0114cfe467901233fd41792a99e6a49a6f527c198afd71bc9549fb9822dea8fba944cf9502799dad782b17e6d7592c9be6782495fea42321fdff8c7f77cbcb477b043fa1deb9229ff4904e37cc697641a7f0decd27828aa647abfc45032ade7b982495f13b25fcbc2fb0c944032d9cb93606abf5949a6f314cf60bc4fc00a24f3f6b79960d29f5a914cf11dfa53d87bf82999d6df303e16ceb755a4cf369b3fc8ff7660ec3f57de04933ff0f760ac5f665bc114df2b67c1a44f57156c507f5f1cc9b49ff3198cfdc69bab60aac7ac4f601be7fd22c1781fc95132ddaf95ccdbabd492b93e794f60e883229e87fd9ef959326fbf3a964cf9e00318fe5d9d4be6fda192fed916ce83a92f92a93dbe64ca8fd11f229e4c6f92f9f3938164ca1f4f82b1fe994ae6df871f60acf79a6bc9bc7f62f49785f3b1b75230d95775914cf30bfacfc279b22df90f47c413a621995f9f7be011f99b6d2b98e2136d021e4f683d63059e4cb83e7ae2fa19dd4f3b83e734df943118f581f22099cba33c8397549f592dc026d69b8f9279fb6f9f60e453d6156c537f5a63c9644f8160aa47695330fc8dee0aa6e7c5b964f28791648a6fe692297e580aa6fa6628da8bf8c3bc974cf9642118fa38954cf58f89649acf1692e93c27e9936361ffbdd149e6df2b9e609c1f7d96ccf549ad24d37974e887d0676721998f8fba924cf1fa9364b247713df687754f92e9fc672399ea45a23d581f35af92f9f7b9f81eef13885ac1181f4b32d5dfa10f16f6a3044bc974dee9158cfd3f892399fcbb2d993fff26fa6786fd3ba23f711ef146d7bbcc7e283f7b944ce7995ec0639aafab25784af671db0a9e52feb200cfc9fe320f2cec650f5e52beae7d49a6f319e2fe4bd457766083f453bf80b11fa878154cf6b2adc1585f37c4fde0af235530f251717fc45b9e90d7c17ca848a67add5530ad1f74a160aa8f76e279c8e7c34630f97f3b174cf2379a645abf247fe35a781f90ff2818f3c1443297571d49a67cfd4930cd87da1b58e8ff5630ece74b32cd1fa564aaef7982697dc87900633f73694ae6faa0be4aa6fd789a648aa724637fd25a32ed3f79924ceb3d3330f6f325ad64de1fd98364927f2598facbd42553fd3594ccafcf311e16cecbdf22c95c5e652a99de7f267e8ff3c9e1bb641a6f4732bf3efb008bfd812f92297eb32473794b31bec87fa30a2ccea3ee0493ff30f79269bfe23718f53e6b2099ea0377609c7f34be2453fc7b914cf91c1f2f63c0e6478a0fb6e019d58be207c1538aff8fe039e503712b99e6eb5c3297a750c04b1afff22618fb1922c1347fc73bc9b47f4630f2f9eda360b2efab2e98fcd1ea158cfd83452598f47f6b48e6cf8feec1a8b7a40bc1f05f3bc9bcffb61918f596f85d32d5e3447fbaa48ff94030f6ffdc24737bf267c416f6a7ac3f2453fe580bc67e99122cceeb9c24533d6b2299f4ad108cfce30773fd500cc9341f7792a9fe6b0ba6f5da6b2399ce372ec1d85f1d9d25f3efd59b60f89f3bc9bc3fd4a364f22f6f60ec97543792797fa8a960d8c74d32f9932918f61ed49269ff832d99e44d24f3f61a23c1d43f96fc1ef1fe1c8cf763448e645a3f16cfc3fe3d632899e2955832cdafd01f0be7d5ad4a32ad9f3792b9fcc64030ced3d792b93e9723c9b41feb02c6fe67732b99f68b7c4aa6faa3180f9c17f6499ffa032dc46bf098ec5d8f24d3fe08133ca1f530ed049e527eb7f50593ffb83c48a6fd570a7846f7d36b30e6fff25b32d5ab73c1145f28ef82299ed1e660d473b64f92a9def92698fcdd5a3cdf46fd24914cfbcd74c9b43e21e445fda611f7437cb1fe124cf65edcc02edd3f7225d3fb001e05d3fc5ebd108b7879bb93ccfbc72f05937e66a9605abf538e92493f56e021d99f6249a6fa5b2b98fc9f72914cedc3785a789f52f12698e42943c964ef17c9e40fe792697e1849e6f2648e60ac470660bc9f243b4aa6fd3fa1647ebda20826f9d24c32ef0ff55e32d5d7447f60fe2f9f25933f5a4aa6f8e62c18f9502299f40ffa61e1fd4b4a2899f6279492495ed19e29e297028cf795048d64dedef05530e29137c9e47fe4efb19f740cc6fed152134ced0f55c9fcfb488c17dedf74b9934cf64dfa3c326754ffab0cc1643f510ac67a78ba04633e77466083ecb309c026cdffa921998f476582b19fa7ba0aa6f93e5e0ba6fca6188051bf4b447bb1bf4aff00237ff60f92e9fd41f792e9bc7d2599e6f717c1d8cf247e8f7a5d160ba6fecf23c1b4bf21a0f86264e13c72f82499f2fd57c1f06727c954bfcec098df755b30d9ef7a2e98ecdf78974cf54cb447d47b3d5330e2cb0fc9b4df47dc0ffbd12ea9647a9fec1e2cde07f92e99f60b1c05239e3e4ba6f9df974cf9d74932ed9ffff17b2e5f70014f90ef288261df8664b25f5332bd6f0ae36be1fc4ef92499f22d4b3297ff593c0fefb7525dc9e4df3c30de5fa53a9229feb12553bc2ec66f46f2565f92c97f37609ca7b4df25d37e825a32adff89fba39eaafb92293fea24f3ebb7627cb13ebbfd944cfbadbf2453fe37154cf287a664d257d15e715e80fa6fcce673f2af117846f94076075e503d2188c1d88f9a9b82c91f2457c954cf38832df2279ba9647adfe70a8cfaecf62098e2ef6e2699ce27ed04533cb2d5c0d8efaa3c09a6fa46f12199ec5d3c0feba51dcd9f63517f5dbd0886bd3f4be6d76f7f30d59b62c164afde5432d5271f2453bdf0118c7abd77124ced4f1ac914afae2553bd5edc0ff3b9f32498ec6d1308a6f66c55c9341fdd83313f9ba23da8ef46a564dabf664aa6fd21f27b8a37e291643abfe249a6f9ce174cfb13a2028cf78b25b9647a1fd4a364f20fdf92c97f0c25d37a512599d607a03f22bf375ac994ffa49229ff78944cf94a2618fe48fe1ef59e4632bd3f270163becf2ac994bf8beb71fe4b0d2453bd27964cf552d13fa807da2f9269ff612499e627d13ed40f424330b55f13d763bfc6ed4332c50f37c1f0f78a64daff3d964cfb43c578637daf7a138cfd39429f719e6745fa30314df21f590ec6fedd32134cfbb10c5d30f98bcb8b64da2f3c01dbd87fbc174cf5c92001e37c4d25eee760fff1b7605a0fc8b792e9fc81b8bf43f149740263ff68fe2a989eb722fb9c8878201849a6f75f9e25d3f37cc974fee15532bdaf752898ecdd0904d37a475080512faf7e30e9432e18e7f56e82914f5482c91e0bf13ce4ff7e2698c627fb924cebcfe2f7d8ff1b3e80719eaa934cfaee3992491e717ff80f6f2699f22ff13dcecfa753c9e4bf0e92293f394aa6fd139660b2cfc8904cf9df4230e68b4a32add78bf1c0feda740ec6fbebcab3648a8f2792c95fd492299e1848a67ccd164cf25b2d58f887ab64f2379d64de3fea4132bd6f4efc7e8e7827944cfb7f1e2553bd4f134cfa6c799269ffb6781eea8df14432b57f2718ebe591645a2f8b05231f15bfc77e0f652699e229f13cbc7faa9a4ba6f361427fb03f5013fa8cf5e2c495ccbfd73dc924af180fec0fd33e24737922f17c9c6f6cc91ea626f69b5e13f082fccfe64d32d547bfc0385f565ec0886fba1cecd07a663394ccfb237b05633d627b144cf6779949a6f75fd682c93f06349f4dc5fa433d154cfaace982697d721b4aa6f3c11918f585742299fce5bd64aa67958229be5ac560ac27ac12c178bfd79b64da0ff1e37b7adf95fc3dcef70592a95ebb174cfe3a10cf47fda01c08c67e1b5f32bdcfb0134cfde12a92493ed17f585fc81f25d378dc49a6f8e253308d57249e3f417c7a904cfbcd7e30c5d382b11e982592797f24df82b1de954ba67aa6907f4af69baec138af6c8d24533d692f99ea733bc1e4ff3c0b2cde37be944cfe712499f2b1b964b2675732c52bd0670bfb45d54832e58fba64da0fb301e3fd8d4a2499d67f857ee0fc72f82d99be5f81713e3e194aa6fd49e27e588fb89ec1884fae13c9d4ffa27fb0bff0229e67537fae481f66e612fb2d776083ec3debc026eaa53618f18a3b0323fe580f04d3f5c98b64da7f63825df217852e99ce77907c33113f6c4dc134df6f1f24d37c9982b17ee04f05537b9a77c9148f88dfa3deb07a92ccfb7f73168cf365778229be48bf25537d19f28bf501e55e309d4fc94f92c97fcec158cf2b12c1e41fbb4fc9b43e3d104cf3f7f6158cf87ebb170cffe448267942c1e47fba05187f1f455049a6f5614330f4ff0d8cf3b88ab83fde3770d94ba6fafc12bca0f6a557c1c80f6dc9644fb964aa7f1492a99eb1934cf3f718bc44fd632199f2ab67c914bfd782518f16e389f78346a23dd8bfa58c25d379ba4030c95b5f2453fc5c824deacfec2299f6eb6c25d37ae74630e2b94632ad170bf9b13fb87b964cf514713df61bd4aa643a9f0f7bb31cecbf10fa28f6e3f89269bd83e2adb9399f52bd33032fa6fcfef9086cd07e8d95f81eeb1b97a964b2bf0dd8a2f958ff02dbb41fbbbb825d9a3f2eb5608a3fe28560caafb6141fcd45fdb11a83b11e180f05d37e5c5f114cfe669d8051ef6f3dc1a40fab108cf3d9e55a30ce3b1a60d4d78bab649a5fe5f7645f978364dededbb360f247452899ea616730d6e7d6779269fdfb4330f9bbd4148cf8e7058cf5b8e44932bdffe25e30f6835c24d3f9d1b964b27f713decdd16ed9b937fd2f792a99ed2082679a247b0380f33964cf3ab18af05c52f57d1df381f5baf2453bcff0046fcacfe60daaf6a4aa6f9ed4b30ce7fce25d3fedd1918f65f8af1c37e6d4f954cf9cf5a32c927fa17fbede254326faf22aec77c1bd582a9fd971d58ecef3524d3fe5ea1bfd84f97d1f82ec47a83be124cf5c8ca07dba4efbab8de9df2dffba44f0b51afeb5cc1747d32154cf61eecc043ccf74f9269ffd3098cf7495c1e25d3f9c14a30ad9f281f92693de2001ee3bcf34430e94f71114cfe259883f17ef6b52599de2f36144cfaa23c4aa6fafd188cfa79d60a267de832c1345f1786649a3f7e30cd97a2bdc86ff55232c54fb9648a6fc4f367e44fbaa1649a5f669269ffb7f87e4ef6915f2453beaf4ba6f9443c1feb655a2c99e47b944cfb532493ff6bef25d3f86ec1e2bc532318ef1712fa82f3cdc55e32b5ff1b0c7b5acd25d3df9fa04ba67ac25e32bd0f44b4cfc0f95ad13f787f759c08c6fb8f34c9141f6e2453fee80b46fe22fac7c2fbafef24933f17fa8efdf9590dc6fb8d4a8a079626ceb3d513b04bfa5a527cb664f645eb65067848f359fd8369bfec063cc27ae45532d5e31f25f3f15c3d83315f5d12c9544f740553fe1e6592a93f3dc158bfb88127145ffb9560b2873a96cce5d75f25537ce90ba6fa62f283a95e2ae49bd2f82b0f82c93ef385645a6f17ed453d39984aa6fac04c32fdfd5607c1a42ff14a30cdb7b74232e5a76f60e483fe5132cdafb960c4fb5f60c4aba52218ebaf7b30d69fb6e27b9c1f0ceec1d82f962b92c95f1d24537da7148cf93d05239f534f92e9bc8bb81fcefb1547c9544fabc1383fe68af1c67e92f807d3fe43213ff6af7662fcb19fdaa37cc410f5ebfc5e30cd1f6b07ecd2f85a347e06332faa8f1cc0d0efdb17784cf6e91a82499ff44ff004eb318f92693fdebd649adf5f05937efa67c1347fe91618e7bb6e7782112faa60ac8736a1601a8fac00a31ee98c05e37d155bc1347ff8aa647a1fc009bca0f1f21682c99f9ae2fe0b6acf360763fd62bb168cfcb0148cf7790879f1be9ad4954cf53cd17fd8bfe49f24533db1164cfdbd7d07e33cd346fc1efb17b789643a4f300423bf303760bcdfec42f669b27885ee47f38169e1bc977e124cf18d3706e3fd11fa163c22fdda9482a7b43e7805c3ff058660ba9f2b9e87f364d14632d5fb4792e9ef37fe02e33cd926028bf364efe039c9b712f747fdd9ad24d3f58231fee58b601affdb9b648a6f7230dedfe12d25d3fa760a467d3817f218145fd99f9269bda1924cefdf93df23fe7e009b349f98623c2c1a5ffb2298ee97d8609c3f32e6609c3f8b2cc9646f0bc914cf3f4aa6786607c6fe958ee20f8bcdafb43f81e20b165e93fe5c3e25d37e30f13dea3ddd093cc27ede2d18f5983804e3fd1d9a25989ed7168269ff61fa089e223f9e8167d47f862699d6f39e25d3fe68152ce2b70318e7c9ec67c9f4fe12138cf70f252918f1932b9e67507caf08f9f1be9938069b648fc15e308dbf32108cf7df88e7637f627c150cff7a0163ff42f000c6f99c88ec9b4d37a867d1fc62b3f1a3fd3c743f5b8c5ff102463cb2da82117fb4df9269bde12498ec510f25d3fef01c8cfcb8b425d37eaa5232bd5f2506235ed85a9269bda4154ce31d89f6cef17ea8037841f76b447b17d84fb6012fa9fd6b211fea49978b608a4f0c156c423f3bc9b49f3602c31e6f7bc1d0bf4a32c50fe44f6c1bfb3be22918e7e93a6287d907adb70ec063eacfd51b784afdb3d1c0c85f8a5232cd97afe0398ddf652d99fcf75130e5879d09c67c961482c97eae7bb049f74b3ac9349e86649a4f2692b93cb978be8df749b88229be509660eca7f39f24d3f922713dd6afaedf8269bcd690c7c6f9d755001e52bc5b533ceb5a63d29fab2199ce63edc1139a9f82083c25f9f5068cf745dd2cf082c6238d25d3fb1d378229bf503ec178dfce6a0946fce9bd0aa6fe5ccf04e37d0af27aca77ac1bd8a2e747df9229fe2dc136f98ffc4530e9f34a934cf9f10fa6e78be739387f48fde9daa8f7273c3e310716f67b260f9269ffde1318efefb91e24537dcd06e3fd79f6156ca0deb1904cf6a080d1fe6a2199e67b5f303d4fbb801dd8fb0a8cf8f9a611db78ff5dac8211df745f60d413133e7e2c389be17ccc183c27ff97459279ffac4b30de27947e0826f94c4532bd7f5d032fa9fd6d2a784af58e21d8a0f9e1aa48a6f53f5b30d58ffd6730de5f94ad89ed01d9ef86eb2b0b2eb0feac6fc04b92af7525d3fbcd8f6093fccde64532d9cb4d30c57fe1128cfd33eb77c1a41feb028cf7355a1f82e9f9ee1cec62ffea9b60f227892918e785f0bd8dfdafe9b3601a4f270463fda81980f17ea59adbbf3966fd41ef472dc14bf2075b1b6c60fdec4132d50f0bc9944f1cc126c693dad7bf5e9ff2075c6f63bd6b45fd33b1e6549fb8adc0580fdc7682c97fdd5ab035a5f74309c67961e50bec523c1de2f736eaf7f11c3ca4feaba8bfa6d664467fffdc080c7f53b492a97e6f08a6f686776013fab4964cf69982717ed224ff30b5b15fe81608c6fbd3ce60c48b2d8dd78cdd8ff2eb5430c5839b5730f2dff60086be74a4af33d6ff148fdd8391ff6a74bf390b30693de808b6917f64c436ce8fdf1230f6bfb7345e0b6b3a27fbe9c0f319bdaf8bfcc782a5f7e43f0f60cc4705f99f256b3fedf71c826d92ef3625b627349f68dcdf9b2c9f9b927f237d3458ffd1fc5b8327f007241f530f1aaf6b00467cad51ffb2f8674efd41fed5b6711ed0e4fac192cf39b57733022fe97ecf977feda32abf7d8c9f3e26ffa7827fa74fcf0afb9da5daaac3fe58ff6a0be8f3df21cb2f72b9ecf3bb5c0afe9b90afff77f7df5116d62247f5d81ffad87ddba87590cbfd87bfb3f1f9779605f20899fa6be8cfffb79fff167b71e9f393743ffadc1663f4e33aa96fbdedf8eccf3f18b9ffff65e16dfbc90e6009240d1fa9bf2b3bc9439ee0df4d1661eb3f64f9313a3f24f3e4e717cbfa7791e5379fecfefa91d758f05a8e94457a8a7f2b590235542335561335553335570b364ea55aa917b5669f86e951ab76ec7365b2de544dd5d99f15ff9dc67eb1fe379365a3aed827652391a85bf6b963d2ecd43dfbec982c07464726dd91fdfb4e3da9f74cce7bf5817d0c76e53ff4daff5b6479e43dfdc446e699fddb597d515fb94ebda9efea87faa906ec9a9449f8c524f85607ea501da96375a24ed5993a67d2fc1bc9c25a7a5637ec9f91ba607f02d8fd92c9f2cafe6929aafaa4284cc7be15431d2ba662b18fad380af31a8aa7f8ff3d92fcf7cc954aa0844aa4c44aa2a44aa6e44ccf5ca63d2dfbf4b6622a059b45064aa954ca45a9954669954eb92a3745537465a5acffe8b5ff37cab251b6ca9db253cf8aa2ec95036bf1513929f7ca83f2a83c29cfca5979515e9537e55df9503e952ff6dfbf9581325446ca589928d37f23596c65a6cc9505d3b393b26413cd83f261288661b044c0b00dc7700dcff08dc0088dc8888dc4488dccc88dc2288dcab8a87746fddf23c99f9345b58ca6ff23a390df6677a3353ae36adc0ccdd08d95b13636c6d6b83376c69efd391847e364dcb3cf897d8e8c1fd8e7d178329e8db3f162bc1a6fc6bbf1c1b4b0cf02685e757f9b797f9aadfe999ff8af6561527c1a5feccfb7313086c6c818315fd4186363624c8d194b9916c6b2370ad3304dd3326de3683aa68b8fc73ebe19b04f684666c465eaa53a9a31936a6726666a66666e16666956e6c5accdc66ccdcebc9a375333757365aecdcd2f33b1f2eb1cfcd764311a736bde3169becd9db9e7b21ccc8379344fe6bdf9603e9a4fe6b379365fcc57f3cd7c373fcc4ff38b7dbecd8139c467648ed967c23e63736aceccb9b960992a3334e3de322cd3b22cdb722cd7f22cdf0aacd08aacd84aacd4caacdc2aac12b9dc2f91c5ffaa2c56655dac4b3f2e566d0cad5a3d5b8dd55a9d75b56e9666e9d6ca5a5b1bd6d3f7ccd96ead3bd6522689b5b3f61677bfd6019f2393666a9dac7beb817d1ead27ebd93ab351da592fd6abf566bd5b1fd6274b98bf5884b0601e3d61b3e9c0faeea3cf1fd1d1bfa2634cb31a8bfe82f001fff74a89aca135b2c6d6c49a5a336b6e2d7acdb196cc74fa4a9ed18f85b5b34d48f2439643bf4c614e6ddb766cd77ab03ddbb7033bb42326cfc178b4633bb1533bb37336abda766197ea935dd997de92fecce74fc932307756cdc6646055aa67d77663b776675fed9badd9ba71303fec95bdb6376c249ef9676fed9924625414662bcc5e602bf766681bf6d6beb377f6de3eb0cfde3eda27fb9e8debde7eb01fed27fbd93eb319d7b35fec57656fbfb1d1b07efffcafc9f27cb16a66274cb78cc6f8b4df992c1ff6a7fd657fdb037bc8faf3c47a7864bbe6dc1edb137b6a2db924bb7e64fab161ff9cb1f6ce85fd9b91bdb0972c485698ddcc1dc3311d662c8eed384cd2bde33a9ee33b8113b218f5dd89545df17fcdecfe155954d7183ab113333bb1edda499cd4c9ec2f27778a5e0ea7640ff0ed3d6b55653d3b17361acf4cc706cc6216dc6ed8ff3b356b6be3b44ca6b9d3998173756e8e66f7938feeac9cb5b3b1b7ecf78eb365d21c8d9d73e7ec9cbd73708ecec9b9771e7ec9107ecb7a7eb6a03f234b2f09f3c683fe7ecea3f3e43c3b67e7c58cadb33db1ced6b33d6656cc3ece2b6b5dc5dab5c0a7f765ec63cfe9e374f8bc39efbd24f6d20e9d0f66fd47e7d3f9ea7fe954ce379366dffff5f6cec8e9ff5acca933b3eb9fe4f8576599ab9db3b05f9c25fba1e21a6ce2b08c23f34accd3bab6ebb8aebd702a73e17ab66b1f5d9ff9a8931b981fccdacfaca5f76ec86c2ae673e6d18ddcd84d98bde0e3746e6a7acc73b02b594fbcd93336be67377373b7704bb7722f6e6d176e63356e6b358ae67656f3afe8987a70afaaeddeecd6d55cdd5db96b3626cfeec6dd9a43f7ceddb97b3622dbde86dd837bb4576e6031ed331df7e4debb0feea3fbe43e1b817b765fdc472195fbeabeb9efec5707f7c3f9703fdd2ff7db1db84377c474f1c0fe7dec4edca93b73e7eec25daabd2f6091b8a7aa81f70fbdda9f91c533d8f46d79b6e778ae937b9e71b2179eef055ec8e4601fdbf0222ff612e6030eb6d1eb8c977a99977b85577a9577f16aaff15aaff3aedecdd33cdd5b796b36e7c7c6c9db785befce7a70471ebb0b1b5d9dfd3ff36fde8e59cec1db7b07efe89dbc7bb5f01e58467af31ebcc71f5af5bb1ff853b23c79cfded97bf15ebd37a730637362dbde3bd32f2e099368cbe6f229b39ae7de76bd0fefd3fbf2bebd8137f446ded89b78536fe6cdbd85b76441d7a3aff8866ffa966ffb8e71f45ddfb31e7c9ff9e8ad6df8811ff663e547ee8069e4831ffb899ffa198bd6be51bffd523c9189fe75599e2f7eee177ee957fec5af0d6603e6d46f7a49fc967d3aff6acead27ffd6cf77bee6ebfeca5ffb1b7febdff93b7fef1ffca37f62f966a2bef8f78aea3ff88ffe93ffec9ffd17ffd57ff3df8da3bdf03ffc4fff8bf9f485bd30c74ee57ffb037fe88f8cbd3ff627fed49ff9737fa1382c27fd6679f70f597ea97dfc99d8d25f066aa004060b112da65f6aff97c0f7fae5b7811d38fe3570cd0fe31478811f04411844411c24411a64411e14411954c14509839a7d1afb3d68838ee59af3e06a3f07b7400bf460c5fc48ef0d9560ddeb99ad30d906f6c27a0e36ecaedbe02ed8057ba50e0e4a191c8353708f0af54f35ab3f2d8b1d3c048fc153f01c9ccdd829ad73f012bcf6da15bc05ef81137c049fccf38c83afe03b1804c360148c8309fb330d66c19c49b47016c1325443253442d3188416fbc39c71e8865ee88741188651c86cc73a8709f3cb4698f29881c50f61d6fbfc300f8bb00cabf012d661e32fd421d3b41fb2387f94e5e77af6cf63d25f1db661175ec39b19875aa8b3bbafac636f27e13a5c33795e8c7b2f0d37e136bc0b77e13e3c84c7f014de870fe163f8143e8767f52d7c095fc337ab08dfc38ff033fc62d2982c22f6d97ff90e07e1301c8563e3184ed82cb40dd6e1943d63e6ee99fd7c9b53f6dfe7e1225c466aa428456444e68fcacdaf5a46b288ff862c28f1d4c8525fd5d7c88e1c7f19b9e673e41987c8376751c02375a61351c8e2f7cf88e524511c25511a65c62dca8347ab65f369cafe3c4645f01895aa1255d125aaa3266a5910d345d7e8166966678ccc75d4467ab48ad6d126da4677c629da452c82f0039ef778d68ecdb40bf6bc7d74888ed129ba77d2e8217aecefcdabed866af4d1eeaff6f2932c068fb043b77516ca2e7a8a9ea373f4629ea357f6a437e6750d16a79ca37773c2e6e8aad7eae823fa8cbea2ef68a0ce153f1a2aea8f2a2c7f9e1b8da27134096d2b8ca6d1cc8aa379b48896b11a2b56111b319bac629b85166eccbc3d9f73962c7f93b29843e33ef6e3200ea3fb388ae3f081f554cadbcafc5a1f25fe2c0b7ff68f7131d4f8f9e22cd4f73889d3388bf3b888cbb86277bcb0f87111d7d6dedd5b4f7c2639b959dcc46ddcc557ff515dfdb4f662cb3bbaca5875e25bacc5ba3f8b57f13adec4dbf82edec57ba5890fea323ec6a7f83e7e881fe327e3143fb3d866c9bc7380b86e689de373fc120ce2d76011bfc5effd88736b3055a38fdeff992c0ad34726cb6b9cb8adba8a3f4c23fe649db7641ec6b09ee3da665ed3fc0c33f6dcaff83b1ec4c378a456eaca7e51ee94713c862c3c1eecff9dfdb7493c55f57816cfe345bc4c54e3c17e4894c448ccc44aecc449dcc44bfc24484263efde9b3e8bd8d887e7a42c3b65f3d6d17c4da2244e92244db2a84872b1baf07765b1c886f8155b36bbb2fe65914fa2b8499194e69b71f26fd69e8dc9d9b998dff6c13ad953e39054c925a99326d6d5f7beea9db4ccca52f40d55c1d97d95bb385332bb4abae49adc12cd38252ceb4956c93ad924dbe42eba26bb641f1c9243724cd82c657a8ec272014364d94c9b4b2f4dee9387e4d158264f09b34ab146d2e722ff4c96e499f5e198e50e2bf6efe7e4257935dfad3e3f3f276f56ff8afa7df26ece8dfb709c7c249fc957f29d0c143d192a8b64c4abe3bdc7b4fbac8dc9c264b2df93713231de9269324be6c63159d8c76469c6a99a2aa9919aa995daa9e3dfa76eeaa5bef1603a2cbfe1b2f45910cb54b769601cd3308dd2384dd294cbc2d76dfa7cc4180aaff6932c96b0fe3453466e6b97cc8e9d344f8bb4343fd22a4c98f75a5afdfe8687f4621becee75daa46ddaa5d7d451f4a04b6fa996ea91c9fd3f978549c3644957e93adda4dbf42eddb15fedd3837d4c8fe9c9d8a7f7e943fa18fae953642b7a344c9fd373fa92bed2c8902c2ca7db4681719fbea5efe947fa997ef5feb197a56f7f9f5bfd2acb8f91e17a78607dbb5412ff2139a7dfce9069eb673ae86da5f7c54ee5fa696f8f553a4ac7e9249da6b3a4b50b65c3f42c5177fe23ef31361a7d0edad724d379ba4897999a29c63163f971b4efb3e3ccecb3e2649559999d39ea57ea0475e6665ee66781e9fa81a3a06ab0eb675096e1c5599845599c25ce23b3172e8b6af5b9d52fb2889a9add3f99d14efd4a064ccf952c553eb2cc74cc2fe61b077dcecbf477613d982316e37efaeb2ccf8aaccc2a61e7e45b98b34db24b56678d5dc763f53b6bb32ebb662c62f343d6df6ff6c2fd66de9c652c99661ce3a74ccf56d93adb306bd3b36d76e74efa5999c53363a603cf76bfcd8445369691edb23d93e5901db313d31d85db7491ddff268bf28b2ca67a973d3032b24743c99eb82ccc37f67d642ebcc4661146f69c9db397ec357bcbde852c1855577d4bdaec23fb8c9e93419a655fd97736c8d8e866a36cec8eb24936355da7cc66d9bcf7ebacbf17d93257734509552b377233b7723b77d8377d3d6dc29edad74398b7cedddccbfdec900779a828ff4496be024a7dabf8bd36f63edacc23c330ee982cbd97efed70c024619219f7799c27fe364ff32c3c30597eac4172bf95e779919779a556f925aff3266f8d63dee5d75eb7dc613f1ef9cdfdeeb3e25cb316f153aee7ab7cad9eed32dfe4dbfcced67396c1b09879c8729a4bafd9feb7719f29f93e3fe4c73cc88e4c9b1392c52afe812cbd0f559209d332db2ed5263f1926f32baed05ca6678eed5877ecbfbce6f7fe5dfe104cf347a3fd690d92d97afe943f671725cecff94bfe9abfe5ef7dd4937ff49909af719cddaf6cca73628dcd8871fe997fe5dff9404d9cc833f3613ecac7f1579ff1997dbc4c51b4cfee30c9a7f92cc9988e1d59a699f47e377c0bdffe200bb75792259fab7b854d65ea77be302c63cfd2fb1dd5bc481673943bf9b2500b8545f5b3e8814547b6dcabc0575793b1fa919f0ba33059b7d9ac557d2cbfe8f312ebaeb7e4c2e96b1785cb62ad53e1157e111461112923d52ee22229d22233f67d5ec365611ac6aecdd98cb92f8aa22caa3c2459faf6b398f5f597f9e5375958c6b34f6fcc62be8b0b7be4ce74a97227646177ae8ba6688b2e288a6b714bf25f7684303d53fc645268855eac8ab5710835e7b597a5d8b06cabaf6a7ef4d5be60cd243916dbe2aed815fbe2a0d8c5317b284ec57df1503c16cc3efa1a279764614e0b268f7128cec54bf15abcfd248b1aaa7f57164fcab22bde59fe742a3ed894b5efa33c5420875c9645f1597c15dfc5a01806398ba2c90bffd8555114a3625c4c8a692f4931ebd72c989ea8c5bc8f467b5b6677e03163b12cd5ecbb544287c540d7d250c2d22cadd22e9dd2354ebc22c2ae36c7f6a1f498cdc6a55f06e1ae64290dd731f7efc822d654c40cf3adb665c472b053191b2ecbef852cfb5e16f3cb3a9749999659996749745f163f564a7824669465599597b22e9b5e92b2cd34661b565f3b6371dc985bb4e10ffaaca7ecca6b79b3be4acd0a4a9d8d67c4a45995eb72536e992cbabdeda326368e5bebbecf64cabb7257ee7b591425cd7a6d28b552fb45961fd13ef773ea8dcd103b75c56439183e1bebc81c5b7d3d2cb0674e63cfcb63792aefcb87f2b17c6271ce86e527a398c594ca9d5d97cfe5b97c295fcbb7f29d79d12eef32adafee9bb3bebec13f337b5f7eb079bc2c3fcbaff2bb1c985d392c47e5b89c94d3c42d67e5bc5c944be3c45c7d156a7c4c0f665f1939564a655466d06746a7e0d4ef2ab2aadf62fedefb3059d8b7663f36c8d834bbaa2c26cbbd19b2deec97483a264b6b06c6a1b22bc79bc5e3a00996e5c4dc562e538ba86236cfa29545e5574115329fca66bb3ea736471513d73a313946fd9a4515dbdb2aa9d22aabf2aaa84a2bacaaea52d55553b5556745c1b1ba062b362e5ba7a355b57ebda3aff254b74aabf42467b21c83a36ad9f51f641151a5cf6571d488e9e246bd315559556b264bc4662c268b193269f64c96a37bf65a6fae2e2387e9eb5bb5a9b6d55db5abf6cab53a54c7ea54f575e17be6c717d681c5d5233e26a3fe2ebd3d570f4c96c7eaa97af646d5b97ab1aaead5dc556fd57bf5517d565ff128afabef5e966ac07ac2e5f5cf678bddb11a56a36a9ce4ce23c6c5339adf627e4bca6270efba60d1ee539ac5a36a524db98e912c51af654c965335f33a8f656bca3c34ccae9a87af9eaac6ac3f17d5f2a26637f7f5a25cb81fb615f38349d17f26b406c3ee7570377d7e75312fd6c5be38e1cbc5bd78179f8d897f092e6134b8449798c9d2b91fccbadefb159cde673059946a7449823e47f6d9c7fea32ca859283c96225912f549bdbfa4ec9e593fc6fdfa9c6df523d4af3d18a774e75d2fb9925e8ad0c8eefbbcfd525eaacbe5525f9a4b6b9c2edde56a6fcdd1e5165f98bd93244764f10773e445d68e5da55df4cbeab2b6c2cbe6b2bddc5d7655a7b697fde57039ba2fbd2c173633b1d8cde27fd5d684fde2fef27079e4b2a0adfd5add3f95256071f24d29c2faf27479eeb585d61bfb95a07ecd81e9d8a377f35545b3df7975c88ca6feec72bebc5c5ecdc4383afae58daf136d8235f75dbd7e8db92c7c3d96f5f196c5dd5333bebc5f3e2e9f97afcb777cbcf06a13d388e16578195dc66c869ddb6c66cd466c967db5ee7adbbf4c2ed3cb8ccba2f0bcc2fe5d16392f4096545373b5cdcf97f9657159f6eb90bdcdb2d8b85fd50accc08d8c83a7298f8a1fb4c620fca8d55a49b6b5519bc98ac9f9565bb56def1cc38bfaf99ecd8d336ef74cc7b8341e9b3146e6dcdef82cdeac9ddaadbddaaf83484b46e9ad0eeba88eeb84e5ca9fcce3796c6e9db008f4c9dd32590e755a67756e325990875bfd0aeaeff9cbcfb2287eaa2b6e5dd4a5f25557c68149c0bc0fb3dfa8978569716cc69eee2b6aa9cc422bfc8caa9a4590ec7f0d6b5beb7eb84347cdaf2c63af9cd73063f67faa22f6ebdeaff7d27875c746f9cbfc626d5cd6d7fa566bb55eafea35d36ca77c8af27a536fcdd8b9b23cdceb6318d6239bdec2eabb7a57efcb3d932515759e3fe695d8112074cc55efd44370523ae5b13e184cb3597e7f6fdbbc12cfda581f599b4ff57dfde0b6a1556d13b77eac9fea67e3549feb17a65b8bfab59f159cd728b02d1691ceeb37bfb1b7fe376fd994b220ca89acbdfb5abfd71ff56738a8bfeaef7a500fcba01e992ed3c27db17077aec3f29881cb324b63578feb493de5b2507ef20f7264f6a797a59ffb13f6ff0d9bfda7f5ac9ed70b9657b2fc8bc52e5b7b592f9d779bcdc98dda288de13f5a35f3ca1f8dd958c64363db47f6d9374e3f438693be6ed3fbb2c665ff34a2d0def09a9af1cb1ae0d074eb5be3357e1334a1f3d4444ddc244dcafae291e54977eeaec9ac2dfb158b429bbc299ab2a9b8bdd09ca8f42b763fcb42732397c5e4b364aa8cd2cc99c77a7369eaa6316377c3eefb7039352d0b8359d6e186c6aee99a6b738badd0b48a466b74fbc18c9b557aecc7c57c6fd64cdfc76c2c3efa5cbdd9345bebdcdcb9dbbe8283d53fac9c9b5ebfb3a4d935fbe6604d9a63736aee9b0726c363f3d43c3799bbeb6be64c2fe3e6dcbc34afcd9b948559c51f65a1d95ecaa2f1959bb5faa138cd7bf3c1a22ac7ff609e89d973bfa6686f9b4fe3e0dbcd57f31dbae167ad3483669828d60b7bde283359ae356bc66c961b46611f41369366dacc9ab971b296eeb6e1e3815566167d9b9ed3354b63efad5bb5555aa3355bcbe8ebd581396efb15c45d9f2b87ba71689dd66dbdd6ef63181e7719aadfaf09ff365752a5cfa4bdc2fdfa937a8bc76de03dc65d1b1afd4afdb658703fbbed6dba8d8c531bb7499b865ef5de666d9e9fdaa22ddbcad8370fed85595585fce4beaddba66ddbaebd5e5876dfded8bcf3ddd70ee4eabfefed5aaddf1de36baddeaeda755bb35f6dda6df0dede056f5ec89eb7734a63d7eedb437b6c4f52163f38fd41161bd97abff39945bc2c951e313ddbe5b9a2b7f7ed43fbc8b4f7686ffa9d05b5d53ef55adf326fdf9edb97f6d518861f4e5c44ed5bb269df59ccb3cf3b7bc9645ef5f949fbd17eb65fed773b6887eda865b3068b697aed123b19f67e906bf6b69db0acf8d44edb593b6751cb397875ed76d12e3bb59fdbeace38754a67746667c571922779af472c8e39fe4116e75759d84c99a94967770e93e6dab99d67192cd770d89cb063be56ef7c7b5b9f7d3753baa00bbba8da767197746997b1b0b8e8ca7e6dc8db75157bfea5abbbc6df756dd775d7eed6699ddeadfaac8e723b5ec95b326b687b8fe2fb4e65dce75db7ee36eeaedb76776c02d875fbe6397aef0eddb13b75f7dd43f7f8ab2cbfc563b40fdae2fbb87b59fabdb76ef7d43de7cfddb97be95e6bc738b9ae7de8ff1a4166c38eb3eddeba77964f9cba8feeb3fbeabe9d85fad80dba6137eac6d19d195b0b33f6b56ed24dbb5937ef16ddf2aa5e95ab71358d9dfbca7763f9bd1ce6d00ffa99fd6ad97bc7bada4cbe73b7bb322bb18ee1cadd5d5deffdea3109dfaffe35b886d7280fa302b66ffe1d1d13eb0b72bf196a7fdcef5de36b52b2d65d53ebe19ab119ef6c9dddcf7eb5f79ab3ff5a5ccb6bc5e29897ebe55a5bfeb5b9b6d7ee7acd27d7db55bb321d5533b30bdf8da69c5c57d7f57573dde6937efe655aa8f4750ce623a2be06c6f7638dd87c74ecfd38d515ade7de5aaa8171bcde5d77d7bdda3847b5edab2c5993353c07367f9c07f8afd7f89ca7ebe17a8cd953afa7eb3d3dddbf998b6641d1eef5e1fa787dba3e5fcfd797eb6bad3069deaeefd78febe7f5ebfa5d75d74139bc0eafa3eb987d26d7e975769d7b6bd60b8bcccccceb92dba2f5f327f2dd7d73c7fc1c27ebcc52c3a79b7263f955348c4c36f3b9aa6dbf33591cbebef31764b99937eb66df1cd6379ecb66877edf8bad140b2fb9b139d0b8f7b51b0b346f8152ddc25b748bd5db2db9a5b7ec96df8a68d025e15755df4a7377ab6e97f0e3c626c65b5bac6e9db1ef772df0fd16d6af1f5eafb0d86cc4246aee7236b3dcaeb7db4d4bc6d133cb2d44fefb87ddf3ffb52ce6e34dbfad6eeb86c5860d1b0d663515f3f8ecff6d8fc5eecc9fe593dbe6b6bdddd5a5fa62d7cae2b65386b7fdeda0d4ea58dd869f55773bde4eb7fbcbddede1f6787bba3ddfce51623f180fb71733643e7af24759983454afa4fbbfdede54f7f67efb48068a226ac97f7d7d3f2a6e9fb7afdbf76dc02b565f2cb35c58776c86d89a73162f6d6e43e3741bddc6b7c96d9abab759eadce6f1241ef77bf56f8bc80a5fa2eab6d4d4a8d394a85202f5ac199aa9599aadb1b16e5acdedade4e78fbbef3396c82759cc58f3345f0bb4508bf242d1d20ce3f287d3597fc25e1eb5584bb454cbfad981dd7b617e7a119385f624cdedad96f733a75668a5566917ad564325615ed0b65fe289b25322add15aadd3aedacdf84c1dd573979aa6e9da4a5b6b1b7ba16da99af0ebc8b03f2a8bb1ad7667dada9db653bba0b9bddbef2c7f37642dcfa1f8f22fc8926a7beda01db59376af3db008efce9cfa1f2c3bda71eb6451633568f92e43ed517bd29eb5b3f6a2bd46b935d2de8c85f61e4fb40f36269f2c216e94246ccb2767e999da97f6ad0d3436a6edeeefd98bf5dcee2c35f2b59136d6260a8bd955d72eed525db37111f562ef2fcbf2a84db59936d716da52578d7da8318f79673d9993b86e6fecb363518056b6bac26c79a71bbad92a9dab5bc64db77527327457c97596ee844e7fe622ce597e32d4033dd4233dd6133dedc7e0d74f98f5b2447e2f95bbd7333dcfebb2d20bf6fbfe0c84266b797c86ff2b3a16157aa957fa45aff5466ff5aedf11c3f2de39af8f322fa45ffb798faffbfaa6ebbe66817ed3355dd757fa5adfe85bfdcef850bff59dbe77c6d5413fe847fda4dfeb0ffaa3fe14bd07aece722db28dde4ef86e0bf3e78fe9e8e764adbfe8af4aa36ead86cdca34abf4f6eff075c43fbd8724c9f537fdbdb8ea1ffaa7fea57febcc07588affed6ed3ca56a3f7beea637afd3a561f4733895c33d687fa888dd0589fe8537da6cff585be5ca92b6565accc95e5eddd3c7ded778d38d5ca5e39b6e1eec90f0b0ff68b2cae7170dc95bbf2567e3c535f56415f310a4e2cdeea57df6a5a7bfb73b2048fab701505b355bc4a56e92a5be5ed78555807166b6efa5ccb3afe248bc9b28265dee5ceed8565b4b755b9aa5697555dcd568d3e5ab5b1c7f7c23129dcddaaeb76abab395e752c5bbbe3f66e626ef955166f7533e3b261f9d270a5b1f178e335567efeafaf2afd9571311f57fa6ab55a6bb362b8daacb6abbbcbc76ad75767d2a05f79b0b67d0ecf64796372ec983c0adfc570cff7819ef85efea3d8cf6bdcbbdf76e87ff8cd6abf3aac8ead1d7cb84edffa7e9e679aa6b63b6627bfcae2af4eab7b9643ad570fcdfbea919fce727f3a052c4f69fca971795a3dafceab176db67ad5ebd5dbea7df5b1fa8cbff26ef595f615a31fbbddf98749f7c177bc0f9d57f6795b7daf06d17e35147b2cfbbdbccd9339ee7739b58bd5a8d72e173b9358e3acdf65b1ceab717d67ec5693d574355bcd51c3b7708ec1fdf3314c92af16abe55a5d2b6b439badcdb5b5b6d7ceda5d7bc69e45cffb1f7bdefb489eaffb32097a7b62b3105fc7e3fba9f9beea7e36627e6318266b7f1dacc3c0091cbecb91452c6431bd17f85d967e7473dbd8d7efeb681dab77e20c2d9745f9b16be9cff8b1f03198af933c5d5bc1789daeb375be2ed6e5ba5a5fd6b5b5b437741601fbf7fbd5b30fbe57a25f6bb15a16fc34ceba757416dfb3e83e9ce9d77ecd807df6ebceefd6cc62bc50c8d2eeb411f366bfd90bd7d26374b7beadb53573e4b2fee5fed5793f628aba5eaf37ebedfa6ebd5befd787f5717d5adfaf1fd68feba790c5fdd69eef5ac1b8b04fbf9ef76a7e704b3e584bbedb9f5950bffba8f7e2eb7e97fcb1df83b63eaf5f02d736cc28effa73246c8e1feb193f73d2e7373edfafe4b23c69bb7e5dbf35cafa7dfdc1e617c8f2f7f78ffdf38ff3283f69566595d196e7f5e7fa6bfdbd1eac87eb11d335bea38c568b980e4db0afbf8fa6c6acc7cffc04c6b2dfadd7cbe90f7a7bea77569a43967505d5e0a69a713e6171d79d36d1f3f5b8f776eb49bfa3b61f93cb389f38de7aba9eade7eabdd8d32b674be7afc8f2d3d9621ecf798f6a11dcaf179774bdcc5f36ea46d9181bb37faead164ebf368979c230a77db5439cb4602336661ab91436d3dc39174ba1fd0a2caa7f6511e4ae0f0b36569fdfacc6cce59f8ce3c6c9271b77e36dfc4d607da94f56f35b9bfed2b8fc7eb6381a2a9ee2da55972acd26dc449b78936cd24db6c9f9aa0bcb6eac27ffdbf68bbc782effdf76ae6549552488eee733a6f615fdba7dbb6356a899203e5a6db51f3b4444f0c14b1489987f9faa8202a4bd37b457331113b9d010943a661645669d93b6d9e37b5a6207f5ce54d90a7b630ee6244ed8f3c2d4532060d9afca32ad349d280e4d481246103617866ae8b10a11c3b2b36c86248e1fe983506f36cb7bd7f59cde1344592e9dd23decc91c0e90c0115250a0014d680104cf80a691efb672cf7c667bc1191af13a6a6c8d2ed758790ea8a041fba8a546ca6681e23a2c67047dffd9b4a1130fb9e20cbad0833e2ce34747a706bc2c0e85fef98baee722bfd4f4404187dc51957668dcd0c2d0b660004318c12b8c61025378f3347fb13bb0acbe5df0f8ab3a31cdd0e01d3ee0136ee036e9c2ddb1ed7437f7e95459c13d7169c0bcfd003fe0117eb2bb700a4ff08c94def1b9eef5e9337dca1557dfc052a8ea8aefae6ed98c216b9d45ef4ffa485524aebeeaa181333471eeaa5edbb7f71bff47100423b4421517519a70a1686ff7106f632dbe471b97ebe0a027b3a4874ec8a276354cdffc603e255ca59dee228325a4b8c2354b719e8d29bbca113774bcb961e319c8f15c1f6327bd3884873ca043ee1bdcda7dce35430f7d0c30740718e10e636fed2f7ddd7f0cc2861b3aa1161991827b3cecfa8d66ec6112bce2115354f693204dfadb96d559cd6ccab25f967cd21655d61b3627a2d61336b0892d72a03dc20e53978ef868d8fa229f5faee75a7fe935c07eb745b764495b08ec7d0311d5f514356ca3bffd70224ff774bfb3f1822818bb5ad8461d3bd8c5de6e837df6fe0507fb088787258ef015c7d68bd0fa1a7cc79ef3f0a8623d21573237714a0f6bb636061dba66de58d0211dac1b76bfe293ef6039b59ad281736c393795d713791dceebf80ee712f96e3009ddd07544a5d179e13613e6e4967d435ca3ec245389a0cad56bfd58aad7bf7aee9fc122ff178e852391e3f3ba9c7d9399eff23a234758aeb7d96b869def6fe7fb0f468e60216ac18678a2378b9890bd31a42ee18c42f1d27b720dcf09969c1fb0909d7904e76ec356026184f0baafc89d66956e3da5fecbf6f6f369d67545d6b5c5d924df135a7ec542cb5e26e49a7cbfc201afa191da8093df3604f79408ae9ab0ad576031ca9ca3caca1635c83935653d22cfb448ce3bcf6adc752c32e62a9eb9443352aa19aaaae7e288acea1ab4729f2cb50e052bf5d4871cf952b02732ae47d9db635ea9689b453c57bc2062244752ad5f5e84c592fcc3e1ee4c949995795bc152fdbea830d827ffc84c20e9088f91d2fb395e4b665b520152c3422492ebf27dce3a1163b10a2cc60916c11710bad85b6ed69a7320cdc09db863ceee0a1533e20c1ccef6c814cd995eb334f9fc9ecf4b7ebda988b5c23b67b1108e04dff03d63da7fc32f8b9a5f4caeec2fc7c9c7e6f5bc5e154b795ce2e596e3679fca7dd222b624e3bc58134fe3a1e0bbcd199677fcb81c4b3d6a7ea7d6aeb0fb7e71ceb9a3f5738b7cbeda2ba7de3ba79caf57e52fff15fb1fcbbfd3fefcfbaf3ffe0193cc32fd</data>
- </image>
-</images>
-<layoutdefaults spacing="6" margin="11"/>
-</UI>
diff --git a/util/install/win/pages/sidedecorationimpl.cpp b/util/install/win/pages/sidedecorationimpl.cpp
deleted file mode 100644
index aa25825..0000000
--- a/util/install/win/pages/sidedecorationimpl.cpp
+++ /dev/null
@@ -1,205 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Qt Software Information (qt-info@nokia.com)
-**
-** This file is part of the utils 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** 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.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at qt-sales@nokia.com.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-#include "sidedecorationimpl.h"
-#include <qlabel.h>
-#include <qlayout.h>
-#include <qgrid.h>
-#include <qregexp.h>
-
-/* XPM */
-static char *check_data[] = {
-/* width height num_colors chars_per_pixel */
-" 11 12 4 1",
-/* colors */
-". c #939393",
-"# c #dcdcdc",
-"a c None",
-"b c #191919",
-/* pixels */
-"aaaaaaaaaa#",
-"aaaaaaaaabb",
-"aaaaaaaabba",
-"aaaaaaabbaa",
-"aaaaaabbaaa",
-"a#aaabbaaaa",
-"ab.a.b.aaaa",
-"a#bbbbaaaaa",
-"aabbbaaaaaa",
-"aa#b.aaaaaa",
-"aaa.aaaaaaa",
-"aaaaaaaaaaa"
-};
-
-/* XPM */
-static char *arrow_data[] = {
-/* width height num_colors chars_per_pixel */
-" 11 11 4 1",
-/* colors */
-". c None",
-"# c #b9b9b9",
-"a c #8a8a8a",
-"b c #0d0d0d",
-/* pixels */
-"...##......",
-"...ab#.....",
-"...abb#....",
-"...abbb#...",
-"...abbbb#..",
-"...abbbba..",
-"...abbba...",
-"...abba....",
-"...aba.....",
-"...aa......",
-"..........."
-};
-
-/* XPM */
-static char *cross_data[] = {
-/* width height num_colors chars_per_pixel */
-" 11 11 3 1",
-/* colors */
-". c #cc0000",
-"# c None",
-"a c #fc3464",
-/* pixels */
-"###########",
-"###########",
-"########a.#",
-"##a####a.##",
-"##a.###.###",
-"###a...a###",
-"####...####",
-"####...a###",
-"###.a##..##",
-"##a.####aa#",
-"##.########"
-};
-
-
-SideDecorationImpl::SideDecorationImpl( QWidget* parent, const char* name, WindowFlags fl ) :
- SideDecoration( parent, name, fl ),
- checkPix( ( const char** ) check_data ),
- arrowPix( ( const char** ) arrow_data ),
- crossPix( ( const char** ) cross_data ),
- activeBullet( -1 )
-{
- Q_ASSERT( layout() != 0 );
- if ( layout()->inherits("QBoxLayout") ) {
- ((QBoxLayout*)layout())->setMargin( 0 );
- }
- setSizePolicy( QSizePolicy(QSizePolicy::Fixed,QSizePolicy::Expanding) );
- if ( globalInformation.reconfig() ) {
- versionLabel->setText( "Reconfigure Qt " + globalInformation.qtVersionStr() );
- } else {
-#if defined(QSA)
- QString versionStr = globalInformation.qsaVersionStr();
- versionStr.replace( QRegExp(" Evaluation"), "" );
- versionLabel->setText( versionLabel->text().replace( "Qt", "QSA" ) + " " + versionStr );
-#elif defined(EVAL)
- QString versionStr = globalInformation.qtVersionStr();
- versionStr.replace( QRegExp(" Evaluation"), "" );
- versionLabel->setText( versionLabel->text() + " " + versionStr );
-#elif defined(NON_COMMERCIAL)
- QString versionStr = globalInformation.qtVersionStr();
- versionStr.replace( QRegExp(" Non-Commercial"), "" );
- versionLabel->setText( versionLabel->text() + " " + versionStr );
-#elif defined(EDU)
- QString versionStr = globalInformation.qtVersionStr();
- versionStr.replace( QRegExp(" Educational"), "" );
- versionLabel->setText( versionLabel->text() + " " + versionStr );
-#else
- versionLabel->setText( versionLabel->text() + " " + globalInformation.qtVersionStr() );
-#endif
- }
-#if defined(EVAL)
- editionLabel->setText( "Evaluation Version" );
-#elif defined(NON_COMMERCIAL)
- editionLabel->setText( "Non-Commercial Edition" );
-#elif defined(EDU)
- editionLabel->setText( "Educational Edition" );
-#else
- editionLabel->setText( "" );
-#endif
-}
-
-SideDecorationImpl::~SideDecorationImpl()
-{
-}
-
-void SideDecorationImpl::wizardPages( const QPtrList<Page>& li )
-{
- QBoxLayout *lay = 0;
- Q_ASSERT( layout() != 0 );
- if ( layout()->inherits("QBoxLayout") ) {
- lay = (QBoxLayout*)layout();
- } else {
- return;
- }
- QPtrList<Page> list = li;
- Page *page;
- QGrid *grid = new QGrid( 2, this );
- grid->setSpacing( 2 );
- for ( page=list.first(); page; page=list.next() ) {
- QLabel *l = new QLabel( grid );
- l->setSizePolicy( QSizePolicy(QSizePolicy::Fixed,QSizePolicy::Fixed) );
- bullets.append( l );
- l = new QLabel( page->shortTitle(), grid );
- }
- lay->insertWidget( -1, grid );
- lay->insertStretch( -1 );
-}
-
-void SideDecorationImpl::wizardPageShowed( int a )
-{
- if ( activeBullet>=0 && (uint)activeBullet<bullets.count() ) {
- if ( a < activeBullet )
- bullets.at(activeBullet)->clear();
- else
- bullets.at(activeBullet)->setPixmap( checkPix );
- }
- bullets.at(a)->setPixmap( arrowPix );
- activeBullet = a;
-}
-
-void SideDecorationImpl::wizardPageFailed( int a )
-{
- bullets.at(a)->setPixmap( crossPix );
-}
diff --git a/util/install/win/pages/winintropage.ui b/util/install/win/pages/winintropage.ui
deleted file mode 100644
index ac2545b..0000000
--- a/util/install/win/pages/winintropage.ui
+++ /dev/null
@@ -1,39 +0,0 @@
-<!DOCTYPE UI><UI version="3.0" stdsetdef="1">
-<class>WinIntroPage</class>
-<widget class="QWidget">
- <property name="name">
- <cstring>WinIntroPage</cstring>
- </property>
- <property name="geometry">
- <rect>
- <x>0</x>
- <y>0</y>
- <width>387</width>
- <height>228</height>
- </rect>
- </property>
- <property name="caption">
- <string>Form1</string>
- </property>
- <hbox>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <property name="margin">
- <number>11</number>
- </property>
- <property name="spacing">
- <number>6</number>
- </property>
- <widget class="QTextBrowser">
- <property name="name">
- <cstring>textBrowser</cstring>
- </property>
- <property name="text">
- <string>&lt;p&gt;It is strongly recommended that you exit all Windows programs before running this install program.&lt;/p&gt;&lt;p&gt;Click &lt;tt&gt;Cancel&lt;/tt&gt; to quit install and then close any programs you have running.&lt;/p&gt;&lt;p&gt;Click &lt;tt&gt;Next&lt;/tt&gt; to continue with the setup program.&lt;/p&gt;</string>
- </property>
- </widget>
- </hbox>
-</widget>
-<layoutdefaults spacing="6" margin="11"/>
-</UI>
diff --git a/util/install/win/qt.arq b/util/install/win/qt.arq
deleted file mode 100644
index f3f1ccc..0000000
--- a/util/install/win/qt.arq
+++ /dev/null
@@ -1,3 +0,0 @@
-This is just a dummy file. Use the package program to add the real qt.arq
-file to the package.
-This file must be smaller than 500 bytes.
diff --git a/util/install/win/resource.cpp b/util/install/win/resource.cpp
deleted file mode 100644
index 4ea0ad8..0000000
--- a/util/install/win/resource.cpp
+++ /dev/null
@@ -1,162 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Qt Software Information (qt-info@nokia.com)
-**
-** This file is part of the utils 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** 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.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at qt-sales@nokia.com.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-#include "resource.h"
-#include <qfile.h>
-#include <qfileinfo.h>
-#include <qapplication.h>
-
-#ifdef Q_OS_WIN32
-#include <windows.h>
-#endif
-
-/*
- Tries to load the binary resource \a resourceName. If the resource is
- smaller than \a minimumSize, the resource is not loaded and isValid()
- returns false. isValid() returns also false when the loading failed.
- */
-ResourceLoader::ResourceLoader( char *resourceName, int minimumSize )
-{
-#if defined(Q_OS_WIN32)
- valid = true;
-
- HMODULE hmodule = GetModuleHandle( 0 );
- // we don't need wide character versions
- HRSRC resource = FindResourceA( hmodule, resourceName, MAKEINTRESOURCEA( 10 ) );
- HGLOBAL hglobal = LoadResource( hmodule, resource );
- arSize = SizeofResource( hmodule, resource );
- if ( arSize == 0 ) {
- valid = false;
- return;
- }
- if ( arSize < minimumSize ) {
- valid = false;
- return;
- }
- arData = (char*)LockResource( hglobal );
- if ( arData == 0 ) {
- valid = false;
- return;
- }
- ba.setRawData( arData, arSize );
-#elif defined(Q_OS_MAC)
- valid = false;
- arSize = 0;
- arData = 0;
- QFile f;
- QString appDir = qApp->argv()[0];
- int truncpos = appDir.findRev( "/Contents/MacOS/" );
- if (truncpos != -1)
- appDir.truncate( truncpos );
- QString path = appDir + "/Contents/Qt/";
- path += resourceName;
- f.setName( path );
- if (!f.open( IO_ReadOnly ))
- return;
- QFileInfo fi(f);
- arSize = fi.size();
- arData = new char[arSize];
- if (f.readBlock( arData, arSize ) != arSize)
- {
- delete[] arData;
- return;
- }
- ba.setRawData( arData, arSize );
- valid = true;
- return;
-#endif
-}
-
-ResourceLoader::~ResourceLoader()
-{
- if ( isValid() )
- ba.resetRawData( arData, arSize );
-#if defined(Q_OS_MAC)
- delete[] arData;
-#endif
-}
-
-bool ResourceLoader::isValid() const
-{
- return valid;
-}
-
-QByteArray ResourceLoader::data()
-{
- return ba;
-}
-
-
-#if defined(Q_OS_WIN32)
-ResourceSaver::ResourceSaver( const QString& appName )
- : applicationName(appName)
-{
-}
-
-ResourceSaver::~ResourceSaver()
-{
-}
-
-bool ResourceSaver::setData( char *resourceName, const QByteArray &data, QString *errorMessage )
-{
- // we don't need wide character versions
- HANDLE hExe = BeginUpdateResourceA( applicationName.latin1(), false );
- if ( hExe == 0 ) {
- if ( errorMessage )
- *errorMessage = QString("Could not load the executable %1.").arg(applicationName);
- return false;
- }
- if ( !UpdateResourceA(hExe,(char*)RT_RCDATA,resourceName,0,data.data(),data.count()) ) {
- EndUpdateResource( hExe, true );
- if ( errorMessage )
- *errorMessage = QString("Could not update the executable %1.").arg(applicationName);
- return false;
- }
- if ( !EndUpdateResource(hExe,false) ) {
- if ( errorMessage )
- *errorMessage = QString("Could not update the executable %1.").arg(applicationName);
- return false;
- }
-
- if ( errorMessage )
- *errorMessage = QString("Updated the executable %1.").arg(applicationName);
- return true;
-}
-#endif
diff --git a/util/install/win/setupwizardimpl.cpp b/util/install/win/setupwizardimpl.cpp
deleted file mode 100644
index 909d986..0000000
--- a/util/install/win/setupwizardimpl.cpp
+++ /dev/null
@@ -1,2571 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Qt Software Information (qt-info@nokia.com)
-**
-** This file is part of the utils 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** 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.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at qt-sales@nokia.com.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-#include "setupwizardimpl.h"
-#include "environment.h"
-#include <qfiledialog.h>
-#include <qlineedit.h>
-#include <qlabel.h>
-#include <qprogressbar.h>
-#include <qtextview.h>
-#include <qmultilineedit.h>
-#include <qbuttongroup.h>
-#include <qsettings.h>
-#include <qlistview.h>
-#include <qlistbox.h>
-#include <qapplication.h>
-#include <qcheckbox.h>
-#include <qtextstream.h>
-#include <qpushbutton.h>
-#include <qradiobutton.h>
-#include <qcombobox.h>
-#include <qmessagebox.h>
-#include <qregexp.h>
-#include <qtabwidget.h>
-#include <qarchive.h>
-#include <qvalidator.h>
-#include <qdatetime.h>
-#include <qlayout.h>
-
-#include <keyinfo.h>
-#if defined(Q_OS_WIN32)
-
-#include <process.h>
-#endif
-
-#if defined(EVAL) || defined(EDU) || defined(NON_COMMERCIAL)
-#include <check-and-patch.h>
-#endif
-
-#if defined(EVAL)
-# define LICENSE_DEST "LICENSE.EVAL"
-#elif defined(EDU)
-# define LICENSE_DEST "LICENSE.EDU"
-#elif defined(NON_COMMERCIAL)
-# define LICENSE_DEST "LICENSE.NON_COMMERCIAL"
-#else
-# define LICENSE_DEST "LICENSE"
-#endif
-
-#include "resource.h"
-#include "pages/sidedecorationimpl.h"
-
-#define FILESTOCOPY 4582
-
-static const char* const logo_data[] = {
-"32 32 238 2",
-"Qt c None",
-"#u c #000000",
-".# c #020204",
-"a. c #102322",
-"af c #282500",
-"as c #292e26",
-"a8 c #2c686a",
-"ae c #307072",
-"#C c #322a0c",
-"#s c #36320c",
-"am c #3b3d3f",
-"#3 c #3c8082",
-"#f c #3e3a0c",
-"## c #423e0c",
-"#9 c #434341",
-"ad c #438888",
-"aU c #458d8e",
-"#g c #46420c",
-"aM c #46494a",
-"ay c #474948",
-"#D c #4a4328",
-".W c #4a4611",
-"az c #4a4641",
-"a1 c #4a4a49",
-"aH c #4b9e9e",
-"au c #4d9a9f",
-"aS c #4e9a9a",
-"an c #4f4e4a",
-".X c #504e0c",
-"a7 c #51a4a9",
-"#0 c #525250",
-"aT c #55a6a3",
-".Y c #56520c",
-"#a c #5a5604",
-".Z c #5e5a0c",
-".V c #5e5e5c",
-"a0 c #5e5e60",
-"a6 c #5ea0a6",
-".J c #625e0c",
-"bB c #64aaa9",
-"#m c #665e2c",
-"aL c #686867",
-"bw c #68acb2",
-"bo c #696928",
-"ba c #696967",
-"aE c #69aeb2",
-"#z c #6a5614",
-".K c #6a660c",
-"aZ c #6a6a65",
-"bG c #6db4b4",
-".9 c #6e5e24",
-"#. c #6e6a5c",
-"bv c #6fb6b9",
-"bC c #706d28",
-"br c #70bcc5",
-"aQ c #71b7ba",
-".I c #726234",
-".L c #726e0c",
-".0 c #72720c",
-"#w c #746d44",
-"be c #747028",
-"bH c #747428",
-".M c #76720a",
-"aR c #78c1c2",
-"#Z c #797977",
-"a2 c #7a5d3d",
-"#H c #7a6614",
-"#I c #7a760a",
-"#l c #7a7634",
-".1 c #7a7a0c",
-"#e c #7a7a5c",
-"bL c #7bc0c2",
-"b. c #7c7d82",
-"#d c #7e6e34",
-".N c #7e7a0a",
-"bP c #816c20",
-".8 c #82763c",
-"#h c #827a3c",
-".x c #827e0c",
-"#t c #827f4b",
-".O c #828204",
-"#v c #828384",
-".P c #868604",
-"bq c #87d4d9",
-"#k c #89864b",
-"#c c #8a8244",
-".y c #8a8604",
-"#j c #8d8652",
-"al c #8d8d8a",
-"#b c #8e8644",
-".z c #8e8e04",
-"aW c #8f9094",
-"#i c #908952",
-"#Q c #909021",
-"ag c #90d0d2",
-"bO c #916f34",
-"bQ c #91cdd3",
-".7 c #928a44",
-"#p c #928e6c",
-"#P c #947f2f",
-".A c #949204",
-"bh c #949495",
-".6 c #968e4c",
-"aC c #999721",
-".w c #9a8a44",
-"#M c #9a9a99",
-"ap c #9b9b21",
-".5 c #9c924c",
-"#R c #9c9a04",
-"#7 c #9d9d9b",
-"ao c #9e7641",
-".4 c #9e964c",
-"#J c #9e9b21",
-".B c #9e9e04",
-"ac c #9e9e9d",
-"#S c #a09e21",
-"ax c #a0a0a3",
-"aK c #a1a1a2",
-"aX c #a1a1a4",
-".r c #a2a204",
-"#1 c #a2a221",
-"aF c #a2e1dd",
-".3 c #a49a54",
-".2 c #a69e54",
-"bR c #a78446",
-"#6 c #a9a9a8",
-".T c #aaa254",
-".s c #aaaa04",
-"#W c #abaaa6",
-"aN c #ac8861",
-".S c #aea25c",
-".R c #aea65c",
-".t c #aeae04",
-"#L c #b0b0b0",
-"#o c #b2ae94",
-".u c #b2b204",
-"aI c #b2b2b4",
-"b# c #b3b3b2",
-"#X c #b4b4b6",
-"#V c #b5b4b4",
-".Q c #b6aa5c",
-".n c #b6b604",
-"aY c #b6b6b7",
-"bN c #b79658",
-"ah c #b7e5e3",
-"aG c #b7ebe9",
-"ar c #b9d9dc",
-"#8 c #bcbcbe",
-"ab c #bdbdbe",
-".m c #beae5c",
-".F c #beb264",
-"aq c #bef6f6",
-"aB c #c1a470",
-"#F c #c1c1c3",
-".E c #c2b664",
-"at c #c2e9eb",
-"bI c #c39c6a",
-"bs c #c3a366",
-"#U c #c3c3c0",
-"aw c #c3c3c1",
-"#G c #c3c3c7",
-"aD c #c3f1f2",
-"a# c #c6c6c3",
-"#2 c #c7edf3",
-".D c #c8ba6c",
-"bM c #c9a470",
-"#N c #c9c9c4",
-".C c #cabe6c",
-"ak c #cacaca",
-"bx c #cbb076",
-"aa c #cbcbc9",
-"a3 c #ccac7f",
-".H c #ceba54",
-"#E c #ceced0",
-"bi c #cfaf7e",
-"#Y c #cfcfcb",
-"bK c #d1ac80",
-"#5 c #d1d1cf",
-"bu c #d2ae83",
-"bm c #d3b180",
-"bD c #d3b384",
-"bF c #d4b589",
-"aJ c #d4d4d3",
-".j c #d6c664",
-".v c #d6c674",
-"#K c #d6d6d5",
-"bJ c #d7b588",
-"bd c #d8b289",
-"bz c #d8b78d",
-".q c #d8ca74",
-"aj c #d8d8d9",
-"bb c #dabd97",
-"a5 c #dcba91",
-"bE c #dcc097",
-"aA c #ddc292",
-"aP c #dec491",
-".p c #dece75",
-"bk c #dfc79c",
-"av c #e0e0e0",
-"#A c #e2dabc",
-"#O c #e2e2e4",
-"aO c #e3c898",
-"by c #e4c7a1",
-".l c #e6da84",
-"a4 c #e7c7a2",
-"bt c #eacaa5",
-".o c #eede84",
-".G c #eee284",
-".i c #eee294",
-"bn c #efd7b4",
-".k c #f2e69c",
-".e c #f2eaa4",
-"bc c #f3d8b8",
-"bj c #f5e2c8",
-"#r c #f6eea4",
-".f c #f6eeb8",
-".g c #f6f2cc",
-".c c #faf6d4",
-".d c #fafae4",
-".U c #feee95",
-"bA c #fef26c",
-"#q c #fef2ac",
-"#x c #fef2b8",
-"bp c #fef684",
-"bl c #fef690",
-"bg c #fef69c",
-"bf c #fef6a4",
-".a c #fef6b4",
-"#B c #fef6c4",
-"#y c #fef6ce",
-"a9 c #fefaac",
-"aV c #fefab7",
-"ai c #fefac4",
-"#4 c #fefad1",
-"#n c #fefadf",
-".h c #fefaec",
-"#T c #fefee6",
-".b c #fefefa",
-"QtQtQtQtQtQtQtQtQtQtQtQt.#QtQtQtQtQtQt.#QtQtQtQtQtQtQtQtQtQtQtQt",
-"QtQtQtQtQtQtQtQtQtQt.#.#.a.#QtQtQtQt.#.b.#.#QtQtQtQtQtQtQtQtQtQt",
-"QtQtQtQtQtQtQtQt.#.#.a.a.a.a.#QtQt.#.c.d.b.b.#.#QtQtQtQtQtQtQtQt",
-"QtQtQtQtQtQt.#.#.e.e.e.e.e.e.e.#.#.f.f.g.g.c.h.b.#.#QtQtQtQtQtQt",
-"QtQtQtQt.#.#.i.i.i.i.i.i.i.i.j.j.b.b.k.e.f.f.g.g.c.d.#.#QtQtQtQt",
-"QtQt.#.#.l.l.l.l.l.l.l.l.m.m.n.n.o.o.b.b.k.k.e.f.f.g.g.c.#.#QtQt",
-"Qt.#.p.p.q.p.p.p.p.p.m.m.r.s.t.u.p.q.v.v.b.b.i.i.k.e.f.f.g.g.#Qt",
-"QtQt.#.j.j.j.j.j.w.w.x.y.z.A.B.r.C.C.D.E.E.F.b.b.o.G.k.k.e.#QtQt",
-"QtQtQt.#.H.H.I.I.J.K.L.M.N.O.P.z.Q.Q.Q.R.R.R.S.T.b.b.G.G.#QtQtQt",
-"Qt.#.#.U.V.W.W.W.X.Y.Z.J.K.L.0.1.2.3.3.4.5.5.6.6.7.8.9#..b.#.#Qt",
-"QtQtQt.#.U.U.U.W.W##.W.X.Y#a.J.K.7.7#b#b#b#c#c#d#d.h.h.b.#QtQtQt",
-"QtQtQtQt.##e.U.U.U.W.W#f#g.W.X.Y#h#i#j#k#l#m#m#n#n.h#g.#QtQtQtQt",
-"QtQtQtQt.##o#p#e#q#q#r#f#f#s#f#g#t#u#v#u#w#x#y#y#g#g#z.#QtQtQtQt",
-"QtQtQtQt.#.b#A#o#p#e#B#B#B#C#C#D#u#E#F#G#u#y#g#g#H#I#J#uQtQtQtQt",
-"QtQtQtQt.#.b.h.b#A#o#p#e.d.d.d#u#K#L#M#N#O#u#P#Q#R#S#u#u#uQtQtQt",
-"QtQtQtQt.#.b#T.h#T#n#A#o#p#e#u#U#V#W#X#Y#Z#0#u#1#S#u#2#3#uQtQtQt",
-"QtQtQtQt.##T.h#T#n#T#n#4#A#u#5#6#7#6#8#Z#0#9#u#S#u#2#3a.Qt#u#uQt",
-"QtQtQtQt.##T#n#T#4#4#4#4#u#Oa#aaabac#Z#9#9#u#S#u#2adaeaf#uagah#u",
-"QtQtQtQt.##n#n#4#4#4ai#u#Oajak#Yalamanao#u#Sap#uaqar#3asagatau#u",
-"QtQtQtQt.##T#4#4#4ai#uav#O#OawaxayazaAaB#uapaC#uaDaEaFaGataH#uQt",
-"QtQtQtQt.##4#4aiaiai#uaIaJ#OaKaLaMaNaOaPao#u#uaDaQaRaSaTaU#uQtQt",
-"QtQtQtQt.##4aiaV.aaV#uaWaXaYaZa0a1a2a3a4a5ao#ua6a7a8#u#u#uQtQtQt",
-"QtQtQtQt.#aiaiaiaV.aa9#ub.b#baa0#u#1#ubbbcbdao#ua8#ube.#.#.#.#Qt",
-"QtQtQtQt.#aV.aaVaVbfbfbg#ubhba#u#1.AaC#ubibjbkao#ube#a.#.#.#.#.#",
-"QtQtQtQt.#.aa9.abfa9bgbgbg#u#ubl.AaC#uaD#ubmbna5ao#ubo.#.#.#.#Qt",
-"QtQtQtQt.#.aa9a9bgbgblblblblbpbpaC#uaDbqbr#ubsbtbuao#u.#.#QtQtQt",
-"QtQtQtQtQt.#.#bgbgbgblblbpbpbpbp#uatbvbwa8#u#ubxbybzao#uQtQtQtQt",
-"QtQtQtQtQtQtQt.#.#blblbpbpbAbp#uaDbBbwa8#ubebC#ubDbEbFao#uQtQtQt",
-"QtQtQtQtQtQtQtQtQt.#.#bAbpbA#uaDbGbwa8#ubH.#.#Qt#ubIbJbKao#uQtQt",
-"QtQtQtQtQtQtQtQtQtQtQt.#.##uaDbLbwa8#u.#.#QtQtQtQt#ubMbNbObP#uQt",
-"QtQtQtQtQtQtQtQtQtQtQtQtQt#ubQbwa8#u.#QtQtQtQtQtQtQt#ubRbO#uQtQt",
-"QtQtQtQtQtQtQtQtQtQtQtQtQtQt#u#u#uQtQtQtQtQtQtQtQtQtQt#u#uQtQtQt"};
-
-static bool findFileInPaths( const QString &fileName, const QStringList &paths )
-{
- QDir d;
- for( QStringList::ConstIterator it = paths.begin(); it != paths.end(); ++it ) {
- // Remove any leading or trailing ", this is commonly used in the environment
- // variables
- QString path = (*it);
- if ( path.startsWith( "\"" ) )
- path = path.right( path.length() - 1 );
- if ( path.endsWith( "\"" ) )
- path = path.left( path.length() - 1 );
- if( d.exists( path + QDir::separator() + fileName ) )
- return true;
- }
- return false;
-}
-
-bool findFile( const QString &fileName )
-{
- QString file = fileName.lower();
- QStringList paths;
-#if defined(Q_OS_WIN32)
- QRegExp split( "[;,]" );
-#else
- QRegExp split( "[:]" );
-#endif
- if ( file.endsWith( ".h" ) ) {
- if ( globalInformation.sysId() == GlobalInformation::Borland )
- return true;
- paths = QStringList::split( split, QEnvironment::getEnv( "INCLUDE" ) );
- } else if ( file.endsWith( ".lib" ) ) {
- if ( globalInformation.sysId() == GlobalInformation::Borland )
- return true;
- paths = QStringList::split( split, QEnvironment::getEnv( "LIB" ) );
- } else {
- paths = QStringList::split( split, QEnvironment::getEnv( "PATH" ) );
- }
- return findFileInPaths( file, paths );
-}
-
-static bool createDir( const QString& fullPath )
-{
- QStringList hierarchy = QStringList::split( QDir::separator(), fullPath );
- QString pathComponent, tmpPath;
- QDir dirTmp;
- bool success = true;
-
- for( QStringList::Iterator it = hierarchy.begin(); it != hierarchy.end(); ++it ) {
- pathComponent = *it + QDir::separator();
- tmpPath += pathComponent;
-#if defined(Q_OS_WIN32)
- success = dirTmp.mkdir( tmpPath );
-#else
- success = dirTmp.mkdir( QDir::separator() + tmpPath );
-#endif
- }
- return success;
-}
-
-SetupWizardImpl::SetupWizardImpl( QWidget* parent, const char* name, bool modal, WindowFlags flag ) :
- QWizard( parent, name, modal, flag ),
- tmpPath( QEnvironment::getTempPath() ),
- fixedPath(false),
- filesCopied( false ),
- filesToCompile( 0 ),
- filesCompiled( 0 ),
- licensePage( 0 ),
- licenseAgreementPage( 0 ),
- licenseAgreementPageQsa( 0 ),
- optionsPage( 0 ),
- optionsPageQsa( 0 ),
- foldersPage( 0 ),
- configPage( 0 ),
- progressPage( 0 ),
- buildPage( 0 ),
- finishPage( 0 )
-{
- // initialize
- if ( !name )
- setName( "SetupWizard" );
- resize( 600, 390 );
-#if defined(QSA)
- setCaption( trUtf8( "QSA Installation Wizard" ) );
-#else
- setCaption( trUtf8( "Qt Installation Wizard" ) );
-#endif
- QPixmap logo( ( const char** ) logo_data );
- setIcon( logo );
-#if defined(QSA)
- setIconText( trUtf8( "QSA Installation Wizard" ) );
-#else
- setIconText( trUtf8( "Qt Installation Wizard" ) );
-#endif
- QFont f( font() );
- f.setFamily( "Arial" );
- f.setPointSize( 12 );
- f.setBold( true );
- setTitleFont( f );
-
- totalFiles = 0;
-
- // try to read the archive header information and use them instead of
- // QT_VERSION_STR if possible
- QArchiveHeader *archiveHeader = 0;
- ResourceLoader rcLoader( "QT_ARQ", 500 );
- if ( rcLoader.isValid() ) {
- // First, try to find qt.arq as a binary resource to the file.
- QArchive ar;
- QDataStream ds( rcLoader.data(), IO_ReadOnly );
- archiveHeader = ar.readArchiveHeader( &ds );
- } else {
- // If the resource could not be loaded or is smaller than 500
- // bytes, we have the dummy qt.arq: try to find and install
- // from qt.arq in the current directory instead.
- QArchive ar;
- QString archiveName = "qt.arq";
-# if defined(Q_OS_MAC)
- QString appDir = qApp->argv()[0];
- int truncpos = appDir.findRev( "/Contents/MacOS/" );
- if (truncpos != -1)
- appDir.truncate( truncpos );
- archiveName = appDir + "/Contents/Qt/qtmac.arq";
-# endif
- ar.setPath( archiveName );
- if( ar.open( IO_ReadOnly ) ) {
- archiveHeader = ar.readArchiveHeader();
- }
- }
-
-#if defined(QSA)
- ResourceLoader rcLoaderQsa( "QSA_ARQ", 500 );
- if ( rcLoaderQsa.isValid() ) {
- // First, try to find qt.arq as a binary resource to the file.
- QArchive ar;
- QDataStream ds( rcLoaderQsa.data(), IO_ReadOnly );
- QArchiveHeader *archiveHeaderQsa = ar.readArchiveHeader( &ds );
- if ( archiveHeaderQsa ) {
- QString qsa_version_str = archiveHeaderQsa->description();
- if ( !qsa_version_str.isEmpty() )
- globalInformation.setQsaVersionStr( qsa_version_str );
- delete archiveHeaderQsa;
- }
- }
-#endif
-
-#if defined(Q_OS_WIN32)
- // First check for MSVC 6.0
- QString regValue = QEnvironment::getRegistryString( "Software\\Microsoft\\VisualStudio\\6.0\\Setup\\Microsoft Visual C++", "ProductDir", QEnvironment::LocalMachine );
- if (!regValue.isEmpty())
- globalInformation.setSysId(GlobalInformation::MSVC);
-
- // MSVC.NET 7.0 & 7.1 takes presedence over 6.0
- regValue = QEnvironment::getRegistryString( "Software\\Microsoft\\VisualStudio\\7.0", "InstallDir", QEnvironment::LocalMachine );
- if (regValue.isEmpty())
- regValue = QEnvironment::getRegistryString( "Software\\Microsoft\\VisualStudio\\7.1", "InstallDir", QEnvironment::LocalMachine );
- if (!regValue.isEmpty())
- globalInformation.setSysId(GlobalInformation::MSVCNET);
-
- while (globalInformation.sysId() == GlobalInformation::Other) {
- globalInformation.setSysId(GlobalInformation::Borland);
- if (findFile(globalInformation.text(GlobalInformation::MakeTool)))
- break;
- globalInformation.setSysId(GlobalInformation::MSVCNET);
- if (findFile(globalInformation.text(GlobalInformation::MakeTool)))
- break;
- globalInformation.setSysId(GlobalInformation::MinGW);
- if (findFile(globalInformation.text(GlobalInformation::MakeTool)))
- break;
- globalInformation.setSysId(GlobalInformation::Watcom);
- if (findFile(globalInformation.text(GlobalInformation::MakeTool)))
- break;
- }
-#endif
-
- if ( archiveHeader ) {
- QString qt_version_str = archiveHeader->description();
- if ( !qt_version_str.isEmpty() )
- globalInformation.setQtVersionStr( qt_version_str );
-
-#if defined(EVAL) || defined(EDU) || defined(NON_COMMERCIAL)
- if ( archiveHeader->findExtraData( "compiler" ) == "borland" )
- globalInformation.setSysId(GlobalInformation::Borland);
-#endif
- delete archiveHeader;
- }
-
- initPages();
- initConnections();
-
- if (optionsPage) {
-#if defined(QSA)
- optionsPage->installPath->setText(
- QString( "C:\\Qt_QSA\\Qt" ) +
- QString( globalInformation.qtVersionStr() ).replace( QRegExp("\\s"), "" ).replace( QRegExp("-"), "" )
- );
-#endif
- }
- if ( optionsPageQsa ) {
-#if defined(QSA)
- optionsPageQsa->installPath->setText(
- QString( "C:\\Qt_QSA\\QSA" ) +
- QString( globalInformation.qsaVersionStr() ).replace( QRegExp("\\s"), "" ).replace( QRegExp("-"), "" )
- );
-#endif
- }
- readLicense( QDir::homeDirPath() + "/.qt-license" );
-}
-
-static bool copyFile( const QString& src, const QString& dest )
-{
-#ifdef Q_WS_WIN
- QT_WA( {
- return CopyFileW( (const wchar_t*)src.ucs2(), (const wchar_t*)dest.ucs2(), false );
- }, {
- return CopyFileA( src.local8Bit(), dest.local8Bit(), false );
- } );
-#else
- int len;
- const int buflen = 4096;
- char buf[buflen];
- QFileInfo info( src );
- QFile srcFile( src ), destFile( dest );
- if (!srcFile.open( IO_ReadOnly ))
- return false;
- destFile.remove();
- if (!destFile.open( IO_WriteOnly ))
- return false;
-
- while (!srcFile.atEnd()) {
- len = srcFile.readBlock( buf, buflen );
- if (len <= 0)
- break;
- if (destFile.writeBlock( buf, len ) != len)
- return false;
- }
- destFile.flush();
- return true;
-#endif
-}
-
-void SetupWizardImpl::initPages()
-{
-#define ADD_PAGE( var, Class ) \
- { \
- var = new Class( this, #var ); \
- SideDecorationImpl *sideDeco = new SideDecorationImpl( var ); \
- \
- Q_ASSERT( var->layout() != 0 ); \
- if ( var->layout()->inherits("QBoxLayout") ) { \
- ((QBoxLayout*)var->layout())->insertWidget( 0, sideDeco ); \
- ((QBoxLayout*)var->layout())->insertSpacing( 1, 10 ); \
- } \
- \
- pages.append( var ); \
- addPage( var, var->title() ); \
- setHelpEnabled( var, false ); \
- \
- connect( this, SIGNAL(wizardPages(const QPtrList<Page>&)), \
- sideDeco, SLOT(wizardPages(const QPtrList<Page>&)) ); \
- connect( this, SIGNAL(wizardPageShowed(int)), \
- sideDeco, SLOT(wizardPageShowed(int)) ); \
- connect( this, SIGNAL(wizardPageFailed(int)), \
- sideDeco, SLOT(wizardPageFailed(int)) ); \
- connect( this, SIGNAL(editionString(const QString&)), \
- sideDeco->editionLabel, SLOT(setText(const QString&)) ); \
- }
-
- QPtrList<Page> pages;
- if( globalInformation.reconfig() ) {
- ADD_PAGE( configPage, ConfigPageImpl )
- ADD_PAGE( buildPage, BuildPageImpl )
- ADD_PAGE( finishPage, FinishPageImpl )
- } else {
-#if defined(Q_OS_WIN32)
- ADD_PAGE( winIntroPage, WinIntroPageImpl )
-#endif
-#if !defined(EVAL_CD) && !defined(NON_COMMERCIAL)
- ADD_PAGE( licensePage, LicensePageImpl )
-#endif
- ADD_PAGE( licenseAgreementPage, LicenseAgreementPageImpl)
-#if defined(QSA)
- ADD_PAGE( licenseAgreementPageQsa, LicenseAgreementPageImpl)
-#endif
- ADD_PAGE( optionsPage, OptionsPageImpl )
-#if defined(QSA)
- ADD_PAGE( optionsPageQsa, OptionsPageImpl )
-#endif
-#if !defined(Q_OS_UNIX)
- ADD_PAGE( foldersPage, FoldersPageImpl )
-#endif
- ADD_PAGE( configPage, ConfigPageImpl )
- ADD_PAGE( progressPage, ProgressPageImpl )
- ADD_PAGE( buildPage, BuildPageImpl )
- ADD_PAGE( finishPage, FinishPageImpl )
- }
-#undef ADD_PAGE
-
- if ( licensePage ) {
- setNextEnabled( licensePage, false );
- }
- if ( licenseAgreementPage ) {
- setNextEnabled( licenseAgreementPage, false );
- }
- if ( licenseAgreementPageQsa ) {
- setNextEnabled( licenseAgreementPageQsa, false );
- licenseAgreementPage->titleStr = "License agreement Qt";
- licenseAgreementPageQsa->titleStr = "License agreement QSA";
- }
- if ( optionsPage ) {
- setBackEnabled( optionsPage, false );
- }
- if ( optionsPageQsa ) {
- optionsPageQsa->installExamples->hide();
- optionsPageQsa->installTools->hide();
- optionsPageQsa->installExtensions->hide();
- optionsPageQsa->installTutorials->hide();
- optionsPageQsa->skipBuild->hide();
- optionsPageQsa->installDocs->hide();
- optionsPageQsa->sysGroup->hide();
- optionsPageQsa->pathLabel->setText("QSA destination &path");
-
- optionsPage->titleStr = "Options for Qt";
- optionsPage->shortTitleStr = "Choose options for Qt";
- optionsPageQsa->titleStr = "Options for QSA";
- optionsPageQsa->shortTitleStr = "Choose options for QSA";
- }
- if ( configPage )
- setBackEnabled( configPage, false );
- if ( progressPage ) {
- setBackEnabled( progressPage, false );
- setNextEnabled( progressPage, false );
- }
- if ( buildPage ) {
- setBackEnabled( buildPage, false );
- setNextEnabled( buildPage, false );
- }
- if ( finishPage ) {
- setBackEnabled( finishPage, false );
- setFinishEnabled( finishPage, true );
- }
- emit wizardPages( pages );
-}
-
-void SetupWizardImpl::initConnections()
-{
- connect( &autoContTimer, SIGNAL( timeout() ), this, SLOT( timerFired() ) );
-
- if ( optionsPage ) {
- connect( optionsPage->sysGroup, SIGNAL(clicked(int)), SLOT(clickedSystem(int)));
- connect( optionsPage->sysOtherCombo, SIGNAL(activated(int)), SLOT(sysOtherComboChanged(int)));
- }
- if ( foldersPage ) {
- connect( foldersPage->folderPathButton, SIGNAL(clicked()), SLOT(clickedFolderPath()));
- connect( foldersPage->devSysPathButton, SIGNAL(clicked()), SLOT(clickedDevSysPath()));
- }
- if ( licensePage ) {
- connect( licensePage->readLicenseButton, SIGNAL(clicked()), SLOT(clickedLicenseFile()));
- connect( licensePage->customerID, SIGNAL(textChanged(const QString&)), SLOT(licenseChanged()));
- connect( licensePage->licenseID, SIGNAL(textChanged(const QString&)), SLOT(licenseChanged()));
- connect( licensePage->licenseeName, SIGNAL(textChanged(const QString&)), SLOT(licenseChanged()));
- connect( licensePage->expiryDate, SIGNAL(textChanged(const QString&)), SLOT(licenseChanged()));
- connect( licensePage->productsString, SIGNAL(activated(int)), SLOT(licenseChanged()));
- connect( licensePage->key, SIGNAL(textChanged(const QString&)), SLOT(licenseChanged()));
- }
- if ( configPage ) {
- connect( configPage->configTabs, SIGNAL(currentChanged(QWidget*)), SLOT(configPageChanged()));
- }
- if ( buildPage ) {
- connect( &configure, SIGNAL( processExited() ), this, SLOT( configDone() ) );
- connect( &configure, SIGNAL( readyReadStdout() ), this, SLOT( readConfigureOutput() ) );
- connect( &configure, SIGNAL( readyReadStderr() ), this, SLOT( readConfigureError() ) );
- connect( &make, SIGNAL( processExited() ), this, SLOT( makeDone() ) );
- connect( &make, SIGNAL( readyReadStdout() ), this, SLOT( readMakeOutput() ) );
- connect( &make, SIGNAL( readyReadStderr() ), this, SLOT( readMakeError() ) );
- connect( buildPage->restartBuild, SIGNAL(clicked()), this, SLOT(restartBuild()) );
- }
-}
-
-void SetupWizardImpl::stopProcesses()
-{
- if( cleaner.isRunning() )
- cleaner.kill();
- if( configure.isRunning() )
- configure.kill();
- if( make.isRunning() )
- make.kill();
-}
-
-void SetupWizardImpl::clickedFolderPath()
-{
- foldersPage->folderPath->setText( shell.selectFolder( foldersPage->folderPath->text(), ( foldersPage->folderGroups->currentItem() == 0 ) ) );
-}
-
-void SetupWizardImpl::clickedDevSysPath()
-{
- QDir dir( foldersPage->devSysPath->text() );
- if( !dir.exists() )
- dir.setPath( devSysFolder );
-
- QString dest = QFileDialog::getExistingDirectory( dir.absPath(), this, 0, "Select the path to Microsoft Visual Studio" );
- if (!dest.isNull())
- foldersPage->devSysPath->setText( dest );
-}
-
-void SetupWizardImpl::sysOtherComboChanged(int)
-{
- clickedSystem(GlobalInformation::Other);
-}
-
-static QString getDirectoryList(const char *envvar)
-{
- QString environment;
- const char *cpath = getenv(envvar);
- if (cpath) {
- environment = QString::fromLocal8Bit(cpath);
- environment = QStringList::split(QRegExp("[;,]"), environment).join("\n");
- } else {
- environment = "<Environment variable empty>";
- }
- return environment;
-}
-
-void SetupWizardImpl::clickedSystem( int sys )
-{
-#ifndef Q_OS_MACX
- if (sys == 99) // This is the Integrate with IDE checkbox
- return;
- globalInformation.setSysId( GlobalInformation::SysId(sys) );
- if (sys == GlobalInformation::Other) {
- if (optionsPage->sysOtherCombo->currentText() == "win32-watcom")
- globalInformation.setSysId(GlobalInformation::Watcom);
- }
- if (!isVisible())
- return;
- QString makeCmd = globalInformation.text(GlobalInformation::MakeTool);
- QString environment;
- fixedPath = false;
- if ( !optionsPage->skipBuild->isChecked() && optionsPage->skipBuild->isEnabled() ) {
- QString commandTool;
- environment = getenv("COMSPEC");
- if( qWinVersion() & WV_DOS_based )
- commandTool = "command.com";
- else
- commandTool = "cmd.exe";
- if (!environment.isEmpty() && !environment.endsWith(commandTool, false)) {
- if (QMessageBox::critical(this, "Environment problems",
- "The 'COMSPEC' environment variable is not set to use\n"
- "'" + commandTool + "'. This could cause some problems when building.\n"
- "If you have difficulty then change it to use '" + commandTool + "'\n"
- "and restart the installation\n\n"
- "Please contact your local system administration if you have\n"
- "difficulties finding the file, or if you don't know how to\n"
- "modify the environment settings on your system.\n\n"
- "Alternatively, by clicking yes, the installer will try to set\n"
- "these for you.",
- QMessageBox::Yes, QMessageBox::No) == QMessageBox::Yes)
- fixEnvironment("COMSPEC", commandTool);
- }
- if( !findFile( makeCmd ) ) {
- environment = getDirectoryList("PATH");
- // ### try to adjust environment
- if (QMessageBox::critical(this, "Environment problems",
- "The make tool '" + makeCmd + "' could not be located in any\n"
- "directory listed in the 'PATH' environment variable:"
- "\n\n" + environment + "\n\n"
- "Make sure the path to this file is present in the PATH environment\n"
- "variable and restart the installation.\n"
- "\n"
- "You can find the path to the tool using the 'Find' tool\n"
- "and add the location to the environment settings of your\n"
- "system. Please contact your local system administration if\n"
- "you have difficulties finding the files, or if you don't\n"
- "know how to modifiy the environment settings of your system.\n\n"
- "Alternatively, by clicking yes, the installer will try to set\n"
- "these for you.",
- QMessageBox::Yes, QMessageBox::No) == QMessageBox::Yes)
- fixEnvironment("PATH", makeCmd);
- }
- if (globalInformation.sysId() != GlobalInformation::Borland && globalInformation.sysId() != GlobalInformation::MinGW) {
- if (!findFile( "string.h" ) ) {
- environment = getDirectoryList("INCLUDE");
- // ### try to adjust environment
- if (QMessageBox::critical(this, "Environment problems",
- "The file 'string.h' could not be located in any directory\n"
- "listed in the 'INCLUDE' environment variable:\n\n" + environment + "\n\n"
- "You might have to install the platform headers, or adjust\n"
- "the environment variables of your system, and restart the\n"
- "installation.\n\n"
- "Please contact your local system administration if you have\n"
- "difficulties finding the file, or if you don't know how to\n"
- "modify the environment settings on your system.\n\n"
- "Alternatively, by clicking yes, the installer will try to set\n"
- "these for you.",
- QMessageBox::Yes, QMessageBox::No) == QMessageBox::Yes)
- fixEnvironment("INCLUDE", "string.h");
-
- }
- if (!findFile("ole32.lib")) {
- environment = getDirectoryList("LIB");
- // ### try to adjust environment
- if (QMessageBox::critical(this, "Environment problems",
- "The file 'ole32.lib' could not be located in any directory\n"
- "listed in the 'LIB' environment variable:\n\n" + environment + "\n\n"
- "You might have to install the platform libraries, or adjust\n"
- "the environment variables of your system, and restart the\n"
- "installation.\n\n"
- "Please contact your local system administration if you have\n"
- "difficulties finding the file, or if you don't know how to\n"
- "modify the environment settings on your system.\n\n"
- "Alternatively, by clicking yes, the installer will try to set\n"
- "these for you.",
- QMessageBox::Yes, QMessageBox::No) == QMessageBox::Yes)
- fixEnvironment("LIB", "ole32.lib");
-
- }
- bool foundCommonDll = false;
- QString commonDll;
- QString commonDllText;
- QString presentFileText = "Make sure the path to this file is present in the PATH environment\n";
- if (globalInformation.sysId() == GlobalInformation::MSVC) {
- commonDll = "mspdb60.dll";
- foundCommonDll = findFile(commonDll);
- commonDllText = "The file 'mspdb60.dll' ";
- } else if(globalInformation.sysId() == GlobalInformation::MSVCNET) {
- commonDll = "mspdb70.dll";
- foundCommonDll = findFile(commonDll);
- if (!foundCommonDll) {
- commonDll = "mspdb71.dll";
- foundCommonDll = findFile(commonDll);
- commonDllText = "The files 'mspdb70.dll' and 'mspdb71.dll' "; // VC 7.0 or VC 7.1
- presentFileText = "Make sure the path to one of these files is present in the PATH environment\n";
- }
- } else {
- foundCommonDll = true;
- }
- if(!foundCommonDll && !fixedPath) {
- environment = getDirectoryList("PATH");
- // ### try to adjust environment
- if (QMessageBox::critical(this, "Environment problems",
- commonDllText + "could not be located in any\n"
- "directory listed in the 'PATH' environment variable:"
- "\n\n" + environment + "\n\n"
- + presentFileText +
- "variable and restart the installation.\n"
- "\n"
- "You can find the path to the tool using the 'Find' tool\n"
- "and add the location to the environment settings of your\n"
- "system. Please contact your local system administration if\n"
- "you have difficulties finding the files, or if you don't\n"
- "know how to modifiy the environment settings of your system.\n\n"
- "Alternatively, by clicking yes, the installer will try to set\n"
- "these for you.",
- QMessageBox::Yes, QMessageBox::No) == QMessageBox::Yes)
- fixEnvironment("PATH", commonDllText);
-
- }
- }
- if (globalInformation.sysId() == GlobalInformation::Intel && !findFile("icl.exe")) {
- environment = getDirectoryList("PATH");
- if (QMessageBox::critical(this, "Environment problems",
- "The Intel C++ compiler (icl.exe) could not be found\n"
- "in your PATH:\n\n" + environment + "\n\n"
- "Make sure the path to this file is present in the PATH environment\n"
- "variable and restart the installation.\n"
- "\n"
- "You can find the path to the tool using the 'Find' tool\n"
- "and add the location to the environment settings of your\n"
- "system. Please contact your local system administration if\n"
- "you have difficulties finding the files, or if you don't\n"
- "know how to modifiy the environment settings of your system.\n\n"
- "Alternatively, by clicking yes, the installer will try to set\n"
- "these for you.",
- QMessageBox::Yes, QMessageBox::No) == QMessageBox::Yes)
- fixEnvironment("PATH", "icl.exe");
-
- }
- }
-#endif
-}
-
-void SetupWizardImpl::fixEnvironment(const QString &var, const QString &file)
-{
- if (var == "COMSPEC" || !(globalInformation.sysId() == GlobalInformation::MSVC ||
- globalInformation.sysId() == GlobalInformation::MSVCNET)) {
- QString fn = QDir::toNativeSeparators(QFileDialog::getOpenFileName(QString(), QString(), this, 0,
- "Please find " + file));
- QString envs = getenv(var);
- if (var != "COMSPEC") {
- fn.truncate(fn.findRev("\\") - 1);
- fn += ";" + envs;
- }
- if (!fn.isEmpty())
- QEnvironment::putEnv(var, fn, QEnvironment::PersistentEnv | QEnvironment::LocalEnv);
- } else if (globalInformation.sysId() == GlobalInformation::MSVC) {
- QString visualStudio =
- QEnvironment::getRegistryString("Software\\Microsoft\\VisualStudio\\6.0\\Setup\\Microsoft Visual Studio",
- "ProductDir", QEnvironment::LocalMachine);
- if (var == "PATH" && !fixedPath) {
- QString newPaths = visualStudio + "\\vc98\\bin;";
- newPaths += visualStudio + "\\Common\\MSDev98\\Bin;";
- if (qWinVersion() & Qt::WV_NT_based)
- newPaths += visualStudio + "\\Common\\Tools\\WinNT;";
- else
- newPaths += visualStudio + "\\Common\\Tools\\Win95;";
- QEnvironment::putEnv("PATH", newPaths + getenv("PATH"),
- QEnvironment::PersistentEnv | QEnvironment::LocalEnv);
- fixedPath = true;
- } else if (var == "LIB") {
- QString newPaths = visualStudio + "\\vc98\\lib;";
- newPaths += visualStudio + "\\vc98\\mfc\\lib;";
- QEnvironment::putEnv("LIB", newPaths + getenv("LIB"),
- QEnvironment::PersistentEnv | QEnvironment::LocalEnv);
- } else if (var == "INCLUDE") {
- QString newPaths = visualStudio + "\\vc98\\atl\\include;";
- newPaths += visualStudio + "\\vc98\\include;";
- newPaths += visualStudio + "\\vc98\\mfc\\include;";
- QEnvironment::putEnv("INCLUDE", newPaths + getenv("INCLUDE"),
- QEnvironment::PersistentEnv | QEnvironment::LocalEnv);
- }
- } else if (globalInformation.sysId() == GlobalInformation::MSVCNET) {
- QString visualStudio = QEnvironment::getRegistryString("Software\\Microsoft\\VisualStudio\\7.1\\Setup\\VS",
- "ProductDir", QEnvironment::LocalMachine);
- if (visualStudio.isEmpty())
- visualStudio = QEnvironment::getRegistryString("Software\\Microsoft\\VisualStudio\\7.0\\Setup\\VS",
- "ProductDir", QEnvironment::LocalMachine);
- // With .NET this isn't so easily done, we need to read in the vsvars32.bat file
- // to get this right
- QFile f(visualStudio + "\\Common7\\Tools\\vsvars32.bat");
- QString contents;
- if (f.open(IO_ReadOnly)) {
- contents = QString(f.readAll());
- }
- int vsinstall = contents.find("VSINSTALLDIR=")+13;
- QString VSINSTALLDIR = contents.mid(vsinstall, contents.find("\n", vsinstall) - vsinstall);
- int vcinstall = contents.find("VCINSTALLDIR=")+13;
- QString VCINSTALLDIR = contents.mid(vcinstall, contents.find("\n", vcinstall) - vcinstall);
- int framework = contents.find("FrameworkDir=")+13;
- QString FrameworkDir = contents.mid(framework, contents.find("\n", framework) - framework);
- int frameworkVer = contents.find("FrameworkVersion=")+17;
- QString FrameworkVer = contents.mid(frameworkVer, contents.find("\n", frameworkVer) - frameworkVer);
- int frameworkSDK = contents.find("FrameworkSDKDir=")+16;
- QString FrameworkSDK = contents.mid(frameworkSDK, contents.find("\n", frameworkSDK) - frameworkSDK);
- if (var == "PATH" && !fixedPath) {
- QString newPaths = VSINSTALLDIR + ";";
- newPaths += VCINSTALLDIR + "\\Bin;";
- newPaths += VCINSTALLDIR + "\\Common7\\Tools;";
- newPaths += VCINSTALLDIR + "\\Common7\\Tools\\bin\\prerelease;";
- newPaths += VCINSTALLDIR + "\\Common7\\Tools\\bin;";
- newPaths += FrameworkSDK + "\\bin;";
- newPaths += FrameworkSDK + "\\" + FrameworkVer + ";";
- QEnvironment::putEnv("PATH", newPaths + getenv("PATH"),
- QEnvironment::PersistentEnv | QEnvironment::LocalEnv);
- fixedPath = true;
- } else if (var == "LIB") {
- QString newPaths = VCINSTALLDIR + "\\ATLMFC\\LIB;";
- newPaths += VCINSTALLDIR + "\\LIB;";
- newPaths += VCINSTALLDIR + "\\PlatformSDK\\lib\\prerelease;";
- newPaths += VCINSTALLDIR + "\\PlatformSDK\\lib;";
- newPaths += FrameworkSDK + "\\lib;";
- QEnvironment::putEnv("LIB", newPaths + getenv("LIB"),
- QEnvironment::PersistentEnv | QEnvironment::LocalEnv);
- } else if (var == "INCLUDE") {
- QString newPaths = VCINSTALLDIR + "\\ATLMFC\\INCLUDE;";
- newPaths += VCINSTALLDIR + "\\INCLUDE;";
- newPaths += VCINSTALLDIR + "\\PlatformSDK\\include\\prerelease;";
- newPaths += VCINSTALLDIR + "\\PlatformSDK\\include;";
- newPaths += FrameworkSDK + "\\include;";
- QEnvironment::putEnv("INCLUDE", newPaths + getenv("INCLUDE"),
- QEnvironment::PersistentEnv | QEnvironment::LocalEnv);
- }
-
- }
-}
-
-void SetupWizardImpl::readCleanerOutput()
-{
- updateDisplay( cleaner.readStdout(), currentOLine );
-}
-
-void SetupWizardImpl::readConfigureOutput()
-{
- updateDisplay( configure.readStdout(), currentOLine );
-}
-
-void SetupWizardImpl::readMakeOutput()
-{
- updateDisplay( make.readStdout(), currentOLine );
-}
-
-void SetupWizardImpl::readAssistantOutput()
-{
-#if defined(QSA)
- updateDisplay( assistant.readStdout(), currentOLine );
-#endif
-}
-
-void SetupWizardImpl::readCleanerError()
-{
- updateDisplay( cleaner.readStderr(), currentELine );
-}
-
-void SetupWizardImpl::readConfigureError()
-{
- updateDisplay( configure.readStderr(), currentELine );
-}
-
-void SetupWizardImpl::readMakeError()
-{
- updateDisplay( make.readStderr(), currentELine );
-}
-
-void SetupWizardImpl::readAssistantError()
-{
-#if defined(QSA)
- updateDisplay( assistant.readStderr(), currentELine );
-#endif
-}
-
-void SetupWizardImpl::updateDisplay( const QString &input, QString &output)
-{
- const QChar *c = input.unicode();
- for( int i = 0; i < (int)input.length(); ++i, ++c ) {
- switch( char( *c ) ) {
- case '\r':
- case 0x00:
- break;
- case '\t':
- currentOLine += " "; // Simulate a TAB by using 4 spaces
- break;
- case '\n':
- if( output.length() ) {
- if ( !globalInformation.reconfig() ) {
- if ( output.right( 4 ) == ".cpp" ||
- output.right( 2 ) == ".c" ||
- output.right( 4 ) == ".pro" ||
- output.right( 3 ) == ".ui" ) {
- buildPage->compileProgress->setProgress( ++filesCompiled );
- }
- }
- logOutput( output );
- output = "";
- }
- break;
- default:
- output += *c;
- break;
- }
- }
-}
-
-#if defined(Q_OS_WIN32)
-void SetupWizardImpl::installIcons( const QString& iconFolder, const QString& dirName, bool common )
-{
- QDir dir( dirName );
-
- dir.setSorting( QDir::Name | QDir::IgnoreCase );
- const QFileInfoList* filist = dir.entryInfoList();
- if ( !filist )
- return;
- QFileInfoListIterator it( *filist );
- QFileInfo* fi;
- while( ( fi = it.current() ) ) {
- if( fi->fileName()[0] != '.' && // Exclude dot-dirs
- fi->fileName() != "sql" ) { // Exclude SQL-dir
- if( fi->isDir() ) {
- installIcons( iconFolder, fi->absFilePath(), common );
- } else if( fi->fileName().right( 4 ) == ".exe" ) {
- shell.createShortcut( iconFolder, common, fi->baseName(), fi->absFilePath() );
- }
- }
- ++it;
- }
-}
-#endif
-
-void SetupWizardImpl::assistantDone()
-{
-#if defined(QSA)
- QString contentFile;
- static int count = 0;
- if ( count == 0 ) {
- connect( &assistant, SIGNAL( processExited() ), this, SLOT( assistantDone() ) );
- connect( &assistant, SIGNAL( readyReadStdout() ), this, SLOT( readAssistantOutput() ) );
- connect( &assistant, SIGNAL( readyReadStderr() ), this, SLOT( readAssistantError() ) );
- contentFile = "qsa.xml";
- } else if ( count == 1 ) {
- contentFile = "qt-script-for-applications.xml";
- } else {
- doIDEIntegration();
- return;
- }
- ++count;
-
- // install documentation
- QDir html( optionsPageQsa->installPath->text() );
- html.cd( "doc/html/" );
-
- QStringList lst;
- lst << "assistant";
- lst << "-addContentFile";
- lst << QDir::toNativeSeparators( html.filePath( contentFile ) );
- assistant.setArguments( lst );
- if( !assistant.start() ) {
- logOutput( "Installing QSA documentation failed\n" );
- assistantDone();
- }
-#else
- doIDEIntegration();
-#endif
-}
-
-void SetupWizardImpl::doIDEIntegration()
-{
-#if defined(Q_OS_WIN32)
- QDir installDir( optionsPage->installPath->text() );
- if ( optionsPage->installIDEIntegration->isChecked() && optionsPage->installIDEIntegration->isEnabled()
- && !foldersPage->devSysPath->text().isEmpty() ) {
- // install the precompiled MS integration
- if ( globalInformation.sysId() == GlobalInformation::MSVC ) {
- QDir addinsDir( foldersPage->devSysPath->text() );
- addinsDir.cd( "Common/MSDev98/Addins" );
- if ( copyFile( installDir.filePath("qmsdev.dll"), addinsDir.filePath("qmsdev.dll") ) ) {
- installDir.remove( "qmsdev.dll" );
- }
- } else if ( globalInformation.sysId() == GlobalInformation::MSVCNET
- || globalInformation.sysId() == GlobalInformation::Intel){
- QString filepath = installDir.filePath("QMsNetSetup.msi");
- filepath = filepath.replace( '/', '\\' );
-
- int res = _spawnlp( _P_NOWAIT, "msiexec.exe", "msiexec.exe", "-i", filepath.latin1(), NULL );
- if ( res == -1 ) {
- //MSIExec is not in path, look up in registry (only works for NT machines)
- QString msiexec = QEnvironment::getRegistryString( "SYSTEM\\CurrentControlSet\\Services\\MSIServer",
- "ImagePath",
- QEnvironment::LocalMachine );
- if ( !msiexec.isEmpty() )
- msiexec.remove( " /V" );
- res = _spawnl( _P_NOWAIT, msiexec.latin1(), msiexec.latin1(), "-i", filepath.latin1(), NULL );
- }
-
- if ( res == -1 ) {
- QMessageBox::warning( this, "Couldn't execute .NET addin installer script",
- "Microsoft Installer (MSI) was not found on your system.\n"
- "Please install MSI, then execute the .NET addin installer "
- "script,\nlocated at " + filepath );
- }
- }
-
- QFile *autoexp = 0;
- QFile *usertype = 0;
- switch( globalInformation.sysId() ) {
- case GlobalInformation::MSVC:
- autoexp = new QFile( foldersPage->devSysPath->text() + "\\Common\\MsDev98\\bin\\autoexp.dat" );
- usertype = new QFile( foldersPage->devSysPath->text() + "\\Common\\MsDev98\\bin\\usertype.dat" );
- break;
- case GlobalInformation::MSVCNET:
- autoexp = new QFile( foldersPage->devSysPath->text() + "\\Common7\\Packages\\Debugger\\autoexp.dat" );
- usertype = new QFile( foldersPage->devSysPath->text() + "\\Common7\\Packages\\Debugger\\usertype.dat" );
- break;
- }
-
- if ( autoexp ) {
- QString autoExpContents;
- if ( !autoexp->exists() ) {
- autoexp->open( IO_WriteOnly );
- } else {
- // First try to open the file to search for existing installations
- autoexp->open( IO_ReadOnly );
- QByteArray bytes = autoexp->readAll();
- autoExpContents = QString::fromLatin1(bytes.data(), bytes.size());
- autoexp->close();
- if ( autoExpContents.find( "; Trolltech Qt" ) == -1 )
- autoexp->open(IO_WriteOnly | IO_Translate);
- }
- if( autoexp->isOpen() ) {
- bool written = false;
- QTextStream outstream( autoexp );
- QStringList entries = QStringList::split("\r\n", autoExpContents, true);
- for (QStringList::Iterator entry = entries.begin(); entry != entries.end(); ++entry) {
- QString e(*entry);
- outstream << e << endl;
- if (!written && e.startsWith("[AutoExpand]")) {
- outstream << endl;
- outstream << "; Trolltech Qt" << endl;
- outstream << "QString=<d->unicode,su> len=<d->len,u>" << endl;
- outstream << "QCString =<shd->data, s>" << endl;
- outstream << "QPoint =x=<xp> y=<yp>" << endl;
- outstream << "QRect =x1=<x1> y1=<y1> x2=<x2> y2=<y2>" << endl;
- outstream << "QSize =width=<wd> height=<ht>" << endl;
- outstream << "QWMatrix =m11=<_m11> m12=<_m12> m21=<_m21> m22=<_m22> dx=<_dx> dy=<_dy>" << endl;
- outstream << "QVariant =Type=<d->typ> value=<d->value>" << endl;
- outstream << "QValueList<*> =Count=<sh->nodes>" << endl;
- outstream << "QPtrList<*> =Count=<numNodes>" << endl;
- outstream << "QGuardedPtr<*> =ptr=<priv->obj>" << endl;
- outstream << "QEvent =type=<t>" << endl;
- outstream << "QObject =class=<metaObj->classname,s> name=<objname,s>" << endl;
- written = true;
- }
- }
- autoexp->close();
- }
- delete autoexp;
- }
-
- if ( usertype ) {
- if ( !usertype->exists() ) {
- usertype->open( IO_WriteOnly | IO_Translate );
- } else {
- usertype->open( IO_ReadOnly );
- QString existingUserType = usertype->readAll();
- usertype->close();
- if ( existingUserType.find( "Q_OBJECT" ) == -1 )
- usertype->open(IO_WriteOnly | IO_Append | IO_Translate);
- }
- if ( usertype->isOpen() ) {
- QTextStream outstream( usertype );
- outstream << endl;
- outstream << "Q_OBJECT" << endl;
- outstream << "Q_PROPERTY" << endl;
- outstream << "Q_ENUMS" << endl;
- outstream << "Q_SETS" << endl;
- outstream << "Q_CLASSINFO" << endl;
- outstream << "emit" << endl;
- outstream << "TRUE" << endl;
- outstream << "FALSE" << endl;
- outstream << "SIGNAL" << endl;
- outstream << "SLOT" << endl;
- outstream << "signals:" << endl;
- outstream << "slots:" << endl;
- usertype->close();
- }
- delete usertype;
- }
- }
-
- if ( globalInformation.sysId() != GlobalInformation::MinGW )
- installDir.remove( "Makefile.win32-g++" );
- if (globalInformation.sysId() != GlobalInformation::MSVC)
- installDir.remove( "qmsdev.dll" );
- if (globalInformation.sysId() != GlobalInformation::MSVCNET)
- installDir.remove( "QMsNetSetup.msi" );
-#endif
-
- doStartMenuIntegration();
-}
-
-void SetupWizardImpl::doStartMenuIntegration()
-{
-#if defined(Q_OS_WIN32)
- /*
- ** Set up our icon folder and populate it with shortcuts.
- ** Then move to the next page.
- */
- QString dirName, examplesName, tutorialsName;
- bool common( foldersPage->folderGroups->currentItem() == 0 );
- QString qtDir = QEnvironment::getEnv( "QTDIR" );
-
- dirName = shell.createFolder( foldersPage->folderPath->text(), common );
- shell.createShortcut( dirName, common, "Qt Designer", qtDir + "\\bin\\designer.exe", "GUI designer", "", qtDir );
-#if !defined(EVAL) && !defined(EDU) && !defined(NON_COMMERCIAL)
- shell.createShortcut( dirName, common, "Reconfigure Qt",
- qtDir + "\\bin\\install.exe",
- "Reconfigure the Qt library",
- QString("-reconfig \"%1\"").arg(globalInformation.qtVersionStr()),
- qtDir );
-#endif
-#if defined(QSA)
- shell.createShortcut( dirName, common, "License agreement for Qt", "notepad.exe", "Review the license agreement",
- "\"" + qtDir + "\\" LICENSE_DEST "\"" );
- shell.createShortcut( dirName, common, "Readme for Qt", "notepad.exe", "Important information",
- "\"" + qtDir + "\\README\"" );
- shell.createShortcut( dirName, common, "License agreement for QSA", "notepad.exe", "Review the license agreement",
- "\"" + optionsPageQsa->installPath->text() + "\\" LICENSE_DEST "\"" );
- shell.createShortcut( dirName, common, "Readme for QSA", "notepad.exe", "Important information",
- "\"" + optionsPageQsa->installPath->text() + "\\README\"" );
-#else
- shell.createShortcut( dirName, common, "License agreement", "notepad.exe", "Review the license agreement", "\"" + qtDir + "\\" LICENSE_DEST "\"" );
- shell.createShortcut( dirName, common, "Readme", "notepad.exe", "Important information", QString( "\"" ) + qtDir + "\\README\"" );
-#endif
- shell.createShortcut( dirName, common, "Qt Assistant", qtDir + "\\bin\\assistant.exe", "Browse the On-line documentation", "", qtDir );
- shell.createShortcut( dirName, common, "Qt Linguist", qtDir + "\\bin\\linguist.exe", "Qt translation utility", "", qtDir );
- shell.createInternetShortcut( dirName, common, "Trolltech.com", "http://qtsoftware.com/" );
-#if defined(EVAL_CD)
- shell.createInternetShortcut( dirName, common, "Register for Support", "http://qtsoftware.com/products/qt/evaluate.html" );
-#endif
-
- if ( ( ( !globalInformation.reconfig() && optionsPage->skipBuild->isChecked() )
- || ( globalInformation.reconfig() && !configPage->rebuildInstallation->isChecked() ) )
- || qWinVersion() & WV_DOS_based ) {
- QString description;
-#if defined(EVAL) || defined(EDU) || defined(NON_COMMERCIAL)
- buildQtShortcutText = "Build Qt Examples and Tutorials";
- description = "Build the Qt Examples and Tutorials";
-#else
- buildQtShortcutText = "Build Qt " + globalInformation.qtVersionStr();
- description = "Build the Qt library";
-#endif
- shell.createShortcut( dirName, common,
- buildQtShortcutText,
- QEnvironment::getEnv( "QTDIR" ) + "\\build.bat",
- description );
- }
-
-#if defined(QSA)
- QString qsaExamplesName;
- if( qWinVersion() & WV_DOS_based ) {
- shell.createShortcut( dirName, common,
- "QSA Examples",
- optionsPageQsa->installPath->text() + "\\examples" );
- } else {
- qsaExamplesName = shell.createFolder( foldersPage->folderPath->text() + "\\QSA Examples", common );
- installIcons( qsaExamplesName, optionsPageQsa->installPath->text() + "\\examples", common );
- }
-#endif
- if( optionsPage->installTutorials->isChecked() ) {
- if( qWinVersion() & WV_DOS_based ) {
- shell.createShortcut( dirName, common,
-#if defined(QSA)
- "Qt Tutorials",
-#else
- "Tutorials",
-#endif
- QEnvironment::getEnv( "QTDIR" ) + "\\tutorial" );
- } else {
-#if defined(QSA)
- tutorialsName = shell.createFolder( foldersPage->folderPath->text() + "\\Qt Tutorials", common );
-#else
- tutorialsName = shell.createFolder( foldersPage->folderPath->text() + "\\Tutorials", common );
-#endif
- installIcons( tutorialsName, QEnvironment::getEnv( "QTDIR" ) + "\\tutorial", common );
- }
- }
- if( optionsPage->installExamples->isChecked() ) {
- if( qWinVersion() & WV_DOS_based ) {
- shell.createShortcut( dirName, common,
-#if defined(QSA)
- "Qt Examples",
-#else
- "Examples",
-#endif
- QEnvironment::getEnv( "QTDIR" ) + "\\examples" );
- } else {
-#if defined(QSA)
- examplesName = shell.createFolder( foldersPage->folderPath->text() + "\\Qt Examples", common );
-#else
- examplesName = shell.createFolder( foldersPage->folderPath->text() + "\\Examples", common );
-#endif
- installIcons( examplesName, QEnvironment::getEnv( "QTDIR" ) + "\\examples", common );
- }
- }
-#endif
-#if defined(QSA)
-#endif
- buildPage->compileProgress->setProgress( buildPage->compileProgress->totalSteps() );
- setNextEnabled( buildPage, true );
- logOutput( "The build was successful", true );
-}
-
-void SetupWizardImpl::makeDone()
-{
- makeDone( !make.normalExit() || make.exitStatus() );
-}
-
-void SetupWizardImpl::makeDone( bool error )
-{
- if( error ) {
- if (!backButton()->isEnabled()) {
- logOutput( "The build process failed!\n" );
- emit wizardPageFailed( indexOf(currentPage()) );
- QMessageBox::critical( this, "Error", "The build process failed!\nSee the log for details." );
- buildPage->restartBuild->setText( "Restart compile" );
- backButton()->setEnabled(true);
- }
- setAppropriate( progressPage, false );
-#if defined(QSA)
- } else if ( make.workingDirectory() == QEnvironment::getEnv( "QTDIR" ) ) {
- QStringList args;
- args << globalInformation.text(GlobalInformation::MakeTool);
- args << "sub-examples";
-
- make.setWorkingDirectory( optionsPageQsa->installPath->text() );
- make.setArguments( args );
-
- if( !make.start() ) {
- logOutput( "Could not start make process.\n"
- "Make sure that your compiler tools are installed\n"
- "and registered correctly in your PATH environment." );
- emit wizardPageFailed( indexOf(currentPage()) );
- backButton()->setEnabled( true );
- }
-#endif
- } else {
- // We still have some more items to do in order to finish all the
- // integration stuff.
- if ( !globalInformation.reconfig() ) {
- logOutput( "Doing the final integration steps..." );
- assistantDone();
- } else {
- setNextEnabled( buildPage, true );
- logOutput( "The build was successful", true );
- }
- buildPage->restartBuild->setText( "Success" );
- buildPage->restartBuild->setEnabled( false );
- }
-}
-
-void SetupWizardImpl::configDone()
-{
- QStringList args;
-
- if( globalInformation.reconfig() && !configPage->rebuildInstallation->isChecked() )
- showPage( finishPage );
-
-#if !defined(EVAL) && !defined(EDU) && !defined(NON_COMMERCIAL)
- if( !configure.normalExit() || configure.exitStatus() ) {
- logOutput( "The configure process failed.\n" );
- emit wizardPageFailed( indexOf(currentPage()) );
- buildPage->restartBuild->setText( "Restart configure" );
- setAppropriate( progressPage, false );
- backButton()->setEnabled(true);
- } else
-#endif
- {
- args << globalInformation.text(GlobalInformation::MakeTool);
-#if !defined(EVAL) && !defined(EDU) && !defined(NON_COMMERCIAL)
- args << "sub-src";
- args << "sub-plugins";
- if ( optionsPage ) {
- if ( optionsPage->installTools->isChecked() )
- args << "sub-tools";
- if ( optionsPage->installTutorials->isChecked() )
- args << "sub-tutorial";
- if ( optionsPage->installExamples->isChecked() )
- args << "sub-examples";
- if ( optionsPage->installExtensions->isChecked() )
- args << "sub-extensions";
- } else if (globalInformation.reconfig()) {
- args << "sub-tools"; // We want to make sure it rebuilds uic etc
- }
-#elif defined(Q_OS_WIN32)
- if ( optionsPage ) {
- if ( optionsPage->installTutorials->isChecked() )
- args << "sub-tutorial";
- if ( optionsPage->installExamples->isChecked() )
- args << "sub-examples";
-#if !defined(NON_COMMERCIAL)
- if ( optionsPage->installExtensions->isChecked() )
- args << "sub-extensions";
-#endif
- }
- if ( args.count() == 1 ) {
- make.setWorkingDirectory( QEnvironment::getEnv( "QTDIR" ) );
- makeDone( false );
- return;
- }
-#endif
- if ( globalInformation.sysId() == GlobalInformation::MinGW ) {
- args << "-fMakefile.win32-g++";
- }
-
- make.setWorkingDirectory( QEnvironment::getEnv( "QTDIR" ) );
- make.setArguments( args );
-
- if( !make.start() ) {
- logOutput( "Could not start make process.\n"
- "Make sure that your compiler tools are installed\n"
- "and registered correctly in your PATH environment." );
- emit wizardPageFailed( indexOf(currentPage()) );
- backButton()->setEnabled( true );
- } else {
- buildPage->restartBuild->setText( "Stop compilation" );
- }
- }
-}
-
-void SetupWizardImpl::restartBuild()
-{
- if ( configure.isRunning() ||
- (!configure.isRunning() && (!configure.normalExit() || configure.exitStatus())) ) {
- if ( configure.isRunning() ) { // Stop configure
- configure.kill();
- buildPage->restartBuild->setText( "Restart configure" );
- logOutput( "\n*** Configure stopped by user...\n" );
- backButton()->setEnabled( true );
- } else { // Restart configure
- emit wizardPageShowed( indexOf(currentPage()) );
- backButton()->setEnabled( false );
- cleanDone();
- buildPage->restartBuild->setText( "Stop configure" );
- logOutput( "\n*** Configure restarted by user...\n" );
- }
- } else if ( make.isRunning() ||
- (!make.isRunning() && (!make.normalExit() || make.exitStatus())) ) {
- if ( make.isRunning() ) { // Stop compile
- buildPage->restartBuild->setText( "Restart compile" );
- logOutput( "\n*** Compilation stopped by user...\n" );
- backButton()->setEnabled( true );
- make.kill();
- } else { // Restart compile
- wizardPageShowed( indexOf(currentPage()) );
- backButton()->setEnabled( false );
- configDone();
- buildPage->restartBuild->setText( "Stop compile" );
- logOutput( "\n*** Compilation restarted by user...\n" );
- }
- }
-}
-
-void SetupWizardImpl::saveSettings()
-{
-#if !defined(EVAL) && !defined(EDU) && !defined(NON_COMMERCIAL)
- QApplication::setOverrideCursor( Qt::waitCursor );
- saveSet( configPage->configList );
- saveSet( configPage->advancedList );
- QApplication::restoreOverrideCursor();
-#endif
-}
-
-void SetupWizardImpl::saveSet( QListView* list )
-{
- QSettings settings;
- settings.writeEntry( "/Trolltech/Qt/ResetDefaults", "FALSE" );
-
- QListViewItemIterator it( list );
- while ( it.current() ) {
- QListViewItem *itm = it.current();
- ++it;
- if ( itm->rtti() != CheckListItem::RTTI )
- continue;
- CheckListItem *item = (CheckListItem*)itm;
- if ( item->type() == QCheckListItem::RadioButton ) {
- if ( item->isOn() ) {
- QString folder;
- QListViewItem *pItem = item;
- while ( (pItem = pItem->parent() ) ) {
- if ( folder.isEmpty() )
- folder = pItem->text( 0 );
- else
- folder = pItem->text(0) + "/" + folder;
- }
-
- settings.writeEntry( "/Trolltech/Qt/" + folder, item->text() );
- }
- } else if ( item->type() == QCheckListItem::CheckBox ) {
- QStringList lst;
- QListViewItem *p = item->parent();
- if ( p )
- --it;
- QString c = p->text( 0 );
- while ( ( itm = it.current() ) &&
- itm->rtti() == CheckListItem::RTTI &&
- item->type() == CheckListItem::CheckBox ) {
- item = (CheckListItem*)itm;
- ++it;
- if ( item->isOn() )
- lst << item->text( 0 );
- }
- if ( lst.count() )
- settings.writeEntry( "/Trolltech/Qt/" + p->text(0), lst, ',' );
- else
- settings.writeEntry( "/Trolltech/Qt/" + p->text(0), "Nothing selected" );
- }
- }
-}
-
-void SetupWizardImpl::showPage( QWidget* newPage )
-{
- if ( currentPage() == configPage && newPage == progressPage && !verifyConfig() ) {
- if (QMessageBox::warning( this, "Configuration with Warnings",
- "One or more of the selected options could not be verified by the installer.\n"
- "Do you want to continue?", "Yes", "No" ))
- return;
- }
-
- QWizard::showPage( newPage );
- setInstallStep( indexOf(newPage) + 1 );
-
- if( newPage == licensePage ) {
- showPageLicense();
- } else if( newPage == licenseAgreementPage ) {
- readLicenseAgreement();
- } else if( newPage == licenseAgreementPageQsa ) {
- readLicenseAgreement();
- } else if( newPage == optionsPage ) {
- showPageOptions();
- } else if( newPage == foldersPage ) {
- showPageFolders();
- } else if( newPage == configPage ) {
- showPageConfig();
- } else if( newPage == progressPage ) {
- showPageProgress();
- } else if( newPage == buildPage ) {
- showPageBuild();
- } else if( newPage == finishPage ) {
- showPageFinish();
- }
-}
-
-void SetupWizardImpl::showPageLicense()
-{
- licenseChanged();
-}
-
-void SetupWizardImpl::showPageOptions()
-{
- static bool done = false;
- if (done)
- return;
-
- done = true;
-
- // First make sure that the current license information is saved
- if( !globalInformation.reconfig() )
- writeLicense( QDir::homeDirPath() + "/.qt-license" );
-
- // ### unsupported
- optionsPage->installDocs->hide();
-
- bool enterprise = licenseInfo[ "PRODUCTS" ] == "qt-enterprise";
- optionsPage->installExtensions->setChecked( enterprise );
- optionsPage->installExtensions->setEnabled( enterprise );
-
-#if defined(EVAL) || defined(EDU) || defined(NON_COMMERCIAL)
- optionsPage->installDocs->setEnabled( false );
- optionsPage->skipBuild->setEnabled( false );
- if ( globalInformation.sysId()==GlobalInformation::Borland ) {
- optionsPage->sysMsvcNet->setEnabled( false );
- optionsPage->sysMsvc->setEnabled( false );
- optionsPage->sysBorland->setEnabled( true );
- optionsPage->sysMinGW->setEnabled( false );
- optionsPage->sysIntel->setEnabled( false );
- optionsPage->sysOther->setEnabled( false );
- } else {
- optionsPage->sysMsvcNet->setEnabled( true );
- optionsPage->sysMsvc->setEnabled( true );
- optionsPage->sysBorland->setEnabled( false );
- optionsPage->sysOther->setEnabled( false );
- optionsPage->sysIntel->setEnabled( false );
- optionsPage->sysMinGW->setEnabled( false );
- }
-# if defined(Q_OS_WIN32)
- optionsPage->installExamples->setEnabled( true );
- optionsPage->installTutorials->setEnabled( true );
- optionsPage->installTools->setEnabled( false );
-# if defined(NON_COMMERCIAL)
- optionsPage->installExtensions->hide();
-# else
- optionsPage->installExtensions->setChecked( true );
- optionsPage->installExtensions->setEnabled( true );
-# endif
-# else
- optionsPage->installExamples->setEnabled( false );
- optionsPage->installTutorials->setEnabled( false );
- optionsPage->installExtensions->setChecked( false );
- optionsPage->installExtensions->setEnabled( false );
-# endif
-#else
-# if defined(Q_OS_WIN32)
- // No need to offer the option of skipping the build on 9x, it's skipped anyway
- if ( qWinVersion() & WV_DOS_based )
- optionsPage->skipBuild->setEnabled( false );
-# endif
-#endif
-
- // trigger environment test
- clickedSystem(globalInformation.sysId());
-}
-
-void SetupWizardImpl::showPageFolders()
-{
- QString ideName = globalInformation.text(GlobalInformation::IDE);
- foldersPage->devSysLabel->setText( ideName + " path");
- foldersPage->devSysLabel->setShown(!ideName.isEmpty());
- foldersPage->devSysPath->setShown(!ideName.isEmpty());
- foldersPage->devSysPathButton->setShown(!ideName.isEmpty());
-#if defined(Q_OS_WIN32)
- if( globalInformation.sysId() == GlobalInformation::MSVC ) {
- QString devPath = QEnvironment::getRegistryString( "Software\\Microsoft\\VisualStudio\\6.0\\Setup\\Microsoft Visual Studio", "ProductDir", QEnvironment::LocalMachine );
- if ( devPath.isEmpty() ) {
- // fallback for Windows 9x
- QDir msdevDir( QEnvironment::getEnv("MSDEVDIR") );
- msdevDir.cdUp();
- msdevDir.cdUp();
- devPath = QDir::toNativeSeparators( msdevDir.absPath() );
- }
- foldersPage->devSysPath->setText( devPath );
- } else if ( globalInformation.sysId() == GlobalInformation::MSVCNET ) {
- QString devPath = QEnvironment::getRegistryString( "Software\\Microsoft\\VisualStudio\\7.1\\Setup\\VS", "ProductDir", QEnvironment::LocalMachine );
- if ( !devPath.length() )
- devPath = QEnvironment::getRegistryString( "Software\\Microsoft\\VisualStudio\\7.0\\Setup\\VS", "ProductDir", QEnvironment::LocalMachine );
- foldersPage->devSysPath->setText( devPath );
- }
-#endif
-}
-
-void SetupWizardImpl::showPageProgress()
-{
- saveSettings();
- int totalSize = 0;
- QFileInfo fi;
- totalRead = 0;
- bool copySuccessful = true;
-
- if( !filesCopied ) {
- createDir( optionsPage->installPath->text() );
- if (optionsPageQsa)
- createDir( optionsPageQsa->installPath->text() );
- progressPage->filesDisplay->append( "Installing files...\n" );
-
- // install the right LICENSE file
- QDir installDir( optionsPage->installPath->text() );
- QFile licenseFile( installDir.filePath( LICENSE_DEST ) );
- if ( licenseFile.open( IO_WriteOnly ) ) {
- ResourceLoader *rcLoader;
-#if defined(EVAL) || defined(EDU)
- rcLoader = new ResourceLoader( "LICENSE" );
-#elif defined(NON_COMMERCIAL)
- if ( licenseAgreementPage->countryCombo->currentItem() == 0 )
- rcLoader = new ResourceLoader( "LICENSE-US" );
- else
- rcLoader = new ResourceLoader( "LICENSE" );
-#else
- if ( usLicense ) {
- rcLoader = new ResourceLoader( "LICENSE-US" );
- } else {
- rcLoader = new ResourceLoader( "LICENSE" );
- }
-#endif
- if ( rcLoader->isValid() ) {
- licenseFile.writeBlock( rcLoader->data() );
- } else {
- emit wizardPageFailed( indexOf(currentPage()) );
- QMessageBox::critical( this, tr("Package corrupted"),
- tr("Could not find the LICENSE file in the package.\nThe package might be corrupted.") );
- }
- delete rcLoader;
- licenseFile.close();
- } else {
- // ### error handling -- we could not write the LICENSE file
- }
-#if defined(QSA)
- QDir installDirQsa( optionsPageQsa->installPath->text() );
- QFile licenseFileQsa( installDirQsa.filePath( LICENSE_DEST ) );
- if ( licenseFileQsa.open( IO_WriteOnly ) ) {
- ResourceLoader *rcLoader;
- rcLoader = new ResourceLoader( "LICENSE_QSA" );
- if ( rcLoader->isValid() ) {
- licenseFileQsa.writeBlock( rcLoader->data() );
- } else {
- emit wizardPageFailed( indexOf(currentPage()) );
- QMessageBox::critical( this, tr("Package corrupted"),
- tr("Could not find the LICENSE file in the package.\nThe package might be corrupted.") );
- }
- delete rcLoader;
- licenseFileQsa.close();
- } else {
- // ### error handling -- we could not write the LICENSE file
- }
-#endif
-
- // Install the files -- use different fallbacks if one method failed.
- QArchive ar;
- QString licenseKey;
-#if !defined(EVAL_CD) && !defined(NON_COMMERCIAL)
- licenseKey = licensePage->key->text();
-#endif
- ar.setVerbosity( QArchive::Destination | QArchive::Verbose | QArchive::Progress );
- connect( &ar, SIGNAL( operationFeedback( const QString& ) ), this, SLOT( archiveMsg( const QString& ) ) );
- connect( &ar, SIGNAL( operationFeedback( int ) ), progressPage->operationProgress, SLOT( setProgress( int ) ) );
- // First, try to find qt.arq as a binary resource to the file.
- ResourceLoader rcLoader( "QT_ARQ", 500 );
- if ( rcLoader.isValid() ) {
- progressPage->operationProgress->setTotalSteps( rcLoader.data().count() );
- QDataStream ds( rcLoader.data(), IO_ReadOnly );
- ar.readArchive( &ds, optionsPage->installPath->text(), licenseKey );
- } else {
- // If the resource could not be loaded or is smaller than 500
- // bytes, we have the dummy qt.arq: try to find and install
- // from qt.arq in the current directory instead.
- QString archiveName = "qt.arq";
-#if defined(Q_OS_MAC)
- QString appDir = qApp->argv()[0];
- int truncpos = appDir.findRev( "/Contents/MacOS/" );
- if (truncpos != -1)
- appDir.truncate( truncpos );
- archiveName = appDir + "/Contents/Qt/qtmac.arq";
-#endif
- fi.setFile( archiveName );
- if( fi.exists() )
- totalSize = fi.size();
- progressPage->operationProgress->setTotalSteps( totalSize );
-
- ar.setPath( archiveName );
- if( ar.open( IO_ReadOnly ) ) {
- ar.readArchive( optionsPage->installPath->text(), licenseKey );
- } else {
- // We were not able to find any qt.arq -- so assume we have
- // the old fashioned zip archive and simply copy the files
- // instead.
- progressPage->operationProgress->setTotalSteps( FILESTOCOPY );
- copySuccessful = copyFiles( QDir::currentDirPath(), optionsPage->installPath->text(), true );
-
- /*These lines are only to be used when changing the filecount estimate
- QString tmp( "%1" );
- tmp = tmp.arg( totalFiles );
- QMessageBox::information( this, tmp, tmp );
- */
- progressPage->operationProgress->setProgress( FILESTOCOPY );
- }
- }
-
-#if defined(QSA)
- QArchive arQsa;
- arQsa.setVerbosity( QArchive::Destination | QArchive::Verbose | QArchive::Progress );
- connect( &arQsa, SIGNAL( operationFeedback( const QString& ) ), this, SLOT( archiveMsg( const QString& ) ) );
- connect( &arQsa, SIGNAL( operationFeedback( int ) ), progressPage->operationProgress, SLOT( setProgress( int ) ) );
- ResourceLoader rcLoaderQsa( "QSA_ARQ", 500 );
- if ( rcLoaderQsa.isValid() ) {
- progressPage->operationProgress->setTotalSteps( rcLoaderQsa.data().count() );
- QDataStream ds( rcLoaderQsa.data(), IO_ReadOnly );
- arQsa.readArchive( &ds, optionsPageQsa->installPath->text(), licenseKey );
- } else {
- // ### error handling
- }
-#endif
- filesCopied = copySuccessful;
-
- timeCounter = 30;
- if( copySuccessful ) {
- QDir installDir( optionsPage->installPath->text() );
-#if defined(Q_OS_WIN32)
- QDir windowsFolderDir( shell.windowsFolderName );
-# if !defined(EVAL) && !defined(EDU) && !defined(NON_COMMERCIAL)
- {
- // move $QTDIR/install.exe to $QTDIR/bin/install.exe
- // This is done because install.exe is also used to reconfigure Qt
- // (and this expects install.exe in bin). We can't move install.exe
- // to bin in first place, since for the snapshots, we don't have
- // the .arq archives.
- QString inFile( installDir.filePath("install.exe") );
- copyFile(inFile, installDir.filePath("bin/install.exe"));
- QFile::remove(inFile);
- }
-# endif
- {
- // move the uninstaller to the Windows directory
- // This is necessary since the uninstaller deletes all files in
- // the installation directory (and therefore can't delete
- // itself).
- QString inFile( installDir.filePath("bin/quninstall.exe") );
- copyFile(inFile, windowsFolderDir.filePath("quninstall.exe"));
- QFile::remove(inFile);
- }
-#endif
-#if defined(EVAL) || defined(EDU) || defined(NON_COMMERCIAL)
- QStringList::Iterator it;
- QDir lib( optionsPage->installPath->text() );
- lib.cd( "lib" );
-# if !defined(EVAL_CD)
- // patch qt*.dll
-# if !defined(Q_OS_MAC)
- QStringList qtDlls = lib.entryList( "qt*.dll" );
-# else
- QStringList qtDlls = lib.entryList( "libqt-mt-eval.dylib" );
-# endif
- if ( qtDlls.count() == 0 ) {
- copySuccessful = false;
- QMessageBox::critical( this,
- tr( "Error patching Qt library" ),
-# if defined(EVAL)
- tr( "Could not patch the Qt library with the evaluation\n"
- "license information - no Qt DLL was found." )
-# elif defined(EDU)
- tr( "Could not patch the Qt library with the educational\n"
- "edition license information - no Qt DLL was found." )
-# else
- tr( "Could not patch the Qt library the installation\n"
- "path information - no Qt DLL was found." )
-# endif
- );
- }
- for ( it=qtDlls.begin(); it!=qtDlls.end(); ++it ) {
- //### add serial number etc. to log
- logFiles( tr("Patching the Qt library %1.").arg(*it) );
- int ret = trDoIt( lib.absFilePath(*it),
-# if defined(EVAL)
- licensePage->evalName->text().latin1(),
- licensePage->evalCompany->text().latin1(),
- licensePage->serialNumber->text().latin1(),
-# elif defined(EDU)
- "",
- licensePage->university->text().latin1(),
- licensePage->serialNumber->text().latin1(),
-# endif
- installDir.absPath()
- );
- if ( ret != 0 ) {
- copySuccessful = false;
- QMessageBox::critical( this,
- tr( "Error patching Qt library" ),
-# if defined(EVAL)
- tr( "Could not patch the Qt library with the evaluation\n"
- "license information. You will not be able to execute\n"
- "any program linked against %1. Error %2" ).arg( *it ).arg(ret)
-# elif defined(EDU)
- tr( "Could not patch the Qt library with the educational\n"
- "edition license information. You will not be able to\n"
- "execute any program linked against %1." ).arg( *it )
-# else
- tr( "Could not patch the Qt library with the installation\n"
- "path information. You will not be able to execute\n"
- "some programs linked against %1." ).arg( *it )
-# endif
- );
- }
- }
-# endif
-# if !defined(Q_OS_MAC)
- // copy lib/*.dll bin/
- QStringList dlls = lib.entryList( "*.dll" );
- for ( it=dlls.begin(); it!=dlls.end(); ++it ) {
- copyFile( lib.absFilePath(*it), QDir::cleanDirPath(lib.absFilePath("../bin/"+*it)) );
- }
- // delete the non-wanted database drivers
- QDir plugins( optionsPage->installPath->text() );
- plugins.cd( "plugins" );
- plugins.cd( "sqldrivers" );
- QDir bin( optionsPage->installPath->text() );
- bin.cd( "bin" );
-#if defined(NON_COMMERCIAL)
- if ( sqlitePluginInstall && !sqlitePluginInstall->isOn() ) {
- plugins.remove( "qsqlite.dll" );
- }
-#else
- if ( mysqlPluginInstall && !mysqlPluginInstall->isOn() ) {
- plugins.remove( "qsqlmysql.dll" );
- bin.remove( "libmySQL.dll" );
- }
- if ( ociPluginInstall && !ociPluginInstall->isOn() ) {
- plugins.remove( "qsqloci.dll" );
- }
- if ( odbcPluginInstall && !odbcPluginInstall->isOn() ) {
- plugins.remove( "qsqlodbc.dll" );
- }
- if ( psqlPluginInstall && !psqlPluginInstall->isOn() ) {
- plugins.remove( "qsqlpsql.dll" );
- bin.remove( "libpq.dll" );
- }
- if ( tdsPluginInstall && !tdsPluginInstall->isOn() ) {
- plugins.remove( "qsqltds.dll" );
- }
- if ( db2PluginInstall && !db2PluginInstall->isOn() ) {
- plugins.remove( "qsqldb2.dll" );
- }
-#endif
- // patch the .qmake.cache with the correct paths
- QFile cacheFile( installDir.filePath(".qmake.cache") );
- if ( cacheFile.open( IO_ReadOnly | IO_Translate ) ) {
- QTextStream tsIn( &cacheFile );
- QString cache = tsIn.read();
- cacheFile.close();
- if ( cacheFile.open( IO_WriteOnly | IO_Translate ) ) {
- QTextStream tsOut( &cacheFile );
- if ( globalInformation.sysId() == GlobalInformation::Borland )
- tsOut << cache.replace( "C:/QtEvaluation/qtborland", installDir.absPath() );
- else
- tsOut << cache.replace( "C:/QtEvaluation/qtmsvc", installDir.absPath() );
- cacheFile.close();
- }
- }
-# endif
-#endif
- logFiles( tr("All files have been installed.\n"
- "This log has been saved to the installation directory.\n"
- "The build will start automatically in 30 seconds."), true );
- } else {
- logFiles( tr("One or more errors occurred during file installation.\n"
- "Please review the log and try to amend the situation.\n"), true );
- }
- }
- if ( copySuccessful ) {
-#if defined(Q_OS_WIN32)
- /*
- ** Then record the installation in the registry, and set up the uninstallation
- */
- QStringList uninstaller;
- uninstaller << ( QString("\"") + shell.windowsFolderName + "\\quninstall.exe" + QString("\"") );
- uninstaller << optionsPage->installPath->text();
-
- if( foldersPage->folderGroups->currentItem() == 0 )
- uninstaller << ( QString("\"") + shell.commonProgramsFolderName + QString("\\") + foldersPage->folderPath->text() + QString("\"") );
- else
- uninstaller << ( QString("\"") + shell.localProgramsFolderName + QString("\\") + foldersPage->folderPath->text() + QString("\"") );
-
- uninstaller << ( QString("\"") + globalInformation.qtVersionStr() + QString("\"") );
-
- QEnvironment::recordUninstall( QString( "Qt " ) + globalInformation.qtVersionStr(), uninstaller.join( " " ) );
-#endif
- autoContTimer.start( 1000 );
- }
- else
- emit wizardPageFailed( indexOf(currentPage()) );
- setNextEnabled( progressPage, copySuccessful );
-}
-
-void SetupWizardImpl::showPageFinish()
-{
- autoContTimer.stop();
- nextButton()->setText( "Next >" );
- QString finishMsg;
- if ( ( ( !globalInformation.reconfig() && !optionsPage->skipBuild->isChecked() )
- || ( globalInformation.reconfig() && configPage->rebuildInstallation->isChecked() ) )
-#if defined(Q_OS_WIN32)
- && qWinVersion() & WV_NT_based ) {
-#else
- ) {
-#endif
- if( globalInformation.reconfig() ) {
- finishMsg = "Qt has been reconfigured and rebuilt, and is ready for use.";
- } else {
-#if defined(Q_OS_MAC)
- finishMsg = QString( "Qt has been installed to " ) + optionsPage->installPath->text() +
- " and is ready to use.\n\nPlease try out the developer tools in the bin folder and example "
- "programs in the examples folder.\n\nFor further information please consult the "
- "README.txt file included in the installation folder.";
-#else
- finishMsg = QString( "Qt has been installed to %1 and is ready to use.\n"
- "You might have to logoff and logon for changes to the environment to have an effect.").
- arg(optionsPage->installPath->text());
-# if defined(QSA)
- finishMsg = QString( "\nQSA has been installed to " ) + optionsPageQsa->installPath->text() + " and is ready to use.";
-# endif
-#endif
- }
- } else {
- if( globalInformation.reconfig() ) {
- finishMsg = "The new configuration has been written.\nThe library needs to be rebuilt to activate the ";
- finishMsg += "new configuration.";
-#if defined(Q_OS_WIN32)
- finishMsg += "To rebuild it, use the \"Build Qt ";
- finishMsg += globalInformation.qtVersionStr();
- finishMsg += "\" icon in the Qt program group in the start menu.";
-#endif
- } else {
- finishMsg = QString( "The Qt files have been installed to " ) + optionsPage->installPath->text() + " and is ready to be compiled.\n";
-#if defined(Q_OS_WIN32)
- if( persistentEnv && qWinVersion() & WV_DOS_based ) {
- finishMsg += "The environment variables needed to use Qt have been recorded into your AUTOEXEC.BAT file.\n";
- finishMsg += "Please review this file, and take action as appropriate depending on your operating system to get them into the persistent environment. (Windows Me users, run MsConfig)\n\n";
- }
-# if defined(EVAL) || defined(EDU) || defined(NON_COMMERCIAL)
- finishMsg += QString( "To build the examples and tutorials, use the "
- "\"Build the Qt Examples and Tutorials\""
- " icon which has been installed into your Start-Menu." );
-# else
- finishMsg += QString( "To build Qt, use the "
- "\"Build Qt " ) + globalInformation.qtVersionStr() + "\""
- " icon which has been installed into your Start-Menu.";
-# endif
-#endif
- }
- }
-#if defined(EVAL_CD)
- finishMsg += "\n\n"
- "The Trolltech technical support service is available to "
- "Qt Professional and Enterprise Edition licensees. As an "
- "evaluation user, you can register for 30 days of evaluation "
- "support at\n"
- "http://qtsoftware.com/products/qt/evaluate.html";
-#endif
- finishPage->finishText->setText( finishMsg );
-}
-
-void SetupWizardImpl::licenseChanged()
-{
-#if defined(EVAL) || defined(EDU) || defined(NON_COMMERCIAL)
- int ret = trCheckIt(
-# if defined(EVAL)
- licensePage->evalName->text().latin1(),
- licensePage->evalCompany->text().latin1(),
- licensePage->serialNumber->text().latin1()
-# elif defined(EDU)
- "",
- licensePage->university->text().latin1(),
- licensePage->serialNumber->text().latin1()
-# else
- "",
- "",
- ""
-# endif
- );
-
- if ( ret == 0 )
- setNextEnabled( licensePage, true );
- else
- setNextEnabled( licensePage, false );
- return;
-#else
- QDate date;
- uint features;
- uint testFeature;
- QString platformString;
- QString licenseKey = licensePage->key->text().stripWhiteSpace();
- if ( licenseKey.length() != 14 ) {
- goto rejectLicense;
- }
- features = featuresForKey( licenseKey.upper() );
- date = decodedExpiryDate( licenseKey.mid(9) );
- if ( !date.isValid() ) {
- goto rejectLicense;
- }
-# if defined(Q_OS_MAC)
- testFeature = Feature_Mac;
- platformString = "Mac OS X";
-# elif defined(Q_OS_WIN32)
- testFeature = Feature_Windows;
- platformString = "Windows";
-# else
- testFeature = Feature_Unix;
- platformString = "UNIX";
-# ifdef Q_CC_GNU
-# warning "What about Qtopia Core?"
-# endif
-# endif
- if ( !(features&testFeature) && currentPage() == licensePage ) {
- if ( features & (Feature_Unix|Feature_Windows|Feature_Mac|Feature_Embedded) ) {
- int ret = QMessageBox::information( this,
- tr("No %1 license").arg(platformString),
- tr("You are not licensed for the %1 platform.\n"
- "Please contact sales@trolltech.com to upgrade\n"
- "your license to include the Windows platform.").arg(platformString),
- tr("Try again"),
- tr("Abort installation")
- );
- if ( ret == 1 ) {
- QApplication::exit();
- } else {
- licensePage->key->setText( "" );
- }
- }
- goto rejectLicense;
- }
- if ( date < QDate::currentDate() && currentPage() == licensePage ) {
- static bool alreadyShown = false;
- if ( !alreadyShown ) {
- QMessageBox::warning( this,
- tr("Support and upgrade period has expired"),
- tr("Your support and upgrade period has expired.\n"
- "\n"
- "You may continue to use your last licensed release\n"
- "of Qt under the terms of your existing license\n"
- "agreement. But you are not entitled to technical\n"
- "support, nor are you entitled to use any more recent\n"
- "Qt releases.\n"
- "\n"
- "Please contact sales@trolltech.com to renew your\n"
- "support and upgrades for this license.")
- );
- alreadyShown = true;
- }
- }
- if ( features & Feature_US )
- usLicense = true;
- else
- usLicense = false;
-
- licensePage->expiryDate->setText( date.toString( Qt::ISODate ) );
- if( features & Feature_Enterprise ) {
- licensePage->productsString->setCurrentItem( 1 );
- emit editionString( "Enterprise Edition" );
- } else {
- licensePage->productsString->setCurrentItem( 0 );
- emit editionString( "Professional Edition" );
- }
- setNextEnabled( licensePage, true );
- return;
-
-rejectLicense:
- licensePage->expiryDate->setText( "" );
-# if defined(Q_OS_WIN32)
- //TODO: Is this a bug? It bus errors on MACX, ask rms.
- // it should work -- if it doesn't this seems to be a bug in the MACX code,
- // I guess (rms)
- licensePage->productsString->setCurrentItem( -1 );
-# endif
- emit editionString( "" );
- setNextEnabled( licensePage, false );
- return;
-#endif
-}
-
-void SetupWizardImpl::logFiles( const QString& entry, bool close )
-{
- if( !fileLog.isOpen() ) {
- fileLog.setName( optionsPage->installPath->text() + QDir::separator() + "install.log" );
- if( !fileLog.open( IO_WriteOnly | IO_Translate ) )
- return;
- }
-
-#if 1
- progressPage->filesDisplay->append(entry);
-#else
- progressPage->filesDisplay->setText( "Installing files...\n" + entry + "\n" );
-#endif
-
- static QTextStream outstream;
- outstream.setDevice( &fileLog );
- outstream << ( entry + "\n" );
-
- if( close )
- fileLog.close();
-}
-
-void SetupWizardImpl::logOutput( const QString& entry, bool close )
-{
- if( !outputLog.isOpen() ) {
- QDir installDir;
- if ( optionsPage )
- installDir.setPath( optionsPage->installPath->text() );
- else
- installDir.setPath( QEnvironment::getEnv( "QTDIR" ) );
- outputLog.setName( installDir.filePath("build.log") );
- if( !outputLog.open( IO_WriteOnly | IO_Translate ) )
- return;
- }
-
- buildPage->outputDisplay->append(entry);
-
- static QTextStream outstream;
- outstream.setDevice( &outputLog );
- outstream << ( entry + "\n" );
-
- if( close )
- outputLog.close();
-}
-
-void SetupWizardImpl::archiveMsg( const QString& msg )
-{
- if( msg.right( 7 ) == ".cpp..." || msg.right( 5 ) == ".c..." || msg.right( 7 ) == ".pro..." || msg.right( 6 ) == ".ui..." )
- filesToCompile++;
- qApp->processEvents();
- if ( msg.startsWith("Expanding") )
- // only show the "Expanding" entries to avoid flickering
- logFiles( msg );
-}
-
-#ifdef Q_WS_WIN
-static HANDLE createFile( const QString &entryName, DWORD attr1, DWORD attr2 )
-{
- QT_WA({
- return ::CreateFileW( entryName.ucs2(), attr1, attr2, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL );
- }, {
- return ::CreateFileA( entryName.local8Bit(), attr1, attr2, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL );
- })
-}
-#endif
-
-bool SetupWizardImpl::copyFiles( const QString& sourcePath, const QString& destPath, bool topLevel )
-{
- QDir dir( sourcePath );
- const QFileInfoList* list = dir.entryInfoList();
- QFileInfoListIterator it( *list );
- QFileInfo* fi;
- bool doCopy;
-
- while( ( fi = it.current() ) ) {
- if( fi->fileName()[ 0 ] != '.' ) {
- QString entryName = sourcePath + QDir::separator() + fi->fileName();
- QString targetName = destPath + QDir::separator() + fi->fileName();
- doCopy = true;
- if( fi->isDir() ) {
- if( !dir.exists( targetName ) )
- createDir( targetName );
- if( topLevel ) {
- if ( fi->fileName() == "doc" )
- doCopy = optionsPage->installDocs->isChecked();
- else if ( fi->fileName() == "tools" )
- doCopy = optionsPage->installTools->isChecked();
- else if ( fi->fileName() == "tutorial" )
- doCopy = optionsPage->installTutorials->isChecked();
- else if ( fi->fileName() == "examples" )
- doCopy = optionsPage->installExamples->isChecked();
- }
- if( doCopy )
- if( !copyFiles( entryName, targetName, false ) )
- return false;
- } else {
- if( qApp && isShown() ) {
- qApp->processEvents();
- progressPage->operationProgress->setProgress( totalFiles );
- logFiles( targetName );
- } else {
- return false;
- }
- if( entryName.right( 4 ) == ".cpp" ||
- entryName.right( 2 ) == ".c" ||
- entryName.right( 4 ) == ".pro" ||
- entryName.right( 3 ) == ".ui" )
- filesToCompile++;
- bool res = true;
- if ( !QFile::exists( targetName ) )
- res = copyFile( entryName, targetName );
-#if defined(Q_OS_WIN32)
- if ( res ) {
- totalFiles++;
- HANDLE inFile, outFile;
- if( inFile = createFile( entryName, GENERIC_READ, FILE_SHARE_READ ) ){
- if( outFile = createFile( targetName, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_WRITE ) ){
- FILETIME createTime, accessTime, writeTime;
- ::GetFileTime( inFile, &createTime, &accessTime, &writeTime );
- ::SetFileTime( outFile, &createTime, &accessTime, &writeTime );
- ::CloseHandle( outFile );
- }
- ::CloseHandle( inFile );
- }
- } else {
- QString error = QEnvironment::getLastError();
- logFiles( QString( " ERROR: " ) + error + "\n" );
- if( QMessageBox::warning( this, "File copy error", entryName + ": " + error, "Continue", "Cancel", QString(), 0 ) )
- return false;
- }
-#elif defined( Q_OS_UNIX )
- // ### TODO: keep file date the same, handle errors
-#endif
- }
- }
- ++it;
- }
- return true;
-}
-
-void SetupWizardImpl::setInstallStep( int step )
-{
- QString captionTxt;
-#if defined(QSA)
- captionTxt = tr("QSA Evaluation Version Installation Wizard");
-#elif defined(EVAL)
- captionTxt = tr("Qt Evaluation Version Installation Wizard");
-#elif defined(EDU)
- captionTxt = tr("Qt Educational Edition Installation Wizard");
-#elif defined(NON_COMMERCIAL)
- captionTxt = tr("Qt Non-Commercial Edition Installation Wizard");
-#else
- if( globalInformation.reconfig() )
- captionTxt = tr("Qt Configuration Wizard");
- else
- captionTxt = tr("Qt Installation Wizard");
-#endif
- setCaption( tr("%1 - Step %2 of %3").arg( captionTxt ).arg( step ).arg( pageCount() ) );
- emit wizardPageShowed( step-1 );
-}
-
-void SetupWizardImpl::timerFired()
-{
- QString tmp( "Next %1 >" );
-
- timeCounter--;
-
- if( timeCounter )
- nextButton()->setText( tmp.arg( timeCounter ) );
- else {
- next();
- autoContTimer.stop();
- }
-}
-
-void SetupWizardImpl::readLicense( QString filePath)
-{
-#if !defined(EVAL) && !defined(EDU) && !defined(NON_COMMERCIAL)
- QFile licenseFile( filePath );
-
- if( licenseFile.open( IO_ReadOnly ) ) {
- QString buffer;
-
- while( licenseFile.readLine( buffer, 1024 ) != -1 ) {
- if( buffer[ 0 ] != '#' ) {
- QStringList components = QStringList::split( '=', buffer );
- QStringList::Iterator it = components.begin();
- QString keyString = (*it++).stripWhiteSpace().replace( QRegExp( QString( "\"" ) ), QString() ).upper();
- QString value = (*it++).stripWhiteSpace().replace( QRegExp( QString( "\"" ) ), QString() );
-
- licenseInfo[ keyString ] = value;
- }
- }
- licenseFile.close();
-
- if ( licensePage ) {
- licensePage->customerID->setText( licenseInfo[ "CUSTOMERID" ] );
- licensePage->licenseID->setText( licenseInfo[ "LICENSEID" ] );
- licensePage->licenseeName->setText( licenseInfo[ "LICENSEE" ] );
- if( licenseInfo[ "PRODUCTS" ] == "qt-enterprise" ) {
- licensePage->productsString->setCurrentItem( 1 );
- emit editionString( "Enterprise Edition" );
- } else {
- licensePage->productsString->setCurrentItem( 0 );
- emit editionString( "Professional Edition" );
- }
- licensePage->expiryDate->setText( licenseInfo[ "EXPIRYDATE" ] );
- licensePage->key->setText( licenseInfo[ "LICENSEKEY" ] );
- }
- }
-#endif
-}
-
-void SetupWizardImpl::writeLicense( QString filePath )
-{
-#if !defined(EVAL) && !defined(EDU) && !defined(NON_COMMERCIAL)
- QFile licenseFile( filePath );
-
- if( licenseFile.open( IO_WriteOnly | IO_Translate ) ) {
- QTextStream licStream( &licenseFile );
-
- licenseInfo[ "CUSTOMERID" ] = licensePage->customerID->text();
- licenseInfo[ "LICENSEID" ] = licensePage->licenseID->text();
- licenseInfo[ "LICENSEE" ] = licensePage->licenseeName->text();
- if( licensePage->productsString->currentItem() == 0 ) {
- licenseInfo[ "PRODUCTS" ] = "qt-professional";
- emit editionString( "Professional Edition" );
- } else {
- licenseInfo[ "PRODUCTS" ] = "qt-enterprise";
- emit editionString( "Enterprise Edition" );
- }
-
- licenseInfo[ "EXPIRYDATE" ] = licensePage->expiryDate->text();
- licenseInfo[ "LICENSEKEY" ] = licensePage->key->text();
-
- licStream << "# Toolkit license file" << endl;
- licStream << "CustomerID=\"" << licenseInfo[ "CUSTOMERID" ].latin1() << "\"" << endl;
- licStream << "LicenseID=\"" << licenseInfo[ "LICENSEID" ].latin1() << "\"" << endl;
- licStream << "Licensee=\"" << licenseInfo[ "LICENSEE" ].latin1() << "\"" << endl;
- licStream << "Products=\"" << licenseInfo[ "PRODUCTS" ].latin1() << "\"" << endl;
- licStream << "ExpiryDate=" << licenseInfo[ "EXPIRYDATE" ].latin1() << endl;
- licStream << "LicenseKey=" << licenseInfo[ "LICENSEKEY" ].latin1() << endl;
-
- licenseFile.close();
- }
-#endif
-}
-
-void SetupWizardImpl::clickedLicenseFile()
-{
- QString licensePath = QFileDialog::getOpenFileName( optionsPage->installPath->text(), QString(), this, NULL, "Browse for license file" );
-
- if( !licensePath.isEmpty() )
- readLicense( licensePath );
-
-}
-
-void SetupWizardImpl::readLicenseAgreement()
-{
- // Intropage
- ResourceLoader *rcLoader;
-#if defined(QSA)
- LicenseAgreementPageImpl *lap;
- if ( currentPage() == licenseAgreementPageQsa ) {
- lap = licenseAgreementPageQsa;
- rcLoader = new ResourceLoader( "LICENSE_QSA" );
- } else {
- lap = licenseAgreementPage;
- rcLoader = new ResourceLoader( "LICENSE" );
- }
-#elif defined(EVAL) || defined(EDU)
- LicenseAgreementPageImpl *lap = licenseAgreementPage;
- rcLoader = new ResourceLoader( "LICENSE" );
-#elif defined(NON_COMMERCIAL)
- LicenseAgreementPageImpl *lap = licenseAgreementPage;
- if ( lap->countryCombo->currentItem() == 0 )
- rcLoader = new ResourceLoader( "LICENSE-US" );
- else
- rcLoader = new ResourceLoader( "LICENSE" );
-#else
- LicenseAgreementPageImpl *lap = licenseAgreementPage;
- if ( usLicense ) {
- rcLoader = new ResourceLoader( "LICENSE-US" );
- } else {
- rcLoader = new ResourceLoader( "LICENSE" );
- }
-#endif
- if ( rcLoader->isValid() ) {
- lap->introText->setText( rcLoader->data() );
- lap->acceptLicense->setEnabled( true );
- } else {
- emit wizardPageFailed( indexOf(currentPage()) );
- QMessageBox::critical( this, tr("Package corrupted"),
- tr("Could not find the LICENSE file in the package.\nThe package might be corrupted.") );
- lap->acceptLicense->setEnabled( false );
- }
- delete rcLoader;
-}
-
-void SetupWizardImpl::accept()
-{
-#if defined(Q_OS_WIN32)
- if ( finishPage->showReadmeCheck->isChecked() ) {
- QProcess proc( QString("notepad.exe") );
-#if defined(QSA)
- QString qsaDir = optionsPageQsa->installPath->text();
- proc.addArgument( qsaDir + "\\README" );
-#else
- QString qtDir = QEnvironment::getEnv( "QTDIR" );
- proc.addArgument( qtDir + "\\README" );
-#endif
- proc.start();
- }
-#endif
- QDialog::accept();
-}
diff --git a/util/install/win/setupwizardimpl.h b/util/install/win/setupwizardimpl.h
deleted file mode 100644
index 1c86f74..0000000
--- a/util/install/win/setupwizardimpl.h
+++ /dev/null
@@ -1,276 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Qt Software Information (qt-info@nokia.com)
-**
-** This file is part of the utils 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** 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.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at qt-sales@nokia.com.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-#ifndef SETUPWIZARDIMPL_H
-#define SETUPWIZARDIMPL_H
-
-#include "pages/pages.h"
-#include "shell.h"
-
-#include <qprocess.h>
-#include <qtimer.h>
-#include <qmap.h>
-#include <qptrdict.h>
-#include <qwizard.h>
-#include <qlistview.h>
-
-class QCheckListItem;
-class QListView;
-
-class CheckListItem : public QCheckListItem
-{
-public:
- CheckListItem(QListView *listview, const QString &text, Type = RadioButtonController);
- CheckListItem(QCheckListItem *parent, const QString &text, Type = RadioButtonController);
-
- void setHelpText(const QString &help, QTextView *display);
- void setWarningText(const QString &warning, CheckListItem *conflict = 0);
- void addRequiredFiles(const QString &file);
- void setRequiredFileLocation(const QString &location);
-
- void setOpen(bool on);
- void setOn(bool on);
- void setCritical(bool on);
-
- int rtti() const;
- static int RTTI;
-
- void displayHelp();
- bool verify() const;
-
- void paintCell( QPainter *, const QColorGroup & cg, int column, int width, int alignment );
-
-protected:
- bool testAndWarn();
- void activate();
-
-private:
- QString help_text;
- QString warning_text;
- QTextView *help_display;
- QStringList required_files;
- QString file_location;
- CheckListItem *conflict_with;
- bool critical;
-};
-
-class SetupWizardImpl : public QWizard
-{
- Q_OBJECT
-public:
- SetupWizardImpl( QWidget* parent = 0, const char* name = NULL, bool modal = false, WindowFlags f = 0 );
-
- void showPage( QWidget* );
- void stopProcesses();
-
- void optionClicked( CheckListItem * );
-
-signals:
- void wizardPages( const QPtrList<Page>& );
- void wizardPageShowed( int );
- void wizardPageFailed( int );
- void editionString( const QString& );
-
-private:
- int totalFiles;
- QProcess configure;
- QProcess make;
- QProcess cleaner;
-#if defined(QSA)
- QProcess assistant;
-#endif
-
- QString programsFolder;
- QString devSysFolder;
- QString tmpPath;
-
- WinShell shell;
-
- void saveSettings();
- void saveSet( QListView* list );
-
-protected slots:
- void accept(); // reimplemented from QDialog
-
-private slots:
- void clickedSystem( int );
- void sysOtherComboChanged( int );
- void clickedFolderPath();
- void clickedDevSysPath();
- void clickedLicenseFile();
- void cleanDone();
- void configDone();
- void makeDone();
- void assistantDone();
- void restartBuild();
- void readConfigureOutput();
- void readConfigureError();
- void readCleanerOutput();
- void readCleanerError();
- void readMakeOutput();
- void readMakeError();
- void readAssistantOutput();
- void readAssistantError();
- void timerFired();
- void configPageChanged();
- void archiveMsg(const QString &);
- void licenseChanged();
- bool verifyConfig();
-
-private:
- void showPageLicense();
- void showPageOptions();
- void showPageFolders();
- void showPageConfig();
- void showPageProgress();
- void showPageBuild();
- void showPageFinish();
-
- void initPages();
- void initConnections();
-
- void fixEnvironment(const QString &var, const QString &file = QString());
- void prepareEnvironment();
-
- void makeDone( bool error );
-
- void setStaticEnabled( bool se );
- void setJpegDirect( bool jd );
- void readLicenseAgreement();
-
- bool copyFiles( const QString& sourcePath, const QString& destPath, bool topLevel );
- int totalRead;
-
- QString buildQtShortcutText;
- bool fixedPath;
- bool filesCopied;
- bool persistentEnv;
- int filesToCompile;
- int filesCompiled;
-#if !defined(EVAL) && !defined(EDU) && !defined(NON_COMMERCIAL)
- bool usLicense;
-#endif
-
- QString currentOLine;
- QString currentELine;
-
- void updateDisplay(const QString &input, QString &output);
-#if defined(Q_OS_WIN32)
- void installIcons( const QString& iconFolder, const QString& dirName, bool common );
-#endif
- void doIDEIntegration();
- void doStartMenuIntegration();
- void logFiles( const QString& entry, bool close = false );
- void logOutput( const QString& entry, bool close = false );
-
- void setInstallStep( int step );
- void readLicense( QString filePath );
- void writeLicense( QString filePath );
-
- QFile fileLog;
- QFile outputLog;
- QMap<QString,QString> licenseInfo;
- QTimer autoContTimer;
- int timeCounter;
- QStringList allModules;
-
- CheckListItem *accOn, *accOff;
- CheckListItem *bigCodecsOn, *bigCodecsOff;
- CheckListItem *tabletOn, *tabletOff;
- CheckListItem *advancedSTL, *advancedExceptions, *advancedRTTI;
-
- CheckListItem /* *mngPresent, */ *mngDirect, *mngPlugin, *mngOff;
- CheckListItem /* *jpegPresent, */ *jpegDirect, *jpegPlugin, *jpegOff;
- CheckListItem /* *pngPresent, */ *pngDirect, *pngPlugin, *pngOff;
- CheckListItem *gifDirect, *gifOff;
-
- CheckListItem *sgiDirect, *sgiPlugin, *sgiOff;
- CheckListItem *cdeDirect, *cdePlugin, *cdeOff;
- CheckListItem *motifplusDirect, *motifplusPlugin, *motifplusOff;
- CheckListItem *platinumDirect, *platinumPlugin, *platinumOff;
- CheckListItem *motifDirect, *motifPlugin, *motifOff;
- CheckListItem *xpDirect, *xpPlugin, *xpOff;
-
- CheckListItem *mysqlDirect, *mysqlPlugin, *mysqlOff;
- CheckListItem *ociDirect, *ociPlugin, *ociOff;
- CheckListItem *odbcDirect, *odbcPlugin, *odbcOff;
- CheckListItem *psqlDirect, *psqlPlugin, *psqlOff;
- CheckListItem *tdsDirect, *tdsPlugin, *tdsOff;
- CheckListItem *db2Direct, *db2Plugin, *db2Off;
- CheckListItem *sqliteDirect, *sqlitePlugin, *sqliteOff;
- CheckListItem *ibaseDirect, *ibasePlugin, *ibaseOff;
-
- CheckListItem *zlibDirect, *zlibSystem, *zlibOff;
-
- CheckListItem *dspOff, *dspOn;
- CheckListItem *vcprojOff, *vcprojOn;
-
- CheckListItem *staticItem;
-
-#if defined(EVAL) || defined(EDU)
- CheckListItem *mysqlPluginInstall;
- CheckListItem *ociPluginInstall;
- CheckListItem *odbcPluginInstall;
- CheckListItem *psqlPluginInstall;
- CheckListItem *tdsPluginInstall;
- CheckListItem *db2PluginInstall;
- CheckListItem *sqlitePluginInstall;
- CheckListItem *ibasePluginInstall;
-#elif defined(NON_COMMERCIAL)
- CheckListItem *sqlitePluginInstall;
-#endif
-
- // wizard pages
- LicenseAgreementPageImpl *licenseAgreementPage;
- LicenseAgreementPageImpl *licenseAgreementPageQsa;
- LicensePageImpl *licensePage;
- OptionsPageImpl *optionsPage;
- OptionsPageImpl *optionsPageQsa;
- FoldersPageImpl *foldersPage;
- ConfigPageImpl *configPage;
- ProgressPageImpl *progressPage;
- BuildPageImpl *buildPage;
- FinishPageImpl *finishPage;
-#if defined(Q_OS_WIN32)
- WinIntroPageImpl *winIntroPage;
-#endif
-};
-
-#endif
diff --git a/util/install/win/setupwizardimpl_config.cpp b/util/install/win/setupwizardimpl_config.cpp
deleted file mode 100644
index a5959fb..0000000
--- a/util/install/win/setupwizardimpl_config.cpp
+++ /dev/null
@@ -1,1564 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Qt Software Information (qt-info@nokia.com)
-**
-** This file is part of the utils 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** 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.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at qt-sales@nokia.com.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-#include "setupwizardimpl.h"
-#include "environment.h"
-#include <qfiledialog.h>
-#include <qlineedit.h>
-#include <qlabel.h>
-#include <qprogressbar.h>
-#include <qtextview.h>
-#include <qmultilineedit.h>
-#include <qbuttongroup.h>
-#include <qsettings.h>
-#include <qlistview.h>
-#include <qlistbox.h>
-#include <qapplication.h>
-#include <qcheckbox.h>
-#include <qtextstream.h>
-#include <qpushbutton.h>
-#include <qcombobox.h>
-#include <qmessagebox.h>
-#include <qregexp.h>
-#include <qtabwidget.h>
-#include <qarchive.h>
-#include <qvalidator.h>
-#include <qdatetime.h>
-#include <qpainter.h>
-
-bool findFile(const QString &);
-
-CheckListItem::CheckListItem(QListView *listview, const QString &text, Type type)
-: QCheckListItem(listview, text, type), help_display(0), conflict_with(0), critical(false)
-{
- if (type == RadioButtonController || type == CheckBoxController)
- setOpen(true);
-}
-
-CheckListItem::CheckListItem(QCheckListItem *parent, const QString &text, Type type)
-: QCheckListItem(parent, text, type), help_display(0), conflict_with(0), critical(false)
-{
- if (type == RadioButtonController || type == CheckBoxController)
- setOpen(true);
-}
-
-int CheckListItem::RTTI = 666;
-
-int CheckListItem::rtti() const
-{
- return RTTI;
-}
-
-void CheckListItem::setHelpText(const QString &help, QTextView *display)
-{
- help_text = help;
- help_display = display;
-}
-
-void CheckListItem::setWarningText(const QString &warning, CheckListItem *conflict)
-{
- conflict_with = conflict;
- warning_text = warning;
-}
-
-void CheckListItem::addRequiredFiles(const QString &file)
-{
- QStringList files = QStringList::split(",", file);
- for (QStringList::ConstIterator it = files.begin(); it != files.end(); ++it) {
- QString f(*it);
- required_files << f;
- if (!findFile(f)) {
- if (type() == QCheckListItem::RadioButtonController
- || type() == QCheckListItem::CheckBoxController) {
- setOpen(false);
- } else {
- setOn(false);
- setEnabled(false);
- }
- }
- }
-}
-
-void CheckListItem::setRequiredFileLocation(const QString &location)
-{
- file_location = location;
-}
-
-bool CheckListItem::verify() const
-{
- if (text(0) == "Off")
- return true;
-
- if (!required_files.count()) {
- if (parent() && parent()->rtti() == RTTI)
- return ((CheckListItem*)parent())->verify();
- return true;
- }
-
- QStringList::ConstIterator it;
- for (it = required_files.begin(); it != required_files.end(); ++it) {
- QString file(*it);
- if (!findFile(file))
- return false;
- }
- return true;
-}
-
-bool CheckListItem::testAndWarn()
-{
- if (!warning_text.isEmpty()) {
- if (!conflict_with || conflict_with->isOn()) {
- int r = QMessageBox::warning(listView()->window(), "Warning",
- warning_text + "<br>Select anyway?", "Yes", "No" );
- return r == 0;
- } else {
- return true;
- }
- }
-
- QStringList files(required_files);
- if (!required_files.count() && text(0) != "Off") {
- if (parent() && parent()->rtti() == RTTI)
- return ((CheckListItem*)parent())->testAndWarn();
- return true;
- }
-
- if (!verify()) {
- QString message = QString("<p>The option '%1' is <b>not verified</b> by the installer. One or more of the following "
- "files could not be located on the system:"
- "<p>%2"
- "<p>Continuing with this option selected might <b>break the installation</b> process.")
- .arg(text(0)).arg(required_files.join(", "));
- if (!file_location.isEmpty()) {
- message += QString("<p>The requested files are %1 and need to be installed "
- "in the INCLUDE, PATH and LIBS environment as appropriate.").arg(file_location);
- }
-
- int r = QMessageBox::warning(listView()->window(), "Option not Verified",
- message + "<p>Select anyway?", "Yes", "No" );
- return r == 0;
- }
- return true;
-}
-
-void CheckListItem::displayHelp()
-{
- if (help_display) {
- help_display->setText(help_text);
- return;
- }
- QListViewItem *p = parent();
- if (p && p->rtti() == RTTI)
- ((CheckListItem*)p)->displayHelp();
-}
-
-void CheckListItem::setOn(bool on)
-{
- if (on && (type() == RadioButton || type() == CheckBox) && !testAndWarn())
- return;
- QCheckListItem::setOn(on);
-
- SetupWizardImpl* wizard = qobject_cast<SetupWizardImpl*>(listView()->window());
- if (wizard && listView()->isVisible() && listView()->updatesEnabled())
- wizard->optionClicked(this);
-}
-
-void CheckListItem::activate()
-{
- displayHelp();
- QCheckListItem::activate();
-}
-
-void CheckListItem::setOpen(bool on)
-{
- if (on && listView()->isVisible()) {
- if (!testAndWarn())
- return;
- displayHelp();
- }
- QCheckListItem::setOpen(on);
-}
-
-void CheckListItem::setCritical(bool on)
-{
- if (critical == on)
- return;
-
- critical = on;
- repaint();
-}
-
-void CheckListItem::paintCell( QPainter *p, const QColorGroup & cg, int column, int width, int alignment )
-{
- QColorGroup group(cg);
- if (critical)
- group.setColor(QColorGroup::Text, red);
- QCheckListItem::paintCell(p, group, column, width, alignment);
-}
-
-
-
-void SetupWizardImpl::setStaticEnabled( bool se )
-{
- bool enterprise = licenseInfo[ "PRODUCTS" ] == "qt-enterprise";
- if ( se ) {
- if ( accOn->isOn() ) {
- accOn->setOn( false );
- accOff->setOn( true );
- }
- if ( bigCodecsOff->isOn() ) {
- bigCodecsOn->setOn( true );
- bigCodecsOff->setOn( false );
- }
- if ( mngPlugin->isOn() ) {
- mngDirect->setOn( true );
- mngPlugin->setOn( false );
- mngOff->setOn( false );
- }
- if ( pngPlugin->isOn() ) {
- pngDirect->setOn( true );
- pngPlugin->setOn( false );
- pngOff->setOn( false );
- }
- if ( jpegPlugin->isOn() ) {
- jpegDirect->setOn( true );
- jpegPlugin->setOn( false );
- jpegOff->setOn( false );
- }
- if ( sgiPlugin->isOn() ) {
- sgiPlugin->setOn( false );
- sgiDirect->setOn( true );
- }
- if ( cdePlugin->isOn() ) {
- cdePlugin->setOn( false );
- cdeDirect->setOn( true );
- }
- if ( motifplusPlugin->isOn() ) {
- motifplusPlugin->setOn( false );
- motifplusDirect->setOn( true );
- }
- if ( motifPlugin->isOn() ) {
- motifPlugin->setOn( false );
- motifDirect->setOn( true );
- }
- if ( platinumPlugin->isOn() ) {
- platinumPlugin->setOn( false );
- platinumDirect->setOn( true );
- }
- if ( xpPlugin->isOn() ) {
- xpPlugin->setOn( false );
- xpOff->setOn( true );
- }
- if ( enterprise ) {
- if ( mysqlPlugin->isOn() ) {
- mysqlPlugin->setOn( false );
- mysqlDirect->setOn( true );
- }
- if ( ociPlugin->isOn() ) {
- ociPlugin->setOn( false );
- ociDirect->setOn( true );
- }
- if ( odbcPlugin->isOn() ) {
- odbcPlugin->setOn( false );
- odbcDirect->setOn( true );
- }
- if ( psqlPlugin->isOn() ) {
- psqlPlugin->setOn( false );
- psqlDirect->setOn( true );
- }
- if ( tdsPlugin->isOn() ) {
- tdsPlugin->setOn( false );
- tdsDirect->setOn( true );
- }
- if ( db2Plugin->isOn() ) {
- db2Plugin->setOn( false );
- db2Direct->setOn( true );
- }
- if ( sqlitePlugin->isOn() ) {
- sqlitePlugin->setOn( false );
- sqliteDirect->setOn( true );
- }
- if ( ibasePlugin->isOn() ) {
- ibasePlugin->setOn( false );
- ibaseDirect->setOn( true );
- }
- }
- accOn->setEnabled( false );
- bigCodecsOff->setEnabled( false );
- mngPlugin->setEnabled( false );
- pngPlugin->setEnabled( false );
- jpegPlugin->setEnabled( false );
- sgiPlugin->setEnabled( false );
- cdePlugin->setEnabled( false );
- motifPlugin->setEnabled( false );
- motifplusPlugin->setEnabled( false );
- motifPlugin->setEnabled( false );
- platinumPlugin->setEnabled( false );
- xpPlugin->setEnabled( false );
- if ( enterprise ) {
- mysqlPlugin->setEnabled( false );
- ociPlugin->setEnabled( false );
- odbcPlugin->setEnabled( false );
- psqlPlugin->setEnabled( false );
- tdsPlugin->setEnabled( false );
- db2Plugin->setEnabled( false );
- sqlitePlugin->setEnabled( false );
- ibasePlugin->setEnabled( false );
- }
- } else {
- accOn->setEnabled( true );
- bigCodecsOff->setEnabled( true );
- mngPlugin->setEnabled( true );
- pngPlugin->setEnabled( true );
- jpegPlugin->setEnabled( true );
- sgiPlugin->setEnabled( true );
- cdePlugin->setEnabled( true );
- motifplusPlugin->setEnabled( true );
- motifPlugin->setEnabled( true );
- platinumPlugin->setEnabled( true );
- xpPlugin->setEnabled( true );
- if ( enterprise ) {
- mysqlPlugin->setEnabled( true );
- ociPlugin->setEnabled( true );
- odbcPlugin->setEnabled( true );
- psqlPlugin->setEnabled( true );
- tdsPlugin->setEnabled( true );
- db2Plugin->setEnabled( true );
- sqlitePlugin->setEnabled( true );
- ibasePlugin->setEnabled( true );
- }
- }
- setJpegDirect( mngDirect->isOn() );
-}
-
-void SetupWizardImpl::setJpegDirect( bool jd )
-{
- // direct MNG support requires also direct JPEG support
- if ( jd ) {
- jpegOff->setOn( false );
- jpegPlugin->setOn( false );
- jpegDirect->setOn( true );
-
- jpegOff->setEnabled( false );
- jpegPlugin->setEnabled( false );
- jpegDirect->setEnabled( true );
- } else {
- jpegOff->setEnabled( true );
- if ( !staticItem->isOn() )
- jpegPlugin->setEnabled( true );
- jpegDirect->setEnabled( true );
- }
-}
-
-void SetupWizardImpl::optionClicked( CheckListItem *item )
-{
- if ( !item || item->type() != CheckListItem::RadioButton )
- return;
-
- if ( item->text(0) == "Static" && item->isOn() ) {
- setStaticEnabled( true );
- return;
- } else if ( item->text( 0 ) == "Shared" && item->isOn() ) {
- setStaticEnabled( false );
- return;
- } else if ( item==mngDirect || item==mngPlugin || item==mngOff ) {
- setJpegDirect( mngDirect->isOn() );
- } else if ( item==db2Direct && odbcDirect->isOn() ) {
- if ( odbcPlugin->isEnabled() )
- odbcPlugin->QCheckListItem::setOn(true);
- else
- odbcOff->QCheckListItem::setOn(true);
- } else if ( item==odbcDirect && db2Direct->isOn() ) {
- if ( db2Plugin->isEnabled() )
- db2Plugin->QCheckListItem::setOn(true);
- else
- db2Off->QCheckListItem::setOn(true);
- }
-}
-
-
-void SetupWizardImpl::configPageChanged()
-{
- if ( configPage->configList->isVisible() ) {
- configPage->configList->setSelected( configPage->configList->currentItem(), true );
- } else if ( configPage->advancedList->isVisible() ) {
- configPage->advancedList->setSelected( configPage->advancedList->currentItem(), true );
- }
-#if defined(EVAL) || defined(EDU) || defined(NON_COMMERCIAL)
- else if ( configPage->installList->isVisible() ) {
- configPage->installList->setSelected( configPage->installList->currentItem(), true );
- }
-#endif
-}
-
-void SetupWizardImpl::cleanDone()
-{
-#if defined(EVAL) || defined(EDU) || defined(NON_COMMERCIAL)
- prepareEnvironment();
-# if defined(Q_OS_WIN32)
- QString qtdir = QEnvironment::getEnv( "QTDIR" );
-
- // adjust the .qmake.cache
- QFile qmakeCache( qtdir + "/.qmake.cache" );
- if ( qmakeCache.open( IO_ReadOnly ) ) {
- QString content = qmakeCache.readAll();
- qmakeCache.close();
- if ( globalInformation.sysId() == GlobalInformation::Borland )
- content.replace( "C:\\QtEvaluation\\qtborland", qtdir );
- else
- content.replace( "C:\\QtEvaluation\\qtmsvc", qtdir );
-
- if ( qmakeCache.open( IO_WriteOnly ) ) {
- QTextStream ts( &qmakeCache );
- ts << content;
- qmakeCache.close();
- } else {
- logOutput( QString("Warning: can't open the .qmake.cache file for writing: %1\n").arg( qmakeCache.errorString() ) );
- }
- } else {
- logOutput( QString("Warning: can't open the .qmake.cache file for reading: %1\n").arg( qmakeCache.errorString() ) );
- }
-
- QStringList args;
- args << ( qtdir + "\\bin\\configure.exe" );
- args << "-spec";
- args << globalInformation.text(GlobalInformation::Mkspec);
- if ( globalInformation.sysId() == GlobalInformation::MSVC )
- args << "-dsp";
- else if ( globalInformation.sysId() == GlobalInformation::MSVCNET )
- args << "-vcproj";
-
- if( qWinVersion() & WV_NT_based ) {
- logOutput( "Execute configure...\n" );
- logOutput( args.join( " " ) + "\n" );
-
- configure.setWorkingDirectory( qtdir );
- configure.setArguments( args );
- // Start the configure process
- buildPage->compileProgress->setTotalSteps( int(double(filesToCompile) * 2.6) );
- buildPage->restartBuild->setText( "Stop configure" );
- buildPage->restartBuild->setEnabled( true );
- buildPage->restartBuild->show();
- buildPage->compileProgress->show();
- if( !configure.start() ) {
- logOutput( "Could not start configure process" );
- emit wizardPageFailed( indexOf(currentPage()) );
- }
- } else { // no proper process handling on DOS based systems - create a batch file instead
- logOutput( "Generating batch file...\n" );
- QDir installDir;
- if ( optionsPage )
- installDir.setPath( optionsPage->installPath->text() );
- else
- installDir.setPath( qtdir );
- QFile outFile( installDir.filePath("build.bat") );
- QTextStream outStream( &outFile );
-
- if( outFile.open( IO_WriteOnly | IO_Translate ) ) {
- if ( installDir.absPath()[1] == ':' )
- outStream << installDir.absPath().left(2) << endl;
- outStream << "cd %QTDIR%" << endl;
- outStream << args.join( " " ) << endl;
- if( !globalInformation.reconfig() ) {
- outStream << globalInformation.text(GlobalInformation::MakeTool) << endl;
- }
- outFile.close();
- }
- logOutput( "Doing the final integration steps..." );
- doIDEIntegration();
- buildPage->compileProgress->setTotalSteps( buildPage->compileProgress->totalSteps() );
- showPage( finishPage );
- }
-# elif defined(Q_OS_UNIX)
- buildPage->compileProgress->show();
- buildPage->restartBuild->show();
-
- buildPage->compileProgress->setProgress( 0 );
- buildPage->compileProgress->setTotalSteps( int(double(filesToCompile) * 1.8) );
- configDone();
-# endif
-#else
- QStringList args;
- QStringList entries;
- QSettings settings;
- QString entry;
- QStringList::Iterator it;
- QFile tmpFile;
- QTextStream tmpStream;
- bool settingsOK;
-
-# if defined(Q_OS_WIN32)
- args << ( QEnvironment::getEnv( "QTDIR" ) + "\\bin\\configure.exe" );
-# elif defined(Q_OS_UNIX)
- args << ( QEnvironment::getEnv( "QTDIR" ) + QDir::separator() + "configure" );
-# endif
-
- entry = settings.readEntry( "/Trolltech/Qt/Build", "Debug", &settingsOK );
- if ( entry == "Debug" )
- args += "-debug";
- else
- args += "-release";
-
- entry = settings.readEntry( "/Trolltech/Qt/Library", "Shared", &settingsOK );
- if ( entry == "Static" )
- args += "-static";
- else
- args += "-shared";
-
- entry = settings.readEntry( "/Trolltech/Qt/Threading", QString(), &settingsOK );
- if ( entry == "Threaded" )
- args += "-thread";
- else
- args += "-no-thread";
-
- entries = settings.readListEntry( "/Trolltech/Qt/Modules", ',', &settingsOK );
- for( it = allModules.begin(); it != allModules.end(); ++it ) {
- entry = *it;
- if ( entries.find( entry ) != entries.end() )
- args += QString( "-enable-" ) + entry;
- else
- args += QString( "-disable-") + entry;
- }
-
- entry = settings.readEntry( "/Trolltech/Qt/SQL Drivers/MySQL", "Off", &settingsOK );
- if ( entry == "Direct" )
- args += "-qt-sql-mysql";
- else if ( entry == "Plugin" )
- args += "-plugin-sql-mysql";
- else if ( entry == "Off" )
- args += "-no-sql-mysql";
-
- entry = settings.readEntry( "/Trolltech/Qt/SQL Drivers/OCI", "Off", &settingsOK );
- if ( entry == "Direct" )
- args += "-qt-sql-oci";
- else if ( entry == "Plugin" )
- args += "-plugin-sql-oci";
- else if ( entry == "Off" )
- args += "-no-sql-oci";
-
- entry = settings.readEntry( "/Trolltech/Qt/SQL Drivers/ODBC", "Off", &settingsOK );
- if ( entry == "Direct" )
- args += "-qt-sql-odbc";
- else if ( entry == "Plugin" )
- args += "-plugin-sql-odbc";
- else if ( entry == "Off" )
- args += "-no-sql-odbc";
-
- entry = settings.readEntry( "/Trolltech/Qt/SQL Drivers/PostgreSQL", "Off", &settingsOK );
- if ( entry == "Direct" )
- args += "-qt-sql-psql";
- else if ( entry == "Plugin" )
- args += "-plugin-sql-psql";
- else if ( entry == "Off" )
- args += "-no-sql-psql";
-
- entry = settings.readEntry( "/Trolltech/Qt/SQL Drivers/TDS", "Off", &settingsOK );
- if ( entry == "Direct" )
- args += "-qt-sql-tds";
- else if ( entry == "Plugin" )
- args += "-plugin-sql-tds";
- else if ( entry == "Off" )
- args += "-no-sql-tds";
-
- entry = settings.readEntry( "/Trolltech/Qt/SQL Drivers/DB2", "Off", &settingsOK );
- if ( entry == "Direct" )
- args += "-qt-sql-db2";
- else if ( entry == "Plugin" )
- args += "-plugin-sql-db2";
- else if ( entry == "Off" )
- args += "-no-sql-db2";
-
- entry = settings.readEntry( "/Trolltech/Qt/SQL Drivers/SQLite", "Off", &settingsOK );
- if ( entry == "Direct" )
- args += "-qt-sql-sqlite";
- else if ( entry == "Plugin" )
- args += "-plugin-sql-sqlite";
- else if ( entry == "Off" )
- args += "-no-sql-sqlite";
-
- entry = settings.readEntry( "/Trolltech/Qt/SQL Drivers/iBase", "Off", &settingsOK );
- if ( entry == "Direct" )
- args += "-qt-sql-ibase";
- else if ( entry == "Plugin" )
- args += "-plugin-sql-ibase";
- else if ( entry == "Off" )
- args += "-no-sql-ibase";
-
-# if defined(Q_OS_WIN32)
-//TODO: Win only, remove these options from wizard on mac?
- entry = settings.readEntry( "/Trolltech/Qt/Accessibility", "On", &settingsOK );
- if ( entry == "On" )
- args += "-accessibility";
- else
- args += "-no-accessibility";
-# endif
-
- entry = settings.readEntry( "/Trolltech/Qt/Big Textcodecs", "On", &settingsOK );
- if ( entry == "On" )
- args += "-big-codecs";
- else
- args += "-no-big-codecs";
-
- entry = settings.readEntry( "/Trolltech/Qt/Tablet Support", "Off", &settingsOK );
- if ( entry == "On" )
- args += "-tablet";
- else
- args += "-no-tablet";
-
- entries = settings.readListEntry( "/Trolltech/Qt/Advanced C++", ',', &settingsOK );
- if ( entries.contains( "STL" ) )
- args += "-stl";
- else
- args += "-no-stl";
- if ( entries.contains( "Exceptions" ) )
- args += "-exceptions";
- else
- args += "-no-exceptions";
- if ( entries.contains( "RTTI" ) )
- args += "-rtti";
- else
- args += "-no-rtti";
-
-# if defined(Q_OS_WIN32)
-//TODO: Win only, remove these options from wizard on mac?
- entry = settings.readEntry( "/Trolltech/Qt/Image Formats/PNG", "Direct", &settingsOK );
- if ( entry == "Plugin" )
- args += "-plugin-imgfmt-png";
- else if ( entry == "Direct" )
- args += "-qt-imgfmt-png";
- else if ( entry == "Off" )
- args += "-no-imgfmt-png";
- args += "-qt-png";
-
- entry = settings.readEntry( "/Trolltech/Qt/Image Formats/JPEG", "Direct", &settingsOK );
- if ( entry == "Plugin" )
- args += "-plugin-imgfmt-jpeg";
- else if ( entry == "Direct" )
- args += "-qt-imgfmt-jpeg";
- else if ( entry == "Off" )
- args += "-no-imgfmt-jpeg";
- args += "-qt-jpeg";
-
- entry = settings.readEntry( "/Trolltech/Qt/Image Formats/MNG", "Direct", &settingsOK );
- if ( entry == "Plugin" )
- args += "-plugin-imgfmt-mng";
- else if ( entry == "Direct" )
- args += "-qt-imgfmt-mng";
- else if ( entry == "Off" )
- args += "-no-imgfmt-mng";
- args += "-qt-mng";
-# endif
-
- entry = settings.readEntry( "/Trolltech/Qt/Image Formats/GIF", "Direct", &settingsOK );
- if ( entry == "Direct" )
- args += "-qt-gif";
- else if ( entry == "Off" )
- args += "-no-gif";
-
-# if defined(Q_OS_WIN32)
-//TODO: Win only, remove these options from wizard on mac?
- entry = settings.readEntry( "/Trolltech/Qt/Styles/Windows", "Direct", &settingsOK );
- if ( entry == "Direct" )
- args += "-qt-style-windows";
- else if ( entry == "Plugin" )
- args += "-plugin-style-windows";
- else if ( entry == "Off" )
- args += "-no-style-windows";
-
- entry = settings.readEntry( "/Trolltech/Qt/Styles/Windows XP", "Off", &settingsOK );
- if ( entry == "Direct" )
- args += "-qt-style-windowsxp";
- else if ( entry == "Plugin" )
- args += "-plugin-style-windowsxp";
- else if ( entry == "Off" )
- args += "-no-style-windowsxp";
-
- entry = settings.readEntry( "/Trolltech/Qt/Styles/Motif", "Plugin", &settingsOK );
- if ( entry == "Direct" )
- args += "-qt-style-motif";
- else if ( entry == "Plugin" )
- args += "-plugin-style-motif";
- else if ( entry == "Off" )
- args += "-no-style-motif";
-
- entry = settings.readEntry( "/Trolltech/Qt/Styles/Platinum", "Plugin", &settingsOK );
- if ( entry == "Direct" )
- args += "-qt-style-platinum";
- else if ( entry == "Plugin" )
- args += "-plugin-style-platinum";
- else if ( entry == "Off" )
- args += "-no-style-platinum";
-
- entry = settings.readEntry( "/Trolltech/Qt/Styles/MotifPlus", "Plugin", &settingsOK );
- if ( entry == "Direct" )
- args += "-qt-style-motifplus";
- else if ( entry == "Plugin" )
- args += "-plugin-style-motifplus";
- else if ( entry == "Off" )
- args += "-no-style-motifplus";
-
- entry = settings.readEntry( "/Trolltech/Qt/Styles/CDE", "Plugin", &settingsOK );
- if ( entry == "Direct" )
- args += "-qt-style-cde";
- else if ( entry == "Plugin" )
- args += "-plugin-style-cde";
- else if ( entry == "Off" )
- args += "-no-style-cde";
-
- entry = settings.readEntry( "/Trolltech/Qt/Styles/SGI", "Plugin", &settingsOK );
- if ( entry == "Direct" )
- args += "-qt-style-sgi";
- else if ( entry == "Plugin" )
- args += "-plugin-style-sgi";
- else if ( entry == "Off" )
- args += "-no-style-sgi";
-# endif
-
- if ( globalInformation.sysId() == GlobalInformation::MSVC ) {
- entry = settings.readEntry( "/Trolltech/Qt/DSP Generation", "On", &settingsOK );
- if ( entry == "On" )
- args += "-dsp";
- else if ( entry == "Off" )
- args += "-no-dsp";
- } else if ( globalInformation.sysId() == GlobalInformation::MSVCNET ) {
- entry = settings.readEntry( "/Trolltech/Qt/VCPROJ Generation", "On", &settingsOK );
- if ( entry == "On" )
- args += "-vcproj";
- else if ( entry == "Off" )
- args += "-no-vcproj";
- } else if ( globalInformation.sysId() != GlobalInformation::MSVC && globalInformation.sysId() == GlobalInformation::MSVCNET ) {
- args += "-no-dsp";
- args += "-no-vcproj";
- }
-
- if ( ( ( !globalInformation.reconfig() && !optionsPage->skipBuild->isChecked() )
- || ( globalInformation.reconfig() && configPage->rebuildInstallation->isChecked() ) )
-# if defined(Q_OS_WIN32)
- && qWinVersion() & WV_NT_based ) {
-# else
- ) {
-# endif
- logOutput( "Execute configure...\n" );
- logOutput( args.join( " " ) + "\n" );
-
- configure.setWorkingDirectory( QEnvironment::getEnv( "QTDIR" ) );
- configure.setArguments( args );
- // Start the configure process
- buildPage->compileProgress->setTotalSteps( int(double(filesToCompile) * 2.6) );
- buildPage->restartBuild->setText( "Stop configure" );
- buildPage->restartBuild->setEnabled( true );
- buildPage->restartBuild->show();
- buildPage->compileProgress->show();
- if( !configure.start() ) {
- logOutput( "Could not start configure process" );
- emit wizardPageFailed( indexOf(currentPage()) );
- }
- } else { // no proper process handling on DOS based systems - create a batch file instead
- logOutput( "Generating batch file...\n" );
- QDir installDir;
- if ( optionsPage )
- installDir.setPath( optionsPage->installPath->text() );
- else
- installDir.setPath( QEnvironment::getEnv( "QTDIR" ) );
- QFile outFile( installDir.filePath("build.bat") );
- QTextStream outStream( &outFile );
-
- if( outFile.open( IO_WriteOnly | IO_Translate ) ) {
- if ( installDir.absPath()[1] == ':' )
- outStream << installDir.absPath().left(2) << endl;
- outStream << "cd %QTDIR%" << endl;
-
- if ( globalInformation.reconfig() )
- outStream << globalInformation.text(GlobalInformation::MakeTool) << " clean" << endl;
-
- // There is a limitation on Windows 9x regarding the length of the
- // command line. So rather use the configure.cache than specifying
- // all configure options on the command line.
- QFile configureCache( installDir.filePath("configure.cache") );
- if( configureCache.open( IO_WriteOnly | IO_Translate ) ) {
- QTextStream confCacheStream( &configureCache );
- QStringList::Iterator it = args.begin();
- ++it; // skip args[0] (configure)
- while ( it != args.end() ) {
- confCacheStream << *it << endl;
- ++it;
- }
- configureCache.close();
- outStream << args[0] << " -redo" << endl;
- } else {
- outStream << args.join( " " ) << endl;
- }
-
- outStream << globalInformation.text(GlobalInformation::MakeTool) << endl;
- outFile.close();
- }
- logOutput( "Doing the final integration steps..." );
- // No need to redo the integration step
- if ( !globalInformation.reconfig() )
- doIDEIntegration();
- buildPage->compileProgress->setTotalSteps( buildPage->compileProgress->totalSteps() );
- showPage( finishPage );
- }
-#endif
-}
-
-void SetupWizardImpl::prepareEnvironment()
-{
- QByteArray pathBuffer;
- QStringList path;
- QString qtDir;
- int envSpec = QEnvironment::LocalEnv;
-
- if( globalInformation.reconfig() ) {
- qtDir = QEnvironment::getEnv( "QTDIR" );
- if ( configPage ) {
- configPage->currentInstallation->setText( qtDir );
- }
- }
- else {
- qtDir = QDir::toNativeSeparators( QEnvironment::getFSFileName( optionsPage->installPath->text() ) );
- }
-
-#if defined(Q_OS_WIN32)
- if( qWinVersion() & Qt::WV_NT_based ) {
- // under Windows 9x, we don't compile from the installer -- so there is
- // no need to set the local environment; and doing so, results in not
- // setting the persistent since qtDir\bin is already in the PATH
- path = QStringList::split( QRegExp("[;,]"), QEnvironment::getEnv( "PATH" ) );
- if( path.findIndex( qtDir + "\\bin" ) == -1 ) {
- path.prepend( qtDir + "\\bin" );
- QEnvironment::putEnv( "PATH", path.join( ";" ) );
- }
- }
-#elif defined(Q_OS_UNIX)
- path = QStringList::split( QRegExp("[:]"), QEnvironment::getEnv( "PATH" ) );
- if( path.findIndex( qtDir + "/bin" ) == -1 ) {
- path.prepend( qtDir + "/bin" );
- QEnvironment::putEnv( "PATH", path.join( ":" ) );
- }
- QStringList dyld = QStringList::split( QRegExp("[:]"), QEnvironment::getEnv( "DYLD_LIBRARY_PATH" ) );
- if( dyld.findIndex( qtDir + "/lib" ) == -1 ) {
- dyld.prepend( qtDir + "/lib" );
- QEnvironment::putEnv( "DYLD_LIBRARY_PATH", dyld.join( ":" ) );
- }
-#endif
-
-#if defined(Q_OS_WIN32)
- if( foldersPage && foldersPage->qtDirCheck->isChecked() ) {
- envSpec |= QEnvironment::PersistentEnv;
-/*
- if( folderGroups->currentItem() == 0 )
- envSpec |= QEnvironment::GlobalEnv;
-*/
- path.clear();
-
- if( int( qWinVersion() ) & int( Qt::WV_NT_based ) ) {
- path = QStringList::split( ';', QEnvironment::getEnv( "PATH", QEnvironment::PersistentEnv ) );
- if( path.findIndex( qtDir + "\\bin" ) == -1 ) {
- path.prepend( qtDir + "\\bin" );
- QEnvironment::putEnv( "PATH", path.join( ";" ), QEnvironment::PersistentEnv );
- }
- } else {
- if( path.findIndex( qtDir + "\\bin" ) == -1 ) {
- QEnvironment::putEnv( "PATH", qtDir + "\\bin;%PATH%", QEnvironment::PersistentEnv );
- }
- }
- }
-#elif defined(Q_OS_UNIX)
-//Persistent environment not supported
-#endif
-
- QEnvironment::putEnv( "QTDIR", qtDir, envSpec );
- if ( globalInformation.sysId() != GlobalInformation::Other )
- QEnvironment::putEnv( "QMAKESPEC", globalInformation.text(GlobalInformation::Mkspec), envSpec );
- else
- QEnvironment::putEnv( "QMAKESPEC", optionsPage->sysOtherCombo->currentText(), envSpec );
-#if defined(Q_OS_WIN32)
- if( qWinVersion() & WV_NT_based ) {
- SendNotifyMessageA( HWND_BROADCAST, WM_WININICHANGE, 0, (LPARAM)"Environment" );
- SendNotifyMessageA( HWND_BROADCAST, WM_SETTINGCHANGE, 0, 0 );
- }
-#endif
-}
-
-void SetupWizardImpl::showPageConfig()
-{
- if (autoContTimer.isActive()) {
- autoContTimer.stop();
- timeCounter = 30;
- nextButton()->setText("Next >");
- }
-#if defined(EVAL) || defined(EDU) || defined(NON_COMMERCIAL)
- setBackEnabled( buildPage, false );
-
- static bool alreadyInitialized = false;
- if ( !alreadyInitialized ) {
- configPage->installList->setSorting( -1 );
- configPage->installList->setUpdatesEnabled(false);
-
- CheckListItem *item;
- CheckListItem *folder;
-
- folder = new CheckListItem( configPage->installList, "Database drivers" );
-
-#if !defined(NON_COMMERCIAL)
-#if !defined(Q_OS_MACX)
- item = new CheckListItem( folder, "DB2", QCheckListItem::CheckBox );
- item->addRequiredFiles("db2cli.dll");
- db2PluginInstall = item;
- db2PluginInstall->setHelpText( tr(
- "Installs the DB2 driver. This driver can "
- "be used to access DB2 databases."
- "<p><font color=\"red\">Choosing this option requires "
- "that the DB2 Client is installed and set up. "
- "The driver depends on the db2cli.dll.</font></p>"
- ), configPage->explainOption );
-
- item = new CheckListItem( folder, "TDS", QCheckListItem::CheckBox );
- item->addRequiredFiles("ntwdblib.dll");
- tdsPluginInstall = item;
- tdsPluginInstall->setHelpText( tr(
- "Installs the TDS driver to access Sybase Adaptive "
- "Server and Microsoft SQL Server (it is recommended "
- "to rather use ODBC instead of TDS where applicable). "
- "<p><font color=\"red\">Choosing this option requires "
- "that the ntwdblib.dll is available.</font></p>"
- ), configPage->explainOption );
-
- item = new CheckListItem( folder, "Oracle (OCI)", QCheckListItem::CheckBox );
- item->addRequiredFiles( "oci.dll" );
- ociPluginInstall = item;
- ociPluginInstall->setHelpText( tr(
- "<p>Installs the Oracale Call Interface (OCI) driver.</p> "
- "<p><font color=\"red\">Choosing this option requires "
- "that the Oracle Client is installed and set up. "
- "The driver depends on the oci.dll.</font></p>"
- ), configPage->explainOption );
-#endif
-
- if ( globalInformation.sysId() != GlobalInformation::Borland ) {
- // I was not able to make Postgres work with Borland
- item = new CheckListItem( folder, "PostgreSQL", QCheckListItem::CheckBox );
-#ifndef Q_OS_MACX
- item->addRequiredFiles( "libpq.dll" );
-#endif
- item->setOn( item->verify() );
- psqlPluginInstall = item;
- psqlPluginInstall->setHelpText( tr(
- "Installs the PostgreSQL 7.x driver. This driver can "
- "be used to access PostgreSQL 6 databases as well "
- "as PostgreSQL 7 databases."
-#ifdef Q_OS_MACX
- "\n\nRequires a proper PostgreSQL installation."
-#endif
- ), configPage->explainOption );
- } else {
- psqlPluginInstall = 0;
- }
-
- item = new CheckListItem( folder, "MySQL", QCheckListItem::CheckBox );
-#ifndef Q_OS_MACX
- item->addRequiredFiles( "libmySQL.dll" );
-#endif
- item->setOn( item->verify() );
- mysqlPluginInstall = item;
- mysqlPluginInstall->setHelpText( tr(
- "Installs the MySQL 3.x database driver."
-#ifdef Q_OS_MACX
- "\n\nRequires a proper MySQL installation."
-#endif
- ), configPage->explainOption );
-
-#if !defined(Q_OS_MAC)
- item = new CheckListItem( folder, "ODBC", QCheckListItem::CheckBox );
- item->setOn( findFile( "odbc32.dll" ) );
- odbcPluginInstall = item;
- odbcPluginInstall->setHelpText( tr(
- "Installs the Open Database Connectivity (ODBC) driver. "
- "This driver depends on the odbc32.dll which should be "
- "available on all modern Windows installations."
- ), configPage->explainOption );
-#endif
-#else
- item = new CheckListItem( folder, "SQLite", QCheckListItem::CheckBox );
- item->setOn( true );
- sqlitePluginInstall = item;
- sqlitePluginInstall->setHelpText( tr(
- "Installs the SQLite driver.\n"
- "This driver is an in-process SQL database "
- "driver. It is needed for some of the "
- "examples used in the book."
- ), configPage->explainOption );
-#endif
-
- configPage->installList->setUpdatesEnabled(true);
- alreadyInitialized = true;
- }
-#else
-
- prepareEnvironment();
-
- bool enterprise = licenseInfo[ "PRODUCTS" ] == "qt-enterprise";
- configPage->configList->setUpdatesEnabled(false);
- configPage->advancedList->setUpdatesEnabled(false);
-
- if( configPage->configList->childCount() ) {
- QListViewItem* current = configPage->configList->firstChild();
-
- while( current ) {
- QListViewItem* next = current->nextSibling();
- delete current;
- current = next;
- }
-
- current = configPage->advancedList->firstChild();
- while( current ) {
- QListViewItem* next = current->nextSibling();
- delete current;
- current = next;
- }
- }
- QSettings settings;
- configPage->configList->setSorting( -1 );
- configPage->advancedList->setSorting( -1 );
- CheckListItem *item;
- CheckListItem *folder;
- QStringList::Iterator it;
-
- // general
- folder = new CheckListItem ( configPage->configList, "Modules" );
- folder->setHelpText(tr("<p>Some of these modules are optional."
- "<p>You can deselect the modules that you "
- "don't require for your development."
- "<p>By default, all modules are selected."), configPage->explainOption);
- bool settingsOK;
- QStringList entries = settings.readListEntry( "/Trolltech/Qt/Modules", ',', &settingsOK );
- QStringList licensedModules = QStringList::split( " ", "network canvas table xml opengl sql" );
- for( it = licensedModules.begin(); it != licensedModules.end(); ++it ) {
- item = new CheckListItem( folder, (*it), QCheckListItem::CheckBox );
- bool on = entries.isEmpty() || entries.find( *it ) != entries.end();
- item->setOn( enterprise && on );
- item->setEnabled( enterprise );
- if ( enterprise )
- allModules << *it;
- }
-
- licensedModules = QStringList::split( " ", "iconview workspace" );
- for( it = licensedModules.begin(); it != licensedModules.end(); ++it ) {
- item = new CheckListItem( folder, (*it), QCheckListItem::CheckBox );
- bool on = entries.isEmpty() || entries.find( *it ) != entries.end();
- item->setOn( on );
- allModules << *it;
- }
-
- QStringList requiredModules = QStringList::split( " ", "styles dialogs widgets tools kernel" );
- for( it = requiredModules.begin(); it != requiredModules.end(); ++it ) {
- item = new CheckListItem( folder, (*it), QCheckListItem::CheckBox );
- bool on = entries.isEmpty() || entries.find( *it ) != entries.end();
- item->setOn( on );
- item->setEnabled( false );
- allModules << *it;
- }
-
- folder = new CheckListItem ( configPage->configList, "Threading" );
- folder->setHelpText(tr("<p>Build the Qt library with or without thread support."
- "<p>By default, threading is supported. Some classes will "
- "not be available without thread support."), configPage->explainOption);
- QString entry = settings.readEntry( "/Trolltech/Qt/Threading", "Threaded", &settingsOK );
- item = new CheckListItem( folder, "Threaded", QCheckListItem::RadioButton );
- item->setOn( entry == "Threaded" );
- item = new CheckListItem( folder, "Non-threaded", QCheckListItem::RadioButton );
- item->setOn( entry == "Non-threaded" );
- CheckListItem *singleThreaded = item;
-
- folder = new CheckListItem ( configPage->configList, "Library" );
- folder->setHelpText(tr("<p>Build a shared or a static Qt library."
- "<p>A shared Qt library makes it necessary to "
- "distribute the Qt DLL together with your software. "
- "Applications and libraries linked against a shared Qt library "
- "are small and can make use of components and plugins."
- "<p>All applications created with a static "
- "library will be at least 1.5MB big. "
- "<font color=\"red\">It is not possible to "
- "build or use any components or plugins with a "
- "static Qt library!</font>"), configPage->explainOption);
- entry = settings.readEntry( "/Trolltech/Qt/Library", "Shared", &settingsOK );
- staticItem = new CheckListItem( folder, "Static", QCheckListItem::RadioButton );
- staticItem->setOn( entry == "Static" );
- staticItem->setWarningText("<p>It will not be possible to build components "
- "or plugins if you select the static build of the Qt library."
- "<p>New features, e.g souce code editing in Qt Designer, will not "
- "be available, and you or users of your software might not be able "
- "to use all or new features, e.g. new styles.");
-
- item = new CheckListItem( folder, "Shared", QCheckListItem::RadioButton );
- item->setOn( entry == "Shared" );
- item->setWarningText("<p>Single-threaded, shared configurations "
- "may cause instabilities because of runtime "
- "library conflicts.", singleThreaded);
- singleThreaded->setWarningText("<p>Single-threaded, shared configurations "
- "may cause instabilities because of runtime "
- "library conflicts.", item);
-
- folder = new CheckListItem ( configPage->configList, "Build" );
- folder->setHelpText(tr("<p>Build a Qt library with or without debug symbols."
- "<p>Use the debug build of the Qt library to enhance "
- "debugging of your application. The release build "
- "is both smaller and faster."), configPage->explainOption);
- entry = settings.readEntry( "/Trolltech/Qt/Build", "Release", &settingsOK );
- item = new CheckListItem( folder, "Debug", QCheckListItem::RadioButton );
- item->setOn( entry == "Debug" );
- item = new CheckListItem( folder, "Release", QCheckListItem::RadioButton );
- item->setOn( entry == "Release" );
-
- // Advanced options
- if ( globalInformation.sysId() == GlobalInformation::MSVC ) {
- entry = settings.readEntry( "/Trolltech/Qt/DSP Generation", "On", &settingsOK );
- folder = new CheckListItem( configPage->advancedList, "DSP Generation" );
- folder->setHelpText(tr("qmake can generate the Visual Studio 6 project files (dsp) as well "
- "as makefiles when Qt is being configured."),
- configPage->explainOption);
- dspOff = new CheckListItem( folder, "Off", QCheckListItem::RadioButton );
- dspOff->setOn( entry == "Off" );
- dspOn = new CheckListItem( folder, "On", QCheckListItem::RadioButton );
- dspOn->setOn( entry == "On" );
- } else if ( globalInformation.sysId() == GlobalInformation::MSVCNET ) {
- entry = settings.readEntry( "/Trolltech/Qt/VCPROJ Generation", "On", &settingsOK );
- folder = new CheckListItem( configPage->advancedList, "VCPROJ Generation" );
- folder->setHelpText(tr("qmake can generate the Visual Studio.NET project files (vcproj) as well "
- "as makefiles when Qt is being configured."),
- configPage->explainOption);
- vcprojOff = new CheckListItem( folder, "Off", QCheckListItem::RadioButton );
- vcprojOff->setOn( entry == "Off" );
- vcprojOn = new CheckListItem( folder, "On", QCheckListItem::RadioButton );
- vcprojOn->setOn( entry == "On" );
- }
-
- CheckListItem *imfolder = new CheckListItem( configPage->advancedList, "Image Formats" );
- imfolder->setHelpText(tr("<p>Qt ships with support for a wide range of common image formats. "
- "<p>Standard formats are always included in Qt, and some more special formats "
- "can be left out from the Qt library itself and provided by a plugin instead."),
- configPage->explainOption);
-
- folder = new CheckListItem( imfolder, "GIF" );
- folder->setHelpText(tr("<p>Support for GIF images in Qt."
- "<p><font color=\"red\">If you are in a country "
- "which recognizes software patents and in which "
- "Unisys holds a patent on LZW compression and/or "
- "decompression and you want to use GIF, Unisys "
- "may require you to license the technology. Such "
- "countries include Canada, Japan, the USA, "
- "France, Germany, Italy and the UK.</font>"),
- configPage->explainOption);
- entry = settings.readEntry( "/Trolltech/Qt/Image Formats/GIF", "Off", &settingsOK );
- gifOff = new CheckListItem( folder, "Off", QCheckListItem::RadioButton );
- gifOff->setOn( entry == "Off" );
- gifDirect = new CheckListItem( folder, "Direct", QCheckListItem::RadioButton );
- gifDirect->setOn( entry == "Direct" );
-
- folder = new CheckListItem( imfolder, "MNG" );
- folder->setHelpText(tr("<p>Qt can support the \"Multiple-Image Network Graphics\" format."
- "<p>MNG support can be compiled into Qt, provided by a plugin ",
- "or turned off completely."),
- configPage->explainOption);
- entry = settings.readEntry( "/Trolltech/Qt/Image Formats/MNG", "Plugin", &settingsOK );
-#if 0
- // ### disable using system MNG for now -- please someone take a closer look
- entryPresent = settings.readEntry( "/Trolltech/Qt/Image Formats/MNG Present", "No", &settingsOK );
- mngPresent = new CheckListItem( folder, "Present", QCheckListItem::CheckBox );
- mngPresent->setOn( entry == "Yes" );
-#endif
- mngOff = new CheckListItem( folder, "Off", QCheckListItem::RadioButton );
- mngOff->setOn( entry == "Off" );
- mngPlugin = new CheckListItem( folder, "Plugin", QCheckListItem::RadioButton );
- mngPlugin->setOn( entry == "Plugin" );
- mngDirect = new CheckListItem( folder, "Direct", QCheckListItem::RadioButton );
- mngDirect->setOn( entry == "Direct" );
-
- folder = new CheckListItem( imfolder, "JPEG" );
- folder->setHelpText(tr("<p>Qt can support the \"Joint Photographic Experts Group\" format."
- "<p>JPEG support can be compiled into Qt, provided by a plugin ",
- "or turned off completely."),
- configPage->explainOption);
- entry = settings.readEntry( "/Trolltech/Qt/Image Formats/JPEG", "Direct", &settingsOK );
-#if 0
- // ### disable using system JPEG for now -- please someone take a closer look
- entryPresent = settings.readEntry( "/Trolltech/Qt/Image Formats/JPEG Present", "No", &settingsOK );
- jpegPresent = new CheckListItem( folder, "Present", QCheckListItem::CheckBox );
- jpegPresent->setOn( entry == "Yes" );
-#endif
- jpegOff = new CheckListItem( folder, "Off", QCheckListItem::RadioButton );
- jpegOff->setOn( entry == "Off" );
- jpegPlugin = new CheckListItem( folder, "Plugin", QCheckListItem::RadioButton );
- jpegPlugin->setOn( entry == "Plugin" );
- jpegDirect = new CheckListItem( folder, "Direct", QCheckListItem::RadioButton );
- jpegDirect->setOn( entry == "Direct" );
-
- folder = new CheckListItem( imfolder, "PNG" );
- folder->setHelpText(tr("<p>Qt can support the \"Portable Network Graphics\" format."
- "<p>PNG support can be compiled into Qt, provided by a plugin ",
- "or turned off completely."),
- configPage->explainOption);
- entry = settings.readEntry( "/Trolltech/Qt/Image Formats/PNG", "Direct", &settingsOK );
-#if 0
- // ### disable using system PNG for now -- please someone take a closer look
- entryPresent = settings.readEntry( "/Trolltech/Qt/Image Formats/PNG Present", "No", &settingsOK );
- pngPresent = new CheckListItem( folder, "Present", QCheckListItem::CheckBox );
- pngPresent->setOn( entry == "Yes" );
-#endif
- pngOff = new CheckListItem( folder, "Off", QCheckListItem::RadioButton );
- pngOff->setOn( entry == "Off" );
- // PNG is required by the build system (ie. we use PNG), so don't allow it to be turned off
- pngOff->setEnabled( false );
- pngPlugin = new CheckListItem( folder, "Plugin", QCheckListItem::RadioButton );
- pngPlugin->setOn( entry == "Plugin" );
- pngDirect = new CheckListItem( folder, "Direct", QCheckListItem::RadioButton );
- pngDirect->setOn( entry == "Direct" );
-
- CheckListItem *sqlfolder = new CheckListItem( configPage->advancedList, "Sql Drivers" );
- sqlfolder->setHelpText(tr("<p>Select the SQL Drivers you want to support."
- "<p>SQL Drivers can be built into Qt or built as plugins to be more flexible "
- "for later extensions."
- "<p><font color=#FF0000>You must have the appropriate client libraries "
- "and header files installed correctly before you can build the Qt SQL drivers.</font>"),
- configPage->explainOption);
-
- folder = new CheckListItem( sqlfolder, "iBase" );
- folder->addRequiredFiles("ibase.h");
- entry = settings.readEntry( "/Trolltech/Qt/Sql Drivers/iBase", "Off", &settingsOK );
- ibaseOff = new CheckListItem( folder, "Off", QCheckListItem::RadioButton );
- ibaseOff->setOn( true );
- ibaseOff->setEnabled( enterprise );
- ibasePlugin = new CheckListItem( folder, "Plugin", QCheckListItem::RadioButton );
- ibasePlugin->setOn( entry == "Plugin" && folder->verify() && enterprise );
- ibasePlugin->setEnabled( enterprise );
- ibaseDirect = new CheckListItem( folder, "Direct", QCheckListItem::RadioButton );
- ibaseDirect->setOn( entry == "Direct" && folder->verify() && enterprise );
- ibaseDirect->setEnabled( enterprise );
- if (globalInformation.sysId() == GlobalInformation::Borland)
- folder->addRequiredFiles("gds32.lib");
- else
- folder->addRequiredFiles("gds32_ms.lib");
-
- folder = new CheckListItem( sqlfolder, "DB2" );
- folder->addRequiredFiles("db2cli.lib,sqlcli1.h");
- entry = settings.readEntry( "/Trolltech/Qt/Sql Drivers/DB2", "Off", &settingsOK );
- db2Off = new CheckListItem( folder, "Off", QCheckListItem::RadioButton );
- db2Off->setOn( true );
- db2Off->setEnabled( enterprise );
- db2Plugin = new CheckListItem( folder, "Plugin", QCheckListItem::RadioButton );
- db2Plugin->setOn( entry == "Plugin" && folder->verify() && enterprise );
- db2Plugin->setEnabled( enterprise );
- db2Direct = new CheckListItem( folder, "Direct", QCheckListItem::RadioButton );
- db2Direct->setOn( entry == "Direct" && folder->verify() && enterprise );
- db2Direct->setEnabled( enterprise );
-
- folder = new CheckListItem( sqlfolder, "TDS" );
- folder->addRequiredFiles("ntwdblib.lib,sqldb.h");
- entry = settings.readEntry( "/Trolltech/Qt/Sql Drivers/TDS", "Off", &settingsOK );
- tdsOff = new CheckListItem( folder, "Off", QCheckListItem::RadioButton );
- tdsOff->setOn( true );
- tdsOff->setEnabled( enterprise );
- tdsPlugin = new CheckListItem( folder, "Plugin", QCheckListItem::RadioButton );
- tdsPlugin->setOn( entry == "Plugin" && folder->verify() && enterprise );
- tdsPlugin->setEnabled( enterprise );
- tdsDirect = new CheckListItem( folder, "Direct", QCheckListItem::RadioButton );
- tdsDirect->setOn( entry == "Direct" && folder->verify() && enterprise );
- tdsDirect->setEnabled( enterprise );
-
- folder = new CheckListItem( sqlfolder, "PostgreSQL" );
- folder->addRequiredFiles("libpqdll.lib,libpq-fe.h");
- entry = settings.readEntry( "/Trolltech/Qt/Sql Drivers/PostgreSQL", "Off", &settingsOK );
- psqlOff = new CheckListItem( folder, "Off", QCheckListItem::RadioButton );
- psqlOff->setOn( true );
- psqlOff->setEnabled( enterprise );
- psqlPlugin = new CheckListItem( folder, "Plugin", QCheckListItem::RadioButton );
- psqlPlugin->setOn( entry == "Plugin" && folder->verify() && enterprise );
- psqlPlugin->setEnabled( enterprise );
- psqlDirect = new CheckListItem( folder, "Direct", QCheckListItem::RadioButton );
- psqlDirect->setOn( entry == "Direct" && folder->verify() && enterprise );
- psqlDirect->setEnabled( enterprise );
-
- folder = new CheckListItem( sqlfolder, "OCI" );
- folder->addRequiredFiles("oci.lib,oci.h");
- entry = settings.readEntry( "/Trolltech/Qt/Sql Drivers/OCI", "Off", &settingsOK );
- ociOff = new CheckListItem( folder, "Off", QCheckListItem::RadioButton );
- ociOff->setOn( true );
- ociOff->setEnabled( enterprise );
- ociPlugin = new CheckListItem( folder, "Plugin", QCheckListItem::RadioButton );
- ociPlugin->setOn( entry == "Plugin" && folder->verify() && enterprise );
- ociPlugin->setEnabled( enterprise );
- ociDirect = new CheckListItem( folder, "Direct", QCheckListItem::RadioButton );
- ociDirect->setOn( entry == "Direct" && folder->verify() && enterprise );
- ociDirect->setEnabled( enterprise );
-
- folder = new CheckListItem( sqlfolder, "MySQL" );
- folder->addRequiredFiles("libmysql.lib,mysql.h");
- entry = settings.readEntry( "/Trolltech/Qt/Sql Drivers/MySQL", "Off", &settingsOK );
- mysqlOff = new CheckListItem( folder, "Off", QCheckListItem::RadioButton );
- mysqlOff->setOn( true );
- mysqlOff->setEnabled( enterprise );
- mysqlPlugin = new CheckListItem( folder, "Plugin", QCheckListItem::RadioButton );
- mysqlPlugin->setOn( entry == "Plugin" && folder->verify() && enterprise );
- mysqlPlugin->setEnabled( enterprise );
- mysqlDirect = new CheckListItem( folder, "Direct", QCheckListItem::RadioButton );
- mysqlDirect->setOn( entry == "Direct" && folder->verify() && enterprise );
- mysqlDirect->setEnabled( enterprise );
-
- folder = new CheckListItem( sqlfolder, "SQLite" );
- entry = settings.readEntry( "/Trolltech/Qt/Sql Drivers/SQLite", "Off", &settingsOK );
- sqliteOff = new CheckListItem( folder, "Off", QCheckListItem::RadioButton );
- sqliteOff->setOn( true );
- sqliteOff->setEnabled( enterprise );
- sqlitePlugin = new CheckListItem( folder, "Plugin", QCheckListItem::RadioButton );
- sqlitePlugin->setOn( entry == "Plugin" && folder->verify() && enterprise );
- sqlitePlugin->setEnabled( enterprise );
- sqliteDirect = new CheckListItem( folder, "Direct", QCheckListItem::RadioButton );
- sqliteDirect->setOn( entry == "Direct" && folder->verify() && enterprise );
- sqliteDirect->setEnabled( enterprise );
-
- folder = new CheckListItem( sqlfolder, "ODBC" );
- folder->addRequiredFiles("odbc32.lib,sql.h");
- entry = settings.readEntry( "/Trolltech/Qt/Sql Drivers/ODBC", "Off", &settingsOK );
- odbcOff = new CheckListItem( folder, "Off", QCheckListItem::RadioButton );
- odbcOff->setOn( true );
- odbcOff->setEnabled( enterprise );
- odbcPlugin = new CheckListItem( folder, "Plugin", QCheckListItem::RadioButton );
- odbcPlugin->setOn( entry == "Plugin" && folder->verify() && enterprise );
- odbcPlugin->setEnabled( enterprise );
- odbcDirect = new CheckListItem( folder, "Direct", QCheckListItem::RadioButton );
- odbcDirect->setOn( entry == "Direct" && folder->verify() && enterprise );
- odbcDirect->setEnabled( enterprise );
-
- CheckListItem *stfolder = new CheckListItem( configPage->advancedList, "Styles" );
- stfolder->setHelpText(tr("Select support for the various GUI styles that Qt supports." ),configPage->explainOption);
-
- folder = new CheckListItem( stfolder, "SGI" );
- entry = settings.readEntry( "/Trolltech/Qt/Styles/SGI", "Plugin", &settingsOK );
- sgiOff = new CheckListItem( folder, "Off", QCheckListItem::RadioButton );
- sgiOff->setOn( entry == "Off" );
- sgiPlugin = new CheckListItem( folder, "Plugin", QCheckListItem::RadioButton );
- sgiPlugin->setOn( entry == "Plugin" );
- sgiDirect = new CheckListItem( folder, "Direct", QCheckListItem::RadioButton );
- sgiDirect->setOn( entry == "Direct" );
-
- folder = new CheckListItem( stfolder, "CDE" );
- entry = settings.readEntry( "/Trolltech/Qt/Styles/CDE", "Plugin", &settingsOK );
- cdeOff = new CheckListItem( folder, "Off", QCheckListItem::RadioButton );
- cdeOff->setOn( entry == "Off" );
- cdePlugin = new CheckListItem( folder, "Plugin", QCheckListItem::RadioButton );
- cdePlugin->setOn( entry == "Plugin" );
- cdeDirect = new CheckListItem( folder, "Direct", QCheckListItem::RadioButton );
- cdeDirect->setOn( entry == "Direct" );
-
- folder = new CheckListItem( stfolder, "MotifPlus" );
- entry = settings.readEntry( "/Trolltech/Qt/Styles/MotifPlus", "Plugin", &settingsOK );
- motifplusOff = new CheckListItem( folder, "Off", QCheckListItem::RadioButton );
- motifplusOff->setOn( entry == "Off" );
- motifplusPlugin = new CheckListItem( folder, "Plugin", QCheckListItem::RadioButton );
- motifplusPlugin->setOn( entry == "Plugin" );
- motifplusDirect = new CheckListItem( folder, "Direct", QCheckListItem::RadioButton );
- motifplusDirect->setOn( entry == "Direct" );
-
- folder = new CheckListItem( stfolder, "Platinum" );
- entry = settings.readEntry( "/Trolltech/Qt/Styles/Platinum", "Plugin", &settingsOK );
- platinumOff = new CheckListItem( folder, "Off", QCheckListItem::RadioButton );
- platinumOff->setOn( entry == "Off" );
- platinumPlugin = new CheckListItem( folder, "Plugin", QCheckListItem::RadioButton );
- platinumPlugin->setOn( entry == "Plugin" );
- platinumDirect = new CheckListItem( folder, "Direct", QCheckListItem::RadioButton );
- platinumDirect->setOn( entry == "Direct" );
-
- folder = new CheckListItem( stfolder, "Motif" );
- entry = settings.readEntry( "/Trolltech/Qt/Styles/Motif", "Plugin", &settingsOK );
- motifOff = new CheckListItem( folder, "Off", QCheckListItem::RadioButton );
- motifOff->setOn( entry == "Off" );
- motifPlugin = new CheckListItem( folder, "Plugin", QCheckListItem::RadioButton );
- motifPlugin->setOn( entry == "Plugin" );
- motifDirect = new CheckListItem( folder, "Direct", QCheckListItem::RadioButton );
- motifDirect->setOn( entry == "Direct" );
-
- folder = new CheckListItem( stfolder, "Windows XP" );
- folder->addRequiredFiles("uxtheme.h");
- folder->setRequiredFileLocation("part of the Microsoft Platform SDK, which is usually available for "
- "download from the following location:"
- "<p>http://www.microsoft.com/msdownload/platformsdk/sdkupdate/<p>");
-
- entry = settings.readEntry( "/Trolltech/Qt/Styles/Windows XP", "Direct", &settingsOK );
- xpOff = new CheckListItem( folder, "Off", QCheckListItem::RadioButton );
- xpOff->setOn( true );
- xpPlugin = new CheckListItem( folder, "Plugin", QCheckListItem::RadioButton );
- xpPlugin->setOn( entry == "Plugin" && folder->verify() );
- xpPlugin->setEnabled( folder->verify() );
- xpDirect = new CheckListItem( folder, "Direct", QCheckListItem::RadioButton );
- xpDirect->setOn( entry == "Direct" && folder->verify() );
- xpDirect->setEnabled( folder->verify() );
-
- folder = new CheckListItem( stfolder, "Windows" );
- entry = settings.readEntry( "/Trolltech/Qt/Styles/Windows", "Direct", &settingsOK );
- item = new CheckListItem( folder, "Off", QCheckListItem::RadioButton );
- item->setEnabled( false );
- item->setOn( entry == "Off" );
- item = new CheckListItem( folder, "Plugin", QCheckListItem::RadioButton );
- item->setEnabled( false );
- item->setOn( entry == "Plugin" );
- item = new CheckListItem( folder, "Direct", QCheckListItem::RadioButton );
- item->setOn( entry == "Direct" );
-
- entries = settings.readListEntry( "/Trolltech/Qt/Advanced C++", ',', &settingsOK );
- folder = new CheckListItem( configPage->advancedList, "Advanced C++" );
- folder->setHelpText(tr("Qt can be built with exception handling, STL support and RTTI support "
- "enabled or disabled. Qt itself doesn't use any of those features."
- "The default is to disable all advanced C++ features."),
- configPage->explainOption);
- advancedRTTI = new CheckListItem( folder, "RTTI", QCheckListItem::CheckBox );
- advancedRTTI->setOn( entries.contains( "RTTI" ) );
- advancedExceptions = new CheckListItem( folder, "Exceptions", QCheckListItem::CheckBox );
- advancedExceptions->setOn( entries.contains( "Exceptions" ) );
- advancedSTL = new CheckListItem( folder, "STL", QCheckListItem::CheckBox );
- advancedSTL->setOn( entries.contains( "STL" ) );
-
- folder = new CheckListItem( configPage->advancedList, "Tablet Support" );
- folder->addRequiredFiles("wintab.h,wintab.lib");
- folder->setRequiredFileLocation("available at http://www.pointing.com/FTP.HTM");
- folder->setHelpText(tr("Qt can support the Wacom brand tablet device."), configPage->explainOption);
- entry = settings.readEntry( "/Trolltech/Qt/Tablet Support", "Off", &settingsOK );
- tabletOff = new CheckListItem( folder, "Off", QCheckListItem::RadioButton );
- tabletOff->setOn( true );
- tabletOn = new CheckListItem( folder, "On", QCheckListItem::RadioButton );
- tabletOn->setOn( entry == "On" && folder->verify() );
-
- folder = new CheckListItem( configPage->advancedList, "Accessibility" );
- folder->setHelpText(tr("<p>Accessibility means making software usable and accessible to a wide "
- "range of users, including those with disabilities."
- "This feature is only available with a shared Qt library."),
- configPage->explainOption);
- entry = settings.readEntry( "/Trolltech/Qt/Accessibility", "On", &settingsOK );
- accOff = new CheckListItem( folder, "Off", QCheckListItem::RadioButton );
- accOff->setOn( entry == "Off" );
- accOn = new CheckListItem( folder, "On", QCheckListItem::RadioButton );
- accOn->setOn( entry == "On" );
-
- entry = settings.readEntry( "/Trolltech/Qt/Big Textcodecs", "On", &settingsOK );
- folder = new CheckListItem( configPage->advancedList, "Big Textcodecs" );
- folder->setHelpText(tr("Textcodecs provide translations between text encodings. For "
- "languages and script systems with many characters it is necessary "
- "to have big data tables that provide the translation. Those codecs "
- "can be left out of the Qt library and will be loaded on demand.\n"
- "Having the codecs in a plugin is not available with a static Qt "
- "library."), configPage->explainOption);
- bigCodecsOff = new CheckListItem( folder, "Off", QCheckListItem::RadioButton );
- bigCodecsOff->setOn( entry == "Off" );
- bigCodecsOn = new CheckListItem( folder, "On", QCheckListItem::RadioButton );
- bigCodecsOn->setOn( entry == "On" );
-
- setStaticEnabled( staticItem->isOn() );
- setJpegDirect( mngDirect->isOn() );
-
- configPage->configList->setUpdatesEnabled(true);
- configPage->advancedList->setUpdatesEnabled(true);
-
- // Needed to force the scrollbars to appear on Windows 9x...
- QListViewItem *dummy = new QListViewItem(configPage->configList, "Dummy Item");
- delete dummy;
-
- setBackEnabled( buildPage, false );
-#endif
-}
-
-void SetupWizardImpl::showPageBuild()
-{
- autoContTimer.stop();
- nextButton()->setText( "Next >" );
- saveSettings();
-
-#if defined(Q_OS_WIN32)
- if( globalInformation.reconfig() && configPage->rebuildInstallation->isChecked() && qWinVersion() & WV_NT_based ) {
- QStringList args;
-
- buildPage->compileProgress->hide();
- buildPage->restartBuild->hide();
-
- args << globalInformation.text(GlobalInformation::MakeTool) << "clean";
- logOutput( "Starting cleaning process" );
- connect( &cleaner, SIGNAL( processExited() ), this, SLOT( cleanDone() ) );
- connect( &cleaner, SIGNAL( readyReadStdout() ), this, SLOT( readCleanerOutput() ) );
- connect( &cleaner, SIGNAL( readyReadStderr() ), this, SLOT( readCleanerError() ) );
- cleaner.setWorkingDirectory( QEnvironment::getEnv( "QTDIR" ) );
- cleaner.setArguments( args );
- if( !cleaner.start() ) {
- logOutput( "Could not start cleaning process" );
- emit wizardPageFailed( indexOf(currentPage()) );
- }
- } else
-#endif
- cleanDone(); // We're not doing a reconfig, so skip the clean step
-
-}
-
-static bool verifyHelper(QListView *listview, bool result)
-{
- QListViewItemIterator it(listview);
- while (it.current()) {
- QListViewItem *item = it.current();
- ++it;
- if (item->rtti() != CheckListItem::RTTI)
- continue;
-
- CheckListItem *checkItem = (CheckListItem*)item;
- if (!checkItem->isOn())
- continue;
-
- bool r = checkItem->verify();
- checkItem->setCritical(!r);
- if (result) result = r;
- }
- return result;
-}
-
-bool SetupWizardImpl::verifyConfig()
-{
- bool result = true;
-#if !defined(EVAL) && !defined(EDU) && !defined(NON_COMMERCIAL)
- result = verifyHelper(configPage->configList, result);
- result = verifyHelper(configPage->advancedList, result);
-#endif
- return result;
-}
diff --git a/util/install/win/shell.cpp b/util/install/win/shell.cpp
deleted file mode 100644
index b1303a7..0000000
--- a/util/install/win/shell.cpp
+++ /dev/null
@@ -1,472 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Qt Software Information (qt-info@nokia.com)
-**
-** This file is part of the utils 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** 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.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at qt-sales@nokia.com.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-#include "shell.h"
-#include "environment.h"
-#include "dialogs/folderdlgimpl.h"
-#include <qnamespace.h>
-#include <qdir.h>
-#include <qlibrary.h>
-#if defined(Q_OS_WIN32)
-#include <windows.h>
-#include <shlobj.h>
-#else
-#include <sys/param.h>
-#include <sys/mount.h>
-#endif
-
-static const char* folder_closed_xpm[]={
- "16 16 9 1",
- "g c #808080",
- "b c #c0c000",
- "e c #c0c0c0",
- "# c #000000",
- "c c #ffff00",
- ". c None",
- "a c #585858",
- "f c #a0a0a4",
- "d c #ffffff",
- "..###...........",
- ".#abc##.........",
- ".#daabc#####....",
- ".#ddeaabbccc#...",
- ".#dedeeabbbba...",
- ".#edeeeeaaaab#..",
- ".#deeeeeeefe#ba.",
- ".#eeeeeeefef#ba.",
- ".#eeeeeefeff#ba.",
- ".#eeeeefefff#ba.",
- ".##geefeffff#ba.",
- "...##gefffff#ba.",
- ".....##fffff#ba.",
- ".......##fff#b##",
- ".........##f#b##",
- "...........####."
-};
-
-static const char* folder_open_xpm[]={
- "16 16 11 1",
- "# c #000000",
- "g c #c0c0c0",
- "e c #303030",
- "a c #ffa858",
- "b c #808080",
- "d c #a0a0a4",
- "f c #585858",
- "c c #ffdca8",
- "h c #dcdcdc",
- "i c #ffffff",
- ". c None",
- "....#ab##.......",
- "....###.........",
- "....#acab####...",
- "###.#acccccca#..",
- "#ddefaaaccccca#.",
- "#bdddbaaaacccab#",
- ".eddddbbaaaacab#",
- ".#bddggdbbaaaab#",
- "..edgdggggbbaab#",
- "..#bgggghghdaab#",
- "...ebhggghicfab#",
- "....#edhhiiidab#",
- "......#egiiicfb#",
- "........#egiibb#",
- "..........#egib#",
- "............#ee#"
-};
-
-static const char* file_xpm []={
- "16 16 7 1",
- "# c #000000",
- "b c #ffffff",
- "e c #000000",
- "d c #404000",
- "c c #c0c000",
- "a c #ffffc0",
- ". c None",
- "................",
- ".........#......",
- "......#.#a##....",
- ".....#b#bbba##..",
- "....#b#bbbabbb#.",
- "...#b#bba##bb#..",
- "..#b#abb#bb##...",
- ".#a#aab#bbbab##.",
- "#a#aaa#bcbbbbbb#",
- "#ccdc#bcbbcbbb#.",
- ".##c#bcbbcabb#..",
- "...#acbacbbbe...",
- "..#aaaacaba#....",
- "...##aaaaa#.....",
- ".....##aa#......",
- ".......##......."
-};
-
-static const char* info_xpm[] = {
- "16 16 6 1",
- "# c #0000ff",
- "a c #6868ff",
- "b c #d0d0ff",
- "c c #ffffff",
- "- c #000000",
- ". c none",
- ".....------.....",
- "...--######--...",
- "..-###acca###-..",
- ".-####cccc####-.",
- ".-####acca####-.",
- "-##############-",
- "-######bcc#####-",
- "-####ccccc#####-",
- "-#####cccc#####-",
- "-#####cccc#####-",
- "-#####cccc#####-",
- ".-####cccc####-.",
- ".-###cccccc###-.",
- "..-##########-..",
- "...--#######-...",
- ".....------....."
-};
-
-static QPixmap* closedImage = NULL;
-static QPixmap* openImage = NULL;
-static QPixmap* fileImage = NULL;
-static QPixmap* infoImage = NULL;
-
-#if defined(Q_OS_WIN32)
-typedef BOOL (WINAPI *PtrSHGetPathFromIDListW)(LPITEMIDLIST,LPWSTR);
-static PtrSHGetPathFromIDListW ptrSHGetPathFromIDListW = 0;
-
-static void resolveLibs()
-{
- static bool triedResolve = false;
-
- if ( !triedResolve ) {
- triedResolve = true;
- if( int( qWinVersion() ) & int( Qt::WV_NT_based ) ) {
- QLibrary lib("shell32");
- lib.setAutoUnload( false );
- ptrSHGetPathFromIDListW = (PtrSHGetPathFromIDListW) lib.resolve( "SHGetPathFromIDListW" );
- }
- }
-}
-#endif
-
-WinShell::WinShell()
-{
-#if defined(Q_OS_WIN32)
- HRESULT hr;
- LPITEMIDLIST item;
-#endif
-
- localProgramsFolderName.clear();
- commonProgramsFolderName.clear();
- windowsFolderName.clear();
-
-#if defined(Q_OS_WIN32)
- resolveLibs();
- if( ptrSHGetPathFromIDListW && int( qWinVersion() ) & int( Qt::WV_NT_based ) ) {
- ushort buffer[MAX_PATH];
- if( SUCCEEDED( hr = SHGetSpecialFolderLocation( NULL, CSIDL_PROGRAMS, &item ) ) ) {
- if( ptrSHGetPathFromIDListW( item, (wchar_t*) buffer ) ) {
- localProgramsFolderName = QString::fromUcs2( buffer );
- if( SUCCEEDED( hr = SHGetSpecialFolderLocation( NULL, CSIDL_COMMON_PROGRAMS, &item ) ) ) {
- if( ptrSHGetPathFromIDListW( item, (wchar_t*) buffer ) )
- commonProgramsFolderName = QString::fromUcs2( buffer );
- else
- qDebug( "Could not get name of common programs folder" );
- }
- else
- qDebug( "Could not get common programs folder location" );
-
- if( GetWindowsDirectoryW( (wchar_t*) buffer, MAX_PATH ) )
- windowsFolderName = QString::fromUcs2( buffer );
- else
- qDebug( "Could not get Windows directory" );
- }
- else
- qDebug( "Could not get name of programs folder" );
- }
- else
- qDebug( "Could not get programs folder location" );
- }
- else {
- QByteArray buffer( MAX_PATH );
- if( SUCCEEDED( hr = SHGetSpecialFolderLocation( NULL, CSIDL_PROGRAMS, &item ) ) ) {
- if( SHGetPathFromIDListA( item, buffer.data() ) ) {
- localProgramsFolderName = buffer.data();
- commonProgramsFolderName = buffer.data();
- }
- else
- qDebug( "Could not get name of programs folder" );
- }
- else
- qDebug( "Could not get programs folder location" );
- }
-#endif
-
- closedImage = new QPixmap( folder_closed_xpm );
- openImage = new QPixmap( folder_open_xpm );
- fileImage = new QPixmap( file_xpm );
- infoImage = new QPixmap( info_xpm );
-}
-
-WinShell::~WinShell()
-{
-}
-
-QString WinShell::selectFolder( QString folderName, bool common )
-{
- QStringList folders;
- FolderDlgImpl dlg;
-
- if( common )
- dlg.setup( commonProgramsFolderName, folderName );
- else
- dlg.setup( localProgramsFolderName, folderName );
-
- if( dlg.exec() ) {
- return dlg.getFolderName();
- }
- else
- return folderName;
-}
-
-QString WinShell::createFolder( QString folderName, bool common )
-{
- QDir folderDir;
- QString folderPath;
-
- if( common )
- folderPath = commonProgramsFolderName + QString( "\\" ) + folderName;
- else
- folderPath = localProgramsFolderName + QString( "\\" ) + folderName;
-
- folderDir.setPath( folderPath );
-
- if( !folderDir.exists( folderPath ) )
- if( !createDir( folderPath ) )
- return QString();
-
- return folderPath;
-}
-
-
-#if defined(Q_OS_WIN32)
-HRESULT WinShell::createShortcut( QString folderName, bool, QString shortcutName, QString target, QString description, QString arguments, QString wrkDir )
-{
- IPersistFile* linkFile;
- HRESULT hr;
-
- // Add .lnk to shortcut name if needed
- if( shortcutName.right( 4 ) != ".lnk" )
- shortcutName += ".lnk";
-
- folderName = QEnvironment::getFSFileName( folderName );
- if( int( qWinVersion() ) & int( Qt::WV_NT_based ) ) {
- IShellLinkW* link;
- if( SUCCEEDED( hr = CoCreateInstance( CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLinkW, (void**)&link ) ) ) {
- if( SUCCEEDED( hr = link->QueryInterface( IID_IPersistFile, (void**)&linkFile ) ) ) {
- link->SetPath( (const wchar_t*) target.ucs2() );
- QString _wrkDir = wrkDir;
- if( !_wrkDir.length() ) {
- _wrkDir = QDir::toNativeSeparators( target );
- // remove the filename
- int pos = _wrkDir.findRev( '\\' );
- if ( pos > 0 )
- _wrkDir = _wrkDir.left( pos );
- else
- _wrkDir = "";
- }
-
- link->SetWorkingDirectory( (const wchar_t*) _wrkDir.ucs2() );
- if( description.length() )
- link->SetDescription( (const wchar_t*) description.ucs2() );
- if( arguments.length() )
- link->SetArguments( (const wchar_t*) arguments.ucs2() );
-
- hr = linkFile->Save( (const wchar_t*) QString( folderName + QString( "\\" ) + shortcutName ).ucs2(), false );
-
- linkFile->Release();
- }
- else
- qDebug( "Could not get link file interface" );
-
- link->Release();
- }
- else
- qDebug( "Could not instantiate link object" );
- }
- else {
- IShellLinkA* link;
- if( SUCCEEDED( hr = CoCreateInstance( CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLinkA, (void**)&link ) ) ) {
- if( SUCCEEDED( hr = link->QueryInterface( IID_IPersistFile, (void**)&linkFile ) ) ) {
- link->SetPath( target.local8Bit().data() );
- QString wrkDir = QDir::toNativeSeparators( target );
-
- // remove the filename
- int pos = wrkDir.findRev( '\\' );
- if ( pos > 0 )
- wrkDir = wrkDir.left( pos );
- else
- wrkDir = "";
-
- link->SetWorkingDirectory( wrkDir );
- if( description.length() )
- link->SetDescription( description.local8Bit() );
- if( arguments.length() )
- link->SetArguments( arguments.local8Bit() );
-
- hr = linkFile->Save( (const wchar_t*) QString( folderName + QString( "\\" ) + shortcutName ).ucs2(), false );
-
- linkFile->Release();
- }
- else
- qDebug( "Could not get link file interface" );
-
- link->Release();
- }
- else
- qDebug( "Could not instantiate link object" );
- }
-
- return hr;
-}
-#endif
-
-#if defined(Q_OS_WIN32)
-void WinShell::createInternetShortcut( QString folderName, bool, QString shortcutName, QString url )
-{
- // Add .url to shortcut name if needed
- if( shortcutName.right( 4 ) != ".url" )
- shortcutName += ".url";
-
- // ### maybe we should use some Microsoft API instead (IShellLink, e.g.)?
- QDir dir( folderName );
- QFile f( dir.filePath( shortcutName ) );
- if ( f.open( IO_WriteOnly | IO_Translate ) ) {
- QTextStream ts( &f );
- ts << "[InternetShortcut]" << endl
- << "URL=" << url;
- }
-}
-#endif
-
-bool WinShell::createDir( QString fullPath )
-{
- QStringList hierarchy = QStringList::split( QString( "\\" ), fullPath );
- QString pathComponent, tmpPath;
- QDir dirTmp;
- bool success;
-
- for( QStringList::Iterator it = hierarchy.begin(); it != hierarchy.end(); ++it ) {
- pathComponent = *it + "\\";
- tmpPath += pathComponent;
- success = dirTmp.mkdir( tmpPath );
- }
- return success;
-}
-
-QPixmap* WinShell::getClosedFolderImage()
-{
- return closedImage;
-}
-
-QPixmap* WinShell::getOpenFolderImage()
-{
- return openImage;
-}
-
-QPixmap* WinShell::getFileImage()
-{
- return fileImage;
-}
-
-QPixmap* WinShell::getInfoImage()
-{
- return infoImage;
-}
-
-#if defined(Q_OS_WIN32)
-QString WinShell::OLESTR2QString( LPOLESTR str )
-{
- QString tmp;
-
- for( int i = 0; str[ i ]; i++ )
- tmp += QChar( str[ i ] );
-
- return tmp;
-}
-#endif
-
-/*!
- Returns the free space for the directory. The space is returned in bytes,
- and should only be considered valid for this particular directory.
-*/
-#if defined(Q_OS_WIN32)
-ULARGE_INTEGER WinShell::dirFreeSpace( QString dirPath )
-{
- QString drive = dirPath.left( dirPath.find( '\\' ) );
- ULARGE_INTEGER freeSpace;
-
- freeSpace.QuadPart = 0;
-
- if( GetProcAddress( GetModuleHandleA( "kernel32.dll" ), "GetDiskFreeSpaceExA" ) ) {
- ULARGE_INTEGER ulBytesAvailable, ulBytesTotal;
- if( GetDiskFreeSpaceExA( drive.local8Bit(), &ulBytesAvailable, &ulBytesTotal, NULL ) )
- freeSpace = ulBytesAvailable;
- }
- else if( GetProcAddress( GetModuleHandleA( "kernel32.dll" ), "GetDiskFreeSpaceA" ) ) {
- DWORD dwSPC, dwBPS, dwClusters, dwTotalClusters;
- if( GetDiskFreeSpaceA( drive.local8Bit(), &dwSPC, &dwBPS, &dwClusters, &dwTotalClusters ) )
- freeSpace.QuadPart = dwSPC * dwBPS * dwClusters;
- }
- return freeSpace;
-}
-#elif defined(Q_OS_MAC)
-long WinShell::dirFreeSpace( QString dirPath )
-{
- struct statfs buf;
- if (statfs( dirPath.local8Bit(), &buf ) != -1)
- return buf.f_bavail * buf.f_bsize;
- return 0;
-}
-#endif
-
diff --git a/util/install/win/shell.h b/util/install/win/shell.h
deleted file mode 100644
index 4d5f9af..0000000
--- a/util/install/win/shell.h
+++ /dev/null
@@ -1,87 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Qt Software Information (qt-info@nokia.com)
-**
-** This file is part of the utils 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** 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.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at qt-sales@nokia.com.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-#ifndef SHELL_H
-#define SHELL_H
-
-#include <qstring.h>
-#include <qstringlist.h>
-#include <qpixmap.h>
-#if defined(Q_OS_WIN32)
-#include <windows.h>
-#include <shlobj.h>
-#endif
-
-class WinShell
-{
-public:
- WinShell();
- ~WinShell();
-
-private:
- bool createDir( QString fullPath );
-#if defined(Q_OS_WIN32)
- QString OLESTR2QString( LPOLESTR str );
-#endif
-public:
- QString localProgramsFolderName;
- QString commonProgramsFolderName;
- QString windowsFolderName;
- QString selectFolder( QString folderName, bool common );
-
- QString createFolder( QString folderName, bool common );
-
-#if defined(Q_OS_WIN32)
- HRESULT createShortcut( QString folderName, bool common, QString shortcutName, QString target, QString description = QString(), QString arguments = QString(), QString wrkDir = QString() );
- void createInternetShortcut( QString folderName, bool common, QString shortcutName, QString url );
-#endif
-
- static QPixmap* getOpenFolderImage();
- static QPixmap* getClosedFolderImage();
- static QPixmap* getFileImage();
- static QPixmap* getInfoImage();
-#if defined(Q_OS_WIN32)
- static ULARGE_INTEGER dirFreeSpace( QString dirPath );
-#elif defined(Q_OS_MAC)
- static long dirFreeSpace( QString dirPath );
-#endif
-};
-
-#endif
diff --git a/util/install/win/uninstaller/quninstall.pro b/util/install/win/uninstaller/quninstall.pro
deleted file mode 100644
index c64e8d2..0000000
--- a/util/install/win/uninstaller/quninstall.pro
+++ /dev/null
@@ -1,7 +0,0 @@
-TEMPLATE = app
-CONFIG += qt
-HEADERS = ../environment.h uninstallimpl.h
-SOURCES = uninstaller.cpp ../environment.cpp uninstallimpl.cpp
-INTERFACES = uninstall.ui
-TARGET = quninstall
-DESTDIR = ../../../../dist/win/bin
diff --git a/util/install/win/uninstaller/uninstall.ui b/util/install/win/uninstaller/uninstall.ui
deleted file mode 100644
index 88f27a7..0000000
--- a/util/install/win/uninstaller/uninstall.ui
+++ /dev/null
@@ -1,167 +0,0 @@
-<!DOCTYPE UI><UI version="3.3" stdsetdef="1">
-<class>UninstallDlg</class>
-<widget class="QDialog">
- <property name="name">
- <cstring>UninstallDlg</cstring>
- </property>
- <property name="geometry">
- <rect>
- <x>0</x>
- <y>0</y>
- <width>527</width>
- <height>365</height>
- </rect>
- </property>
- <property name="caption">
- <string>Uninstalling Qt</string>
- </property>
- <grid>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <property name="margin">
- <number>11</number>
- </property>
- <property name="spacing">
- <number>6</number>
- </property>
- <widget class="QLabel" row="0" column="0" rowspan="2" colspan="1">
- <property name="name">
- <cstring>sideBar</cstring>
- </property>
- <property name="pixmap">
- <pixmap>image0</pixmap>
- </property>
- <property name="scaledContents">
- <bool>false</bool>
- </property>
- <property name="alignment">
- <set>AlignTop</set>
- </property>
- </widget>
- <widget class="QGroupBox" row="0" column="1">
- <property name="name">
- <cstring>progressBox</cstring>
- </property>
- <property name="title">
- <string>Uninstallation progress</string>
- </property>
- <vbox>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <property name="margin">
- <number>11</number>
- </property>
- <property name="spacing">
- <number>6</number>
- </property>
- <widget class="QTextView">
- <property name="name">
- <cstring>filesDisplay</cstring>
- </property>
- <property name="font">
- <font>
- <family>Courier</family>
- </font>
- </property>
- <property name="wordWrap">
- <enum>NoWrap</enum>
- </property>
- </widget>
- </vbox>
- </widget>
- <widget class="QLayoutWidget" row="1" column="1">
- <property name="name">
- <cstring>layout2</cstring>
- </property>
- <hbox>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <spacer>
- <property name="name">
- <cstring>Spacer1</cstring>
- </property>
- <property name="orientation">
- <enum>Horizontal</enum>
- </property>
- <property name="sizeType">
- <enum>Expanding</enum>
- </property>
- <property name="sizeHint">
- <size>
- <width>90</width>
- <height>20</height>
- </size>
- </property>
- </spacer>
- <widget class="QPushButton">
- <property name="name">
- <cstring>cleanRegButton</cstring>
- </property>
- <property name="enabled">
- <bool>false</bool>
- </property>
- <property name="text">
- <string>Clean Registry</string>
- </property>
- </widget>
- <widget class="QPushButton">
- <property name="name">
- <cstring>okButton</cstring>
- </property>
- <property name="enabled">
- <bool>false</bool>
- </property>
- <property name="text">
- <string>OK</string>
- </property>
- </widget>
- <spacer>
- <property name="name">
- <cstring>Spacer2</cstring>
- </property>
- <property name="orientation">
- <enum>Horizontal</enum>
- </property>
- <property name="sizeType">
- <enum>Expanding</enum>
- </property>
- <property name="sizeHint">
- <size>
- <width>100</width>
- <height>20</height>
- </size>
- </property>
- </spacer>
- </hbox>
- </widget>
- </grid>
-</widget>
-<images>
- <image name="image0">
- <data format="XPM.GZ" length="26835">789ced5c595323bb927e3fbfa2e3e8edc6842ed8982526e601b0318bd97726e62125956df0868d59cc8df9ef93ca452e6f34f4e1ccf4c37405747fae2a293fe5a24c49ee7ffee3c7cdc9e18f7ffcf38fa7210ceffd0fdf84c18f7f84e74e67f49ffff51ffffae3cfe5a5a51ff1a7b8b1f1a3f0e7bffdf1a7811ffe8759a23f842b09af13be51bcccf78de015797e27617efe5ab13c6f05afcbf3eb09d3f3f0a0989ff7cd84f9fea360cfef879030dfef335e16f9bd172cf2c125e1f524ef6dc22cef9a62e9ff30616eff4ab0ca5f4d98efaf2a96f7af13e6fb15c122bfbf4f98fbbf532ce355669cf81c27cced9d28e6f68d132cfcec86609117b6044bff8efac7d6a43f7fc358fb0be78af9beeb09d6f1eb0bd6f1180896f6cd2ae382b467af04cbfb595bb0bcef6b84d7f579680896e7c32061e26b2f056bffbb82d53e2e222e2cebfbb02158c7635bb03c6faf1917d5febd6079df497b45ed8fdfdfd0e7c36dc2ac9f4cb0eae342b0f67f2c58ede18d319a1ff747fe541cf7772258f5779430f75767acefdb9b84d93eae0497e4fd52c2743ff4148bbedf046fc8f3649fc5241f5c0bd6f61e12e6fe1e15737b765db0b4679e12e6e797040791ff3c61baef8b8ab9bdb0c1b824fd7b8a072b056dcfef0a96f6fc4ac2ccf75531b707cf8c4bcacf254ccfbb8162f14fe92ff55f4a989fbf51cccf674dc1c2dfde26cccf9f12067d1e7604ebfd57c5c27f59b0f07119e35591cf913d940aa5c0f1213c292e6c90bc7b8c57d53e8e158bbece048b3ce12061eeef50716199da7b16acfadd502cf25c0ad6f1e7f651de22bdefac60b59f9262894f2058ed654bb1c8e7046bfb7a5ff4ebd37d89c79b8a597e77ce784dc7634fb1c8ff9e30bf7fa498df0f6b82d51eb61366794031bfefc9de578bab1b45d6c750b0c8e7cf14cbf8de2ae6f10a59c2f47e28325679a19530b7b7af58f8ae254cefc3bd60912f5414f3f3504a98fb6b286679b28e60d1bfdf51ccedd953c5dc5ea6f2a93ec85f565deaff5eb18c6f2b61eebfad58fad7e7c51e7c3b61e67fa958c6f324616acf6482351e0c1266f9de15cbfbdd84599e3ae3f582f0bd532ccfaf27ccfd51bc5d2beafb6e55b1e8b7c038bd6f13e6f79705aff27dbb9630cb73ad98db83a66090fb778aa5bf15c199d8073fefd2f325c5d25e59b03c6f2e13667b0a8ac5bf1f196fc8f86446b1f02b24ccef8f14f3fbf644b0f009f23e1464fe23fb5a5f49efbf28e6e7fd51c274df2e0996f18243c5624f8d84d93fdf05cb78002816796cc23c5ebb82753cf719abbc7ea458f8937daffbf4fe9260194fbbaa58ee737b1e94af572c7cb384f9f9a160b58fae62d1e75bc26c8f34be1b2bda7e962996f1a80b96f7dd71c22ccfabe215aa2fc263c240f6a2efeb78d6144bff4131bfef5612a6f7dd48b08ecfb26296c79c26ccf755be4cda1b32760589572f8a25de541366be65c5a2ef31e6f6453eb72af9d046c2acef55c532de5630c87c799830c7bf9162997f760567d2de9d62c947683edbf03a7efe5cb1f07d4a98c60f2e04cbf89815c5fc7cc6e3ef95af394a989fef2a16fd5e264cedfb8660198ff09230cb7fa058e66f9f30c707ab58e2db96628907db09b33cfb8a459ee384499e50535ce27af741b08eff5bc21cbf1f154b3e344c98e5bf502cfedb4f98ed6153b1f8632f61bedf129c493ed84b98fbd7f115fdda4ec29c9f14154b7c394898fd27bd2fe3c5f6e57d51fa6b24ccfdd5154b7fed8439dfeb2816ffd84e98f948ff7e4dc6f33e6196f755b1d86b53b093f84df90d94923ddd24ccf6baa698f517fa82355e9d29e6f7cd30618e17d78af97d58162cfa74a058f479a558f455562cfeb49930dbfb4031b7ef2a82459f50502cfeec12e6feb57dd127ec25ccf1f149b1e8f33d6196afa498e5f3a97fe19ffa17f99e19277b6826ccf610148b3db884f9fe9362f1cfd784599e37c5226f2161e673a098e5b535c1623f1612a6fe4e878a451e9330cbd3572ce3b79f30dbc78b62f1c76ac23c1fea7838e97f9030b7ef154bff59c27c5ffb73e28f7b09733c5e532cfdeb78d5a5bfe784d95f54debad8cb56c21c7f78fc83eadf9f2ae6f1846ac26c9f5b8a59ff9eed37a8fe602961d6cf9d6289ffe709b37e2b8ac5df2e12667b2b2a167b6b0b16fd413161f68f8e62c927d3f3228ff62ffab3a384f9be512cfc571266fe0f8a85bff627fa75278a45bff709b37e5f14cb78f512e6f1d8532cf2ed26ccf3d3b362b1f79d8479bcd6154b7cea0a16fbf08f09b37db4148bbc0f09f3fd9a62f1cfa384595e1dffbae46fd58459de03c5920fb0ff8720f1c12d2996f8b5ad58e687a384d9ff68be7125d58f3709f3fcbcaa58f4b3ac78d5d1fd75c132deaea558f2b1f78459fe8e62b18776c23cde5eb1cc27cd84e97e0682653c61a858f4aff2c8f89946c2dcff9962d17735616ebfae58fadf4b98e5bb659cc6b7af58eabf9162d15f2d611e9f65c5325f5d25cce3fd2658fc2bec2816f90b8ae579b22f17923e3a8ad78a844f05bb35ba0fbb8295df49c2cc9fc73fa83c70a658f4bf9130f77f2558ec276c26ccf70f154b7e47f6e05715670f8245dfa7c3bfefb226ff6fbe1206bdbea7afbf9bcb873c7f3b2e6389f2d7d7defbbdb94c4a19fffe2e89ff4e2e3f67b7f0b9e83d2eef51bf1f9769361f3c67be8fc9ff0e97cf58e1efcbe56bec7e372ed6d3ef803f99cdf0771d2f379e51d49a6cc0cf3dfe3408d51167bf1717dbb40dbc82c857174ef77865c22590dc863ee57f33e7f05d4cbe878b7dd091c6bf513fc42b5a4f64d8b22d7a263047d154db76f0a74bd7b7b1f9361b6b3213e2a29ed0144ebda83389c01dfb88bf9dede365488b8ddf870bca1a251e208f28355eb97b461844cf89d23f219721fe76a88ff86c7ceff9b79af7077479b224635f50d627fb6adfec08af77bb89d796ddc6ab6c2b76c756f1d35dbb67f7f1598fef1dfc665c6af610ff756f8f50c6114a7c6c4feca93db3e7f6c25eda2bba2eedb5bdc14f6eed9d5db2cbb6608bf87cb02bdfc3e4735c16cd03b939a28136f3842c4a76d5aed975947a038dcbd08f31902e439f59e38c37c164a66e47a64136e7c62dfe7d5c62eba6893ff78464c6c088da340f76605af8bb6bdaa663baa6671e4ddfe4ffc082cb08ab8179b2a766689e519f6df49f8179c17189712e4687f849dd3e7c3717bceecdab796526e60d6de3017b5ab1c18cccbbd9345b66db9449fa8a5cf359e8dd1d53256c91fdaed933fbe600a5c788877d64e44b6deca7763a34877f0797a9cf7b18938aa88f23736c4e8407a08c1f311973613e207ca2cded99537386fa79b45d8aef4d9a6f8d7dfc3e2e910deae45e6c2c5a345a16feab63cecd85b93457288bdacdce420e7936d7e6062f66738bfab9a3b79d5932cb76db144c112d4bfd9074f37d5c50cfaf631de175883a79428dac989259257d5c9bb54ff198af9fc86c9dc66260363006eedabef4e52503fa543efa152ed44acd0258fb82e200b8e4213acef33d7e9ed5ed4c71b9a127908dbd006f0b6684f6d520368dcfe6d65f995f948b7d4261026424355bd6acacd3e39e8f0855bc7684d10ebd0de91e4637a8e30cf46e62bed68833d7dfc605305a8eec1d348409cbcd32cdf298c479a620acc6ade4e23564d0b465d3c63ebf990bc5e1a8e926c6e2275b817b7b99fa372411244b1beb607a36512daec3c384eceb53fae4c8368016b4a1631ea01b638048d28b59c25fe3821cc0b46c0f7ad8cd9d30614de4b513795ce335b69647bcfa6695b31894af9f63b54eefb39759c910d48bf0137b0d037882a191b99233f158612c92f3937a0914f19d39473f6924bb998cb3636d187844b93378c6b17d81579c81f6f1eac21b8ce01d368d872d923d8ec7383aabff2832b00d65d3414b88594686b3f3540d3a6d6f9fe2d2c339be8133e3ae5d128fbf9e60b233c1a38223ba831caab08b71fb1cf630677e857d9c0563de398203a8c1211cc13132c6c7e184343a393215eac5e233a77046f99ae64e58d1fd152e1883bbd6c1395cc0738ac131285fc2a530d9812bd6075cc30ddcda77b8832558b68f508022e6cf5c6dc68aa58bd21c9906acc02b94306fde9016d76035c727d91db6b786d583c36ca013ab37bcee7f9d0be5f42bb06e2eec19ce27b9a8434c40626a1cc50d4c778d1d3970b1fa8a36d1c46b1c7d6a78c54a07301b2dda5de75d7099ccb69022a17a21406cb7ecea186d7a54c3f5a9aa7b99643266f3192e3163710dd7a45e351ae5628fbb8f4cdc03bcd88a6bd9e0dae38b183562fea31534e7429841765cc7beb9ae3d866bd74b3151a322a47efaeed1ee219b2155a59db4a2b390cbfc3827cfb65c1fedab2e79faa45d9304f0e806ee09da76e886f4fc336924c895f25264508fb646ccf8efccbd9815f74abe63a83dcea04dcab98d7b7358e5a0263be437d98c7c135ca62d0f7b7aa0d5141fad020a98d51f4b5fe319f136f61475027df7ee36cd798c38d33dc41acbdcdb81dbc2485427ddc4567beac7b6e1b63132acb8776403e4339319048fd6b1adbab2abd07a889f9275ca5fe6cda6d4a7c759b78995d6a6db99885e791b2b9b3d3772558c545df6ef311f696980ad34a256dc2e3eb3eff6dcbe3b7035db41dbddc2cfeaf6d59cba43f2c6e90c957a7447ee18ce5dc53dbb13f5405d3f9cf5fd692e512bf89eb72ddb8536565a65b2e44a9a1d53ede14edd1946eb23b29eb13ef2baf1d1e7b0b55e8c86b6e4cedd85bbb4658c4f435a8b69d8babb72d7ee862cd8cce1d2335bb612e389bb8dda1119a7d6d5e771a19991b8c4bf016739ac19c7d589915c9066007707afb680d6554f2b4b7e0e97815bc2df1db7ec0af694d6020670e48a587be13c8e36e863beea565c89e65998b90c4ab082e3e030be371745a9b95ceae358807adc75ab512b3c83249fa7fc1e67e65317d71e7aa293c3b4129bcf0407a8dd1eb5b4e9d6900979b6dd4036eb68391bf8ce3356db43388391e44733191d3ce22099983b2f8eb8f3b990a7504687b1b0e41e482bf9e842f334b60f18abcb927946af68e98aea049798eb764cc315bdc3ead1c4bc05f34be33d66a965f782b3cd7dacefb0af0a3e61139bc405c7d1f86086381a1bd15a66ed6b968be822482dd7b37d38f71945ff9d892c728dc6aaeeebb0ee1b1421984b8357c3a7b99c4629cedc1aadd2ecf8267259f5f7d842c39efa07f49b3aaf7aba1abcd98b592e64dd03dfc2ececf1e75cf29a49b27471a40ad09c8ac540d930c62fdf76719db8e63bc2a541ab0d7569ad46751bb588ba2bfb2ee52beb390b224bf3ce791be71d6cc3d47ccfdba499299f895606058d6193f178924bce4732f1e410ab15bb4e5cf2b912fd1b33c85b8cf96d9c1761721c38eff18fc40545432b2f430b7532ae4fc6d50fd271efb6644698f51d5aeffb7e60af932de73583f5266671059a63781eceb15ac8c5c4bc23fe1b73dc636a79ba468cd9d78e7f722ecf25f95b13a53ac08b2201ce1d177e680624dd0d6998ffac4b1566ec957ff62ff625b680b35419b3ecc789fc42ac0c2539c248f6352e7564136533c8e5842c23af15cecf0798d5df59e432e1191ab70efc2b45af3aeaa4847e32c8555a9c3bdae47b7189fccd8f6c912478c1faeb0533bf692ed827dae3bbdf642e7979177121a61db432e2825e799a7a555fb9a178bcedb76029e691b35cd0ba0e69a6e9da2266ffef34cf82bfcf79b4b6c9bc56fdb62fbb3249807a749b5825cdd10b0ef000e798e698cb22dfcf718933127319619e6f66b8c4569f6117eb93c8a539473387942f9cfb8adfc11a723a1bd55c987e63cdf38e1e5fb5d1b6c13cd8bef37e773a17e7c8e9b19a438f69ce9f2fe772c17a876cdda0e79fcfd14b9c59f6a1ed0f629b5098994f6256d2715564e290c958aaea4c9c35bee687b68439fd3e56270fb427d8c76a744ff492bcd41f92069750a238677c854b866dc6d5a37789f6d35c2afe08abdf3842017f4fed38e2db9477d9d3c8c41f27265593d750b4bb9a3f3117d08bb500e76d3886680de831e5296f21cbb617fef4ab5cf087b8f85e6ef548b950b58715ee1356bf8099deccde2946f2375b82f71835fcf18cb568348eda3d33170e682dbc213b7ed163defc39653aa9c214ebc49c09e7a90baa5703658d33be9f8f07c42748ad14b95c4d8d0f676203d3c5f9ed9eaca919eb13ca7a0632c7efa1846b98ade8cad8e42a66bcee62eeeb2ffd55f439aa64d016503b9e6a9b27bb8d3d68ed92e30f0dcc1eca24a7a3e83c91dde7b950d536ced963fbdb73b850e431fb36f65c8bbb326419547fc69d3e57f6a738330ee4f97c362a6bad1eb3067fe36f3d4525df31affe8e6cac473553166d1b7b48fa1b5fbef6552eb46ad2a4597f5b56c326ed1c6737b38fde4a5a20ff68989669d17acd9e3b8396afcd5421f919ea9a3c6ec92f9b4e8c1f51bba4939e39a4117cb225e132a5196c17ed81463a71996f63b19e652e34ef13177b39870b604f2835ad5c7baec089bfc3aa7c1fbd39669096e693d93a91dbd8211bdb47de7bf63166c9a8df17b2af9e6dc7b97f3e171cd92e2c7dc425f98ae694bc9a15b9948d9fcba58ff9ec1ef6cb5c62dd1e57be767d45ea135d1f9a8c5dd3ad386841d58e5027713e8a7b95b1e73eec432dd9e824976d64cf5ccc4fe6fddc7d64e2ec93b9b03773a290813ec4bdfb5eb4b1681d58b33bb71ce713ca5676644556198ded6b1cd3382b1bf87d8c137bb4e3daa295278c0438c716a03f6399f1ed13cc09f6347e7d860bb61bada66b3b381f1693f7e6e3a9c1883bc2e706317b4349ea581f16a12459fde4eaf26495388eb13b340bf7fd99ddc2da621f47a6c5f9821df91dcad8c66fc93abc5f714517a3f657b8dca3e520175bf5a539352b5601b00907685903b4f506feecdb12fac94098e47763e654bc546d4b4484b8dbb9ec57fd9a6d4bef31db38a33a769a0be6e638ba179c214f3359646314f3a3778dfc3a6513158e3e867328e482f9f729f468ed0be328f41ccf6ed7fe7ac2c6c5c66095b2b87ced32b12b00f77e036b65ac196d0b3a18d3b74d7eb7ad223fb430825e1ce631c9d7c853fe1253f1981d16bc97fa85d7c36505db6e046b77a586ac07e32ec862388baeca1ca9bab9a3dfb713316d3ce3c4bd968d0058b79cd3999f57ff2e33a572d9911f0760474ea3ed4fb8089b40d598b1bd1851a816d35d09b59db84f74845e5b8e953ace8f0781bdfe5ab8b2eda4f8eb6f40a59a7792816a65cc272fcc79f080d970b285c425ae5ea02438ba792e9355ff78dd32c7a54e3b3731bfecdb8209c976930c013f83637835cfe85371a5aee62bc8cda177de8b4759d105c5de90858c6ae4f1a84c44465ac7d8827b3374de0cc9c2c69625f6859f05da594a6b563c23cece95e2757a263272f174f66837d48d31d3e729e2483d864668ba0e9d5979c47cf001eb80be548cb9fac494c3bdbb0e0fa145eb49f35625a4d2c416dba1e34f2447ce5b24a9ce64a6813d8dcf4cb80fb938e16288cb01d6dfbdd095550765531564422f3cba17591b1cba65b70ef7b4bf9cab1931ab3f0b7dcce2dbee0ce792c1148bf1dc110712c2203c996d33b32f12239faf852156076fb2a6c435e34fb968c61c9e914dd756cc13594c75c263aea3ffbbcc75e94cc1033ef74875e4258dbe445168f813a8622edc0c2fb0075564d39f5b01ac139f9b5c9c9bcaf671705f6dc5391b7ce7335c267dc9367ccc2d56dc55e0f520e5c2b6738dd189727fd80f6f9855229f30827358c15af2912d8deb139ea7d1f71ec3bb2be227d367cad4ce62a45ccb696aacb5e87565bf1f36dd068e5a3355b1661197e90897f83d61deb04d5e2d71992c425794eb66c5be9957136b9903f49d57f41b17d751ec15d6f157710e42e1b12e88b5a35f3347762db706336b6bf36dd0982b8ca87b719e10d9682551e3d5ec5c39ffc24cab1178cfe246b9a0fd5634db75a7e6226cdb36fa57b4c93ad6352577e9dfdca5dd76555a9fad637dd2c0bf0fd11ef7423954c6b5b3c4bdc96b5a6fd17de3690f8763a52bbcc265d1fad8222e582776692ffc36ed5d731c208b404b7250735718bf57ec8169d910764235ecfa327a7cdc5fea51ce1635d742a6fbbe1af6bca319787ef59ce724cce038ecbb3e8d869fb49a4539cc022ec139ac998654f3e6aac3fcbc1d0e420d87af432bb787e60df3b322f2883ba571353766f21e3350debb6863b65272716eb733ab60f3195918d85d6ca386d1a8c12bf7f9959fcf7389b52b2c99158c66d32710d9ce622470eec6ad844388b514d52274923c9e637c88a7e87844cd4bccdeb0bdb82fbc82f19b56fd930fceea43d1921b8523db0acf188d7a93fb3b5fd40bf80e143063b6a93e9aae2beea2a59927ac692a389bbd9ceaf96bde278b3bfa8714e978cd08fbc7d8fa168e431b6b5e909c75f6d2334c58f741f4fa1a5d1336f62b5c5cc5b542df94d25afdf45e2fcd8bf612fd20b3dbd833ed286335f0403a1aa41d70a0b5aa26ce1217e1249c86b3dcf8cf6a07d984f370112e319e681696fd35bd60ff4d28842bb34911c08ca5cff9afe159c55e846b33c40a64944eb1c4d3ee9eeacf8c90818e7d05136e3063b99dcbc44cfcee873b5ba27dda8c2cb79ee7b2a8de5f74b9b6bd376f387b8fc29239c9d51ff99ec7d114f9986338c4f93e9e5a3ea7d32c2656f1a68d33c42e3e7401876119f80c703aef30e327a94dac6f8efc168e0e674b8df1ac32c9e753beefa018d78da1034fa1202795389b3126bff39776bba00f0d7b01cfa1c867aeecb6efd9edd00d2b98d91fc3b6ecc6c4eb26c76591ad617e019b7e60ce62a4744bb23ae67e89cb13edb3c4b5e3755b0e258aa6e3b596492e12a5f942bb73e863ab66151a98750e481379b9179f63ce5f96779d7d05e75e23fb152ebf2bfa697f09d089395ddc298022d67e9819718501bca6397bce72d2eea7adb06ac6275fa76bb2ea825c2d66775b7ec716ec4bfefb32bf30bf38bfc967745c0596e13cacc23bd0770fa0924e5c4df63d89afa7e49ec7587fcf5d4fa33d3fccf0c29a1dcaded02fc5319adb5e502385b8328b6c8a61dd3f41597633ccbc3a51fc293fa74eea6c71f6b2e0f31825b156dbc8ec787dff97b8c4dd2f172300fe8df39579806178cf0c5c93fd7f7c823f56fe553927fa310bba1bce17446964622fdc23c6423e3bf4933df1455706e60173ac389ff7dcb3ad650e671c97f970e9ea0b6aab8f477ad2fb75a5c9d05c7221df3a99e0819eff68af83b5551cd37a9ecb97e3d8cc7e646ccb95e10973c447f7f65336d30ca6b954e47b3f4bf0162ec3ddc4c95f5af18d7316bc99675a1b7b9895ead7b9d02ec50b7d93ad688b59b067eec8f5a4ef49df9d97edec4c31a281876318b811d6d17b31878ef50dd612c774d7114b0f712fa39b4e5dc3f770a1959718581eed10f6b12e6e6759d8c25830fe0e0c9d8d356bfe70e6b42eafcfc673b3fcc7e25b57c1857dbb8bb9705c2d7d7345d8a49569cb1e1fbfad8039f879acf778de9f94ec2bfe32c988a3017d5faf4f15ca10f38173730e711ff50933dfc9aa645e54d075166b2fc36bace4ecc8c56f89b4688770689efd80d858ca20b63d3a2c32c17e4deb23097fe57b7c5895189a6f0cd999336ff19c3f46b6badbcce2ca4b3d7df76dba7634921338c8b266768fdaa8640f98a539ac0562a555a34c7868776d296b656dd2c921f9499b7aa66f917c2b178e8a3dfd0eae3b89fbc958e33ca17e3ad0861573e4df61e0f7cc12cab20d0d5ff335cc62b6cd895f811d2c63c09d61e6d9809e8ba7a84dace0a8d2e2d34021ee15da42d6c99a188523932e8d6083f2ca6fb0b1f185759527dddcd3faa6c1eae6c4dde22721bc8417db45569829a0558cc0f8535b7667eecc744d17e5afbaa2f358b19ddb5757768ecf06d82e65f371573ceebcd6716c1ae891fd80c510f42876d573f2f7266dfe6bbe3f473319ed686696ce50b35e62ce879c4e520f58f3a0b50cfd054a5dc62abb0d4bc4009ce373e52a91ec30f08e7da073be4b74a2f881b4dfa3bff99bdb916ff6bd5c26753ca969cb67a29ae3d3d6136fcc7c92eecc9cd4fbf9b746ffba8d7dc4843e6f4e5ed3cfce709f7edf8cbf053bf1e94ffe6f8cefe52265cbc4c8d32e2e5f33e7f0e5d23548c5462bad31afefe2323b72935c663e5fc065fe08d87432339757b8f1897065f01d5ce6dbd124978fff97a485d625dafac8fabe32ce5fe1f2c1fab9997dfe6326b2b7bb405f133afa80d157e3d867b87cae8585f7276a11f120c8e3c5ed86e7f0fc9d5ce6c42133fdd4873d4c7d5f624a83dfc8e5e7e3faddd767fb9b1ec9ffcbff7fecbbafffe7f27b5e7ffef7bffff13fdcf4c93e</data>
- </image>
-</images>
-<connections>
- <connection>
- <sender>okButton</sender>
- <signal>clicked()</signal>
- <receiver>UninstallDlg</receiver>
- <slot>accept()</slot>
- </connection>
- <connection>
- <sender>cleanRegButton</sender>
- <signal>clicked()</signal>
- <receiver>UninstallDlg</receiver>
- <slot>cleanRegistry()</slot>
- </connection>
-</connections>
-<slots>
- <slot access="protected">init()</slot>
- <slot access="protected">destroy()</slot>
- <slot>cleanRegistry()</slot>
-</slots>
-<layoutdefaults spacing="6" margin="11"/>
-</UI>
diff --git a/util/install/win/uninstaller/uninstaller.cpp b/util/install/win/uninstaller/uninstaller.cpp
deleted file mode 100644
index 9a7c529..0000000
--- a/util/install/win/uninstaller/uninstaller.cpp
+++ /dev/null
@@ -1,142 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Qt Software Information (qt-info@nokia.com)
-**
-** This file is part of the utils 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** 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.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at qt-sales@nokia.com.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-#include <qapplication.h>
-#include <qlabel.h>
-#include <qdir.h>
-#include <qtextview.h>
-#include <qpushbutton.h>
-#include <qmessagebox.h>
-#include "uninstallimpl.h"
-#include "../environment.h"
-
-#ifdef Q_OS_WIN32
-#include <windows.h>
-#endif
-
-QApplication* app;
-UninstallDlg* progress;
-
-void rmDirRecursive( const QDir &dir )
-{
- const QFileInfoList* list = dir.entryInfoList( QDir::All | QDir::System | QDir::Hidden );
- if ( list ) {
- QFileInfoListIterator it( *list );
- QFileInfo* fi;
-
- while( ( fi = it.current() ) ) {
- if( ( fi->fileName() != "." ) && ( fi->fileName() != ".." ) ){
- progress->filesDisplay->append( fi->absFilePath() + "\n" );
- progress->filesDisplay->scrollToBottom();
- app->processEvents();
- if( fi->isDir() )
- rmDirRecursive( QDir(fi->absFilePath()) );
- else
- QFile::remove( fi->absFilePath() );
- }
- ++it;
- }
- }
- // Remove this dir as well
- dir.rmdir( dir.absPath() );
-}
-
-int main( int argc, char** argv )
-{
- app = new QApplication( argc, argv );
- progress = new UninstallDlgImpl( 0, 0, 0, Qt::WStyle_Customize|Qt::WStyle_NormalBorder|Qt::WStyle_Title);
-
- if( argc != 4 )
- qFatal( "Incorrect parameters" );
-
- if( !QMessageBox::information( 0,
- QString( "Uninstalling Qt %1" ).arg(argv[3]),
- QString("Are you sure you want to uninstall Qt %1?\n"
- "This will remove the directory this version\n"
- "of Qt was installed to, along with ALL its contents.").arg(argv[3]),
- "Yes", "No" ) )
- {
- progress->setCaption( QString( "Uninstalling Qt " ) + argv[ 3 ] );
- progress->show();
-
- app->setMainWidget( progress );
-
- // Delete the two directories we have written files to during the installation.
- // The OK button is disabled at this point.
- // Messages will be processed during the delete process.
-
- // Check if moc.exe exists, if not this could potentially be a
- // corrupted registry setting
-
- if ( QFile::exists( QString( argv[1] ) + QString( "\\bin\\moc.exe" ) ) )
- rmDirRecursive( QDir(argv[1]) );
- else
- QMessageBox::warning( 0, "Uninstalling failed", "Qt could not be uninstalled, you will "
- "need to remove Qt manually" );
-
- rmDirRecursive( QDir(argv[2]) );
-
- progress->okButton->setEnabled( true );
- progress->cleanRegButton->setEnabled( true );
- /*
- ** Just hang around until someone clicks the "OK" button
- */
- app->exec();
-#if defined(Q_OS_WIN32)
- QEnvironment::removeUninstall( QString( "Qt " ) + argv[ 3 ] );
- QString qtEnv = QEnvironment::getEnv( "QTDIR", QEnvironment::LocalEnv );
- QString pathEnv = QEnvironment::getEnv( "PATH", QEnvironment::PersistentEnv );
- if ( qtEnv == QString(argv[1]) )
- QEnvironment::removeEnv( "QTDIR", QEnvironment::LocalEnv | QEnvironment::PersistentEnv );
- else
- qtEnv = argv[1];
-
- qtEnv.append("\\bin;");
- pathEnv.replace( qtEnv, "" );
- QEnvironment::putEnv( "PATH", pathEnv, QEnvironment::PersistentEnv );
- if( qWinVersion() & Qt::WV_NT_based ) {
- SendNotifyMessageA( HWND_BROADCAST, WM_WININICHANGE, 0, (LPARAM)"Environment" );
- SendNotifyMessageA( HWND_BROADCAST, WM_SETTINGCHANGE, 0, 0 );
- }
-#endif
- }
-
- return 0;
-}
diff --git a/util/install/win/uninstaller/uninstallimpl.cpp b/util/install/win/uninstaller/uninstallimpl.cpp
deleted file mode 100644
index d30358b..0000000
--- a/util/install/win/uninstaller/uninstallimpl.cpp
+++ /dev/null
@@ -1,75 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Qt Software Information (qt-info@nokia.com)
-**
-** This file is part of the utils 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** 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.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at qt-sales@nokia.com.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-#include "uninstallimpl.h"
-#include <qsettings.h>
-#include <qmessagebox.h>
-
-UninstallDlgImpl::UninstallDlgImpl( QWidget* parent, const char* name, bool modal, WindowFlags f )
- : UninstallDlg( parent, name, modal, f )
-{
-}
-
-UninstallDlgImpl::~UninstallDlgImpl()
-{
-}
-
-void UninstallDlgImpl::cleanRegistry()
-{
- cleanRegistryHelper( "/Trolltech/Qt" );
- cleanRegistryHelper( "/Trolltech/Qt Designer" );
- cleanRegistryHelper( "/Trolltech/Qt Assistant" );
- cleanRegistryHelper( "/Trolltech/Qt Linguist" );
-}
-
-void UninstallDlgImpl::cleanRegistryHelper( const QString& key )
-{
- QSettings settings;
- QStringList::Iterator it;
- QStringList keys = settings.subkeyList( key );
- for ( it = keys.begin(); it != keys.end(); ++it ) {
- cleanRegistryHelper( key + "/" + *it );
- }
- QStringList entries = settings.entryList( key );
- for ( it = entries.begin(); it != entries.end(); ++it ) {
- settings.removeEntry( key + "/" + *it );
- }
- settings.removeEntry( key + "/." );
-}
diff --git a/util/install/win/win.pro b/util/install/win/win.pro
deleted file mode 100644
index 470fa03..0000000
--- a/util/install/win/win.pro
+++ /dev/null
@@ -1,136 +0,0 @@
-TEMPLATE = app
-CONFIG += windows qt
-
-HEADERS = globalinformation.h \
- setupwizardimpl.h \
- environment.h \
- shell.h \
- resource.h \
- dialogs/folderdlgimpl.h \
- pages/pages.h \
- pages/sidedecorationimpl.h
-
-SOURCES = main.cpp \
- globalinformation.cpp \
- setupwizardimpl.cpp \
- setupwizardimpl_config.cpp \
- environment.cpp \
- shell.cpp \
- resource.cpp \
- dialogs/folderdlgimpl.cpp \
- pages/pages.cpp \
- pages/sidedecorationimpl.cpp
-
-INTERFACES = dialogs/folderdlg.ui \
- pages/buildpage.ui \
- pages/configpage.ui \
- pages/finishpage.ui \
- pages/folderspage.ui \
- pages/licenseagreementpage.ui \
- pages/licensepage.ui \
- pages/optionspage.ui \
- pages/progresspage.ui \
- pages/sidedecoration.ui \
- pages/winintropage.ui
-
-win32 {
- SOURCES += archive.cpp
- HEADERS += archive.h
-}
-
-TARGET = install
-DESTDIR = ../../../dist/win
-INCLUDEPATH += $$QT_SOURCE_TREE/src/3rdparty $$QT_SOURCE_TREE/util/install/archive
-
-win32:RC_FILE = install.rc
-
-# Comment out one of the following lines to build the installer for:
-#
-# - a Qt/Windows evaluation version (eval),
-# - a Qt/Windows evaluation version that can be burned on CD and
-# distributed on tradeshows (eval-cd)
-# - the QSA evaluation version (qsa)
-# - educational version (edu)
-# - non-commercial version (noncommercial)
-#
-#CONFIG += eval
-#CONFIG += eval-cd
-#CONFIG += qsa
-#CONFIG += edu
-#CONFIG += noncommercial
-
-
-unix:LIBS += -L$$QT_BUILD_TREE/util/install/archive -larq
-win32:LIBS += ../archive/arq.lib
-INCLUDEPATH += ../keygen
-
-# We have the following dependencies on config:
-#
-# qsa -> eval
-# eval-cd -> eval
-# eval -> (none)
-# edu -> (none)
-# noncommercial -> (none)
-#
-# For the code this means that the following defines are defined:
-#
-# eval : EVAL
-# eval-cd : EVAL, EVAL_CD
-# qsa : EVAL, QSA
-# edu : EDU
-# noncommercial: NON_COMMERCIAL
-#
-
-qsa {
- CONFIG += eval
- DEFINES += QSA
-}
-
-eval-cd {
- CONFIG += eval
- DEFINES += EVAL_CD
-}
-
-eval {
- !exists($(QTEVAL)/src) {
- error(You must set the QTEVAL environment variable to the directory where you checked out //depot/qteval/main in order to be able to build the evaluation version of install.)
- }
- DEFINES += EVAL
- qsa {
- win32:RC_FILE = install-qsa.rc
- } else {
- win32:RC_FILE = install-eval.rc
- }
- mac:RC_FILE = ../../../tools/designer/app/designer.icns
- SOURCES += $(QTEVAL)/src/check-and-patch.cpp
- INCLUDEPATH += $(QTEVAL)/src
- DESTDIR = ../../../bin
-}
-
-edu {
- !exists($(QTEVAL)/src) {
- error(You must set the QTEVAL environment variable to the directory where you checked out //depot/qteval/main in order to be able to build the evaluation version of install.)
- }
- DEFINES += EDU
- win32:RC_FILE = install-edu.rc
- SOURCES += $(QTEVAL)/src/check-and-patch.cpp
- INCLUDEPATH += $(QTEVAL)/src
- DESTDIR = ../../../bin
-}
-
-noncommercial {
- !exists($(QTEVAL)/src) {
- error(You must set the QTEVAL environment variable to the directory where you checked out //depot/qteval/main in order to be able to build the evaluation version of install.)
- }
- DEFINES += NON_COMMERCIAL
- win32:RC_FILE = install-noncommercial.rc
- SOURCES += $(QTEVAL)/src/check-and-patch.cpp
- INCLUDEPATH += $(QTEVAL)/src
- DESTDIR = ../../../bin
-}
-
-mystaticconfig {
- QMAKE_LIBS_QT =
- QMAKE_LIBS_QT_THREAD =
- LIBS += ../../../lib/libqt-mt.a -lz -framework Carbon
-}
diff --git a/util/qlalr/doc/qlalr.qdocconf b/util/qlalr/doc/qlalr.qdocconf
index d97ff7d..a97ef6a 100644
--- a/util/qlalr/doc/qlalr.qdocconf
+++ b/util/qlalr/doc/qlalr.qdocconf
@@ -59,7 +59,7 @@ HTML.postheader = "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0
HTML.footer = "<p /><address><hr /><div align=\"center\">\n" \
"<table width=\"100%\" cellspacing=\"0\" border=\"0\"><tr class=\"address\">\n" \
- "<td width=\"30%\">Copyright &copy; \$THISYEAR\$ <a href=\"trolltech.html\">Trolltech</a></td>\n" \
+ "<td width=\"30%\" align=\"left\">Copyright &copy; 2009 Nokia Corporation and/or its subsidiary(-ies)</td>\n" \
"<td width=\"40%\" align=\"center\"><a href=\"trademarks.html\">Trademarks</a></td>\n" \
"<td width=\"30%\" align=\"right\"><div align=\"right\">Qt \\version</div></td>\n" \
"</tr></table></div></address>"
diff --git a/util/scripts/make_qfeatures_dot_h b/util/scripts/make_qfeatures_dot_h
index c434649..5ca8c88 100755
--- a/util/scripts/make_qfeatures_dot_h
+++ b/util/scripts/make_qfeatures_dot_h
@@ -2,9 +2,9 @@
#
# Usage: make_qfeatures_dot_h
#
-# Generates core/base/qfeatures.h from core/base/qfeatures.txt.
+# Generates src/corelib/global/qfeatures.h from src/corelib/global/qfeatures.txt.
#
-# The tools/qfeatures.txt file can contain redundancies, and this program
+# The qfeatures.txt file can contain redundancies, and this program
# will show them.
#
@@ -85,11 +85,42 @@ open OUT, ">$ENV{QTDIR}/src/corelib/global/qfeatures.h"
print OUT
"/****************************************************************************
**
-** Copyright (C) 1992-\$THISYEAR\$ \$TROLLTECH\$. All rights reserved.
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info\@nokia.com)
**
-** This file is part of the \$MODULE\$ of the Qt Toolkit.
+** This file is part of the QtCore module of the Qt Toolkit.
**
-** \$TROLLTECH_DUAL_LICENSE\$
+** \$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 either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** 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.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales\@nokia.com.
+** \$QT_END_LICENSE\$
**
****************************************************************************/
diff --git a/util/webkit/mkdist-webkit b/util/webkit/mkdist-webkit
index 1268b5e..c26fdc1 100755
--- a/util/webkit/mkdist-webkit
+++ b/util/webkit/mkdist-webkit
@@ -1,7 +1,24 @@
#!/bin/bash
-repository="git://git.dev.troll.no/webkit-mirror"
-tag="qtwebkit-merged-into-qt-4-4"
+die() {
+ echo $*
+ exit 1
+}
+
+default_tag="origin/qtwebkit-4.5"
+
+if [ $# -eq 0 ]; then
+ tag="$default_tag"
+elif [ $# -eq 1 ]; then
+ tag=$1
+else
+ die "usage: $0 [commit (defaults to $default_tag)]"
+fi
+
+repository=`git config qtwebkit.url`
+if [ -z "$repository" ]; then
+ die "error: cannot locate webkit git repository. please run git config --global qtwebkit.url /path-or-url/to/webkit/repo"
+fi
excluded_directories="LayoutTests JavaScriptGlue WebKitLibraries WebKitSite WebKitTools WebCore/platform/cf WebCore/platform/gtk WebCore/platform/chromium"
excluded_directories="$excluded_directories PageLoadTests"
@@ -138,20 +155,6 @@ files_to_remove="$files_to_remove WebCore/WebCoreSources.bkl"
files_to_remove="$files_to_remove WebCore/webcore-base.bkl"
files_to_remove="$files_to_remove WebCore/webcore-wx.bkl"
-if [ $# -eq 1 ]; then
- tag=$1
-fi
-
-if [ $# -eq 2 ]; then
- repository=$1
- tag=$2
-fi
-
-die() {
- echo $*
- exit 1
-}
-
require_clean_work_tree() {
# test if working tree is dirty
git rev-parse --verify HEAD > /dev/null &&
@@ -182,7 +185,7 @@ fi
rev=`git ls-remote $repository | grep -E "^.+$tag$" | awk '{print $1}'`
-tarball=`mktemp /tmp/webkit-snapshot.tar` || exit 1
+tarball=`mktemp /tmp/webkit-snapshot.tar.XXXXXX` || exit 1
echo "creating $tarball"
echo "archiving webkit from $repository $tag ( $rev )"
@@ -251,7 +254,7 @@ echo "generating extra sources"
mkdir tmp &&
cd tmp &&
mkdir -p ../generated &&
- qmake -o Makefile QT_CONFIG+=phonon GENERATED_SOURCES_DIR=`pwd`/../generated OUTPUT_DIR=`pwd` ../$proj.pro &&
+ qmake -o Makefile CONFIG-=QTDIR_build QT_CONFIG+=phonon GENERATED_SOURCES_DIR=`pwd`/../generated OUTPUT_DIR=`pwd` ../$proj.pro &&
make generated_files &&
perl -pi -e "s,$absSrcDir/,,g" ../generated/*.cpp ../generated/*.h &&
git add ../generated &&