summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoraxis <qt-info@nokia.com>2009-04-24 16:03:55 +0200
committeraxis <qt-info@nokia.com>2009-04-27 09:09:01 +0200
commite74c8dc65e2feffb9a55d00aee5ca634fba41df8 (patch)
tree3a131f9235fb6a455793178d8313655e4fd0036e
parent8f427b2b914d5b575a4a7c0ed65d2fb8f45acc76 (diff)
parent211bea9838bcc2acd7f54b65468fe1be2d81b1e0 (diff)
Merge branch '4.5' of git@scm.dev.nokia.troll.no:qt/qt
Configure.exe recompiled with MSVC6. Conflicts: configure.exe examples/network/network.pro src/gui/dialogs/qfiledialog_p.h src/gui/dialogs/qfilesystemmodel_p.h src/gui/kernel/qapplication.cpp tests/auto/_Categories/qmake.txt tests/auto/qfile/test/test.pro tests/auto/qfile/tst_qfile.cpp tests/auto/qlibrary/tst_qlibrary.cpp tests/auto/qline/tst_qline.cpp tests/auto/qstyle/tst_qstyle.cpp tests/auto/qtextstream/tst_qtextstream.cpp tests/auto/qtranslator/qtranslator.pro tests/auto/qwaitcondition/tst_qwaitcondition.cpp translations/qt_ja_JP.ts
-rw-r--r--FAQ.txt (renamed from FAQ)4
-rw-r--r--LGPL_EXCEPTION.txt (renamed from LGPL_EXCEPTION.TXT)0
-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-xconfigure43
-rwxr-xr-xconfigure.exebin864256 -> 868352 bytes
-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.xml8
-rw-r--r--dist/README2
-rw-r--r--dist/changes-4.5.1574
-rw-r--r--doc/doc.pri4
-rw-r--r--doc/src/activeqt.qdoc6
-rw-r--r--doc/src/deployment.qdoc16
-rw-r--r--doc/src/designer-manual.qdoc81
-rw-r--r--doc/src/diagrams/qtransform-representation.sk103
-rw-r--r--doc/src/examples.qdoc7
-rw-r--r--doc/src/examples/collidingmice-example.qdoc39
-rw-r--r--doc/src/examples/extension.qdoc11
-rw-r--r--doc/src/examples/fancybrowser.qdoc51
-rw-r--r--doc/src/examples/googlechat.qdoc51
-rw-r--r--doc/src/examples/googlesuggest.qdoc51
-rw-r--r--doc/src/examples/qxmlstreambookmarks.qdoc5
-rw-r--r--doc/src/examples/svggenerator.qdoc136
-rw-r--r--doc/src/images/extension-example.pngbin7676 -> 9929 bytes
-rw-r--r--doc/src/images/extension_more.pngbin9309 -> 13523 bytes
-rw-r--r--doc/src/images/fancybrowser-example.pngbin0 -> 98031 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/images/qtransform-representation.pngbin17892 -> 17385 bytes
-rw-r--r--doc/src/images/svggenerator-example.pngbin0 -> 11625 bytes
-rw-r--r--doc/src/index.qdoc6
-rw-r--r--doc/src/installation.qdoc2
-rw-r--r--doc/src/licenses.qdoc18
-rw-r--r--doc/src/phonon-api.qdoc8
-rw-r--r--doc/src/phonon.qdoc5
-rw-r--r--doc/src/platform-notes.qdoc5
-rw-r--r--doc/src/porting4-removedvirtual.qdocinc2
-rw-r--r--doc/src/qalgorithms.qdoc5
-rw-r--r--doc/src/qdesktopwidget.qdoc9
-rw-r--r--doc/src/qmake-manual.qdoc10
-rw-r--r--doc/src/qnamespace.qdoc8
-rw-r--r--doc/src/qprintdialog.qdoc32
-rw-r--r--doc/src/qt4-intro.qdoc9
-rw-r--r--doc/src/qtcocoa-known-issues.qdoc168
-rw-r--r--doc/src/sharedlibrary.qdoc186
-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_qtestlib.qdoc6
-rw-r--r--doc/src/snippets/code/src_corelib_global_qglobal.cpp8
-rw-r--r--doc/src/snippets/code/src_corelib_kernel_qmetatype.cpp2
-rw-r--r--doc/src/snippets/code/src_gui_util_qdesktopservices.cpp5
-rw-r--r--doc/src/snippets/code/src_qdbus_qdbusargument.cpp2
-rw-r--r--doc/src/tutorials/addressbook-sdk.qdoc179
-rw-r--r--doc/src/tutorials/widgets-tutorial.qdoc27
-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/layouts/flowlayout/flowlayout.cpp65
-rw-r--r--examples/layouts/flowlayout/flowlayout.h9
-rw-r--r--examples/network/googlesuggest/googlesuggest.cpp223
-rw-r--r--examples/network/googlesuggest/googlesuggest.h80
-rw-r--r--examples/network/googlesuggest/googlesuggest.pro9
-rw-r--r--examples/network/googlesuggest/main.cpp52
-rw-r--r--examples/network/googlesuggest/searchbox.cpp69
-rw-r--r--examples/network/googlesuggest/searchbox.h64
-rw-r--r--examples/network/network.pro1
-rw-r--r--examples/painting/painting.pro2
-rw-r--r--examples/painting/svggenerator/displaywidget.cpp149
-rw-r--r--examples/painting/svggenerator/displaywidget.h80
-rw-r--r--examples/painting/svggenerator/forms/window.ui249
-rw-r--r--examples/painting/svggenerator/main.cpp (renamed from doc/src/snippets/webkit/simple/main.cpp)14
-rw-r--r--examples/painting/svggenerator/resources/shapes.datbin0 -> 2088 bytes
-rw-r--r--examples/painting/svggenerator/svggenerator.pro15
-rw-r--r--examples/painting/svggenerator/svggenerator.qrc5
-rw-r--r--examples/painting/svggenerator/window.cpp101
-rw-r--r--examples/painting/svggenerator/window.h66
-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.cpp51
-rw-r--r--examples/webkit/fancybrowser/mainwindow.cpp167
-rw-r--r--examples/webkit/fancybrowser/mainwindow.h76
-rw-r--r--examples/webkit/googlechat/form.ui214
-rw-r--r--examples/webkit/googlechat/googlechat.cpp163
-rw-r--r--examples/webkit/googlechat/googlechat.h71
-rw-r--r--examples/webkit/googlechat/googlechat.pro11
-rw-r--r--examples/webkit/googlechat/main.cpp51
-rw-r--r--examples/webkit/webkit.pro4
-rw-r--r--examples/widgets/movie/movie.pro2
-rw-r--r--examples/xmlpatterns/trafficinfo/mainwindow.cpp2
-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--qmake/generators/makefile.cpp16
-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/project.cpp2
-rw-r--r--src/3rdparty/phonon/ds9/mediaobject.cpp27
-rw-r--r--src/3rdparty/phonon/qt7/audionode.mm16
-rw-r--r--src/3rdparty/phonon/qt7/backendinfo.mm1
-rw-r--r--src/3rdparty/phonon/qt7/quicktimevideoplayer.h1
-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/ChangeLog246
-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/FontQt.cpp33
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/qt/GraphicsContextQt.cpp94
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/qt/ImageBufferQt.cpp108
-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.cpp26
-rw-r--r--src/3rdparty/webkit/WebCore/platform/qt/RenderThemeQt.h3
-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.cpp111
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/qwebview.cpp18
-rw-r--r--src/3rdparty/webkit/WebKit/qt/ChangeLog115
-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.cpp38
-rw-r--r--src/activeqt/container/container.pro40
-rw-r--r--src/activeqt/control/control.pro30
-rw-r--r--src/corelib/codecs/qtsciicodec.cpp3
-rw-r--r--src/corelib/codecs/qutfcodec.cpp4
-rw-r--r--src/corelib/concurrent/qtconcurrentreducekernel.h10
-rw-r--r--src/corelib/global/qfeatures.h54
-rw-r--r--src/corelib/global/qfeatures.txt122
-rw-r--r--src/corelib/global/qglobal.cpp72
-rw-r--r--src/corelib/global/qglobal.h14
-rw-r--r--src/corelib/global/qnamespace.h6
-rw-r--r--src/corelib/io/qdiriterator.cpp38
-rw-r--r--src/corelib/io/qfile.cpp22
-rw-r--r--src/corelib/io/qfilesystemwatcher_inotify.cpp2
-rw-r--r--src/corelib/io/qprocess.cpp34
-rw-r--r--src/corelib/io/qprocess_unix.cpp8
-rw-r--r--src/corelib/io/qsettings.cpp4
-rw-r--r--src/corelib/io/qtemporaryfile.cpp266
-rw-r--r--src/corelib/io/qtextstream.cpp2
-rw-r--r--src/corelib/kernel/qcoreapplication.cpp8
-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/qmetaobject.cpp18
-rw-r--r--src/corelib/kernel/qmetatype.cpp2
-rw-r--r--src/corelib/kernel/qtranslator.cpp5
-rw-r--r--src/corelib/thread/qmutexpool.cpp15
-rw-r--r--src/corelib/thread/qmutexpool_p.h5
-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.cpp4
-rw-r--r--src/corelib/tools/qlinkedlist.cpp4
-rw-r--r--src/corelib/tools/qlistdata.cpp4
-rw-r--r--src/corelib/tools/qlocale.cpp9
-rw-r--r--src/corelib/tools/qsharedpointer.cpp18
-rw-r--r--src/corelib/tools/qstring.cpp37
-rw-r--r--src/corelib/tools/qvector.h2
-rw-r--r--src/dbus/qdbusintegrator.cpp10
-rw-r--r--src/dbus/qdbuspendingreply.h4
-rw-r--r--src/dbus/qdbusthreaddebug_p.h7
-rw-r--r--src/gui/accessible/qaccessible_mac.mm122
-rw-r--r--src/gui/accessible/qaccessiblewidget.cpp13
-rw-r--r--src/gui/dialogs/qcolordialog.cpp8
-rw-r--r--src/gui/dialogs/qfiledialog.cpp71
-rw-r--r--src/gui/dialogs/qfiledialog_mac.mm2
-rw-r--r--src/gui/dialogs/qfiledialog_p.h39
-rw-r--r--src/gui/dialogs/qfileinfogatherer.cpp20
-rw-r--r--src/gui/dialogs/qfileinfogatherer_p.h1
-rw-r--r--src/gui/dialogs/qfilesystemmodel.cpp23
-rw-r--r--src/gui/dialogs/qfilesystemmodel.h2
-rw-r--r--src/gui/dialogs/qfilesystemmodel_p.h24
-rw-r--r--src/gui/dialogs/qfontdialog_mac.mm8
-rw-r--r--src/gui/dialogs/qinputdialog.cpp181
-rw-r--r--src/gui/dialogs/qmessagebox.cpp84
-rw-r--r--src/gui/dialogs/qprintdialog_unix.cpp4
-rw-r--r--src/gui/dialogs/qsidebar.cpp25
-rw-r--r--src/gui/dialogs/qsidebar_p.h13
-rw-r--r--src/gui/embedded/qscreentransformed_qws.cpp4
-rw-r--r--src/gui/graphicsview/qgraphicsitem.cpp561
-rw-r--r--src/gui/graphicsview/qgraphicsitem_p.h61
-rw-r--r--src/gui/graphicsview/qgraphicslayoutitem.cpp45
-rw-r--r--src/gui/graphicsview/qgraphicsproxywidget.cpp8
-rw-r--r--src/gui/graphicsview/qgraphicsscene.cpp394
-rw-r--r--src/gui/graphicsview/qgraphicsscene_p.h4
-rw-r--r--src/gui/graphicsview/qgraphicsview.cpp274
-rw-r--r--src/gui/graphicsview/qgraphicsview_p.h7
-rw-r--r--src/gui/graphicsview/qgraphicswidget.cpp60
-rw-r--r--src/gui/graphicsview/qgraphicswidget_p.cpp2
-rw-r--r--src/gui/graphicsview/qgraphicswidget_p.h4
-rw-r--r--src/gui/image/qimage.cpp26
-rw-r--r--src/gui/image/qnativeimage.cpp4
-rw-r--r--src/gui/image/qpaintengine_pic.cpp21
-rw-r--r--src/gui/image/qpaintengine_pic_p.h2
-rw-r--r--src/gui/image/qpicture.cpp16
-rw-r--r--src/gui/image/qpicture_p.h1
-rw-r--r--src/gui/image/qpixmap.cpp18
-rw-r--r--src/gui/image/qpixmap_mac.cpp2
-rw-r--r--src/gui/image/qpixmap_x11.cpp8
-rw-r--r--src/gui/image/qpixmapcache.cpp6
-rw-r--r--src/gui/image/qpixmapdata_p.h1
-rw-r--r--src/gui/inputmethod/qwininputcontext_win.cpp10
-rw-r--r--src/gui/inputmethod/qximinputcontext_p.h1
-rw-r--r--src/gui/inputmethod/qximinputcontext_x11.cpp13
-rw-r--r--src/gui/itemviews/qabstractitemview.cpp3
-rw-r--r--src/gui/itemviews/qheaderview.cpp31
-rw-r--r--src/gui/itemviews/qheaderview_p.h3
-rw-r--r--src/gui/itemviews/qsortfilterproxymodel.cpp25
-rw-r--r--src/gui/itemviews/qtreeview.cpp2
-rw-r--r--src/gui/kernel/qapplication.cpp1908
-rw-r--r--src/gui/kernel/qapplication_x11.cpp58
-rw-r--r--src/gui/kernel/qcocoaapplication_mac.mm22
-rw-r--r--src/gui/kernel/qcocoaapplicationdelegate_mac.mm46
-rw-r--r--src/gui/kernel/qcocoaapplicationdelegate_mac_p.h1
-rw-r--r--src/gui/kernel/qcocoamenuloader_mac.mm22
-rw-r--r--src/gui/kernel/qcocoapanel_mac.mm107
-rw-r--r--src/gui/kernel/qcocoaview_mac.mm136
-rw-r--r--src/gui/kernel/qcocoawindow_mac.mm49
-rw-r--r--src/gui/kernel/qcocoawindowdelegate_mac.mm22
-rw-r--r--src/gui/kernel/qcursor.h2
-rw-r--r--src/gui/kernel/qcursor_mac.mm16
-rw-r--r--src/gui/kernel/qevent.cpp2
-rw-r--r--src/gui/kernel/qmacdefines_mac.h2
-rw-r--r--src/gui/kernel/qt_cocoa_helpers_mac.mm17
-rw-r--r--src/gui/kernel/qt_cocoa_helpers_mac_p.h1
-rw-r--r--src/gui/kernel/qt_mac.cpp47
-rw-r--r--src/gui/kernel/qt_mac_p.h3
-rw-r--r--src/gui/kernel/qwidget.cpp111
-rw-r--r--src/gui/kernel/qwidget_mac.mm149
-rw-r--r--src/gui/kernel/qwidget_p.h3
-rw-r--r--src/gui/kernel/qwidget_x11.cpp7
-rw-r--r--src/gui/kernel/qx11embed_x11.cpp7
-rw-r--r--src/gui/painting/qblendfunctions.cpp159
-rw-r--r--src/gui/painting/qdrawhelper.cpp92
-rw-r--r--src/gui/painting/qmemrotate.cpp1
-rw-r--r--src/gui/painting/qmemrotate_p.h1
-rw-r--r--src/gui/painting/qpaintengine_alpha.cpp12
-rw-r--r--src/gui/painting/qpaintengine_alpha_p.h1
-rw-r--r--src/gui/painting/qpaintengine_raster.cpp152
-rw-r--r--src/gui/painting/qpaintengine_raster_p.h2
-rw-r--r--src/gui/painting/qpaintengine_x11.cpp19
-rw-r--r--src/gui/painting/qpainter.cpp25
-rw-r--r--src/gui/painting/qpainterpath.cpp23
-rw-r--r--src/gui/painting/qpainterpath.h2
-rw-r--r--src/gui/painting/qpainterpath_p.h11
-rw-r--r--src/gui/painting/qpdf.cpp5
-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.cpp4
-rw-r--r--src/gui/painting/qprinter.cpp6
-rw-r--r--src/gui/painting/qregion.cpp24
-rw-r--r--src/gui/painting/qtransform.cpp93
-rw-r--r--src/gui/painting/qtransform.h8
-rw-r--r--src/gui/painting/qwindowsurface.cpp7
-rw-r--r--src/gui/styles/gtksymbols.cpp67
-rw-r--r--src/gui/styles/gtksymbols_p.h11
-rw-r--r--src/gui/styles/qcommonstyle.cpp73
-rw-r--r--src/gui/styles/qgtkstyle.cpp135
-rw-r--r--src/gui/styles/qmacstyle_mac.mm19
-rw-r--r--src/gui/styles/qstylesheetstyle.cpp43
-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/qfontdatabase_win.cpp12
-rw-r--r--src/gui/text/qfontengine_ft.cpp2
-rw-r--r--src/gui/text/qfontengine_mac.mm31
-rw-r--r--src/gui/text/qfontengine_p.h2
-rw-r--r--src/gui/text/qtextdocument.h1
-rw-r--r--src/gui/text/qtextdocument_p.cpp1
-rw-r--r--src/gui/text/qtextlist.cpp7
-rw-r--r--src/gui/text/qtextobject.cpp8
-rw-r--r--src/gui/text/qtextobject_p.h15
-rw-r--r--src/gui/text/qtexttable.cpp2
-rw-r--r--src/gui/text/qtexttable_p.h2
-rw-r--r--src/gui/util/qcompleter.cpp11
-rw-r--r--src/gui/util/qdesktopservices.cpp5
-rw-r--r--src/gui/widgets/qabstractbutton.cpp9
-rw-r--r--src/gui/widgets/qabstractbutton.h3
-rw-r--r--src/gui/widgets/qcocoamenu_mac.mm45
-rw-r--r--src/gui/widgets/qcombobox.cpp26
-rw-r--r--src/gui/widgets/qcombobox_p.h2
-rw-r--r--src/gui/widgets/qdialogbuttonbox.cpp3
-rw-r--r--src/gui/widgets/qdockarealayout.cpp2
-rw-r--r--src/gui/widgets/qdockwidget.cpp12
-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.cpp2
-rw-r--r--src/gui/widgets/qmainwindowlayout.cpp3
-rw-r--r--src/gui/widgets/qmainwindowlayout_mac.mm44
-rw-r--r--src/gui/widgets/qmenu.cpp4
-rw-r--r--src/gui/widgets/qtabbar.cpp96
-rw-r--r--src/gui/widgets/qtabbar_p.h33
-rw-r--r--src/gui/widgets/qtextedit.cpp8
-rw-r--r--src/gui/widgets/qtoolbar.cpp11
-rw-r--r--src/network/access/access.pri6
-rw-r--r--src/network/access/qhttp.cpp6
-rw-r--r--src/network/access/qhttpnetworkconnection.cpp1127
-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.h111
-rw-r--r--src/network/access/qhttpnetworkreply.cpp663
-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.cpp36
-rw-r--r--src/network/access/qnetworkcookie.cpp466
-rw-r--r--src/network/access/qnetworkdiskcache.cpp3
-rw-r--r--src/network/access/qnetworkreplyimpl.cpp44
-rw-r--r--src/network/kernel/qauthenticator.cpp2
-rw-r--r--src/network/kernel/qhostaddress.cpp2
-rw-r--r--src/network/kernel/qnetworkinterface_win.cpp6
-rw-r--r--src/network/socket/qabstractsocket.cpp4
-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.cpp39
-rw-r--r--src/opengl/opengl.pro10
-rw-r--r--src/opengl/qgl.cpp8
-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.mm6
-rw-r--r--src/opengl/qglpixelbuffer_win.cpp2
-rw-r--r--src/opengl/qpaintengine_opengl.cpp57
-rw-r--r--src/opengl/qwindowsurface_gl.cpp6
-rw-r--r--src/plugins/gfxdrivers/directfb/directfb.pro6
-rw-r--r--src/plugins/gfxdrivers/directfb/qdirectfbkeyboard.cpp130
-rw-r--r--src/plugins/gfxdrivers/directfb/qdirectfbpaintdevice.cpp71
-rw-r--r--src/plugins/gfxdrivers/directfb/qdirectfbpaintdevice.h31
-rw-r--r--src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp622
-rw-r--r--src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.h1
-rw-r--r--src/plugins/gfxdrivers/directfb/qdirectfbpixmap.cpp400
-rw-r--r--src/plugins/gfxdrivers/directfb/qdirectfbpixmap.h7
-rw-r--r--src/plugins/gfxdrivers/directfb/qdirectfbscreen.cpp485
-rw-r--r--src/plugins/gfxdrivers/directfb/qdirectfbscreen.h52
-rw-r--r--src/plugins/gfxdrivers/directfb/qdirectfbsurface.cpp123
-rw-r--r--src/plugins/gfxdrivers/directfb/qdirectfbsurface.h13
-rw-r--r--src/plugins/gfxdrivers/powervr/README3
-rw-r--r--src/plugins/gfxdrivers/powervr/pvreglscreen/pvreglscreen.cpp2
-rw-r--r--src/plugins/iconengines/svgiconengine/qsvgiconengine.cpp12
-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/text/q3richtext.cpp3
-rw-r--r--src/script/qscriptengine.cpp3
-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.cpp16
-rw-r--r--src/sql/drivers/mysql/qsql_mysql.cpp19
-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.cpp136
-rw-r--r--src/sql/drivers/odbc/qsql_odbc.h4
-rw-r--r--src/sql/drivers/psql/qsql_psql.cpp38
-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/qsqldriver.cpp140
-rw-r--r--src/sql/kernel/qsqldriver.h6
-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/qsvggenerator.cpp29
-rw-r--r--src/svg/qsvghandler.cpp18
-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--tests/arthur/common/paintcommands.cpp19
-rw-r--r--tests/arthur/common/qengines.cpp4
-rw-r--r--tests/arthur/data/qps/primitives.qps19
-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/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/q3accel/tst_q3accel.cpp86
-rw-r--r--tests/auto/q3cstring/tst_q3cstring.cpp86
-rw-r--r--tests/auto/q3header/tst_q3header.cpp4
-rw-r--r--tests/auto/q3ptrlist/tst_q3ptrlist.cpp13
-rw-r--r--tests/auto/q3sqlcursor/tst_q3sqlcursor.cpp20
-rw-r--r--tests/auto/q3sqlselectcursor/tst_q3sqlselectcursor.cpp12
-rw-r--r--tests/auto/q3table/tst_q3table.cpp1
-rw-r--r--tests/auto/q3textedit/tst_q3textedit.cpp2
-rw-r--r--tests/auto/q3textstream/tst_q3textstream.cpp10
-rw-r--r--tests/auto/q3timeedit/tst_q3timeedit.cpp4
-rw-r--r--tests/auto/q3valuelist/tst_q3valuelist.cpp6
-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/qcheckbox/tst_qcheckbox.cpp6
-rw-r--r--tests/auto/qcolordialog/tst_qcolordialog.cpp2
-rw-r--r--tests/auto/qcombobox/tst_qcombobox.cpp84
-rw-r--r--tests/auto/qcommandlinkbutton/tst_qcommandlinkbutton.cpp4
-rw-r--r--tests/auto/qcompleter/tst_qcompleter.cpp91
-rw-r--r--tests/auto/qcssparser/tst_cssparser.cpp10
-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/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.cpp179
-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/qgraphicsitem/tst_qgraphicsitem.cpp236
-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.cpp31
-rw-r--r--tests/auto/qgraphicsview/tst_qgraphicsview.cpp66
-rw-r--r--tests/auto/qgraphicswidget/tst_qgraphicswidget.cpp64
-rw-r--r--tests/auto/qhash/tst_qhash.cpp23
-rw-r--r--tests/auto/qheaderview/tst_qheaderview.cpp24
-rw-r--r--tests/auto/qhttp/tst_qhttp.cpp2
-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.cpp5
-rw-r--r--tests/auto/qimagereader/tst_qimagereader.cpp27
-rw-r--r--tests/auto/qiodevice/tst_qiodevice.cpp6
-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/qitemview/tst_qitemview.cpp20
-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.cpp12
-rw-r--r--tests/auto/qline/tst_qline.cpp8
-rw-r--r--tests/auto/qlineedit/tst_qlineedit.cpp4
-rw-r--r--tests/auto/qlocale/tst_qlocale.cpp11
-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.cpp305
-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.cpp6
-rw-r--r--tests/auto/qnetworkcookie/tst_qnetworkcookie.cpp295
-rw-r--r--tests/auto/qnetworkinterface/tst_qnetworkinterface.cpp6
-rw-r--r--tests/auto/qnetworkreply/tst_qnetworkreply.cpp4
-rw-r--r--tests/auto/qobject/tst_qobject.cpp6
-rw-r--r--tests/auto/qpainter/tst_qpainter.cpp115
-rw-r--r--tests/auto/qpainterpath/tst_qpainterpath.cpp5
-rw-r--r--tests/auto/qpicture/tst_qpicture.cpp2
-rw-r--r--tests/auto/qpixmap/tst_qpixmap.cpp16
-rw-r--r--tests/auto/qprinter/tst_qprinter.cpp20
-rw-r--r--tests/auto/qprocess/tst_qprocess.cpp28
-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/qscriptengine/tst_qscriptengine.cpp28
-rw-r--r--tests/auto/qset/tst_qset.cpp8
-rw-r--r--tests/auto/qsettings/tst_qsettings.cpp14
-rw-r--r--tests/auto/qsidebar/tst_qsidebar.cpp26
-rw-r--r--tests/auto/qsizef/tst_qsizef.cpp23
-rw-r--r--tests/auto/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp251
-rw-r--r--tests/auto/qsqldatabase/tst_databases.h59
-rw-r--r--tests/auto/qsqldatabase/tst_qsqldatabase.cpp223
-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.cpp129
-rw-r--r--tests/auto/qsqlquerymodel/tst_qsqlquerymodel.cpp12
-rw-r--r--tests/auto/qsqlrelationaltablemodel/tst_qsqlrelationaltablemodel.cpp455
-rw-r--r--tests/auto/qsqltablemodel/tst_qsqltablemodel.cpp174
-rw-r--r--tests/auto/qsqlthread/tst_qsqlthread.cpp12
-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.cpp4
-rw-r--r--tests/auto/qstylesheetstyle/tst_qstylesheetstyle.cpp23
-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/qtemporaryfile/tst_qtemporaryfile.cpp31
-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/qtextobject/tst_qtextobject.cpp19
-rw-r--r--tests/auto/qtextscriptengine/tst_qtextscriptengine.cpp2
-rw-r--r--tests/auto/qtextstream/tst_qtextstream.cpp8
-rw-r--r--tests/auto/qthread/tst_qthread.cpp5
-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/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.cpp18
-rw-r--r--tests/auto/qwidget/tst_qwidget.cpp37
-rw-r--r--tests/auto/qwmatrix/tst_qwmatrix.cpp17
-rw-r--r--tests/auto/qwritelocker/tst_qwritelocker.cpp4
-rw-r--r--tests/auto/rcc/tst_rcc.cpp15
-rw-r--r--tests/auto/selftests/alive/alive.pro1
-rw-r--r--tests/auto/selftests/assert/assert.pro1
-rw-r--r--tests/auto/selftests/benchlibcallgrind/benchlibcallgrind.pro1
-rw-r--r--tests/auto/selftests/benchlibeventcounter/benchlibeventcounter.pro1
-rw-r--r--tests/auto/selftests/benchliboptions/benchliboptions.pro1
-rw-r--r--tests/auto/selftests/benchlibtickcounter/benchlibtickcounter.pro1
-rw-r--r--tests/auto/selftests/benchlibwalltime/benchlibwalltime.pro1
-rw-r--r--tests/auto/selftests/cmptest/cmptest.pro1
-rw-r--r--tests/auto/selftests/commandlinedata/commandlinedata.pro1
-rw-r--r--tests/auto/selftests/crashes/crashes.pro1
-rw-r--r--tests/auto/selftests/datatable/datatable.pro1
-rw-r--r--tests/auto/selftests/datetime/datetime.pro1
-rw-r--r--tests/auto/selftests/differentexec/differentexec.pro1
-rw-r--r--tests/auto/selftests/exception/exception.pro1
-rw-r--r--tests/auto/selftests/expectfail/expectfail.pro1
-rw-r--r--tests/auto/selftests/failinit/failinit.pro1
-rw-r--r--tests/auto/selftests/failinitdata/failinitdata.pro1
-rw-r--r--tests/auto/selftests/fetchbogus/fetchbogus.pro1
-rw-r--r--tests/auto/selftests/globaldata/globaldata.pro1
-rw-r--r--tests/auto/selftests/maxwarnings/maxwarnings.pro1
-rw-r--r--tests/auto/selftests/multiexec/multiexec.pro1
-rw-r--r--tests/auto/selftests/qexecstringlist/qexecstringlist.pro1
-rw-r--r--tests/auto/selftests/singleskip/singleskip.pro1
-rw-r--r--tests/auto/selftests/skip/skip.pro1
-rw-r--r--tests/auto/selftests/skipglobal/skipglobal.pro1
-rw-r--r--tests/auto/selftests/skipinit/skipinit.pro1
-rw-r--r--tests/auto/selftests/skipinitdata/skipinitdata.pro1
-rw-r--r--tests/auto/selftests/sleep/sleep.pro1
-rw-r--r--tests/auto/selftests/strcmp/strcmp.pro1
-rw-r--r--tests/auto/selftests/subtest/subtest.pro1
-rw-r--r--tests/auto/selftests/tst_selftests.cpp4
-rwxr-xr-xtests/auto/selftests/updateBaselines.sh34
-rw-r--r--tests/auto/selftests/waitwithoutgui/waitwithoutgui.pro1
-rw-r--r--tests/auto/selftests/warnings/warnings.pro1
-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/lib/qhelpsearchindexreader_clucene.cpp114
-rw-r--r--tools/assistant/lib/qhelpsearchindexreader_clucene_p.h15
-rw-r--r--tools/assistant/lib/qhelpsearchindexwriter_clucene.cpp408
-rw-r--r--tools/assistant/tools/assistant/assistant.qchbin366592 -> 368640 bytes
-rw-r--r--tools/assistant/tools/assistant/centralwidget.cpp4
-rw-r--r--tools/assistant/tools/assistant/contentwindow.cpp60
-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.cpp95
-rw-r--r--tools/assistant/tools/assistant/helpviewer.h5
-rw-r--r--tools/assistant/tools/assistant/indexwindow.cpp65
-rw-r--r--tools/assistant/tools/assistant/indexwindow.h2
-rw-r--r--tools/assistant/tools/assistant/mainwindow.cpp340
-rw-r--r--tools/assistant/tools/assistant/mainwindow.h11
-rw-r--r--tools/assistant/tools/assistant/searchwidget.cpp62
-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.cpp19
-rw-r--r--tools/configure/tools.cpp83
-rw-r--r--tools/configure/tools.h41
-rw-r--r--tools/designer/src/components/propertyeditor/designerpropertymanager.cpp2
-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/newactiondialog.cpp4
-rw-r--r--tools/designer/src/lib/shared/newactiondialog_p.h2
-rw-r--r--tools/designer/src/lib/shared/plugindialog_p.h11
-rw-r--r--tools/designer/src/lib/shared/qdesigner_utils.cpp2
-rw-r--r--tools/designer/src/lib/shared/textpropertyeditor.cpp1
-rw-r--r--tools/designer/src/lib/uilib/resourcebuilder.cpp16
-rw-r--r--tools/designer/src/uitools/quiloader.cpp4
-rw-r--r--tools/designer/translations/translations.pro1
-rw-r--r--tools/linguist/lconvert/main.cpp2
-rw-r--r--tools/linguist/linguist/formpreviewview.cpp2
-rw-r--r--tools/linguist/linguist/linguist.pro1
-rw-r--r--tools/linguist/linguist/mainwindow.cpp28
-rw-r--r--tools/linguist/linguist/messageeditor.cpp11
-rw-r--r--tools/linguist/linguist/messagemodel.cpp22
-rw-r--r--tools/linguist/linguist/phrase.cpp2
-rw-r--r--tools/linguist/linguist/phraseview.cpp2
-rw-r--r--tools/linguist/linguist/translationsettingsdialog.h2
-rw-r--r--tools/linguist/lrelease/main.cpp15
-rw-r--r--tools/linguist/lupdate/main.cpp3
-rw-r--r--tools/linguist/shared/cpp.cpp21
-rw-r--r--tools/linguist/shared/po.cpp2
-rw-r--r--tools/linguist/shared/profileevaluator.cpp34
-rw-r--r--tools/linguist/shared/qm.cpp300
-rw-r--r--tools/linguist/shared/qph.cpp43
-rw-r--r--tools/linguist/shared/qscript.cpp2
-rw-r--r--tools/linguist/shared/qscript.g2
-rw-r--r--tools/linguist/shared/translator.cpp69
-rw-r--r--tools/linguist/shared/translator.h8
-rw-r--r--tools/linguist/shared/translatormessage.cpp4
-rw-r--r--tools/linguist/shared/translatormessage.h31
-rw-r--r--tools/linguist/shared/translatortools.cpp4
-rw-r--r--tools/linguist/shared/ts.cpp204
-rw-r--r--tools/linguist/shared/ui.cpp28
-rw-r--r--tools/macdeployqt/macdeployqt/main.cpp2
-rw-r--r--tools/qdbus/qdbusviewer/qdbusviewer.cpp17
-rw-r--r--tools/qdoc3/qdoc3.pro7
-rw-r--r--tools/qdoc3/test/assistant.qdocconf4
-rw-r--r--tools/qdoc3/test/carbide-eclipse-integration.qdocconf6
-rw-r--r--tools/qdoc3/test/classic.css8
-rw-r--r--tools/qdoc3/test/designer.qdocconf4
-rw-r--r--tools/qdoc3/test/jambi.qdocconf2
-rw-r--r--tools/qdoc3/test/linguist.qdocconf4
-rw-r--r--tools/qdoc3/test/macros.qdocconf2
-rw-r--r--tools/qdoc3/test/qmake.qdocconf4
-rw-r--r--tools/qdoc3/test/qt-api-only.qdocconf2
-rw-r--r--tools/qdoc3/test/qt-build-docs.qdocconf21
-rw-r--r--tools/qdoc3/test/qt-html-templates.qdocconf3
-rw-r--r--tools/qdoc3/test/qt-inc.qdocconf5
-rw-r--r--tools/qdoc3/test/qt.qdocconf15
-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.ts226
-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.ts571
-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.ts147
-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.ts575
-rw-r--r--translations/qt_es.ts564
-rw-r--r--translations/qt_fr.ts579
-rw-r--r--translations/qt_help_de.ts28
-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.ts7966
-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/qlalr/doc/qlalr.qdocconf2
-rwxr-xr-xutil/scripts/make_qfeatures_dot_h41
-rwxr-xr-xutil/webkit/mkdist-webkit37
774 files changed, 37970 insertions, 16671 deletions
diff --git a/FAQ b/FAQ.txt
index c243e5c3cf..1d2266d5d5 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 8d0f85eba4..8d0f85eba4 100644
--- a/LGPL_EXCEPTION.TXT
+++ b/LGPL_EXCEPTION.txt
diff --git a/config.tests/unix/opengles1/opengles1.pro b/config.tests/unix/opengles1/opengles1.pro
index d800a5dcd2..ad8dd3160b 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 c9addf9d0c..415cdbb6ad 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 13f95a1b80..0dfae42f77 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 0000000000..8d25bf57c0
--- /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 0000000000..658161ed9d
--- /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 269d88cce9..b582d85f90 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
;;
--*)
@@ -2692,6 +2698,21 @@ if [ "$QT_CROSS_COMPILE" = "yes" ]; then
fi
fi
+# check -arch arguments for validity.
+if [ "$PLATFORM_MAC" = "yes" ]; then
+ 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 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}"
+fi
+
# find the default framework value
if [ "$PLATFORM_MAC" = "yes" ] && [ "$PLATFORM" != "macx-xlc" ]; then
if [ "$CFG_FRAMEWORK" = "auto" ]; then
@@ -3952,7 +3973,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
@@ -4715,6 +4736,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
@@ -6165,6 +6194,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
@@ -6181,6 +6213,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 82dc66cb1f..9bbf555361 100755
--- a/configure.exe
+++ b/configure.exe
Binary files differ
diff --git a/demos/embeddeddialogs/customproxy.cpp b/demos/embeddeddialogs/customproxy.cpp
index 56a0548ba8..dd8766f025 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 0a5fbaf3ed..d3244267fd 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 4cf73258ac..cfb31c471a 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 18343cbbf8..41bbfb384e 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 bfa2e3faae..a9e9b4ba15 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 df2d93ba76..96a3e80a77 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" />
@@ -137,6 +138,7 @@
<example filename="fontsampler" name="Font Sampler" />
<example filename="imagecomposition" name="Image Composition" />
<example filename="painterpaths" name="Painter Paths" />
+ <example filename="svggenerator" name="SVG Generator" />
<example filename="svgviewer" name="SVG Viewer" />
<example filename="transformations" name="Transformations" />
</category>
@@ -212,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 110be1cdf5..38b3a1cda6 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
new file mode 100644
index 0000000000..c9e689fd97
--- /dev/null
+++ b/dist/changes-4.5.1
@@ -0,0 +1,574 @@
+Qt 4.5.1 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
+ * 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
+----------------------
+
+
+****************************************************************************
+* 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.
+
+- 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 *
+****************************************************************************
+
+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 *
+****************************************************************************
+
+
+****************************************************************************
+* Tools *
+****************************************************************************
+
+- Build System
+
+- Assistant
+
+
+- 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
+
+ * [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.
+
+ - 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
+
+
+- qtconfig
+
+
+- qt3to4
+
+
+****************************************************************************
+* Plugins *
+****************************************************************************
+
+
+****************************************************************************
+* Important Behavior Changes *
+****************************************************************************
+
diff --git a/doc/doc.pri b/doc/doc.pri
index 6b77f88d45..a4c77fe260 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/activeqt.qdoc b/doc/src/activeqt.qdoc
index ea13e5916a..3919823c7e 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}.
\sa {QAxContainer Module}, {QAxServer Module}
*/
diff --git a/doc/src/deployment.qdoc b/doc/src/deployment.qdoc
index d2c7a9e14d..bcfa93df2b 100644
--- a/doc/src/deployment.qdoc
+++ b/doc/src/deployment.qdoc
@@ -89,7 +89,8 @@
of Qt, you get Qt as a shared library.
The disadvantage with the shared library approach is that you
- will get more files to deploy.
+ will get more files to deploy. For more information, see
+ \l{sharedlibrary.html}{Creating Shared Libraries}.
\section1 Deploying Qt's Libraries
@@ -110,13 +111,14 @@
\o \l {QtNetwork}
\o \l {QtOpenGL}
\o \l {QtScript}
- \o \l {QtSql}
+ \o \l {QtScriptTools}
\row
+ \o \l {QtSql}
\o \l {QtSvg}
\o \l {QtWebKit}
\o \l {QtXml}
- \o \l {QtXmlPatterns}
\row
+ \o \l {QtXmlPatterns}
\o \l {Phonon Module}{Phonon}
\o \l {Qt3Support}
\endtable
@@ -177,11 +179,13 @@
Please see \l{QtWebKit Module#License Information}{the QtWebKit module
documentation} for more information.
- \row \o Phonon \o Phonon
+ \row \o \l{Phonon Module}{Phonon} \o Phonon
\o Phonon relies on the native multimedia engines on different platforms.
Phonon itself is licensed under the GNU LGPL version 2. Please see
\l{Phonon Module#License Information}{the Phonon module documentation}
- for more information.
+ for more information on licensing and the
+ \l{Phonon Overview#Backends}{Phonon Overview} for details of the backends
+ in use on different platforms.
\endtable
\section1 Platform-Specific Notes
@@ -907,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
diff --git a/doc/src/designer-manual.qdoc b/doc/src/designer-manual.qdoc
index 9eb43b74d9..e10a5beb73 100644
--- a/doc/src/designer-manual.qdoc
+++ b/doc/src/designer-manual.qdoc
@@ -2443,6 +2443,10 @@ pixmap property in the property editor.
\target BuildingandInstallingthePlugin
\section1 Building and Installing the Plugin
+ \section2 A Simple Plugin
+
+ The \l{Custom Widget Plugin Example} demonstrates a simple \QD plugin.
+
The \c{.pro} file for a plugin must specify the headers and sources for
both the custom widget and the plugin interface. Typically, this file only
has to specify that the plugin's project is to be built as a library, but
@@ -2477,65 +2481,42 @@ pixmap property in the property editor.
See QCoreApplication::libraryPaths() for more information about customizing
paths for libraries and plugins with Qt applications.
-\omit
- \section1 Using Qt Script to Aid in Building Forms
-
- Starting with Qt 4.3, \c .ui files may contain
- \l{QtScript}{Qt Script} snippets that are executed by \l uic or QUiLoader
- when building forms.
+ \section2 Splitting up the Plugin
- The snippets are executed per widget. The snippet may modify properties
- or invoke slots on the widget.
+ In a real world scenario, you do not want to have dependencies of the
+ application making use of the custom widgets to the \QD headers and
+ libraries as introduced by the simple approach explained above.
- Special variables are used to access the widget:
+ There are two ways to resolve this:
- \table
- \header
- \o Name
- \o Value
- \row \o \c widget
- \o The widget being built.
- \row \o \c childWidgets
- \o An array containing the child widgets. This is useful
- for QDesignerContainerExtension subclasses.
- \endtable
+ \list
+ \i Create a \c{.pri} file that contains the headers sources and sources
+ of the custom widget:
- If scripts are present in an \c {uic}-generated form, the application
- must be configured with Qt Script support.
+ \code
+ INCLUDEPATH += $$PWD
+ HEADERS += $$PWD/analogclock.h
+ SOURCES += $$PWD/analogclock.cpp
+ \endcode
- \snippet doc/src/snippets/code/doc_src_designer-manual.qdoc 5
+ This file would then be included by the \c{.pro} file of the plugin and
+ the application:
- For security reasons, the execution of scripts is disabled
- by default in QUiLoader. You can enable it by
- calling the QUiLoader::setScriptingEnabled() method.
+ \code
+ include(customwidget.pri)
+ \endcode
- The resulting script snippet is concatenated from snippets occurring in
- several places:
+ Running \c{qmake -Wall} on the \c{.pro} files causes a warning to be
+ printed if an included \c{.pri} file cannot be found.
- \table
- \header
- \o Source
- \o Usage
- \row \o The \c codeTemplate() function of QDesignerCustomWidgetInterface
- \o Allows snippets to be run on a per-class basis; for example, to set up a
- container using the QDesignerContainerExtension.
- \row \o The \c script() method of QDesignerScriptExtension
- \o Allows snippets to be run on a per-widget basis; for example,
- to set up the internal state of a custom widget.
-
- Such an internal state might be, for example, the contents of
- a custom item view container widget, for which an editor
- is provided by an QDesignerTaskMenuExtension object.
-
- \row \o Snippets entered at run-time using the \gui{Change script...}
- option of the form's context menu
- \o Fast prototyping. To get an idea,
- drag a QLineEdit onto the form, enter the script
- \snippet doc/src/snippets/code/doc_src_designer-manual.qdoc 6
- and preview the form.
- \endtable
-\endomit
+ \i Create a standalone shared library containing the custom widgets only
+ as described in
+ \l{sharedlibrary.html}{Creating Shared Libraries}.
+ This library would then be used by the application as well as by the
+ \QD plugin. Care must be taken to ensure that the plugin can locate
+ the library at run-time.
+ \endlist
\section1 Related Examples
diff --git a/doc/src/diagrams/qtransform-representation.sk b/doc/src/diagrams/qtransform-representation.sk
new file mode 100644
index 0000000000..17dcbfe2a8
--- /dev/null
+++ b/doc/src/diagrams/qtransform-representation.sk
@@ -0,0 +1,103 @@
+##Sketch 1 2
+document()
+layout('A4',0)
+layer('Layer 1',1,1,0,0,(0,0,0))
+lp((0,0,1))
+lw(2)
+r(65,0,0,-65,190,760)
+lp((0,0,1))
+lw(2)
+r(65,0,0,-65,190,695)
+lp((0,0,1))
+lw(2)
+r(65,0,0,-65,190,630)
+lp((0,0,1))
+lw(2)
+r(65,0,0,-65,320,760)
+lp((0,0,1))
+lw(2)
+r(65,0,0,-65,320,695)
+lp((0,0,1))
+lw(2)
+r(65,0,0,-65,320,630)
+lp((0,0,1))
+lw(2)
+r(65,0,0,-65,255,760)
+lp((0,0,1))
+lw(2)
+r(65,0,0,-65,255,695)
+lp((0,0,1))
+lw(2)
+r(65,0,0,-65,255,630)
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+Fs(24)
+txt('m33',(329.16,589.968))
+G()
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+Fs(24)
+txt('dy',(274.828,577.768))
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+Fs(24)
+txt('m32',(264.16,602.768))
+G_()
+G()
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+Fs(24)
+txt('m31',(199.16,602.768))
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+Fs(24)
+txt('dx',(209.828,577.8))
+G_()
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+Fs(24)
+txt('m11',(199.16,719.968))
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+Fs(24)
+txt('m12',(264.16,719.968))
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+Fs(24)
+txt('m13',(329.16,719.968))
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+Fs(24)
+txt('m21',(199.16,654.968))
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+Fs(24)
+txt('m22',(264.16,654.968))
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+Fs(24)
+txt('m23',(329.16,654.968))
+guidelayer('Guide Lines',1,0,0,1,(0,0,1))
+grid((0,0,5,5),1,(0,0,1),'Grid')
diff --git a/doc/src/examples.qdoc b/doc/src/examples.qdoc
index 77c5591182..2d57389dac 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
@@ -234,6 +235,7 @@
\o \l{painting/fontsampler}{Font Sampler}
\o \l{painting/imagecomposition}{Image Composition}\raisedaster
\o \l{painting/painterpaths}{Painter Paths}\raisedaster
+ \o \l{painting/svggenerator}{SVG Generator}\raisedaster
\o \l{painting/svgviewer}{SVG Viewer}
\o \l{painting/transformations}{Transformations}\raisedaster
\endlist
@@ -309,6 +311,7 @@
\section1 Threads
\list
+ \o \l{threads/queuedcustomtype}{Queued Custom Type}\raisedaster
\o \l{threads/mandelbrot}{Mandelbrot}\raisedaster
\o \l{threads/semaphores}{Semaphores}\raisedaster
\o \l{threads/waitconditions}{Wait Conditions}\raisedaster
@@ -320,6 +323,8 @@
\o \l{tools/codecs}{Codecs}
\o \l{tools/completer}{Completer}\raisedaster
\o \l{tools/customcompleter}{Custom Completer}\raisedaster
+ \o \l{tools/customtype}{Custom Type}\raisedaster
+ \o \l{tools/customtypesending}{Custom Type Sending}\raisedaster
\o \l{tools/echoplugin}{Echo Plugin}\raisedaster
\o \l{tools/i18n}{I18N}
\o \l{tools/plugandpaint}{Plug & Paint}\raisedaster
@@ -344,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/collidingmice-example.qdoc b/doc/src/examples/collidingmice-example.qdoc
index 7ea2ca233e..657a20409c 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/extension.qdoc b/doc/src/examples/extension.qdoc
index 8a0ca3a20c..02e0698267 100644
--- a/doc/src/examples/extension.qdoc
+++ b/doc/src/examples/extension.qdoc
@@ -80,9 +80,9 @@
user type a word to search for, we need several \l
{QCheckBox}{QCheckBox}es to facilitate the search options, and we
need three \l {QPushButton}{QPushButton}s: the \gui Find button to
- start a search, the \gui More button to enable an advanced search,
- and the \gui Close button to exit the application. Finally, we
- need a QWidget representing the application's extension part.
+ start a search and the \gui More button to enable an advanced search.
+ Finally, we need a QWidget representing the application's extension
+ part.
\section1 FindDialog Class Implementation
@@ -128,8 +128,7 @@
the connection makes sure that the extension widget is shown
depending on the state of \gui More button.
- We also connect the \gui Close button to the QWidget::close()
- slot, and we put the checkboxes associated with the advanced
+ We also put the check boxes associated with the advanced
search options into a layout we install on the extension widget.
\snippet examples/dialogs/extension/finddialog.cpp 4
@@ -137,7 +136,7 @@
Before we create the main layout, we create several child layouts
for the widgets: First we allign the QLabel ans its buddy, the
QLineEdit, using a QHBoxLayout. Then we vertically allign the
- QLabel and QLineEdit with the checkboxes associated with the
+ QLabel and QLineEdit with the check boxes associated with the
simple search, using a QVBoxLayout. We also create a QVBoxLayout
for the buttons. In the end we lay out the two latter layouts and
the extension widget using a QGridLayout.
diff --git a/doc/src/examples/fancybrowser.qdoc b/doc/src/examples/fancybrowser.qdoc
new file mode 100644
index 0000000000..9001c20ff2
--- /dev/null
+++ b/doc/src/examples/fancybrowser.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/fancybrowser
+ \title Fancy Browser Example
+
+ The Fancy Browser example shows how to use jQuery with QtWebKit to
+ make a web browser with some special effects and content manipulation.
+
+ \image fancybrowser-example.png
+
+*/
diff --git a/doc/src/examples/googlechat.qdoc b/doc/src/examples/googlechat.qdoc
new file mode 100644
index 0000000000..f2d61cf325
--- /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 0000000000..a9b09f9bfc
--- /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/qxmlstreambookmarks.qdoc b/doc/src/examples/qxmlstreambookmarks.qdoc
index 70590434d2..fb3a1c1b5e 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/svggenerator.qdoc b/doc/src/examples/svggenerator.qdoc
new file mode 100644
index 0000000000..32bb89a4b7
--- /dev/null
+++ b/doc/src/examples/svggenerator.qdoc
@@ -0,0 +1,136 @@
+/****************************************************************************
+**
+** 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 painting/svggenerator
+ \title SVG Generator Example
+
+ The SVG Generator example shows how to add SVG file export to applications.
+
+ \image svggenerator-example.png
+
+ Scalable Vector Graphics (SVG) is an XML-based language for describing
+ two-dimensional vector graphics. Qt provides classes for rendering and
+ generating SVG drawings. This example allows the user to create a simple
+ picture and save it to an SVG file.
+
+ The example consists of two classes: \c Window and \c DisplayWidget.
+
+ The \c Window class contains the application logic and constructs the user
+ interface from a Qt Designer \c{.ui} file as described in the
+ \l{Using a Designer .ui File in Your Application#The Multiple Inheritance Approach}{Qt Designer manual}.
+ It also contains the code to write an SVG file.
+
+ The \c DisplayWidget class performs all the work of painting a picture on
+ screen. Since we want the SVG to resemble this picture as closely as
+ possible, we make this code available to the \c Window class so that it can
+ be used to generate SVG files.
+
+ \section1 The DisplayWidget Class
+
+ The \c DisplayWidget class displays a drawing consisting of a selection of
+ elements chosen by the user. These are defined using \c Shape and
+ \c Background enums that are included within the class definition:
+
+ \snippet examples/painting/svggenerator/displaywidget.h DisplayWidget class definition
+
+ Much of this class is used to configure the appearance of the drawing. The
+ \c paintEvent() and \c paint() functions are most relevant to the purpose
+ of this example, so we will describe these here and leave the reader to
+ look at the source code for the example to see how shapes and colors are
+ handled.
+
+ We reimplement the QWidget::paintEvent() function to display the drawing
+ on screen:
+
+ \snippet examples/painting/svggenerator/displaywidget.cpp paint event
+
+ Here, we only construct a QPainter object, begin painting on the device
+ and set a render hint for improved output quality before calling the
+ \c paint() function to perform the painting itself. When this returns,
+ we close the painter and return.
+
+ The \c paint() function is designed to be used for different painting
+ tasks. In this example, we use it to draw on a \c DisplayWidget instance
+ and on a QSvgGenerator object. We show how the painting is performed to
+ demonstrate that there is nothing device-specific about the process:
+
+ \snippet examples/painting/svggenerator/displaywidget.cpp paint function
+
+ \section1 The Window Class
+
+ The \c Window class represents the example's window, containing the user
+ interface, which has been created using Qt Designer:
+
+ \snippet examples/painting/svggenerator/window.h Window class definition
+
+ As with the \c DisplayWidget class, we concentrate on the parts of the code
+ which are concerned with painting and SVG generation. In the \c Window
+ class, the \c saveSvg() function is called whenever the \gui{Save As...}
+ button is clicked; this connection was defined in the \c{window.ui} file
+ using Qt Designer.
+
+ The start of the \c saveSvg() function performs the task of showing a file
+ dialog so that the user can specify a SVG file to save the drawing to.
+
+ \snippet examples/painting/svggenerator/window.cpp save SVG
+
+ In the rest of the function, we set up the generator and configure it to
+ generate output with the appropriate dimensions and write to the
+ user-specified file. We paint on the QSvgGenerator object in the same way
+ that we paint on a widget, calling the \c DisplayWidget::paint() function
+ so that we use exactly the same code that we used to display the drawing.
+
+ The generation process itself begins with the call to the painter's
+ \l{QPainter::}{begin()} function and ends with call to its
+ \l{QPainter::}{end()} function. The QSvgGenerator paint device relies on
+ the explicit use of these functions to ensure that output is written to
+ the file.
+
+ \section1 Further Reading
+
+ The \l{SVG Viewer Example} shows how to display SVG drawings in an
+ application, and can be used to show the contents of SVG files created
+ by this example.
+
+ See the QtSvg module documentation for more information about SVG and Qt's
+ SVG classes.
+*/
diff --git a/doc/src/images/extension-example.png b/doc/src/images/extension-example.png
index dfaacc071d..18fab52825 100644
--- a/doc/src/images/extension-example.png
+++ b/doc/src/images/extension-example.png
Binary files differ
diff --git a/doc/src/images/extension_more.png b/doc/src/images/extension_more.png
index 2b06809787..407af27cab 100644
--- a/doc/src/images/extension_more.png
+++ b/doc/src/images/extension_more.png
Binary files differ
diff --git a/doc/src/images/fancybrowser-example.png b/doc/src/images/fancybrowser-example.png
new file mode 100644
index 0000000000..717ac9ddc4
--- /dev/null
+++ b/doc/src/images/fancybrowser-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 0000000000..0338445343
--- /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 0000000000..4ef072afb5
--- /dev/null
+++ b/doc/src/images/googlesuggest-example.png
Binary files differ
diff --git a/doc/src/images/qtransform-representation.png b/doc/src/images/qtransform-representation.png
index 2608872ad7..883d5dc487 100644
--- a/doc/src/images/qtransform-representation.png
+++ b/doc/src/images/qtransform-representation.png
Binary files differ
diff --git a/doc/src/images/svggenerator-example.png b/doc/src/images/svggenerator-example.png
new file mode 100644
index 0000000000..e7a8e53649
--- /dev/null
+++ b/doc/src/images/svggenerator-example.png
Binary files differ
diff --git a/doc/src/index.qdoc b/doc/src/index.qdoc
index 49dfafd0a0..4ead9e4241 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/installation.qdoc b/doc/src/installation.qdoc
index fb0314e165..85ea20c0ab 100644
--- a/doc/src/installation.qdoc
+++ b/doc/src/installation.qdoc
@@ -724,7 +724,7 @@ in the \l{Qt for Windows CE Requirements} document.
<td><tt>-xinerama</tt> or auto-detected</td><td>1.1.0</td>
</tr><tr id="DefaultColor">
<td> Xi </td><td> libXi </td><td> X11 Input Extensions</td>
- <td>auto-detected</td><td>1.3.0</td>
+ <td><tt>-xinput</tt> or auto-detected</td><td>1.3.0</td>
</tr><tr id="DefaultColor">
<td> Xt </td><td> libXt </td><td> Xt Intrinsics</td><td></td><td>0.99</td>
</tr><tr id="DefaultColor">
diff --git a/doc/src/licenses.qdoc b/doc/src/licenses.qdoc
index b42b882c62..1c3f6d2024 100644
--- a/doc/src/licenses.qdoc
+++ b/doc/src/licenses.qdoc
@@ -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/phonon-api.qdoc b/doc/src/phonon-api.qdoc
index 01f7c8a4b3..501b5a5a5d 100644
--- a/doc/src/phonon-api.qdoc
+++ b/doc/src/phonon-api.qdoc
@@ -2568,7 +2568,7 @@
details.
Phonon also provides EffectWidget, which lets the user modify the
- parameters of an effect an the fly, e.g., with comboboxes.
+ parameters of an effect an the fly; e.g., with combo boxes.
\sa {Phonon Module}, EffectWidget
*/
@@ -2656,7 +2656,7 @@
To find out what \l{Phonon::}{AudioOutputDevice}s are available
for AudioOutput, you can call
- BackendCapabilities::availableAudioDevices(). A default device is
+ BackendCapabilities::availableAudioOutputDevices(). A default device is
selected by the backend, but it is possible to set the device to
be used with setOutputDevice(). The outputDeviceChanged() signal
will be emitted if the device changes.
@@ -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/phonon.qdoc b/doc/src/phonon.qdoc
index e86ccf68ef..9470e61d82 100644
--- a/doc/src/phonon.qdoc
+++ b/doc/src/phonon.qdoc
@@ -49,7 +49,7 @@
\section1 Introduction
Qt uses the Phonon multimedia framework to provide functionality
- for playback of the most common multimedia formats.The media can
+ for playback of the most common multimedia formats. The media can
be read from files or streamed over a network, using a QURL to a
file.
@@ -566,7 +566,8 @@
framework, but rather use exchangeable backends to do the work.
See the \l{Phonon Module} page for general information about the
- framework.
+ framework and the \l{Phonon Overview} for an introductory tour of its
+ features.
*/
/*!
diff --git a/doc/src/platform-notes.qdoc b/doc/src/platform-notes.qdoc
index d5eee27c0b..c8046c4edf 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
@@ -493,7 +491,6 @@
\row
\row \o aCC series 3 \o \o \o \o \bold{X} \o \bold{X}
\row \o aCC series 6 \o \bold{X} \o \bold{X} \o \bold{X} \o \bold{X} \o \bold{X}
- \row \o MIPSpro 7.4.2m \o{5,1} \e{Unsupported - see the Unsupported Platforms table}
\row \o xlC 6 \o \o \o \o \bold{X} \o \bold{X}
\row \o \l{Known Issues in %VERSION%}{Intel CC 10 (see note)}
\o \bold{X} \o \bold{X} \o \bold{X} \o \bold{X} \o \bold{X}
diff --git a/doc/src/porting4-removedvirtual.qdocinc b/doc/src/porting4-removedvirtual.qdocinc
index 3eedad2ddc..1af4fa62ea 100644
--- a/doc/src/porting4-removedvirtual.qdocinc
+++ b/doc/src/porting4-removedvirtual.qdocinc
@@ -22,7 +22,7 @@
\row \o void QButton::drawButtonLabel(QPainter *) \o Use Q3Button instead or reimplement QButton::paintEvent().
\row \o void QButton::setAccel(const QKeySequence &) \o Setter.
\row \o void QButton::setAutoRepeat(bool) \o Setter.
-\row \o void QButton::setDown(bool) \o Setter.
+\row \o void QButton::setDown(bool) \o Use Q3Button instead or reimplement or port to the new QPushButton API.
\row \o void QButton::setPixmap(const QPixmap &) \o Setter.
\row \o void QButton::setState(ToggleState) \o Setter.
\row \o void QButton::setText(const QString &) \o Use the QAbstractButton::setText() setter function.
diff --git a/doc/src/qalgorithms.qdoc b/doc/src/qalgorithms.qdoc
index 459fb81da5..b33c250531 100644
--- a/doc/src/qalgorithms.qdoc
+++ b/doc/src/qalgorithms.qdoc
@@ -490,7 +490,10 @@ of \a value in the variable passed as a reference in argument \a n.
\overload
- This is the same as qLowerBound(\a{container}.begin(), \a{container}.end(), value);
+ For read-only iteration over containers, this function is broadly equivalent to
+ qLowerBound(\a{container}.begin(), \a{container}.end(), value). However, since it
+ returns a const iterator, you cannot use it to modify the container; for example,
+ to insert items.
*/
/*! \fn RandomAccessIterator qUpperBound(RandomAccessIterator begin, RandomAccessIterator end, const T &value)
diff --git a/doc/src/qdesktopwidget.qdoc b/doc/src/qdesktopwidget.qdoc
index 0361aaec4e..5a27fb4909 100644
--- a/doc/src/qdesktopwidget.qdoc
+++ b/doc/src/qdesktopwidget.qdoc
@@ -48,6 +48,9 @@
\ingroup environment
\mainclass
+ QApplication::desktop() function should be used to get an instance
+ of the QDesktopWidget.
+
Systems with more than one graphics card and monitor can manage the
physical screen space available either as multiple desktops, or as a
large virtual desktop, which usually has the size of the bounding
@@ -86,12 +89,14 @@
screens. The correct width and height values are obtained using
availableGeometry() or screenGeometry() for a particular screen.
- \sa QApplication, QX11Info::appRootWindow()
+ \sa QApplication, QApplication::desktop(), QX11Info::appRootWindow()
*/
/*!
\fn QDesktopWidget::QDesktopWidget()
+ \internal
+
Creates the desktop widget.
If the system supports a virtual desktop, this widget will have
@@ -104,6 +109,8 @@
/*!
\fn QDesktopWidget::~QDesktopWidget()
+ \internal
+
Destroys the desktop widget and frees any allocated resources.
*/
diff --git a/doc/src/qmake-manual.qdoc b/doc/src/qmake-manual.qdoc
index 2805d35d89..b2a7a34914 100644
--- a/doc/src/qmake-manual.qdoc
+++ b/doc/src/qmake-manual.qdoc
@@ -367,15 +367,20 @@
\row \o debug \o The project is to be built in debug mode.
\row \o debug_and_release \o The project is built in \e both debug and
release modes.
+ \row \o debug_and_release_target \o The project is built in \e both debug
+ and release modes. TARGET is built into \e both the debug and release directories.
\row \o build_all \o If \c debug_and_release is specified, the project is
built in both debug and release modes by default.
+ \row \o autogen_precompile_source \o Automatically generates a \c .cpp file that includes
+ the precompiled header file specified in the .pro file.
\row \o ordered \o When using the \c subdirs template, this option
specifies that the directories listed should be processed in the
order in which they are given.
\row \o warn_on \o The compiler should output as many warnings as possible.
This is ignored if \c warn_off is specified.
\row \o warn_off \o The compiler should output as few warnings as possible.
- \endtable
+ \row \o copy_dir_files \o Enables the install rule to also copy directories, not just files.
+ \endtable
The \c debug_and_release option is special in that it enables \e both debug and
release versions of a project to be built. In such a case, the Makefile that
@@ -3400,6 +3405,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 592af80398..674169e9a2 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.
@@ -508,11 +508,11 @@
\value DirectConnection When emitted, the signal is immediately delivered to the slot.
\value QueuedConnection When emitted, the signal is queued until the event loop is
able to deliver it to the slot.
- \value
- BlockingQueuedConnection Same as QueuedConnection, except that the current thread blocks
+ \value BlockingQueuedConnection
+ Same as QueuedConnection, except that the current thread blocks
until the slot has been delivered. This connection type should
only be used for receivers in a different thread. Note that misuse
- of this type can lead to dead locks in your application.
+ of this type can lead to deadlocks in your application.
\value AutoConnection If the signal is emitted from the thread
in which the receiving object lives, the
slot is invoked directly, as with
diff --git a/doc/src/qprintdialog.qdoc b/doc/src/qprintdialog.qdoc
index 6cac1c9d79..a4cd18b510 100644
--- a/doc/src/qprintdialog.qdoc
+++ b/doc/src/qprintdialog.qdoc
@@ -39,26 +39,34 @@
**
****************************************************************************/
+#ifdef QT3_SUPPORT
/*!
- \fn QPrinter *QPrintDialog::printer() const
+ \fn QPrinter *QPrintDialog::printer() const
- Returns a pointer to the printer this dialog configures, or 0 if
- this dialog does not operate on any printer.
+ Returns a pointer to the printer this dialog configures, or 0 if
+ this dialog does not operate on any printer.
+
+ This function is available for Unix platforms only.
*/
/*!
- \fn void QPrintDialog::setPrinter(QPrinter *printer, bool pickupSettings)
+ \fn void QPrintDialog::setPrinter(QPrinter *printer, bool pickupSettings)
+
+ Sets this dialog to configure printer \a printer, or no printer if \a printer
+ is null. If \a pickupSettings is true, the dialog reads most of
+ its settings from \a printer. If \a pickupSettings is false (the
+ default) the dialog keeps its old settings.
- Sets this dialog to configure printer \a printer, or no printer if \a printer
- is null. If \a pickupSettings is true, the dialog reads most of
- its settings from \a printer. If \a pickupSettings is false (the
- default) the dialog keeps its old settings.
+ This function is available for Unix platforms only.
*/
/*!
- \fn void QPrintDialog::addButton(QPushButton *button)
+ \fn void QPrintDialog::addButton(QPushButton *button)
+
+ Adds the \a button to the layout of the print dialog. The added
+ buttons are arranged from the left to the right below the
+ last groupbox of the printdialog.
- Adds the \a button to the layout of the print dialog. The added
- buttons are arranged from the left to the right below the
- last groupbox of the printdialog.
+ This function is available for Unix platforms only.
*/
+#endif
diff --git a/doc/src/qt4-intro.qdoc b/doc/src/qt4-intro.qdoc
index cd66c1026b..5d83ef2fdd 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 eedbd687ed..0000000000
--- 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/sharedlibrary.qdoc b/doc/src/sharedlibrary.qdoc
new file mode 100644
index 0000000000..3febb8f050
--- /dev/null
+++ b/doc/src/sharedlibrary.qdoc
@@ -0,0 +1,186 @@
+/****************************************************************************
+**
+** 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$
+**
+****************************************************************************/
+
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the Qt GUI Toolkit.
+** EDITIONS: FREE, PROFESSIONAL, ENTERPRISE
+**
+****************************************************************************/
+
+/*!
+ \group deployment
+ \page sharedlibrary.html
+ \ingroup buildsystem
+
+ \title Creating Shared Libraries
+ The following sections list certain things that should be taken into
+ account when creating shared libraries.
+
+ \section1 Using Symbols from Shared Libraries
+
+ Symbols - functions, variables or classes - contained in shared libraries
+ intended to be used by \e{clients}, such as applications or other
+ libraries, must be marked in a special way. These symbols are called
+ \e{public symbols} that are \e{exported} or made publicly visible.
+
+ The remaining symbols should not be visible from the outside. On most
+ platforms, compilers will hide them by default. On some platforms, a
+ special compiler option is required to hide these symbols.
+
+ When compiling a shared library, it must be marked for \e{export}. To use
+ the shared library from a client, some platforms may require a special
+ \e{import} declaration as well.
+
+ Depending on your target platform, Qt provides special macros that contain
+ the necessary definitions:
+ \list
+ \o \c{Q_DECL_EXPORT} must be added to the declarations of symbols used
+ when compiling a shared library.
+ \o \c{Q_DECL_IMPORT} must be added to the declarations of symbols used
+ when compiling a client that uses the shared library.
+ \endlist
+
+ Now, we need to ensure that the right macro is invoked -- whether we
+ compile a share library itself, or just the client using the shared
+ library.
+ Typically, this can be solved by adding a special header.
+
+ Let us assume we want to create a shared library called \e{mysharedlib}.
+ A special header for this library, \c{mysharedlib_global.h}, looks like
+ this:
+
+ \code
+ #include <QtCore/QtGlobal>
+
+ #if defined(MYSHAREDLIB_LIBRARY)
+ # define MYSHAREDLIB_EXPORT Q_DECL_EXPORT
+ #else
+ # define MYSHAREDLIB_EXPORT Q_DECL_IMPORT
+ #endif
+ \endcode
+
+ In the \c{.pro} file of the shared library, we add:
+
+ \code
+ DEFINES += MYSHAREDLIB_LIBRARY
+ \endcode
+
+ In each header of the library, we specify the following:
+
+ \code
+ #include "mysharedlib_global.h"
+
+ MYSHAREDLIB_EXPORT void foo();
+ class MYSHAREDLIB_EXPORT MyClass...
+ \endcode
+ This ensures that the right macro is seen by both library and clients. We
+ also use this technique in Qt's sources.
+
+
+ \section1 Header File Considerations
+
+ Typically, clients will include only the public header files of shared
+ libraries. These libraries might be installed in a different location, when
+ deployed. Therefore, it is important to exclude other internal header files
+ that were used when building the shared library.
+
+ For example, the library might provide a class that wraps a hardware device
+ and contains a handle to that device, provided by some 3rd-party library:
+
+ \code
+ #include <footronics/device.h>
+
+ class MyDevice {
+ private:
+ FOOTRONICS_DEVICE_HANDLE handle;
+ };
+ \endcode
+
+ A similar situation arises with forms created by Qt Designer when using
+ aggregation or multiple inheritance:
+
+ \code
+ #include "ui_widget.h"
+
+ class MyWidget : public QWidget {
+ private:
+ Ui::MyWidget m_ui;
+ };
+ \endcode
+
+ When deploying the library, there should be no dependency to the internal
+ headers \c{footronics/device.h} or \c{ui_widget.h}.
+
+ This can be avoided by making use of the \e{Pointer to implementation}
+ idiom described in various C++ programming books. For classes with
+ \e{value semantics}, consider using QSharedDataPointer.
+
+
+ \section1 Binary compatibility
+
+ For clients loading a shared library, to work correctly, the memory
+ layout of the classes being used must match exactly the memory layout of
+ the library version that was used to compile the client. In other words,
+ the library found by the client at runtime must be \e{binary compatible}
+ with the version used at compile time.
+
+ This is usually not a problem if the client is a self-contained software
+ package that ships all the libraries it needs.
+
+ However, if the client application relies on a shared library that belongs
+ to a different installation package or to the operating system, then we
+ need to think of a versioning scheme for shared libraries and decide at
+ which level \e{Binary compatibility} is to be maintained. For example, Qt
+ libraries of the same \e{major version number} are guaranteed to be binary
+ compatible.
+
+ Maintaining \e{Binary compatibility} places some restrictions on the changes
+ you can make to the classes. A good explanation can be found at
+ \l{http://techbase.kde.org/Policies/Binary_Compatibility_Issues_With_C++}
+ {KDE - Policies/Binary Compatibility Issues With C++}. These issues should
+ be considered right from the start of library design.
+ We recommend that the principle of \e{Information hiding} and the
+ \e{Pointer to implementation} technique be used wherever possible.
+*/
diff --git a/doc/src/snippets/alphachannel.cpp b/doc/src/snippets/alphachannel.cpp
index 7783271abd..ad0885a901 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 f048f7c3a6..2930317206 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_qtestlib.qdoc b/doc/src/snippets/code/doc_src_qtestlib.qdoc
index a4ef52ee45..a0e4944741 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_corelib_global_qglobal.cpp b/doc/src/snippets/code/src_corelib_global_qglobal.cpp
index 72663e970a..287181a3ad 100644
--- a/doc/src/snippets/code/src_corelib_global_qglobal.cpp
+++ b/doc/src/snippets/code/src_corelib_global_qglobal.cpp
@@ -456,3 +456,11 @@ class MyClass : public QObject
//! [45]
QWidget w = QWidget();
//! [45]
+
+//! [46]
+ // Instead of comparing with 0.0
+ qFuzzyCompare(0.0,1.0e-200); // This will return false
+ // Compare adding 1 to both values will fix the problem
+ qFuzzyCompare(1 + 0.0, 1 + 1.0e-200); // This will return true
+//! [46]
+
diff --git a/doc/src/snippets/code/src_corelib_kernel_qmetatype.cpp b/doc/src/snippets/code/src_corelib_kernel_qmetatype.cpp
index 355a23720f..783852bbb2 100644
--- a/doc/src/snippets/code/src_corelib_kernel_qmetatype.cpp
+++ b/doc/src/snippets/code/src_corelib_kernel_qmetatype.cpp
@@ -33,7 +33,7 @@ MyStruct s2 = var.value<MyStruct>();
//! [3]
int id = QMetaType::type("MyClass");
-if (id != -1) {
+if (id == 0) {
void *myClassPtr = QMetaType::construct(id);
...
QMetaType::destroy(id, myClassPtr);
diff --git a/doc/src/snippets/code/src_gui_util_qdesktopservices.cpp b/doc/src/snippets/code/src_gui_util_qdesktopservices.cpp
index a9c630bcc7..5001984802 100644
--- a/doc/src/snippets/code/src_gui_util_qdesktopservices.cpp
+++ b/doc/src/snippets/code/src_gui_util_qdesktopservices.cpp
@@ -11,7 +11,10 @@ public slots:
QDesktopServices::setUrlHandler("help", helpInstance, "showHelp");
//! [0]
-
//! [1]
mailto:user@foo.com?subject=Test&body=Just a test
//! [1]
+
+//! [2]
+QDesktopServices::openUrl(QUrl("file:///C:/Documents and Settings/All Users/Desktop", QUrl::TolerantMode));
+//! [2]
diff --git a/doc/src/snippets/code/src_qdbus_qdbusargument.cpp b/doc/src/snippets/code/src_qdbus_qdbusargument.cpp
index b98251054f..efd54ac1bb 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/tutorials/addressbook-sdk.qdoc b/doc/src/tutorials/addressbook-sdk.qdoc
deleted file mode 100644
index b6b257d55f..0000000000
--- 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/tutorials/widgets-tutorial.qdoc b/doc/src/tutorials/widgets-tutorial.qdoc
index ce977f3f73..ead44afb65 100644
--- a/doc/src/tutorials/widgets-tutorial.qdoc
+++ b/doc/src/tutorials/widgets-tutorial.qdoc
@@ -80,7 +80,7 @@
\raw HTML
<table align="left" width="100%">
- <tr><td>
+ <tr class="qt-code"><td>
\endraw
\snippet snippets/widgets-tutorial/toplevel/main.cpp create, resize and show
\raw HTML
@@ -98,7 +98,7 @@
\raw HTML
<table align="left" width="100%">
- <tr><td>
+ <tr class="qt-code"><td>
\endraw
\snippet snippets/widgets-tutorial/childwidget/main.cpp create, position and show
\raw HTML
@@ -123,7 +123,7 @@
\raw HTML
<table align="left" width="100%">
- <tr><td>
+ <tr class="qt-code"><td>
\endraw
\snippet snippets/widgets-tutorial/windowlayout/main.cpp create, lay out widgets and show
\raw HTML
@@ -157,7 +157,7 @@
\raw HTML
<table align="left" width="100%">
- <tr><td>
+ <tr class="qt-code"><td>
\endraw
\snippet snippets/widgets-tutorial/nestedlayouts/main.cpp create, lay out widgets and show
\raw HTML
@@ -171,23 +171,4 @@
As well as QHBoxLayout and QVBoxLayout, Qt also provides QGridLayout
and QFormLayout classes to help with more complex user interfaces.
-
-
-
- \omit
- In the simple example below, the widget is created on the stack and will
- automatically be deleted when the \c{main()} function exits.
-
- {{{#include <QtGui>
-
- int main(int argc, char *argv[])
- {
- QApplication app(argc, argv);
- QWidget window;
- window.resize(480, 360);
- window.show();
- return app.exec();
- }
- }}}
- \endomit
*/
diff --git a/examples/dialogs/standarddialogs/dialog.cpp b/examples/dialogs/standarddialogs/dialog.cpp
index 0fe1f7e3fd..1f7c5ef0d7 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 8892f2af57..da87e2267e 100644
--- a/examples/examples.pro
+++ b/examples/examples.pro
@@ -45,7 +45,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 4a44481b90..23c91b02df 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 1d10574631..bbdb4e311a 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 832ea53704..c08ce4a2f2 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 4018c25aed..eb021433e5 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/layouts/flowlayout/flowlayout.cpp b/examples/layouts/flowlayout/flowlayout.cpp
index d1e857d591..c4032d00e8 100644
--- a/examples/layouts/flowlayout/flowlayout.cpp
+++ b/examples/layouts/flowlayout/flowlayout.cpp
@@ -43,16 +43,16 @@
#include "flowlayout.h"
-FlowLayout::FlowLayout(QWidget *parent, int margin, int spacing)
- : QLayout(parent)
+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);
}
FlowLayout::~FlowLayout()
@@ -67,6 +67,24 @@ void FlowLayout::addItem(QLayoutItem *item)
itemList.append(item);
}
+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);
+ }
+}
+
int FlowLayout::count() const
{
return itemList.size();
@@ -125,20 +143,27 @@ QSize FlowLayout::minimumSize() const
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;
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);
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 +175,19 @@ 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;
+}
+
+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();
+ }
}
+
diff --git a/examples/layouts/flowlayout/flowlayout.h b/examples/layouts/flowlayout/flowlayout.h
index f864d8eeab..9940e55e7c 100644
--- a/examples/layouts/flowlayout/flowlayout.h
+++ b/examples/layouts/flowlayout/flowlayout.h
@@ -49,11 +49,13 @@
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,11 @@ 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;
};
#endif
diff --git a/examples/network/googlesuggest/googlesuggest.cpp b/examples/network/googlesuggest/googlesuggest.cpp
new file mode 100644
index 0000000000..285a01889a
--- /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/examples/network/googlesuggest/googlesuggest.h b/examples/network/googlesuggest/googlesuggest.h
new file mode 100644
index 0000000000..0267709ef3
--- /dev/null
+++ b/examples/network/googlesuggest/googlesuggest.h
@@ -0,0 +1,80 @@
+/****************************************************************************
+**
+** 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$
+**
+****************************************************************************/
+
+#ifndef GOOGLESUGGEST_H
+#define GOOGLESUGGEST_H
+
+#include <QObject>
+#include <QNetworkAccessManager>
+
+QT_BEGIN_NAMESPACE
+class QLineEdit;
+class QNetworkReply;
+class QTimer;
+class QTreeWidget;
+QT_END_NAMESPACE
+
+class GSuggestCompletion : public QObject
+{
+ Q_OBJECT
+
+public:
+ GSuggestCompletion(QLineEdit *parent = 0);
+ ~GSuggestCompletion();
+ bool eventFilter(QObject *obj, QEvent *ev);
+ void showCompletion(const QStringList &choices, const QStringList &hits);
+
+public slots:
+
+ void doneCompletion();
+ void preventSuggest();
+ void autoSuggest();
+ void handleNetworkData(QNetworkReply *networkReply);
+
+private:
+ QLineEdit *editor;
+ QTreeWidget *popup;
+ QTimer *timer;
+ QNetworkAccessManager networkManager;
+};
+
+#endif // GOOGLESUGGEST_H
+
diff --git a/examples/network/googlesuggest/googlesuggest.pro b/examples/network/googlesuggest/googlesuggest.pro
new file mode 100644
index 0000000000..afd600f85f
--- /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/examples/network/googlesuggest/main.cpp b/examples/network/googlesuggest/main.cpp
new file mode 100644
index 0000000000..f8d9bc5ab7
--- /dev/null
+++ b/examples/network/googlesuggest/main.cpp
@@ -0,0 +1,52 @@
+/****************************************************************************
+**
+** 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 <QApplication>
+
+#include "searchbox.h"
+
+int main(int argc, char * argv[])
+{
+ QApplication app(argc, argv);
+ SearchBox *searchEdit = new SearchBox;
+ searchEdit->show();
+ return app.exec();
+}
diff --git a/examples/network/googlesuggest/searchbox.cpp b/examples/network/googlesuggest/searchbox.cpp
new file mode 100644
index 0000000000..cd7b122c91
--- /dev/null
+++ b/examples/network/googlesuggest/searchbox.cpp
@@ -0,0 +1,69 @@
+/****************************************************************************
+**
+** 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 <QDesktopServices>
+#include <QUrl>
+
+#include "searchbox.h"
+#include "googlesuggest.h"
+
+#define GSEARCH_URL "http://www.google.com/search?q=%1"
+
+
+SearchBox::SearchBox(QWidget *parent): QLineEdit(parent)
+{
+ completer = new GSuggestCompletion(this);
+
+ connect(this, SIGNAL(returnPressed()), SLOT(doSearch()));
+
+ setWindowTitle("Search with Google");
+
+ adjustSize();
+ resize(400, height());
+ setFocus();
+}
+
+void SearchBox::doSearch()
+{
+ completer->preventSuggest();
+ QString url = QString(GSEARCH_URL).arg(text());
+ QDesktopServices::openUrl(QUrl(url));
+}
diff --git a/examples/network/googlesuggest/searchbox.h b/examples/network/googlesuggest/searchbox.h
new file mode 100644
index 0000000000..75ceffd75e
--- /dev/null
+++ b/examples/network/googlesuggest/searchbox.h
@@ -0,0 +1,64 @@
+/****************************************************************************
+**
+** 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$
+**
+****************************************************************************/
+
+#ifndef SEARCHBOX_H
+#define SEARCHBOX_H
+
+#include <QLineEdit>
+
+class GSuggestCompletion;
+
+class SearchBox: public QLineEdit
+{
+ Q_OBJECT
+
+public:
+ SearchBox(QWidget *parent = 0);
+
+protected slots:
+ void doSearch();
+
+private:
+ GSuggestCompletion *completer;
+};
+
+
+#endif // SEARCHBOX_H
diff --git a/examples/network/network.pro b/examples/network/network.pro
index db63d6ec54..9e48e9a77c 100644
--- a/examples/network/network.pro
+++ b/examples/network/network.pro
@@ -11,6 +11,7 @@ SUBDIRS = blockingfortuneclient \
http \
loopback \
threadedfortuneserver \
+ googlesuggest \
torrent
symbian: SUBDIRS = ftp
diff --git a/examples/painting/painting.pro b/examples/painting/painting.pro
index 8ce3460220..59ca54e3a8 100644
--- a/examples/painting/painting.pro
+++ b/examples/painting/painting.pro
@@ -7,7 +7,7 @@ SUBDIRS = basicdrawing \
!wince*:!symbian: SUBDIRS += fontsampler
-contains(QT_CONFIG, svg): SUBDIRS += svgviewer
+contains(QT_CONFIG, svg): SUBDIRS += svggenerator svgviewer
# install
target.path = $$[QT_INSTALL_EXAMPLES]/painting
diff --git a/examples/painting/svggenerator/displaywidget.cpp b/examples/painting/svggenerator/displaywidget.cpp
new file mode 100644
index 0000000000..c9733416fb
--- /dev/null
+++ b/examples/painting/svggenerator/displaywidget.cpp
@@ -0,0 +1,149 @@
+/****************************************************************************
+**
+** 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 "displaywidget.h"
+
+DisplayWidget::DisplayWidget(QWidget *parent)
+ : QWidget(parent)
+{
+ QPainterPath car;
+ QPainterPath house;
+
+ QFile file(":resources/shapes.dat");
+ file.open(QFile::ReadOnly);
+ QDataStream stream(&file);
+ stream >> car >> house >> tree >> moon;
+ file.close();
+
+ shapeMap[Car] = car;
+ shapeMap[House] = house;
+
+ background = Sky;
+ shapeColor = Qt::darkYellow;
+ shape = House;
+}
+
+//! [paint event]
+void DisplayWidget::paintEvent(QPaintEvent *event)
+{
+ QPainter painter;
+ painter.begin(this);
+ painter.setRenderHint(QPainter::Antialiasing);
+ paint(painter);
+ painter.end();
+}
+//! [paint event]
+
+//! [paint function]
+void DisplayWidget::paint(QPainter &painter)
+{
+//![paint picture]
+ painter.setClipRect(QRect(0, 0, 200, 200));
+ painter.setPen(Qt::NoPen);
+
+ switch (background) {
+ case Sky:
+ default:
+ painter.fillRect(QRect(0, 0, 200, 200), Qt::darkBlue);
+ painter.translate(145, 10);
+ painter.setBrush(Qt::white);
+ painter.drawPath(moon);
+ painter.translate(-145, -10);
+ break;
+ case Trees:
+ {
+ painter.fillRect(QRect(0, 0, 200, 200), Qt::darkGreen);
+ painter.setBrush(Qt::green);
+ painter.setPen(Qt::black);
+ for (int y = -55, row = 0; y < 200; y += 50, ++row) {
+ int xs;
+ if (row == 2 || row == 3)
+ xs = 150;
+ else
+ xs = 50;
+ for (int x = 0; x < 200; x += xs) {
+ painter.save();
+ painter.translate(x, y);
+ painter.drawPath(tree);
+ painter.restore();
+ }
+ }
+ break;
+ }
+ case Road:
+ painter.fillRect(QRect(0, 0, 200, 200), Qt::gray);
+ painter.setPen(QPen(Qt::white, 4, Qt::DashLine));
+ painter.drawLine(QLine(0, 35, 200, 35));
+ painter.drawLine(QLine(0, 165, 200, 165));
+ break;
+ }
+
+ painter.setBrush(shapeColor);
+ painter.setPen(Qt::black);
+ painter.translate(100, 100);
+ painter.drawPath(shapeMap[shape]);
+//![paint picture]
+}
+//! [paint function]
+
+QColor DisplayWidget::color() const
+{
+ return shapeColor;
+}
+
+void DisplayWidget::setBackground(Background background)
+{
+ this->background = background;
+ update();
+}
+
+void DisplayWidget::setColor(const QColor &color)
+{
+ this->shapeColor = color;
+ update();
+}
+
+void DisplayWidget::setShape(Shape shape)
+{
+ this->shape = shape;
+ update();
+}
diff --git a/examples/painting/svggenerator/displaywidget.h b/examples/painting/svggenerator/displaywidget.h
new file mode 100644
index 0000000000..58ad97e324
--- /dev/null
+++ b/examples/painting/svggenerator/displaywidget.h
@@ -0,0 +1,80 @@
+/****************************************************************************
+**
+** 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$
+**
+****************************************************************************/
+
+#ifndef DISPLAYWIDGET_H
+#define DISPLAYWIDGET_H
+
+#include <QColor>
+#include <QHash>
+#include <QWidget>
+
+//! [DisplayWidget class definition]
+class DisplayWidget : public QWidget
+{
+ Q_OBJECT
+
+public:
+ enum Shape { House = 0, Car = 1 };
+ enum Background { Sky = 0, Trees = 1, Road = 2 };
+
+ DisplayWidget(QWidget *parent = 0);
+ QColor color() const;
+ void paint(QPainter &painter);
+
+public slots:
+ void setBackground(Background background);
+ void setColor(const QColor &color);
+ void setShape(Shape shape);
+
+protected:
+ void paintEvent(QPaintEvent *event);
+
+private:
+ Background background;
+ QColor shapeColor;
+ Shape shape;
+ QHash<Shape,QPainterPath> shapeMap;
+ QPainterPath moon;
+ QPainterPath tree;
+};
+//! [DisplayWidget class definition]
+
+#endif
diff --git a/examples/painting/svggenerator/forms/window.ui b/examples/painting/svggenerator/forms/window.ui
new file mode 100644
index 0000000000..bf11908c6c
--- /dev/null
+++ b/examples/painting/svggenerator/forms/window.ui
@@ -0,0 +1,249 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>Window</class>
+ <widget class="QWidget" name="Window">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>339</width>
+ <height>353</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>SVG Generator</string>
+ </property>
+ <layout class="QGridLayout" name="gridLayout_2">
+ <property name="sizeConstraint">
+ <enum>QLayout::SetFixedSize</enum>
+ </property>
+ <item row="0" column="0">
+ <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>
+ <item row="0" column="1">
+ <widget class="DisplayWidget" name="displayWidget" native="true">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+ <horstretch>200</horstretch>
+ <verstretch>200</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>200</width>
+ <height>200</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>200</width>
+ <height>200</height>
+ </size>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="2">
+ <spacer name="horizontalSpacer_3">
+ <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 row="1" column="0" colspan="3">
+ <layout class="QGridLayout" name="gridLayout">
+ <item row="0" column="0">
+ <widget class="QLabel" name="label">
+ <property name="text">
+ <string>&amp;Shape:</string>
+ </property>
+ <property name="buddy">
+ <cstring>shapeComboBox</cstring>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="1">
+ <widget class="QComboBox" name="shapeComboBox">
+ <item>
+ <property name="text">
+ <string>House</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>Car</string>
+ </property>
+ </item>
+ </widget>
+ </item>
+ <item row="1" column="0">
+ <widget class="QLabel" name="label_2">
+ <property name="text">
+ <string>&amp;Color:</string>
+ </property>
+ <property name="buddy">
+ <cstring>colorButton</cstring>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1">
+ <widget class="QToolButton" name="colorButton">
+ <property name="text">
+ <string>Choose Color...</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="0">
+ <widget class="QLabel" name="label_3">
+ <property name="text">
+ <string>&amp;Background:</string>
+ </property>
+ <property name="buddy">
+ <cstring>shapeComboBox_2</cstring>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="1">
+ <widget class="QComboBox" name="shapeComboBox_2">
+ <item>
+ <property name="text">
+ <string>Sky</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>Trees</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>Road</string>
+ </property>
+ </item>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item row="2" column="0" colspan="3">
+ <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="QToolButton" name="toolButton_2">
+ <property name="text">
+ <string>Save &amp;As...</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </widget>
+ <customwidgets>
+ <customwidget>
+ <class>DisplayWidget</class>
+ <extends>QWidget</extends>
+ <header>displaywidget.h</header>
+ <container>1</container>
+ </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections>
+ <connection>
+ <sender>shapeComboBox</sender>
+ <signal>currentIndexChanged(int)</signal>
+ <receiver>Window</receiver>
+ <slot>updateShape(int)</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>288</x>
+ <y>232</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>336</x>
+ <y>234</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>colorButton</sender>
+ <signal>clicked()</signal>
+ <receiver>Window</receiver>
+ <slot>updateColor()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>301</x>
+ <y>262</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>337</x>
+ <y>267</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>shapeComboBox_2</sender>
+ <signal>currentIndexChanged(int)</signal>
+ <receiver>Window</receiver>
+ <slot>updateBackground(int)</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>306</x>
+ <y>299</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>337</x>
+ <y>311</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>toolButton_2</sender>
+ <signal>clicked()</signal>
+ <receiver>Window</receiver>
+ <slot>saveSvg()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>298</x>
+ <y>336</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>307</x>
+ <y>348</y>
+ </hint>
+ </hints>
+ </connection>
+ </connections>
+ <slots>
+ <slot>updateBackground(int)</slot>
+ <slot>updateColor()</slot>
+ <slot>updateShape(int)</slot>
+ <slot>saveSvg()</slot>
+ </slots>
+</ui>
diff --git a/doc/src/snippets/webkit/simple/main.cpp b/examples/painting/svggenerator/main.cpp
index a6a4fc2e66..fa8b0abb9d 100644
--- a/doc/src/snippets/webkit/simple/main.cpp
+++ b/examples/painting/svggenerator/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>
+
+#include "window.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]
+ Window window;
+ window.show();
return app.exec();
}
diff --git a/examples/painting/svggenerator/resources/shapes.dat b/examples/painting/svggenerator/resources/shapes.dat
new file mode 100644
index 0000000000..d9b981ea58
--- /dev/null
+++ b/examples/painting/svggenerator/resources/shapes.dat
Binary files differ
diff --git a/examples/painting/svggenerator/svggenerator.pro b/examples/painting/svggenerator/svggenerator.pro
new file mode 100644
index 0000000000..4d08ba4e53
--- /dev/null
+++ b/examples/painting/svggenerator/svggenerator.pro
@@ -0,0 +1,15 @@
+FORMS = forms/window.ui
+HEADERS = displaywidget.h \
+ window.h
+RESOURCES = svggenerator.qrc
+SOURCES = displaywidget.cpp \
+ main.cpp \
+ window.cpp
+
+QT += svg
+
+# install
+target.path = $$[QT_INSTALL_EXAMPLES]/painting/svggenerator
+sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS svggenerator.pro
+sources.path = $$[QT_INSTALL_EXAMPLES]/painting/svggenerator
+INSTALLS += target sources
diff --git a/examples/painting/svggenerator/svggenerator.qrc b/examples/painting/svggenerator/svggenerator.qrc
new file mode 100644
index 0000000000..061d1f68e4
--- /dev/null
+++ b/examples/painting/svggenerator/svggenerator.qrc
@@ -0,0 +1,5 @@
+<!DOCTYPE RCC><RCC version="1.0">
+<qresource>
+ <file>resources/shapes.dat</file>
+</qresource>
+</RCC>
diff --git a/examples/painting/svggenerator/window.cpp b/examples/painting/svggenerator/window.cpp
new file mode 100644
index 0000000000..1965604f04
--- /dev/null
+++ b/examples/painting/svggenerator/window.cpp
@@ -0,0 +1,101 @@
+/****************************************************************************
+**
+** 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 <QColorDialog>
+#include <QFileDialog>
+#include <QPainter>
+#include <QSvgGenerator>
+#include "window.h"
+#include "displaywidget.h"
+
+Window::Window(QWidget *parent)
+ : QWidget(parent)
+{
+ setupUi(this);
+}
+
+void Window::updateBackground(int background)
+{
+ displayWidget->setBackground(DisplayWidget::Background(background));
+}
+
+void Window::updateColor()
+{
+ QColor color = QColorDialog::getColor(displayWidget->color());
+ if (color.isValid())
+ displayWidget->setColor(color);
+}
+
+void Window::updateShape(int shape)
+{
+ displayWidget->setShape(DisplayWidget::Shape(shape));
+}
+
+//! [save SVG]
+void Window::saveSvg()
+{
+ QString newPath = QFileDialog::getSaveFileName(this, tr("Save SVG"),
+ path, tr("SVG files (*.svg)"));
+
+ if (newPath.isEmpty())
+ return;
+
+ path = newPath;
+
+//![configure SVG generator]
+ QSvgGenerator generator;
+ generator.setFileName(path);
+ generator.setSize(QSize(200, 200));
+ generator.setViewBox(QRect(0, 0, 200, 200));
+ generator.setTitle(tr("SVG Generator Example Drawing"));
+ generator.setDescription(tr("An SVG drawing created by the SVG Generator "
+ "Example provided with Qt."));
+//![configure SVG generator]
+//![begin painting]
+ QPainter painter;
+ painter.begin(&generator);
+//![begin painting]
+ displayWidget->paint(painter);
+//![end painting]
+ painter.end();
+//![end painting]
+}
+//! [save SVG]
diff --git a/examples/painting/svggenerator/window.h b/examples/painting/svggenerator/window.h
new file mode 100644
index 0000000000..4bc4d22287
--- /dev/null
+++ b/examples/painting/svggenerator/window.h
@@ -0,0 +1,66 @@
+/****************************************************************************
+**
+** 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$
+**
+****************************************************************************/
+
+#ifndef WINDOW_H
+#define WINDOW_H
+
+#include "ui_window.h"
+
+//! [Window class definition]
+class Window : public QWidget, private Ui::Window
+{
+ Q_OBJECT
+
+public:
+ Window(QWidget *parent = 0);
+
+public slots:
+ void saveSvg();
+ void updateBackground(int background);
+ void updateColor();
+ void updateShape(int shape);
+
+private:
+ QString path;
+};
+//! [Window class definition]
+
+#endif
diff --git a/examples/tutorials/addressbook/README b/examples/tutorials/addressbook/README
index 2d528b5200..9b7f908728 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 0000000000..3de3036284
--- /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 0000000000..b1ae21d8b2
--- /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 0000000000..1022d682fa
--- /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/examples/webkit/fancybrowser/main.cpp b/examples/webkit/fancybrowser/main.cpp
new file mode 100644
index 0000000000..59364693f8
--- /dev/null
+++ b/examples/webkit/fancybrowser/main.cpp
@@ -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 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 "mainwindow.h"
+
+int main(int argc, char * argv[])
+{
+ 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 0000000000..bf61f9cb4a
--- /dev/null
+++ b/examples/webkit/fancybrowser/mainwindow.cpp
@@ -0,0 +1,167 @@
+/****************************************************************************
+**
+** 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"
+
+MainWindow::MainWindow()
+{
+ progress = 0;
+
+ QFile file;
+ file.setFileName(":/jquery.min.js");
+ file.open(QIODevice::ReadOnly);
+ jQuery = file.readAll();
+ file.close();
+
+ 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);
+
+ 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);
+}
+
+void MainWindow::adjustLocation()
+{
+ locationEdit->setText(view->url().toString());
+}
+
+void MainWindow::changeLocation()
+{
+ QUrl url = QUrl(locationEdit->text());
+ locationEdit->setText(url.toString());
+ view->load(url);
+ view->setFocus();
+}
+
+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();
+}
+
+void MainWindow::finishLoading(bool)
+{
+ progress = 100;
+ adjustTitle();
+ view->page()->mainFrame()->evaluateJavaScript(jQuery);
+}
+
+void MainWindow::highlightAllLinks()
+{
+ QString code = "$('a').each( function () { $(this).css('background-color', 'yellow') } )";
+ view->page()->mainFrame()->evaluateJavaScript(code);
+}
+
+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);
+}
+
+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);
+}
+
diff --git a/examples/webkit/fancybrowser/mainwindow.h b/examples/webkit/fancybrowser/mainwindow.h
new file mode 100644
index 0000000000..9362ca7e91
--- /dev/null
+++ b/examples/webkit/fancybrowser/mainwindow.h
@@ -0,0 +1,76 @@
+/****************************************************************************
+**
+** 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 <QMainWindow>
+
+QT_BEGIN_NAMESPACE
+class QWebView;
+class QLineEdit;
+QT_END_NAMESPACE
+
+class MainWindow : public QMainWindow
+{
+ Q_OBJECT
+
+public:
+ MainWindow();
+
+protected slots:
+
+ 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:
+ QString jQuery;
+ QWebView *view;
+ QLineEdit *locationEdit;
+ int progress;
+};
diff --git a/examples/webkit/googlechat/form.ui b/examples/webkit/googlechat/form.ui
new file mode 100644
index 0000000000..3b9fb82e32
--- /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 0000000000..9ac2cd2a70
--- /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/examples/webkit/googlechat/googlechat.h b/examples/webkit/googlechat/googlechat.h
new file mode 100644
index 0000000000..c92632c067
--- /dev/null
+++ b/examples/webkit/googlechat/googlechat.h
@@ -0,0 +1,71 @@
+/****************************************************************************
+**
+** 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 <QWidget>
+
+#include "ui_form.h"
+
+class GoogleChat: public QWidget
+{
+ 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 0000000000..14b7085a82
--- /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/examples/webkit/googlechat/main.cpp b/examples/webkit/googlechat/main.cpp
new file mode 100644
index 0000000000..26feeead61
--- /dev/null
+++ b/examples/webkit/googlechat/main.cpp
@@ -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 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 "googlechat.h"
+
+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 6e26d36035..5c954c22ec 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 25f1c282f7..f5c94d38d1 100644
--- a/examples/widgets/movie/movie.pro
+++ b/examples/widgets/movie/movie.pro
@@ -4,7 +4,7 @@ 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/examples/xmlpatterns/trafficinfo/mainwindow.cpp b/examples/xmlpatterns/trafficinfo/mainwindow.cpp
index c4ca731957..1f754d5a39 100644
--- a/examples/xmlpatterns/trafficinfo/mainwindow.cpp
+++ b/examples/xmlpatterns/trafficinfo/mainwindow.cpp
@@ -71,7 +71,7 @@ MainWindow::MainWindow()
QTimer *timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT(updateTimeInformation()));
- timer->start(1000*60);
+ timer->start(1000*60*5);
const QSettings settings("Qt Software", "trafficinfo");
m_station = StationInformation(settings.value("stationId", "03012130").toString(),
diff --git a/mkspecs/features/include_source_dir.prf b/mkspecs/features/include_source_dir.prf
new file mode 100644
index 0000000000..8794998f43
--- /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 faa9871fbb..60508c8b58 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 885fad759b..d2985f9b97 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/qmake/generators/makefile.cpp b/qmake/generators/makefile.cpp
index 56fae151e4..82703c5489 100644
--- a/qmake/generators/makefile.cpp
+++ b/qmake/generators/makefile.cpp
@@ -1494,7 +1494,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);
}
@@ -2797,16 +2797,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();
@@ -2815,6 +2808,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()) {
@@ -2868,7 +2862,7 @@ MakefileGenerator::fileFixify(const QString& file, const QString &out_d, const Q
}
if(ret.isEmpty())
ret = ".";
- debug_msg(3, "Fixed[%d] %s :: to :: %s [%s::%s] [%s::%s]", fix, orig_file.toLatin1().constData(),
+ debug_msg(3, "Fixed[%d,%d] %s :: to :: %s [%s::%s] [%s::%s]", fix, canon, orig_file.toLatin1().constData(),
ret.toLatin1().constData(), in_d.toLatin1().constData(), out_d.toLatin1().constData(),
pwd.toLatin1().constData(), Option::output_dir.toLatin1().constData());
cache->insert(cacheKey, ret);
diff --git a/qmake/generators/makefile.h b/qmake/generators/makefile.h
index c39cbced6a..9896c1ddb7 100644
--- a/qmake/generators/makefile.h
+++ b/qmake/generators/makefile.h
@@ -114,7 +114,7 @@ protected:
struct SubTarget
{
QString name;
- QString in_directory, out_directory;
+ QString in_directory, out_directory;
QString profile, target, makefile;
QStringList depends;
};
@@ -188,8 +188,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 5413618adf..5a7727128d 100644
--- a/qmake/generators/metamakefile.cpp
+++ b/qmake/generators/metamakefile.cpp
@@ -361,7 +361,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 4b1b66d1a4..b5904cc073 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 7e703c2cbf..bbbb02787e 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 60a27be6de..87f55cf318 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/project.cpp b/qmake/project.cpp
index 9b0071f788..c4667687bb 100644
--- a/qmake/project.cpp
+++ b/qmake/project.cpp
@@ -1182,7 +1182,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/phonon/ds9/mediaobject.cpp b/src/3rdparty/phonon/ds9/mediaobject.cpp
index 93a19b05c7..1d0b69d8ed 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/qt7/audionode.mm b/src/3rdparty/phonon/qt7/audionode.mm
index cb9e82f695..961230cd7c 100644
--- a/src/3rdparty/phonon/qt7/audionode.mm
+++ b/src/3rdparty/phonon/qt7/audionode.mm
@@ -68,13 +68,15 @@ void AudioNode::createAndConnectAUNodes()
<< QString(!FindNextComponent(0, &description) ? "ERROR: COMPONENT NOT FOUND!" : "OK!"))
OSStatus err = noErr;
-#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5
- if (QSysInfo::MacintoshVersion >= QSysInfo::MV_10_5)
- err = AUGraphAddNode(m_audioGraph->audioGraphRef(), &description, &m_auNode);
- else
-#endif
- err = AUGraphNewNode(m_audioGraph->audioGraphRef(), &description, 0, 0, &m_auNode);
-
+
+ // The proper function to call here is AUGraphAddNode() but the type has
+ // changed between 10.5 and 10.6. it's still OK to call this function, but
+ // if we want to use the proper thing we need to move over to
+ // AudioComponentDescription everywhere, which is very similar to the
+ // ComponentDescription, but a different size. however,
+ // AudioComponentDescription only exists on 10.6+. More fun than we need to
+ // deal with at the moment, so we'll take the "deprecated" warning instead.
+ err = AUGraphNewNode(m_audioGraph->audioGraphRef(), &description, 0, 0, &m_auNode);
BACKEND_ASSERT2(err != kAUGraphErr_OutputNodeErr, "A MediaObject can only be connected to one audio output device.", FATAL_ERROR)
BACKEND_ASSERT2(err == noErr, "Could not create new AUNode.", FATAL_ERROR)
}
diff --git a/src/3rdparty/phonon/qt7/backendinfo.mm b/src/3rdparty/phonon/qt7/backendinfo.mm
index e173f052a9..0d51db0926 100644
--- a/src/3rdparty/phonon/qt7/backendinfo.mm
+++ b/src/3rdparty/phonon/qt7/backendinfo.mm
@@ -22,6 +22,7 @@
#include <AudioUnit/AudioUnit.h>
#include <CoreServices/CoreServices.h>
+#include <QtGui/qmacdefines_mac.h>
#import <QTKit/QTMovie.h>
#ifdef QUICKTIME_C_API_AVAILABLE
diff --git a/src/3rdparty/phonon/qt7/quicktimevideoplayer.h b/src/3rdparty/phonon/qt7/quicktimevideoplayer.h
index 0b3aec221b..b80570a945 100644
--- a/src/3rdparty/phonon/qt7/quicktimevideoplayer.h
+++ b/src/3rdparty/phonon/qt7/quicktimevideoplayer.h
@@ -20,6 +20,7 @@
#include "backendheader.h"
+#include <QtGui/qmacdefines_mac.h>
#import <QTKit/QTDataReference.h>
#import <QTKit/QTMovie.h>
diff --git a/src/3rdparty/webkit/ChangeLog b/src/3rdparty/webkit/ChangeLog
index ec8242dfd1..76cfc801b9 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 fe85bb97ea..3321570176 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 91fb1c082a..9207c8ac4b 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 cb553af5be..afcf09fead 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 bdc5d2fd01..201af28745 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 f8512f7417..20885c37e8 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 f12d2f3a81..ecdddcf339 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 c8efd63e6b..26ce4893d5 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
- 64fe6bc7eb5887db9ed7b1c154a6f15712e0adb6
+ a6ebe3865025e2bb4d767a79435af4daf5a9b4db
diff --git a/src/3rdparty/webkit/WebCore/ChangeLog b/src/3rdparty/webkit/WebCore/ChangeLog
index 10a3840ddd..00bd42799c 100644
--- a/src/3rdparty/webkit/WebCore/ChangeLog
+++ b/src/3rdparty/webkit/WebCore/ChangeLog
@@ -1,3 +1,249 @@
+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.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24280
+
+ Fix propagation of fill rules when rendering paths in the Qt build.
+
+ * platform/graphics/qt/GraphicsContextQt.cpp:
+ (WebCore::toQtFillRule):
+ (WebCore::GraphicsContext::fillPath):
+ (WebCore::GraphicsContext::strokePath):
+
+2009-03-27 Zack Rusin <zack@kde.org>
+
+ Reviewed by Tor Arne Vestbø.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24275
+
+ Fix text field theming in the Qt build with the KDE 4 Oxygen
+ style by adjusting the size vertically and horizontally to
+ set padding on the element equal to the width of the style painted border.
+
+ * platform/qt/RenderThemeQt.cpp:
+ (WebCore::RenderThemeQt::RenderThemeQt):
+ (WebCore::RenderThemeQt::computeSizeBasedOnStyle):
+ (WebCore::RenderThemeQt::adjustTextFieldStyle):
+ (WebCore::RenderThemeQt::paintTextField):
+ * platform/qt/RenderThemeQt.h:
+
+2009-02-06 Dirk Schulze <krit@webkit.org>
+
+ Reviewed by Simon Hausmann.
+
+ Fix bug in clearRect(). Use fillRect() instead of eraseRect() to get
+ the context transparent.
+
+ [QT] clearRect fill's a given rect with white
+ https://bugs.webkit.org/show_bug.cgi?id=23728
+
+ * platform/graphics/qt/GraphicsContextQt.cpp:
+ (WebCore::GraphicsContext::clearRect):
+
2009-03-19 Simon Hausmann <simon.hausmann@nokia.com>
Reviewed by Tor Arne Vestbø.
diff --git a/src/3rdparty/webkit/WebCore/html/HTMLCanvasElement.cpp b/src/3rdparty/webkit/WebCore/html/HTMLCanvasElement.cpp
index fb6d9fecb2..76c32021d2 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 42d2e90326..dd14fb92bd 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 02774417b9..e7fab18b59 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/FontQt.cpp b/src/3rdparty/webkit/WebCore/platform/graphics/qt/FontQt.cpp
index deeea991f8..4e78083e81 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 80a63904f5..6c90ea3ba9 100644
--- a/src/3rdparty/webkit/WebCore/platform/graphics/qt/GraphicsContextQt.cpp
+++ b/src/3rdparty/webkit/WebCore/platform/graphics/qt/GraphicsContextQt.cpp
@@ -168,6 +168,18 @@ static inline QGradient applySpreadMethod(QGradient gradient, GradientSpreadMeth
return gradient;
}
+static inline Qt::FillRule toQtFillRule(WindRule rule)
+{
+ switch(rule) {
+ case RULE_EVENODD:
+ return Qt::OddEvenFill;
+ case RULE_NONZERO:
+ return Qt::WindingFill;
+ }
+ qDebug("Qt: unrecognized wind rule!");
+ return Qt::OddEvenFill;
+}
+
struct TransparencyLayer
{
TransparencyLayer(const QPainter* p, const QRect &rect)
@@ -458,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;
@@ -477,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);
}
@@ -541,6 +629,7 @@ void GraphicsContext::fillPath()
QPainter *p = m_data->p();
QPainterPath path = m_data->currentPath;
+ path.setFillRule(toQtFillRule(fillRule()));
switch (m_common->state.fillColorSpace) {
case SolidColorSpace:
@@ -569,6 +658,7 @@ void GraphicsContext::strokePath()
QPainter *p = m_data->p();
QPen pen = p->pen();
QPainterPath path = m_data->currentPath;
+ path.setFillRule(toQtFillRule(fillRule()));
switch (m_common->state.strokeColorSpace) {
case SolidColorSpace:
@@ -815,7 +905,7 @@ void GraphicsContext::clearRect(const FloatRect& rect)
QPainter::CompositionMode currentCompositionMode = p->compositionMode();
if (p->paintEngine()->hasFeature(QPaintEngine::PorterDuff))
p->setCompositionMode(QPainter::CompositionMode_Source);
- p->eraseRect(rect);
+ p->fillRect(rect, Qt::transparent);
if (p->paintEngine()->hasFeature(QPaintEngine::PorterDuff))
p->setCompositionMode(currentCompositionMode);
}
diff --git a/src/3rdparty/webkit/WebCore/platform/graphics/qt/ImageBufferQt.cpp b/src/3rdparty/webkit/WebCore/platform/graphics/qt/ImageBufferQt.cpp
index d4ab59f6c4..29a02d4c41 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>
@@ -79,15 +81,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/ImageQt.cpp b/src/3rdparty/webkit/WebCore/platform/graphics/qt/ImageQt.cpp
index be7d1e0376..e266c07fc7 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 90b342e363..e68be2bfec 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 2de21251ba..2c730a669c 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 9308878d82..c8f6ad5984 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 9d95373984..218f7be418 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 cc9d314f6f..a9da76b8b4 100644
--- a/src/3rdparty/webkit/WebCore/platform/qt/RenderThemeQt.cpp
+++ b/src/3rdparty/webkit/WebCore/platform/qt/RenderThemeQt.cpp
@@ -41,6 +41,7 @@
#include <QWidget>
#include <QPainter>
#include <QPushButton>
+#include <QLineEdit>
#include <QStyleFactory>
#include <QStyleOptionButton>
#include <QStyleOptionFrameV2>
@@ -123,6 +124,12 @@ RenderThemeQt::RenderThemeQt()
#endif
m_fallbackStyle = 0;
+
+ // this will need to be regenerated when the style changes
+ QLineEdit lineEdit;
+ QStyleOptionFrameV2 opt;
+ m_frameLineWidth = QApplication::style()->pixelMetric(QStyle::PM_DefaultFrameWidth,
+ &opt, &lineEdit);
}
RenderThemeQt::~RenderThemeQt()
@@ -268,7 +275,7 @@ int RenderThemeQt::minimumMenuListSize(RenderStyle*) const
return 7 * fm.width(QLatin1Char('x'));
}
-static void computeSizeBasedOnStyle(RenderStyle* renderStyle)
+void RenderThemeQt::computeSizeBasedOnStyle(RenderStyle* renderStyle) const
{
// If the width and height are both specified, then we have nothing to do.
if (!renderStyle->width().isIntrinsicOrAuto() && !renderStyle->height().isAuto())
@@ -335,13 +342,15 @@ static void computeSizeBasedOnStyle(RenderStyle* renderStyle)
int h = qMax(fm.lineSpacing(), 14) + 2*verticalMargin;
int w = fm.width(QLatin1Char('x')) * 17 + 2*horizontalMargin;
QStyleOptionFrameV2 opt;
- opt.lineWidth = applicationStyle->pixelMetric(QStyle::PM_DefaultFrameWidth,
- &opt, 0);
+ opt.lineWidth = m_frameLineWidth;
QSize sz = applicationStyle->sizeFromContents(QStyle::CT_LineEdit,
- &opt,
- QSize(w, h).expandedTo(QApplication::globalStrut()),
- 0);
+ &opt,
+ QSize(w, h).expandedTo(QApplication::globalStrut()),
+ 0);
size.setHeight(sz.height());
+
+ renderStyle->setPaddingLeft(Length(opt.lineWidth, Fixed));
+ renderStyle->setPaddingRight(Length(opt.lineWidth, Fixed));
break;
}
default:
@@ -482,6 +491,9 @@ void RenderThemeQt::adjustTextFieldStyle(CSSStyleSelector*, RenderStyle* style,
{
style->setBackgroundColor(Color::transparent);
style->setColor(QApplication::palette().text().color());
+ style->resetBorder();
+ style->resetPadding();
+ computeSizeBasedOnStyle(style);
}
bool RenderThemeQt::paintTextField(RenderObject* o, const RenderObject::PaintInfo& i, const IntRect& r)
@@ -495,7 +507,7 @@ bool RenderThemeQt::paintTextField(RenderObject* o, const RenderObject::PaintInf
panel.initFrom(p.widget);
panel.rect = r;
- panel.lineWidth = p.style->pixelMetric(QStyle::PM_DefaultFrameWidth, &panel, p.widget);
+ panel.lineWidth = m_frameLineWidth;
panel.state |= QStyle::State_Sunken;
panel.features = QStyleOptionFrameV2::None;
diff --git a/src/3rdparty/webkit/WebCore/platform/qt/RenderThemeQt.h b/src/3rdparty/webkit/WebCore/platform/qt/RenderThemeQt.h
index b4a50644f5..5c78a72bae 100644
--- a/src/3rdparty/webkit/WebCore/platform/qt/RenderThemeQt.h
+++ b/src/3rdparty/webkit/WebCore/platform/qt/RenderThemeQt.h
@@ -128,6 +128,7 @@ private:
void paintMediaBackground(QPainter* painter, const IntRect& r) const;
QColor getMediaControlForegroundColor(RenderObject* o = 0) const;
#endif
+ void computeSizeBasedOnStyle(RenderStyle* renderStyle) const;
private:
bool supportsFocus(ControlPart) const;
@@ -144,6 +145,8 @@ private:
QStyle* m_fallbackStyle;
QStyle* fallbackStyle();
+
+ int m_frameLineWidth;
};
class StylePainter
diff --git a/src/3rdparty/webkit/WebCore/platform/qt/WheelEventQt.cpp b/src/3rdparty/webkit/WebCore/platform/qt/WheelEventQt.cpp
index cc8acd23f2..b25ae7ac81 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 e0e178bff2..3229922550 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 5aa89331f7..c8dd0e5461 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 ae71356ebe..5dc6363dd0 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 70eb864e1d..01b68eb891 100644
--- a/src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp
+++ b/src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp
@@ -451,61 +451,35 @@ void QWebPagePrivate::updateAction(QWebPage::WebAction action)
case QWebPage::Reload:
enabled = !loader->isLoading();
break;
- case QWebPage::Cut:
- enabled = editor->canCut();
- break;
- case QWebPage::Copy:
- enabled = editor->canCopy();
- break;
- case QWebPage::Paste:
- enabled = editor->canPaste();
- break;
#ifndef QT_NO_UNDOSTACK
case QWebPage::Undo:
case QWebPage::Redo:
// those two are handled by QUndoStack
break;
#endif // QT_NO_UNDOSTACK
- case QWebPage::MoveToNextChar:
- case QWebPage::MoveToPreviousChar:
- case QWebPage::MoveToNextWord:
- case QWebPage::MoveToPreviousWord:
- case QWebPage::MoveToNextLine:
- case QWebPage::MoveToPreviousLine:
- case QWebPage::MoveToStartOfLine:
- case QWebPage::MoveToEndOfLine:
- case QWebPage::MoveToStartOfBlock:
- case QWebPage::MoveToEndOfBlock:
- case QWebPage::MoveToStartOfDocument:
- case QWebPage::MoveToEndOfDocument:
- case QWebPage::SelectAll:
- case QWebPage::SelectNextChar:
- case QWebPage::SelectPreviousChar:
- case QWebPage::SelectNextWord:
- case QWebPage::SelectPreviousWord:
- case QWebPage::SelectNextLine:
- case QWebPage::SelectPreviousLine:
- case QWebPage::SelectStartOfLine:
- case QWebPage::SelectEndOfLine:
- case QWebPage::SelectStartOfBlock:
- case QWebPage::SelectEndOfBlock:
- case QWebPage::SelectStartOfDocument:
- case QWebPage::SelectEndOfDocument:
- case QWebPage::DeleteStartOfWord:
- case QWebPage::DeleteEndOfWord:
+ case QWebPage::SelectAll: // editor command is always enabled
+ break;
case QWebPage::SetTextDirectionDefault:
case QWebPage::SetTextDirectionLeftToRight:
case QWebPage::SetTextDirectionRightToLeft:
- case QWebPage::ToggleBold:
- case QWebPage::ToggleItalic:
- case QWebPage::ToggleUnderline:
- enabled = editor->canEditRichly();
- if (enabled)
- checked = editor->command(editorCommandForWebActions(action)).state() != FalseTriState;
- else
- checked = false;
+ enabled = editor->canEdit();
+ checked = false;
+ break;
+ default: {
+ // see if it's an editor command
+ const char* commandName = editorCommandForWebActions(action);
+
+ // if it's an editor command, let it's logic determine state
+ if (commandName) {
+ Editor::Command command = editor->command(commandName);
+ enabled = command.isEnabled();
+ if (enabled)
+ checked = command.state() != FalseTriState;
+ else
+ checked = false;
+ }
break;
- default: break;
+ }
}
a->setEnabled(enabled);
@@ -539,7 +513,6 @@ void QWebPagePrivate::updateEditorActions()
updateAction(QWebPage::MoveToEndOfBlock);
updateAction(QWebPage::MoveToStartOfDocument);
updateAction(QWebPage::MoveToEndOfDocument);
- updateAction(QWebPage::SelectAll);
updateAction(QWebPage::SelectNextChar);
updateAction(QWebPage::SelectPreviousChar);
updateAction(QWebPage::SelectNextWord);
@@ -560,6 +533,8 @@ void QWebPagePrivate::updateEditorActions()
updateAction(QWebPage::ToggleBold);
updateAction(QWebPage::ToggleItalic);
updateAction(QWebPage::ToggleUnderline);
+ updateAction(QWebPage::InsertParagraphSeparator);
+ updateAction(QWebPage::InsertLineSeparator);
}
void QWebPagePrivate::timerEvent(QTimerEvent *ev)
@@ -921,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();
}
@@ -1118,8 +1093,13 @@ QVariant QWebPage::inputMethodQuery(Qt::InputMethodQuery property) const
\enum QWebPage::WebAction
This enum describes the types of action which can be performed on the web page.
- Actions which are related to text editing, cursor movement, and text selection
- only have an effect if \l contentEditable is true.
+
+ Actions only have an effect when they are applicable. The availability of
+ 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
+ is by setting \l contentEditable to true.
\value NoWebAction No action is triggered.
\value OpenLink Open the current link.
@@ -1218,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
@@ -1470,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;
@@ -1814,6 +1801,13 @@ QAction *QWebPage::action(WebAction action) const
text = contextMenuItemTagInspectElement();
break;
+ case InsertParagraphSeparator:
+ text = tr("Insert a new paragraph");
+ break;
+ case InsertLineSeparator:
+ text = tr("Insert a new line");
+ break;
+
case NoWebAction:
return 0;
}
@@ -2341,7 +2335,8 @@ QWebPluginFactory *QWebPage::pluginFactory() const
\list
\o %Platform% and %Subplatform% are expanded to the windowing system and the operation system.
\o %Security% expands to U if SSL is enabled, otherwise N. SSL is enabled if QSslSocket::supportsSsl() returns true.
- \o %Locale% is replaced with QLocale::name().
+ \o %Locale% is replaced with QLocale::name(). The locale is determined from the view of the QWebPage. If no view is set on the QWebPage,
+ then a default constructed QLocale is used instead.
\o %WebKitVersion% currently expands to 527+
\o %AppVersion% expands to QCoreApplication::applicationName()/QCoreApplication::applicationVersion() if they're set; otherwise defaulting to Qt and the current Qt version.
\endlist
@@ -2529,7 +2524,7 @@ void QWebPagePrivate::_q_onLoadProgressChanged(int) {
\sa bytesReceived()
*/
quint64 QWebPage::totalBytes() const {
- return d->m_bytesReceived;
+ return d->m_totalBytes;
}
@@ -2539,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 ea503a1bd4..9753f4f9c5 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 1ceb176fda..c3bd63366d 100644
--- a/src/3rdparty/webkit/WebKit/qt/ChangeLog
+++ b/src/3rdparty/webkit/WebKit/qt/ChangeLog
@@ -1,3 +1,118 @@
+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ø.
+
+ Fix the documentation of the QLocale usage in userAgentForUrl.
+
+ * Api/qwebpage.cpp:
+
+2009-03-20 Erik L. Bunce <elbunce@xendom.com>
+
+ Reviewed by Simon Hausmann.
+
+ Fix for InsertParagraphSeparator and InsertLineSeparator so that
+ QWebPage::action() creates QActions for them. Also make sure they get
+ updated appropriately.
+
+ * Api/qwebpage.cpp:
+ (QWebPagePrivate::updateEditorActions):
+ (QWebPage::action):
+ * tests/qwebpage/tst_qwebpage.cpp:
+ (tst_QWebPage::textEditing):
+
+2009-03-20 Erik L. Bunce <elbunce@xendom.com>
+
+ Reviewed by Tor Arne Vestbø.
+
+ Fix QWebPage::WebActions action states to more closely match when they are
+ actually applicable and remove erroneous documentation.
+
+ * Most WebActions implemented using editor commands now use the
+ Editor::Command::isEnabled() to control their availability.
+ * SelectAll is always enabled (since it's editor command is).
+ * SetTextDirection{} family of WebActions are available when canEdit() is true
+ and not just canEditRichly().
+
+ Fix and clarify documentation about the availability of various web actions.
+
+ * Api/qwebpage.cpp:
+ (QWebPagePrivate::updateAction):
+ (QWebPagePrivate::updateEditorActions):
+ * tests/qwebpage/tst_qwebpage.cpp:
+ (tst_QWebPage::textSelection):
+
2009-03-19 Ariya Hidayat <ariya.hidayat@trolltech.com>
Reviewed by Simon Hausmann.
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 0000000000..4a8c165a35
--- /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 009295071a..06305e04b5 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 0000000000..e60e586019
--- /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 d4fc2bd85c..d4fc2bd85c 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 f04cd29151..f04cd29151 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 0000000000..82f5b6ce4a
--- /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 61cd3bfcdb..61cd3bfcdb 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 b433ac22ea..b91bc301a3 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 fcad03b15c..fcad03b15c 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 dea9562688..fe74fac42e 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:
@@ -894,7 +896,6 @@ void tst_QWebPage::textSelection()
QVERIFY(page->action(QWebPage::SelectEndOfDocument) != 0);
// right now they are disabled because contentEditable is false
- QCOMPARE(page->action(QWebPage::SelectAll)->isEnabled(), false);
QCOMPARE(page->action(QWebPage::SelectNextChar)->isEnabled(), false);
QCOMPARE(page->action(QWebPage::SelectPreviousChar)->isEnabled(), false);
QCOMPARE(page->action(QWebPage::SelectNextWord)->isEnabled(), false);
@@ -908,6 +909,9 @@ void tst_QWebPage::textSelection()
QCOMPARE(page->action(QWebPage::SelectStartOfDocument)->isEnabled(), false);
QCOMPARE(page->action(QWebPage::SelectEndOfDocument)->isEnabled(), false);
+ // ..but SelectAll is awalys enabled
+ QCOMPARE(page->action(QWebPage::SelectAll)->isEnabled(), true);
+
// make it editable before navigating the cursor
page->setContentEditable(true);
@@ -954,6 +958,8 @@ void tst_QWebPage::textEditing()
QVERIFY(page->action(QWebPage::ToggleBold) != 0);
QVERIFY(page->action(QWebPage::ToggleItalic) != 0);
QVERIFY(page->action(QWebPage::ToggleUnderline) != 0);
+ QVERIFY(page->action(QWebPage::InsertParagraphSeparator) != 0);
+ QVERIFY(page->action(QWebPage::InsertLineSeparator) != 0);
// right now they are disabled because contentEditable is false
QCOMPARE(page->action(QWebPage::DeleteStartOfWord)->isEnabled(), false);
@@ -964,6 +970,8 @@ void tst_QWebPage::textEditing()
QCOMPARE(page->action(QWebPage::ToggleBold)->isEnabled(), false);
QCOMPARE(page->action(QWebPage::ToggleItalic)->isEnabled(), false);
QCOMPARE(page->action(QWebPage::ToggleUnderline)->isEnabled(), false);
+ QCOMPARE(page->action(QWebPage::InsertParagraphSeparator)->isEnabled(), false);
+ QCOMPARE(page->action(QWebPage::InsertLineSeparator)->isEnabled(), false);
// make it editable before navigating the cursor
page->setContentEditable(true);
@@ -977,10 +985,38 @@ void tst_QWebPage::textEditing()
QCOMPARE(page->action(QWebPage::ToggleBold)->isEnabled(), true);
QCOMPARE(page->action(QWebPage::ToggleItalic)->isEnabled(), true);
QCOMPARE(page->action(QWebPage::ToggleUnderline)->isEnabled(), true);
+ QCOMPARE(page->action(QWebPage::InsertParagraphSeparator)->isEnabled(), true);
+ QCOMPARE(page->action(QWebPage::InsertLineSeparator)->isEnabled(), true);
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 ceedacf7b4..d654f927fe 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 65b0251706..bf3647ee3c 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/codecs/qtsciicodec.cpp b/src/corelib/codecs/qtsciicodec.cpp
index 14d2c9c5f9..0ec056716d 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 281bf75519..1ac592e6cc 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/qtconcurrentreducekernel.h b/src/corelib/concurrent/qtconcurrentreducekernel.h
index e863b631c9..2dad519967 100644
--- a/src/corelib/concurrent/qtconcurrentreducekernel.h
+++ b/src/corelib/concurrent/qtconcurrentreducekernel.h
@@ -51,6 +51,7 @@
#include <QtCore/qmap.h>
#include <QtCore/qmutex.h>
#include <QtCore/qthread.h>
+#include <QtCore/qthreadpool.h>
#include <QtCore/qvector.h>
QT_BEGIN_HEADER
@@ -107,7 +108,7 @@ class ReduceKernel
const ReduceOptions reduceOptions;
QMutex mutex;
- int progress, resultsMapSize;
+ int progress, resultsMapSize, threadCount;
ResultsMap resultsMap;
bool canReduce(int begin) const
@@ -140,7 +141,8 @@ class ReduceKernel
public:
ReduceKernel(ReduceOptions _reduceOptions)
- : reduceOptions(_reduceOptions), progress(0), resultsMapSize(0)
+ : reduceOptions(_reduceOptions), progress(0), resultsMapSize(0),
+ threadCount(QThreadPool::globalInstance()->maxThreadCount())
{ }
void runReduce(ReduceFunctor &reduce,
@@ -210,12 +212,12 @@ public:
inline bool shouldThrottle()
{
- return (resultsMapSize > (ReduceQueueThrottleLimit * QThread::idealThreadCount()));
+ return (resultsMapSize > (ReduceQueueThrottleLimit * threadCount));
}
inline bool shouldStartThread()
{
- return (resultsMapSize <= (ReduceQueueStartLimit * QThread::idealThreadCount()));
+ return (resultsMapSize <= (ReduceQueueStartLimit * threadCount));
}
};
diff --git a/src/corelib/global/qfeatures.h b/src/corelib/global/qfeatures.h
index 6d55f7cc6f..21897237d4 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/qfeatures.txt b/src/corelib/global/qfeatures.txt
index c26c27444f..40ccb15785 100644
--- a/src/corelib/global/qfeatures.txt
+++ b/src/corelib/global/qfeatures.txt
@@ -3,28 +3,28 @@
Feature: PROPERTIES
Description: Supports scripting Qt-based applications.
Section: Kernel
-Requires:
+Requires:
Name: Properties
SeeAlso: ???
Feature: TEXTHTMLPARSER
Description: Parser for HTML
Section: Kernel
-Requires:
+Requires:
Name: HtmlParser
SeeAlso: ???
Feature: TEXTODFWRITER
Description: Provides an ODF writer
Section: Kernel
-Requires: XMLSTREAMWRITER
+Requires: XMLSTREAMWRITER
Name: OdfWriter
SeeAlso: ???
Feature: CSSPARSER
Description: Parser for Style Sheets
Section: Kernel
-Requires:
+Requires:
Name: CssParser
SeeAlso: ???
@@ -52,21 +52,21 @@ SeeAlso: ???
Feature: SESSIONMANAGER
Description: Supports session management.
Section: Kernel
-Requires:
+Requires:
Name: Session Manager
SeeAlso: ???
Feature: SHORTCUT
Description: Supports keyboard accelerators and shortcuts.
Section: Kernel
-Requires:
+Requires:
Name: QShortcut
SeeAlso: ???
Feature: ACTION
Description: Supports widget actions.
Section: Kernel
-Requires:
+Requires:
Name: QAction
SeeAlso: ???
@@ -129,8 +129,8 @@ SeeAlso: ???
Feature: XMLSTREAM
Description: Provides a simple streaming API for XML.
Section: Kernel
-Requires:
-Name:
+Requires:
+Name:
SeeAlso: ???
Feature: XMLSTREAMREADER
@@ -159,14 +159,14 @@ SeeAlso: ???
Feature: QUUID_STRING
Description: Supports convertion between UUID and strings.
Section: Data structures
-Requires:
+Requires:
Name: Universally Unique Identifier Convertion
SeeAlso: ???
Feature: TEXTDATE
Description: Supports month and day names in dates.
Section: Data structures
-Requires:
+Requires:
Name: Text Date
SeeAlso: ???
@@ -210,7 +210,7 @@ SeeAlso: ???
Feature: SETTINGS
Description: Supports persistent application settings.
Section: File I/O
-Requires: TEXTSTREAM
+Requires: TEXTSTREAM
Name: QSettings
SeeAlso: ???
@@ -229,7 +229,7 @@ Name: QFileSystemModel
SeeAlso: ???
Feature: FILESYSTEMWATCHER
-Description: Provides an interface for monitoring files and directories
+Description: Provides an interface for monitoring files and directories
for modications.
Section: File I/O
Requires: THREAD
@@ -239,7 +239,7 @@ SeeAlso: ???
# Widgets
Feature: TREEWIDGET
-Description: Supports views using tree models.
+Description: Supports views using tree models.
Section: Widgets
Requires: TREEVIEW
Name: QTreeWidget
@@ -283,7 +283,7 @@ SeeAlso: ???
Feature: SPLASHSCREEN
Description: Supports splash screens that can be shown during application startup.
Section: Widgets
-Requires:
+Requires:
Name: Splash screen widget
SeeAlso: ???
@@ -295,7 +295,7 @@ Name: QSplitter
SeeAlso: ???
Feature: LCDNUMBER
-Description: Supports LCD-like digits.
+Description: Supports LCD-like digits.
Section: Widgets
Requires:
Name: QLCDNumber
@@ -381,7 +381,7 @@ SeeAlso: ???
Feature: BUTTONGROUP
Description: Supports organizing groups of button widgets.
Section: Widgets
-Requires: GROUPBOX
+Requires: GROUPBOX
Name: QButtonGroup
SeeAlso: ???
@@ -393,7 +393,7 @@ Name: QMainWindow
SeeAlso: ???
Feature: DOCKWIDGET
-Description: Supports docking widgets inside a QMainWindow or floated as
+Description: Supports docking widgets inside a QMainWindow or floated as
a top-level window on the desktop.
Section: Widgets
Requires: RUBBERBAND MAINWINDOW
@@ -401,7 +401,7 @@ Name: QDockwidget
SeeAlso: ???
Feature: WORKSPACE
-Description: Supports workspace windows, e.g. used in an MDI application.
+Description: Supports workspace windows, e.g. used in an MDI application.
Section: Widgets
Requires: SCROLLBAR RESIZEHANDLER MENU TOOLBUTTON MAINWINDOW TOOLBAR MENUBAR
Name: QWorkSpace
@@ -457,8 +457,8 @@ Name: QSlider
SeeAlso: ???
Feature: SCROLLBAR
-Description: Supports scrollbars allowing the user access parts of a
-document that is larger than the widget used to display it.
+Description: Supports scrollbars allowing the user access parts of a
+document that is larger than the widget used to display it.
Section: Widgets
Requires: SLIDER
Name: QScrollBar
@@ -500,7 +500,7 @@ Name: QTextEdit
SeeAlso: ???
Feature: SYNTAXHIGHLIGHTER
-Description: Supports custom syntax highlighting.
+Description: Supports custom syntax highlighting.
Section: Widgets
Requires: TEXTEDIT
Name: QSyntaxHighlighter
@@ -556,7 +556,7 @@ Name: QSizeGrip
SeeAlso: ???
Feature: CALENDARWIDGET
-Description: Provides a monthly based calendar widget allowing the user to select
+Description: Provides a monthly based calendar widget allowing the user to select
a date.
Section: Widgets
Requires: TABLEVIEW MENU TEXTDATE SPINBOX TOOLBUTTON
@@ -567,14 +567,14 @@ Feature: PRINTPREVIEWWIDGET
Description: Provides a widget for previewing page layouts for printer output.
a date.
Section: Widgets
-Requires: GRAPHICSVIEW PRINTER PICTURE
+Requires: GRAPHICSVIEW PRINTER
Name: QPrintPreviewWidget
SeeAlso: ???
# Dialogs
Feature: MESSAGEBOX
-Description: Supports message boxes displaying
+Description: Supports message boxes displaying
informative messages and simple questions.
Section: Dialogs
Requires:
@@ -589,7 +589,7 @@ Name: QColorDialog
SeeAlso: ???
Feature: FILEDIALOG
-Description: Supports a dialog widget for selecting files or directories.
+Description: Supports a dialog widget for selecting files or directories.
Section: Dialogs
Requires: DIRMODEL TREEVIEW COMBOBOX TOOLBUTTON BUTTONGROUP TOOLTIP SPLITTER STACKEDWIDGET FILESYSTEMMODEL
Name: QFileDialog
@@ -654,7 +654,7 @@ SeeAlso: ???
# ItemViews
Feature: ITEMVIEWS
-Description: Supports the model/view architecture managing the relationship
+Description: Supports the model/view architecture managing the relationship
between data and the way it is presented to the user.
Section: ItemViews
Requires: RUBBERBAND SCROLLAREA
@@ -683,8 +683,8 @@ Name: QAbstractProxyModel
SeeAlso: ???
Feature: SORTFILTERPROXYMODEL
-Description: Supports sorting and filtering of data passed between
-another model and a view.
+Description: Supports sorting and filtering of data passed between
+another model and a view.
Section: ItemViews
Requires: PROXYMODEL
Name: QSortFilterProxyModel
@@ -705,9 +705,9 @@ Name: QListView
SeeAlso: ???
Feature: TABLEVIEW
-Description: Supports a default model/view implementation of a table view.
+Description: Supports a default model/view implementation of a table view.
Section: ItemViews
-Requires: ITEMVIEWS
+Requires: ITEMVIEWS
Name: QTableView
SeeAlso: ???
@@ -735,21 +735,21 @@ SeeAlso: ???
# Styles
Feature: STYLE_WINDOWS
-Description: Supports a Microsoft Windows-like look and feel.
+Description: Supports a Microsoft Windows-like look and feel.
Section: Styles
Requires:
Name: QWindowsStyle
SeeAlso: ???
Feature: STYLE_MOTIF
-Description: Supports a Motif look and feel.
+Description: Supports a Motif look and feel.
Section: Styles
Requires:
Name: QMotifStyle
SeeAlso: ???
Feature: STYLE_CDE
-Description: Supports a CDE look and feel.
+Description: Supports a CDE look and feel.
Section: Styles
Requires: STYLE_MOTIF
Name: QCDEStyle
@@ -798,7 +798,7 @@ Name: QWindowsMobileStyle
SeeAlso: ???
Feature: STYLE_STYLESHEET
-Description:
+Description:
Section: Styles
Requires: STYLE_WINDOWS PROPERTIES CSSPARSER
Name: QStyleSheetStyle
@@ -809,14 +809,14 @@ SeeAlso: ???
Feature: IMAGEFORMATPLUGIN
Description: Supports writing an image format plugin.
Section: Images
-Requires:
+Requires:
Name: QImageIOPlugin
SeeAlso: ???
Feature: ICON
Description: Supports scalable icons in different modes and states.
Section: Images
-Requires:
+Requires:
Name: QIcon
SeeAlso: ???
@@ -837,14 +837,14 @@ SeeAlso: ???
Feature: IMAGEFORMAT_PPM
Description: Supports the Portable Pixmap image file format.
Section: Images
-Requires:
+Requires:
Name: PPM Image Format
SeeAlso: ???
Feature: IMAGEFORMAT_XBM
Description: Supports the X11 Bitmap image file format.
Section: Images
-Requires:
+Requires:
Name: XBM Image Format
SeeAlso: ???
@@ -858,14 +858,14 @@ SeeAlso: ???
Feature: IMAGEFORMAT_PNG
Description: Supports the Portable Network Graphics image file format.
Section: Images
-Requires:
+Requires:
Name: PNG Image Format
SeeAlso: ???
Feature: IMAGEFORMAT_JPEG
Description: Supports the Joint Photographic Experts Group image file format.
Section: Images
-Requires:
+Requires:
Name: JPEG Image Format
SeeAlso: ???
@@ -895,7 +895,7 @@ SeeAlso: ???
Feature: PICTURE
Description: Supports recording and replaying QPainter commands.
Section: Painting
-Requires:
+Requires:
Name: QPicture
SeeAlso: ???
@@ -908,9 +908,9 @@ Name: Color Names
SeeAlso: ???
Feature: PRINTER
-Description: Supports printing
+Description: Supports printing
Section: Painting
-Requires: TEXTSTREAM
+Requires: TEXTSTREAM PICTURE
Name: QPrinter
SeeAlso: ???
@@ -952,7 +952,7 @@ Name: Freetype Font Engine
SeeAlso: ???
Feature: QWS_QPF
-Description: Supports Qt's pre-rendered fonts, a light-weight non-scalable font format
+Description: Supports Qt's pre-rendered fonts, a light-weight non-scalable font format
specific to Qt for Embedded Linux.
Section: Fonts
Requires:
@@ -960,7 +960,7 @@ Name: Qt Prerendered Font Format
SeeAlso: ???
Feature: QWS_QPF2
-Description: Supports Qt's second generation of pre-rendered fonts, a light-weight
+Description: Supports Qt's second generation of pre-rendered fonts, a light-weight
non-scalable font format specific to Qt for Embedded Linux.
Section: Fonts
Requires:
@@ -987,7 +987,7 @@ Feature: TRANSLATION_UTF8
Description: Supports translations using QObject::trUtf8().
Section: Internationalization
Requires: TRANSLATION TEXTCODEC
-Name: Translation (UTF-8 representation)
+Name: Translation (UTF-8 representation)
SeeAlso: ???
Feature: TEXTCODEC
@@ -1007,14 +1007,14 @@ SeeAlso: ???
Feature: BIG_CODECS
Description: Supports big codecs, e.g. CJK.
Section: Internationalization
-Requires:
+Requires:
Name: Big Codecs
SeeAlso: ???
Feature: QWS_INPUTMETHODS
Description: Supports international input methods.
Section: Internationalization
-Requires:
+Requires:
Name: QWSInputMethod
SeeAlso: ???
@@ -1023,14 +1023,14 @@ SeeAlso: ???
Feature: URLINFO
Description: Supports storage of URL information.
Section: Networking
-Requires:
+Requires:
Name: QUrlInfo
SeeAlso: ???
Feature: HOSTINFO
Description: Supports host name lookups.
Section: Networking
-Requires: TEXTSTREAM
+Requires: TEXTSTREAM
Name: QHostInfo
SeeAlso: ???
@@ -1051,14 +1051,14 @@ SeeAlso: ???
Feature: UDPSOCKET
Description: Supports User Datagram Protocol sockets.
Section: Networking
-Requires:
+Requires:
Name: QUdpSocket
SeeAlso: ???
Feature: NETWORKPROXY
Description: Supports configuring network layer proxy support to the Qt network classes.
Section: Networking
-Requires:
+Requires:
Name: QNetworkProxy
SeeAlso: ???
@@ -1123,7 +1123,7 @@ Name: QUndoStack
SeeAlso: ???
Feature: UNDOGROUP
-Description:
+Description:
Section: Utilities
Requires: UNDOCOMMAND UNDOSTACK
Name: QUndoGroup
@@ -1181,7 +1181,7 @@ Name: QSvgRenderer
SeeAlso: ???
Feature: SVGWIDGET
-Description: Provides a widget that is used to display the contents of SVG files.
+Description: Provides a widget that is used to display the contents of SVG files.
Section: SVG
Requires: SVGRENDERER
Name: QSvgWidget
@@ -1233,21 +1233,21 @@ Name: Manager
SeeAlso: ???
Feature: QWS_DECORATION_DEFAULT
-Description: Supports default decoration of the top level windows.
+Description: Supports default decoration of the top level windows.
Section: Qt for Embedded Linux
-Requires:
+Requires:
Name: Decoration
SeeAlso: ???
Feature: QWS_DECORATION_WINDOWS
-Description: Supports a "Windows" style decoration of the top level windows.
+Description: Supports a "Windows" style decoration of the top level windows.
Section: Qt for Embedded Linux
Requires: QWS_DECORATION_DEFAULT
Name: Decoration (Windows Style)
SeeAlso: ???
Feature: QWS_DECORATION_STYLED
-Description: Supports styled decoration of the top level windows.
+Description: Supports styled decoration of the top level windows.
Section: Qt for Embedded Linux
Requires: QWS_DECORATION_DEFAULT
Name: Decoration (Styled)
@@ -1395,13 +1395,13 @@ SeeAlso: ???
Feature: PHONON_MEDIACONTROLLER
Description: Support for the MediaController class
Section: Phonon
-Requires:
+Requires:
Name: Phonon::MediaController
SeeAlso: ???
Feature: PHONON_ABSTRACTMEDIASTREAM
Description: Support for streaming of raw data (QIODevice...)
Section: Phonon
-Requires:
+Requires:
Name: Phonon::AbstractMediaStream
SeeAlso: ???
diff --git a/src/corelib/global/qglobal.cpp b/src/corelib/global/qglobal.cpp
index 8dc3d3ff9a..dd1dbd251f 100644
--- a/src/corelib/global/qglobal.cpp
+++ b/src/corelib/global/qglobal.cpp
@@ -1074,6 +1074,7 @@ bool qSharedBuild()
\value WV_XP Windows XP (operating system version 5.1)
\value WV_2003 Windows Server 2003, Windows Server 2003 R2, Windows Home Server, Windows XP Professional x64 Edition (operating system version 5.2)
\value WV_VISTA Windows Vista, Windows Server 2008 (operating system version 6.0)
+ \value WV_WINDOWS7 Windows 7 (operating system version 6.1)
Alternatively, you may use the following macros which correspond directly to the Windows operating system version number:
@@ -1082,6 +1083,7 @@ bool qSharedBuild()
\value WV_5_1 Operating system version 5.1, corresponds to Windows XP
\value WV_5_2 Operating system version 5.2, corresponds to Windows Server 2003, Windows Server 2003 R2, Windows Home Server, and Windows XP Professional x64 Edition
\value WV_6_0 Operating system version 6.0, corresponds to Windows Vista and Windows Server 2008
+ \value WV_6_1 Operating system version 6.1, corresponds to Windows 7
CE-based versions:
@@ -1115,6 +1117,7 @@ bool qSharedBuild()
\value MV_10_3 Mac OS X 10.3
\value MV_10_4 Mac OS X 10.4
\value MV_10_5 Mac OS X 10.5
+ \value MV_10_6 Mac OS X 10.6
\value MV_Unknown An unknown and currently unsupported platform
\value MV_CHEETAH Apple codename for MV_10_0
@@ -1123,6 +1126,7 @@ bool qSharedBuild()
\value MV_PANTHER Apple codename for MV_10_3
\value MV_TIGER Apple codename for MV_10_4
\value MV_LEOPARD Apple codename for MV_10_5
+ \value MV_SNOWLEOPARD Apple codename for MV_10_6
\sa WinVersion, SymVersion
*/
@@ -1683,16 +1687,19 @@ QSysInfo::WinVersion QSysInfo::windowsVersion()
default: // VER_PLATFORM_WIN32_NT
if (osver.dwMajorVersion < 5) {
winver = QSysInfo::WV_NT;
- } else if (osver.dwMajorVersion == 6) {
- winver = QSysInfo::WV_VISTA;
- } else if (osver.dwMinorVersion == 0) {
+ } else if (osver.dwMajorVersion == 5 && osver.dwMinorVersion == 0) {
winver = QSysInfo::WV_2000;
- } else if (osver.dwMinorVersion == 1) {
+ } else if (osver.dwMajorVersion == 5 && osver.dwMinorVersion == 1) {
winver = QSysInfo::WV_XP;
- } else if (osver.dwMinorVersion == 2) {
+ } else if (osver.dwMajorVersion == 5 && osver.dwMinorVersion == 2) {
winver = QSysInfo::WV_2003;
+ } else if (osver.dwMajorVersion == 6 && osver.dwMinorVersion == 0) {
+ winver = QSysInfo::WV_VISTA;
+ } else if (osver.dwMajorVersion == 6 && osver.dwMinorVersion == 1) {
+ winver = QSysInfo::WV_WINDOWS7;
} else {
- qWarning("Qt: Untested Windows version detected!");
+ qWarning("Qt: Untested Windows version %d.%d detected!",
+ osver.dwMajorVersion, osver.dwMinorVersion);
winver = QSysInfo::WV_NT_based;
}
}
@@ -1719,6 +1726,8 @@ QSysInfo::WinVersion QSysInfo::windowsVersion()
winver = QSysInfo::WV_XP;
else if (override == "VISTA")
winver = QSysInfo::WV_VISTA;
+ else if (override == "WINDOWS7")
+ winver = QSysInfo::WV_WINDOWS7;
}
#endif
@@ -2050,9 +2059,11 @@ QString qt_error_string(int errorCode)
The message handler is a function that prints out debug messages,
warnings, critical and fatal error messages. The Qt library (debug
- version) contains hundreds of warning messages that are printed
+ mode) contains hundreds of warning messages that are printed
when internal errors (usually invalid function arguments)
- occur. If you implement your own message handler, you get total
+ occur. Qt built in release mode also contains such warnings unless
+ QT_NO_WARNING_OUTPUT and/or QT_NO_DEBUG_OUTPUT have been set during
+ compilation. If you implement your own message handler, you get total
control of these messages.
The default message handler prints the message to the standard
@@ -2160,7 +2171,8 @@ void qt_message_output(QtMsgType msgType, const char *buf)
during compilation.
If you pass the function a format string and a list of arguments,
- it works in similar way to the C printf() function.
+ it works in similar way to the C printf() function. The format
+ should be a Latin-1 string.
Example:
@@ -2171,11 +2183,12 @@ void qt_message_output(QtMsgType msgType, const char *buf)
\snippet doc/src/snippets/code/src_corelib_global_qglobal.cpp 25
- This syntax automatically puts a single space between each item,
- and outputs a newline at the end. It supports many C++ and Qt
- types.
+ With this syntax, the function returns a QDebug object that is
+ configured to use the QtDebugMsg message type. It automatically
+ puts a single space between each item, and outputs a newline at
+ the end. It supports many C++ and Qt types.
- To supress the output at runtime, install your own message handler
+ To suppress the output at run-time, install your own message handler
with qInstallMsgHandler().
\sa qWarning(), qCritical(), qFatal(), qInstallMsgHandler(),
@@ -2205,7 +2218,8 @@ void qDebug(const char *msg, ...)
QT_FATAL_WARNINGS is defined.
This function takes a format string and a list of arguments,
- similar to the C printf() function.
+ similar to the C printf() function. The format should be a Latin-1
+ string.
Example:
\snippet doc/src/snippets/code/src_corelib_global_qglobal.cpp 26
@@ -2243,8 +2257,9 @@ void qWarning(const char *msg, ...)
message handler has been installed, the message is printed to
stderr. Under Windows, the message is sent to the debugger.
- This function takes a format string and a list of arguments, similar
- to the C printf() function.
+ This function takes a format string and a list of arguments,
+ similar to the C printf() function. The format should be a Latin-1
+ string.
Example:
\snippet doc/src/snippets/code/src_corelib_global_qglobal.cpp 28
@@ -3068,6 +3083,11 @@ bool QInternal::callFunction(InternalFunction func, void **args)
Compares the floating point value \a p1 and \a p2 and
returns \c true if they are considered equal, otherwise \c false.
+ Note that comparing values where either \a p1 or \a p2 is 0.0 will not work.
+ The solution to this is to compare against values greater than or equal to 1.0.
+
+ \snippet doc/src/snippets/code/src_corelib_global_qglobal.cpp 46
+
The two numbers are compared in a relative way, where the
exactness is stronger the smaller the numbers are.
*/
@@ -3099,4 +3119,24 @@ bool QInternal::callFunction(InternalFunction func, void **args)
\snippet doc/src/snippets/code/src_gui_dialogs_qmessagebox.cpp 4
*/
+/*!
+ \macro Q_DECL_EXPORT
+ \relates <QtGlobal>
+
+ This macro marks a symbol for shared library export (see
+ \l{sharedlibrary.html}{Creating Shared Libraries}).
+
+ \sa Q_DECL_IMPORT
+*/
+
+/*!
+ \macro Q_DECL_IMPORT
+ \relates <QtGlobal>
+
+ This macro declares a symbol to be an import from a shared library (see
+ \l{sharedlibrary.html}{Creating Shared Libraries}).
+
+ \sa Q_DECL_EXPORT
+*/
+
QT_END_NAMESPACE
diff --git a/src/corelib/global/qglobal.h b/src/corelib/global/qglobal.h
index 8d1bea247d..27aaac136d 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))
*/
@@ -1346,6 +1346,7 @@ public:
WV_XP = 0x0030,
WV_2003 = 0x0040,
WV_VISTA = 0x0080,
+ WV_WINDOWS7 = 0x0090,
WV_NT_based = 0x00f0,
/* version numbers */
@@ -1354,6 +1355,7 @@ public:
WV_5_1 = WV_XP,
WV_5_2 = WV_2003,
WV_6_0 = WV_VISTA,
+ WV_6_1 = WV_WINDOWS7,
WV_CE = 0x0100,
WV_CENET = 0x0200,
@@ -1377,6 +1379,7 @@ public:
MV_10_3 = 0x0005,
MV_10_4 = 0x0006,
MV_10_5 = 0x0007,
+ MV_10_6 = 0x0008,
/* codenames */
MV_CHEETAH = MV_10_0,
@@ -1384,7 +1387,8 @@ public:
MV_JAGUAR = MV_10_2,
MV_PANTHER = MV_10_3,
MV_TIGER = MV_10_4,
- MV_LEOPARD = MV_10_5
+ MV_LEOPARD = MV_10_5,
+ MV_SNOWLEOPARD = MV_10_6
};
static const MacVersion MacintoshVersion;
#endif
@@ -2323,9 +2327,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/qnamespace.h b/src/corelib/global/qnamespace.h
index 64afe0a865..7d8b321d9c 100644
--- a/src/corelib/global/qnamespace.h
+++ b/src/corelib/global/qnamespace.h
@@ -284,9 +284,7 @@ public:
WindowStaysOnTopHint = 0x00040000,
// reserved for Qt3Support:
// WMouseNoMask = 0x00080000,
- WindowOkButtonHint = 0x00080000,
// WDestructiveClose = 0x00100000,
- WindowCancelButtonHint = 0x00100000,
// WStaticContents = 0x00200000,
// WGroupLeader = 0x00400000,
// WShowModal = 0x00800000,
@@ -295,7 +293,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/qdiriterator.cpp b/src/corelib/io/qdiriterator.cpp
index 46c7dd8bec..b14f4366b7 100644
--- a/src/corelib/io/qdiriterator.cpp
+++ b/src/corelib/io/qdiriterator.cpp
@@ -116,7 +116,9 @@ public:
QAbstractFileEngine *engine;
QStack<QAbstractFileEngineIterator *> fileEngineIterators;
QString path;
- QFileInfo fileInfo;
+ QFileInfo nextFileInfo;
+ //This fileinfo is the current that we will return from the public API
+ QFileInfo currentFileInfo;
QString currentFilePath;
QDirIterator::IteratorFlags iteratorFlags;
QDir::Filters filters;
@@ -140,8 +142,8 @@ QDirIteratorPrivate::QDirIteratorPrivate(const QString &path, const QStringList
this->filters = filters;
this->nameFilters = nameFilters;
- fileInfo.setFile(path);
- pushSubDirectory(fileInfo.isSymLink() ? fileInfo.canonicalFilePath() : path,
+ nextFileInfo.setFile(path);
+ pushSubDirectory(nextFileInfo.isSymLink() ? nextFileInfo.canonicalFilePath() : path,
nameFilters, filters);
}
@@ -160,12 +162,12 @@ void QDirIteratorPrivate::pushSubDirectory(const QString &path, const QStringLis
QDir::Filters filters)
{
if (iteratorFlags & QDirIterator::FollowSymlinks) {
- if (fileInfo.filePath() != path)
- fileInfo.setFile(path);
- if (fileInfo.isSymLink()) {
- visitedLinks << fileInfo.canonicalFilePath();
+ if (nextFileInfo.filePath() != path)
+ nextFileInfo.setFile(path);
+ if (nextFileInfo.isSymLink()) {
+ visitedLinks << nextFileInfo.canonicalFilePath();
} else {
- visitedLinks << fileInfo.absoluteFilePath();
+ visitedLinks << nextFileInfo.absoluteFilePath();
}
}
@@ -199,8 +201,8 @@ void QDirIteratorPrivate::advance()
QString subDir = it->currentFilePath();
#ifdef Q_OS_WIN
- if (fileInfo.isSymLink())
- subDir = fileInfo.canonicalFilePath();
+ if (currentFileInfo.isSymLink())
+ subDir = currentFileInfo.canonicalFilePath();
#endif
pushSubDirectory(subDir, it->nameFilters(), it->filters());
}
@@ -213,15 +215,16 @@ void QDirIteratorPrivate::advance()
while (it->hasNext()) {
it->next();
if (matchesFilters(it)) {
- fileInfo = it->currentFileInfo();
+ currentFileInfo = nextFileInfo;
+ nextFileInfo = it->currentFileInfo();
// Signal that we want to follow this entry.
- followNextDir = shouldFollowDirectory(fileInfo);
-
+ followNextDir = shouldFollowDirectory(nextFileInfo);
//We found a matching entry.
return;
} else if (iteratorFlags & QDirIterator::Subdirectories) {
QFileInfo fileInfo = it->currentFileInfo();
+
if (!shouldFollowDirectory(fileInfo))
continue;
QString subDir = it->currentFilePath();
@@ -238,6 +241,7 @@ void QDirIteratorPrivate::advance()
if (!foundDirectory)
delete fileEngineIterators.pop();
}
+ currentFileInfo = nextFileInfo;
done = true;
}
@@ -518,9 +522,7 @@ bool QDirIterator::hasNext() const
*/
QString QDirIterator::fileName() const
{
- if (d->fileInfo.path() != d->currentFilePath)
- d->fileInfo.setFile(d->currentFilePath);
- return d->fileInfo.fileName();
+ return d->currentFileInfo.fileName();
}
/*!
@@ -543,9 +545,7 @@ QString QDirIterator::filePath() const
*/
QFileInfo QDirIterator::fileInfo() const
{
- if (d->fileInfo.filePath() != d->currentFilePath)
- d->fileInfo.setFile(d->currentFilePath);
- return d->fileInfo;
+ return d->currentFileInfo;
}
/*!
diff --git a/src/corelib/io/qfile.cpp b/src/corelib/io/qfile.cpp
index 8926bf3cef..af10c3137f 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;
}
}
@@ -892,7 +903,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 4445e3c350..fa44531f8b 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/qprocess.cpp b/src/corelib/io/qprocess.cpp
index 65ffec784b..8183527cdb 100644
--- a/src/corelib/io/qprocess.cpp
+++ b/src/corelib/io/qprocess.cpp
@@ -1496,11 +1496,15 @@ QByteArray QProcess::readAllStandardError()
}
/*!
- Starts the program \a program in a new process, passing the
- command line arguments in \a arguments. The OpenMode is set to \a
- mode. QProcess will immediately enter the Starting state. If the
- process starts successfully, QProcess will emit started();
- otherwise, error() will be emitted.
+ Starts the program \a program in a new process, if one is not already
+ running, passing the command line arguments in \a arguments. The OpenMode
+ is set to \a mode.
+
+ The QProcess object will immediately enter the Starting state. If the
+ process starts successfully, QProcess will emit started(); otherwise,
+ error() will be emitted. If the QProcess object is already running a
+ process, a warning may be printed at the console, and the existing
+ process will continue running.
Note that arguments that contain spaces are not passed to the
process as separate arguments.
@@ -1597,10 +1601,10 @@ static QStringList parseCombinedArgString(const QString &program)
/*!
\overload
- Starts the program \a program in a new process. \a program is a
- single string of text containing both the program name and its
- arguments. The arguments are separated by one or more
- spaces. For example:
+ Starts the program \a program in a new process, if one is not already
+ running. \a program is a single string of text containing both the
+ program name and its arguments. The arguments are separated by one or
+ more spaces. For example:
\snippet doc/src/snippets/code/src_corelib_io_qprocess.cpp 5
@@ -1609,6 +1613,9 @@ static QStringList parseCombinedArgString(const QString &program)
\snippet doc/src/snippets/code/src_corelib_io_qprocess.cpp 6
+ If the QProcess object is already running a process, a warning may be
+ printed at the console, and the existing process will continue running.
+
Note that, on Windows, quotes need to be both escaped and quoted.
For example, the above code would be specified in the following
way to ensure that \c{"My Documents"} is used as the argument to
@@ -1621,6 +1628,13 @@ static QStringList parseCombinedArgString(const QString &program)
void QProcess::start(const QString &program, OpenMode mode)
{
QStringList args = parseCombinedArgString(program);
+ if (args.isEmpty()) {
+ Q_D(QProcess);
+ d->processError = QProcess::FailedToStart;
+ setErrorString(tr("No program defined"));
+ emit error(d->processError);
+ return;
+ }
QString prog = args.first();
args.removeFirst();
@@ -1795,6 +1809,8 @@ bool QProcess::startDetached(const QString &program,
bool QProcess::startDetached(const QString &program)
{
QStringList args = parseCombinedArgString(program);
+ if (args.isEmpty())
+ return false;
QString prog = args.first();
args.removeFirst();
diff --git a/src/corelib/io/qprocess_unix.cpp b/src/corelib/io/qprocess_unix.cpp
index 37173c8bf4..33d4a477c7 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/qsettings.cpp b/src/corelib/io/qsettings.cpp
index 62b4ed5e90..484e79ac76 100644
--- a/src/corelib/io/qsettings.cpp
+++ b/src/corelib/io/qsettings.cpp
@@ -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 d67d2ea21b..3aea508184 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
diff --git a/src/corelib/io/qtextstream.cpp b/src/corelib/io/qtextstream.cpp
index 512332ec55..ed9d0aa8af 100644
--- a/src/corelib/io/qtextstream.cpp
+++ b/src/corelib/io/qtextstream.cpp
@@ -1370,7 +1370,7 @@ QTextStream::FieldAlignment QTextStream::fieldAlignment() const
\snippet doc/src/snippets/code/src_corelib_io_qtextstream.cpp 5
- The string \a s contains:
+ The string \c s contains:
\snippet doc/src/snippets/code/src_corelib_io_qtextstream.cpp 6
diff --git a/src/corelib/kernel/qcoreapplication.cpp b/src/corelib/kernel/qcoreapplication.cpp
index 15a5bf7486..12b80f6b02 100644
--- a/src/corelib/kernel/qcoreapplication.cpp
+++ b/src/corelib/kernel/qcoreapplication.cpp
@@ -389,6 +389,14 @@ QString qAppName()
QLibrary) can be retrieved with libraryPaths() and manipulated by
setLibraryPaths(), addLibraryPath(), and removeLibraryPath().
+ On Unix/Linux Qt is configured to use the system local settings by
+ default. This can cause a conflict when using POSIX functions, for
+ instance, when converting between data types such as floats and
+ strings, since the notation may differ between locales. To get
+ around this problem call the POSIX function setlocale(LC_NUMERIC,"C")
+ right after initializing QApplication or QCoreApplication to reset
+ the locale that is used for number formatting to "C"-locale.
+
\sa QApplication, QAbstractEventDispatcher, QEventLoop,
{Semaphores Example}, {Wait Conditions Example}
*/
diff --git a/src/corelib/kernel/qcoreevent.cpp b/src/corelib/kernel/qcoreevent.cpp
index 3fcfc98c50..11a2d3cff3 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 5487703d75..fa472e6d79 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 3fd768a45e..3c5b2772c3 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 880e95ca7a..c4061f4867 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 92bdf733e7..600f787130 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/qmetaobject.cpp b/src/corelib/kernel/qmetaobject.cpp
index 719398c948..b65f9560b3 100644
--- a/src/corelib/kernel/qmetaobject.cpp
+++ b/src/corelib/kernel/qmetaobject.cpp
@@ -1007,6 +1007,11 @@ enum { MaximumParamCount = 11 }; // up to 10 arguments + 1 return value
a QEvent will be sent and the member is invoked as soon as the application
enters the main event loop.
+ \o If \a type is Qt::BlockingQueuedConnection, the method will be invoked in
+ the same way as for Qt::QueuedConnection, except that the current thread
+ will block until the event is delivered. Using this connection type to
+ communicate between objects in the same thread will lead to deadlocks.
+
\o If \a type is Qt::AutoConnection, the member is invoked
synchronously if \a obj lives in the same thread as the
caller; otherwise it will invoke the member asynchronously.
@@ -1897,6 +1902,12 @@ static QByteArray qualifiedName(const QMetaEnum &e)
\ingroup objectmodel
+ Property meta-data is obtained from an object's meta-object. See
+ QMetaObject::property() and QMetaObject::propertyCount() for
+ details.
+
+ \section1 Property Meta-Data
+
A property has a name() and a type(), as well as various
attributes that specify its behavior: isReadable(), isWritable(),
isDesignable(), isScriptable(), and isStored().
@@ -1912,9 +1923,10 @@ static QByteArray qualifiedName(const QMetaEnum &e)
functions. See QObject::setProperty() and QObject::property() for
details.
- You get property meta-data through an object's meta-object. See
- QMetaObject::property() and QMetaObject::propertyCount() for
- details.
+ \section1 Copying and Assignment
+
+ QMetaProperty objects can be copied by value. However, each copy will
+ refer to the same underlying property meta-data.
\sa QMetaObject, QMetaEnum, QMetaMethod, {Qt's Property System}
*/
diff --git a/src/corelib/kernel/qmetatype.cpp b/src/corelib/kernel/qmetatype.cpp
index 4d7d3094a8..ce10bae2f3 100644
--- a/src/corelib/kernel/qmetatype.cpp
+++ b/src/corelib/kernel/qmetatype.cpp
@@ -1255,7 +1255,7 @@ void QMetaType::destroy(int type, void *data)
\relates QMetaType
\threadsafe
- Registers the type name \a typeName to the type \c{T}. Returns
+ Registers the type name \a typeName for the type \c{T}. Returns
the internal ID used by QMetaType. Any class or struct that has a
public default constructor, a public copy constructor and a public
destructor can be registered.
diff --git a/src/corelib/kernel/qtranslator.cpp b/src/corelib/kernel/qtranslator.cpp
index cdddf3626a..77d6599ccc 100644
--- a/src/corelib/kernel/qtranslator.cpp
+++ b/src/corelib/kernel/qtranslator.cpp
@@ -95,8 +95,7 @@ static bool match(const uchar* found, const char* target, uint len)
// (normalize it to be without the zero-terminating symbol)
if (len > 0 && found[len-1] == '\0')
--len;
- // 0 means anything, "" means empty
- return !found || (qstrncmp((const char *)found, target, len) == 0 && target[len] == '\0');
+ return (memcmp(found, target, len) == 0 && target[len] == '\0');
}
static uint elfHash(const char *name)
@@ -765,8 +764,6 @@ void QTranslatorPrivate::clear()
}
/*!
- \since 4.5
-
Returns the translation for the key (\a context, \a sourceText,
\a disambiguation). If none is found, also tries (\a context, \a
sourceText, ""). If that still fails, returns an empty string.
diff --git a/src/corelib/thread/qmutexpool.cpp b/src/corelib/thread/qmutexpool.cpp
index 71ecab558f..96a99406c4 100644
--- a/src/corelib/thread/qmutexpool.cpp
+++ b/src/corelib/thread/qmutexpool.cpp
@@ -96,9 +96,8 @@ Q_GLOBAL_STATIC_WITH_ARGS(QMutexPool, globalMutexPool, (true))
QMutexPool is destructed.
*/
QMutexPool::QMutexPool(bool recursive, int size)
- : count(size), recurs(recursive)
+ : mutexes(size), count(size), recurs(recursive)
{
- mutexes = new QMutex*[count];
for (int index = 0; index < count; ++index) {
mutexes[index] = 0;
}
@@ -110,13 +109,10 @@ QMutexPool::QMutexPool(bool recursive, int size)
*/
QMutexPool::~QMutexPool()
{
- QMutexLocker locker(&mutex);
for (int index = 0; index < count; ++index) {
delete mutexes[index];
mutexes[index] = 0;
}
- delete [] mutexes;
- mutexes = 0;
}
/*!
@@ -138,12 +134,9 @@ QMutex *QMutexPool::get(const void *address)
if (!mutexes[index]) {
// mutex not created, create one
-
- QMutexLocker locker(&mutex);
- // we need to check once again that the mutex hasn't been created, since
- // 2 threads could be trying to create a mutex at the same index...
- if (!mutexes[index])
- mutexes[index] = new QMutex(recurs ? QMutex::Recursive : QMutex::NonRecursive);
+ QMutex *newMutex = new QMutex(recurs ? QMutex::Recursive : QMutex::NonRecursive);
+ if (!mutexes[index].testAndSetOrdered(0, newMutex))
+ delete newMutex;
}
return mutexes[index];
diff --git a/src/corelib/thread/qmutexpool_p.h b/src/corelib/thread/qmutexpool_p.h
index 65a3b543fe..1009ebbdcf 100644
--- a/src/corelib/thread/qmutexpool_p.h
+++ b/src/corelib/thread/qmutexpool_p.h
@@ -53,7 +53,9 @@
// We mean it.
//
+#include "QtCore/qatomic.h"
#include "QtCore/qmutex.h"
+#include "QtCore/qvarlengtharray.h"
#ifndef QT_NO_THREAD
@@ -70,8 +72,7 @@ public:
static QMutex *globalInstanceGet(const void *address);
private:
- QMutex mutex;
- QMutex **mutexes;
+ QVarLengthArray<QAtomicPointer<QMutex>, 128> mutexes;
int count;
bool recurs;
};
diff --git a/src/corelib/thread/qthread.cpp b/src/corelib/thread/qthread.cpp
index a304305f8d..cb44a256d0 100644
--- a/src/corelib/thread/qthread.cpp
+++ b/src/corelib/thread/qthread.cpp
@@ -300,6 +300,12 @@ QThreadPrivate::~QThreadPrivate()
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()
*/
@@ -593,6 +599,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 0e1769aa6c..aad55bc659 100644
--- a/src/corelib/thread/qthread_unix.cpp
+++ b/src/corelib/thread/qthread_unix.cpp
@@ -207,8 +207,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();
#ifndef Q_OS_SYMBIAN
diff --git a/src/corelib/thread/qthread_win.cpp b/src/corelib/thread/qthread_win.cpp
index 27193c6211..7094e3d3cf 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 cd4cf90775..211d1903a8 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 d7f2366211..633e92c25d 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((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 540f43da11..21d98b530c 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
diff --git a/src/corelib/tools/qlinkedlist.cpp b/src/corelib/tools/qlinkedlist.cpp
index a3cbecc99d..c454224478 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 2b1c086776..d7c39a71c3 100644
--- a/src/corelib/tools/qlistdata.cpp
+++ b/src/corelib/tools/qlistdata.cpp
@@ -1193,7 +1193,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 +1416,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 b3c1466517..426756245e 100644
--- a/src/corelib/tools/qlocale.cpp
+++ b/src/corelib/tools/qlocale.cpp
@@ -5197,7 +5197,8 @@ double QLocalePrivate::stringToDouble(const QString &number, bool *ok,
GroupSeparatorMode group_sep_mode) const
{
CharBuff buff;
- if (!numberToCLocale(number, group_sep_mode, &buff)) {
+ if (!numberToCLocale(group().unicode() == 0xa0 ? number.trimmed() : number,
+ group_sep_mode, &buff)) {
if (ok != 0)
*ok = false;
return 0.0;
@@ -5209,7 +5210,8 @@ qlonglong QLocalePrivate::stringToLongLong(const QString &number, int base,
bool *ok, GroupSeparatorMode group_sep_mode) const
{
CharBuff buff;
- if (!numberToCLocale(number, group_sep_mode, &buff)) {
+ if (!numberToCLocale(group().unicode() == 0xa0 ? number.trimmed() : number,
+ group_sep_mode, &buff)) {
if (ok != 0)
*ok = false;
return 0;
@@ -5222,7 +5224,8 @@ qulonglong QLocalePrivate::stringToUnsLongLong(const QString &number, int base,
bool *ok, GroupSeparatorMode group_sep_mode) const
{
CharBuff buff;
- if (!numberToCLocale(number, group_sep_mode, &buff)) {
+ if (!numberToCLocale(group().unicode() == 0xa0 ? number.trimmed() : number,
+ group_sep_mode, &buff)) {
if (ok != 0)
*ok = false;
return 0;
diff --git a/src/corelib/tools/qsharedpointer.cpp b/src/corelib/tools/qsharedpointer.cpp
index d8a9923e6d..c3a989e7fc 100644
--- a/src/corelib/tools/qsharedpointer.cpp
+++ b/src/corelib/tools/qsharedpointer.cpp
@@ -842,15 +842,19 @@ QT_BEGIN_NAMESPACE
*/
void QtSharedPointer::internalSafetyCheckAdd(const volatile void *ptr)
{
- QMutexLocker lock(&knownPointers()->mutex);
+ KnownPointers *const kp = knownPointers();
+ if (!kp)
+ return; // end-game: the application is being destroyed already
+
+ QMutexLocker lock(&kp->mutex);
void *actual = const_cast<void*>(ptr);
- if (knownPointers()->values.contains(actual)) {
+ if (kp->values.contains(actual)) {
printBacktrace(knownPointers()->values.value(actual));
qFatal("QSharedPointerData: internal self-check failed: pointer %p was already tracked "
"by another QSharedPointerData object", actual);
}
- knownPointers()->values.insert(actual, saveBacktrace());
+ kp->values.insert(actual, saveBacktrace());
}
/*!
@@ -858,9 +862,13 @@ void QtSharedPointer::internalSafetyCheckAdd(const volatile void *ptr)
*/
void QtSharedPointer::internalSafetyCheckRemove(const volatile void *ptr)
{
- QMutexLocker lock(&knownPointers()->mutex);
+ KnownPointers *const kp = knownPointers();
+ if (!kp)
+ return; // end-game: the application is being destroyed already
+
+ QMutexLocker lock(&kp->mutex);
void *actual = const_cast<void*>(ptr);
- knownPointers()->values.remove(actual);
+ kp->values.remove(actual);
}
QT_END_NAMESPACE
diff --git a/src/corelib/tools/qstring.cpp b/src/corelib/tools/qstring.cpp
index 1b29adcfd2..375d672f86 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
@@ -1433,7 +1433,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 +1552,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 +1561,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 +1600,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 +1631,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 +1683,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 +1710,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 +2248,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 +2344,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 +2406,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 +2444,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;
@@ -4864,7 +4862,8 @@ QString QString::toUpper() const
a pointer to a zero-terminated array of unicode characters of type
ushort (as returned by QString::utf16()).
- \note This function expects a UTF-8 string for %s.
+ \note This function expects a UTF-8 string for %s and Latin-1 for
+ the format string.
The format string supports most of the conversion specifiers
provided by printf() in the standard C++ library. It doesn't
@@ -5994,7 +5993,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) {
@@ -6206,7 +6205,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
@@ -6818,7 +6817,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/qvector.h b/src/corelib/tools/qvector.h
index 6bea03b936..3fd52ee1a1 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
{
diff --git a/src/dbus/qdbusintegrator.cpp b/src/dbus/qdbusintegrator.cpp
index 91b9cb1d98..8c701f5b31 100644
--- a/src/dbus/qdbusintegrator.cpp
+++ b/src/dbus/qdbusintegrator.cpp
@@ -137,6 +137,7 @@ static dbus_bool_t qDBusAddTimeout(DBusTimeout *timeout, void *data)
if (!q_dbus_timeout_get_enabled(timeout))
return true;
+ QDBusWatchAndTimeoutLocker locker(AddTimeoutAction, d);
if (QCoreApplication::instance() && QThread::currentThread() == d->thread()) {
// correct thread
return qDBusRealAddTimeout(d, timeout, q_dbus_timeout_get_interval(timeout));
@@ -152,7 +153,6 @@ static dbus_bool_t qDBusAddTimeout(DBusTimeout *timeout, void *data)
static bool qDBusRealAddTimeout(QDBusConnectionPrivate *d, DBusTimeout *timeout, int ms)
{
- QDBusWatchAndTimeoutLocker locker(AddTimeoutAction, d);
Q_ASSERT(d->timeouts.keys(timeout).isEmpty());
int timerId = d->startTimer(ms);
@@ -921,10 +921,9 @@ QDBusConnectionPrivate::QDBusConnectionPrivate(QObject *p)
rootNode(QString(QLatin1Char('/')))
{
static const bool threads = qDBusInitThreads();
- static const int debugging = qgetenv("QDBUS_DEBUG").toInt();
+ static const int debugging = ::isDebugging = qgetenv("QDBUS_DEBUG").toInt();
Q_UNUSED(threads)
- ::isDebugging = debugging;
#ifdef QDBUS_THREAD_DEBUG
if (debugging > 1)
qdbusThreadDebug = qdbusDefaultThreadDebug;
@@ -1036,15 +1035,16 @@ void QDBusConnectionPrivate::customEvent(QEvent *e)
QDBusLockerBase::BeforeDeliver, this);
switch (ev->subtype)
{
- case QDBusConnectionCallbackEvent::AddTimeout:
+ case QDBusConnectionCallbackEvent::AddTimeout: {
+ QDBusWatchAndTimeoutLocker locker(RealAddTimeoutAction, this);
while (!timeoutsPendingAdd.isEmpty()) {
QPair<DBusTimeout *, int> entry = timeoutsPendingAdd.takeFirst();
qDBusRealAddTimeout(this, entry.first, entry.second);
}
break;
+ }
case QDBusConnectionCallbackEvent::KillTimer:
- qDebug() << QThread::currentThread() << "RemoveTimeout: killing timer" << (ev->timerId & 0xffffff);
killTimer(ev->timerId);
break;
diff --git a/src/dbus/qdbuspendingreply.h b/src/dbus/qdbuspendingreply.h
index 3880a7fcb6..5ec9800a34 100644
--- a/src/dbus/qdbuspendingreply.h
+++ b/src/dbus/qdbuspendingreply.h
@@ -95,7 +95,7 @@ namespace QDBusPendingReplyTypes {
enum { Total = Next::Total + 1 };
static inline void fillMetaTypes(int *p)
{
- *p = metaTypeFor<T1>();
+ *p = metaTypeFor<T1>(0);
Next::fillMetaTypes(++p);
}
};
@@ -171,7 +171,7 @@ public:
Q_ASSERT_X(Index < count() && Index >= 0, "QDBusPendingReply::argumentAt",
"Index out of bounds");
typedef typename Select<Index>::Type ResultType;
- return qdbus_cast<ResultType>(argumentAt(Index));
+ return qdbus_cast<ResultType>(argumentAt(Index), 0);
}
inline typename Select<0>::Type value() const
diff --git a/src/dbus/qdbusthreaddebug_p.h b/src/dbus/qdbusthreaddebug_p.h
index 715bd6fee3..20d819f425 100644
--- a/src/dbus/qdbusthreaddebug_p.h
+++ b/src/dbus/qdbusthreaddebug_p.h
@@ -92,9 +92,10 @@ enum ThreadAction {
PendingCallBlockAction = 28,
AddTimeoutAction = 50,
- RemoveTimeoutAction = 51,
- KillTimerAction = 52,
- TimerEventAction = 53,
+ RealAddTimeoutAction = 51,
+ RemoveTimeoutAction = 52,
+ KillTimerAction = 58,
+ TimerEventAction = 59,
AddWatchAction = 60,
RemoveWatchAction = 61,
ToggleWatchAction = 62,
diff --git a/src/gui/accessible/qaccessible_mac.mm b/src/gui/accessible/qaccessible_mac.mm
index b6412c2113..68efb8f8b3 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 4b2b2abe76..753ac575e5 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/qcolordialog.cpp b/src/gui/dialogs/qcolordialog.cpp
index b744dca1c8..3aa04f6a5b 100644
--- a/src/gui/dialogs/qcolordialog.cpp
+++ b/src/gui/dialogs/qcolordialog.cpp
@@ -1523,10 +1523,10 @@ static const Qt::WindowFlags DefaultWindowFlags =
If you require a modeless dialog, use the QColorDialog constructor.
\endomit
- The static getColor() function shows the dialog, and allows the
- user to specify a color. The getRgba() function does the same, but
- also allows the user to specify a color with an alpha channel
- (transparency) value.
+ The static getColor() function shows the dialog, and allows the user to
+ specify a color. This function can also be used to let users choose a
+ color with a level of transparency: pass the ShowAlphaChannel option as
+ an additional argument.
The user can store customCount() different custom colors. The
custom colors are shared by all color dialogs, and remembered
diff --git a/src/gui/dialogs/qfiledialog.cpp b/src/gui/dialogs/qfiledialog.cpp
index 9bcb666bdd..7056575f10 100644
--- a/src/gui/dialogs/qfiledialog.cpp
+++ b/src/gui/dialogs/qfiledialog.cpp
@@ -696,7 +696,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);
}
@@ -960,25 +963,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);
}
@@ -1436,6 +1443,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());
}
/*!
@@ -1592,7 +1601,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;
@@ -1677,7 +1691,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;
@@ -1763,7 +1782,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;
@@ -2127,6 +2151,7 @@ void QFileDialogPrivate::createWidgets()
#ifndef QT_NO_COMPLETER
completer = new QFSCompletor(model, q);
qFileDialogUi->fileNameEdit->setCompleter(completer);
+ completer->sourceModel = model;
QObject::connect(qFileDialogUi->fileNameEdit, SIGNAL(textChanged(QString)),
q, SLOT(_q_autoCompleteFileName(QString)));
#endif // QT_NO_COMPLETER
@@ -2249,12 +2274,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 &)));
}
@@ -2767,8 +2801,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 = mapToSource(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
@@ -3142,7 +3177,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)) {
@@ -3195,7 +3234,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 4c13d0113c..90af9fc0ad 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 ef282ae650..bbd4af35fa 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(QAbstractItemModel *model, QObject *parent = 0) : QCompleter(model, parent), proxyModel(0), sourceModel(0)
+ {
+#ifdef Q_OS_WIN || defined(Q_OS_SYMBIAN)
+ 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)
- {
-#if defined(Q_OS_WIN) || defined(Q_OS_SYMBIAN)
- 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/qfileinfogatherer.cpp b/src/gui/dialogs/qfileinfogatherer.cpp
index 7b849f7520..a2abe5479c 100644
--- a/src/gui/dialogs/qfileinfogatherer.cpp
+++ b/src/gui/dialogs/qfileinfogatherer.cpp
@@ -168,6 +168,20 @@ void QFileInfoGatherer::clear()
}
/*
+ Remove a \a path from the watcher
+
+ \sa listed()
+*/
+void QFileInfoGatherer::removePath(const QString &path)
+{
+#ifndef QT_NO_FILESYSTEMWATCHER
+ mutex.lock();
+ watcher->removePath(path);
+ mutex.unlock();
+#endif
+}
+
+/*
List all files in \a directoryPath
\sa listed()
@@ -288,15 +302,9 @@ QString QFileInfoGatherer::translateDriveName(const QFileInfo &drive) const
void QFileInfoGatherer::getFileInfos(const QString &path, const QStringList &files)
{
#ifndef QT_NO_FILESYSTEMWATCHER
- //### We test here if the path still exist before adding it in the watcher
- //### because sometime the file is deleted just before enter here so QStringList files is not up to date
- //### It is not a proper fix, perhaps in 4.6 we should have a better way to avoid that
- //### to ensure the gatherer have fresh information
- QFileInfo info(path);
if (files.isEmpty()
&& !watcher->directories().contains(path)
&& !path.isEmpty()
- && info.exists()
&& !path.startsWith(QLatin1String("//")) /*don't watch UNC path*/) {
watcher->addPath(path);
}
diff --git a/src/gui/dialogs/qfileinfogatherer_p.h b/src/gui/dialogs/qfileinfogatherer_p.h
index eac0d462e2..60b9d5fe42 100644
--- a/src/gui/dialogs/qfileinfogatherer_p.h
+++ b/src/gui/dialogs/qfileinfogatherer_p.h
@@ -161,6 +161,7 @@ public:
~QFileInfoGatherer();
void clear();
+ void removePath(const QString &path);
QExtendedInformation getInfo(const QFileInfo &info) const;
public Q_SLOTS:
diff --git a/src/gui/dialogs/qfilesystemmodel.cpp b/src/gui/dialogs/qfilesystemmodel.cpp
index 8b68411824..b202629522 100644
--- a/src/gui/dialogs/qfilesystemmodel.cpp
+++ b/src/gui/dialogs/qfilesystemmodel.cpp
@@ -166,6 +166,8 @@ bool QFileSystemModel::remove(const QModelIndex &aindex) const
{
//### TODO optim
QString path = filePath(aindex);
+ QFileSystemModelPrivate * d = const_cast<QFileSystemModelPrivate*>(d_func());
+ d->fileInfoGatherer.removePath(path);
QDirIterator it(path,
QDir::AllDirs | QDir:: Files | QDir::NoDotAndDotDot,
QDirIterator::Subdirectories);
@@ -375,7 +377,7 @@ QFileSystemModelPrivate::QFileSystemNode *QFileSystemModelPrivate::node(const QS
if (!info.exists())
return rootNode;
QFileSystemModelPrivate *p = const_cast<QFileSystemModelPrivate*>(this);
- p->addNode(rootNode, host);
+ p->addNode(rootNode, host,info);
p->addVisibleFiles(rootNode, QStringList(host));
}
r = rootNode->visibleLocation(host);
@@ -407,6 +409,7 @@ QFileSystemModelPrivate::QFileSystemNode *QFileSystemModelPrivate::node(const QS
#endif
QFileSystemModelPrivate::QFileSystemNode *parent = node(index);
+
for (int i = 0; i < pathElements.count(); ++i) {
QString element = pathElements.at(i);
#ifdef Q_OS_WIN
@@ -435,7 +438,7 @@ QFileSystemModelPrivate::QFileSystemNode *QFileSystemModelPrivate::node(const QS
if (!info.exists())
return const_cast<QFileSystemModelPrivate::QFileSystemNode*>(&root);
QFileSystemModelPrivate *p = const_cast<QFileSystemModelPrivate*>(this);
- node = p->addNode(parent, element);
+ node = p->addNode(parent, element,info);
#ifndef QT_NO_FILESYSTEMWATCHER
node->populate(fileInfoGatherer.getInfo(info));
#endif
@@ -855,7 +858,7 @@ bool QFileSystemModel::setData(const QModelIndex &idx, const QVariant &value, in
QFileSystemModelPrivate::QFileSystemNode *parentNode = indexNode->parent;
int visibleLocation = parentNode->visibleLocation(parentNode->children.value(indexNode->fileName)->fileName);
- d->addNode(parentNode, newName);
+ d->addNode(parentNode, newName,indexNode->info->fileInfo());
parentNode->visibleChildren.removeAt(visibleLocation);
QFileSystemModelPrivate::QFileSystemNode * oldValue = parentNode->children.value(oldName);
parentNode->children[newName] = oldValue;
@@ -1294,7 +1297,7 @@ QModelIndex QFileSystemModel::mkdir(const QModelIndex &parent, const QString &na
if (!dir.mkdir(name))
return QModelIndex();
QFileSystemModelPrivate::QFileSystemNode *parentNode = d->node(parent);
- d->addNode(parentNode, name);
+ d->addNode(parentNode, name, QFileInfo());
Q_ASSERT(parentNode->children.contains(name));
QFileSystemModelPrivate::QFileSystemNode *node = parentNode->children[name];
node->populate(d->fileInfoGatherer.getInfo(QFileInfo(dir.absolutePath() + QDir::separator() + name)));
@@ -1439,7 +1442,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
*/
@@ -1626,10 +1632,13 @@ void QFileSystemModelPrivate::_q_directoryChanged(const QString &directory, cons
*WARNING* this will change the count of children
*/
-QFileSystemModelPrivate::QFileSystemNode* QFileSystemModelPrivate::addNode(QFileSystemNode *parentNode, const QString &fileName)
+QFileSystemModelPrivate::QFileSystemNode* QFileSystemModelPrivate::addNode(QFileSystemNode *parentNode, const QString &fileName, const QFileInfo& info)
{
// In the common case, itemLocation == count() so check there first
QFileSystemModelPrivate::QFileSystemNode *node = new QFileSystemModelPrivate::QFileSystemNode(fileName, parentNode);
+#ifndef QT_NO_FILESYSTEMWATCHER
+ node->populate(info);
+#endif
parentNode->children.insert(fileName, node);
return node;
}
@@ -1747,7 +1756,7 @@ void QFileSystemModelPrivate::_q_fileSystemChanged(const QString &path, const QL
QExtendedInformation info = fileInfoGatherer.getInfo(updates.at(i).second);
bool previouslyHere = parentNode->children.contains(fileName);
if (!previouslyHere) {
- addNode(parentNode, fileName);
+ addNode(parentNode, fileName, info.fileInfo());
}
QFileSystemModelPrivate::QFileSystemNode * node = parentNode->children.value(fileName);
bool isCaseSensitive = parentNode->caseSensitive();
diff --git a/src/gui/dialogs/qfilesystemmodel.h b/src/gui/dialogs/qfilesystemmodel.h
index 52ecaf9181..995268b31e 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 f98a977c8f..0a1265abac 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,17 +176,11 @@ public:
info->displayType = iconProvider->type(QFileInfo(path));
QHash<QString, QFileSystemNode *>::const_iterator iterator;
for(iterator = children.constBegin() ; iterator != children.constEnd() ; ++iterator) {
-#if defined(Q_OS_SYMBIAN)
- // Symbian can't handle paths in form of "/C:/foo/bar", so do not prepend the initial '/'
- QString newPath;
- if (path.isEmpty())
- newPath = 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
- newPath = path + QLatin1Char('/') + iterator.value()->fileName;
- iterator.value()->retranslateStrings(iconProvider, newPath);
-#else
- iterator.value()->retranslateStrings(iconProvider, path + QLatin1Char('/') + iterator.value()->fileName);
-#endif
+ iterator.value()->retranslateStrings(iconProvider, iterator.value()->fileName);
}
}
@@ -192,7 +190,7 @@ public:
QList<QString> visibleChildren;
QFileSystemNode *parent;
- private:
+
QExtendedInformation *info;
};
@@ -226,7 +224,7 @@ public:
bool filtersAcceptsNode(const QFileSystemNode *node) const;
bool passNameFilters(const QFileSystemNode *node) const;
void removeNode(QFileSystemNode *parentNode, const QString &name);
- QFileSystemNode* addNode(QFileSystemNode *parentNode, const QString &fileName);
+ QFileSystemNode* addNode(QFileSystemNode *parentNode, const QString &fileName, const QFileInfo &info);
void addVisibleFiles(QFileSystemNode *parentNode, const QStringList &newFiles);
void removeVisibleFile(QFileSystemNode *parentNode, int visibleLocation);
void sortChildren(int column, const QModelIndex &parent);
diff --git a/src/gui/dialogs/qfontdialog_mac.mm b/src/gui/dialogs/qfontdialog_mac.mm
index d6ddfa3567..42be3be0dc 100644
--- a/src/gui/dialogs/qfontdialog_mac.mm
+++ b/src/gui/dialogs/qfontdialog_mac.mm
@@ -190,7 +190,7 @@ const int StyleMask = NSTitledWindowMask | NSClosableWindowMask | NSResizableWin
newFont.setStrikeOut(mQtFont->strikeOut());
}
- [self setQtFont:newFont];
+ [self setQtFont:newFont];
if (mPriv)
mPriv->updateSampleFont(*mQtFont);
}
@@ -357,8 +357,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
@@ -404,6 +404,7 @@ const int StyleMask = NSTitledWindowMask | NSClosableWindowMask | NSResizableWin
}
[mFontPanel setDelegate:nil];
[[NSFontManager sharedFontManager] setDelegate:nil];
+ [[NSFontManager sharedFontManager] setTarget:nil];
}
@end
@@ -527,6 +528,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 b63c8ee446..78d99e3837 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 34f123e827..9702fd19df 100644
--- a/src/gui/dialogs/qmessagebox.cpp
+++ b/src/gui/dialogs/qmessagebox.cpp
@@ -532,11 +532,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 +558,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 +1680,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 +1692,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 76c22d0347..87a4e6508b 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 1bd2b7d1e4..26108d7b26 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 defined(Q_OS_WIN)
+ if (index(j, 0).data(UrlRole).toUrl().toLocalFile().toLower() == url.toLocalFile().toLower()) {
+#else
if (index(j, 0).data(UrlRole) == url) {
+#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 ecbbb3783a..56fd6d4586 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/embedded/qscreentransformed_qws.cpp b/src/gui/embedded/qscreentransformed_qws.cpp
index f9887890fd..46ac1d1b1a 100644
--- a/src/gui/embedded/qscreentransformed_qws.cpp
+++ b/src/gui/embedded/qscreentransformed_qws.cpp
@@ -410,7 +410,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/graphicsview/qgraphicsitem.cpp b/src/gui/graphicsview/qgraphicsitem.cpp
index 7b885df59f..3e8d38f49e 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);
}
/*!
@@ -1235,7 +1228,7 @@ void QGraphicsItem::setFlags(GraphicsItemFlags flags)
int geomChangeFlagsMask = (ItemClipsChildrenToShape | ItemClipsToShape | ItemIgnoresTransformations);
bool fullUpdate = (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);
@@ -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.
@@ -2639,6 +2644,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 +2656,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 +2682,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 +2726,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 +2759,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 +2807,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 +2969,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 +2982,7 @@ void QGraphicsItem::setZValue(qreal z)
d_ptr->scene->d_func()->invalidateSortCache();
}
- itemChange(ItemZValueHasChanged, double(newZ));
+ itemChange(ItemZValueHasChanged, newZVariant);
}
/*!
@@ -2995,7 +3007,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 +3141,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;
}
@@ -3266,8 +3302,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 +3314,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;
@@ -3451,7 +3488,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 +3619,24 @@ 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) 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()))
+ || (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 +3645,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 +3662,25 @@ 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)
{
- // 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))
- return;
- if (!childrenOnly && !dirty)
- updateHelper();
- if (children.isEmpty() || dirtyChildren)
+ if (discardUpdateRequest(/*ignoreClipping=*/maybeDirtyClipPath,
+ /*ignoreVisibleBit=*/false,
+ /*ignoreDirtyBit=*/true)) {
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 +3703,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 +3757,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 +3817,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 +3950,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;
+ }
+
+ // Invalidate cache.
+ if (rect.isNull()) {
+ cache->allExposed = true;
+ cache->exposed.clear();
+ } else {
+ cache->exposed.append(rect);
}
- d_ptr->updateHelper(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 +4235,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 +4304,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 +4436,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 +4480,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 +5713,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();
}
/*!
@@ -8090,6 +8308,8 @@ void QGraphicsTextItem::setTabChangesFocus(bool b)
Returns true if the \gui Tab key will cause the widget to change focus;
otherwise, false is returned.
+ By default, this behavior is disabled, and this function will return false.
+
\sa setTabChangesFocus()
*/
bool QGraphicsTextItem::tabChangesFocus() const
@@ -8281,6 +8501,7 @@ void QGraphicsSimpleTextItem::setText(const QString &text)
return;
d->text = text;
d->updateBoundingRect();
+ update();
}
/*!
@@ -8542,13 +8763,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 07f6958c26..a5871a7fb6 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,15 @@ 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) const;
+ void updateHelper(const QRectF &rect = QRectF(), bool force = false, bool maybeDirtyClipPath = false);
+ void fullUpdateHelper(bool childrenOnly = false, bool maybeDirtyClipPath = false);
+ void updateEffectiveOpacity();
void resolveEffectiveOpacity(qreal effectiveParentOpacity);
void resolveDepth(int parentDepth);
void invalidateSceneTransformCache();
@@ -233,6 +242,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 +312,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 0ea769292c..eaa97ff79d 100644
--- a/src/gui/graphicsview/qgraphicslayoutitem.cpp
+++ b/src/gui/graphicsview/qgraphicslayoutitem.cpp
@@ -117,7 +117,7 @@ QGraphicsLayoutItemPrivate::QGraphicsLayoutItemPrivate(QGraphicsLayoutItem *par,
*/
void QGraphicsLayoutItemPrivate::init()
{
- sizeHintCacheDirty = true;
+ sizeHintCacheDirty = true;
sizePolicy = QSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);
}
@@ -175,12 +175,12 @@ QSizeF *QGraphicsLayoutItemPrivate::effectiveSizeHints(const QSizeF &constraint)
Returns the parent item of this layout, or 0 if this layout is
not installed on any widget.
-
+
If this is the item that the layout is installed on, it will return "itself".
If the layout is a sub-layout, this function returns the parent
widget of the parent layout.
-
+
Note that it will traverse up the layout item hierarchy instead of just calling
QGraphicsItem::parentItem(). This is on purpose.
@@ -233,7 +233,7 @@ QGraphicsItem *QGraphicsLayoutItemPrivate::parentItem() const
position. Calling setGeometry() will always resize and reposition the item
immediately. Normally, this function is called by QGraphicsLayout after
the layout has been activated, but it can also be called by the item's user
- at any time.
+ at any time.
The sizeHint() function returns the item' minimum, preferred and maximum
size hints. You can override these properties by calling setMinimumSize(),
@@ -360,7 +360,7 @@ void QGraphicsLayoutItem::setSizePolicy(QSizePolicy::Policy hPolicy,
}
/*!
- Returns the current size policy.
+ Returns the current size policy.
\sa setSizePolicy(), QWidget::sizePolicy()
*/
@@ -626,14 +626,15 @@ void QGraphicsLayoutItem::setMaximumHeight(qreal height)
*/
/*!
- \fn virtual void QGraphicsLayoutItem::setGeometry(const QRectF &rect) = 0
+ \fn virtual void QGraphicsLayoutItem::setGeometry(const QRectF &rect)
- This pure virtual function sets the geometry of the QGraphicsLayoutItem to
+ This virtual function sets the geometry of the QGraphicsLayoutItem to
\a rect, which is in parent coordinates (e.g., the top-left corner of \a rect
is equivalent to the item's position in parent coordinates).
- Reimplement this function in a subclass of QGraphicsLayoutItem to enable
- your item to receive geometry updates.
+ You must reimplement this function in a subclass of QGraphicsLayoutItem to
+ receive geometry updates. The layout will call this function when it does a
+ rearrangement.
If \a rect is outside of the bounds of minimumSize and maximumSize, it
will be adjusted to its closest size so that it is within the legal
@@ -744,7 +745,7 @@ QSizeF QGraphicsLayoutItem::effectiveSizeHint(Qt::SizeHint which, const QSizeF &
\sa effectiveSizeHint()
*/
void QGraphicsLayoutItem::updateGeometry()
-{
+{
Q_D(QGraphicsLayoutItem);
d->sizeHintCacheDirty = true;
}
@@ -768,7 +769,7 @@ QGraphicsLayoutItem *QGraphicsLayoutItem::parentLayoutItem() const
\sa parentLayoutItem()
*/
void QGraphicsLayoutItem::setParentLayoutItem(QGraphicsLayoutItem *parent)
-{
+{
d_func()->parent = parent;
}
@@ -789,12 +790,12 @@ bool QGraphicsLayoutItem::isLayout() const
If its true, then the layout will delete it. If its false, then it is
assumed that another object has the ownership of it, and the layout won't
delete this item.
-
- If the item inherits both QGraphicsItem and QGraphicsLayoutItem (such
- as QGraphicsWidget does) the item is really part of two ownership
+
+ If the item inherits both QGraphicsItem and QGraphicsLayoutItem (such
+ as QGraphicsWidget does) the item is really part of two ownership
hierarchies. This property informs what the layout should do with its
child items when it is destructed. In the case of QGraphicsWidget, it
- is preferred that when the layout is deleted it won't delete its children
+ is preferred that when the layout is deleted it won't delete its children
(since they are also part of the graphics item hierarchy).
By default this value is initialized to false in QGraphicsLayoutItem,
@@ -822,9 +823,9 @@ void QGraphicsLayoutItem::setOwnedByLayout(bool ownership)
/*!
* Returns the QGraphicsItem that this layout item represents.
- * For QGraphicsWidget it will return itself. For custom items it can return an
- * aggregated value.
- *
+ * For QGraphicsWidget it will return itself. For custom items it can return an
+ * aggregated value.
+ *
* \sa setGraphicsItem()
*/
QGraphicsItem *QGraphicsLayoutItem::graphicsItem() const
@@ -836,10 +837,10 @@ QGraphicsItem *QGraphicsLayoutItem::graphicsItem() const
* If the QGraphicsLayoutItem represents a QGraphicsItem, and it wants to take
* advantage of the automatic reparenting capabilities of QGraphicsLayout it
* should set this value.
- * Note that if you delete \a item and not delete the layout item, you are
- * responsible of calling setGraphicsItem(0) in order to avoid having a
+ * Note that if you delete \a item and not delete the layout item, you are
+ * responsible of calling setGraphicsItem(0) in order to avoid having a
* dangling pointer.
- *
+ *
* \sa graphicsItem()
*/
void QGraphicsLayoutItem::setGraphicsItem(QGraphicsItem *item)
@@ -848,5 +849,5 @@ void QGraphicsLayoutItem::setGraphicsItem(QGraphicsItem *item)
}
QT_END_NAMESPACE
-
+
#endif //QT_NO_GRAPHICSVIEW
diff --git a/src/gui/graphicsview/qgraphicsproxywidget.cpp b/src/gui/graphicsview/qgraphicsproxywidget.cpp
index 1d2721b2d5..e660879970 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 1f78a18d32..13f70e56e9 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);
+ }
}
}
@@ -2326,17 +2475,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 +2863,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 +2959,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 +3223,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 +3296,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 +3333,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 +3607,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 +4716,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 +4749,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 +4769,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 +4926,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;
@@ -5104,9 +5262,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 +5279,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 +5297,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 9c165d150d..befbbd8dd4 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/qgraphicsview.cpp b/src/gui/graphicsview/qgraphicsview.cpp
index 2f7f57aac8..b5a1bdf0c1 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,71 @@ 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()) {
// 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 */);
+ if (!itemList.at(i)->isVisible())
+ 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,
@@ -2224,7 +2213,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 +2264,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 +3270,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 +3452,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 +3471,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 +3547,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 +3621,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 21096732d6..a76279ed78 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 5cc18f93f3..7f02fb9091 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: {
@@ -1269,6 +1277,8 @@ bool QGraphicsWidget::event(QEvent *event)
break;
case QEvent::Polish:
polishEvent();
+ d->polished = true;
+ d->updateFont(d->font);
break;
case QEvent::WindowActivate:
case QEvent::WindowDeactivate:
diff --git a/src/gui/graphicsview/qgraphicswidget_p.cpp b/src/gui/graphicsview/qgraphicswidget_p.cpp
index 641409d5ed..789f8daad2 100644
--- a/src/gui/graphicsview/qgraphicswidget_p.cpp
+++ b/src/gui/graphicsview/qgraphicswidget_p.cpp
@@ -274,6 +274,8 @@ void QGraphicsWidgetPrivate::updateFont(const QFont &font)
}
}
+ if (!polished)
+ return;
// Notify change.
QEvent event(QEvent::FontChange);
QApplication::sendEvent(q, &event);
diff --git a/src/gui/graphicsview/qgraphicswidget_p.h b/src/gui/graphicsview/qgraphicswidget_p.h
index afa6812904..53eaa31c35 100644
--- a/src/gui/graphicsview/qgraphicswidget_p.h
+++ b/src/gui/graphicsview/qgraphicswidget_p.h
@@ -85,6 +85,8 @@ public:
inheritedPaletteResolveMask(0),
inheritedFontResolveMask(0),
inSetGeometry(0),
+ polished(0),
+ inSetPos(0),
focusPolicy(Qt::NoFocus),
focusNext(0),
focusPrev(0),
@@ -193,6 +195,8 @@ public:
}
quint32 attributes : 10;
quint32 inSetGeometry : 1;
+ quint32 polished: 1;
+ quint32 inSetPos : 1;
// Focus
Qt::FocusPolicy focusPolicy;
diff --git a/src/gui/image/qimage.cpp b/src/gui/image/qimage.cpp
index 558d5745f2..c7a20db2e7 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}
*/
@@ -4937,10 +4940,12 @@ int QImage::dotsPerMeterY() const
meter, to \a x.
Together with dotsPerMeterY(), this number defines the intended
- scale and aspect ratio of the image.
+ scale and aspect ratio of the image, and determines the scale
+ at which QPainter will draw graphics on the image. It does not
+ change the scale or aspect ratio of the image when it is rendered
+ on other paint devices.
- \sa dotsPerMeterX(), {QImage#Image Information}{Image
- Information}
+ \sa dotsPerMeterX(), {QImage#Image Information}{Image Information}
*/
void QImage::setDotsPerMeterX(int x)
{
@@ -4957,10 +4962,12 @@ void QImage::setDotsPerMeterX(int x)
to \a y.
Together with dotsPerMeterX(), this number defines the intended
- scale and aspect ratio of the image.
+ scale and aspect ratio of the image, and determines the scale
+ at which QPainter will draw graphics on the image. It does not
+ change the scale or aspect ratio of the image when it is rendered
+ on other paint devices.
- \sa dotsPerMeterY(), {QImage#Image Information}{Image
- Information}
+ \sa dotsPerMeterY(), {QImage#Image Information}{Image Information}
*/
void QImage::setDotsPerMeterY(int y)
{
@@ -5577,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}
*/
@@ -5659,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/qnativeimage.cpp b/src/gui/image/qnativeimage.cpp
index 6b74323146..33e565c841 100644
--- a/src/gui/image/qnativeimage.cpp
+++ b/src/gui/image/qnativeimage.cpp
@@ -100,7 +100,9 @@ QNativeImage::QNativeImage(int width, int height, QImage::Format format, bool is
bmi.blueMask = 0;
}
- hdc = CreateCompatibleDC(qt_win_display_dc());
+ HDC display_dc = GetDC(0);
+ hdc = CreateCompatibleDC(display_dc);
+ ReleaseDC(0, display_dc);
Q_ASSERT(hdc);
uchar *bits = 0;
diff --git a/src/gui/image/qpaintengine_pic.cpp b/src/gui/image/qpaintengine_pic.cpp
index cba98276ce..a130a1a00c 100644
--- a/src/gui/image/qpaintengine_pic.cpp
+++ b/src/gui/image/qpaintengine_pic.cpp
@@ -346,7 +346,7 @@ void QPicturePaintEngine::writeCmdLength(int pos, const QRectF &r, bool corr)
if (corr) { // widen bounding rect
int w2 = painter()->pen().width() / 2;
br.setCoords(br.left() - w2, br.top() - w2,
- br.right() + w2, br.bottom() + w2);
+ br.right() + w2, br.bottom() + w2);
}
br = painter()->transform().mapRect(br);
if (painter()->hasClipping()) {
@@ -458,6 +458,25 @@ void QPicturePaintEngine::drawTiledPixmap(const QRectF &r, const QPixmap &pixmap
writeCmdLength(pos, r, false);
}
+void QPicturePaintEngine::drawImage(const QRectF &r, const QImage &image, const QRectF &sr,
+ Qt::ImageConversionFlags flags)
+{
+ Q_D(QPicturePaintEngine);
+#ifdef QT_PICTURE_DEBUG
+ qDebug() << " -> drawImage():" << r << sr;
+#endif
+ int pos;
+ SERIALIZE_CMD(QPicturePrivate::PdcDrawImage);
+ if (d->pic_d->in_memory_only) {
+ int index = d->pic_d->image_list.size();
+ d->pic_d->image_list.append(image);
+ d->s << r << index << sr << (quint32) flags;
+ } else {
+ d->s << r << image << sr << (quint32) flags;
+ }
+ writeCmdLength(pos, r, false);
+}
+
extern int qt_defaultDpi();
void QPicturePaintEngine::drawTextItem(const QPointF &p , const QTextItem &ti)
diff --git a/src/gui/image/qpaintengine_pic_p.h b/src/gui/image/qpaintengine_pic_p.h
index 3ae08451f1..745d057efa 100644
--- a/src/gui/image/qpaintengine_pic_p.h
+++ b/src/gui/image/qpaintengine_pic_p.h
@@ -100,6 +100,8 @@ public:
void drawPixmap(const QRectF &r, const QPixmap &pm, const QRectF &sr);
void drawTiledPixmap(const QRectF &r, const QPixmap &pixmap, const QPointF &s);
+ void drawImage(const QRectF &r, const QImage &image, const QRectF &sr,
+ Qt::ImageConversionFlags flags = Qt::AutoColor);
void drawTextItem(const QPointF &p, const QTextItem &ti);
Type type() const { return Picture; }
diff --git a/src/gui/image/qpicture.cpp b/src/gui/image/qpicture.cpp
index d5d7cb0f49..92023e019c 100644
--- a/src/gui/image/qpicture.cpp
+++ b/src/gui/image/qpicture.cpp
@@ -759,13 +759,21 @@ bool QPicture::exec(QPainter *painter, QDataStream &s, int nrecords)
QImage image;
if (d->formatMajor < 4) {
s >> p >> image;
- painter->drawPixmap(p, QPixmap::fromImage(image));
+ painter->drawImage(p, image);
} else if (d->formatMajor <= 5){
s >> ir >> image;
- painter->drawPixmap(ir, QPixmap::fromImage(image), QRect(0, 0, ir.width(), ir.height()));
+ painter->drawImage(ir, image, QRect(0, 0, ir.width(), ir.height()));
} else {
- s >> r >> image;
- painter->drawPixmap(r, QPixmap::fromImage(image), QRectF(0, 0, r.width(), r.height()));
+ QRectF sr;
+ if (d->in_memory_only) {
+ int index;
+ s >> r >> index >> sr >> ul;
+ Q_ASSERT(index < d->image_list.size());
+ image = d->image_list.at(index);
+ } else {
+ s >> r >> image >> sr >> ul;
+ }
+ painter->drawImage(r, image, sr, Qt::ImageConversionFlags(ul));
}
}
break;
diff --git a/src/gui/image/qpicture_p.h b/src/gui/image/qpicture_p.h
index 1da7f0748e..a3fd34f0bc 100644
--- a/src/gui/image/qpicture_p.h
+++ b/src/gui/image/qpicture_p.h
@@ -158,6 +158,7 @@ public:
QRect override_rect;
QPaintEngine *paintEngine;
bool in_memory_only;
+ QList<QImage> image_list;
QList<QPixmap> pixmap_list;
QList<QBrush> brush_list;
QList<QPen> pen_list;
diff --git a/src/gui/image/qpixmap.cpp b/src/gui/image/qpixmap.cpp
index a16f8eec96..82be1b9152 100644
--- a/src/gui/image/qpixmap.cpp
+++ b/src/gui/image/qpixmap.cpp
@@ -678,7 +678,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
@@ -1384,6 +1384,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}
@@ -1755,6 +1761,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}
*/
@@ -1797,6 +1807,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}
*/
@@ -1818,7 +1831,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_mac.cpp b/src/gui/image/qpixmap_mac.cpp
index bfc605b591..26d96181bf 100644
--- a/src/gui/image/qpixmap_mac.cpp
+++ b/src/gui/image/qpixmap_mac.cpp
@@ -303,7 +303,7 @@ void QMacPixmapData::fromImage(const QImage &img,
else
one_bit = one_bit >> (x % 8);
if ((one_bit & 0x01))
- *(drow+x) = 0x00000000;
+ *(drow+x) = 0xFF000000;
else
*(drow+x) = 0xFFFFFFFF;
}
diff --git a/src/gui/image/qpixmap_x11.cpp b/src/gui/image/qpixmap_x11.cpp
index d7582217e3..38916c7dd7 100644
--- a/src/gui/image/qpixmap_x11.cpp
+++ b/src/gui/image/qpixmap_x11.cpp
@@ -1288,6 +1288,12 @@ void QX11PixmapData::setMask(const QBitmap &newmask)
0, 0, 0, 0, 0, 0, w, h);
release();
*this = newData;
+ // the new QX11PixmapData object isn't referenced yet, so
+ // ref it
+ ref.ref();
+
+ // the below is to make sure the QX11PixmapData destructor
+ // doesn't delete our newly created render picture
newData.hd = 0;
newData.x11_mask = 0;
newData.picture = 0;
@@ -1431,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 99a222cdac..4f1f0f03fc 100644
--- a/src/gui/image/qpixmapcache.cpp
+++ b/src/gui/image/qpixmapcache.cpp
@@ -277,7 +277,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()
*/
@@ -290,7 +291,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/image/qpixmapdata_p.h b/src/gui/image/qpixmapdata_p.h
index 2e4da40333..7296426238 100644
--- a/src/gui/image/qpixmapdata_p.h
+++ b/src/gui/image/qpixmapdata_p.h
@@ -109,6 +109,7 @@ protected:
private:
friend class QPixmap;
friend class QGLContextPrivate;
+ friend class QX11PixmapData;
QAtomicInt ref;
int detach_no;
diff --git a/src/gui/inputmethod/qwininputcontext_win.cpp b/src/gui/inputmethod/qwininputcontext_win.cpp
index 720f0b8866..e3e8aa4637 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/inputmethod/qximinputcontext_p.h b/src/gui/inputmethod/qximinputcontext_p.h
index ca2103be96..3773122a26 100644
--- a/src/gui/inputmethod/qximinputcontext_p.h
+++ b/src/gui/inputmethod/qximinputcontext_p.h
@@ -98,6 +98,7 @@ public:
QString text;
QBitArray selectedChars;
bool composing;
+ bool preeditEmpty;
void clear();
};
diff --git a/src/gui/inputmethod/qximinputcontext_x11.cpp b/src/gui/inputmethod/qximinputcontext_x11.cpp
index 48a96b1b21..c320fb4f24 100644
--- a/src/gui/inputmethod/qximinputcontext_x11.cpp
+++ b/src/gui/inputmethod/qximinputcontext_x11.cpp
@@ -264,6 +264,7 @@ extern "C" {
qic->standardFormat(QInputContext::PreeditFormat));
attrs << QInputMethodEvent::Attribute(QInputMethodEvent::Cursor, cursor, sellen ? 0 : 1, QVariant());
QInputMethodEvent e(data->text, attrs);
+ data->preeditEmpty = data->text.isEmpty();
qic->sendEvent(e);
return 0;
@@ -286,6 +287,7 @@ void QXIMInputContext::ICData::clear()
text = QString();
selectedChars.clear();
composing = false;
+ preeditEmpty = true;
}
QXIMInputContext::ICData *QXIMInputContext::icData() const
@@ -435,7 +437,8 @@ void QXIMInputContext::create_xim()
// reinitialize input context after the input method
// server (like SCIM) has been launched without
// requiring the user to manually switch focus.
- if (focusWidget->testAttribute(Qt::WA_InputMethodEnabled))
+ if (focusWidget->testAttribute(Qt::WA_InputMethodEnabled)
+ && focusWidget->testAttribute(Qt::WA_WState_Created))
setFocusWidget(focusWidget);
}
// following code fragment is not required for immodule
@@ -537,9 +540,12 @@ void QXIMInputContext::reset()
if (mb) {
e.setCommitString(QString::fromLocal8Bit(mb));
XFree(mb);
+ data->preeditEmpty = false; // force sending an event
+ }
+ if (!data->preeditEmpty) {
+ sendEvent(e);
+ update();
}
- sendEvent(e);
- update();
}
data->clear();
}
@@ -686,6 +692,7 @@ QXIMInputContext::ICData *QXIMInputContext::createICData(QWidget *w)
{
ICData *data = new ICData;
data->widget = w;
+ data->preeditEmpty = true;
XVaNestedList preedit_attr = 0;
XIMCallback startcallback, drawcallback, donecallback;
diff --git a/src/gui/itemviews/qabstractitemview.cpp b/src/gui/itemviews/qabstractitemview.cpp
index 942c176736..6c2d109cfe 100644
--- a/src/gui/itemviews/qabstractitemview.cpp
+++ b/src/gui/itemviews/qabstractitemview.cpp
@@ -1400,6 +1400,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;
}
diff --git a/src/gui/itemviews/qheaderview.cpp b/src/gui/itemviews/qheaderview.cpp
index 27c2c54642..d37316387a 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 fbba69a647..2889f08300 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/qsortfilterproxymodel.cpp b/src/gui/itemviews/qsortfilterproxymodel.cpp
index b3993c7e56..91431c4e5b 100644
--- a/src/gui/itemviews/qsortfilterproxymodel.cpp
+++ b/src/gui/itemviews/qsortfilterproxymodel.cpp
@@ -1032,9 +1032,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
@@ -1103,6 +1115,8 @@ void QSortFilterProxyModelPrivate::_q_sourceReset()
// All internal structures are deleted in clear()
q->reset();
update_source_sort_column();
+ if (dynamic_sortfilter)
+ sort();
}
void QSortFilterProxyModelPrivate::_q_sourceLayoutAboutToBeChanged()
@@ -1495,6 +1509,7 @@ void QSortFilterProxyModel::setSourceModel(QAbstractItemModel *sourceModel)
d->clear_mapping();
reset();
+ d->update_source_sort_column();
}
/*!
@@ -1566,6 +1581,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;
}
@@ -1893,7 +1912,7 @@ QSize QSortFilterProxyModel::span(const QModelIndex &index) const
void QSortFilterProxyModel::sort(int column, Qt::SortOrder order)
{
Q_D(QSortFilterProxyModel);
- if (d->proxy_sort_column == column && d->sort_order == order)
+ if (d->dynamic_sortfilter && d->proxy_sort_column == column && d->sort_order == order)
return;
d->sort_order = order;
d->proxy_sort_column = column;
@@ -2107,6 +2126,8 @@ void QSortFilterProxyModel::setDynamicSortFilter(bool enable)
{
Q_D(QSortFilterProxyModel);
d->dynamic_sortfilter = enable;
+ if (enable)
+ d->sort();
}
/*!
diff --git a/src/gui/itemviews/qtreeview.cpp b/src/gui/itemviews/qtreeview.cpp
index 2aa0c57146..62c127705e 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 403a58bde4..d65a3524a2 100644
--- a/src/gui/kernel/qapplication.cpp
+++ b/src/gui/kernel/qapplication.cpp
@@ -172,189 +172,174 @@ QApplicationPrivate::~QApplicationPrivate()
}
/*!
- \class QApplication
- \brief The QApplication class manages the GUI application's control
- flow and main settings.
-
- \ingroup application
- \mainclass
-
- It contains the main event loop, where all events from the window
- system and other sources are processed and dispatched. It also
- handles the application's initialization and finalization, and
- provides session management. It also handles most system-wide and
- application-wide settings.
-
- For any GUI application that uses Qt, there is precisely one
- QApplication object, no matter whether the application has 0, 1, 2
- or more windows at any time. For non-GUI Qt applications, use
- QCoreApplication instead, which doesn't depend on the \l QtGui
- library.
-
- The QApplication object is accessible through the instance()
- function which return a pointer equivalent to the global qApp
- pointer.
-
- QApplication's main areas of responsibility are:
- \list
-
- \o It initializes the application with the user's desktop settings
- such as palette(), font() and doubleClickInterval(). It keeps track
- of these properties in case the user changes the desktop globally, for
- example through some kind of control panel.
-
- \o It performs event handling, meaning that it receives events
- from the underlying window system and dispatches them to the relevant
- widgets. By using sendEvent() and postEvent() you can send your own
- events to widgets.
-
- \o It parses common command line arguments and sets its internal
- state accordingly. See the \link QApplication::QApplication()
- constructor documentation\endlink below for more details about this.
-
- \o It defines the application's look and feel, which is
- encapsulated in a QStyle object. This can be changed at runtime
- with setStyle().
-
- \o It specifies how the application is to allocate colors.
- See setColorSpec() for details.
-
- \o It provides localization of strings that are visible to the user
- via translate().
-
- \o It provides some magical objects like the desktop() and the
- clipboard().
-
- \o It knows about the application's windows. You can ask which
- widget is at a certain position using widgetAt(), get a list of
- topLevelWidgets() and closeAllWindows(), etc.
-
- \o It manages the application's mouse cursor handling,
- see setOverrideCursor()
-
- \o On the X window system, it provides functions to flush and sync
- the communication stream, see flushX() and syncX().
-
- \o It provides support for sophisticated \link
- session.html session management \endlink. This makes it possible
- for applications to terminate gracefully when the user logs out, to
- cancel a shutdown process if termination isn't possible and even to
- preserve the entire application's state for a future session. See
- isSessionRestored(), sessionId() and commitData() and saveState()
- for details.
-
- \endlist
-
- Since the QApplication object does so much initialization, it
- \e{must} be created before any other objects related to the user
- interface are created.
-
- Since it also deals with common command line arguments, it is
- usually a good idea to create it \e before any interpretation or
- modification of \c argv is done in the application itself.
-
- \table
- \header \o{2,1} Groups of functions
- \row
- \o System settings
- \o
- desktopSettingsAware(),
- setDesktopSettingsAware(),
- cursorFlashTime(),
- setCursorFlashTime(),
- doubleClickInterval(),
- setDoubleClickInterval(),
- setKeyboardInputInterval(),
- wheelScrollLines(),
- setWheelScrollLines(),
- palette(),
- setPalette(),
- font(),
- setFont(),
- fontMetrics().
-
- \row
- \o Event handling
- \o
- exec(),
- processEvents(),
- exit(),
- quit().
- sendEvent(),
- postEvent(),
- sendPostedEvents(),
- removePostedEvents(),
- hasPendingEvents(),
- notify(),
- macEventFilter(),
- qwsEventFilter(),
- x11EventFilter(),
- x11ProcessEvent(),
- winEventFilter().
-
- \row
- \o GUI Styles
- \o
- style(),
- setStyle().
-
- \row
- \o Color usage
- \o
- colorSpec(),
- setColorSpec(),
- qwsSetCustomColors().
-
- \row
- \o Text handling
- \o
- installTranslator(),
- removeTranslator()
- translate().
-
- \row
- \o Widgets
- \o
- allWidgets(),
- topLevelWidgets(),
- desktop(),
- activePopupWidget(),
- activeModalWidget(),
- clipboard(),
- focusWidget(),
- winFocus(),
- activeWindow(),
- widgetAt().
-
- \row
- \o Advanced cursor handling
- \o
- overrideCursor(),
- setOverrideCursor(),
- restoreOverrideCursor().
-
- \row
- \o X Window System synchronization
- \o
- flushX(),
- syncX().
-
- \row
- \o Session management
- \o
- isSessionRestored(),
- sessionId(),
- commitData(),
- saveState().
-
- \row
- \o Miscellaneous
- \o
- closeAllWindows(),
- startingUp(),
- closingDown(),
- type().
- \endtable
+ \class QApplication
+ \brief The QApplication class manages the GUI application's control
+ flow and main settings.
+
+ \ingroup application
+ \mainclass
+
+ QApplication contains the main event loop, where all events from the window
+ system and other sources are processed and dispatched. It also handles the
+ application's initialization and finalization, and provides session
+ management. In addition, it handles most system-wide and application-wide
+ settings.
+
+ For any GUI application using Qt, there is precisely one QApplication
+ object, no matter whether the application has 0, 1, 2 or more windows at
+ any given time. For non-GUI Qt applications, use QCoreApplication instead,
+ as it does not depend on the \l QtGui library.
+
+ The QApplication object is accessible through the instance() function that
+ returns a pointer equivalent to the global qApp pointer.
+
+ QApplication's main areas of responsibility are:
+ \list
+ \o It initializes the application with the user's desktop settings
+ such as palette(), font() and doubleClickInterval(). It keeps
+ track of these properties in case the user changes the desktop
+ globally, for example through some kind of control panel.
+
+ \o It performs event handling, meaning that it receives events
+ from the underlying window system and dispatches them to the
+ relevant widgets. By using sendEvent() and postEvent() you can
+ send your own events to widgets.
+
+ \o It parses common command line arguments and sets its internal
+ state accordingly. See the \l{QApplication::QApplication()}
+ {constructor documentation} below for more details.
+
+ \o It defines the application's look and feel, which is
+ encapsulated in a QStyle object. This can be changed at runtime
+ with setStyle().
+
+ \o It specifies how the application is to allocate colors. See
+ setColorSpec() for details.
+
+ \o It provides localization of strings that are visible to the
+ user via translate().
+
+ \o It provides some magical objects like the desktop() and the
+ clipboard().
+
+ \o It knows about the application's windows. You can ask which
+ widget is at a certain position using widgetAt(), get a list of
+ topLevelWidgets() and closeAllWindows(), etc.
+
+ \o It manages the application's mouse cursor handling, see
+ setOverrideCursor()
+
+ \o On the X window system, it provides functions to flush and sync
+ the communication stream, see flushX() and syncX().
+
+ \o It provides support for sophisticated \l{Session Management}
+ {session management}. This makes it possible for applications
+ to terminate gracefully when the user logs out, to cancel a
+ shutdown process if termination isn't possible and even to
+ preserve the entire application's state for a future session.
+ See isSessionRestored(), sessionId() and commitData() and
+ saveState() for details.
+ \endlist
+
+ The QApplication object does so much initialization. Hence, it \e{must} be
+ created before any other objects related to the user interface are created.
+ Since QApplication also deals with common command line arguments, it is
+ usually a good idea to create it \e before any interpretation or
+ modification of \c argv is done in the application itself.
+
+ \table
+ \header
+ \o{2,1} Groups of functions
+
+ \row
+ \o System settings
+ \o desktopSettingsAware(),
+ setDesktopSettingsAware(),
+ cursorFlashTime(),
+ setCursorFlashTime(),
+ doubleClickInterval(),
+ setDoubleClickInterval(),
+ setKeyboardInputInterval(),
+ wheelScrollLines(),
+ setWheelScrollLines(),
+ palette(),
+ setPalette(),
+ font(),
+ setFont(),
+ fontMetrics().
+
+ \row
+ \o Event handling
+ \o exec(),
+ processEvents(),
+ exit(),
+ quit().
+ sendEvent(),
+ postEvent(),
+ sendPostedEvents(),
+ removePostedEvents(),
+ hasPendingEvents(),
+ notify(),
+ macEventFilter(),
+ qwsEventFilter(),
+ x11EventFilter(),
+ x11ProcessEvent(),
+ winEventFilter().
+
+ \row
+ \o GUI Styles
+ \o style(),
+ setStyle().
+
+ \row
+ \o Color usage
+ \o colorSpec(),
+ setColorSpec(),
+ qwsSetCustomColors().
+
+ \row
+ \o Text handling
+ \o installTranslator(),
+ removeTranslator()
+ translate().
+
+ \row
+ \o Widgets
+ \o allWidgets(),
+ topLevelWidgets(),
+ desktop(),
+ activePopupWidget(),
+ activeModalWidget(),
+ clipboard(),
+ focusWidget(),
+ activeWindow(),
+ widgetAt().
+
+ \row
+ \o Advanced cursor handling
+ \o overrideCursor(),
+ setOverrideCursor(),
+ restoreOverrideCursor().
+
+ \row
+ \o X Window System synchronization
+ \o flushX(),
+ syncX().
+
+ \row
+ \o Session management
+ \o isSessionRestored(),
+ sessionId(),
+ commitData(),
+ saveState().
+
+ \row
+ \o Miscellaneous
+ \o closeAllWindows(),
+ startingUp(),
+ closingDown(),
+ type().
+ \endtable
\sa QCoreApplication, QAbstractEventDispatcher, QEventLoop, QSettings
*/
@@ -385,6 +370,7 @@ QApplicationPrivate::~QApplicationPrivate()
Returns the top-level widget at the given \a point; returns 0 if
there is no such widget.
*/
+
/*!
\fn QWidget *QApplication::topLevelAt(int x, int y)
@@ -396,8 +382,8 @@ QApplicationPrivate::~QApplicationPrivate()
/*
- The qt_init() and qt_cleanup() functions are implemented in the
- qapplication_xyz.cpp file.
+ The qt_init() and qt_cleanup() functions are implemented in the
+ qapplication_xyz.cpp file.
*/
void qt_init(QApplicationPrivate *priv, int type
@@ -592,99 +578,100 @@ void QApplicationPrivate::process_cmdline()
}
/*!
- Initializes the window system and constructs an application object
- with \a argc command line arguments in \a argv.
-
- \warning The data referred to by \a argc and \a argv must stay valid
- for the entire lifetime of the QApplication object. In addition,
- \a argc must be greater than zero and \a argv must contain at least
- one valid character string.
-
- The global \c qApp pointer refers to this application object. Only
- one application object should be created.
-
- This application object must be constructed before any \link
- QPaintDevice paint devices\endlink (including widgets, pixmaps, bitmaps
- etc.).
-
- Note that \a argc and \a argv might be changed. Qt removes command
- line arguments that it recognizes.
-
- Qt debugging options (not available if Qt was compiled without the
- QT_DEBUG flag defined):
- \list
- \o -nograb, tells Qt that it must never grab the mouse or the keyboard.
- \o -dograb (only under X11), running under a debugger can cause
- an implicit -nograb, use -dograb to override.
- \o -sync (only under X11), switches to synchronous mode for
- debugging.
- \endlist
-
- See \link debug.html Debugging Techniques \endlink for a more
- detailed explanation.
-
- All Qt programs automatically support the following command line options:
- \list
- \o -style= \e style, sets the application GUI style. Possible values
- are \c motif, \c windows, and \c platinum. If you compiled Qt
- with additional styles or have additional styles as plugins these
- will be available to the \c -style command line option.
- \o -style \e style, is the same as listed above.
- \o -stylesheet= \e stylesheet, sets the application \l styleSheet. The value
- must be a path to a file that contains the Style Sheet. Note that relative URLs
- in the Style Sheet file are relative to the Style Sheet file's path.
- \o -stylesheet \e stylesheet, is the same as listed above.
- \o -session= \e session, restores the application from an earlier
- \link session.html session \endlink.
- \o -session \e session, is the same as listed above.
- \o -widgetcount, prints debug message at the end about number of widgets left
- undestroyed and maximum number of widgets existed at the same time
- \o -reverse, sets the application's layout direction to Qt::RightToLeft
- \o -graphicssystem, sets the backend to be used for on-screen
- widgets and QPixmaps. Available options are \c{raster} and \c{opengl}.
-
- \endlist
-
- The Windows version of Qt also support one additional command line
- option, if Direct3D support has been compiled into Qt:
- \list
- \o -direct3d will make the Direct3D paint engine the default widget
- paint engine in Qt. \bold {This functionality is experimental.}
- \endlist
-
- The X11 version of Qt also supports some traditional X11
- command line options:
- \list
- \o -display \e display, sets the X display (default is $DISPLAY).
- \o -geometry \e geometry, sets the client geometry of the
- first window that is shown.
- \o -fn or \c -font \e font, defines the application font. The
- font should be specified using an X logical font description.
- \o -bg or \c -background \e color, sets the default background color
- and an application palette (light and dark shades are calculated).
- \o -fg or \c -foreground \e color, sets the default foreground color.
- \o -btn or \c -button \e color, sets the default button color.
- \o -name \e name, sets the application name.
- \o -title \e title, sets the application title.
- \o -visual \c TrueColor, forces the application to use a TrueColor visual
- on an 8-bit display.
- \o -ncols \e count, limits the number of colors allocated in the
- color cube on an 8-bit display, if the application is using the
- QApplication::ManyColor color specification. If \e count is
- 216 then a 6x6x6 color cube is used (i.e. 6 levels of red, 6 of green,
- and 6 of blue); for other values, a cube
- approximately proportional to a 2x3x1 cube is used.
- \o -cmap, causes the application to install a private color map
- on an 8-bit display.
- \o -im, sets the input method server (equivalent to setting the XMODIFIERS
- environment variable)
- \o -inputstyle, defines how the input is inserted into the given widget. E.g.,
- \c onTheSpot makes the input appear directly in the widget, while
- \c overTheSpot makes the input appear in a box floating over the
- widget and is not inserted until the editing is done.
- \endlist
-
- \sa arguments()
+ Initializes the window system and constructs an application object with
+ \a argc command line arguments in \a argv.
+
+ \warning The data referred to by \a argc and \a argv must stay valid for
+ the entire lifetime of the QApplication object. In addition, \a argc must
+ be greater than zero and \a argv must contain at least one valid character
+ string.
+
+ The global \c qApp pointer refers to this application object. Only one
+ application object should be created.
+
+ This application object must be constructed before any \l{QPaintDevice}
+ {paint devices} (including widgets, pixmaps, bitmaps etc.).
+
+ \note \a argc and \a argv might be changed as Qt removes command line
+ arguments that it recognizes.
+
+ Qt debugging options (not available if Qt was compiled without the QT_DEBUG
+ flag defined):
+ \list
+ \o -nograb, tells Qt that it must never grab the mouse or the
+ keyboard.
+ \o -dograb (only under X11), running under a debugger can cause an
+ implicit -nograb, use -dograb to override.
+ \o -sync (only under X11), switches to synchronous mode for
+ debugging.
+ \endlist
+
+ See \l{Debugging Techniques} for a more detailed explanation.
+
+ All Qt programs automatically support the following command line options:
+ \list
+ \o -style= \e style, sets the application GUI style. Possible values
+ are \c motif, \c windows, and \c platinum. If you compiled Qt with
+ additional styles or have additional styles as plugins these will
+ be available to the \c -style command line option.
+ \o -style \e style, is the same as listed above.
+ \o -stylesheet= \e stylesheet, sets the application \l styleSheet. The
+ value must be a path to a file that contains the Style Sheet.
+ \note Relative URLs in the Style Sheet file are relative to the
+ Style Sheet file's path.
+ \o -stylesheet \e stylesheet, is the same as listed above.
+ \o -session= \e session, restores the application from an earlier
+ \l{Session Management}{session}.
+ \o -session \e session, is the same as listed above.
+ \o -widgetcount, prints debug message at the end about number of
+ widgets left undestroyed and maximum number of widgets existed at
+ the same time
+ \o -reverse, sets the application's layout direction to
+ Qt::RightToLeft
+ \o -graphicssystem, sets the backend to be used for on-screen widgets
+ and QPixmaps. Available options are \c{raster} and \c{opengl}.
+ \endlist
+
+ The Windows version of Qt supports an additional command line option, if
+ Direct3D support has been compiled into Qt:
+ \list
+ \o -direct3d will make the Direct3D paint engine the default widget
+ paint engine in Qt. \bold {This functionality is experimental.}
+ \endlist
+
+ The X11 version of Qt supports some traditional X11 command line options:
+ \list
+ \o -display \e display, sets the X display (default is $DISPLAY).
+ \o -geometry \e geometry, sets the client geometry of the first window
+ that is shown.
+ \o -fn or \c -font \e font, defines the application font. The font
+ should be specified using an X logical font description.
+ \o -bg or \c -background \e color, sets the default background color
+ and an application palette (light and dark shades are calculated).
+ \o -fg or \c -foreground \e color, sets the default foreground color.
+ \o -btn or \c -button \e color, sets the default button color.
+ \o -name \e name, sets the application name.
+ \o -title \e title, sets the application title.
+ \o -visual \c TrueColor, forces the application to use a TrueColor
+ visual on an 8-bit display.
+ \o -ncols \e count, limits the number of colors allocated in the color
+ cube on an 8-bit display, if the application is using the
+ QApplication::ManyColor color specification. If \e count is 216
+ then a 6x6x6 color cube is used (i.e. 6 levels of red, 6 of green,
+ and 6 of blue); for other values, a cube approximately proportional
+ to a 2x3x1 cube is used.
+ \o -cmap, causes the application to install a private color map on an
+ 8-bit display.
+ \o -im, sets the input method server (equivalent to setting the
+ XMODIFIERS environment variable)
+ \o -inputstyle, defines how the input is inserted into the given
+ widget, e.g., \c onTheSpot makes the input appear directly in the
+ widget, while \c overTheSpot makes the input appear in a box
+ floating over the widget and is not inserted until the editing is
+ done.
+ \endlist
+
+ \sa arguments()
*/
QApplication::QApplication(int &argc, char **argv)
@@ -697,26 +684,26 @@ QApplication::QApplication(int &argc, char **argv, int _internal)
/*!
- Constructs an application object with \a argc command line arguments
- in \a argv. If \a GUIenabled is true, a GUI application is
- constructed, otherwise a non-GUI (console) application is created.
+ Constructs an application object with \a argc command line arguments in
+ \a argv. If \a GUIenabled is true, a GUI application is constructed,
+ otherwise a non-GUI (console) application is created.
- \warning The data referred to by \a argc and \a argv must stay valid
- for the entire lifetime of the QApplication object. In addition,
- \a argc must be greater than zero and \a argv must contain at least
- one valid character string.
+ \warning The data referred to by \a argc and \a argv must stay valid for
+ the entire lifetime of the QApplication object. In addition, \a argc must
+ be greater than zero and \a argv must contain at least one valid character
+ string.
- Set \a GUIenabled to false for programs without a graphical user
- interface that should be able to run without a window system.
+ Set \a GUIenabled to false for programs without a graphical user interface
+ that should be able to run without a window system.
- On X11, the window system is initialized if \a GUIenabled is true.
- If \a GUIenabled is false, the application does not connect to the
- X server. On Windows and Macintosh, currently the window system is
- always initialized, regardless of the value of GUIenabled. This may
- change in future versions of Qt.
+ On X11, the window system is initialized if \a GUIenabled is true. If
+ \a GUIenabled is false, the application does not connect to the X server.
+ On Windows and Macintosh, currently the window system is always
+ initialized, regardless of the value of GUIenabled. This may change in
+ future versions of Qt.
- The following example shows how to create an application that
- uses a graphical interface when available.
+ The following example shows how to create an application that uses a
+ graphical interface when available.
\snippet doc/src/snippets/code/src_gui_kernel_qapplication.cpp 0
*/
@@ -732,17 +719,17 @@ QApplication::QApplication(int &argc, char **argv, bool GUIenabled , int _intern
/*!
- Constructs an application object with \a argc command line arguments
- in \a argv.
+ Constructs an application object with \a argc command line arguments in
+ \a argv.
- \warning The data referred to by \a argc and \a argv must stay valid
- for the entire lifetime of the QApplication object. In addition,
- \a argc must be greater than zero and \a argv must contain at least
- one valid character string.
+ \warning The data referred to by \a argc and \a argv must stay valid for
+ the entire lifetime of the QApplication object. In addition, \a argc must
+ be greater than zero and \a argv must contain at least one valid character
+ string.
- With Qt for Embedded Linux, passing QApplication::GuiServer for \a type
- makes this application the server (equivalent to running with the
- \c -qws option).
+ With Qt for Embedded Linux, passing QApplication::GuiServer for \a type
+ makes this application the server (equivalent to running with the
+ \c -qws option).
*/
QApplication::QApplication(int &argc, char **argv, Type type)
: QCoreApplication(*new QApplicationPrivate(argc, argv, type))
@@ -790,16 +777,16 @@ static int aargc = 1;
static char *aargv[] = { (char*)"unknown", 0 };
/*!
- \fn QApplication::QApplication(Display* display, Qt::HANDLE visual, Qt::HANDLE colormap)
+ \fn QApplication::QApplication(Display* display, Qt::HANDLE visual, Qt::HANDLE colormap)
- Create an application, given an already open display \a display. If \a
- visual and \a colormap are non-zero, the application will use those as
- the default Visual and Colormap contexts.
+ Creates an application, given an already open display \a display. If
+ \a visual and \a colormap are non-zero, the application will use those
+ values as the default Visual and Colormap contexts.
- \warning Qt only supports TrueColor visuals at depths higher than 8
- bits-per-pixel.
+ \warning Qt only supports TrueColor visuals at depths higher than 8
+ bits-per-pixel.
- This is available only on X11.
+ This function is only available on X11.
*/
QApplication::QApplication(Display* dpy, Qt::HANDLE visual, Qt::HANDLE colormap)
: QCoreApplication(*new QApplicationPrivate(aargc, aargv, GuiClient))
@@ -821,19 +808,18 @@ QApplication::QApplication(Display* dpy, Qt::HANDLE visual, Qt::HANDLE colormap,
}
/*!
- \fn QApplication::QApplication(Display *display, int &argc, char **argv,
- Qt::HANDLE visual, Qt::HANDLE colormap)
-
- Create an application, given an already open \a display and using \a
- argc command line arguments in \a argv. If \a visual and \a colormap
- are non-zero, the application will use those as the default Visual
- and Colormap contexts.
+ \fn QApplication::QApplication(Display *display, int &argc, char **argv,
+ Qt::HANDLE visual, Qt::HANDLE colormap)
- \warning Qt only supports TrueColor visuals at depths higher than 8
- bits-per-pixel.
+ Creates an application, given an already open \a display and using \a argc
+ command line arguments in \a argv. If \a visual and \a colormap are
+ non-zero, the application will use those values as the default Visual
+ and Colormap contexts.
- This is available only on X11.
+ \warning Qt only supports TrueColor visuals at depths higher than 8
+ bits-per-pixel.
+ This function is only available on X11.
*/
QApplication::QApplication(Display *dpy, int &argc, char **argv,
Qt::HANDLE visual, Qt::HANDLE colormap)
@@ -858,12 +844,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;
@@ -935,19 +922,18 @@ QApplication::Type QApplication::type()
*****************************************************************************/
/*!
- Returns the active popup widget.
+ Returns the active popup widget.
- A popup widget is a special top-level widget that sets the \c
- Qt::WType_Popup widget flag, e.g. the QMenu widget. When the
- application opens a popup widget, all events are sent to the popup.
- Normal widgets and modal widgets cannot be accessed before the popup
- widget is closed.
+ A popup widget is a special top-level widget that sets the \c
+ Qt::WType_Popup widget flag, e.g. the QMenu widget. When the application
+ opens a popup widget, all events are sent to the popup. Normal widgets and
+ modal widgets cannot be accessed before the popup widget is closed.
- Only other popup widgets may be opened when a popup widget is shown.
- The popup widgets are organized in a stack. This function returns
- the active popup widget at the top of the stack.
+ Only other popup widgets may be opened when a popup widget is shown. The
+ popup widgets are organized in a stack. This function returns the active
+ popup widget at the top of the stack.
- \sa activeModalWidget(), topLevelWidgets()
+ \sa activeModalWidget(), topLevelWidgets()
*/
QWidget *QApplication::activePopupWidget()
@@ -958,17 +944,17 @@ QWidget *QApplication::activePopupWidget()
/*!
- Returns the active modal widget.
+ Returns the active modal widget.
- A modal widget is a special top-level widget which is a subclass of
- QDialog that specifies the modal parameter of the constructor as
- true. A modal widget must be closed before the user can continue
- with other parts of the program.
+ A modal widget is a special top-level widget which is a subclass of QDialog
+ that specifies the modal parameter of the constructor as true. A modal
+ widget must be closed before the user can continue with other parts of the
+ program.
- Modal widgets are organized in a stack. This function returns
- the active modal widget at the top of the stack.
+ Modal widgets are organized in a stack. This function returns the active
+ modal widget at the top of the stack.
- \sa activePopupWidget(), topLevelWidgets()
+ \sa activePopupWidget(), topLevelWidgets()
*/
QWidget *QApplication::activeModalWidget()
@@ -977,8 +963,8 @@ QWidget *QApplication::activeModalWidget()
}
/*!
- Cleans up any window system resources that were allocated by this
- application. Sets the global variable \c qApp to 0.
+ Cleans up any window system resources that were allocated by this
+ application. Sets the global variable \c qApp to 0.
*/
QApplication::~QApplication()
@@ -1104,8 +1090,8 @@ QApplication::~QApplication()
/*!
\fn QWidget *QApplication::widgetAt(const QPoint &point)
- Returns the widget at global screen position \a point, or 0 if there
- is no Qt widget there.
+ Returns the widget at global screen position \a point, or 0 if there is no
+ Qt widget there.
This function can be slow.
@@ -1153,8 +1139,8 @@ QWidget *QApplication::widgetAt(const QPoint &p)
\overload
- Returns the widget at global screen position (\a x, \a y), or 0
- if there is no Qt widget there.
+ Returns the widget at global screen position (\a x, \a y), or 0 if there is
+ no Qt widget there.
*/
/*!
@@ -1223,16 +1209,17 @@ bool QApplication::compressEvent(QEvent *event, QObject *receiver, QPostEventLis
\since 4.4
\brief defines a threshold for auto maximizing widgets
- The auto maximize threshold is only available
- as part of Qt for Windows CE.
+ The auto maximize threshold is only available as part of Qt for Windows CE.
This property defines a threshold for the size of a window as a percentage
- of the screen size. If the minimum size hint of a window exceeds the threshold,
- calling show() will then cause the window to be maximized automatically.
+ of the screen size. If the minimum size hint of a window exceeds the
+ threshold, calling show() will then cause the window to be maximized
+ automatically.
- Setting the threshold to be 100 or greater means that it will cause it to always
- be maximized. Setting it to be 50 means that the widget is maximized if the vertical
- minimum size hint is at least 50% of the vertical screen size.
+ Setting the threshold to be 100 or greater means that it will cause it to
+ always be maximized. Setting it to be 50 means that the widget is maximized
+ if the vertical minimum size hint is at least 50% of the vertical screen
+ size.
If -1 is specified then this will disable the feature.
@@ -1245,12 +1232,11 @@ bool QApplication::compressEvent(QEvent *event, QObject *receiver, QPostEventLis
\since 4.5
\brief toggles automatic SIP (software input panel) visibility
- The auto SIP property is only available
- as part of Qt for Windows CE.
+ The auto SIP property is only available as part of Qt for Windows CE.
Set this property to true to automatically display the SIP when entering
- widgets that accept keyboard input. This only affects widgets that have the
- attribute WA_InputMethodEnabled set.
+ widgets that accept keyboard input. This property only affects widgets with
+ the WA_InputMethodEnabled attribute set.
*/
#ifdef Q_OS_WINCE
@@ -1302,9 +1288,9 @@ void QApplication::setStyleSheet(const QString& styleSheet)
#endif // QT_NO_STYLE_STYLESHEET
/*!
- Returns the application's style object.
+ Returns the application's style object.
- \sa setStyle(), QStyle
+ \sa setStyle(), QStyle
*/
QStyle *QApplication::style()
{
@@ -1389,22 +1375,21 @@ QStyle *QApplication::style()
}
/*!
- Sets the application's GUI style to \a style. Ownership of the style
- object is transferred to QApplication, so QApplication will delete
- the style object on application exit or when a new style is set and
- the old style is still the parent of the application object.
+ Sets the application's GUI style to \a style. Ownership of the style object
+ is transferred to QApplication, so QApplication will delete the style
+ object on application exit or when a new style is set and the old style is
+ still the parent of the application object.
Example usage:
\snippet doc/src/snippets/code/src_gui_kernel_qapplication.cpp 1
- When switching application styles, the color palette is set back to
- the initial colors or the system defaults. This is necessary since
- certain styles have to adapt the color palette to be fully
- style-guide compliant.
+ When switching application styles, the color palette is set back to the
+ initial colors or the system defaults. This is necessary since certain
+ styles have to adapt the color palette to be fully style-guide compliant.
- Note that setting the style before a palette has been set
- (i.e. before creating QApplication) will cause the application to
- use QStyle::standardPalette() for the palette.
+ Setting the style before a palette has been se, i.e., before creating
+ QApplication, will cause the application to use QStyle::standardPalette()
+ for the palette.
\warning Qt style sheets are currently not supported for custom QStyle
subclasses. We plan to address this in some future release.
@@ -1507,20 +1492,20 @@ void QApplication::setStyle(QStyle *style)
}
/*!
- \overload
+ \overload
- Requests a QStyle object for \a style from the QStyleFactory.
+ Requests a QStyle object for \a style from the QStyleFactory.
- The string must be one of the QStyleFactory::keys(), typically one
- of "windows", "motif", "cde", "plastique", "windowsxp", or
- "macintosh". Style names are case insensitive.
+ The string must be one of the QStyleFactory::keys(), typically one of
+ "windows", "motif", "cde", "plastique", "windowsxp", or "macintosh". Style
+ names are case insensitive.
- Returns 0 if an unknown \a style is passed, otherwise the QStyle object
- returned is set as the application's GUI style.
+ Returns 0 if an unknown \a style is passed, otherwise the QStyle object
+ returned is set as the application's GUI style.
- \warning To ensure that the application's style is set correctly, it is
- best to call this function before the QApplication constructor, if
- possible.
+ \warning To ensure that the application's style is set correctly, it is
+ best to call this function before the QApplication constructor, if
+ possible.
*/
QStyle* QApplication::setStyle(const QString& style)
{
@@ -1533,20 +1518,19 @@ QStyle* QApplication::setStyle(const QString& style)
}
/*!
- \since 4.5
+ \since 4.5
- Sets the default graphics backend to \a system, which will be used
- for on-screen widgets and QPixmaps. The available systems are
- \c{"native"}, \c{"raster"} and \c{"opengl"}.
+ Sets the default graphics backend to \a system, which will be used for
+ on-screen widgets and QPixmaps. The available systems are \c{"native"},
+ \c{"raster"} and \c{"opengl"}.
- Note that this function call overrides both the application
- commandline \c{-graphicssystem} switch and the configure
- \c{-graphicssystem} switch.
+ This function call overrides both the application commandline
+ \c{-graphicssystem} switch and the configure \c{-graphicssystem} switch.
- \warning This function must be called before the QApplication
- constructor is called.
+ \warning This function must be called before the QApplication constructor
+ is called.
- The \c{"opengl"} option is currently considered experimental.
+ \note The \c{"opengl"} option is currently experimental.
*/
void QApplication::setGraphicsSystem(const QString &system)
@@ -1555,9 +1539,10 @@ void QApplication::setGraphicsSystem(const QString &system)
}
/*!
- Returns the color specification.
- \sa QApplication::setColorSpec()
- */
+ Returns the color specification.
+
+ \sa QApplication::setColorSpec()
+*/
int QApplication::colorSpec()
{
@@ -1565,54 +1550,54 @@ int QApplication::colorSpec()
}
/*!
- Sets the color specification for the application to \a spec.
-
- The color specification controls how the application allocates colors
- when run on a display with a limited amount of colors, e.g. 8 bit / 256
- color displays.
-
- The color specification must be set before you create the QApplication
- object.
-
- The options are:
- \list
- \o QApplication::NormalColor.
- This is the default color allocation strategy. Use this option if
- your application uses buttons, menus, texts and pixmaps with few
- colors. With this option, the application uses system global
- colors. This works fine for most applications under X11, but on
- Windows machines it may cause dithering of non-standard colors.
- \o QApplication::CustomColor.
- Use this option if your application needs a small number of custom
- colors. On X11, this option is the same as NormalColor. On Windows, Qt
- creates a Windows palette, and allocates colors to it on demand.
- \o QApplication::ManyColor.
- Use this option if your application is very color hungry
- (e.g. it requires thousands of colors).
- Under X11 the effect is:
+ Sets the color specification for the application to \a spec.
+
+ The color specification controls how the application allocates colors when
+ run on a display with a limited amount of colors, e.g. 8 bit / 256 color
+ displays.
+
+ The color specification must be set before you create the QApplication
+ object.
+
+ The options are:
\list
- \o For 256-color displays which have at best a 256 color true
- color visual, the default visual is used, and colors are
- allocated from a color cube. The color cube is the 6x6x6 (216
- color) "Web palette" (the red, green, and blue components
- always have one of the following values: 0x00, 0x33, 0x66,
- 0x99, 0xCC, or 0xFF), but the number of colors can be changed
- by the \e -ncols option. The user can force the application to
- use the true color visual with the \link
- QApplication::QApplication() -visual \endlink option.
- \o For 256-color displays which have a true color visual with more
- than 256 colors, use that visual. Silicon Graphics X servers
- have this feature, for example. They provide an 8 bit visual
- by default but can deliver true color when asked.
+ \o QApplication::NormalColor. This is the default color allocation
+ strategy. Use this option if your application uses buttons, menus,
+ texts and pixmaps with few colors. With this option, the
+ application uses system global colors. This works fine for most
+ applications under X11, but on Windows machines it may cause
+ dithering of non-standard colors.
+ \o QApplication::CustomColor. Use this option if your application
+ needs a small number of custom colors. On X11, this option is the
+ same as NormalColor. On Windows, Qt creates a Windows palette, and
+ allocates colors to it on demand.
+ \o QApplication::ManyColor. Use this option if your application is
+ very color hungry, e.g., it requires thousands of colors. \br
+ Under X11 the effect is:
+ \list
+ \o For 256-color displays which have at best a 256 color true
+ color visual, the default visual is used, and colors are
+ allocated from a color cube. The color cube is the 6x6x6
+ (216 color) "Web palette" (the red, green, and blue
+ components always have one of the following values: 0x00,
+ 0x33, 0x66, 0x99, 0xCC, or 0xFF), but the number of colors
+ can be changed by the \e -ncols option. The user can force
+ the application to use the true color visual with the
+ \l{QApplication::QApplication()}{-visual} option.
+ \o For 256-color displays which have a true color visual with
+ more than 256 colors, use that visual. Silicon Graphics X
+ servers this feature, for example. They provide an 8 bit
+ visual by default but can deliver true color when asked.
+ \endlist
+ On Windows, Qt creates a Windows palette, and fills it with a color
+ cube.
\endlist
- On Windows, Qt creates a Windows palette, and fills it with a color cube.
- \endlist
- Be aware that the CustomColor and ManyColor choices may lead to colormap
- flashing: The foreground application gets (most) of the available
- colors, while the background windows will look less attractive.
+ Be aware that the CustomColor and ManyColor choices may lead to colormap
+ flashing: The foreground application gets (most) of the available colors,
+ while the background windows will look less attractive.
- Example:
+ Example:
\snippet doc/src/snippets/code/src_gui_kernel_qapplication.cpp 2
@@ -1632,10 +1617,9 @@ void QApplication::setColorSpec(int spec)
\brief the minimum size that any GUI element that the user can interact
with should have
- For example, no button should be resized to be smaller than the
- global strut size. The strut size should be considered when
- reimplementing GUI controls that may be used on touch-screens or
- similar I/O devices.
+ For example, no button should be resized to be smaller than the global
+ strut size. The strut size should be considered when reimplementing GUI
+ controls that may be used on touch-screens or similar I/O devices.
Example:
@@ -1669,12 +1653,11 @@ QPalette QApplication::palette()
\fn QPalette QApplication::palette(const QWidget* widget)
\overload
- If a \a widget is passed, the default palette for the
- widget's class is returned. This may or may not be the application
- palette. In most cases there isn't a special palette for certain
- types of widgets, but one notable exception is the popup menu
- under Windows, if the user has defined a special background color
- for menus in the display settings.
+ If a \a widget is passed, the default palette for the widget's class is
+ returned. This may or may not be the application palette. In most cases
+ there is no special palette for certain types of widgets, but one notable
+ exception is the popup menu under Windows, if the user has defined a
+ special background color for menus in the display settings.
\sa setPalette(), QWidget::palette()
*/
@@ -1768,26 +1751,26 @@ void QApplicationPrivate::setPalette_helper(const QPalette &palette, const char*
}
/*!
- Changes the default application palette to \a palette.
+ Changes the default application palette to \a palette.
- If \a className is passed, the change applies only to widgets that
- inherit \a className (as reported by QObject::inherits()). If
- \a className is left 0, the change affects all widgets, thus overriding
- any previously set class specific palettes.
+ If \a className is passed, the change applies only to widgets that inherit
+ \a className (as reported by QObject::inherits()). If \a className is left
+ 0, the change affects all widgets, thus overriding any previously set class
+ specific palettes.
- The palette may be changed according to the current GUI style in
- QStyle::polish().
+ The palette may be changed according to the current GUI style in
+ QStyle::polish().
- \warning Do not use this function in conjunction with \l{Qt Style Sheets}.
- When using style sheets, the palette of a widget can be customized using the "color",
- "background-color", "selection-color", "selection-background-color" and
- "alternate-background-color".
+ \warning Do not use this function in conjunction with \l{Qt Style Sheets}.
+ When using style sheets, the palette of a widget can be customized using
+ the "color", "background-color", "selection-color",
+ "selection-background-color" and "alternate-background-color".
- Note that some styles do not use the palette for all drawing,
- for instance, if they make use of native theme engines. This is
- the case for the Windows XP, Windows Vista, and Mac OS X styles.
+ \note Some styles do not use the palette for all drawing, for instance, if
+ they make use of native theme engines. This is the case for the Windows XP,
+ Windows Vista, and Mac OS X styles.
- \sa QWidget::setPalette(), palette(), QStyle::polish()
+ \sa QWidget::setPalette(), palette(), QStyle::polish()
*/
void QApplication::setPalette(const QPalette &palette, const char* className)
@@ -1892,15 +1875,15 @@ QFont QApplication::font(const char *className)
/*!
- Changes the default application font to \a font. If \a className
- is passed, the change applies only to classes that inherit \a
- className (as reported by QObject::inherits()).
+ Changes the default application font to \a font. If \a className is passed,
+ the change applies only to classes that inherit \a className (as reported
+ by QObject::inherits()).
- On application start-up, the default font depends on the window
- system. It can vary depending on both the window system version and
- the locale. This function lets you override the default font; but
- overriding may be a bad idea because, for example, some locales need
- extra large fonts to support their special characters.
+ On application start-up, the default font depends on the window system. It
+ can vary depending on both the window system version and the locale. This
+ function lets you override the default font; but overriding may be a bad
+ idea because, for example, some locales need extra large fonts to support
+ their special characters.
\warning Do not use this function in conjunction with \l{Qt Style Sheets}.
The font of an application can be customized using the "font" style sheet
@@ -2002,11 +1985,10 @@ void QApplication::setWindowIcon(const QIcon &icon)
}
/*!
- Returns a list of the top-level widgets (windows) in the
- application.
+ Returns a list of the top-level widgets (windows) in the application.
- Note that some of the top-level widgets may be hidden, for
- example a tooltip if no tooltip is currently shown.
+ \note Some of the top-level widgets may be hidden, for example a tooltip if
+ no tooltip is currently shown.
Example:
@@ -2032,7 +2014,7 @@ QWidgetList QApplication::topLevelWidgets()
The list is empty (QList::isEmpty()) if there are no widgets.
- Note that some of the widgets may be hidden.
+ \note Some of the widgets may be hidden.
Example:
\snippet doc/src/snippets/code/src_gui_kernel_qapplication.cpp 5
@@ -2051,10 +2033,10 @@ QWidgetList QApplication::allWidgets()
}
/*!
- Returns the application widget that has the keyboard input focus, or
- 0 if no widget in this application has the focus.
+ Returns the application widget that has the keyboard input focus, or 0 if
+ no widget in this application has the focus.
- \sa QWidget::setFocus(), QWidget::hasFocus(), activeWindow(), focusChanged()
+ \sa QWidget::setFocus(), QWidget::hasFocus(), activeWindow(), focusChanged()
*/
QWidget *QApplication::focusWidget()
@@ -2088,9 +2070,13 @@ void QApplicationPrivate::setFocusWidget(QWidget *focus, Qt::FocusReason reason)
QWidget *prev = focus_widget;
focus_widget = focus;
- if (prev && reason != Qt::PopupFocusReason && reason != Qt::MenuBarFocusReason &&
- prev->testAttribute(Qt::WA_InputMethodEnabled)) {
- QInputContext *qic = prev->inputContext();
+ if (prev && ((reason != Qt::PopupFocusReason && reason != Qt::MenuBarFocusReason
+ && prev->testAttribute(Qt::WA_InputMethodEnabled))
+ // Do reset the input context, in case the new focus widget won't accept keyboard input
+ // or it is not created fully yet.
+ || (focus_widget && (!focus_widget->testAttribute(Qt::WA_InputMethodEnabled)
+ || !focus_widget->testAttribute(Qt::WA_WState_Created))))) {
+ QInputContext *qic = prev->inputContext();
if(qic) {
qic->reset();
qic->setFocusWidget(0);
@@ -2128,19 +2114,19 @@ 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);
}
}
/*!
- Returns the application top-level window that has the keyboard input
- focus, or 0 if no application window has the focus. Note that
- there might be an activeWindow() even if there is no focusWidget(),
- for example if no widget in that window accepts key events.
+ Returns the application top-level window that has the keyboard input focus,
+ or 0 if no application window has the focus. There might be an
+ activeWindow() even if there is no focusWidget(), for example if no widget
+ in that window accepts key events.
- \sa QWidget::setFocus(), QWidget::hasFocus(), focusWidget()
+ \sa QWidget::setFocus(), QWidget::hasFocus(), focusWidget()
*/
QWidget *QApplication::activeWindow()
@@ -2149,9 +2135,9 @@ QWidget *QApplication::activeWindow()
}
/*!
- Returns display (screen) font metrics for the application font.
+ Returns display (screen) font metrics for the application font.
- \sa font(), setFont(), QWidget::fontMetrics(), QPainter::fontMetrics()
+ \sa font(), setFont(), QWidget::fontMetrics(), QPainter::fontMetrics()
*/
QFontMetrics QApplication::fontMetrics()
@@ -2163,19 +2149,20 @@ QFontMetrics QApplication::fontMetrics()
/*!
Closes all top-level windows.
- This function is particularly useful for applications with many
- top-level windows. It could, for example, be connected to a
- \gui{Exit} entry in the \gui{File} menu:
+ This function is particularly useful for applications with many top-level
+ windows. It could, for example, be connected to a \gui{Exit} entry in the
+ \gui{File} menu:
\snippet examples/mainwindows/mdi/mainwindow.cpp 0
- The windows are closed in random order, until one window does not
- accept the close event. The application quits when the last window
- was successfully closed; this can be turned off by setting \l
- quitOnLastWindowClosed to false.
+ The windows are closed in random order, until one window does not accept
+ the close event. The application quits when the last window was
+ successfully closed; this can be turned off by setting
+ \l quitOnLastWindowClosed to false.
- \sa quitOnLastWindowClosed, lastWindowClosed() QWidget::close(), QWidget::closeEvent(), lastWindowClosed(),
- quit(), topLevelWidgets(), QWidget::isWindow()
+ \sa quitOnLastWindowClosed, lastWindowClosed(), QWidget::close(),
+ QWidget::closeEvent(), lastWindowClosed(), quit(), topLevelWidgets(),
+ QWidget::isWindow()
*/
void QApplication::closeAllWindows()
{
@@ -2198,11 +2185,11 @@ void QApplication::closeAllWindows()
}
/*!
- Displays a simple message box about Qt. The message includes the
- version number of Qt being used by the application.
+ Displays a simple message box about Qt. The message includes the version
+ number of Qt being used by the application.
- This is useful for inclusion in the \gui Help menu of an application,
- as shown in the \l{mainwindows/menus}{Menus} example.
+ This is useful for inclusion in the \gui Help menu of an application, as
+ shown in the \l{mainwindows/menus}{Menus} example.
This function is a convenience slot for QMessageBox::aboutQt().
*/
@@ -2223,22 +2210,20 @@ void QApplication::aboutQt()
/*!
\fn void QApplication::lastWindowClosed()
- This signal is emitted from QApplication::exec() when the last
- visible primary window (i.e. window with no parent) with the
- Qt::WA_QuitOnClose attribute set is closed.
+ This signal is emitted from QApplication::exec() when the last visible
+ primary window (i.e. window with no parent) with the Qt::WA_QuitOnClose
+ attribute set is closed.
By default,
\list
+ \o this attribute is set for all widgets except transient windows such
+ as splash screens, tool windows, and popup menus
- \i this attribute is set for all widgets except transient windows
- such as splash screens, tool windows, and popup menus
-
- \i QApplication implicitly quits when this signal is emitted.
-
+ \o QApplication implicitly quits when this signal is emitted.
\endlist
- This feature be turned off by setting \l quitOnLastWindowClosed to
+ This feature can be turned off by setting \l quitOnLastWindowClosed to
false.
\sa QWidget::close()
@@ -2248,15 +2233,15 @@ void QApplication::aboutQt()
\since 4.1
\fn void QApplication::focusChanged(QWidget *old, QWidget *now)
- This signal is emitted when the widget that has keyboard focus
- changed from \a old to \a now, i.e. because the user pressed the
- tab-key, clicked into a widget or changed the active window. Note
- that both \a old and \a now can be the null-pointer.
+ This signal is emitted when the widget that has keyboard focus changed from
+ \a old to \a now, i.e., because the user pressed the tab-key, clicked into
+ a widget or changed the active window. Both \a old and \a now can be the
+ null-pointer.
- The signal is emitted after both widget have been notified about
- the change through QFocusEvent.
+ The signal is emitted after both widget have been notified about the change
+ through QFocusEvent.
- \sa QWidget::setFocus() QWidget::clearFocus() Qt::FocusReason
+ \sa QWidget::setFocus(), QWidget::clearFocus(), Qt::FocusReason
*/
/*!
@@ -2265,10 +2250,10 @@ void QApplication::aboutQt()
This signal is emitted when application fonts are loaded or removed.
- \sa QFontDatabase::addApplicationFont()
- \sa QFontDatabase::addApplicationFontFromData()
- \sa QFontDatabase::removeAllApplicationFonts()
- \sa QFontDatabase::removeApplicationFont()
+ \sa QFontDatabase::addApplicationFont(),
+ QFontDatabase::addApplicationFontFromData(),
+ QFontDatabase::removeAllApplicationFonts(),
+ QFontDatabase::removeApplicationFont()
*/
#ifndef QT_NO_TRANSLATION
@@ -2365,18 +2350,17 @@ void QApplication::syncX() {} // do nothing
\fn void QApplication::setActiveWindow(QWidget* active)
Sets the active window to the \a active widget in response to a system
- event. The function is called from the platform specific event
- handlers.
+ event. The function is called from the platform specific event handlers.
- \warning This function does \e not set the keyboard focus to the
- active widget. Call QWidget::activateWindow() instead.
+ \warning This function does \e not set the keyboard focus to the active
+ widget. Call QWidget::activateWindow() instead.
- It sets the activeWindow() and focusWidget() attributes and sends
- proper \l{QEvent::WindowActivate}{WindowActivate}/\l{QEvent::WindowDeactivate}{WindowDeactivate}
- and \l{QEvent::FocusIn}{FocusIn}/\l{QEvent::FocusOut}{FocusOut} events
- to all appropriate widgets. The window will then be painted in
- active state (e.g. cursors in line edits will blink), and it will
- have tool tips enabled.
+ It sets the activeWindow() and focusWidget() attributes and sends proper
+ \l{QEvent::WindowActivate}{WindowActivate}/\l{QEvent::WindowDeactivate}
+ {WindowDeactivate} and \l{QEvent::FocusIn}{FocusIn}/\l{QEvent::FocusOut}
+ {FocusOut} events to all appropriate widgets. The window will then be
+ painted in active state (e.g. cursors in line edits will blink), and it
+ will have tool tips enabled.
\sa activeWindow(), QWidget::activateWindow()
*/
@@ -2475,7 +2459,9 @@ void QApplication::setActiveWindow(QWidget* act)
} else {
// If the focus widget is not in the activate_window, clear the focus
w = QApplicationPrivate::focus_widget;
- if (w && !QApplicationPrivate::active_window->isAncestorOf(w))
+ if (!w && QApplicationPrivate::active_window->focusPolicy() != Qt::NoFocus)
+ QApplicationPrivate::setFocusWidget(QApplicationPrivate::active_window, Qt::ActiveWindowFocusReason);
+ else if (!QApplicationPrivate::active_window->isAncestorOf(w))
QApplicationPrivate::setFocusWidget(0, Qt::ActiveWindowFocusReason);
}
}
@@ -2520,11 +2506,11 @@ QWidget *QApplicationPrivate::focusNextPrevChild_helper(QWidget *toplevel, bool
}
/*!
- \fn void QApplicationPrivate::dispatchEnterLeave(QWidget* enter, QWidget* leave)
- \internal
+ \fn void QApplicationPrivate::dispatchEnterLeave(QWidget* enter, QWidget* leave)
+ \internal
- Creates the proper Enter/Leave event when widget \a enter is entered
- and widget \a leave is left.
+ Creates the proper Enter/Leave event when widget \a enter is entered and
+ widget \a leave is left.
*/
#if defined(Q_WS_WIN)
extern void qt_win_set_cursor(QWidget *, bool);
@@ -3041,11 +3027,11 @@ void QApplicationPrivate::sendSyntheticEnterLeave(QWidget *widget)
/*!
Returns the desktop widget (also called the root window).
- Note that the desktop may be composed of multiple screens, so it would be
- incorrect, for example, to attempt to \e center some widget in the
- desktop's geometry. QDesktopWidget has various functions for obtaining
- useful geometries upon the desktop, such as QDesktopWidget::screenGeometry()
- and QDesktopWidget::availableGeometry().
+ The desktop may be composed of multiple screens, so it would be incorrect,
+ for example, to attempt to \e center some widget in the desktop's geometry.
+ QDesktopWidget has various functions for obtaining useful geometries upon
+ the desktop, such as QDesktopWidget::screenGeometry() and
+ QDesktopWidget::availableGeometry().
On X11, it is also possible to draw on the desktop.
*/
@@ -3060,10 +3046,10 @@ QDesktopWidget *QApplication::desktop()
#ifndef QT_NO_CLIPBOARD
/*!
- Returns a pointer to the application global clipboard.
+ Returns a pointer to the application global clipboard.
- \note The QApplication object should already be constructed before
- accessing the clipboard.
+ \note The QApplication object should already be constructed before
+ accessing the clipboard.
*/
QClipboard *QApplication::clipboard()
{
@@ -3079,11 +3065,11 @@ QClipboard *QApplication::clipboard()
#endif // QT_NO_CLIPBOARD
/*!
- Sets whether Qt should use the system's standard colors, fonts,
- etc., to \a on. By default, this is true.
+ Sets whether Qt should use the system's standard colors, fonts, etc., to
+ \a on. By default, this is true.
- This function must be called before creating the QApplication
- object, like this:
+ This function must be called before creating the QApplication object, like
+ this:
\snippet doc/src/snippets/code/src_gui_kernel_qapplication.cpp 6
@@ -3095,8 +3081,8 @@ void QApplication::setDesktopSettingsAware(bool on)
}
/*!
- Returns true if Qt is set to use the system's standard colors,
- fonts, etc.; otherwise returns false. The default is true.
+ Returns true if Qt is set to use the system's standard colors, fonts, etc.;
+ otherwise returns false. The default is true.
\sa setDesktopSettingsAware()
*/
@@ -3106,17 +3092,17 @@ bool QApplication::desktopSettingsAware()
}
/*!
- Returns the current state of the modifier keys on the keyboard. The
- current state is updated sychronously as the event queue is emptied
- of events that will spontaneously change the keyboard state
- (QEvent::KeyPress and QEvent::KeyRelease events).
+ Returns the current state of the modifier keys on the keyboard. The current
+ state is updated sychronously as the event queue is emptied of events that
+ will spontaneously change the keyboard state (QEvent::KeyPress and
+ QEvent::KeyRelease events).
- It should be noted this may not reflect the actual keys held on the
- input device at the time of calling but rather the modifiers as
- last reported in one of the above events. If no keys are being held
- Qt::NoModifier is returned.
+ It should be noted this may not reflect the actual keys held on the input
+ device at the time of calling but rather the modifiers as last reported in
+ one of the above events. If no keys are being held Qt::NoModifier is
+ returned.
- \sa mouseButtons()
+ \sa mouseButtons()
*/
Qt::KeyboardModifiers QApplication::keyboardModifiers()
@@ -3125,17 +3111,17 @@ Qt::KeyboardModifiers QApplication::keyboardModifiers()
}
/*!
- Returns the current state of the buttons on the mouse. The current
- state is updated syncronously as the event queue is emptied of
- events that will spontaneously change the mouse state
- (QEvent::MouseButtonPress and QEvent::MouseButtonRelease events).
+ Returns the current state of the buttons on the mouse. The current state is
+ updated syncronously as the event queue is emptied of events that will
+ spontaneously change the mouse state (QEvent::MouseButtonPress and
+ QEvent::MouseButtonRelease events).
- It should be noted this may not reflect the actual buttons held on
- theinput device at the time of calling but rather the mouse buttons
- as last reported in one of the above events. If no mouse buttons are
- being held Qt::NoButton is returned.
+ It should be noted this may not reflect the actual buttons held on the
+ input device at the time of calling but rather the mouse buttons as last
+ reported in one of the above events. If no mouse buttons are being held
+ Qt::NoButton is returned.
- \sa keyboardModifiers()
+ \sa keyboardModifiers()
*/
Qt::MouseButtons QApplication::mouseButtons()
@@ -3144,43 +3130,40 @@ Qt::MouseButtons QApplication::mouseButtons()
}
/*!
- \fn bool QApplication::isSessionRestored() const
+ \fn bool QApplication::isSessionRestored() const
- Returns true if the application has been restored from an earlier
- \link session.html session\endlink; otherwise returns false.
+ Returns true if the application has been restored from an earlier
+ \l{Session Management}{session}; otherwise returns false.
- \sa sessionId(), commitData(), saveState()
+ \sa sessionId(), commitData(), saveState()
*/
/*!
- \fn QString QApplication::sessionId() const
+ \fn QString QApplication::sessionId() const
- Returns the current \link session.html session's\endlink identifier.
+ Returns the current \l{Session Management}{session's} identifier.
- If the application has been restored from an earlier session, this
- identifier is the same as it was in that previous session.
+ If the application has been restored from an earlier session, this
+ identifier is the same as it was in that previous session. The session
+ identifier is guaranteed to be unique both for different applications
+ and for different instances of the same application.
- The session identifier is guaranteed to be unique both for different
- applications and for different instances of the same application.
-
- \sa isSessionRestored(), sessionKey(), commitData(), saveState()
- */
+ \sa isSessionRestored(), sessionKey(), commitData(), saveState()
+*/
/*!
- \fn QString QApplication::sessionKey() const
+ \fn QString QApplication::sessionKey() const
- Returns the session key in the current \link session.html
- session\endlink.
+ Returns the session key in the current \l{Session Management}{session}.
- If the application has been restored from an earlier session, this
- key is the same as it was when the previous session ended.
+ If the application has been restored from an earlier session, this key is
+ the same as it was when the previous session ended.
- The session key changes with every call of commitData() or
- saveState().
+ The session key changes with every call of commitData() or saveState().
- \sa isSessionRestored(), sessionId(), commitData(), saveState()
- */
+ \sa isSessionRestored(), sessionId(), commitData(), saveState()
+*/
#ifndef QT_NO_SESSIONMANAGER
bool QApplication::isSessionRestored() const
{
@@ -3203,59 +3186,57 @@ QString QApplication::sessionKey() const
-
-
/*!
- \since 4.2
- \fn void QApplication::commitDataRequest(QSessionManager &manager)
+ \since 4.2
+ \fn void QApplication::commitDataRequest(QSessionManager &manager)
- This signal deals with \link session.html session
- management\endlink. It is emitted when the QSessionManager wants the
- application to commit all its data.
+ This signal deals with \l{Session Management}{session management}. It is
+ emitted when the QSessionManager wants the application to commit all its
+ data.
- Usually this means saving all open files, after getting
- permission from the user. Furthermore you may want to provide a means
- by which the user can cancel the shutdown.
+ Usually this means saving all open files, after getting permission from
+ the user. Furthermore you may want to provide a means by which the user
+ can cancel the shutdown.
- Note that you should not exit the application when called.
- Instead, the session manager may or may not do this afterwards,
- depending on the context.
+ You should not exit the application within this signal. Instead,
+ the session manager may or may not do this afterwards, depending on the
+ context.
- \warning Within this signal, no user interaction is possible, \e
- unless you ask the \a manager for explicit permission. See
- QSessionManager::allowsInteraction() and
- QSessionManager::allowsErrorInteraction() for details and example
- usage.
+ \warning Within this signal, no user interaction is possible, \e
+ unless you ask the \a manager for explicit permission. See
+ QSessionManager::allowsInteraction() and
+ QSessionManager::allowsErrorInteraction() for details and example
+ usage.
- Note: You should use Qt::DirectConnection when connecting to this signal.
+ \note You should use Qt::DirectConnection when connecting to this signal.
- \sa isSessionRestored(), sessionId(), saveState(), {Session Management}
+ \sa isSessionRestored(), sessionId(), saveState(), {Session Management}
*/
/*!
- This function deals with \link session.html session
- management\endlink. It is invoked when the QSessionManager wants the
- application to commit all its data.
+ This function deals with \l{Session Management}{session management}. It is
+ invoked when the QSessionManager wants the application to commit all its
+ data.
- Usually this means saving all open files, after getting
- permission from the user. Furthermore you may want to provide a means
- by which the user can cancel the shutdown.
+ Usually this means saving all open files, after getting permission from the
+ user. Furthermore you may want to provide a means by which the user can
+ cancel the shutdown.
- Note that you should not exit the application within this function.
- Instead, the session manager may or may not do this afterwards,
- depending on the context.
+ You should not exit the application within this function. Instead, the
+ session manager may or may not do this afterwards, depending on the
+ context.
- \warning Within this function, no user interaction is possible, \e
- unless you ask the \a manager for explicit permission. See
- QSessionManager::allowsInteraction() and
- QSessionManager::allowsErrorInteraction() for details and example
- usage.
+ \warning Within this function, no user interaction is possible, \e
+ unless you ask the \a manager for explicit permission. See
+ QSessionManager::allowsInteraction() and
+ QSessionManager::allowsErrorInteraction() for details and example
+ usage.
- The default implementation requests interaction and sends a close
- event to all visible top-level widgets. If any event was
- rejected, the shutdown is canceled.
+ The default implementation requests interaction and sends a close event to
+ all visible top-level widgets. If any event was rejected, the shutdown is
+ canceled.
- \sa isSessionRestored(), sessionId(), saveState(), {Session Management}
+ \sa isSessionRestored(), sessionId(), saveState(), {Session Management}
*/
#ifndef QT_NO_SESSIONMANAGER
void QApplication::commitData(QSessionManager& manager )
@@ -3281,58 +3262,54 @@ void QApplication::commitData(QSessionManager& manager )
}
/*!
- \since 4.2
- \fn void QApplication::saveStateRequest(QSessionManager &manager)
+ \since 4.2
+ \fn void QApplication::saveStateRequest(QSessionManager &manager)
- This signal deals with \link session.html session
- management\endlink. It is invoked when the
- \link QSessionManager session manager \endlink wants the application
- to preserve its state for a future session.
+ This signal deals with \l{Session Management}{session management}. It is
+ invoked when the \l{QSessionManager}{session manager} wants the application
+ to preserve its state for a future session.
- For example, a text editor would create a temporary file that
- includes the current contents of its edit buffers, the location of
- the cursor and other aspects of the current editing session.
+ For example, a text editor would create a temporary file that includes the
+ current contents of its edit buffers, the location of the cursor and other
+ aspects of the current editing session.
- Note that you should never exit the application within this
- signal. Instead, the session manager may or may not do this
- afterwards, depending on the context. Futhermore, most session
- managers will very likely request a saved state immediately after
- the application has been started. This permits the session manager
- to learn about the application's restart policy.
+ You should never exit the application within this signal. Instead, the
+ session manager may or may not do this afterwards, depending on the
+ context. Futhermore, most session managers will very likely request a saved
+ state immediately after the application has been started. This permits the
+ session manager to learn about the application's restart policy.
- \warning Within this function, no user interaction is possible, \e
- unless you ask the \a manager for explicit permission. See
- QSessionManager::allowsInteraction() and
- QSessionManager::allowsErrorInteraction() for details.
+ \warning Within this function, no user interaction is possible, \e
+ unless you ask the \a manager for explicit permission. See
+ QSessionManager::allowsInteraction() and
+ QSessionManager::allowsErrorInteraction() for details.
- Note:: You should use Qt::DirectConnection when connecting to this signal.
+ \note You should use Qt::DirectConnection when connecting to this signal.
- \sa isSessionRestored(), sessionId(), commitData(), {Session Management}
+ \sa isSessionRestored(), sessionId(), commitData(), {Session Management}
*/
/*!
- This function deals with \link session.html session
- management\endlink. It is invoked when the
- \link QSessionManager session manager \endlink wants the application
- to preserve its state for a future session.
+ This function deals with \l{Session Management}{session management}. It is
+ invoked when the \l{QSessionManager}{session manager} wants the application
+ to preserve its state for a future session.
- For example, a text editor would create a temporary file that
- includes the current contents of its edit buffers, the location of
- the cursor and other aspects of the current editing session.
+ For example, a text editor would create a temporary file that includes the
+ current contents of its edit buffers, the location of the cursor and other
+ aspects of the current editing session.
- Note that you should never exit the application within this
- function. Instead, the session manager may or may not do this
- afterwards, depending on the context. Futhermore, most session
- managers will very likely request a saved state immediately after
- the application has been started. This permits the session manager
- to learn about the application's restart policy.
+ You should never exit the application within this function. Instead, the
+ session manager may or may not do this afterwards, depending on the
+ context. Futhermore, most session managers will very likely request a saved
+ state immediately after the application has been started. This permits the
+ session manager to learn about the application's restart policy.
- \warning Within this function, no user interaction is possible, \e
- unless you ask the \a manager for explicit permission. See
- QSessionManager::allowsInteraction() and
- QSessionManager::allowsErrorInteraction() for details.
+ \warning Within this function, no user interaction is possible, \e
+ unless you ask the \a manager for explicit permission. See
+ QSessionManager::allowsInteraction() and
+ QSessionManager::allowsErrorInteraction() for details.
- \sa isSessionRestored(), sessionId(), commitData(), {Session Management}
+ \sa isSessionRestored(), sessionId(), commitData(), {Session Management}
*/
void QApplication::saveState(QSessionManager &manager)
@@ -3356,13 +3333,12 @@ void QApplication::setStartDragTime(int ms)
\brief the time in milliseconds that a mouse button must be held down
before a drag and drop operation will begin
- If you support drag and drop in your application, and want to start a
- drag and drop operation after the user has held down a mouse button for
- a certain amount of time, you should use this property's value as the
- delay.
+ If you support drag and drop in your application, and want to start a drag
+ and drop operation after the user has held down a mouse button for a
+ certain amount of time, you should use this property's value as the delay.
- Qt also uses this delay internally, e.g. in QTextEdit and QLineEdit,
- for starting a drag.
+ Qt also uses this delay internally, e.g. in QTextEdit and QLineEdit, for
+ starting a drag.
The default value is 500 ms.
@@ -3375,9 +3351,9 @@ int QApplication::startDragTime()
}
/*
- Sets the distance after which a drag should start to \a l pixels.
+ Sets the distance after which a drag should start to \a l pixels.
- \sa startDragDistance()
+ \sa startDragDistance()
*/
void QApplication::setStartDragDistance(int l)
@@ -3388,15 +3364,14 @@ void QApplication::setStartDragDistance(int l)
/*!
\property QApplication::startDragDistance
- If you support drag and drop in your application, and want to start a
- drag and drop operation after the user has moved the cursor a certain
- distance with a button held down, you should use this property's value
- as the minimum distance required.
+ If you support drag and drop in your application, and want to start a drag
+ and drop operation after the user has moved the cursor a certain distance
+ with a button held down, you should use this property's value as the
+ minimum distance required.
- For example, if the mouse position of the click is stored in \c
- startPos and the current position (e.g. in the mouse move event) is
- \c currentPos, you can find out if a drag should be started with code
- like this:
+ For example, if the mouse position of the click is stored in \c startPos
+ and the current position (e.g. in the mouse move event) is \c currentPos,
+ you can find out if a drag should be started with code like this:
\snippet doc/src/snippets/code/src_gui_kernel_qapplication.cpp 7
@@ -3442,14 +3417,14 @@ int QApplication::startDragDistance()
\sa layoutDirection(), isRightToLeft()
*/
-/*! \property QApplication::layoutDirection
-
- \brief the default layout direction for this application
+/*!
+ \property QApplication::layoutDirection
+ \brief the default layout direction for this application
- On system start-up, the default layout direction depends on the
- application's language.
+ On system start-up, the default layout direction depends on the
+ application's language.
- \sa QWidget::layoutDirection, isLeftToRight(), isRightToLeft()
+ \sa QWidget::layoutDirection, isLeftToRight(), isRightToLeft()
*/
void QApplication::setLayoutDirection(Qt::LayoutDirection direction)
@@ -3473,11 +3448,12 @@ Qt::LayoutDirection QApplication::layoutDirection()
}
-/*! \obsolete
+/*!
+ \obsolete
- Strips out vertical alignment flags and transforms an
- alignment \a align of Qt::AlignLeft into Qt::AlignLeft or
- Qt::AlignRight according to the language used.
+ Strips out vertical alignment flags and transforms an alignment \a align
+ of Qt::AlignLeft into Qt::AlignLeft or Qt::AlignRight according to the
+ language used.
*/
#ifdef QT3_SUPPORT
@@ -3493,8 +3469,8 @@ Qt::Alignment QApplication::horizontalAlignment(Qt::Alignment align)
Returns the active application override cursor.
- This function returns 0 if no application cursor has been defined
- (i.e. the internal cursor stack is empty).
+ This function returns 0 if no application cursor has been defined (i.e. the
+ internal cursor stack is empty).
\sa setOverrideCursor(), restoreOverrideCursor()
*/
@@ -3507,9 +3483,10 @@ QCursor *QApplication::overrideCursor()
/*!
Changes the currently active application override cursor to \a cursor.
- This function has no effect if setOverrideCursor() wasn't called.
+ This function has no effect if setOverrideCursor() was not called.
- \sa setOverrideCursor() overrideCursor() restoreOverrideCursor() QWidget::setCursor()
+ \sa setOverrideCursor(), overrideCursor(), restoreOverrideCursor(),
+ QWidget::setCursor()
*/
void QApplication::changeOverrideCursor(const QCursor &cursor)
{
@@ -3523,8 +3500,8 @@ void QApplication::changeOverrideCursor(const QCursor &cursor)
/*!
\fn void QApplication::setOverrideCursor(const QCursor &cursor, bool replace)
- Use changeOverrideCursor(\a cursor) (if \a replace is true)
- or setOverrideCursor(\a cursor) (if \a replace is false).
+ Use changeOverrideCursor(\a cursor) (if \a replace is true) or
+ setOverrideCursor(\a cursor) (if \a replace is false).
*/
/*!
@@ -3532,29 +3509,26 @@ void QApplication::changeOverrideCursor(const QCursor &cursor)
the value that was set to exit() (which is 0 if exit() is called via
quit()).
- It is necessary to call this function to start event handling. The
- main event loop receives events from the window system and
- dispatches these to the application widgets.
-
- Generally speaking, no user interaction can take place before
- calling exec(). As a special case, modal widgets like QMessageBox
- can be used before calling exec(), because modal widgets call
- exec() to start a local event loop.
+ It is necessary to call this function to start event handling. The main
+ event loop receives events from the window system and dispatches these to
+ the application widgets.
+
+ Generally, no user interaction can take place before calling exec(). As a
+ special case, modal widgets like QMessageBox can be used before calling
+ exec(), because modal widgets call exec() to start a local event loop.
- To make your application perform idle processing, i.e. executing a
- special function whenever there are no pending events, use a
- QTimer with 0 timeout. More advanced idle processing schemes can
- be achieved using processEvents().
+ To make your application perform idle processing, i.e., executing a special
+ function whenever there are no pending events, use a QTimer with 0 timeout.
+ More advanced idle processing schemes can be achieved using processEvents().
We recommend that you connect clean-up code to the
- \l{QCoreApplication::}{aboutToQuit()} signal, instead of putting it in
- your application's \c{main()} function because on some platforms the
- QApplication::exec() call may not return. For example, on Windows
- when the user logs off, the system terminates the process after Qt
- closes all top-level windows. Hence, there is no guarantee that the
- application will have time to exit its event loop and execute code at
- the end of the \c{main()} function after the QApplication::exec()
- call.
+ \l{QCoreApplication::}{aboutToQuit()} signal, instead of putting it in your
+ application's \c{main()} function because on some platforms the
+ QApplication::exec() call may not return. For example, on Windows when the
+ user logs off, the system terminates the process after Qt closes all
+ top-level windows. Hence, there is no guarantee that the application will
+ have time to exit its event loop and execute code at the end of the
+ \c{main()} function after the QApplication::exec() call.
\sa quitOnLastWindowClosed, quit(), exit(), processEvents(),
QCoreApplication::exec()
@@ -4109,101 +4083,98 @@ bool QApplicationPrivate::notify_helper(QObject *receiver, QEvent * e)
/*!
- \class QSessionManager
- \brief The QSessionManager class provides access to the session manager.
-
- \ingroup application
- \ingroup environment
-
- A session manager in a desktop environment (in which Qt GUI
- applications live) keeps track of a session, which is a group of
- running applications, each of which has a particular state. The
- state of an application contains (most notably) the documents the
- application has open and the position and size of its windows.
-
- The session manager is used to save the session, e.g. when the
- machine is shut down, and to restore a session, e.g. when the
- machine is started up. We recommend that you use QSettings to save
- an individual application's settings, e.g. window positions,
- recently used files, etc. When the application is restarted by the
- session manager, you can restore the settings.
-
- QSessionManager provides an interface between the application
- and the session manager so that the program can work well with the
- session manager. In Qt, session management requests for action are
- handled by the two virtual functions QApplication::commitData()
- and QApplication::saveState(). Both provide a reference to a
- session manager object as argument, to allow the application to
- communicate with the session manager. The session manager can only
- be accessed through these functions.
-
- No user interaction is possible \e unless the application gets
- explicit permission from the session manager. You ask for permission
- by calling allowsInteraction() or, if it's really urgent,
- allowsErrorInteraction(). Qt does not enforce this, but the session
- manager may.
-
- You can try to abort the shutdown process by calling cancel(). The
- default commitData() function does this if some top-level window
- rejected its closeEvent().
-
- For sophisticated session managers provided on Unix/X11, QSessionManager
- offers further possibilities to fine-tune an application's session
- management behavior: setRestartCommand(), setDiscardCommand(),
- setRestartHint(), setProperty(), requestPhase2(). See the respective
- function descriptions for further details.
-
- \sa QApplication, {Session Management}
+ \class QSessionManager
+ \brief The QSessionManager class provides access to the session manager.
+
+ \ingroup application
+ \ingroup environment
+
+ A session manager in a desktop environment (in which Qt GUI applications
+ live) keeps track of a session, which is a group of running applications,
+ each of which has a particular state. The state of an application contains
+ (most notably) the documents the application has open and the position and
+ size of its windows.
+
+ The session manager is used to save the session, e.g., when the machine is
+ shut down, and to restore a session, e.g., when the machine is started up.
+ We recommend that you use QSettings to save an application's settings,
+ for example, window positions, recently used files, etc. When the
+ application is restarted by the session manager, you can restore the
+ settings.
+
+ QSessionManager provides an interface between the application and the
+ session manager so that the program can work well with the session manager.
+ In Qt, session management requests for action are handled by the two
+ virtual functions QApplication::commitData() and QApplication::saveState().
+ Both provide a reference to a session manager object as argument, to allow
+ the application to communicate with the session manager. The session
+ manager can only be accessed through these functions.
+
+ No user interaction is possible \e unless the application gets explicit
+ permission from the session manager. You ask for permission by calling
+ allowsInteraction() or, if it is really urgent, allowsErrorInteraction().
+ Qt does not enforce this, but the session manager may.
+
+ You can try to abort the shutdown process by calling cancel(). The default
+ commitData() function does this if some top-level window rejected its
+ closeEvent().
+
+ For sophisticated session managers provided on Unix/X11, QSessionManager
+ offers further possibilities to fine-tune an application's session
+ management behavior: setRestartCommand(), setDiscardCommand(),
+ setRestartHint(), setProperty(), requestPhase2(). See the respective
+ function descriptions for further details.
+
+ \sa QApplication, {Session Management}
*/
/*! \enum QSessionManager::RestartHint
- This enum type defines the circumstances under which this
- application wants to be restarted by the session manager. The
- current values are
+ This enum type defines the circumstances under which this application wants
+ to be restarted by the session manager. The current values are:
- \value RestartIfRunning if the application is still running when
- the session is shut down, it wants to be restarted at the start of
- the next session.
+ \value RestartIfRunning If the application is still running when the
+ session is shut down, it wants to be restarted
+ at the start of the next session.
- \value RestartAnyway the application wants to be started at the
- start of the next session, no matter what. (This is useful for
- utilities that run just after startup and then quit.)
+ \value RestartAnyway The application wants to be started at the
+ start of the next session, no matter what.
+ (This is useful for utilities that run just
+ after startup and then quit.)
- \value RestartImmediately the application wants to be started
- immediately whenever it is not running.
+ \value RestartImmediately The application wants to be started immediately
+ whenever it is not running.
- \value RestartNever the application does not want to be restarted
- automatically.
+ \value RestartNever The application does not want to be restarted
+ automatically.
- The default hint is \c RestartIfRunning.
+ The default hint is \c RestartIfRunning.
*/
/*!
- \fn QString QSessionManager::sessionId() const
+ \fn QString QSessionManager::sessionId() const
- Returns the identifier of the current session.
+ Returns the identifier of the current session.
- If the application has been restored from an earlier session, this
- identifier is the same as it was in that earlier session.
+ If the application has been restored from an earlier session, this
+ identifier is the same as it was in the earlier session.
- \sa sessionKey(), QApplication::sessionId()
- */
+ \sa sessionKey(), QApplication::sessionId()
+*/
/*!
- \fn QString QSessionManager::sessionKey() const
+ \fn QString QSessionManager::sessionKey() const
- Returns the session key in the current session.
+ Returns the session key in the current session.
- If the application has been restored from an earlier session, this
- key is the same as it was when the previous session ended.
+ If the application has been restored from an earlier session, this key is
+ the same as it was when the previous session ended.
- The session key changes with every call of commitData() or
- saveState().
+ The session key changes with every call of commitData() or saveState().
- \sa sessionId(), QApplication::sessionKey()
- */
+ \sa sessionId(), QApplication::sessionKey()
+*/
/*!
\fn void* QSessionManager::handle() const
@@ -4212,120 +4183,116 @@ bool QApplicationPrivate::notify_helper(QObject *receiver, QEvent * e)
*/
/*!
- \fn bool QSessionManager::allowsInteraction()
+ \fn bool QSessionManager::allowsInteraction()
- Asks the session manager for permission to interact with the
- user. Returns true if interaction is permitted; otherwise
- returns false.
+ Asks the session manager for permission to interact with the user. Returns
+ true if interaction is permitted; otherwise returns false.
- The rationale behind this mechanism is to make it possible to
- synchronize user interaction during a shutdown. Advanced session
- managers may ask all applications simultaneously to commit their
- data, resulting in a much faster shutdown.
+ The rationale behind this mechanism is to make it possible to synchronize
+ user interaction during a shutdown. Advanced session managers may ask all
+ applications simultaneously to commit their data, resulting in a much
+ faster shutdown.
- When the interaction is completed we strongly recommend releasing the
- user interaction semaphore with a call to release(). This way, other
- applications may get the chance to interact with the user while your
- application is still busy saving data. (The semaphore is implicitly
- released when the application exits.)
+ When the interaction is completed we strongly recommend releasing the user
+ interaction semaphore with a call to release(). This way, other
+ applications may get the chance to interact with the user while your
+ application is still busy saving data. (The semaphore is implicitly
+ released when the application exits.)
- If the user decides to cancel the shutdown process during the
- interaction phase, you must tell the session manager that this has
- happened by calling cancel().
+ If the user decides to cancel the shutdown process during the interaction
+ phase, you must tell the session manager that this has happened by calling
+ cancel().
- Here's an example of how an application's QApplication::commitData()
- might be implemented:
+ Here's an example of how an application's QApplication::commitData() might
+ be implemented:
- \snippet doc/src/snippets/code/src_gui_kernel_qapplication.cpp 8
+ \snippet doc/src/snippets/code/src_gui_kernel_qapplication.cpp 8
- If an error occurred within the application while saving its data,
- you may want to try allowsErrorInteraction() instead.
+ If an error occurred within the application while saving its data, you may
+ want to try allowsErrorInteraction() instead.
- \sa QApplication::commitData(), release(), cancel()
+ \sa QApplication::commitData(), release(), cancel()
*/
/*!
- \fn bool QSessionManager::allowsErrorInteraction()
+ \fn bool QSessionManager::allowsErrorInteraction()
- Returns true if error interaction is permitted; otherwise returns false.
+ Returns true if error interaction is permitted; otherwise returns false.
- This is similar to allowsInteraction(), but also enables the application
- to tell the user about any errors that occur. Session managers
- may give error interaction requests higher priority, which means that it
- is more likely that an error interaction is permitted. However, you are
- still not guaranteed that the session manager will allow interaction.
+ This is similar to allowsInteraction(), but also enables the application to
+ tell the user about any errors that occur. Session managers may give error
+ interaction requests higher priority, which means that it is more likely
+ that an error interaction is permitted. However, you are still not
+ guaranteed that the session manager will allow interaction.
- \sa allowsInteraction(), release(), cancel()
+ \sa allowsInteraction(), release(), cancel()
*/
/*!
- \fn void QSessionManager::release()
+ \fn void QSessionManager::release()
- Releases the session manager's interaction semaphore after an
- interaction phase.
+ Releases the session manager's interaction semaphore after an interaction
+ phase.
- \sa allowsInteraction(), allowsErrorInteraction()
+ \sa allowsInteraction(), allowsErrorInteraction()
*/
/*!
- \fn void QSessionManager::cancel()
-
- Tells the session manager to cancel the shutdown process. Applications
- should not call this function without first asking the user.
+ \fn void QSessionManager::cancel()
- \sa allowsInteraction(), allowsErrorInteraction()
+ Tells the session manager to cancel the shutdown process. Applications
+ should not call this function without asking the user first.
+ \sa allowsInteraction(), allowsErrorInteraction()
*/
/*!
- \fn void QSessionManager::setRestartHint(RestartHint hint)
+ \fn void QSessionManager::setRestartHint(RestartHint hint)
- Sets the application's restart hint to \a hint. On application
- startup the hint is set to \c RestartIfRunning.
+ Sets the application's restart hint to \a hint. On application startup, the
+ hint is set to \c RestartIfRunning.
- Note that these flags are only hints, a session manager may or may
- not respect them.
+ \note These flags are only hints, a session manager may or may not respect
+ them.
- We recommend setting the restart hint in QApplication::saveState()
- because most session managers perform a checkpoint shortly after an
- application's startup.
+ We recommend setting the restart hint in QApplication::saveState() because
+ most session managers perform a checkpoint shortly after an application's
+ startup.
- \sa restartHint()
+ \sa restartHint()
*/
/*!
- \fn QSessionManager::RestartHint QSessionManager::restartHint() const
+ \fn QSessionManager::RestartHint QSessionManager::restartHint() const
- Returns the application's current restart hint. The default is
- \c RestartIfRunning.
+ Returns the application's current restart hint. The default is
+ \c RestartIfRunning.
- \sa setRestartHint()
+ \sa setRestartHint()
*/
/*!
- \fn void QSessionManager::setRestartCommand(const QStringList& command)
+ \fn void QSessionManager::setRestartCommand(const QStringList& command)
- If the session manager is capable of restoring sessions it will
- execute \a command in order to restore the application. The command
- defaults to
+ If the session manager is capable of restoring sessions it will execute
+ \a command in order to restore the application. The command defaults to
\snippet doc/src/snippets/code/src_gui_kernel_qapplication.cpp 9
- The \c -session option is mandatory; otherwise QApplication cannot
- tell whether it has been restored or what the current session
- identifier is. See QApplication::isSessionRestored() and
- QApplication::sessionId() for details.
+ The \c -session option is mandatory; otherwise QApplication cannot tell
+ whether it has been restored or what the current session identifier is.
+ See QApplication::isSessionRestored() and QApplication::sessionId() for
+ details.
- If your application is very simple, it may be possible to store the
- entire application state in additional command line options. This
- is usually a very bad idea because command lines are often limited
- to a few hundred bytes. Instead, use QSettings, or temporary files
- or a database for this purpose. By marking the data with the unique
- sessionId(), you will be able to restore the application in a future
- session.
+ If your application is very simple, it may be possible to store the entire
+ application state in additional command line options. This is usually a
+ very bad idea because command lines are often limited to a few hundred
+ bytes. Instead, use QSettings, temporary files, or a database for this
+ purpose. By marking the data with the unique sessionId(), you will be able
+ to restore the application in a future session.
- \sa restartCommand(), setDiscardCommand(), setRestartHint()
+ \sa restartCommand(), setDiscardCommand(), setRestartHint()
*/
/*!
@@ -4333,8 +4300,7 @@ bool QApplicationPrivate::notify_helper(QObject *receiver, QEvent * e)
Returns the currently set restart command.
- To iterate over the list, you can use the \l foreach
- pseudo-keyword:
+ To iterate over the list, you can use the \l foreach pseudo-keyword:
\snippet doc/src/snippets/code/src_gui_kernel_qapplication.cpp 10
@@ -4342,11 +4308,11 @@ bool QApplicationPrivate::notify_helper(QObject *receiver, QEvent * e)
*/
/*!
- \fn void QSessionManager::setDiscardCommand(const QStringList& list)
+ \fn void QSessionManager::setDiscardCommand(const QStringList& list)
- Sets the discard command to the given \a list.
+ Sets the discard command to the given \a list.
- \sa discardCommand(), setRestartCommand()
+ \sa discardCommand(), setRestartCommand()
*/
@@ -4355,8 +4321,7 @@ bool QApplicationPrivate::notify_helper(QObject *receiver, QEvent * e)
Returns the currently set discard command.
- To iterate over the list, you can use the \l foreach
- pseudo-keyword:
+ To iterate over the list, you can use the \l foreach pseudo-keyword:
\snippet doc/src/snippets/code/src_gui_kernel_qapplication.cpp 11
@@ -4364,53 +4329,51 @@ bool QApplicationPrivate::notify_helper(QObject *receiver, QEvent * e)
*/
/*!
- \fn void QSessionManager::setManagerProperty(const QString &name, const QString &value)
- \overload
+ \fn void QSessionManager::setManagerProperty(const QString &name, const QString &value)
+ \overload
- Low-level write access to the application's identification and state
- records are kept in the session manager.
+ Low-level write access to the application's identification and state
+ records are kept in the session manager.
- The property called \a name has its value set to the string \a value.
+ The property called \a name has its value set to the string \a value.
*/
/*!
- \fn void QSessionManager::setManagerProperty(const QString& name,
- const QStringList& value)
+ \fn void QSessionManager::setManagerProperty(const QString& name,
+ const QStringList& value)
- Low-level write access to the application's identification and state
- record are kept in the session manager.
+ Low-level write access to the application's identification and state record
+ are kept in the session manager.
- The property called \a name has its value set to the string list \a value.
+ The property called \a name has its value set to the string list \a value.
*/
/*!
- \fn bool QSessionManager::isPhase2() const
+ \fn bool QSessionManager::isPhase2() const
- Returns true if the session manager is currently performing a second
- session management phase; otherwise returns false.
+ Returns true if the session manager is currently performing a second
+ session management phase; otherwise returns false.
- \sa requestPhase2()
+ \sa requestPhase2()
*/
/*!
- \fn void QSessionManager::requestPhase2()
+ \fn void QSessionManager::requestPhase2()
- Requests a second session management phase for the application. The
- application may then return immediately from the
- QApplication::commitData() or QApplication::saveState() function,
- and they will be called again once most or all other applications have
- finished their session management.
+ Requests a second session management phase for the application. The
+ application may then return immediately from the QApplication::commitData()
+ or QApplication::saveState() function, and they will be called again once
+ most or all other applications have finished their session management.
- The two phases are useful for applications such as the X11 window manager
- that need to store information about another application's windows
- and therefore have to wait until these applications have completed their
- respective session management tasks.
+ The two phases are useful for applications such as the X11 window manager
+ that need to store information about another application's windows and
+ therefore have to wait until these applications have completed their
+ respective session management tasks.
- Note that if another application has requested a second phase it
- may get called before, simultaneously with, or after your
- application's second phase.
+ \note If another application has requested a second phase it may get called
+ before, simultaneously with, or after your application's second phase.
- \sa isPhase2()
+ \sa isPhase2()
*/
/*****************************************************************************
@@ -4603,15 +4566,14 @@ void QSessionManager::requestPhase2()
/*!
\fn bool QApplication::hasGlobalMouseTracking()
- This feature does not exist anymore. This function
- always returns true in Qt 4.
+ This feature does not exist anymore. This function always returns true
+ in Qt 4.
*/
/*!
\fn void QApplication::setGlobalMouseTracking(bool dummy)
- This function does nothing in Qt 4. The \a dummy parameter
- is ignored.
+ This function does nothing in Qt 4. The \a dummy parameter is ignored.
*/
/*!
@@ -4649,15 +4611,14 @@ void QSessionManager::requestPhase2()
/*!
\fn const QColor &QApplication::winStyleHighlightColor()
- Use qApp->palette().color(QPalette::Active, QPalette::Highlight)
- instead.
+ Use qApp->palette().color(QPalette::Active, QPalette::Highlight) instead.
*/
/*!
\fn QWidget *QApplication::widgetAt(int x, int y, bool child)
- Use the two-argument widgetAt() overload to get the child widget.
- To get the top-level widget do this:
+ Use the two-argument widgetAt() overload to get the child widget. To get
+ the top-level widget do this:
\snippet doc/src/snippets/code/src_gui_kernel_qapplication.cpp 12
*/
@@ -4665,8 +4626,8 @@ void QSessionManager::requestPhase2()
/*!
\fn QWidget *QApplication::widgetAt(const QPoint &point, bool child)
- Use the single-argument widgetAt() overload to get the child widget.
- To get the top-level widget do this:
+ Use the single-argument widgetAt() overload to get the child widget. To get
+ the top-level widget do this:
\snippet doc/src/snippets/code/src_gui_kernel_qapplication.cpp 13
*/
@@ -4738,10 +4699,9 @@ void QApplicationPrivate::emitLastWindowClosed()
Sets whether Qt should use focus navigation suitable for use with a
minimal keypad.
- If \a enable is true, Qt::Key_Up and Qt::Key_Down are used to
- change focus.
+ If \a enable is true, Qt::Key_Up and Qt::Key_Down are used to change focus.
- This feature is only available in Qt for Embedded Linux.
+ This feature is available in Qt for Embedded Linux only.
\sa keypadNavigationEnabled()
*/
@@ -4754,7 +4714,8 @@ void QApplication::setKeypadNavigationEnabled(bool enable)
Returns true if Qt is set to use keypad navigation; otherwise returns
false. The default is false.
- This feature is only available in Qt for Embedded Linux.
+ This feature is available in Qt for Embedded Linux only.
+
\sa setKeypadNavigationEnabled()
*/
bool QApplication::keypadNavigationEnabled()
@@ -4777,12 +4738,12 @@ bool QApplication::keypadNavigationEnabled()
On Mac OS X, this works more at the application level and will cause the
application icon to bounce in the dock.
- On Windows this causes the window's taskbar entry to flash for a time. If \a
- msec is zero, the flashing will stop and the taskbar entry will turn a
+ On Windows this causes the window's taskbar entry to flash for a time. If
+ \a msec is zero, the flashing will stop and the taskbar entry will turn a
different color (currently orange).
- On X11, this will cause the window to be marked as "demands attention",
- the window must not be hidden (i.e. not have hide() called on it, but be
+ On X11, this will cause the window to be marked as "demands attention", the
+ window must not be hidden (i.e. not have hide() called on it, but be
visible in some sort of way) in order for this to work.
*/
@@ -4790,18 +4751,16 @@ bool QApplication::keypadNavigationEnabled()
\property QApplication::cursorFlashTime
\brief the text cursor's flash (blink) time in milliseconds
- The flash time is the time required to display, invert and
- restore the caret display. Usually the text cursor is displayed
- for half the cursor flash time, then hidden for the same amount
- of time, but this may vary.
+ The flash time is the time required to display, invert and restore the
+ caret display. Usually the text cursor is displayed for half the cursor
+ flash time, then hidden for the same amount of time, but this may vary.
- The default value on X11 is 1000 milliseconds. On Windows, the
- control panel value is used. Widgets should not cache this value
- since it may be changed at any time by the user changing the
- global desktop settings.
+ The default value on X11 is 1000 milliseconds. On Windows, the control
+ panel value is used. Widgets should not cache this value since it may be
+ changed at any time by the user changing the global desktop settings.
- Note that on Microsoft Windows, setting this property sets the
- cursor flash time for all applications.
+ \note On Microsoft Windows, setting this property sets the cursor flash
+ time for all applications.
*/
/*!
@@ -4809,8 +4768,8 @@ bool QApplication::keypadNavigationEnabled()
\brief the time limit in milliseconds that distinguishes a double click from two
consecutive mouse clicks
- The default value on X11 is 400 milliseconds. On Windows and Mac
- OS X, the operating system's value is used.
+ The default value on X11 is 400 milliseconds. On Windows and Mac OS X, the
+ operating system's value is used.
On Microsoft Windows and Symbian, calling this function sets the
double click interval for all applications.
@@ -4831,15 +4790,13 @@ bool QApplication::keypadNavigationEnabled()
\brief the number of lines to scroll a widget, when the
mouse wheel is rotated.
- If the value exceeds the widget's number of visible lines, the
- widget should interpret the scroll operation as a single \e{page
- up} or \e{page down}. If the widget is an \l{QAbstractItemView}
- {item view class}, then the result of scrolling one \e line
- depends on the setting of the widget's
- \l{QAbstractItemView::verticalScrollMode()} {scroll mode}. Scroll
- one \e line can mean \l{QAbstractItemView::ScrollPerItem} {scroll
- one item} or \l{QAbstractItemView::ScrollPerPixel} {scroll one
- pixel}.
+ If the value exceeds the widget's number of visible lines, the widget
+ should interpret the scroll operation as a single \e{page up} or
+ \e{page down}. If the widget is an \l{QAbstractItemView}{item view class},
+ then the result of scrolling one \e line depends on the setting of the
+ widget's \l{QAbstractItemView::verticalScrollMode()}{scroll mode}. Scroll
+ one \e line can mean \l{QAbstractItemView::ScrollPerItem}{scroll one item}
+ or \l{QAbstractItemView::ScrollPerPixel}{scroll one pixel}.
By default, this property has a value of 3.
*/
@@ -4847,11 +4804,11 @@ bool QApplication::keypadNavigationEnabled()
/*!
\fn void QApplication::setEffectEnabled(Qt::UIEffect effect, bool enable)
- Enables the UI effect \a effect if \a enable is true, otherwise
- the effect will not be used.
+ Enables the UI effect \a effect if \a enable is true, otherwise the effect
+ will not be used.
- Note: All effects are disabled on screens running at less than
- 16-bit color depth.
+ \note All effects are disabled on screens running at less than 16-bit color
+ depth.
\sa isEffectEnabled(), Qt::UIEffect, setDesktopSettingsAware()
*/
@@ -4861,11 +4818,11 @@ bool QApplication::keypadNavigationEnabled()
Returns true if \a effect is enabled; otherwise returns false.
- By default, Qt will try to use the desktop settings. Call
- setDesktopSettingsAware(false) to prevent this.
+ By default, Qt will try to use the desktop settings. To prevent this, call
+ setDesktopSettingsAware(false).
- Note: All effects are disabled on screens running at less than
- 16-bit color depth.
+ \note All effects are disabled on screens running at less than 16-bit color
+ depth.
\sa setEffectEnabled(), Qt::UIEffect
*/
@@ -4873,8 +4830,7 @@ bool QApplication::keypadNavigationEnabled()
/*!
\fn QWidget *QApplication::mainWidget()
- Returns the main application widget, or 0 if there is no main
- widget.
+ Returns the main application widget, or 0 if there is no main widget.
*/
/*!
@@ -4882,19 +4838,17 @@ bool QApplication::keypadNavigationEnabled()
Sets the application's main widget to \a mainWidget.
- In most respects the main widget is like any other widget, except
- that if it is closed, the application exits. Note that
- QApplication does \e not take ownership of the \a mainWidget, so
- if you create your main widget on the heap you must delete it
- yourself.
+ In most respects the main widget is like any other widget, except that if
+ it is closed, the application exits. QApplication does \e not take
+ ownership of the \a mainWidget, so if you create your main widget on the
+ heap you must delete it yourself.
- You need not have a main widget; connecting lastWindowClosed() to
- quit() is an alternative.
+ You need not have a main widget; connecting lastWindowClosed() to quit()
+ is an alternative.
- For X11, this function also resizes and moves the main widget
- according to the \e -geometry command-line option, so you should
- set the default geometry (using \l QWidget::setGeometry()) before
- calling setMainWidget().
+ For X11, this function also resizes and moves the main widget according
+ to the \e -geometry command-line option, so you should set the default
+ geometry (using \l QWidget::setGeometry()) before calling setMainWidget().
\sa mainWidget(), exec(), quit()
*/
@@ -4902,8 +4856,8 @@ bool QApplication::keypadNavigationEnabled()
/*!
\fn void QApplication::beep()
- Sounds the bell, using the default volume and sound. The function
- is \e not available in Qt for Embedded Linux.
+ Sounds the bell, using the default volume and sound. The function is \e not
+ available in Qt for Embedded Linux.
*/
/*!
@@ -4911,26 +4865,25 @@ bool QApplication::keypadNavigationEnabled()
Sets the application override cursor to \a cursor.
- Application override cursors are intended for showing the user
- that the application is in a special state, for example during an
- operation that might take some time.
+ Application override cursors are intended for showing the user that the
+ application is in a special state, for example during an operation that
+ might take some time.
- This cursor will be displayed in all the application's widgets
- until restoreOverrideCursor() or another setOverrideCursor() is
- called.
+ This cursor will be displayed in all the application's widgets until
+ restoreOverrideCursor() or another setOverrideCursor() is called.
- Application cursors are stored on an internal stack.
- setOverrideCursor() pushes the cursor onto the stack, and
- restoreOverrideCursor() pops the active cursor off the
- stack. changeOverrideCursor() changes the curently active
- application override cursor. Every setOverrideCursor() must
+ Application cursors are stored on an internal stack. setOverrideCursor()
+ pushes the cursor onto the stack, and restoreOverrideCursor() pops the
+ active cursor off the stack. changeOverrideCursor() changes the curently
+ active application override cursor. Every setOverrideCursor() must
eventually be followed by a corresponding restoreOverrideCursor(),
otherwise the stack will never be emptied.
Example:
\snippet doc/src/snippets/code/src_gui_kernel_qapplication_x11.cpp 0
- \sa overrideCursor() restoreOverrideCursor() changeOverrideCursor() QWidget::setCursor()
+ \sa overrideCursor(), restoreOverrideCursor(), changeOverrideCursor(),
+ QWidget::setCursor()
*/
/*!
@@ -4939,9 +4892,8 @@ bool QApplication::keypadNavigationEnabled()
Undoes the last setOverrideCursor().
If setOverrideCursor() has been called twice, calling
- restoreOverrideCursor() will activate the first cursor set.
- Calling this function a second time restores the original widgets'
- cursors.
+ restoreOverrideCursor() will activate the first cursor set. Calling this
+ function a second time restores the original widgets' cursors.
\sa setOverrideCursor(), overrideCursor()
*/
@@ -4951,9 +4903,9 @@ bool QApplication::keypadNavigationEnabled()
\relates QApplication
A global pointer referring to the unique application object. It is
- equivalent to the pointer returned by the
- QCoreApplication::instance() function except that, in GUI applications,
- it is a pointer to a QApplication instance.
+ equivalent to the pointer returned by the QCoreApplication::instance()
+ function except that, in GUI applications, it is a pointer to a
+ QApplication instance.
Only one application object can be created.
@@ -4965,8 +4917,8 @@ bool QApplication::keypadNavigationEnabled()
// ************************************************************************
/*!
- This function replaces the QInputContext instance used by the
- application with \a inputContext.
+ This function replaces the QInputContext instance used by the application
+ with \a inputContext.
\sa inputContext()
*/
diff --git a/src/gui/kernel/qapplication_x11.cpp b/src/gui/kernel/qapplication_x11.cpp
index 1df442f39c..f1fb0016a0 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
@@ -3351,15 +3366,24 @@ int QApplication::x11ProcessEvent(XEvent* event)
// update the size for desktop widget
int scr = X11->ptrXRRRootToScreen(X11->display, event->xany.window);
- QWidget *w = desktop()->screen(scr);
+ QDesktopWidget *desktop = QApplication::desktop();
+ QWidget *w = desktop->screen(scr);
QSize oldSize(w->size());
w->data->crect.setWidth(DisplayWidth(X11->display, scr));
w->data->crect.setHeight(DisplayHeight(X11->display, scr));
- if (w->size() != oldSize) {
- QResizeEvent e(w->size(), oldSize);
- QApplication::sendEvent(w, &e);
- emit desktop()->resized(scr);
- }
+ QVarLengthArray<QRect> oldSizes(desktop->numScreens());
+ for (int i = 0; i < desktop->numScreens(); ++i)
+ oldSizes[i] = desktop->screenGeometry(i);
+ QResizeEvent e(w->size(), oldSize);
+ QApplication::sendEvent(w, &e);
+ for (int i = 0; i < qMin(oldSizes.count(), desktop->numScreens()); ++i) {
+ if (oldSizes[i] != desktop->screenGeometry(i))
+ emit desktop->resized(i);
+ }
+ for (int i = oldSizes.count(); i < desktop->numScreens(); ++i)
+ emit desktop->resized(i); // added
+ for (int i = desktop->numScreens(); i < oldSizes.count(); ++i)
+ emit desktop->resized(i); // removed
}
#endif // QT_NO_XRANDR
diff --git a/src/gui/kernel/qcocoaapplication_mac.mm b/src/gui/kernel/qcocoaapplication_mac.mm
index f95f004f33..a3cc2c16ae 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 650ebbd663..6571068029 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.
+**
+****************************************************************************/
/****************************************************************************
**
@@ -107,6 +107,8 @@ static void cleanupCocoaApplicationDelegate()
- (id)init
{
self = [super init];
+ if (self)
+ inLaunch = true;
return self;
}
@@ -198,12 +200,26 @@ static void cleanupCocoaApplicationDelegate()
return reply;
}
+- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
+{
+ Q_UNUSED(aNotification);
+ inLaunch = false;
+}
+
- (void)application:(NSApplication *)sender openFiles:(NSArray *)filenames
{
- unsigned int ix;
- for( ix = 0; ix < [filenames count]; ix++) {
- NSString *fileName = [filenames objectAtIndex:ix];
- qApp->postEvent(qApp, new QFileOpenEvent(QCFString::toQString((CFStringRef)fileName)));
+ for (NSString *fileName in filenames) {
+ QString qtFileName = qt_mac_NSStringToQString(fileName);
+ if (inLaunch) {
+ // We need to be careful because Cocoa will be nice enough to take
+ // command line arguments and send them to us as events. Given the history
+ // of Qt Applications, this will result in behavior people don't want, as
+ // they might be doing the opening themselves with the command line parsing.
+ if (qApp->arguments().contains(qtFileName))
+ continue;
+ }
+ QFileOpenEvent foe(qtFileName);
+ qt_sendSpontaneousEvent(qAppInstance(), &foe);
}
if (reflectionDelegate &&
diff --git a/src/gui/kernel/qcocoaapplicationdelegate_mac_p.h b/src/gui/kernel/qcocoaapplicationdelegate_mac_p.h
index c5336f1797..fca2a150b8 100644
--- a/src/gui/kernel/qcocoaapplicationdelegate_mac_p.h
+++ b/src/gui/kernel/qcocoaapplicationdelegate_mac_p.h
@@ -107,6 +107,7 @@ QT_FORWARD_DECLARE_CLASS(QApplicationPrivate);
NSMenu *dockMenu;
QT_MANGLE_NAMESPACE(QCocoaMenuLoader) *qtMenuLoader;
id <NSApplicationDelegate> reflectionDelegate;
+ bool inLaunch;
}
+ (QT_MANGLE_NAMESPACE(QCocoaApplicationDelegate)*)sharedDelegate;
- (void)setDockMenu:(NSMenu *)newMenu;
diff --git a/src/gui/kernel/qcocoamenuloader_mac.mm b/src/gui/kernel/qcocoamenuloader_mac.mm
index 7ecb765b3c..e836286e91 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 6aeee34400..c69826fcb7 100644
--- a/src/gui/kernel/qcocoapanel_mac.mm
+++ b/src/gui/kernel/qcocoapanel_mac.mm
@@ -43,10 +43,16 @@
#ifdef QT_MAC_USE_COCOA
#import <private/qt_cocoa_helpers_mac_p.h>
#import <private/qcocoawindow_mac_p.h>
+#import <private/qcocoawindowdelegate_mac_p.h>
+#import <private/qcocoaview_mac_p.h>
#import <private/qcocoawindowcustomthemeframe_mac_p.h>
#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)
@@ -60,18 +66,115 @@ QT_USE_NAMESPACE
return !(isPopup || isToolTip);
}
+/***********************************************************************
+ BEGIN Copy and Paste between QCocoaWindow and QCocoaPanel
+ This is a bit unfortunate, but thanks to the dynamic dispatch we
+ have to duplicate this code or resort to really silly forwarding methods
+**************************************************************************/
+
+/*
+ The methods keyDown, keyUp, and flagsChanged... These really shouldn't ever
+ get hit. We automatically say we can be first responder if we are a window.
+ So, the handling should get handled by the view. This is here more as a
+ last resort (i.e., this is code that can potentially be removed).
+ */
+
+- (void)keyDown:(NSEvent *)theEvent
+{
+ bool keyOK = qt_dispatchKeyEvent(theEvent, [self QT_MANGLE_NAMESPACE(qt_qwidget)]);
+ if (!keyOK)
+ [super keyDown:theEvent];
+}
+
+- (void)keyUp:(NSEvent *)theEvent
+{
+ bool keyOK = qt_dispatchKeyEvent(theEvent, [self QT_MANGLE_NAMESPACE(qt_qwidget)]);
+ if (!keyOK)
+ [super keyUp:theEvent];
+}
+
+- (void)flagsChanged:(NSEvent *)theEvent
+{
+ qt_dispatchModifiersChanged(theEvent, [self QT_MANGLE_NAMESPACE(qt_qwidget)]);
+ [super flagsChanged:theEvent];
+}
+
+
+- (void)tabletProximity:(NSEvent *)tabletEvent
+{
+ qt_dispatchTabletProximityEvent(tabletEvent);
+}
+
- (void)sendEvent:(NSEvent *)event
{
[self retain];
- [super sendEvent:event];
+
+ QWidget *widget = [[QT_MANGLE_NAMESPACE(QCocoaWindowDelegate) sharedDelegate] qt_qwidgetForWindow:self];
+ 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.
+ QWidget *popup = qAppInstance()->activePopupWidget();
+ if (popup && popup != widget) {
+ switch([event type])
+ {
+ case NSLeftMouseDown:
+ qt_mac_handleMouseEvent(view, event, QEvent::MouseButtonPress, mouseButton);
+ // Don't call super here. This prevents us from getting the mouseUp event,
+ // which we need to send even if the mouseDown event was not accepted.
+ // (this is standard Qt behavior.)
+ break;
+ case NSRightMouseDown:
+ case NSOtherMouseDown:
+ if (!qt_mac_handleMouseEvent(view, event, QEvent::MouseButtonPress, mouseButton))
+ [super sendEvent:event];
+ break;
+ case NSLeftMouseUp:
+ case NSRightMouseUp:
+ case NSOtherMouseUp:
+ if (!qt_mac_handleMouseEvent(view, event, QEvent::MouseButtonRelease, mouseButton))
+ [super sendEvent:event];
+ break;
+ case NSMouseMoved:
+ qt_mac_handleMouseEvent(view, event, QEvent::MouseMove, Qt::NoButton);
+ break;
+ case NSLeftMouseDragged:
+ case NSRightMouseDragged:
+ case NSOtherMouseDragged:
+ [QT_MANGLE_NAMESPACE(QCocoaView) currentMouseEvent]->view = view;
+ [QT_MANGLE_NAMESPACE(QCocoaView) currentMouseEvent]->theEvent = event;
+ if (!qt_mac_handleMouseEvent(view, event, QEvent::MouseMove, mouseButton))
+ [super sendEvent:event];
+ break;
+ default:
+ [super sendEvent:event];
+ break;
+ }
+ } else {
+ [super sendEvent:event];
+ }
qt_mac_dispatchNCMouseMessage(self, event, [self QT_MANGLE_NAMESPACE(qt_qwidget)], leftButtonIsRightButton);
+
+
[self release];
}
+- (BOOL)makeFirstResponder:(NSResponder *)responder
+{
+ // 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];
+}
+
+/***********************************************************************
+ END Copy and Paste between QCocoaWindow and QCocoaPanel
+***********************************************************************/
+ (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 19367d1fc8..fae4821882 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;
@@ -236,6 +237,34 @@ extern "C" {
}
}
+- (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 {
+ 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];
+ }
+ }
+}
+
- (void)removeDropData
{
if (dropData) {
@@ -263,9 +292,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 +311,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 +337,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 +386,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 +403,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
@@ -386,10 +435,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 +445,7 @@ extern "C" {
{
[self setNeedsDisplayInRect:rects[count]];
}
- }
- else
- {
+ } else {
[self setNeedsDisplay:YES];
}
}
@@ -534,7 +580,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 +635,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 +645,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 +664,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 +771,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 +780,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,7 +802,7 @@ extern "C" {
wheelOK = qwe2.isAccepted();
}
}
-
+
if (deltaY) {
QWheelEvent qwe(qlocal, qglobal, deltaY, buttons, keyMods, Qt::Vertical);
qt_sendSpontaneousEvent(qwidget, &qwe);
@@ -769,7 +815,7 @@ extern "C" {
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 +904,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 +964,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 +1222,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 +1240,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 +1286,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 +1298,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/qcocoawindow_mac.mm b/src/gui/kernel/qcocoawindow_mac.mm
index 6b304440a7..89f481fb06 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))
@@ -86,6 +87,12 @@ extern Qt::MouseButton cocoaButton2QtButton(NSInteger buttonNum); // qcocoaview.
return YES;
}
+/***********************************************************************
+ BEGIN Copy and Paste between QCocoaWindow and QCocoaPanel
+ This is a bit unfortunate, but thanks to the dynamic dispatch we
+ have to duplicate this code or resort to really silly forwarding methods
+**************************************************************************/
+
/*
The methods keyDown, keyUp, and flagsChanged... These really shouldn't ever
get hit. We automatically say we can be first responder if we are a window.
@@ -124,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.
@@ -173,6 +180,20 @@ extern Qt::MouseButton cocoaButton2QtButton(NSInteger buttonNum); // qcocoaview.
[self release];
}
+
+- (BOOL)makeFirstResponder:(NSResponder *)responder
+{
+ // 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];
+}
+
+/***********************************************************************
+ END Copy and Paste between QCocoaWindow and QCocoaPanel
+***********************************************************************/
+
+ (Class)frameViewClassForStyleMask:(NSUInteger)styleMask
{
if (styleMask & QtMacCustomizeWindow)
diff --git a/src/gui/kernel/qcocoawindowdelegate_mac.mm b/src/gui/kernel/qcocoawindowdelegate_mac.mm
index 848017915f..03b2fce1cb 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
diff --git a/src/gui/kernel/qcursor.h b/src/gui/kernel/qcursor.h
index 15b4597193..ad1860db7f 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 d632eb7949..ae98f2e3a8 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 3f1df5e5a2..8c7e47da81 100644
--- a/src/gui/kernel/qevent.cpp
+++ b/src/gui/kernel/qevent.cpp
@@ -1656,7 +1656,7 @@ Qt::ButtonState QContextMenuEvent::state() const
The variant contains a QLocale object specifying the language of a
certain part of the preedit string. There should be at most one
language set for every part of the preedit string. If several are
- specified for any character in the string the behaviour is undefined.
+ specified for any character in the string the behavior is undefined.
\value Ruby
The ruby text for a part of the preedit string. There should be at
diff --git a/src/gui/kernel/qmacdefines_mac.h b/src/gui/kernel/qmacdefines_mac.h
index 97ec544493..035b8c5190 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/qt_cocoa_helpers_mac.mm b/src/gui/kernel/qt_cocoa_helpers_mac.mm
index 9c381b4362..f000292949 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;
diff --git a/src/gui/kernel/qt_cocoa_helpers_mac_p.h b/src/gui/kernel/qt_cocoa_helpers_mac_p.h
index ef55aa44c4..63a301cea2 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 b462b13480..44e10a891d 100644
--- a/src/gui/kernel/qt_mac.cpp
+++ b/src/gui/kernel/qt_mac.cpp
@@ -93,6 +93,8 @@ static QColor qcolorFromCGColor(CGColorRef cgcolor)
pc.setRgbF(components[0], components[1], components[2], components[3]);
} else if (model == kCGColorSpaceModelCMYK) {
pc.setCmykF(components[0], components[1], components[2], components[3]);
+ } else if (model == kCGColorSpaceModelMonochrome) {
+ pc.setRgbF(components[0], components[0], components[0], components[1]);
} else {
// Colorspace we can't deal with.
qWarning("Qt: qcolorFromCGColor: cannot convert from colorspace model: %d", model);
@@ -129,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 3aec23fcf3..ca995dca6e 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 731ac6fbd4..7eaebbbec7 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"
@@ -168,6 +169,7 @@ static inline bool bypassGraphicsProxyWidget(QWidget *p)
#endif
extern bool qt_sendSpontaneousEvent(QObject*, QEvent*); // qapplication.cpp
+extern QDesktopWidget *qt_desktopWidget; // qapplication.cpp
QWidgetPrivate::QWidgetPrivate(int version) :
QObjectPrivate(version), extra(0), focus_child(0)
@@ -238,28 +240,6 @@ QWindowSurface *QWidgetPrivate::createDefaultWindowSurface()
/*!
\internal
- This is an internal function, you should never call this.
-
- This function is called to focus associated input context. The
- code intends to eliminate duplicate focus for the context even if
- the context is shared between widgets
-
- \sa QInputContext::setFocus()
- */
-void QWidgetPrivate::focusInputContext()
-{
-#ifndef QT_NO_IM
- Q_Q(QWidget);
- QInputContext *qic = q->inputContext();
- if (qic) {
- if(qic->focusWidget() != q)
- qic->setFocusWidget(q);
- }
-#endif // QT_NO_IM
-}
-
-/*!
- \internal
*/
void QWidgetPrivate::scrollChildren(int dx, int dy)
{
@@ -333,20 +313,24 @@ void QWidget::setInputContext(QInputContext *context)
/*!
+ \obsolete
+
This function can be called on the widget that currently has focus
to reset the input method operating on it.
- \sa QInputContext, QInputContext::reset()
+ This function is providing for convenience, instead you should use
+ \l{QInputContext::}{reset()} on the input context that was
+ returned by inputContext().
+
+ \sa QInputContext, inputContext(), QInputContext::reset()
*/
void QWidget::resetInputContext()
{
if (!hasFocus())
return;
#ifndef QT_NO_IM
- if (!d_func()->ic)
- return;
QInputContext *qic = this->inputContext();
- if( qic )
+ if(qic)
qic->reset();
#endif // QT_NO_IM
}
@@ -1405,7 +1389,13 @@ int QWidgetPrivate::maxInstances = 0; // Maximum number of widget instances
void QWidgetPrivate::setWinId(WId id) // set widget identifier
{
Q_Q(QWidget);
- if (mapper && data.winid) {
+ // the user might create a widget with Qt::Desktop window
+ // attribute (or create another QDesktopWidget instance), which
+ // will have the same windowid (the root window id) as the
+ // qt_desktopWidget. We should not add the second desktop widget
+ // to the mapper.
+ bool userDesktopWidget = qt_desktopWidget != 0 && qt_desktopWidget != q && q->windowType() == Qt::Desktop;
+ if (mapper && data.winid && !userDesktopWidget) {
mapper->remove(data.winid);
uncreatedWidgets->insert(q);
}
@@ -1414,7 +1404,7 @@ void QWidgetPrivate::setWinId(WId id) // set widget identifier
#if defined(Q_WS_X11)
hd = id; // X11: hd == ident
#endif
- if (mapper && id) {
+ if (mapper && id && !userDesktopWidget) {
mapper->insert(data.winid, q);
uncreatedWidgets->remove(q);
}
@@ -2257,9 +2247,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}
*/
@@ -8990,17 +8981,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
@@ -9441,11 +9451,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);
}
@@ -9468,11 +9480,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);
}
@@ -9799,12 +9813,21 @@ void QWidget::setAttribute(Qt::WidgetAttribute attribute, bool on)
}
break;
#endif
- case Qt::WA_NativeWindow:
+ case Qt::WA_NativeWindow: {
+ QInputContext *ic = 0;
+ if (on && !internalWinId() && testAttribute(Qt::WA_InputMethodEnabled) && hasFocus()) {
+ ic = d->inputContext();
+ ic->reset();
+ ic->setFocusWidget(0);
+ }
if (!qApp->testAttribute(Qt::AA_DontCreateNativeWidgetSiblings) && parentWidget())
parentWidget()->d_func()->enforceNativeChildren();
if (on && !internalWinId() && testAttribute(Qt::WA_WState_Created))
d->createWinId();
+ if (ic)
+ ic->setFocusWidget(this);
break;
+ }
case Qt::WA_PaintOnScreen:
d->updateIsOpaque();
#if defined(Q_WS_WIN) || defined(Q_WS_X11)
diff --git a/src/gui/kernel/qwidget_mac.mm b/src/gui/kernel/qwidget_mac.mm
index f599b7cf25..a00f969757 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);
@@ -2174,7 +2183,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);
@@ -2514,6 +2526,8 @@ void QWidgetPrivate::create_sys(WId window, bool initializeWindow, bool destroyO
}
updateIsOpaque();
+ if (q->hasFocus())
+ setFocus_sys();
if (!topLevel && initializeWindow)
setWSGeometry();
@@ -2844,12 +2858,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)
@@ -3274,6 +3302,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);
@@ -3959,6 +4001,33 @@ void QWidgetPrivate::setWSGeometry(bool dontShow, const QRect &oldRect)
}
}
+void QWidgetPrivate::applyMaxAndMinSizeConstraints(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::setGeometry_sys(int x, int y, int w, int h, bool isMove)
{
Q_Q(QWidget);
@@ -3969,7 +4038,9 @@ 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)) {
+ applyMaxAndMinSizeConstraints(w, h);
topData()->isSetGeometry = 1;
topData()->isMove = isMove;
#ifndef QT_MAC_USE_COCOA
@@ -3995,10 +4066,26 @@ 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) {
+
+ QPoint oldp = q->pos();
+ QSize olds = q->size();
+ const bool isResize = (olds != QSize(w, h));
+
+ if (!realWindow && !isResize && QPoint(x, y) == oldp)
+ return;
+
+ 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()) {
+ applyMaxAndMinSizeConstraints(w, h);
qt_mac_update_sizer(q);
- if(q->windowFlags() & Qt::WindowMaximizeButtonHint) {
+
+ 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
@@ -4009,43 +4096,8 @@ void QWidgetPrivate::setGeometry_sys_helper(int x, int y, int w, int h, bool isM
}
#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)
- return;
- if(isResize && q->isMaximized())
- 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
+ // Update max and min constraints:
const float max_f(20000);
#ifndef QT_MAC_USE_COCOA
#define SF(x) ((x > max_f) ? max_f : x)
@@ -4581,12 +4633,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.
@@ -4599,7 +4654,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 362571fd62..ec64b6eeb3 100644
--- a/src/gui/kernel/qwidget_p.h
+++ b/src/gui/kernel/qwidget_p.h
@@ -267,6 +267,7 @@ public:
void macUpdateIsOpaque();
void setEnabled_helper_sys(bool enable);
bool isRealWindow() const;
+ void applyMaxAndMinSizeConstraints(int &w, int &h);
#endif
void raise_sys();
@@ -364,8 +365,6 @@ public:
void setWindowIcon_sys(bool forceReset = false);
void setWindowOpacity_sys(qreal opacity);
- void focusInputContext();
-
void adjustQuitOnCloseAttribute();
#if defined(Q_WS_X11)
diff --git a/src/gui/kernel/qwidget_x11.cpp b/src/gui/kernel/qwidget_x11.cpp
index a12b50c2e8..76734d4949 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();
@@ -1516,7 +1516,6 @@ void QWidget::activateWindow()
X11->userTime = X11->time;
qt_net_update_user_time(tlw, X11->userTime);
XSetInputFocus(X11->display, tlw->internalWinId(), XRevertToParent, X11->time);
- d->focusInputContext();
}
}
@@ -1751,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);
@@ -1761,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;
}
diff --git a/src/gui/kernel/qx11embed_x11.cpp b/src/gui/kernel/qx11embed_x11.cpp
index e49c4d65b3..6329135335 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/qblendfunctions.cpp b/src/gui/painting/qblendfunctions.cpp
index d2f4ab797f..dd7b0161be 100644
--- a/src/gui/painting/qblendfunctions.cpp
+++ b/src/gui/painting/qblendfunctions.cpp
@@ -44,19 +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
@@ -286,7 +273,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 +334,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 +345,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,111 +416,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 += dstExtraStride;
- src += srcExtraStride;
+ dst = (quint16 *) (((uchar *) dst) + dbpl);
+ src = (quint32 *) (((uchar *) src) + sbpl);
}
-
}
diff --git a/src/gui/painting/qdrawhelper.cpp b/src/gui/painting/qdrawhelper.cpp
index efdc7785e2..c11837a1d7 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++);
}
@@ -4763,7 +4763,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 +4777,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 +4793,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 +4809,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 +4825,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 +4841,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 +4857,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 +4873,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 +4889,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 +5084,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 +5097,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 +5112,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 +5127,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 +5142,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 +5157,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 +5172,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 +5187,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 +5202,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 +5599,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 +5612,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 +5627,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 +5642,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 +5658,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 +5673,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 +5688,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 +5703,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 +5718,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 +6195,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 +6209,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 +6225,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 +6241,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 +6257,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 +6273,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 +6289,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 +6305,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 +6321,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 +6619,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 +6633,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 +6649,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 +6665,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 +6681,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 +6697,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 +6713,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 +6729,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 +6745,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/qmemrotate.cpp b/src/gui/painting/qmemrotate.cpp
index 7ad0e42018..40581439ee 100644
--- a/src/gui/painting/qmemrotate.cpp
+++ b/src/gui/painting/qmemrotate.cpp
@@ -537,6 +537,7 @@ 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)
#ifdef QT_QWS_DEPTH_GENERIC
QT_IMPL_MEMROTATE(quint32, qrgb_generic16)
diff --git a/src/gui/painting/qmemrotate_p.h b/src/gui/painting/qmemrotate_p.h
index bd6006bf30..c1eb93e147 100644
--- a/src/gui/painting/qmemrotate_p.h
+++ b/src/gui/painting/qmemrotate_p.h
@@ -90,6 +90,7 @@ 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_DEPTH_GENERIC
QT_DECL_MEMROTATE(quint32, qrgb_generic16);
diff --git a/src/gui/painting/qpaintengine_alpha.cpp b/src/gui/painting/qpaintengine_alpha.cpp
index e38f6a4168..74cbebe4ce 100644
--- a/src/gui/painting/qpaintengine_alpha.cpp
+++ b/src/gui/painting/qpaintengine_alpha.cpp
@@ -80,6 +80,7 @@ bool QAlphaPaintEngine::begin(QPaintDevice *pdev)
d->m_advancedPen = false;
d->m_advancedBrush = false;
d->m_complexTransform = false;
+ d->m_emulateProjectiveTransforms = false;
// clear alpha region
d->m_alphargn = QRegion();
@@ -116,6 +117,9 @@ void QAlphaPaintEngine::updateState(const QPaintEngineState &state)
if (flags & QPaintEngine::DirtyTransform) {
d->m_transform = state.transform();
d->m_complexTransform = (d->m_transform.type() > QTransform::TxScale);
+ d->m_emulateProjectiveTransforms = !(d->m_savedcaps & QPaintEngine::PerspectiveTransform)
+ && !(d->m_savedcaps & QPaintEngine::AlphaBlend)
+ && (d->m_transform.type() >= QTransform::TxProject);
}
if (flags & QPaintEngine::DirtyPen) {
d->m_pen = state.pen();
@@ -163,7 +167,9 @@ void QAlphaPaintEngine::drawPath(const QPainterPath &path)
if (d->m_pass == 0) {
d->m_continueCall = false;
- if (d->m_hasalpha || d->m_advancedPen || d->m_advancedBrush) {
+ if (d->m_hasalpha || d->m_advancedPen || d->m_advancedBrush
+ || d->m_emulateProjectiveTransforms)
+ {
d->addAlphaRect(tr);
}
if (d->m_picengine)
@@ -187,7 +193,9 @@ void QAlphaPaintEngine::drawPolygon(const QPointF *points, int pointCount, Polyg
if (d->m_pass == 0) {
d->m_continueCall = false;
- if (d->m_hasalpha || d->m_advancedPen || d->m_advancedBrush) {
+ if (d->m_hasalpha || d->m_advancedPen || d->m_advancedBrush
+ || d->m_emulateProjectiveTransforms)
+ {
d->addAlphaRect(tr);
}
diff --git a/src/gui/painting/qpaintengine_alpha_p.h b/src/gui/painting/qpaintengine_alpha_p.h
index f510c732b8..f7d7a3451a 100644
--- a/src/gui/painting/qpaintengine_alpha_p.h
+++ b/src/gui/painting/qpaintengine_alpha_p.h
@@ -113,6 +113,7 @@ public:
bool m_advancedPen;
bool m_advancedBrush;
bool m_complexTransform;
+ bool m_emulateProjectiveTransforms;
bool m_continueCall;
QTransform m_transform;
diff --git a/src/gui/painting/qpaintengine_raster.cpp b/src/gui/painting/qpaintengine_raster.cpp
index c3addd86dd..19b2574030 100644
--- a/src/gui/painting/qpaintengine_raster.cpp
+++ b/src/gui/painting/qpaintengine_raster.cpp
@@ -1142,6 +1142,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
@@ -1243,6 +1270,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
}
@@ -1317,6 +1348,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
}
/*!
@@ -1531,7 +1567,7 @@ void QRasterPaintEngine::drawRects(const QRectF *rects, int rectCount)
d->initializeRasterizer(&s->brushData);
for (int i = 0; i < rectCount; ++i) {
const QRectF &rect = rects[i].normalized();
- if (rects[i].isEmpty())
+ if (rect.isEmpty())
continue;
const QPointF a = s->matrix.map((rect.topLeft() + rect.bottomLeft()) * 0.5f);
const QPointF b = s->matrix.map((rect.topRight() + rect.bottomRight()) * 0.5f);
@@ -2357,11 +2393,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
*/
@@ -2370,16 +2401,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);
+ }
}
}
@@ -2392,22 +2440,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);
+ }
}
}
@@ -2616,10 +2682,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;
@@ -3652,14 +3723,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;
@@ -3667,8 +3737,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());
@@ -4343,6 +4413,9 @@ void QClipData::fixup()
*/
void QClipData::setClipRect(const QRect &rect)
{
+ if (rect == clipRect)
+ return;
+
// qDebug() << "setClipRect" << clipSpanHeight << count << allocated << rect;
hasRectClip = true;
clipRect = rect;
@@ -4352,6 +4425,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;
}
@@ -4375,6 +4453,12 @@ void QClipData::setClipRegion(const QRegion &region)
ymin = rect.y();
ymax = rect.y() + rect.height();
}
+
+ if (m_spans) {
+ delete m_spans;
+ m_spans = 0;
+ }
+
}
/*!
diff --git a/src/gui/painting/qpaintengine_raster_p.h b/src/gui/painting/qpaintengine_raster_p.h
index 0f8060ae7f..26a2b3ffc0 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 e9f1bb362a..39ce59f397 100644
--- a/src/gui/painting/qpaintengine_x11.cpp
+++ b/src/gui/painting/qpaintengine_x11.cpp
@@ -62,6 +62,7 @@
#include <private/qpaintengine_x11_p.h>
#include <private/qfontengine_x11_p.h>
#include <private/qwidget_p.h>
+#include <private/qpainterpath_p.h>
#include "qpen.h"
#include "qcolor.h"
@@ -1479,14 +1480,10 @@ void QX11PaintEngine::drawEllipse(const QRect &rect)
return;
}
d->setupAdaptedOrigin(rect.topLeft());
- if (d->has_brush) { // draw filled ellipse
- if (!d->has_pen) {
- XFillArc(d->dpy, d->hd, d->gc_brush, x, y, w-1, h-1, 0, 360*64);
+ if (d->has_brush) { // draw filled ellipse
+ XFillArc(d->dpy, d->hd, d->gc_brush, x, y, w, h, 0, 360*64);
+ if (!d->has_pen) // make smoother outline
XDrawArc(d->dpy, d->hd, d->gc_brush, x, y, w-1, h-1, 0, 360*64);
- return;
- } else{
- XFillArc(d->dpy, d->hd, d->gc_brush, x, y, w, h, 0, 360*64);
- }
}
if (d->has_pen) // draw outline
XDrawArc(d->dpy, d->hd, d->gc, x, y, w, h, 0, 360*64);
@@ -1760,9 +1757,14 @@ void QX11PaintEngine::drawPath(const QPainterPath &path)
QPainterPath stroke;
qreal width = d->cpen.widthF();
QPolygonF poly;
+ 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())
return;
@@ -1770,6 +1772,7 @@ void QX11PaintEngine::drawPath(const QPainterPath &path)
d->fillPath(stroke, QX11PaintEnginePrivate::PenGC, false);
} else {
stroker.setWidth(width);
+ stroker.d_ptr->stroker.setClipRect(d->matrix.inverted().mapRect(deviceRect));
stroke = stroker.createStroke(path);
if (stroke.isEmpty())
return;
diff --git a/src/gui/painting/qpainter.cpp b/src/gui/painting/qpainter.cpp
index e2d9b32d36..65d87fa09b 100644
--- a/src/gui/painting/qpainter.cpp
+++ b/src/gui/painting/qpainter.cpp
@@ -1293,7 +1293,7 @@ void QPainterPrivate::updateState(QPainterState *newState)
destination.
Note that composition transformation operates pixelwise. For that
- reason, there is a difference between using the grahic primitive
+ reason, there is a difference between using the graphic primitive
itself and its bounding rectangle: The bounding rect contains
pixels with alpha == 0 (i.e the pixels surrounding the
primitive). These pixels will overwrite the other image's pixels,
@@ -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()
*/
@@ -2486,6 +2493,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
@@ -5155,7 +5167,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 +5185,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());
diff --git a/src/gui/painting/qpainterpath.cpp b/src/gui/painting/qpainterpath.cpp
index bb07f813a7..e1f5eea707 100644
--- a/src/gui/painting/qpainterpath.cpp
+++ b/src/gui/painting/qpainterpath.cpp
@@ -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();
@@ -2387,21 +2387,13 @@ void qt_path_stroke_cubic_to(qfixed c1x, qfixed c1y,
\sa QPen, QBrush
*/
-class QPainterPathStrokerPrivate
+QPainterPathStrokerPrivate::QPainterPathStrokerPrivate()
+ : dashOffset(0)
{
-public:
- QPainterPathStrokerPrivate()
- : dashOffset(0)
- {
- stroker.setMoveToHook(qt_path_stroke_move_to);
- stroker.setLineToHook(qt_path_stroke_line_to);
- stroker.setCubicToHook(qt_path_stroke_cubic_to);
- }
-
- QStroker stroker;
- QVector<qfixed> dashPattern;
- qreal dashOffset;
-};
+ stroker.setMoveToHook(qt_path_stroke_move_to);
+ stroker.setLineToHook(qt_path_stroke_line_to);
+ stroker.setCubicToHook(qt_path_stroke_cubic_to);
+}
/*!
Creates a new stroker.
@@ -2445,6 +2437,7 @@ QPainterPath QPainterPathStroker::createStroke(const QPainterPath &path) const
QDashStroker dashStroker(&d->stroker);
dashStroker.setDashPattern(d->dashPattern);
dashStroker.setDashOffset(d->dashOffset);
+ dashStroker.setClipRect(d->stroker.clipRect());
dashStroker.strokePath(path, &stroke, QTransform());
}
stroke.setFillRule(Qt::WindingFill);
diff --git a/src/gui/painting/qpainterpath.h b/src/gui/painting/qpainterpath.h
index 88fb19d2a9..6cd2af8200 100644
--- a/src/gui/painting/qpainterpath.h
+++ b/src/gui/painting/qpainterpath.h
@@ -277,6 +277,8 @@ public:
QPainterPath createStroke(const QPainterPath &path) const;
private:
+ friend class QX11PaintEngine;
+
QPainterPathStrokerPrivate *d_ptr;
};
diff --git a/src/gui/painting/qpainterpath_p.h b/src/gui/painting/qpainterpath_p.h
index 93f9704a79..29c48df0fb 100644
--- a/src/gui/painting/qpainterpath_p.h
+++ b/src/gui/painting/qpainterpath_p.h
@@ -61,9 +61,20 @@
#include <qdebug.h>
#include <private/qvectorpath_p.h>
+#include <private/qstroker_p.h>
QT_BEGIN_NAMESPACE
+class QPainterPathStrokerPrivate
+{
+public:
+ QPainterPathStrokerPrivate();
+
+ QStroker stroker;
+ QVector<qfixed> dashPattern;
+ qreal dashOffset;
+};
+
class QPolygonF;
class QVectorPathConverter;
diff --git a/src/gui/painting/qpdf.cpp b/src/gui/painting/qpdf.cpp
index b01020900c..55006f6261 100644
--- a/src/gui/painting/qpdf.cpp
+++ b/src/gui/painting/qpdf.cpp
@@ -1106,6 +1106,11 @@ void QPdfBaseEngine::drawTextItem(const QPointF &p, const QTextItem &textItem)
if (!d->hasPen || (d->clipEnabled && d->allClipped))
return;
+ if (d->stroker.matrix.type() >= QTransform::TxProject) {
+ QPaintEngine::drawTextItem(p, textItem);
+ return;
+ }
+
*d->currentPage << "q\n";
if(!d->simplePen)
*d->currentPage << QPdf::generateMatrix(d->stroker.matrix);
diff --git a/src/gui/painting/qprintengine_mac.mm b/src/gui/painting/qprintengine_mac.mm
index 7a77e47b91..b1216b7f01 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 5e18845eb6..bc917e7958 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 d48b5259a5..7601bebb08 100644
--- a/src/gui/painting/qprintengine_win.cpp
+++ b/src/gui/painting/qprintengine_win.cpp
@@ -369,7 +369,7 @@ void QWin32PrintEngine::drawTextItem(const QPointF &p, const QTextItem &textItem
QRgb brushColor = state->pen().brush().color().rgb();
bool fallBack = state->pen().brush().style() != Qt::SolidPattern
|| qAlpha(brushColor) != 0xff
- || QT_WA_INLINE(false, d->txop >= QTransform::TxScale)
+ || QT_WA_INLINE(d->txop >= QTransform::TxProject, d->txop >= QTransform::TxScale)
|| ti.fontEngine->type() != QFontEngine::Win;
@@ -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 413f4a12a3..4f3e71c478 100644
--- a/src/gui/painting/qprinter.cpp
+++ b/src/gui/painting/qprinter.cpp
@@ -284,6 +284,10 @@ void QPrinterPrivate::addToManualSetList(QPrintEngine::PrintEnginePropertyKey ke
to send PostScript or PDF output to the printer. As an alternative,
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
@@ -849,7 +853,7 @@ void QPrinter::setPrinterName(const QString &name)
Returns true if the printer currently selected is a valid printer
in the system, or a pure PDF/PostScript printer; otherwise returns false.
- To detect other failures check the output of QPainter::begin() or QPainter::nextPage().
+ To detect other failures check the output of QPainter::begin() or QPrinter::newPage().
\snippet doc/src/snippets/printing-qprinter/errors.cpp 0
diff --git a/src/gui/painting/qregion.cpp b/src/gui/painting/qregion.cpp
index f728f9de7f..c88af7c857 100644
--- a/src/gui/painting/qregion.cpp
+++ b/src/gui/painting/qregion.cpp
@@ -40,6 +40,7 @@
****************************************************************************/
#include "qregion.h"
+#include "qpainterpath.h"
#include "qpolygon.h"
#include "qbuffer.h"
#include "qdatastream.h"
@@ -49,7 +50,6 @@
#include <qdebug.h>
#if defined(Q_OS_UNIX) || defined(Q_OS_WINCE)
-#include "qpainterpath.h"
#include "qimage.h"
#include "qbitmap.h"
#include <stdlib.h>
@@ -65,9 +65,17 @@ QT_BEGIN_NAMESPACE
\ingroup shared
QRegion is used with QPainter::setClipRegion() to limit the paint
- area to what needs to be painted. There is also a
- QWidget::repaint() function that takes a QRegion parameter.
- QRegion is the best tool for reducing flicker.
+ area to what needs to be painted. There is also a QWidget::repaint()
+ function that takes a QRegion parameter. QRegion is the best tool for
+ minimizing the amount of screen area to be updated by a repaint.
+
+ This class is not suitable for constructing shapes for rendering, especially
+ as outlines. Use QPainterPath to create paths and shapes for use with
+ QPainter.
+
+ QRegion is an \l{implicitly shared} class.
+
+ \section1 Creating and Using Regions
A region can be created from a rectangle, an ellipse, a polygon or
a bitmap. Complex regions may be created by combining simple
@@ -84,8 +92,6 @@ QT_BEGIN_NAMESPACE
Example of using complex regions:
\snippet doc/src/snippets/code/src_gui_painting_qregion.cpp 0
- QRegion is an \l{implicitly shared} class.
-
\warning Due to window system limitations, the whole coordinate space for a
region is limited to the points between -32767 and 32767 on Windows
95/98/ME. You can circumvent this limitation by using a QPainterPath.
@@ -93,7 +99,7 @@ QT_BEGIN_NAMESPACE
\section1 Additional License Information
On Embedded Linux, Windows CE and X11 platforms, parts of this class rely on
- code obtained under the following license:
+ code obtained under the following licenses:
\legalese
Copyright (c) 1987 X Consortium
@@ -120,9 +126,7 @@ QT_BEGIN_NAMESPACE
in this Software without prior written authorization from the X Consortium.
\endlegalese
- \raw HTML
- <hr />
- \endraw
+ \br
\legalese
Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
diff --git a/src/gui/painting/qtransform.cpp b/src/gui/painting/qtransform.cpp
index da8c4281bd..af27fd5346 100644
--- a/src/gui/painting/qtransform.cpp
+++ b/src/gui/painting/qtransform.cpp
@@ -168,10 +168,10 @@ QT_BEGIN_NAMESPACE
\image qtransform-representation.png
- A QTransform object contains a 3 x 3 matrix. The \c dx and \c dy
- elements specify horizontal and vertical translation. The \c m11
- and \c m22 elements specify horizontal and vertical scaling. The
- \c m21 and \c m12 elements specify horizontal and vertical \e shearing.
+ A QTransform object contains a 3 x 3 matrix. The \c m31 (\c dx) and
+ \c m32 (\c dy) elements specify horizontal and vertical translation.
+ The \c m11 and \c m22 elements specify horizontal and vertical scaling.
+ The \c m21 and \c m12 elements specify horizontal and vertical \e shearing.
And finally, the \c m13 and \c m23 elements specify horizontal and vertical
projection, with \c m33 as an additional projection factor.
@@ -246,8 +246,10 @@ QTransform::QTransform()
}
/*!
- Constructs a matrix with the elements, \a h11, \a h12, \a h13,
- \a h21, \a h22, \a h23, \a h31, \a h32, \a h33.
+ \fn QTransform::QTransform(qreal m11, qreal m12, qreal m13, qreal m21, qreal m22, qreal m23, qreal m31, qreal m32, qreal m33)
+
+ Constructs a matrix with the elements, \a m11, \a m12, \a m13,
+ \a m21, \a m22, \a m23, \a m31, \a m32, \a m33.
\sa setMatrix()
*/
@@ -263,8 +265,9 @@ QTransform::QTransform(qreal h11, qreal h12, qreal h13,
}
/*!
- Constructs a matrix with the elements, \a h11, \a h12, \a h21, \a
- h22, \a dx and \a dy.
+ \fn QTransform::QTransform(qreal m11, qreal m12, qreal m21, qreal m22, qreal dx, qreal dy)
+
+ Constructs a matrix with the elements, \a m11, \a m12, \a m21, \a m22, \a dx and \a dy.
\sa setMatrix()
*/
@@ -396,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;
@@ -432,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;
}
@@ -444,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:
@@ -478,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;
}
@@ -541,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.)
@@ -712,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;
@@ -1219,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();
@@ -1228,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);
}
@@ -1246,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();
@@ -1255,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);
@@ -1689,13 +1715,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);
@@ -1756,13 +1781,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);
@@ -1856,7 +1880,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;
@@ -1864,7 +1888,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;
@@ -2058,10 +2082,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);
@@ -2073,7 +2098,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 de7ebcd01f..c76409b232 100644
--- a/src/gui/painting/qtransform.h
+++ b/src/gui/painting/qtransform.h
@@ -257,6 +257,8 @@ inline qreal QTransform::dy() const
inline QTransform &QTransform::operator*=(qreal num)
{
+ if (num == 1.)
+ return *this;
affine._m11 *= num;
affine._m12 *= num;
m_13 *= num;
@@ -271,11 +273,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 +296,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;
diff --git a/src/gui/painting/qwindowsurface.cpp b/src/gui/painting/qwindowsurface.cpp
index bcb038094f..d941a24667 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/styles/gtksymbols.cpp b/src/gui/styles/gtksymbols.cpp
index 3fbf233384..0842ec7df4 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 0cea5428dd..74c5dc3cb8 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/qcommonstyle.cpp b/src/gui/styles/qcommonstyle.cpp
index 3cae08ab8c..819965bbe6 100644
--- a/src/gui/styles/qcommonstyle.cpp
+++ b/src/gui/styles/qcommonstyle.cpp
@@ -1779,7 +1779,46 @@ void QCommonStyle::drawControl(ControlElement element, const QStyleOption *opt,
case CE_TabBarTab:
if (const QStyleOptionTab *tab = qstyleoption_cast<const QStyleOptionTab *>(opt)) {
drawControl(CE_TabBarTabShape, tab, p, widget);
- drawControl(CE_TabBarTabLabel, tab, p, widget);
+
+ QStyleOptionTabV3 tabV3(*tab);
+ QRect labelRect = tabV3.rect;
+ QSize &left= tabV3.leftButtonSize;
+ QSize &right = tabV3.rightButtonSize;
+ const int spacing = 6 + 2;
+
+ // left widget
+ if (!left.isEmpty()) {
+ if (tabV3.shape == QTabBar::RoundedEast || tabV3.shape == QTabBar::TriangularEast )
+ labelRect.setTop(labelRect.top() + spacing + left.height());
+ else if (tabV3.shape == QTabBar::RoundedWest|| tabV3.shape == QTabBar::TriangularWest)
+ labelRect.setBottom(labelRect.bottom() - spacing - left.height());
+ else
+ labelRect.setLeft(labelRect.left() + spacing + left.width());
+ }
+
+ // right widget
+ if (!right.isEmpty()) {
+ if (tabV3.shape == QTabBar::RoundedEast || tabV3.shape == QTabBar::TriangularEast )
+ labelRect.setBottom(labelRect.bottom() - spacing - right.height());
+ else if (tabV3.shape == QTabBar::RoundedWest|| tabV3.shape == QTabBar::TriangularWest)
+ labelRect.setTop(labelRect.top() + spacing + right.height());
+ else
+ labelRect.setRight(labelRect.right() - spacing - right.width());
+ }
+
+ tabV3.rect = visualRect(opt->direction, opt->rect, labelRect);
+ drawControl(CE_TabBarTabLabel, &tabV3, p, widget);
+ if (tabV3.state & State_HasFocus) {
+ const int OFFSET = 1 + pixelMetric(PM_DefaultFrameWidth);
+ int x1, x2;
+ x1 = tab->rect.left();
+ x2 = tab->rect.right() - 1;
+ QStyleOptionFocusRect fropt;
+ fropt.QStyleOption::operator=(*tab);
+ fropt.rect.setRect(x1 + 1 + OFFSET, tab->rect.y() + OFFSET,
+ x2 - x1 - 2*OFFSET, tab->rect.height() - 2*OFFSET);
+ drawPrimitive(PE_FrameFocusRect, &fropt, p, widget);
+ }
}
break;
case CE_TabBarTabShape:
@@ -1981,12 +2020,8 @@ void QCommonStyle::drawControl(ControlElement element, const QStyleOption *opt,
(tabV2.state & State_Enabled) ? QIcon::Normal
: QIcon::Disabled);
- int offset = 4;
+ int offset = 6;
int left = opt->rect.left();
- if (tabV2.leftButtonSize.isEmpty())
- offset += 2;
- else
- left += tabV2.leftButtonSize.width() + (6 + 2) + 2;
QRect iconRect = QRect(left + offset, tr.center().y() - tabIcon.height() / 2,
tabIconSize.width(), tabIconSize.height());
if (!verticalTabs)
@@ -1997,20 +2032,6 @@ void QCommonStyle::drawControl(ControlElement element, const QStyleOption *opt,
drawItemText(p, tr, alignment, tab->palette, tab->state & State_Enabled, tab->text, QPalette::WindowText);
if (verticalTabs)
p->restore();
-
- if (tabV2.state & State_HasFocus) {
- const int OFFSET = 1 + pixelMetric(PM_DefaultFrameWidth);
-
- int x1, x2;
- x1 = tabV2.rect.left();
- x2 = tabV2.rect.right() - 1;
-
- QStyleOptionFocusRect fropt;
- fropt.QStyleOption::operator=(*tab);
- fropt.rect.setRect(x1 + 1 + OFFSET, tabV2.rect.y() + OFFSET,
- x2 - x1 - 2*OFFSET, tabV2.rect.height() - 2*OFFSET);
- drawPrimitive(PE_FrameFocusRect, &fropt, p, widget);
- }
}
break;
#endif // QT_NO_TABBAR
@@ -2858,12 +2879,6 @@ QRect QCommonStyle::subElementRect(SubElement sr, const QStyleOption *opt,
tr.setRight(tr.right() - horizontalShift);
}
- // left widget
- if (!tabV2.leftButtonSize.isEmpty()) {
- tr.setLeft(tr.left() + 6 + 2 +
- (verticalTabs ? tabV2.leftButtonSize.height() : tabV2.leftButtonSize.width()));
- }
-
// icon
if (!tabV2.icon.isNull()) {
QSize iconSize = tabV2.iconSize;
@@ -2885,12 +2900,6 @@ QRect QCommonStyle::subElementRect(SubElement sr, const QStyleOption *opt,
tr.setLeft(tr.left() + tabIconSize.width() + offset + 2);
}
- // right widget
- if (!tabV2.rightButtonSize.isEmpty()) {
- tr.setRight(tr.right() - 6 - 2 -
- (verticalTabs ? tabV2.rightButtonSize.height() : tabV2.rightButtonSize.width()));
- }
-
if (!verticalTabs)
tr = visualRect(opt->direction, opt->rect, tr);
r = tr;
diff --git a/src/gui/styles/qgtkstyle.cpp b/src/gui/styles/qgtkstyle.cpp
index 103e97f8ea..ca71da2f1d 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);
}
/*!
@@ -399,6 +423,17 @@ int QGtkStyle::pixelMetric(PixelMetric metric,
return QCleanlooksStyle::pixelMetric(metric, option, widget);
switch (metric) {
+ case PM_DefaultFrameWidth:
+ if (qobject_cast<const QFrame*>(widget)) {
+ if (GtkStyle *style =
+ QGtk::gtk_rc_get_style_by_paths(QGtk::gtk_settings_get_default(),
+ "*.GtkScrolledWindow",
+ "*.GtkScrolledWindow",
+ Q_GTK_TYPE_WINDOW))
+ return qMax(style->xthickness, style->ythickness);
+ }
+ return 2;
+
case PM_MenuButtonIndicator:
return 20;
@@ -635,6 +670,66 @@ void QGtkStyle::drawPrimitive(PrimitiveElement element,
QGtkPainter gtkPainter(painter);
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
+ const int pmSize = 64;
+ const int border = pixelMetric(PM_DefaultFrameWidth, option, widget);
+ const QString pmKey = QString(QLS("windowframe %0")).arg(option->state);
+
+ QPixmap pixmap;
+ QPixmapCache::find(pmKey, pixmap);
+ QRect pmRect(QPoint(0,0), QSize(pmSize, pmSize));
+
+ // Only draw through style once
+ if (pixmap.isNull()) {
+ pixmap = QPixmap(pmSize, pmSize);
+ pixmap.fill(Qt::transparent);
+ QPainter pmPainter(&pixmap);
+ QGtkPainter gtkFramePainter(&pmPainter);
+ gtkFramePainter.setUsePixmapCache(false); // Don't cache twice
+
+ GtkShadowType shadow_type = GTK_SHADOW_NONE;
+ if (option->state & State_Sunken)
+ shadow_type = GTK_SHADOW_IN;
+ else if (option->state & State_Raised)
+ shadow_type = GTK_SHADOW_OUT;
+
+ GtkStyle *style = QGtk::gtk_rc_get_style_by_paths(QGtk::gtk_settings_get_default(),
+ "*.GtkScrolledWindow", "*.GtkScrolledWindow", Q_GTK_TYPE_WINDOW);
+ if (style)
+ gtkFramePainter.paintShadow(QGtk::gtkWidget(QLS("GtkFrame")), "viewport", pmRect,
+ option->state & State_Enabled ? GTK_STATE_NORMAL : GTK_STATE_INSENSITIVE,
+ shadow_type, style);
+ QPixmapCache::insert(pmKey, pixmap);
+ }
+
+ QRect rect = option->rect;
+ const int rw = rect.width() - border;
+ const int rh = rect.height() - border;
+ const int pw = pmRect.width() - border;
+ const int ph = pmRect.height() - border;
+
+ // Sidelines
+ painter->drawPixmap(rect.adjusted(border, 0, -border, -rh), pixmap, pmRect.adjusted(border, 0, -border,-ph));
+ painter->drawPixmap(rect.adjusted(border, rh, -border, 0), pixmap, pmRect.adjusted(border, ph,-border,0));
+ painter->drawPixmap(rect.adjusted(0, border, -rw, -border), pixmap, pmRect.adjusted(0, border, -pw, -border));
+ painter->drawPixmap(rect.adjusted(rw, border, 0, -border), pixmap, pmRect.adjusted(pw, border, 0, -border));
+
+ // Corners
+ painter->drawPixmap(rect.adjusted(0, 0, -rw, -rh), pixmap, pmRect.adjusted(0, 0, -pw,-ph));
+ painter->drawPixmap(rect.adjusted(rw, 0, 0, -rh), pixmap, pmRect.adjusted(pw, 0, 0,-ph));
+ painter->drawPixmap(rect.adjusted(0, rh, -rw, 0), pixmap, pmRect.adjusted(0, ph, -pw,0));
+ painter->drawPixmap(rect.adjusted(rw, rh, 0, 0), pixmap, pmRect.adjusted(pw, ph, 0,0));
+ }
+ break;
case PE_PanelTipLabel: {
GtkWidget *gtkWindow = QGtk::gtkWidget(QLS("GtkWindow")); // The Murrine Engine currently assumes a widget is passed
@@ -856,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,
@@ -882,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);
@@ -2412,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);
}
@@ -2528,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);
@@ -2653,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 a3f5cfe2de..398e11d2cc 100644
--- a/src/gui/styles/qmacstyle_mac.mm
+++ b/src/gui/styles/qmacstyle_mac.mm
@@ -2189,7 +2189,7 @@ void QMacStyle::polish(QWidget* w)
}
if (qobject_cast<QMenu*>(w) || qobject_cast<QComboBoxPrivateContainer *>(w)) {
- w->setWindowOpacity(0.94);
+ w->setWindowOpacity(QSysInfo::MacintoshVersion >= QSysInfo::MV_10_5 ? 0.985 : 0.94);
if (!w->testAttribute(Qt::WA_SetPalette)) {
QPixmap px(64, 64);
HIThemeMenuDrawInfo mtinfo;
@@ -3854,13 +3854,16 @@ void QMacStyle::drawControl(ControlElement ce, const QStyleOption *opt, QPainter
}
break;
case CE_TabBarTabShape:
- if (const QStyleOptionTabV3 *tabOpt = qstyleoption_cast<const QStyleOptionTabV3 *>(opt)) {
- if (tabOpt->documentMode) {
- p->save();
- QRect tabRect = tabOpt->rect;
- drawTabShape(p, tabOpt);
- p->restore();
- return;
+ if (const QStyleOptionTab *tabOpt = qstyleoption_cast<const QStyleOptionTab *>(opt)) {
+
+ if (const QStyleOptionTabV3 *tabOptV3 = qstyleoption_cast<const QStyleOptionTabV3 *>(opt)) {
+ if (tabOptV3->documentMode) {
+ p->save();
+ QRect tabRect = tabOptV3->rect;
+ drawTabShape(p, tabOptV3);
+ p->restore();
+ return;
+ }
}
#if (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_4)
diff --git a/src/gui/styles/qstylesheetstyle.cpp b/src/gui/styles/qstylesheetstyle.cpp
index 2558409501..49ac57afb0 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)
@@ -2916,6 +2904,10 @@ void QStyleSheetStyle::polish(QWidget *w)
if (ew->autoFillBackground()) {
ew->setAutoFillBackground(false);
autoFillDisabledWidgets->insert(w);
+ if (ew != w) { //eg. viewport of a scrollarea
+ //(in order to draw the background anyway in case we don't.)
+ ew->setAttribute(Qt::WA_StyledBackground, true);
+ }
}
if (!rule.hasBackground() || rule.background()->isTransparent() || rule.hasBox()
|| (!rule.hasNativeBorder() && !rule.border()->isOpaque()))
@@ -4345,8 +4337,16 @@ void QStyleSheetStyle::drawPrimitive(PrimitiveElement pe, const QStyleOption *op
return;
case PE_Widget:
- if (!rule.hasBackground())
+ if (!rule.hasBackground()) {
+ QWidget *container = containerWidget(w);
+ if (autoFillDisabledWidgets->contains(container)
+ && (container == w || !renderRule(container, opt).hasBackground())) {
+ //we do not have a background, but we disabled the autofillbackground anyway. so fill the background now.
+ // (this may happen if we have rules like :focus)
+ p->fillRect(opt->rect, opt->palette.brush(w->backgroundRole()));
+ }
break;
+ }
#ifndef QT_NO_SCROLLAREA
if (const QAbstractScrollArea *sa = qobject_cast<const QAbstractScrollArea *>(w)) {
@@ -4840,7 +4840,8 @@ int QStyleSheetStyle::pixelMetric(PixelMetric m, const QStyleOption *opt, const
if (subRule.hasContentsSize())
return subRule.size().height();
else if (subRule.hasBox() || subRule.hasBorder()) {
- return subRule.size(QSize(0, opt->fontMetrics.lineSpacing())).height();
+ QFontMetrics fm = opt ? opt->fontMetrics : w->fontMetrics();
+ return subRule.size(QSize(0, fm.lineSpacing())).height();
}
break;
}
diff --git a/src/gui/styles/qwindowsmobilestyle.cpp b/src/gui/styles/qwindowsmobilestyle.cpp
index c52c700367..1c03b9e7d1 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 4c3060d063..013ca1efb5 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 877bc50469..cef2b71053 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 9d735a7078..2f4254ea35 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/qfontdatabase_win.cpp b/src/gui/text/qfontdatabase_win.cpp
index c9f558664d..780ae288a1 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/qfontengine_ft.cpp b/src/gui/text/qfontengine_ft.cpp
index 45a25a47b9..cb0b43654e 100644
--- a/src/gui/text/qfontengine_ft.cpp
+++ b/src/gui/text/qfontengine_ft.cpp
@@ -1051,7 +1051,7 @@ QFontEngineFT::Glyph *QFontEngineFT::loadGlyph(QGlyphSet *set, uint glyph, Glyph
Q_ASSERT(antialias);
uchar *convoluted = new uchar[bitmap.rows*bitmap.pitch];
bool useLegacyLcdFilter = false;
-#if defined(FT_LCD_FILTER_H)
+#if defined(FC_LCD_FILTER) && defined(FT_LCD_FILTER_H)
useLegacyLcdFilter = (lcdFilterType == FT_LCD_FILTER_LEGACY);
#endif
uchar *buffer = bitmap.buffer;
diff --git a/src/gui/text/qfontengine_mac.mm b/src/gui/text/qfontengine_mac.mm
index 40d145a13c..425cab2f55 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 22a19949ac..7382b39f51 100644
--- a/src/gui/text/qfontengine_p.h
+++ b/src/gui/text/qfontengine_p.h
@@ -487,7 +487,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/qtextdocument.h b/src/gui/text/qtextdocument.h
index c33778312e..9c3d6c2c89 100644
--- a/src/gui/text/qtextdocument.h
+++ b/src/gui/text/qtextdocument.h
@@ -287,6 +287,7 @@ public:
private:
Q_DISABLE_COPY(QTextDocument)
Q_DECLARE_PRIVATE(QTextDocument)
+ friend class QTextObjectPrivate;
};
Q_DECLARE_OPERATORS_FOR_FLAGS(QTextDocument::FindFlags)
diff --git a/src/gui/text/qtextdocument_p.cpp b/src/gui/text/qtextdocument_p.cpp
index 320ecbfc4e..05ddf4702d 100644
--- a/src/gui/text/qtextdocument_p.cpp
+++ b/src/gui/text/qtextdocument_p.cpp
@@ -1484,7 +1484,6 @@ QTextObject *QTextDocumentPrivate::createObject(const QTextFormat &f, int object
QTextObject *obj = document()->createObject(f);
if (obj) {
- obj->d_func()->pieceTable = this;
obj->d_func()->objectIndex = objectIndex == -1 ? formats.createObjectIndex(f) : objectIndex;
objects[obj->d_func()->objectIndex] = obj;
}
diff --git a/src/gui/text/qtextlist.cpp b/src/gui/text/qtextlist.cpp
index e305027efc..d1a33617e2 100644
--- a/src/gui/text/qtextlist.cpp
+++ b/src/gui/text/qtextlist.cpp
@@ -50,6 +50,11 @@ QT_BEGIN_NAMESPACE
class QTextListPrivate : public QTextBlockGroupPrivate
{
+public:
+ QTextListPrivate(QTextDocument *doc)
+ : QTextBlockGroupPrivate(doc)
+ {
+ }
};
/*!
@@ -111,7 +116,7 @@ class QTextListPrivate : public QTextBlockGroupPrivate
/*! \internal
*/
QTextList::QTextList(QTextDocument *doc)
- : QTextBlockGroup(*new QTextListPrivate, doc)
+ : QTextBlockGroup(*new QTextListPrivate(doc), doc)
{
}
diff --git a/src/gui/text/qtextobject.cpp b/src/gui/text/qtextobject.cpp
index 1645a21cf4..3f4c8e51fd 100644
--- a/src/gui/text/qtextobject.cpp
+++ b/src/gui/text/qtextobject.cpp
@@ -88,7 +88,7 @@ QT_BEGIN_NAMESPACE
from QTextDocument::createObject().
*/
QTextObject::QTextObject(QTextDocument *doc)
- : QObject(*new QTextObjectPrivate, doc)
+ : QObject(*new QTextObjectPrivate(doc), doc)
{
}
@@ -98,7 +98,7 @@ QTextObject::QTextObject(QTextDocument *doc)
\internal
*/
QTextObject::QTextObject(QTextObjectPrivate &p, QTextDocument *doc)
- :QObject(p, doc)
+ : QObject(p, doc)
{
}
@@ -221,7 +221,7 @@ void QTextBlockGroupPrivate::markBlocksDirty()
QTextDocument::createObject().
*/
QTextBlockGroup::QTextBlockGroup(QTextDocument *doc)
- : QTextObject(*new QTextBlockGroupPrivate, doc)
+ : QTextObject(*new QTextBlockGroupPrivate(doc), doc)
{
}
@@ -410,7 +410,7 @@ QTextFrameLayoutData::~QTextFrameLayoutData()
Creates a new empty frame for the text \a document.
*/
QTextFrame::QTextFrame(QTextDocument *doc)
- : QTextObject(*new QTextFramePrivate, doc)
+ : QTextObject(*new QTextFramePrivate(doc), doc)
{
Q_D(QTextFrame);
d->fragment_start = 0;
diff --git a/src/gui/text/qtextobject_p.h b/src/gui/text/qtextobject_p.h
index b00a16a485..dd05eb4e07 100644
--- a/src/gui/text/qtextobject_p.h
+++ b/src/gui/text/qtextobject_p.h
@@ -55,6 +55,7 @@
#include "QtGui/qtextobject.h"
#include "private/qobject_p.h"
+#include "QtGui/qtextdocument.h"
QT_BEGIN_NAMESPACE
@@ -64,6 +65,10 @@ class QTextObjectPrivate : public QObjectPrivate
{
Q_DECLARE_PUBLIC(QTextObject)
public:
+ QTextObjectPrivate(QTextDocument *doc)
+ : pieceTable(doc->d_func()), objectIndex(-1)
+ {
+ }
QTextDocumentPrivate *pieceTable;
int objectIndex;
};
@@ -72,7 +77,10 @@ class QTextBlockGroupPrivate : public QTextObjectPrivate
{
Q_DECLARE_PUBLIC(QTextBlockGroup)
public:
-
+ QTextBlockGroupPrivate(QTextDocument *doc)
+ : QTextObjectPrivate(doc)
+ {
+ }
typedef QList<QTextBlock> BlockList;
BlockList blocks;
void markBlocksDirty();
@@ -85,7 +93,10 @@ class QTextFramePrivate : public QTextObjectPrivate
friend class QTextDocumentPrivate;
Q_DECLARE_PUBLIC(QTextFrame)
public:
-
+ QTextFramePrivate(QTextDocument *doc)
+ : QTextObjectPrivate(doc)
+ {
+ }
virtual void fragmentAdded(const QChar &type, uint fragment);
virtual void fragmentRemoved(const QChar &type, uint fragment);
void remove_me();
diff --git a/src/gui/text/qtexttable.cpp b/src/gui/text/qtexttable.cpp
index 375bb0974f..ba1c04f5a9 100644
--- a/src/gui/text/qtexttable.cpp
+++ b/src/gui/text/qtexttable.cpp
@@ -553,7 +553,7 @@ void QTextTablePrivate::update() const
/*! \internal
*/
QTextTable::QTextTable(QTextDocument *doc)
- : QTextFrame(*new QTextTablePrivate, doc)
+ : QTextFrame(*new QTextTablePrivate(doc), doc)
{
}
diff --git a/src/gui/text/qtexttable_p.h b/src/gui/text/qtexttable_p.h
index 1ba3a3f129..f2b45b6263 100644
--- a/src/gui/text/qtexttable_p.h
+++ b/src/gui/text/qtexttable_p.h
@@ -62,7 +62,7 @@ class QTextTablePrivate : public QTextFramePrivate
{
Q_DECLARE_PUBLIC(QTextTable)
public:
- QTextTablePrivate() : grid(0), nRows(0), dirty(true), blockFragmentUpdates(false) {}
+ QTextTablePrivate(QTextDocument *document) : QTextFramePrivate(document), grid(0), nRows(0), dirty(true), blockFragmentUpdates(false) {}
~QTextTablePrivate();
static QTextTable *createTable(QTextDocumentPrivate *, int pos, int rows, int cols, const QTextTableFormat &tableFormat);
diff --git a/src/gui/util/qcompleter.cpp b/src/gui/util/qcompleter.cpp
index 998098cd27..e6bc80a5b2 100644
--- a/src/gui/util/qcompleter.cpp
+++ b/src/gui/util/qcompleter.cpp
@@ -824,9 +824,9 @@ void QCompleterPrivate::_q_complete(QModelIndex index, bool highlighted)
Q_Q(QCompleter);
QString completion;
- if (!index.isValid())
+ if (!index.isValid() || (index.row() >= proxy->engine->matchCount())) {
completion = prefix;
- else {
+ } else {
QModelIndex si = proxy->mapToSource(index);
si = si.sibling(si.row(), column); // for clicked()
completion = q->pathFromIndex(si);
@@ -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/qdesktopservices.cpp b/src/gui/util/qdesktopservices.cpp
index d7e77de511..b84b63f309 100644
--- a/src/gui/util/qdesktopservices.cpp
+++ b/src/gui/util/qdesktopservices.cpp
@@ -159,6 +159,11 @@ void QOpenUrlHandlerRegistry::handlerDestroyed(QObject *handler)
If the URL is a reference to a local file (i.e., the URL scheme is "file") then
it will be opened with a suitable application instead of a Web browser.
+ The following example opens a file on the Windows file system residing on a path
+ that contains spaces:
+
+ \snippet doc/src/snippets/code/src_gui_util_qdesktopservices.cpp 2
+
If a \c mailto URL is specified, the user's e-mail client will be used to open a
composer window containing the options specified in the URL, similar to the way
\c mailto links are handled by a Web browser.
diff --git a/src/gui/widgets/qabstractbutton.cpp b/src/gui/widgets/qabstractbutton.cpp
index 330a7f8d79..61ed0ea625 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 6503a562a8..f0cbb05ef1 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/qcocoamenu_mac.mm b/src/gui/widgets/qcocoamenu_mac.mm
index c5977e4626..643428914d 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,6 +55,16 @@
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)
@@ -130,8 +140,9 @@ QT_FORWARD_DECLARE_CLASS(QApplication)
// 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]
@@ -154,9 +165,11 @@ QT_FORWARD_DECLARE_CLASS(QApplication)
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 8c8e23108f..e9884bbafb 100644
--- a/src/gui/widgets/qcombobox.cpp
+++ b/src/gui/widgets/qcombobox.cpp
@@ -61,6 +61,7 @@
#endif
#include <private/qcombobox_p.h>
#include <private/qabstractitemmodel_p.h>
+#include <private/qabstractscrollarea_p.h>
#include <qdebug.h>
#ifdef Q_WS_X11
@@ -108,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;
@@ -2274,7 +2275,6 @@ void QComboBox::showPopup()
bool boundToScreen = !window()->testAttribute(Qt::WA_DontShowOnScreen);
const bool usePopup = style->styleHint(QStyle::SH_ComboBox_Popup, &opt, this);
-
{
int listHeight = 0;
int count = 0;
@@ -2306,11 +2306,23 @@ void QComboBox::showPopup()
listRect.setHeight(listHeight);
}
- // add the frame size to the height. (+the spacing for the top and the bottom item)
- int marginTop, marginBottom;
- view()->getContentsMargins(0, &marginTop, 0, &marginBottom);
- listRect.setHeight(listRect.height() + 2*container->spacing()
- + marginTop + marginBottom);
+ {
+ // add the spacing for the grid on the top and the bottom;
+ int heightMargin = 2*container->spacing();
+
+ // add the frame of the container
+ int marginTop, marginBottom;
+ container->getContentsMargins(0, &marginTop, 0, &marginBottom);
+ heightMargin += marginTop + marginBottom;
+
+ //add the frame of the view
+ view()->getContentsMargins(0, &marginTop, 0, &marginBottom);
+ marginTop += static_cast<QAbstractScrollAreaPrivate *>(QObjectPrivate::get(view()))->top;
+ marginBottom += static_cast<QAbstractScrollAreaPrivate *>(QObjectPrivate::get(view()))->bottom;
+ heightMargin += marginTop + marginBottom;
+
+ listRect.setHeight(listRect.height() + heightMargin);
+ }
// Add space for margin at top and bottom if the style wants it.
if (usePopup)
diff --git a/src/gui/widgets/qcombobox_p.h b/src/gui/widgets/qcombobox_p.h
index f1203dcd75..c39a23140c 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 246da95736..4a95292783 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/qdockarealayout.cpp b/src/gui/widgets/qdockarealayout.cpp
index 9261c63054..4f0ec1e2ec 100644
--- a/src/gui/widgets/qdockarealayout.cpp
+++ b/src/gui/widgets/qdockarealayout.cpp
@@ -579,7 +579,7 @@ void QDockAreaLayoutInfo::fitItems()
QLayoutStruct &ls = layout_struct_list[j++];
ls.init();
ls.empty = false;
- if (gap || (item.flags & QDockAreaLayoutItem::KeepSize)) {
+ if (item.flags & QDockAreaLayoutItem::KeepSize) {
ls.minimumSize = ls.maximumSize = ls.sizeHint = item.size;
ls.expansive = false;
ls.stretch = 0;
diff --git a/src/gui/widgets/qdockwidget.cpp b/src/gui/widgets/qdockwidget.cpp
index 865b19cb4d..a5be5f8c4a 100644
--- a/src/gui/widgets/qdockwidget.cpp
+++ b/src/gui/widgets/qdockwidget.cpp
@@ -406,10 +406,14 @@ int QDockWidgetLayout::minimumTitleWidth() const
QSize closeSize(0, 0);
QSize floatSize(0, 0);
- if (QLayoutItem *item = item_list[CloseButton])
- closeSize = item->sizeHint();
- if (QLayoutItem *item = item_list[FloatButton])
- floatSize = item->sizeHint();
+ if (hasFeature(q, QDockWidget::DockWidgetClosable)) {
+ if (QLayoutItem *item = item_list[CloseButton])
+ closeSize = item->widget()->sizeHint();
+ }
+ if (hasFeature(q, QDockWidget::DockWidgetFloatable)) {
+ if (QLayoutItem *item = item_list[FloatButton])
+ floatSize = item->widget()->sizeHint();
+ }
int titleHeight = this->titleHeight();
diff --git a/src/gui/widgets/qmaccocoaviewcontainer_mac.mm b/src/gui/widgets/qmaccocoaviewcontainer_mac.mm
index 710af6af14..380e98310d 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 1bc0430a47..0f4edf9d3c 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 46d64718c5..2abc9e88c9 100644
--- a/src/gui/widgets/qmainwindow.cpp
+++ b/src/gui/widgets/qmainwindow.cpp
@@ -481,7 +481,7 @@ void QMainWindow::setMenuBar(QMenuBar *menuBar)
oldMenuBar->deleteLater();
}
#ifdef Q_OS_WINCE
- if (menuBar->size().height() > 0)
+ if (menuBar && menuBar->size().height() > 0)
#endif
d->layout->setMenuBar(menuBar);
}
diff --git a/src/gui/widgets/qmainwindowlayout.cpp b/src/gui/widgets/qmainwindowlayout.cpp
index 768446e30e..eade6330f1 100644
--- a/src/gui/widgets/qmainwindowlayout.cpp
+++ b/src/gui/widgets/qmainwindowlayout.cpp
@@ -1542,8 +1542,8 @@ bool QMainWindowLayout::plug(QLayoutItem *widgetItem)
if (!previousPath.isEmpty())
layoutState.remove(previousPath);
+ pluggingWidget = widget;
if (dockOptions & QMainWindow::AnimatedDocks) {
- pluggingWidget = widget;
QRect globalRect = currentGapRect;
globalRect.moveTopLeft(parentWidget()->mapToGlobal(globalRect.topLeft()));
#ifndef QT_NO_DOCKWIDGET
@@ -1575,6 +1575,7 @@ bool QMainWindowLayout::plug(QLayoutItem *widgetItem)
#endif
currentGapPos.clear();
updateGapIndicator();
+ pluggingWidget = 0;
}
return true;
diff --git a/src/gui/widgets/qmainwindowlayout_mac.mm b/src/gui/widgets/qmainwindowlayout_mac.mm
index 950f758103..c807afb883 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/qmenu.cpp b/src/gui/widgets/qmenu.cpp
index b64a6147c8..6be0f1979d 100644
--- a/src/gui/widgets/qmenu.cpp
+++ b/src/gui/widgets/qmenu.cpp
@@ -2916,8 +2916,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/qtabbar.cpp b/src/gui/widgets/qtabbar.cpp
index 7d970ad10f..b562b1fb28 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();
@@ -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,19 +2210,16 @@ 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();
update();
diff --git a/src/gui/widgets/qtabbar_p.h b/src/gui/widgets/qtabbar_p.h
index a117aa3df3..cb1a15bfc9 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/qtextedit.cpp b/src/gui/widgets/qtextedit.cpp
index b239e32fab..1c4df93f74 100644
--- a/src/gui/widgets/qtextedit.cpp
+++ b/src/gui/widgets/qtextedit.cpp
@@ -1478,7 +1478,13 @@ void QTextEditPrivate::paint(QPainter *p, QPaintEvent *e)
layout->setViewport(QRect());
}
-/*! \reimp
+/*! \fn void QTextEdit::paintEvent(QPaintEvent *event)
+
+This event handler can be reimplemented in a subclass to receive paint events passed in \a event.
+It is usually unnecessary to reimplement this function in a subclass of QTextEdit.
+
+\warning The underlying text document must not be modified from within a reimplementation
+of this function.
*/
void QTextEdit::paintEvent(QPaintEvent *e)
{
diff --git a/src/gui/widgets/qtoolbar.cpp b/src/gui/widgets/qtoolbar.cpp
index 85d6ea23d9..1babb6d13a 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/network/access/access.pri b/src/network/access/access.pri
index 6bcca0cba6..3269b2eaf2 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 0141ae259d..96ccc91951 100644
--- a/src/network/access/qhttp.cpp
+++ b/src/network/access/qhttp.cpp
@@ -2120,6 +2120,10 @@ int QHttp::setUser(const QString &userName, const QString &password)
Web proxy cache server (from \l http://www.squid.org/). For transparent
proxying, such as SOCKS5, use QNetworkProxy instead.
+ \note setProxy() has to be called before setHost() for it to take effect.
+ If setProxy() is called after setHost(), then it will not apply until after
+ setHost() is called again.
+
\sa QFtp::setProxy()
*/
int QHttp::setProxy(const QString &host, int port,
@@ -2139,7 +2143,7 @@ int QHttp::setProxy(const QString &host, int port,
is QNetworkProxy::HttpCachingProxy, QHttp will behave like the
previous function.
- Note: for compatibility with Qt 4.3, if the proxy type is
+ \note for compatibility with Qt 4.3, if the proxy type is
QNetworkProxy::HttpProxy and the request type is unencrypted (that
is, ConnectionModeHttp), QHttp will treat the proxy as a caching
proxy.
diff --git a/src/network/access/qhttpnetworkconnection.cpp b/src/network/access/qhttpnetworkconnection.cpp
index edb29883c3..5940fba73e 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;
@@ -1848,6 +987,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 +1292,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 +1346,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 8dbcb3d6e9..09bd459d45 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 0000000000..6f7f6f7b04
--- /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/src/network/access/qhttpnetworkheader_p.h b/src/network/access/qhttpnetworkheader_p.h
new file mode 100644
index 0000000000..4e62352d96
--- /dev/null
+++ b/src/network/access/qhttpnetworkheader_p.h
@@ -0,0 +1,111 @@
+/****************************************************************************
+**
+** 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 QHTTPNETWORKHEADER_H
+#define QHTTPNETWORKHEADER_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 <qshareddata.h>
+#include <qurl.h>
+
+QT_BEGIN_NAMESPACE
+
+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;
+};
+
+class QHttpNetworkHeaderPrivate : public QSharedData
+{
+public:
+ QUrl url;
+ QList<QPair<QByteArray, QByteArray> > fields;
+
+ 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;
+
+};
+
+
+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 0000000000..fe3f6af2ef
--- /dev/null
+++ b/src/network/access/qhttpnetworkreply.cpp
@@ -0,0 +1,663 @@
+/****************************************************************************
+**
+** 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);
+ }
+ 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;
+}
+
+// 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 \ No newline at end of file
diff --git a/src/network/access/qhttpnetworkreply_p.h b/src/network/access/qhttpnetworkreply_p.h
new file mode 100644
index 0000000000..c17c65c90c
--- /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);
+ 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;
+};
+
+
+
+
+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 0000000000..420cb69172
--- /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 0000000000..d18e116231
--- /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 4b41aa7c18..a52b5a0601 100644
--- a/src/network/access/qnetworkaccesshttpbackend.cpp
+++ b/src/network/access/qnetworkaccesshttpbackend.cpp
@@ -527,8 +527,10 @@ void QNetworkAccessHttpBackend::postRequest()
foreach (const QByteArray &header, headers)
httpRequest.setHeaderField(header, request().rawHeader(header));
- if (loadedFromCache)
+ if (loadedFromCache) {
+ QNetworkAccessBackend::finished();
return; // no need to send the request! :)
+ }
httpReply = http->sendRequest(httpRequest);
httpReply->setParent(this);
@@ -767,8 +769,12 @@ void QNetworkAccessHttpBackend::replyHeaderChanged()
for (; it != end; ++it) {
QByteArray value = rawHeader(it->first);
- if (!value.isEmpty())
- value += ", ";
+ if (!value.isEmpty()) {
+ if (it->first.toLower() == "set-cookie")
+ value += "\n";
+ else
+ value += ", ";
+ }
value += it->second;
setRawHeader(it->first, value);
}
@@ -886,8 +892,6 @@ bool QNetworkAccessHttpBackend::sendCacheContents(const QNetworkCacheMetaData &m
if (status < 100)
status = 200; // fake it
- checkForRedirect(status);
-
setAttribute(QNetworkRequest::HttpStatusCodeAttribute, status);
setAttribute(QNetworkRequest::HttpReasonPhraseAttribute, attributes.value(QNetworkRequest::HttpReasonPhraseAttribute));
setAttribute(QNetworkRequest::SourceIsFromCacheAttribute, true);
@@ -898,6 +902,8 @@ bool QNetworkAccessHttpBackend::sendCacheContents(const QNetworkCacheMetaData &m
for ( ; it != end; ++it)
setRawHeader(it->first, it->second);
+ checkForRedirect(status);
+
writeDownstreamData(contents);
#if defined(QNETWORKACCESSHTTPBACKEND_DEBUG)
qDebug() << "Successfully sent cache:" << url() << contents->size() << "bytes";
@@ -951,6 +957,7 @@ QNetworkCacheMetaData QNetworkAccessHttpBackend::fetchCacheMetaData(const QNetwo
QList<QByteArray> newHeaders = rawHeaderList();
foreach (QByteArray header, newHeaders) {
+ QByteArray originalHeader = header;
header = header.toLower();
bool hop_by_hop =
(header == "connection"
@@ -974,19 +981,32 @@ QNetworkCacheMetaData QNetworkAccessHttpBackend::fetchCacheMetaData(const QNetwo
continue;
}
+ it = cacheHeaders.findRawHeader(header);
+ if (it != cacheHeaders.rawHeaders.constEnd()) {
+ // Match the behavior of Firefox and assume Cache-Control: "no-transform"
+ if (header == "content-encoding"
+ || header == "content-range"
+ || header == "content-type")
+ continue;
+
+ // For MS servers that send "Content-Length: 0" on 304 responses
+ // ignore this too
+ if (header == "content-length")
+ continue;
+ }
+
#if defined(QNETWORKACCESSHTTPBACKEND_DEBUG)
QByteArray n = rawHeader(header);
QByteArray o;
- it = cacheHeaders.findRawHeader(header);
if (it != cacheHeaders.rawHeaders.constEnd())
o = (*it).second;
- if (n != o && header != "Date") {
+ if (n != o && header != "date") {
qDebug() << "replacing" << header;
qDebug() << "new" << n;
qDebug() << "old" << o;
}
#endif
- cacheHeaders.setRawHeader(header, rawHeader(header));
+ cacheHeaders.setRawHeader(originalHeader, rawHeader(header));
}
metaData.setRawHeaders(cacheHeaders.rawHeaders);
diff --git a/src/network/access/qnetworkcookie.cpp b/src/network/access/qnetworkcookie.cpp
index 54497c3961..c8d6097187 100644
--- a/src/network/access/qnetworkcookie.cpp
+++ b/src/network/access/qnetworkcookie.cpp
@@ -49,6 +49,7 @@
#include "QtCore/qlist.h"
#include "QtCore/qlocale.h"
#include "QtCore/qstring.h"
+#include "QtCore/qstringlist.h"
#include "QtCore/qurl.h"
#include "private/qobject_p.h"
@@ -200,7 +201,7 @@ bool QNetworkCookie::operator==(const QNetworkCookie &other) const
return true;
return d->name == other.d->name &&
d->value == other.d->value &&
- d->expirationDate == other.d->expirationDate &&
+ d->expirationDate.toUTC() == other.d->expirationDate.toUTC() &&
d->domain == other.d->domain &&
d->path == other.d->path &&
d->secure == other.d->secure &&
@@ -550,6 +551,392 @@ QByteArray QNetworkCookie::toRawForm(RawForm form) const
return result;
}
+static const char zones[] =
+ "pst\0" // -8
+ "pdt\0"
+ "mst\0" // -7
+ "mdt\0"
+ "cst\0" // -6
+ "cdt\0"
+ "est\0" // -5
+ "edt\0"
+ "ast\0" // -4
+ "nst\0" // -3
+ "gmt\0" // 0
+ "utc\0"
+ "bst\0"
+ "met\0" // 1
+ "eet\0" // 2
+ "jst\0" // 9
+ "\0";
+static int zoneOffsets[] = {-8, -8, -7, -7, -6, -6, -5, -5, -4, -3, 0, 0, 0, 1, 2, 9 };
+
+static const char months[] =
+ "jan\0"
+ "feb\0"
+ "mar\0"
+ "apr\0"
+ "may\0"
+ "jun\0"
+ "jul\0"
+ "aug\0"
+ "sep\0"
+ "oct\0"
+ "nov\0"
+ "dec\0"
+ "\0";
+
+static inline bool isNumber(char s)
+{ return s >= '0' && s <= '9'; }
+
+static inline bool isTerminator(char c)
+{ return c == '\n' || c == '\r'; }
+
+static inline bool isValueSeparator(char c)
+{ return isTerminator(c) || c == ';'; }
+
+static inline bool isWhitespace(char c)
+{ return c == ' ' || c == '\t'; }
+
+static bool checkStaticArray(int &val, const QByteArray &dateString, int at, const char *array, int size)
+{
+ if (dateString[at] < 'a' || dateString[at] > 'z')
+ return false;
+ if (val == -1 && dateString.length() >= at + 3) {
+ int j = 0;
+ int i = 0;
+ while (i <= size) {
+ const char *str = array + i;
+ if (str[0] == dateString[at]
+ && str[1] == dateString[at + 1]
+ && str[2] == dateString[at + 2]) {
+ val = j;
+ return true;
+ }
+ i += strlen(str) + 1;
+ ++j;
+ }
+ }
+ return false;
+}
+
+//#define PARSEDATESTRINGDEBUG
+
+#define ADAY 1
+#define AMONTH 2
+#define AYEAR 4
+
+/*
+ Parse all the date formats that Firefox can.
+
+ The official format is:
+ expires=ddd(d)?, dd-MMM-yyyy hh:mm:ss GMT
+
+ But browsers have been supporting a very wide range of date
+ strings. To work on many sites we need to support more then
+ just the official date format.
+
+ For reference see Firefox's PR_ParseTimeStringToExplodedTime in
+ prtime.c. The Firefox date parser is coded in a very complex way
+ and is slightly over ~700 lines long. While this implementation
+ will be slightly slower for the non standard dates it is smaller,
+ more readable, and maintainable.
+
+ Or in their own words:
+ "} // else what the hell is this."
+*/
+static QDateTime parseDateString(const QByteArray &dateString)
+{
+ QTime time;
+ // placeholders for values when we are not sure it is a year, month or day
+ int unknown[3] = {-1, -1, -1};
+ int month = -1;
+ int day = -1;
+ int year = -1;
+ int zoneOffset = -1;
+
+ // hour:minute:second.ms pm
+ QRegExp timeRx(QLatin1String("(\\d{1,2}):(\\d{1,2})(:(\\d{1,2})|)(\\.(\\d{1,3})|)((\\s{0,}(am|pm))|)"));
+
+ int at = 0;
+ while (at < dateString.length()) {
+#ifdef PARSEDATESTRINGDEBUG
+ qDebug() << dateString.mid(at);
+#endif
+ bool isNum = isNumber(dateString[at]);
+
+ // Month
+ if (!isNum
+ && checkStaticArray(month, dateString, at, months, sizeof(months)- 1)) {
+ ++month;
+#ifdef PARSEDATESTRINGDEBUG
+ qDebug() << "Month:" << month;
+#endif
+ at += 3;
+ continue;
+ }
+ // Zone
+ if (!isNum
+ && zoneOffset == -1
+ && checkStaticArray(zoneOffset, dateString, at, zones, sizeof(zones)- 1)) {
+ int sign = (at >= 0 && dateString[at - 1] == '-') ? -1 : 1;
+ zoneOffset = sign * zoneOffsets[zoneOffset] * 60 * 60;
+#ifdef PARSEDATESTRINGDEBUG
+ qDebug() << "Zone:" << month;
+#endif
+ at += 3;
+ continue;
+ }
+ // Zone offset
+ if (!isNum
+ && (zoneOffset == -1 || zoneOffset == 0) // Can only go after gmt
+ && (dateString[at] == '+' || dateString[at] == '-')
+ && (at == 0
+ || isWhitespace(dateString[at - 1])
+ || dateString[at - 1] == ','
+ || (at >= 3
+ && (dateString[at - 3] == 'g')
+ && (dateString[at - 2] == 'm')
+ && (dateString[at - 1] == 't')))) {
+
+ int end = 1;
+ while (end < 5 && dateString.length() > at+end
+ && dateString[at + end] >= '0' && dateString[at + end] <= '9')
+ ++end;
+ int minutes = 0;
+ int hours = 0;
+ switch (end - 1) {
+ case 4:
+ minutes = atoi(dateString.mid(at + 3, 2).constData());
+ // fall through
+ case 2:
+ hours = atoi(dateString.mid(at + 1, 2).constData());
+ break;
+ case 1:
+ hours = atoi(dateString.mid(at + 1, 1).constData());
+ break;
+ default:
+ at += end;
+ continue;
+ }
+ if (end != 1) {
+ int sign = dateString[at] == '-' ? -1 : 1;
+ zoneOffset = sign * ((minutes * 60) + (hours * 60 * 60));
+#ifdef PARSEDATESTRINGDEBUG
+ qDebug() << "Zone offset:" << zoneOffset << hours << minutes;
+#endif
+ at += end;
+ continue;
+ }
+ }
+
+ // Time
+ if (isNum && time.isNull()
+ && dateString.length() >= at + 3
+ && (dateString[at + 2] == ':' || dateString[at + 1] == ':')) {
+ // While the date can be found all over the string the format
+ // for the time is set and a nice regexp can be used.
+ int pos = timeRx.indexIn(QLatin1String(dateString), at);
+ if (pos != -1) {
+ QStringList list = timeRx.capturedTexts();
+ int h = atoi(list.at(1).toLatin1().constData());
+ int m = atoi(list.at(2).toLatin1().constData());
+ int s = atoi(list.at(4).toLatin1().constData());
+ int ms = atoi(list.at(6).toLatin1().constData());
+ if (h < 12 && !list.at(9).isEmpty())
+ if (list.at(9) == QLatin1String("pm"))
+ h += 12;
+ time = QTime(h, m, s, ms);
+#ifdef PARSEDATESTRINGDEBUG
+ qDebug() << "Time:" << list << timeRx.matchedLength();
+#endif
+ at += timeRx.matchedLength();
+ continue;
+ }
+ }
+
+ // 4 digit Year
+ if (isNum
+ && year == -1
+ && dateString.length() >= at + 3) {
+ if (isNumber(dateString[at + 1])
+ && isNumber(dateString[at + 2])
+ && isNumber(dateString[at + 3])) {
+ year = atoi(dateString.mid(at, 4).constData());
+ at += 4;
+#ifdef PARSEDATESTRINGDEBUG
+ qDebug() << "Year:" << year;
+#endif
+ continue;
+ }
+ }
+
+ // a one or two digit number
+ // Could be month, day or year
+ if (isNum) {
+ int length = 1;
+ if (dateString.length() > at + 1
+ && isNumber(dateString[at + 1]))
+ ++length;
+ int x = atoi(dateString.mid(at, length).constData());
+ if (year == -1 && (x > 31 || x == 0)) {
+ year = x;
+ } else {
+ if (unknown[0] == -1) unknown[0] = x;
+ else if (unknown[1] == -1) unknown[1] = x;
+ else if (unknown[2] == -1) unknown[2] = x;
+ }
+ at += length;
+#ifdef PARSEDATESTRINGDEBUG
+ qDebug() << "Saving" << x;
+#endif
+ continue;
+ }
+
+ // Unknown character, typically a weekday such as 'Mon'
+ ++at;
+ }
+
+ // Once we are done parsing the string take the digits in unknown
+ // and determine which is the unknown year/month/day
+
+ int couldBe[3] = { 0, 0, 0 };
+ int unknownCount = 3;
+ for (int i = 0; i < unknownCount; ++i) {
+ if (unknown[i] == -1) {
+ couldBe[i] = ADAY | AYEAR | AMONTH;
+ unknownCount = i;
+ continue;
+ }
+
+ if (unknown[i] >= 1)
+ couldBe[i] = ADAY;
+
+ if (month == -1 && unknown[i] >= 1 && unknown[i] <= 12)
+ couldBe[i] |= AMONTH;
+
+ if (year == -1)
+ couldBe[i] |= AYEAR;
+ }
+
+ // For any possible day make sure one of the values that could be a month
+ // can contain that day.
+ // For any possible month make sure one of the values that can be a
+ // day that month can have.
+ // Example: 31 11 06
+ // 31 can't be a day because 11 and 6 don't have 31 days
+ for (int i = 0; i < unknownCount; ++i) {
+ int currentValue = unknown[i];
+ bool findMatchingMonth = couldBe[i] & ADAY && currentValue >= 29;
+ bool findMatchingDay = couldBe[i] & AMONTH;
+ if (!findMatchingMonth || !findMatchingDay)
+ continue;
+ for (int j = 0; j < 3; ++j) {
+ if (j == i)
+ continue;
+ for (int k = 0; k < 2; ++k) {
+ if (k == 0 && !(findMatchingMonth && (couldBe[j] & AMONTH)))
+ continue;
+ else if (k == 1 && !(findMatchingDay && (couldBe[j] & ADAY)))
+ continue;
+ int m = currentValue;
+ int d = unknown[j];
+ if (k == 0)
+ qSwap(m, d);
+ if (m == -1) m = month;
+ bool found = true;
+ switch(m) {
+ case 2:
+ // When we get 29 and the year ends up having only 28
+ // See date.isValid below
+ // Example: 29 23 Feb
+ if (d <= 29)
+ found = false;
+ break;
+ case 4: case 6: case 9: case 11:
+ if (d <= 30)
+ found = false;
+ break;
+ default:
+ if (d > 0 && d <= 31)
+ found = false;
+ }
+ if (k == 0) findMatchingMonth = found;
+ else if (k == 1) findMatchingDay = found;
+ }
+ }
+ if (findMatchingMonth)
+ couldBe[i] &= ~ADAY;
+ if (findMatchingDay)
+ couldBe[i] &= ~AMONTH;
+ }
+
+ // First set the year/month/day that have been deduced
+ // and reduce the set as we go along to deduce more
+ for (int i = 0; i < unknownCount; ++i) {
+ int unset = 0;
+ for (int j = 0; j < 3; ++j) {
+ if (couldBe[j] == ADAY && day == -1) {
+ day = unknown[j];
+ unset |= ADAY;
+ } else if (couldBe[j] == AMONTH && month == -1) {
+ month = unknown[j];
+ unset |= AMONTH;
+ } else if (couldBe[j] == AYEAR && year == -1) {
+ year = unknown[j];
+ unset |= AYEAR;
+ } else {
+ // common case
+ break;
+ }
+ couldBe[j] &= ~unset;
+ }
+ }
+
+ // Now fallback to a standardized order to fill in the rest with
+ for (int i = 0; i < unknownCount; ++i) {
+ if (couldBe[i] & AMONTH && month == -1) month = unknown[i];
+ else if (couldBe[i] & ADAY && day == -1) day = unknown[i];
+ else if (couldBe[i] & AYEAR && year == -1) year = unknown[i];
+ }
+#ifdef PARSEDATESTRINGDEBUG
+ qDebug() << "Final set" << year << month << day;
+#endif
+
+ if (year == -1 || month == -1 || day == -1) {
+#ifdef PARSEDATESTRINGDEBUG
+ qDebug() << "Parser failure" << year << month << day;
+#endif
+ return QDateTime();
+ }
+
+ // Y2k behavior
+ int y2k = 0;
+ if (year < 70)
+ y2k = 2000;
+ else if (year < 100)
+ y2k = 1900;
+
+ QDate date(year + y2k, month, day);
+
+ // When we were given a bad cookie that when parsed
+ // set the day to 29 and the year to one that doesn't
+ // have the 29th of Feb rather then adding the extra
+ // complicated checking earlier just swap here.
+ // Example: 29 23 Feb
+ if (!date.isValid())
+ date = QDate(day + y2k, month, year);
+
+ QDateTime dateTime(date, time, Qt::UTC);
+
+ if (zoneOffset != -1) {
+ dateTime = dateTime.addSecs(zoneOffset);
+ }
+ if (!dateTime.isValid())
+ return QDateTime();
+ return dateTime;
+}
+
/*!
Parses the cookie string \a cookieString as received from a server
response in the "Set-Cookie:" header. If there's a parsing error,
@@ -580,17 +967,23 @@ 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())
// parsing error
- return QList<QNetworkCookie>();
+ break;
cookie.setName(field.first);
cookie.setValue(field.second);
position = nextNonWhitespace(cookieString, position);
bool endOfCookie = false;
- while (!endOfCookie && position < length)
+ while (!endOfCookie && position < endOfSetCookie)
switch (cookieString.at(position++)) {
case ',':
// end of the cookie
@@ -603,64 +996,20 @@ QList<QNetworkCookie> QNetworkCookie::parseCookies(const QByteArray &cookieStrin
field.first = field.first.toLower(); // everything but the NAME=VALUE is case-insensitive
if (field.first == "expires") {
- static const char dateFormats[] =
- "d-MMM-yyyy hh:mm:ss\0"
- "d MMM yyyy hh:mm:ss\0"
- "d-MMM-yy hh:mm:ss\0"
- "\0";
-
- // expires is a special case because it contains a naked comma
- // and naked spaces. The format is:
- // expires=ddd(d)?, dd-MMM-yyyy hh:mm:ss GMT
- // but we also accept standard HTTP dates
-
- // make sure we're at the comma
- if (position >= length || cookieString.at(position) != ',')
- // invalid cookie string
- return QList<QNetworkCookie>();
-
- ++position;
+ position -= field.second.length();
int end;
for (end = position; end < length; ++end)
- if (cookieString.at(end) == ',' || cookieString.at(end) == ';')
+ if (isValueSeparator(cookieString.at(end)))
break;
- QByteArray datestring = cookieString.mid(position, end - position).trimmed();
+ QByteArray dateString = cookieString.mid(position, end - position).trimmed();
position = end;
- if (datestring.endsWith(" GMT") || datestring.endsWith(" UTC"))
- datestring.chop(4);
- else if (datestring.endsWith(" +0000"))
- datestring.chop(6);
-
- size_t i = 0;
- int j = 0;
- QLocale cLocale = QLocale::c();
- QDateTime dt;
- do {
- QLatin1String df(dateFormats + i);
- i += strlen(dateFormats + i) + 1;
-
-#ifndef QT_NO_DATESTRING
- dt = cLocale.toDateTime(QString::fromLatin1(datestring), df);
-
- // some cookies are set with a two-digit year
- // (although this is not allowed); this is interpreted as a year
- // in the 20th century by QDateTime.
- // Work around this case here (assuming 00-69 is 21st century,
- // 70-99 is 20th century)
- QDate date = dt.date();
- if (j == 2 && date.year() >= 1900 && date.year() < 1970)
- dt = dt.addYears(100);
- if (date.year() >= 0 && date.year() < 100)
- dt = dt.addYears(1900);
-#endif
- j++;
- } while (!dt.isValid() && i <= sizeof dateFormats - 1);
- if (!dt.isValid())
- // invalid cookie string
- return QList<QNetworkCookie>();
-
- dt.setTimeSpec(Qt::UTC);
+ QDateTime dt = parseDateString(dateString.toLower());
+ if (!dt.isValid()) {
+ cookie = QNetworkCookie();
+ endOfCookie = true;
+ continue;
+ }
cookie.setExpirationDate(dt);
} else if (field.first == "domain") {
QByteArray rawDomain = field.second;
@@ -701,9 +1050,12 @@ QList<QNetworkCookie> QNetworkCookie::parseCookies(const QByteArray &cookieStrin
}
position = nextNonWhitespace(cookieString, position);
+ if (position > endOfSetCookie)
+ endOfCookie = true;
}
- result += cookie;
+ if (!cookie.name().isEmpty())
+ result += cookie;
}
return result;
diff --git a/src/network/access/qnetworkdiskcache.cpp b/src/network/access/qnetworkdiskcache.cpp
index fa0fccb65b..93360c8e24 100644
--- a/src/network/access/qnetworkdiskcache.cpp
+++ b/src/network/access/qnetworkdiskcache.cpp
@@ -253,7 +253,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();
diff --git a/src/network/access/qnetworkreplyimpl.cpp b/src/network/access/qnetworkreplyimpl.cpp
index eaa572f8af..79c3d1a3a4 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 4f477bdd91..c9161f8238 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);
diff --git a/src/network/kernel/qhostaddress.cpp b/src/network/kernel/qhostaddress.cpp
index fc4336908e..b225c1777b 100644
--- a/src/network/kernel/qhostaddress.cpp
+++ b/src/network/kernel/qhostaddress.cpp
@@ -435,7 +435,7 @@ void QNetmaskAddress::setPrefixLength(QAbstractSocket::NetworkLayerProtocol prot
The class also supports common predefined addresses: \l Null, \l
LocalHost, \l LocalHostIPv6, \l Broadcast, and \l Any.
- \sa QTcpSocket, QTcpServer, QUdpSocket
+ \sa QHostInfo, QTcpSocket, QTcpServer, QUdpSocket
*/
/*! \enum QHostAddress::SpecialAddress
diff --git a/src/network/kernel/qnetworkinterface_win.cpp b/src/network/kernel/qnetworkinterface_win.cpp
index 9540c181eb..de97629fc8 100644
--- a/src/network/kernel/qnetworkinterface_win.cpp
+++ b/src/network/kernel/qnetworkinterface_win.cpp
@@ -173,14 +173,14 @@ static QList<QNetworkInterfacePrivate *> interfaceListingWinXP()
interfaces << iface;
iface->index = 0;
- if (ptr->Length >= offsetof(IP_ADAPTER_ADDRESSES, Ipv6IfIndex))
+ if (ptr->Length >= offsetof(IP_ADAPTER_ADDRESSES, Ipv6IfIndex) && ptr->Ipv6IfIndex != 0)
iface->index = ptr->Ipv6IfIndex;
else if (ptr->IfIndex != 0)
iface->index = ptr->IfIndex;
iface->flags = QNetworkInterface::CanBroadcast;
- if (ptr->OperStatus == IfOperStatusUp)
- iface->flags |= QNetworkInterface::IsUp | QNetworkInterface::IsRunning;
+ if (ptr->OperStatus == IfOperStatusUp)
+ iface->flags |= QNetworkInterface::IsUp | QNetworkInterface::IsRunning;
if ((ptr->Flags & IP_ADAPTER_NO_MULTICAST) == 0)
iface->flags |= QNetworkInterface::CanMulticast;
diff --git a/src/network/socket/qabstractsocket.cpp b/src/network/socket/qabstractsocket.cpp
index bf243cf27c..8ae247cba9 100644
--- a/src/network/socket/qabstractsocket.cpp
+++ b/src/network/socket/qabstractsocket.cpp
@@ -1266,7 +1266,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;
}
@@ -2282,7 +2282,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 50bcaaa2f5..d3ccb6957e 100644
--- a/src/network/socket/qlocalserver_unix.cpp
+++ b/src/network/socket/qlocalserver_unix.cpp
@@ -166,9 +166,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 dd48d0ab6b..781d3da7a2 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 4748b76090..2471043b5e 100644
--- a/src/network/socket/qlocalsocket_unix.cpp
+++ b/src/network/socket/qlocalsocket_unix.cpp
@@ -323,11 +323,8 @@ void QLocalSocketPrivate::_q_connectToSocket()
}
// connected!
- if (delayConnect) {
- delayConnect->setEnabled(false);
- delete delayConnect;
- delayConnect = 0;
- }
+ cancelDelayedConnect();
+
serverName = connectingName;
fullServerName = connectingPathName;
if (unixSocket.setSocketDescriptor(connectingSocket,
@@ -374,6 +371,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);
@@ -420,14 +429,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 e759d0bd1b..39c92842f3 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 4de844e188..5584c6a491 100644
--- a/src/network/socket/qnativesocketengine_unix.cpp
+++ b/src/network/socket/qnativesocketengine_unix.cpp
@@ -526,26 +526,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);
@@ -918,15 +903,15 @@ int QNativeSocketEnginePrivate::nativeSelect(int timeout, bool selectForRead) co
if (timeout > 0) {
// recalculate the timeout
- timeout -= timer.elapsed();
- tv.tv_sec = timeout / 1000;
- tv.tv_usec = (timeout % 1000) * 1000;
-
- if (timeout < 0) {
+ int t = timeout - timer.elapsed();
+ if (t < 0) {
// oops, timeout turned negative?
retval = -1;
break;
}
+
+ tv.tv_sec = t / 1000;
+ tv.tv_usec = (t % 1000) * 1000;
}
} while (true);
@@ -965,15 +950,15 @@ int QNativeSocketEnginePrivate::nativeSelect(int timeout, bool checkRead, bool c
if (timeout > 0) {
// recalculate the timeout
- timeout -= timer.elapsed();
- tv.tv_sec = timeout / 1000;
- tv.tv_usec = (timeout % 1000) * 1000;
-
- if (timeout < 0) {
+ int t = timeout - timer.elapsed();
+ if (t < 0) {
// oops, timeout turned negative?
ret = -1;
break;
}
+
+ tv.tv_sec = t / 1000;
+ tv.tv_usec = (t % 1000) * 1000;
}
} while (true);
if (ret <= 0)
diff --git a/src/opengl/opengl.pro b/src/opengl/opengl.pro
index 48d7caf350..78aaddb524 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 2d903424bb..b4a0e5c909 100644
--- a/src/opengl/qgl.cpp
+++ b/src/opengl/qgl.cpp
@@ -2615,6 +2615,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 +3234,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 e514ff524e..c05a7d797e 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 314c6595e3..13193962c4 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 b8bbeaf110..16aaa969e7 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 fb2227280a..c362b7e7fb 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 964efa2cf0..5390fd14f3 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 14941ab25e..9a679b1db1 100644
--- a/src/opengl/qglpixelbuffer_mac.mm
+++ b/src/opengl/qglpixelbuffer_mac.mm
@@ -308,10 +308,6 @@ GLuint QGLPixelBuffer::generateDynamicTexture() const
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 +318,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 e81a576072..e3228cc003 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 f332a50a73..ec6e33b1e9 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();
}
@@ -5328,6 +5334,9 @@ void QOpenGLPaintEnginePrivate::composite(GLuint primitive, const q_vertexType *
Q_Q(QOpenGLPaintEngine);
QGL_FUNC_CONTEXT;
+ if (current_style == Qt::NoBrush)
+ return;
+
DEBUG_ONCE qDebug() << "QOpenGLPaintEnginePrivate: Using compositing program: fragment_brush ="
<< fragment_brush << ", fragment_composition_mode =" << fragment_composition_mode;
diff --git a/src/opengl/qwindowsurface_gl.cpp b/src/opengl/qwindowsurface_gl.cpp
index 3dd30649df..b41adf9af9 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/gfxdrivers/directfb/directfb.pro b/src/plugins/gfxdrivers/directfb/directfb.pro
index 96eb5368a0..1ee9030c03 100644
--- a/src/plugins/gfxdrivers/directfb/directfb.pro
+++ b/src/plugins/gfxdrivers/directfb/directfb.pro
@@ -3,7 +3,7 @@ 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_NO_DIRECTFB_WM
@@ -12,6 +12,10 @@ QTDIR_build:DESTDIR = $$QT_BUILD_TREE/plugins/gfxdrivers
#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
+#DEFINES += QT_DIRECTFB_WARN_ON_RASTERFALLBACKS
+#DEFINES += QT_DIRECTFB_DISABLE_RASTERFALLBACKS
target.path = $$[QT_INSTALL_PLUGINS]/gfxdrivers
INSTALLS += target
diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbkeyboard.cpp b/src/plugins/gfxdrivers/directfb/qdirectfbkeyboard.cpp
index cd19f69941..368b9f9beb 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/qdirectfbpaintdevice.cpp b/src/plugins/gfxdrivers/directfb/qdirectfbpaintdevice.cpp
index 6a41a24a24..924090c56c 100644
--- a/src/plugins/gfxdrivers/directfb/qdirectfbpaintdevice.cpp
+++ b/src/plugins/gfxdrivers/directfb/qdirectfbpaintdevice.cpp
@@ -50,34 +50,22 @@ QDirectFBPaintDevice::~QDirectFBPaintDevice()
}
-IDirectFBSurface *QDirectFBPaintDevice::directFbSurface() const
+IDirectFBSurface *QDirectFBPaintDevice::directFBSurface() const
{
return dfbSurface;
}
-// Locks the dfb surface and creates a QImage (lockedImage) from the pointer
-void QDirectFBPaintDevice::lockDirectFB() {
-
+void QDirectFBPaintDevice::lockDirectFB()
+{
if (lockedImage)
return; // Already locked
- void *mem;
- int w, h;
- int bpl;
- DFBSurfacePixelFormat format;
-
- DFBResult result = dfbSurface->Lock(dfbSurface, DSLF_WRITE, &mem, &bpl);
- if (result != DFB_OK || !mem) {
- DirectFBError("QDirectFBPixmapData::buffer()", result);
- return;
+ if (uchar *mem = QDirectFBScreen::lockSurface(dfbSurface, DSLF_WRITE, &bpl)) {
+ const QSize s = size();
+ lockedImage = new QImage(mem, s.width(), s.height(), bpl,
+ QDirectFBScreen::getImageFormat(dfbSurface));
}
-
- dfbSurface->GetSize(dfbSurface, &w, &h);
- dfbSurface->GetPixelFormat(dfbSurface, &format);
-
- lockedImage = new QImage(static_cast<uchar*>(mem), w, h, bpl,
- QDirectFBScreen::getImageFormat(format));
}
@@ -103,19 +91,20 @@ void* QDirectFBPaintDevice::memory() const
QImage::Format QDirectFBPaintDevice::format() const
{
- DFBSurfacePixelFormat dfbFormat;
- dfbSurface->GetPixelFormat(dfbSurface, &dfbFormat);
- return QDirectFBScreen::getImageFormat(dfbFormat);
+ return QDirectFBScreen::getImageFormat(dfbSurface);
}
int QDirectFBPaintDevice::bytesPerLine() const
{
- // Can only get the stride when we lock the surface
- QDirectFBPaintDevice* that = const_cast<QDirectFBPaintDevice*>(this);
- that->lockDirectFB();
- Q_ASSERT(that->lockedImage);
- return that->lockedImage->bytesPerLine();
+ if (bpl == -1) {
+ // Can only get the stride when we lock the surface
+ Q_ASSERT(!lockedImage);
+ QDirectFBPaintDevice* that = const_cast<QDirectFBPaintDevice*>(this);
+ that->lockDirectFB();
+ Q_ASSERT(bpl != -1);
+ }
+ return bpl;
}
@@ -126,7 +115,6 @@ QSize QDirectFBPaintDevice::size() const
return QSize(w, h);
}
-
int QDirectFBPaintDevice::metric(QPaintDevice::PaintDeviceMetric metric) const
{
if (!dfbSurface)
@@ -135,40 +123,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 eaf7537d32..a11064bc3e 100644
--- a/src/plugins/gfxdrivers/directfb/qdirectfbpaintdevice.h
+++ b/src/plugins/gfxdrivers/directfb/qdirectfbpaintdevice.h
@@ -54,29 +54,46 @@ QT_MODULE(Gui)
class QDirectFBPaintDevice : public QCustomRasterPaintDevice
{
public:
- QDirectFBPaintDevice(QDirectFBScreen *scr = QDirectFBScreen::instance())
- : QCustomRasterPaintDevice(0),
- dfbSurface(0),
- lockedImage(0),
- screen(scr) {}
~QDirectFBPaintDevice();
- IDirectFBSurface *directFbSurface() const;
+ IDirectFBSurface *directFBSurface() const;
void lockDirectFB();
void unlockDirectFB();
+ inline bool forceRasterPrimitives() const { return forceRaster; }
+
// Reimplemented from QCustomRasterPaintDevice:
void* memory() const;
QImage::Format format() const;
int bytesPerLine() const;
QSize size() const;
int metric(QPaintDevice::PaintDeviceMetric metric) const;
-
protected:
+ // Shouldn't create QDirectFBPaintDevice by itself but only sub-class it:
+ QDirectFBPaintDevice(QDirectFBScreen *scr = QDirectFBScreen::instance())
+ : QCustomRasterPaintDevice(0),
+ dfbSurface(0),
+ lockedImage(0),
+ screen(scr),
+ forceRaster(false) {}
+
+ 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;
+private:
+ Q_DISABLE_COPY(QDirectFBPaintDevice)
};
QT_END_HEADER
diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp b/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp
index fb3ecc9adb..ba5d71a888 100644
--- a/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp
+++ b/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp
@@ -54,6 +54,70 @@
#include <private/qpixmapdata_p.h>
#include <private/qpixmap_raster_p.h>
+#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,
+ bool matrixScale, 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 << "matrixScale" << matrixScale
+ << "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(one, two, three) rasterFallbackWarn("Disabled raster engine operation", \
+ __FUNCTION__, state()->painter->device(), \
+ d_func()->matrixScale, d_func()->matrixRotShear, \
+ d_func()->simplePen, d_func()->dfbCanHandleClip(), \
+ d_func()->forceRasterPrimitives, \
+ #one, one, #two, two, #three, three); \
+ return;
+#elif defined QT_DIRECTFB_DISABLE_RASTERFALLBACKS
+#define RASTERFALLBACK(one, two, three) return;
+#elif defined QT_DIRECTFB_WARN_ON_RASTERFALLBACKS
+#define RASTERFALLBACK(one, two, three) rasterFallbackWarn("Falling back to raster engine for", \
+ __FUNCTION__, state()->painter->device(), \
+ d_func()->matrixScale, d_func()->matrixRotShear, \
+ d_func()->simplePen, d_func()->dfbCanHandleClip(), \
+ d_func()->forceRasterPrimitives, \
+ #one, one, #two, two, #three, three);
+#else
+#define RASTERFALLBACK(one, two, three)
+#endif
+
static inline uint ALPHA_MUL(uint x, uint a)
{
uint t = x * a;
@@ -61,17 +125,6 @@ static inline uint ALPHA_MUL(uint x, uint a)
return t;
}
-static inline QRect mapRect(const QTransform &transform, const QRect &rect)
-{
- return (transform.isIdentity() ? rect : transform.mapRect(rect));
-}
-
-static inline QRect mapRect(const QTransform &transform, const QRectF &rect)
-{
- return (transform.isIdentity() ? rect : transform.mapRect(rect)).
- toRect();
-}
-
class SurfaceCache
{
public:
@@ -112,7 +165,7 @@ CachedImage::CachedImage(const QImage &image)
description = QDirectFBScreen::getSurfaceDescription(image);
QDirectFBScreen* screen = QDirectFBScreen::instance();
- tmpSurface = screen->createDFBSurface(&description);
+ tmpSurface = screen->createDFBSurface(&description, QDirectFBScreen::TrackSurface);
if (!tmpSurface) {
qWarning("CachedImage CreateSurface failed!");
return;
@@ -124,7 +177,7 @@ CachedImage::CachedImage(const QImage &image)
description.flags = DFBSurfaceDescriptionFlags(description.flags & ~DSDESC_PREALLOCATED);
- s = screen->createDFBSurface(&description);
+ s = screen->createDFBSurface(&description, QDirectFBScreen::TrackSurface);
if (!s)
qWarning("QDirectFBPaintEngine failed caching image");
@@ -159,7 +212,7 @@ IDirectFBSurface* SurfaceCache::getSurface(const uint *buf, int size)
DFBSurfaceDescription description;
description = QDirectFBScreen::getSurfaceDescription(buf, size);
- surface = QDirectFBScreen::instance()->createDFBSurface(&description);
+ surface = QDirectFBScreen::instance()->createDFBSurface(&description, QDirectFBScreen::TrackSurface);
if (!surface)
qWarning("QDirectFBPaintEngine: SurfaceCache: Unable to create surface");
@@ -192,31 +245,30 @@ public:
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 bool lock();
+ inline void lock();
inline void unlock();
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;
@@ -227,48 +279,47 @@ public:
void fillRects(const QRectF *rects, int count) const;
void drawRects(const QRectF *rects, int count) const;
+
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 updateClip();
- void updateFlags();
+ inline void updateClip();
inline void setClipDirty();
- void systemStateChanged(); //Needed to be notified when system clip changes
+ void systemStateChanged();
void begin(QPaintDevice *device);
void end();
+ void prepareForBlit(bool alpha);
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;
- QTransform transform;
- quint32 drawFlags;
- quint32 blitFlags;
- quint32 duffFlags;
- bool dirtyFlags;
+ quint32 drawFlagsFromCompositionMode, blitFlagsFromCompositionMode;
+ DFBSurfacePorterDuffRule porterDuffRule;
+
bool dirtyClip;
bool dfbHandledClip;
+ QDirectFBPaintDevice *dfbDevice;
QDirectFBPaintEngine *q;
};
QDirectFBPaintEnginePrivate::QDirectFBPaintEnginePrivate(QDirectFBPaintEngine *p)
- : surface(0), antialiased(false), simplePen(false),
- simpleBrush(false), matrixRotShear(false), matrixScale(false), fbWidth(-1), fbHeight(-1),
- opacity(255), drawFlags(0), blitFlags(0), duffFlags(0), dirtyFlags(false), dirtyClip(true),
- dfbHandledClip(false), q(p)
+ : surface(0), antialiased(false), forceRasterPrimitives(false), simplePen(false),
+ matrixRotShear(false), matrixScale(false), lastLockedHeight(-1),
+ fbWidth(-1), fbHeight(-1), opacity(255), drawFlagsFromCompositionMode(0),
+ blitFlagsFromCompositionMode(0), porterDuffRule(DSPD_SRC_OVER), dirtyClip(true),
+ dfbHandledClip(false), dfbDevice(0), q(p)
{
fb = QDirectFBScreen::instance()->dfb();
surfaceCache = new SurfaceCache;
@@ -279,7 +330,6 @@ QDirectFBPaintEnginePrivate::QDirectFBPaintEnginePrivate(QDirectFBPaintEngine *p
QDirectFBPaintEnginePrivate::~QDirectFBPaintEnginePrivate()
{
- unlock();
delete surfaceCache;
}
@@ -300,32 +350,30 @@ 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::setClipDirty()
{
dirtyClip = true;
}
-
-bool QDirectFBPaintEnginePrivate::lock()
+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.
- if (device->devType() == QInternal::CustomRaster) {
- prepare(static_cast<QCustomRasterPaintDevice*>(device));
- return true;
- }
- return false;
+ lastLockedHeight = dfbDevice->height();
+
+ Q_ASSERT(dfbDevice);
+ prepare(dfbDevice);
}
void QDirectFBPaintEnginePrivate::unlock()
{
- QPaintDevice *device = q->paintDevice();
- if (!device) //XXX This should probably be an assert
- return;
-
- Q_ASSERT(device->devType() == QInternal::CustomRaster);
- QDirectFBPaintDevice* dfbDevice = static_cast<QDirectFBPaintDevice*>(device);
+ Q_ASSERT(dfbDevice);
dfbDevice->unlockDirectFB();
}
@@ -338,35 +386,31 @@ void QDirectFBPaintEnginePrivate::setTransform(const QTransform &m)
void QDirectFBPaintEnginePrivate::begin(QPaintDevice *device)
{
- QDirectFBPaintDevice* dfbDevice = 0;
-
+ 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();
- if (data->classId() == QPixmapData::DirectFBClass) {
- QDirectFBPixmapData* dfbPixmapData = static_cast<QDirectFBPixmapData*>(data);
- dfbDevice = static_cast<QDirectFBPaintDevice*>(dfbPixmapData);
- }
+ Q_ASSERT(data->classId() == QPixmapData::DirectFBClass);
+ QDirectFBPixmapData* dfbPixmapData = static_cast<QDirectFBPixmapData*>(data);
+ dfbDevice = static_cast<QDirectFBPaintDevice*>(dfbPixmapData);
}
if (dfbDevice)
- surface = dfbDevice->directFbSurface();
+ 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;
+ setCompositionMode(q->state()->compositionMode());
dirtyClip = true;
setPen(q->state()->pen);
setDFBColor(pen.color());
@@ -374,6 +418,7 @@ void QDirectFBPaintEnginePrivate::begin(QPaintDevice *device)
void QDirectFBPaintEnginePrivate::end()
{
+ dfbDevice = 0;
surface->ReleaseSource(surface);
surface->SetClip(surface, NULL);
surface = 0;
@@ -383,105 +428,80 @@ void QDirectFBPaintEnginePrivate::setPen(const QPen &p)
{
pen = p;
simplePen = (pen.style() == Qt::NoPen) ||
- (pen.style() == Qt::SolidLine && !antialiased
+ (pen.style() == Qt::SolidLine
+ && !antialiased
+ && (pen.brush().style() == Qt::SolidPattern)
&& (pen.widthF() <= 1 && !matrixScale));
}
-void QDirectFBPaintEnginePrivate::setBrush(const QBrush &b)
-{
- // TODO: accelerate texture pattern
- 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;
+ blitFlagsFromCompositionMode = DSBLIT_NOFX;
+ drawFlagsFromCompositionMode = DSDRAW_NOFX;
+ bool blend = true;
switch (mode) {
case QPainter::CompositionMode_SourceOver:
- duff = DSPD_SRC_OVER;
- blit |= DSBLIT_BLEND_ALPHACHANNEL;
+ porterDuffRule = DSPD_SRC_OVER;
break;
case QPainter::CompositionMode_DestinationOver:
- duff = DSPD_DST_OVER;
- blit |= DSBLIT_BLEND_ALPHACHANNEL;
+ porterDuffRule = DSPD_DST_OVER;
break;
case QPainter::CompositionMode_Clear:
- duff = DSPD_CLEAR;
- blit &= ~DSBLIT_BLEND_ALPHACHANNEL;
+ porterDuffRule = DSPD_CLEAR;
+ blend = false;
break;
case QPainter::CompositionMode_Source:
- duff = DSPD_SRC;
- blit &= ~DSBLIT_BLEND_ALPHACHANNEL;
+ porterDuffRule = DSPD_SRC;
+ blend = false;
break;
case QPainter::CompositionMode_Destination:
- blit &= ~DSBLIT_BLEND_ALPHACHANNEL;
+ porterDuffRule = DSPD_NONE; // ### need to double check this
+ blend = false;
return;
case QPainter::CompositionMode_SourceIn:
- duff = DSPD_SRC_IN;
- blit |= DSBLIT_BLEND_ALPHACHANNEL;
+ porterDuffRule = DSPD_SRC_IN;
break;
case QPainter::CompositionMode_DestinationIn:
- duff = DSPD_DST_IN;
- blit |= DSBLIT_BLEND_ALPHACHANNEL;
+ porterDuffRule = DSPD_DST_IN;
break;
case QPainter::CompositionMode_SourceOut:
- duff = DSPD_SRC_OUT;
- blit |= DSBLIT_BLEND_ALPHACHANNEL;
+ porterDuffRule = DSPD_SRC_OUT;
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;
+ porterDuffRule = DSPD_DST_OUT;
break;
case QPainter::CompositionMode_Xor:
- duff = DSPD_NONE;
- blit |= DSBLIT_BLEND_ALPHACHANNEL;
- drawFlags |= DSDRAW_XOR;
- blit |= DSBLIT_XOR;
- dirtyFlags = true;
+ 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);
- break;
+ return;
}
-
- if (duff != duffFlags || blit != blitFlags) {
- duffFlags = duff;
- blitFlags = blit;
- dirtyFlags = true;
+ // 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(const qreal value)
+void QDirectFBPaintEnginePrivate::setOpacity(quint8 op)
{
- 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;
+ opacity = op;
+ if (opacity == 255) {
+ blitFlagsFromCompositionMode &= ~DSBLIT_BLEND_COLORALPHA;
+ } else {
+ blitFlagsFromCompositionMode |= DSBLIT_BLEND_COLORALPHA;
+ }
}
void QDirectFBPaintEnginePrivate::setRenderHints(QPainter::RenderHints hints)
@@ -493,133 +513,83 @@ void QDirectFBPaintEnginePrivate::setRenderHints(QPainter::RenderHints hints)
}
}
-void QDirectFBPaintEnginePrivate::updateFlags()
+void QDirectFBPaintEnginePrivate::prepareForBlit(bool alpha)
{
- if (!dirtyFlags)
- return;
- surface->SetDrawingFlags(surface, DFBSurfaceDrawingFlags(drawFlags));
- surface->SetBlittingFlags(surface, DFBSurfaceBlittingFlags(blitFlags));
- surface->SetPorterDuff(surface, DFBSurfacePorterDuffRule(duffFlags));
- dirtyFlags = false;
+ 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) const
+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) const
{
- QVarLengthArray<DFBRegion> regions(n);
-
for (int i = 0; i < n; ++i) {
const QLine l = transform.map(lines[i]);
-
- // TODO: clip!
-
- regions[i].x1 = l.x1();
- regions[i].y1 = l.y1();
- regions[i].x2 = l.x2();
- regions[i].y2 = l.y2();
+ surface->DrawLine(surface, l.x1(), l.y1(), l.x2(), 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();
-
- // TODO: clip!
-
- regions[i].x1 = l.x1();
- regions[i].y1 = l.y1();
- regions[i].x2 = l.x2();
- regions[i].y2 = l.y2();
+ surface->DrawLine(surface, l.x1(), l.y1(), l.x2(), 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 = ::mapRect(transform, 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 = ::mapRect(transform, rects[i]);
- 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);
+ fillRects(rects.constData(), n);
}
void QDirectFBPaintEnginePrivate::fillRects(const QRect *rects, int n) const
{
- QVarLengthArray<DFBRectangle> dfbRects(n);
for (int i = 0; i < n; ++i) {
- const QRect r = ::mapRect(transform, rects[i]);
- dfbRects[i].x = r.x();
- dfbRects[i].y = r.y();
- dfbRects[i].w = r.width();
- dfbRects[i].h = r.height();
+ const QRect r = transform.mapRect(rects[i]);
+ surface->FillRectangle(surface, r.x(), r.y(),
+ r.width(), 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 = ::mapRect(transform, rects[i]);
- dfbRects[i].x = r.x();
- dfbRects[i].y = r.y();
- dfbRects[i].w = r.width();
- dfbRects[i].h = r.height();
+ const QRect r = transform.mapRect(rects[i]).toRect();
+ surface->FillRectangle(surface, r.x(), r.y(),
+ r.width(), 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 = ::mapRect(transform, rects[i]);
+ const QRect r = transform.mapRect(rects[i]);
surface->DrawRectangle(surface, r.x(), r.y(),
r.width() + 1, r.height() + 1);
}
@@ -628,7 +598,7 @@ void QDirectFBPaintEnginePrivate::drawRects(const QRect *rects, int n) const
void QDirectFBPaintEnginePrivate::drawRects(const QRectF *rects, int n) const
{
for (int i = 0; i < n; ++i) {
- const QRect r = ::mapRect(transform, rects[i]);
+ const QRect r = transform.mapRect(rects[i]).toRect();
surface->DrawRectangle(surface, r.x(), r.y(),
r.width() + 1, r.height() + 1);
}
@@ -638,21 +608,13 @@ 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));
- }
-
+ prepareForBlit(pixmap.hasAlphaChannel());
QPixmapData *data = pixmap.pixmapData();
Q_ASSERT(data->classId() == QPixmapData::DirectFBClass);
QDirectFBPixmapData *dfbData = static_cast<QDirectFBPixmapData*>(data);
- IDirectFBSurface *s = dfbData->directFbSurface();
+ IDirectFBSurface *s = dfbData->directFBSurface();
const QRect sr = src.toRect();
- const QRect dr = ::mapRect(transform, dest);
+ const QRect dr = transform.mapRect(dest).toRect();
const DFBRectangle sRect = { sr.x(), sr.y(), sr.width(), sr.height() };
DFBResult result;
@@ -664,27 +626,17 @@ void QDirectFBPaintEnginePrivate::drawPixmap(const QRectF &dest,
}
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));
- }
-
+ 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 = ::mapRect(transform, dest);
+ IDirectFBSurface *s = dfbData->directFBSurface();
+ const QRect dr = transform.mapRect(dest).toRect();
DFBResult result = DFB_OK;
if (!matrixScale && dr == QRect(0, 0, fbWidth, fbHeight)) {
@@ -706,7 +658,7 @@ void QDirectFBPaintEnginePrivate::drawTiledPixmap(const QRectF &dest,
result = surface->BatchBlit(surface, s, rects.constData(),
points.constData(), points.size());
} else {
- const QRect sr = ::mapRect(transform, QRect(0, 0, pixmap.width(), pixmap.height()));
+ 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 };
@@ -725,25 +677,13 @@ void QDirectFBPaintEnginePrivate::drawTiledPixmap(const QRectF &dest,
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 QImage &image,
const QRectF &src)
{
- QImage image = srcImage;
- if (QDirectFBScreen::getSurfacePixelFormat(image) == DSPF_UNKNOWN) {
- QImage::Format format;
- if (image.hasAlphaChannel())
- format = QImage::Format_ARGB32_Premultiplied;
- else
- format = QImage::Format_RGB32;
- image = image.convertToFormat(format);
- }
-
+ Q_ASSERT(QDirectFBScreen::getSurfacePixelFormat(image.format()) != DSPF_UNKNOWN);
CachedImage *img = imageCache[image.cacheKey()];
IDirectFBSurface *imgSurface = 0;
bool doRelease = false;
@@ -767,7 +707,8 @@ void QDirectFBPaintEnginePrivate::drawImage(const QRectF &dest,
DFBSurfaceDescription description;
description = QDirectFBScreen::getSurfaceDescription(image);
- imgSurface = QDirectFBScreen::instance()->createDFBSurface(&description);
+ imgSurface = QDirectFBScreen::instance()->createDFBSurface(&description,
+ QDirectFBScreen::DontTrackSurface);
if (!imgSurface) {
qWarning("QDirectFBPaintEnginePrivate::drawImage");
return;
@@ -781,17 +722,10 @@ void QDirectFBPaintEnginePrivate::drawImage(const QRectF &dest,
}
const QRect sr = src.toRect();
- const QRect dr = ::mapRect(transform, dest);
+ 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));
- }
+ prepareForBlit(image.hasAlphaChannel());
if (dr.size() == sr.size()) {
surface->Blit(surface, imgSurface, &sRect, dr.x(), dr.y());
} else {
@@ -799,10 +733,10 @@ void QDirectFBPaintEnginePrivate::drawImage(const QRectF &dest,
dr.width(), dr.height() };
surface->StretchBlit(surface, imgSurface, &sRect, &dRect);
}
- if (changeFlags)
- surface->SetBlittingFlags(surface, DFBSurfaceBlittingFlags(blitFlags));
- if (doRelease)
- QDirectFBScreen::instance()->releaseDFBSurface(imgSurface);
+ if (doRelease) {
+ surface->ReleaseSource(surface);
+ imgSurface->Release(imgSurface);
+ }
}
void QDirectFBPaintEnginePrivate::updateClip()
@@ -882,19 +816,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();
}
@@ -902,7 +827,6 @@ void QDirectFBPaintEngine::compositionModeChanged()
{
Q_D(QDirectFBPaintEngine);
d->setCompositionMode(state()->compositionMode());
-
QRasterPaintEngine::compositionModeChanged();
}
@@ -928,11 +852,9 @@ void QDirectFBPaintEngine::setState(QPainterState *s)
{
Q_D(QDirectFBPaintEngine);
QRasterPaintEngine::setState(s);
- if (d->surface)
- d->updateClip();
+ d->setClipDirty();
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());
}
@@ -941,6 +863,9 @@ void QDirectFBPaintEngine::clip(const QVectorPath &path, Qt::ClipOperation op)
{
Q_D(QDirectFBPaintEngine);
d->setClipDirty();
+ const QPoint bottom = d->transform.map(QPoint(0, path.controlPointRect().y2));
+ if (bottom.y() >= d->lastLockedHeight)
+ d->lock();
QRasterPaintEngine::clip(path, op);
}
@@ -948,15 +873,24 @@ void QDirectFBPaintEngine::clip(const QRect &rect, Qt::ClipOperation op)
{
Q_D(QDirectFBPaintEngine);
d->setClipDirty();
+ if (!d->clip()->hasRectClip && d->clip()->enabled) {
+ const QPoint bottom = d->transform.map(QPoint(0, rect.bottom()));
+ if (bottom.y() >= d->lastLockedHeight)
+ d->lock();
+ }
+
QRasterPaintEngine::clip(rect, op);
}
-
void QDirectFBPaintEngine::drawRects(const QRect *rects, int rectCount)
{
Q_D(QDirectFBPaintEngine);
d->updateClip();
- if (!d->dfbCanHandleClip() || d->matrixRotShear || !d->simpleBrush || !d->simplePen) {
+ const QBrush &brush = state()->brush;
+ if (!d->dfbCanHandleClip() || d->matrixRotShear
+ || !d->simplePen || d->forceRasterPrimitives
+ || !d->isSimpleBrush(brush)) {
+ RASTERFALLBACK(rectCount, static_cast<bool>(false), static_cast<bool>(false));
d->lock();
QRasterPaintEngine::drawRects(rects, rectCount);
return;
@@ -964,13 +898,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);
}
@@ -980,7 +912,10 @@ void QDirectFBPaintEngine::drawRects(const QRectF *rects, int rectCount)
{
Q_D(QDirectFBPaintEngine);
d->updateClip();
- if (!d->dfbCanHandleClip() || d->matrixRotShear || !d->simpleBrush || !d->simplePen) {
+ const QBrush &brush = state()->brush;
+ if (!d->dfbCanHandleClip() || d->matrixRotShear
+ || !d->simplePen || d->forceRasterPrimitives
+ || !d->isSimpleBrush(brush)) {
d->lock();
QRasterPaintEngine::drawRects(rects, rectCount);
return;
@@ -988,13 +923,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);
}
@@ -1004,7 +937,8 @@ void QDirectFBPaintEngine::drawLines(const QLine *lines, int lineCount)
{
Q_D(QDirectFBPaintEngine);
d->updateClip();
- if (!d->simplePen || !d->dfbCanHandleClip()) {
+ if (!d->simplePen || !d->dfbCanHandleClip() || d->forceRasterPrimitives) {
+ RASTERFALLBACK(lineCount, static_cast<bool>(false), static_cast<bool>(false));
d->lock();
QRasterPaintEngine::drawLines(lines, lineCount);
return;
@@ -1012,7 +946,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);
}
@@ -1022,7 +955,8 @@ void QDirectFBPaintEngine::drawLines(const QLineF *lines, int lineCount)
{
Q_D(QDirectFBPaintEngine);
d->updateClip();
- if (!d->simplePen || !d->dfbCanHandleClip()) {
+ if (!d->simplePen || !d->dfbCanHandleClip() || d->forceRasterPrimitives) {
+ RASTERFALLBACK(lineCount, static_cast<bool>(false), static_cast<bool>(false));
d->lock();
QRasterPaintEngine::drawLines(lines, lineCount);
return;
@@ -1030,7 +964,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);
}
@@ -1045,9 +978,11 @@ void QDirectFBPaintEngine::drawImage(const QRectF &r, const QImage &image,
#ifndef QT_NO_DIRECTFB_PREALLOCATED
d->updateClip();
- if (!d->dfbCanHandleClip(r) || d->matrixRotShear)
+ if (!d->dfbCanHandleClip(r) || d->matrixRotShear
+ || QDirectFBScreen::getSurfacePixelFormat(image.format()) == DSPF_UNKNOWN)
#endif
{
+ RASTERFALLBACK(r, image.size(), sr);
d->lock();
QRasterPaintEngine::drawImage(r, image, sr, flags);
return;
@@ -1055,7 +990,6 @@ void QDirectFBPaintEngine::drawImage(const QRectF &r, const QImage &image,
#ifndef QT_NO_DIRECTFB_PREALLOCATED
d->unlock();
- d->updateFlags();
d->drawImage(r, image, sr);
#endif
}
@@ -1072,17 +1006,16 @@ void QDirectFBPaintEngine::drawPixmap(const QRectF &r, const QPixmap &pixmap,
d->updateClip();
if (pixmap.pixmapData()->classId() != QPixmapData::DirectFBClass) {
+ // not using RASTERFALLBACK since this is the way we do bitmaps?
d->lock();
QRasterPaintEngine::drawPixmap(r, pixmap, sr);
- }
- else if (!d->dfbCanHandleClip(r) || d->matrixRotShear) {
+ } else if (!d->dfbCanHandleClip(r) || d->matrixRotShear) {
+ RASTERFALLBACK(r, pixmap.size(), sr);
const QImage *img = static_cast<QDirectFBPixmapData*>(pixmap.pixmapData())->buffer();
d->lock();
QRasterPaintEngine::drawImage(r, *img, sr);
- }
- else {
+ } else {
d->unlock();
- d->updateFlags();
d->drawPixmap(r, pixmap, sr);
}
}
@@ -1101,18 +1034,16 @@ void QDirectFBPaintEngine::drawTiledPixmap(const QRectF &r,
if (pixmap.pixmapData()->classId() != QPixmapData::DirectFBClass) {
d->lock();
QRasterPaintEngine::drawTiledPixmap(r, pixmap, sp);
- }
- else if (!d->dfbCanHandleClip(r) || d->matrixRotShear || !sp.isNull()) {
- QImage* img = static_cast<QDirectFBPixmapData*>(pixmap.pixmapData())->buffer();
+ } else if (!d->dfbCanHandleClip(r) || d->matrixRotShear || !sp.isNull()) {
+ RASTERFALLBACK(r, pixmap.size(), sp);
+ const QImage *img = static_cast<QDirectFBPixmapData*>(pixmap.pixmapData())->buffer();
+ d->lock();
QRasterPixmapData *data = new QRasterPixmapData(QPixmapData::PixmapType);
data->fromImage(*img, Qt::AutoColor);
const QPixmap pix(data);
- d->lock();
QRasterPaintEngine::drawTiledPixmap(r, pix, sp);
- }
- else {
+ } else {
d->unlock();
- d->updateFlags();
d->drawTiledPixmap(r, pixmap);
}
}
@@ -1127,6 +1058,7 @@ void QDirectFBPaintEngine::stroke(const QVectorPath &path, const QPen &pen)
void QDirectFBPaintEngine::drawPath(const QPainterPath &path)
{
+ RASTERFALLBACK(path.boundingRect(), static_cast<bool>(false), static_cast<bool>(false));
Q_D(QDirectFBPaintEngine);
d->lock();
QRasterPaintEngine::drawPath(path);
@@ -1134,6 +1066,7 @@ void QDirectFBPaintEngine::drawPath(const QPainterPath &path)
void QDirectFBPaintEngine::drawPoints(const QPointF *points, int pointCount)
{
+ RASTERFALLBACK(pointCount, static_cast<bool>(false), static_cast<bool>(false));
Q_D(QDirectFBPaintEngine);
d->lock();
QRasterPaintEngine::drawPoints(points, pointCount);
@@ -1141,6 +1074,7 @@ void QDirectFBPaintEngine::drawPoints(const QPointF *points, int pointCount)
void QDirectFBPaintEngine::drawPoints(const QPoint *points, int pointCount)
{
+ RASTERFALLBACK(pointCount, static_cast<bool>(false), static_cast<bool>(false));
Q_D(QDirectFBPaintEngine);
d->lock();
QRasterPaintEngine::drawPoints(points, pointCount);
@@ -1148,6 +1082,7 @@ void QDirectFBPaintEngine::drawPoints(const QPoint *points, int pointCount)
void QDirectFBPaintEngine::drawEllipse(const QRectF &rect)
{
+ RASTERFALLBACK(rect, static_cast<bool>(false), static_cast<bool>(false));
Q_D(QDirectFBPaintEngine);
d->lock();
QRasterPaintEngine::drawEllipse(rect);
@@ -1156,6 +1091,7 @@ void QDirectFBPaintEngine::drawEllipse(const QRectF &rect)
void QDirectFBPaintEngine::drawPolygon(const QPointF *points, int pointCount,
PolygonDrawMode mode)
{
+ RASTERFALLBACK(pointCount, mode, static_cast<bool>(false));
Q_D(QDirectFBPaintEngine);
d->lock();
QRasterPaintEngine::drawPolygon(points, pointCount, mode);
@@ -1164,6 +1100,7 @@ void QDirectFBPaintEngine::drawPolygon(const QPointF *points, int pointCount,
void QDirectFBPaintEngine::drawPolygon(const QPoint *points, int pointCount,
PolygonDrawMode mode)
{
+ RASTERFALLBACK(pointCount, mode, static_cast<bool>(false));
Q_D(QDirectFBPaintEngine);
d->lock();
QRasterPaintEngine::drawPolygon(points, pointCount, mode);
@@ -1172,6 +1109,7 @@ void QDirectFBPaintEngine::drawPolygon(const QPoint *points, int pointCount,
void QDirectFBPaintEngine::drawTextItem(const QPointF &p,
const QTextItem &textItem)
{
+ RASTERFALLBACK(p, textItem.text(), static_cast<bool>(false));
Q_D(QDirectFBPaintEngine);
d->lock();
QRasterPaintEngine::drawTextItem(p, textItem);
@@ -1179,6 +1117,7 @@ void QDirectFBPaintEngine::drawTextItem(const QPointF &p,
void QDirectFBPaintEngine::fill(const QVectorPath &path, const QBrush &brush)
{
+ RASTERFALLBACK(path, brush, static_cast<bool>(false));
Q_D(QDirectFBPaintEngine);
d->lock();
QRasterPaintEngine::fill(path, brush);
@@ -1191,17 +1130,19 @@ void QDirectFBPaintEngine::fillRect(const QRectF &rect, const QBrush &brush)
d->updateClip();
if (d->dfbCanHandleClip(rect) && !d->matrixRotShear) {
switch (brush.style()) {
- case Qt::SolidPattern:
+ case Qt::SolidPattern: {
+ if (d->forceRasterPrimitives)
+ break;
d->unlock();
- d->updateFlags();
d->setDFBColor(brush.color());
- d->fillRects(&rect, 1);
- return;
+ const QRect r = d->transform.mapRect(rect).toRect();
+ d->surface->FillRectangle(d->surface, r.x(), r.y(),
+ r.width(), r.height());
+ return; }
case Qt::TexturePattern:
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;
}
@@ -1210,6 +1151,7 @@ void QDirectFBPaintEngine::fillRect(const QRectF &rect, const QBrush &brush)
break;
}
}
+ RASTERFALLBACK(rect, brush, static_cast<bool>(false));
d->lock();
QRasterPaintEngine::fillRect(rect, brush);
}
@@ -1218,14 +1160,16 @@ void QDirectFBPaintEngine::fillRect(const QRectF &rect, const QColor &color)
{
Q_D(QDirectFBPaintEngine);
d->updateClip();
- if (!d->dfbCanHandleClip() || d->matrixRotShear) {
+ if (!d->dfbCanHandleClip() || d->matrixRotShear || d->forceRasterPrimitives) {
+ RASTERFALLBACK(rect, color, static_cast<bool>(false));
d->lock();
QRasterPaintEngine::fillRect(rect, color);
} else {
d->unlock();
- d->updateFlags();
d->setDFBColor(color);
- d->fillRects(&rect, 1);
+ const QRect r = d->transform.mapRect(rect).toRect();
+ d->surface->FillRectangle(d->surface, r.x(), r.y(),
+ r.width(), r.height());
}
}
@@ -1233,31 +1177,38 @@ void QDirectFBPaintEngine::drawColorSpans(const QSpan *spans, int count,
uint color)
{
Q_D(QDirectFBPaintEngine);
- color = INV_PREMUL(color);
-
- QVarLengthArray<DFBRegion> lines(count);
- int j = 0;
- for (int i = 0; i < count; ++i) {
- if (spans[i].coverage == 255) {
- lines[j].x1 = spans[i].x;
- lines[j].y1 = spans[i].y;
- lines[j].x2 = spans[i].x + spans[i].len - 1;
- lines[j].y2 = spans[i].y;
- ++j;
- } else {
- DFBSpan span = { spans[i].x, spans[i].len };
- uint c = BYTE_MUL(color, spans[i].coverage);
+ if (d->forceRasterPrimitives) {
+ RASTERFALLBACK(count, color, static_cast<bool>(false));
+ d->lock();
+ QRasterPaintEngine::drawColorSpans(spans, count, color);
+ } else {
+ color = INV_PREMUL(color);
+
+ QVarLengthArray<DFBRegion> lines(count);
+ int j = 0;
+ for (int i = 0; i < count; ++i) {
+ if (spans[i].coverage == 255) {
+ lines[j].x1 = spans[i].x;
+ lines[j].y1 = spans[i].y;
+ lines[j].x2 = spans[i].x + spans[i].len - 1;
+ lines[j].y2 = spans[i].y;
+ ++j;
+ } 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);
+ }
+ }
+ if (j > 0) {
d->surface->SetColor(d->surface,
- qRed(c), qGreen(c), qBlue(c), qAlpha(c));
- d->surface->FillSpans(d->surface, spans[i].y, &span, 1);
+ qRed(color), qGreen(color), qBlue(color),
+ qAlpha(color));
+ d->surface->DrawLines(d->surface, lines.data(), j);
}
}
- if (j > 0) {
- d->surface->SetColor(d->surface,
- qRed(color), qGreen(color), qBlue(color),
- qAlpha(color));
- d->surface->DrawLines(d->surface, lines.data(), j);
- }
}
void QDirectFBPaintEngine::drawBufferSpan(const uint *buffer, int bufsize,
@@ -1266,6 +1217,7 @@ 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);
diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.h b/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.h
index 3c2cefabdf..e79ec61700 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();
diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbpixmap.cpp b/src/plugins/gfxdrivers/directfb/qdirectfbpixmap.cpp
index 6352652afb..ea9bb3af42 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,81 +67,122 @@ QDirectFBPixmapData::~QDirectFBPixmapData()
void QDirectFBPixmapData::resize(int width, int height)
{
if (width <= 0 || height <= 0) {
- setSerialNumber(0);
+ invalidate();
return;
}
- DFBSurfaceDescription description;
- description.flags = DFBSurfaceDescriptionFlags(DSDESC_WIDTH |
- DSDESC_HEIGHT);
- description.width = width;
- description.height = height;
-
- dfbSurface = screen->createDFBSurface(&description);
- if (!dfbSurface)
- qCritical("QDirectFBPixmapData::resize(): Unable to allocate surface");
+ format = screen->pixelFormat();
+ dfbSurface = QDirectFBScreen::instance()->createDFBSurface(QSize(width, height),
+ format,
+ QDirectFBScreen::TrackSurface);
+ alpha = false;
+ forceRaster = (format == QImage::Format_RGB32);
+ if (!dfbSurface) {
+ invalidate();
+ qWarning("QDirectFBPixmapData::resize(): Unable to allocate surface");
+ return;
+ }
setSerialNumber(++global_ser_no);
}
-void QDirectFBPixmapData::fromImage(const QImage &img,
- Qt::ImageConversionFlags)
-{
- QImage image;
- if (QDirectFBScreen::getSurfacePixelFormat(img) == DSPF_UNKNOWN)
- image = img.convertToFormat(QImage::Format_ARGB32_Premultiplied);
- else
- image = img;
- DFBSurfaceDescription description;
- description = QDirectFBScreen::getSurfaceDescription(image);
+// 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;
-#ifndef QT_NO_DIRECTFB_PREALLOCATED
- IDirectFBSurface *imgSurface;
- imgSurface = screen->createDFBSurface(&description);
- if (!imgSurface) {
- qWarning("QDirectFBPixmapData::fromImage()");
- setSerialNumber(0);
- return;
+ default:
+ break;
}
-#ifndef QT_NO_DIRECTFB_PALETTE
- QDirectFBScreen::setSurfaceColorTable(imgSurface, image);
-#endif
-#endif // QT_NO_DIRECTFB_PREALLOCATED
- description.flags = DFBSurfaceDescriptionFlags(description.flags
- & ~DSDESC_PREALLOCATED);
- dfbSurface = screen->createDFBSurface(&description);
+ return false;
+}
+
+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 || ::checkForAlphaPixels(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;
}
-
-#ifndef QT_NO_DIRECTFB_PALETTE
- QDirectFBScreen::setSurfaceColorTable(dfbSurface, image);
-#endif
-
-#ifdef QT_NO_DIRECTFB_PREALLOCATED
- char *mem;
- surface->Lock(surface, 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;
- }
- surface->Unlock(surface);
-#else
- DFBResult result;
- dfbSurface->SetBlittingFlags(dfbSurface, DSBLIT_NOFX);
- result = dfbSurface->Blit(dfbSurface, imgSurface, 0, 0, 0);
- if (result != DFB_OK)
- DirectFBError("QDirectFBPixmapData::fromImage()", result);
- dfbSurface->Flip(dfbSurface, 0, DSFLIP_NONE);
- dfbSurface->ReleaseSource(dfbSurface);
- screen->releaseDFBSurface(imgSurface);
-#endif // QT_NO_DIRECTFB_PREALLOCATED
-
setSerialNumber(++global_ser_no);
}
@@ -152,43 +193,55 @@ void QDirectFBPixmapData::copy(const QPixmapData *data, const QRect &rect)
return;
}
- IDirectFBSurface *src = static_cast<const QDirectFBPixmapData*>(data)->directFbSurface();
+ IDirectFBSurface *src = static_cast<const QDirectFBPixmapData*>(data)->directFBSurface();
+ const bool hasAlpha = data->hasAlphaChannel();
+ format = (hasAlpha
+ ? QDirectFBScreen::instance()->alphaPixmapFormat()
+ : QDirectFBScreen::instance()->pixelFormat());
- DFBSurfaceDescription description;
- description.flags = DFBSurfaceDescriptionFlags(DSDESC_WIDTH |
- DSDESC_HEIGHT |
- DSDESC_PIXELFORMAT);
- description.width = rect.width();
- description.height = rect.height();
- src->GetPixelFormat(src, &description.pixelformat);
-
- dfbSurface = screen->createDFBSurface(&description);
+ dfbSurface = screen->createDFBSurface(rect.size(), format,
+ QDirectFBScreen::TrackSurface);
if (!dfbSurface) {
qWarning("QDirectFBPixmapData::copy()");
- setSerialNumber(0);
+ invalidate();
return;
}
+ forceRaster = (format == QImage::Format_RGB32);
- DFBResult result;
-#ifndef QT_NO_DIRECTFB_PALETTE
- IDirectFBPalette *palette;
- result = src->GetPalette(src, &palette);
- if (result == DFB_OK) {
- dfbSurface->SetPalette(dfbSurface, palette);
- palette->Release(palette);
+ if (hasAlpha) {
+ dfbSurface->Clear(dfbSurface, 0, 0, 0, 0);
+ dfbSurface->SetBlittingFlags(dfbSurface, DSBLIT_BLEND_ALPHACHANNEL);
+ } else {
+ dfbSurface->SetBlittingFlags(dfbSurface, DSBLIT_NOFX);
}
-#endif
-
- dfbSurface->SetBlittingFlags(dfbSurface, DSBLIT_NOFX);
const DFBRectangle blitRect = { rect.x(), rect.y(),
rect.width(), rect.height() };
- result = dfbSurface->Blit(dfbSurface, src, &blitRect, 0, 0);
- if (result != DFB_OK)
+ DFBResult result = dfbSurface->Blit(dfbSurface, src, &blitRect, 0, 0);
+ dfbSurface->ReleaseSource(dfbSurface);
+ if (result != DFB_OK) {
DirectFBError("QDirectFBPixmapData::copy()", result);
+ 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)
{
@@ -197,72 +250,40 @@ void QDirectFBPixmapData::fill(const QColor &color)
Q_ASSERT(dfbSurface);
- if (color.alpha() < 255 && !hasAlphaChannel()) {
- // convert to surface supporting alpha channel
- DFBSurfacePixelFormat format;
- dfbSurface->GetPixelFormat(dfbSurface, &format);
- switch (format) {
- case DSPF_YUY2:
- case DSPF_UYVY:
- format = DSPF_AYUV;
- break;
-#if (Q_DIRECTFB_VERSION >= 0x010100)
- case DSPF_RGB444:
- format = DSPF_ARGB4444;
- break;
- case DSPF_RGB555:
-#endif
- case DSPF_RGB18:
- format = DSPF_ARGB6666;
- break;
- default:
- format = DSPF_ARGB;
- break;
- }
+ alpha = (color.alpha() < 255);
- DFBSurfaceDescription description;
- description.flags = DFBSurfaceDescriptionFlags(DSDESC_WIDTH |
- DSDESC_HEIGHT |
- DSDESC_PIXELFORMAT);
- dfbSurface->GetSize(dfbSurface, &description.width, &description.height);
- description.pixelformat = format;
- screen->releaseDFBSurface(dfbSurface); // release old surface
-
- dfbSurface = screen->createDFBSurface(&description);
+ 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);
+ qWarning("QDirecttFBPixmapData::fill()");
+ invalidate();
return;
}
}
- dfbSurface->Clear(dfbSurface, color.red(), color.green(), color.blue(),
- color.alpha());
-}
-
-bool QDirectFBPixmapData::hasAlphaChannel() const
-{
- if (!serialNumber())
- return false;
-
- 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;
+ if (forceRaster) {
+ // in DSPF_RGB32 all dfb drawing causes the Alpha byte to be
+ // set to 0. This causes issues for the raster engine.
+ 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);
+ }
+ } else {
+ dfbSurface->Clear(dfbSurface, color.red(), color.green(), color.blue(),
+ color.alpha());
}
}
@@ -274,14 +295,12 @@ QPixmap QDirectFBPixmapData::transformed(const QTransform &transform,
{
QDirectFBPixmapData *that = const_cast<QDirectFBPixmapData*>(this);
const QImage *image = that->buffer();
- if (image) { // avoid deep copy
- const QImage transformed = image->transformed(transform, mode);
- that->unlockDirectFB();
- QDirectFBPixmapData *data = new QDirectFBPixmapData(pixelType());
- data->fromImage(transformed, Qt::AutoColor);
- return QPixmap(data);
- }
- return QPixmapData::transformed(transform, mode);
+ Q_ASSERT(image);
+ const QImage transformed = image->transformed(transform, mode);
+ that->unlockDirectFB();
+ QDirectFBPixmapData *data = new QDirectFBPixmapData(QPixmapData::PixmapType);
+ data->fromImage(transformed, Qt::AutoColor);
+ return QPixmap(data);
}
int w, h;
@@ -291,15 +310,23 @@ QPixmap QDirectFBPixmapData::transformed(const QTransform &transform,
if (size.isEmpty())
return QPixmap();
- QDirectFBPixmapData *data = new QDirectFBPixmapData(pixelType());
- data->resize(size.width(), size.height());
-
- IDirectFBSurface *dest = data->dfbSurface;
- dest->SetBlittingFlags(dest, DSBLIT_NOFX);
+ QDirectFBPixmapData *data = new QDirectFBPixmapData(QPixmapData::PixmapType);
+ 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 srcRect = { 0, 0, w, h };
const DFBRectangle destRect = { 0, 0, size.width(), size.height() };
- dest->StretchBlit(dest, dfbSurface, &srcRect, &destRect);
+ data->dfbSurface->StretchBlit(data->dfbSurface, dfbSurface, 0, &destRect);
+ data->dfbSurface->ReleaseSource(data->dfbSurface);
return QPixmap(data);
}
@@ -309,39 +336,25 @@ QImage QDirectFBPixmapData::toImage() const
if (!dfbSurface)
return QImage();
-#ifdef QT_NO_DIRECTFB_PREALLOCATED
- QDirectFBPixmapData *that = const_cast<QDirectFBPixmapData*>(this);
- const QImage *img = that->buffer();
- const QImage copied = img->copy();
- that->unlockDirectFB();
- return copied;
-#else
-
- int w, h;
- dfbSurface->GetSize(dfbSurface, &w, &h);
-
- // Always convert to ARGB32:
- QImage image(w, h, QImage::Format_ARGB32);
-
- DFBSurfaceDescription description;
- description = QDirectFBScreen::getSurfaceDescription(image);
-
- IDirectFBSurface *imgSurface = screen->createDFBSurface(&description);
- if (!imgSurface) {
- qWarning("QDirectFBPixmapData::toImage()");
- return QImage();
- }
-
- imgSurface->SetBlittingFlags(imgSurface, DSBLIT_NOFX);
- DFBResult result = imgSurface->Blit(imgSurface, dfbSurface, 0, 0, 0);
- if (result != DFB_OK) {
- DirectFBError("QDirectFBPixmapData::toImage() blit failed", result);
- 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;
}
- screen->releaseDFBSurface(imgSurface);
+#endif
- return image;
-#endif // QT_NO_DIRECTFB_PREALLOCATED
+ QDirectFBPixmapData *that = const_cast<QDirectFBPixmapData*>(this);
+ const QImage *img = that->buffer();
+ return img->copy();
}
QPaintEngine* QDirectFBPixmapData::paintEngine() const
@@ -361,3 +374,10 @@ QImage* QDirectFBPixmapData::buffer()
lockDirectFB();
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 32676f8be3..6cfafcd3f6 100644
--- a/src/plugins/gfxdrivers/directfb/qdirectfbpixmap.h
+++ b/src/plugins/gfxdrivers/directfb/qdirectfbpixmap.h
@@ -64,7 +64,7 @@ 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;
@@ -73,9 +73,12 @@ public:
// 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; }
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 0486e400b4..3e54e7f57d 100644
--- a/src/plugins/gfxdrivers/directfb/qdirectfbscreen.cpp
+++ b/src/plugins/gfxdrivers/directfb/qdirectfbscreen.cpp
@@ -81,10 +81,11 @@ public:
QDirectFBKeyboardHandler *keyboard;
#endif
bool videoonly;
+ QImage::Format alphaPixmapFormat;
};
QDirectFBScreenPrivate::QDirectFBScreenPrivate(QDirectFBScreen* screen)
- : QWSGraphicsSystem(screen), dfb(0), dfbSurface(0), flipFlags(DSFLIP_BLIT)
+ : QWSGraphicsSystem(screen), dfb(0), dfbSurface(0), flipFlags(DSFLIP_NONE)
#ifndef QT_NO_DIRECTFB_LAYER
, dfbLayer(0)
#endif
@@ -96,6 +97,7 @@ QDirectFBScreenPrivate::QDirectFBScreenPrivate(QDirectFBScreen* screen)
, keyboard(0)
#endif
, videoonly(false)
+ , alphaPixmapFormat(QImage::Format_Invalid)
{
#ifndef QT_NO_QWS_SIGNALHANDLER
QWSSignalHandler::instance()->addObject(this);
@@ -130,7 +132,90 @@ QDirectFBScreenPrivate::~QDirectFBScreenPrivate()
dfb->Release(dfb);
}
-IDirectFBSurface* QDirectFBScreen::createDFBSurface(const DFBSurfaceDescription* desc, bool track)
+
+
+// creates a preallocated surface with the same format as the image if
+// possible.
+
+IDirectFBSurface* QDirectFBScreen::createDFBSurface(const QImage &img, SurfaceCreationOptions options)
+{
+ if (img.isNull()) // assert?
+ return 0;
+ if (QDirectFBScreen::getSurfacePixelFormat(img.format()) == DSPF_UNKNOWN) {
+ QImage image = img.convertToFormat(img.hasAlphaChannel()
+ ? d_ptr->alphaPixmapFormat
+ : pixelFormat());
+ IDirectFBSurface *tmp = createDFBSurface(image, false);
+ if (!tmp) {
+ qWarning("Couldn't create surface createDFBSurface(QImage, bool)");
+ return 0;
+ }
+ IDirectFBSurface *surface = copyDFBSurface(tmp, image.format(), options);
+ tmp->Release(tmp);
+ return surface;
+ }
+
+ DFBSurfaceDescription desc = QDirectFBScreen::getSurfaceDescription(img);
+ IDirectFBSurface *surface = createDFBSurface(&desc, options);
+#ifdef QT_NO_DIRECTFB_PREALLOCATED
+ if (surface) {
+ int 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);
+ }
+ }
+#endif
+#ifndef QT_NO_DIRECTFB_PALETTE
+ if (img.numColors() != 0 && surface)
+ QDirectFBScreen::setSurfaceColorTable(surface, img);
+#endif
+ return surface;
+}
+
+IDirectFBSurface *QDirectFBScreen::copyDFBSurface(IDirectFBSurface *src,
+ QImage::Format format,
+ SurfaceCreationOptions options)
+{
+ Q_ASSERT(src);
+ QSize size;
+ src->GetSize(src, &size.rwidth(), &size.rheight());
+ IDirectFBSurface *surface = createDFBSurface(size, format, options);
+ 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);
+ return surface;
+}
+
+IDirectFBSurface *QDirectFBScreen::createDFBSurface(const QSize &size,
+ QImage::Format format,
+ SurfaceCreationOptions options)
+{
+ DFBSurfaceDescription desc;
+ 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);
+}
+
+
+IDirectFBSurface* QDirectFBScreen::createDFBSurface(const DFBSurfaceDescription *desc, SurfaceCreationOptions options)
{
DFBResult result;
IDirectFBSurface* newSurface = 0;
@@ -143,22 +228,43 @@ IDirectFBSurface* QDirectFBScreen::createDFBSurface(const DFBSurfaceDescription*
if (d_ptr->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);
+ if (!(voDesc.flags & DSDESC_CAPS)) {
+ voDesc.caps = DSCAPS_VIDEOONLY;
+ voDesc.flags = DFBSurfaceDescriptionFlags(voDesc.flags | DSDESC_CAPS);
+ } else {
+ voDesc.caps = DFBSurfaceCapabilities(voDesc.caps | DSCAPS_VIDEOONLY);
+ }
result = d_ptr->dfb->CreateSurface(d_ptr->dfb, &voDesc, &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));
+ }
}
if (!newSurface)
result = d_ptr->dfb->CreateSurface(d_ptr->dfb, desc, &newSurface);
if (result != DFB_OK) {
- DirectFBError("QDirectFBScreen::createDFBSurface", result);
+ 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,
+ DirectFBErrorString(result));
return 0;
}
Q_ASSERT(newSurface);
- if (track) {
+ if (options & TrackSurface) {
d_ptr->allocatedSurfaces.insert(newSurface);
//qDebug("Created a new DirectFB surface at %p. New count = %d",
@@ -168,8 +274,69 @@ IDirectFBSurface* QDirectFBScreen::createDFBSurface(const DFBSurfaceDescription*
return newSurface;
}
-void QDirectFBScreen::releaseDFBSurface(IDirectFBSurface* surface)
+IDirectFBSurface *QDirectFBScreen::copyToDFBSurface(const QImage &img,
+ QImage::Format pixmapFormat,
+ SurfaceCreationOptions options)
+{
+ QImage image = img;
+ if (QDirectFBScreen::getSurfacePixelFormat(image.format()) == DSPF_UNKNOWN
+#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(image.size(), pixmapFormat, options);
+ if (!dfbSurface) {
+ qWarning("QDirectFBPixmapData::fromImage() Couldn't create surface");
+ return 0;
+ }
+
+#ifndef QT_NO_DIRECTFB_PREALLOCATED
+ IDirectFBSurface *imgSurface = createDFBSurface(image, DontTrackSurface);
+ if (!imgSurface) {
+ qWarning("QDirectFBPixmapData::fromImage()");
+ QDirectFBScreen::releaseDFBSurface(dfbSurface);
+ return 0;
+ }
+
+ Q_ASSERT(imgSurface);
+ 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);
+ dfbSurface->ReleaseSource(dfbSurface);
+ imgSurface->Release(imgSurface);
+#else // QT_NO_DIRECTFB_PREALLOCATED
+ Q_ASSERT(image.format() == pixmapFormat);
+ int 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);
+ }
+#endif
+ return dfbSurface;
+}
+
+void QDirectFBScreen::releaseDFBSurface(IDirectFBSurface *surface)
{
+ Q_ASSERT(QDirectFBScreen::instance());
Q_ASSERT(surface);
surface->Release(surface);
if (!d_ptr->allocatedSurfaces.remove(surface))
@@ -200,9 +367,9 @@ IDirectFBDisplayLayer* QDirectFBScreen::dfbDisplayLayer()
}
#endif
-DFBSurfacePixelFormat QDirectFBScreen::getSurfacePixelFormat(const QImage &image)
+DFBSurfacePixelFormat QDirectFBScreen::getSurfacePixelFormat(QImage::Format format)
{
- switch (image.format()) {
+ switch (format) {
#ifndef QT_NO_DIRECTFB_PALETTE
case QImage::Format_Indexed8:
return DSPF_LUT8;
@@ -233,8 +400,11 @@ DFBSurfacePixelFormat QDirectFBScreen::getSurfacePixelFormat(const QImage &image
};
}
-QImage::Format QDirectFBScreen::getImageFormat(DFBSurfacePixelFormat format)
+QImage::Format QDirectFBScreen::getImageFormat(IDirectFBSurface *surface)
{
+ DFBSurfacePixelFormat format;
+ surface->GetPixelFormat(surface, &format);
+
switch (format) {
case DSPF_LUT8:
return QImage::Format_Indexed8;
@@ -257,8 +427,14 @@ QImage::Format QDirectFBScreen::getImageFormat(DFBSurfacePixelFormat format)
return QImage::Format_RGB666;
case DSPF_RGB32:
return QImage::Format_RGB32;
- case DSPF_ARGB:
- return QImage::Format_ARGB32_Premultiplied;
+ case DSPF_ARGB: {
+ DFBSurfaceCapabilities caps;
+ const DFBResult result = surface->GetCapabilities(surface, &caps);
+ Q_ASSERT(result == DFB_OK);
+ Q_UNUSED(result);
+ return (caps & DSCAPS_PREMULTIPLIED
+ ? QImage::Format_ARGB32_Premultiplied
+ : QImage::Format_ARGB32); }
default:
break;
}
@@ -268,38 +444,32 @@ QImage::Format QDirectFBScreen::getImageFormat(DFBSurfacePixelFormat format)
DFBSurfaceDescription QDirectFBScreen::getSurfaceDescription(const QImage &image)
{
DFBSurfaceDescription description;
- DFBSurfacePixelFormat format = getSurfacePixelFormat(image);
+
+ const DFBSurfacePixelFormat format = getSurfacePixelFormat(image.format());
if (format == DSPF_UNKNOWN || image.isNull()) {
description.flags = DFBSurfaceDescriptionFlags(0);
return description;
}
- description.flags = DFBSurfaceDescriptionFlags(DSDESC_CAPS
- | DSDESC_WIDTH
+ description.flags = DFBSurfaceDescriptionFlags(DSDESC_WIDTH
| DSDESC_HEIGHT
- | DSDESC_PIXELFORMAT
- | DSDESC_PREALLOCATED);
-
- description.caps = DSCAPS_NONE;
+#ifndef QT_NO_DIRECTFB_PREALLOCATED
+ | DSDESC_PREALLOCATED
+#endif
+ | DSDESC_PIXELFORMAT);
+ QDirectFBScreen::initSurfaceDescriptionPixelFormat(&description, image.format());
description.width = image.width();
description.height = image.height();
- description.pixelformat = format;
+#ifndef QT_NO_DIRECTFB_PREALLOCATED
description.preallocated[0].data = (void*)(image.bits());
description.preallocated[0].pitch = image.bytesPerLine();
description.preallocated[1].data = 0;
description.preallocated[1].pitch = 0;
+#endif
- switch (image.format()) {
- case QImage::Format_ARGB32_Premultiplied:
- case QImage::Format_ARGB8565_Premultiplied:
- case QImage::Format_ARGB6666_Premultiplied:
- case QImage::Format_ARGB8555_Premultiplied:
- case QImage::Format_ARGB4444_Premultiplied:
+ if (QDirectFBScreen::isPremultiplied(image.format()))
description.caps = DSCAPS_PREMULTIPLIED;
- default:
- break;
- }
return description;
}
@@ -337,7 +507,7 @@ void QDirectFBScreen::setSurfaceColorTable(IDirectFBSurface *surface,
if (numColors == 0)
return;
- QVarLengthArray<DFBColor> colors(numColors);
+ QVarLengthArray<DFBColor, 256> colors(numColors);
for (int i = 0; i < numColors; ++i) {
QRgb c = image.color(i);
colors[i].a = qAlpha(c);
@@ -362,50 +532,6 @@ void QDirectFBScreen::setSurfaceColorTable(IDirectFBSurface *surface,
palette->Release(palette);
}
-void QDirectFBScreen::setImageColorTable(QImage *image, IDirectFBSurface *surface)
-{
- if (!image || !surface || image->depth() > 8)
- return;
-
- IDirectFBPalette *palette = 0;
- unsigned int numColors = 0;
- DFBResult result;
- do {
- result = surface->GetPalette(surface, &palette);
- if (result != DFB_OK) {
- DirectFBError("QDirectFBScreen::setImageColorTable GetPalette", result);
- break;
- }
-
- result = palette->GetSize(palette, &numColors);
- if (result != DFB_OK) {
- DirectFBError("QDirectFBScreen::setImageColorTable GetPalette", result);
- break;
- }
-
- if (numColors == 0)
- break;
-
- QVarLengthArray<DFBColor> dfbColors(numColors);
- result = palette->GetEntries(palette, dfbColors.data(), numColors, 0);
- if (result != DFB_OK) {
- DirectFBError("QDirectFBScreen::setImageColorTable GetPalette", result);
- break;
- }
-
- QVector<QRgb> qtColors(numColors);
- for (unsigned int i=0; i<numColors; ++i) {
- const DFBColor &col = dfbColors[i];
- qtColors[i] = qRgba(col.r, col.g, col.b, col.a);
- }
- image->setColorTable(qtColors);
-
- } while (0);
-
- if (palette)
- palette->Release(palette);
-}
-
#endif // QT_NO_DIRECTFB_PALETTE
#if !defined(QT_NO_DIRECTFB_LAYER) && !defined(QT_NO_QWS_CURSOR)
@@ -505,18 +631,10 @@ void QDirectFBScreenCursor::set(const QImage &image, int hotx, int hoty)
} else if (!image.isNull() && implicitHide) {
show();
}
+ cursor = image.convertToFormat(QDirectFBScreen::instance()->alphaPixmapFormat());
if (!image.isNull()) {
-#ifdef QT_NO_DIRECTFB_PALETTE
- if (image.numColors() > 0)
- cursor = image.convertToFormat(QImage::Format_ARGB32_Premultiplied);
- else
-#endif
- if (image.format() == QImage::Format_Indexed8) {
- cursor = image.convertToFormat(QImage::Format_ARGB32_Premultiplied);
- } else {
- cursor = image;
- }
+ Q_ASSERT(cursor.numColors() == 0);
size = cursor.size();
hotspot = QPoint(hotx, hoty);
@@ -524,15 +642,12 @@ void QDirectFBScreenCursor::set(const QImage &image, int hotx, int hoty)
description = QDirectFBScreen::getSurfaceDescription(cursor);
IDirectFBSurface *surface;
- surface = QDirectFBScreen::instance()->createDFBSurface(&description);
+ surface = QDirectFBScreen::instance()->createDFBSurface(&description,
+ QDirectFBScreen::TrackSurface);
if (!surface) {
qWarning("QDirectFBScreenCursor::set: Unable to create surface");
return;
}
-#ifndef QT_NO_DIRECTFB_PALETTE
- QDirectFBScreen::setSurfaceColorTable(surface, cursor);
-#endif
-
DFBResult result = layer->SetCooperativeLevel(layer, DLSCL_ADMINISTRATIVE);
if (result != DFB_OK) {
DirectFBError("QDirectFBScreenCursor::set: "
@@ -611,7 +726,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(','),
@@ -630,6 +745,8 @@ void QDirectFBScreenPrivate::setFlipFlags(const QStringList &args)
qWarning("QDirectFBScreen: Unknown flip argument: %s",
qPrintable(flip));
}
+ } else {
+ flipFlags = DFBSurfaceFlipFlags(DSFLIP_BLIT);
}
}
@@ -659,6 +776,18 @@ static void printDirectFBInfo(IDirectFB *fb)
dev.blitting_flags, dev.drawing_flags, dev.video_memory);
}
+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)
{
DFBResult result = DFB_OK;
@@ -680,7 +809,7 @@ bool QDirectFBScreen::connect(const QString &displaySpec)
}
const QStringList displayArgs = displaySpec.split(QLatin1Char(':'),
- QString::SkipEmptyParts);
+ QString::SkipEmptyParts);
d_ptr->setFlipFlags(displayArgs);
@@ -704,23 +833,57 @@ bool QDirectFBScreen::connect(const QString &displaySpec)
DFBSurfaceDescription description;
description.flags = DFBSurfaceDescriptionFlags(DSDESC_CAPS);
- description.caps = DFBSurfaceCapabilities(DSCAPS_PRIMARY
- | DSCAPS_DOUBLE
- | DSCAPS_STATIC_ALLOC);
- if (!(d_ptr->flipFlags & DSFLIP_BLIT)) {
- description.caps = DFBSurfaceCapabilities(description.caps
- | DSCAPS_DOUBLE
- | DSCAPS_TRIPLE);
+ 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;
+ if (displayArgs.contains(QLatin1String("static_alloc")))
+ caps |= DSCAPS_STATIC_ALLOC;
+
+ 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, false);
+ d_ptr->dfbSurface = createDFBSurface(&description, DontTrackSurface);
if (!d_ptr->dfbSurface) {
DirectFBError("QDirectFBScreen: error creating primary surface",
result);
return false;
}
+
+ // 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);
+ switch (d_ptr->alphaPixmapFormat) {
+ case QImage::Format_RGB666:
+ d_ptr->alphaPixmapFormat = QImage::Format_ARGB6666_Premultiplied;
+ break;
+ case QImage::Format_RGB444:
+ d_ptr->alphaPixmapFormat = QImage::Format_ARGB4444_Premultiplied;
+ break;
+ case QImage::NImageFormats:
+ case QImage::Format_Invalid:
+ case QImage::Format_Mono:
+ case QImage::Format_MonoLSB:
+ case QImage::Format_Indexed8:
+ case QImage::Format_RGB32:
+ case QImage::Format_RGB888:
+ case QImage::Format_RGB16:
+ case QImage::Format_RGB555:
+ d_ptr->alphaPixmapFormat = QImage::Format_ARGB32_Premultiplied;
+ break;
+ case QImage::Format_ARGB32:
+ case QImage::Format_ARGB32_Premultiplied:
+ case QImage::Format_ARGB4444_Premultiplied:
+ case QImage::Format_ARGB8555_Premultiplied:
+ case QImage::Format_ARGB8565_Premultiplied:
+ case QImage::Format_ARGB6666_Premultiplied:
+ // works already
+ break;
+ }
d_ptr->dfbSurface->GetSize(d_ptr->dfbSurface, &w, &h);
data = 0;
@@ -736,21 +899,11 @@ bool QDirectFBScreen::connect(const QString &displaySpec)
else
DirectFBError("QDirectFBScreen: error getting surface format", result);
- setPixelFormat(getImageFormat(format));
+ 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);
@@ -803,16 +956,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
@@ -858,19 +1010,21 @@ void QDirectFBScreen::blank(bool on)
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 QDirectFBSurface(d_ptr->flipFlags, const_cast<QDirectFBScreen*>(this), widget);
+ } else {
return QScreen::createSurface(widget);
+ }
#else
- return new QDirectFBSurface(const_cast<QDirectFBScreen*>(this), widget);
+ return new QDirectFBSurface(d_ptr->flipFlags, const_cast<QDirectFBScreen*>(this), widget);
#endif
}
QWSWindowSurface* QDirectFBScreen::createSurface(const QString &key) const
{
- if (key == QLatin1String("directfb"))
- return new QDirectFBSurface(const_cast<QDirectFBScreen*>(this));
+ if (key == QLatin1String("directfb")) {
+ return new QDirectFBSurface(d_ptr->flipFlags, const_cast<QDirectFBScreen*>(this));
+ }
return QScreen::createSurface(key);
}
@@ -903,7 +1057,7 @@ void QDirectFBScreen::compose(const QRegion &region)
if (surface->key() == QLatin1String("directfb")) {
QDirectFBSurface *s = static_cast<QDirectFBSurface*>(surface);
- blit(s->directFbSurface(), offset, r);
+ blit(s->directFBSurface(), offset, r);
} else {
blit(surface->image(), offset, r);
}
@@ -952,11 +1106,12 @@ void QDirectFBScreen::compose(const QRegion &region)
if (surface->key() == QLatin1String("directfb")) {
QDirectFBSurface *s = static_cast<QDirectFBSurface*>(surface);
- blit(s->directFbSurface(), offset, r);
+ 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
@@ -998,21 +1153,14 @@ void QDirectFBScreen::exposeRegion(QRegion r, int changing)
void QDirectFBScreen::blit(const QImage &img, const QPoint &topLeft,
const QRegion &reg)
{
- IDirectFBSurface *src = 0;
- DFBSurfaceDescription description = getSurfaceDescription(img);
-
- src = createDFBSurface(&description);
+ IDirectFBSurface *src = createDFBSurface(img, QDirectFBScreen::DontTrackSurface);
if (!src) {
qWarning("QDirectFBScreen::blit(): Error creating surface");
return;
}
-#ifndef QT_NO_DIRECTFB_PALETTE
- setSurfaceColorTable(d_ptr->dfbSurface, img);
-#endif
-
blit(src, topLeft, reg);
-
- releaseDFBSurface(src);
+ d_ptr->dfbSurface->ReleaseSource(d_ptr->dfbSurface);
+ src->Release(src);
}
void QDirectFBScreen::blit(IDirectFBSurface *src, const QPoint &topLeft,
@@ -1043,25 +1191,68 @@ 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;
+
+ 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
+{
+ return d_ptr->alphaPixmapFormat;
+}
+
+bool QDirectFBScreen::initSurfaceDescriptionPixelFormat(DFBSurfaceDescription *description,
+ QImage::Format format)
+{
+ const DFBSurfacePixelFormat pixelformat = QDirectFBScreen::getSurfacePixelFormat(format);
+ if (pixelformat == DSPF_UNKNOWN)
+ return false;
+ description->flags = DFBSurfaceDescriptionFlags(description->flags | DSDESC_PIXELFORMAT);
+ description->pixelformat = pixelformat;
+ if (QDirectFBScreen::isPremultiplied(format)) {
+ if (!(description->flags & DSDESC_CAPS)) {
+ description->caps = DSCAPS_PREMULTIPLIED;
+ description->flags = DFBSurfaceDescriptionFlags(description->flags | DSDESC_CAPS);
+ } else {
+ description->caps = DFBSurfaceCapabilities(description->caps | DSCAPS_PREMULTIPLIED);
+ }
+ }
+ return true;
+}
+
+uchar *QDirectFBScreen::lockSurface(IDirectFBSurface *surface, DFBSurfaceLockFlags flags, int *bpl)
+{
+ void *mem;
+ const DFBResult result = surface->Lock(surface, flags, static_cast<void**>(&mem), bpl);
+ if (result != DFB_OK) {
+ DirectFBError("QDirectFBPixmapData::lockSurface()", result);
}
- 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());
+ return reinterpret_cast<uchar*>(mem);
}
diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbscreen.h b/src/plugins/gfxdrivers/directfb/qdirectfbscreen.h
index e9a2f63c6f..8dd38dc6a4 100644
--- a/src/plugins/gfxdrivers/directfb/qdirectfbscreen.h
+++ b/src/plugins/gfxdrivers/directfb/qdirectfbscreen.h
@@ -88,25 +88,47 @@ public:
#endif
// Track surface creation/release so we can release all on exit
- IDirectFBSurface* createDFBSurface(const DFBSurfaceDescription* desc, bool track = true);
+ enum SurfaceCreationOption {
+ DontTrackSurface = 0,
+ 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,
+ QImage::Format format,
+ SurfaceCreationOptions options);
+ IDirectFBSurface *copyDFBSurface(IDirectFBSurface *src,
+ QImage::Format format,
+ SurfaceCreationOptions options);
+ IDirectFBSurface *copyToDFBSurface(const QImage &image,
+ QImage::Format format,
+ SurfaceCreationOptions options);
void releaseDFBSurface(IDirectFBSurface* surface);
+
bool preferVideoOnly() const;
static int depth(DFBSurfacePixelFormat format);
- static DFBSurfacePixelFormat getSurfacePixelFormat(const QImage &image);
+ static DFBSurfacePixelFormat getSurfacePixelFormat(QImage::Format format);
static DFBSurfaceDescription getSurfaceDescription(const QImage &image);
static DFBSurfaceDescription getSurfaceDescription(const uint *buffer,
int length);
- static QImage::Format getImageFormat(DFBSurfacePixelFormat format);
+ 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);
+ QImage::Format alphaPixmapFormat() const;
#ifndef QT_NO_DIRECTFB_PALETTE
static void setSurfaceColorTable(IDirectFBSurface *surface,
const QImage &image);
- static void setImageColorTable(QImage *image, IDirectFBSurface *surface);
#endif
+ static uchar *lockSurface(IDirectFBSurface *surface, DFBSurfaceLockFlags flags, int *bpl = 0);
+
private:
void compose(const QRegion &r);
void blit(IDirectFBSurface *src, const QPoint &topLeft,
@@ -115,6 +137,8 @@ private:
QDirectFBScreenPrivate *d_ptr;
};
+Q_DECLARE_OPERATORS_FOR_FLAGS(QDirectFBScreen::SurfaceCreationOptions);
+
inline bool QDirectFBScreen::isPremultiplied(QImage::Format format)
{
switch (format) {
@@ -130,6 +154,26 @@ 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;
+ }
+}
QT_END_HEADER
diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbsurface.cpp b/src/plugins/gfxdrivers/directfb/qdirectfbsurface.cpp
index ab1d0f1317..8ed308cfa0 100644
--- a/src/plugins/gfxdrivers/directfb/qdirectfbsurface.cpp
+++ b/src/plugins/gfxdrivers/directfb/qdirectfbsurface.cpp
@@ -50,28 +50,38 @@
//#define QT_DIRECTFB_DEBUG_SURFACES 1
-QDirectFBSurface::QDirectFBSurface(QDirectFBScreen* scr)
+QDirectFBSurface::QDirectFBSurface(DFBSurfaceFlipFlags flip, QDirectFBScreen* scr)
: QDirectFBPaintDevice(scr)
#ifndef QT_NO_DIRECTFB_WM
, dfbWindow(0)
#endif
, engine(0)
+ , flipFlags(flip)
{
setSurfaceFlags(Opaque | Buffered);
+#ifdef QT_DIRECTFB_TIMING
+ frames = 0;
+ timer.start();
+#endif
}
-QDirectFBSurface::QDirectFBSurface(QDirectFBScreen* scr, QWidget *widget)
+QDirectFBSurface::QDirectFBSurface(DFBSurfaceFlipFlags flip, QDirectFBScreen *scr, QWidget *widget)
: QWSWindowSurface(widget), QDirectFBPaintDevice(scr)
#ifndef QT_NO_DIRECTFB_WM
, dfbWindow(0)
#endif
, engine(0)
+ , flipFlags(flip)
{
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()
@@ -86,14 +96,26 @@ bool QDirectFBSurface::isValid() const
#ifndef QT_NO_DIRECTFB_WM
void QDirectFBSurface::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->preferVideoOnly())
+ 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,6 +125,8 @@ void QDirectFBSurface::createWindow()
dfbSurface->Release(dfbSurface);
dfbWindow->GetSurface(dfbWindow, &dfbSurface);
+ forceRaster = (format == QImage::Format_RGB32);
+#endif
}
#endif // QT_NO_DIRECTFB_WM
@@ -115,26 +139,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()));
- IDirectFBSurface *s = screen->dfbSurface();
- if (onscreen && s) {
- if (dfbSurface)
+ if (onscreen) {
+ IDirectFBSurface *primarySurface = screen->dfbSurface();
+ Q_ASSERT(primarySurface);
+ if (dfbSurface && dfbSurface != primarySurface)
dfbSurface->Release(dfbSurface);
- DFBRectangle r = { rect.x(), rect.y(),
- rect.width(), rect.height() };
- result = s->GetSubSurface(s, &r, &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)
@@ -152,9 +182,10 @@ void QDirectFBSurface::setGeometry(const QRect &rect, const QRegion &mask)
DSDESC_PIXELFORMAT);
description.width = rect.width();
description.height = rect.height();
- description.pixelformat = DSPF_ARGB;
-
- dfbSurface = QDirectFBScreen::instance()->createDFBSurface(&description, false);
+ QDirectFBScreen::initSurfaceDescriptionPixelFormat(&description,
+ screen->pixelFormat());
+ dfbSurface = screen->createDFBSurface(&description, false);
+ forceRaster = (dfbSurface && QDirectFBScreen::getImageFormat(dfbSurface) == QImage::Format_RGB32);
} else {
Q_ASSERT(dfbSurface);
}
@@ -219,7 +250,7 @@ void QDirectFBSurface::setPermanentState(const QByteArray &state)
bool QDirectFBSurface::scroll(const QRegion &region, int dx, int dy)
{
- if (!dfbSurface)
+ if (!dfbSurface || !(flipFlags & DSFLIP_BLIT))
return false;
const QVector<QRect> rects = region.rects();
@@ -241,7 +272,7 @@ 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;
}
@@ -306,10 +337,15 @@ inline bool isWidgetOpaque(const QWidget *w)
return false;
}
-
void QDirectFBSurface::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
@@ -330,18 +366,41 @@ void QDirectFBSurface::flush(QWidget *widget, const QRegion &region,
if (winOpacity != opacity)
dfbWindow->SetOpacity(dfbWindow, winOpacity);
}
+ if (!(flipFlags & DSFLIP_BLIT)) {
+ dfbSurface->Flip(dfbSurface, 0, flipFlags);
+ } else {
+ if (region.numRects() > 1) {
+ const QVector<QRect> rects = region.rects();
+ DFBSurfaceFlipFlags tmpFlags = flipFlags;
+ if (flipFlags & DSFLIP_WAIT)
+ tmpFlags = 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()
+ ? tmpFlags
+ : 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, flipFlags);
+ }
+ }
#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
- const QRect br = region.boundingRect().translated(painterOffset());
- const DFBRegion r = { br.x(), br.y(),
- br.x() + br.width(), br.y() + br.height() };
-
- dfbSurface->Flip(dfbSurface, &r, DSFLIP_NONE);
+#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
}
diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbsurface.h b/src/plugins/gfxdrivers/directfb/qdirectfbsurface.h
index a9cdb7d263..ab4145d9ff 100644
--- a/src/plugins/gfxdrivers/directfb/qdirectfbsurface.h
+++ b/src/plugins/gfxdrivers/directfb/qdirectfbsurface.h
@@ -50,6 +50,10 @@
#include <private/qwindowsurface_qws_p.h>
#include <directfb.h>
+#ifdef QT_DIRECTFB_TIMING
+#include <qdatetime.h>
+#endif
+
QT_BEGIN_HEADER
QT_MODULE(Gui)
@@ -57,8 +61,8 @@ QT_MODULE(Gui)
class QDirectFBSurface: public QWSWindowSurface, public QDirectFBPaintDevice
{
public:
- QDirectFBSurface(QDirectFBScreen* scr);
- QDirectFBSurface(QDirectFBScreen* scr, QWidget *widget);
+ QDirectFBSurface(DFBSurfaceFlipFlags flipFlags, QDirectFBScreen* scr);
+ QDirectFBSurface(DFBSurfaceFlipFlags flipFlags, QDirectFBScreen* scr, QWidget *widget);
~QDirectFBSurface();
bool isValid() const;
@@ -95,6 +99,11 @@ private:
bool onscreen;
QList<QImage*> bufferImages;
+ DFBSurfaceFlipFlags flipFlags;
+#ifdef QT_DIRECTFB_TIMING
+ int frames;
+ QTime timer;
+#endif
};
QT_END_HEADER
diff --git a/src/plugins/gfxdrivers/powervr/README b/src/plugins/gfxdrivers/powervr/README
index b830066b8d..ec02efbcf6 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
diff --git a/src/plugins/gfxdrivers/powervr/pvreglscreen/pvreglscreen.cpp b/src/plugins/gfxdrivers/powervr/pvreglscreen/pvreglscreen.cpp
index 3a94851bb4..b0ffbf18c3 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/iconengines/svgiconengine/qsvgiconengine.cpp b/src/plugins/iconengines/svgiconengine/qsvgiconengine.cpp
index 7fdf81f3fc..c7249d337d 100644
--- a/src/plugins/iconengines/svgiconengine/qsvgiconengine.cpp
+++ b/src/plugins/iconengines/svgiconengine/qsvgiconengine.cpp
@@ -121,7 +121,7 @@ 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()) {
@@ -158,9 +158,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 +180,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 c60d6abb6b..d772fae4e9 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 fb7b88dbbb..5ec63fb244 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 4874b6d940..1ec0cfc6c2 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/text/q3richtext.cpp b/src/qt3support/text/q3richtext.cpp
index c058e378b7..e50800150f 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/script/qscriptengine.cpp b/src/script/qscriptengine.cpp
index d4e1923f23..d8908ed899 100644
--- a/src/script/qscriptengine.cpp
+++ b/src/script/qscriptengine.cpp
@@ -1169,7 +1169,8 @@ bool QScriptEngine::convert(const QScriptValue &value, int type, void *ptr)
bool QScriptEngine::convertV2(const QScriptValue &value, int type, void *ptr)
{
QScriptValueImpl impl = QScriptValuePrivate::valueOf(value);
- return QScriptEnginePrivate::convert(impl, type, ptr, /*engine=*/0);
+ QScriptEnginePrivate *eng_p = QScriptEnginePrivate::get(value.engine());
+ return QScriptEnginePrivate::convert(impl, type, ptr, eng_p);
}
/*!
diff --git a/src/scripttools/debugging/qscriptbreakpointswidget.cpp b/src/scripttools/debugging/qscriptbreakpointswidget.cpp
index aea1fe7231..efb3047035 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 3767505401..119b96a7e0 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 5a356aef62..ce43572a59 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 fcba0335dd..0ea9c994a0 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 556b17b11e..28ec46ad31 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 cf6fd1af03..313b1c02de 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 24a384799f..3c29130377 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 e36386d5a0..1be8c5ff90 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 0018b9214d..f9235088b4 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 a4919be665..60fe48de87 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 20350f6f56..fa30d846b9 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 2bc0a40ce6..7c2a72c3c9 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 d5e127f4af..a4853f0651 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 69383f750b..11d0041972 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 64f13b5def..0705722b8a 100644
--- a/src/sql/drivers/ibase/qsql_ibase.cpp
+++ b/src/sql/drivers/ibase/qsql_ibase.cpp
@@ -1552,12 +1552,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 +1589,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 9b57f3c6a7..a84e840efe 100644
--- a/src/sql/drivers/mysql/qsql_mysql.cpp
+++ b/src/sql/drivers/mysql/qsql_mysql.cpp
@@ -1314,7 +1314,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 +1329,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 +1447,15 @@ 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
diff --git a/src/sql/drivers/mysql/qsql_mysql.h b/src/sql/drivers/mysql/qsql_mysql.h
index 97aa346025..31d9dcf731 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 7017d6ca47..d63c4824cb 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 f6710db564..2a83fe6a93 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
@@ -88,6 +89,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 +121,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 +355,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 +560,29 @@ 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];
+ SQLUSMALLINT casing;
+ 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 +733,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 +1801,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 +2175,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 +2293,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 +2432,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 4148007694..51f53eaff0 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 e33dd95487..16d19f1867 100644
--- a/src/sql/drivers/psql/qsql_psql.cpp
+++ b/src/sql/drivers/psql/qsql_psql.cpp
@@ -351,8 +351,9 @@ QVariant QPSQLResult::data(int i)
#ifndef QT_NO_DATESTRING
if (str.isEmpty())
return QVariant(QTime());
- if (str.at(str.length() - 3) == QLatin1Char('+'))
+ if (str.at(str.length() - 3) == QLatin1Char('+') || str.at(str.length() - 3) == QLatin1Char('-'))
// strip the timezone
+ // TODO: fix this when timestamp support comes into QDateTime
return QVariant(QTime::fromString(str.left(str.length() - 3), Qt::ISODate));
return QVariant(QTime::fromString(str, Qt::ISODate));
#else
@@ -365,7 +366,8 @@ QVariant QPSQLResult::data(int i)
if (dtval.length() < 10)
return QVariant(QDateTime());
// remove the timezone
- if (dtval.at(dtval.length() - 3) == QLatin1Char('+'))
+ // TODO: fix this when timestamp support comes into QDateTime
+ if (dtval.at(dtval.length() - 3) == QLatin1Char('+') || dtval.at(dtval.length() - 3) == QLatin1Char('-'))
dtval.chop(3);
// milliseconds are sometimes returned with 2 digits only
if (dtval.at(dtval.length() - 3).isPunct())
@@ -892,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 "
@@ -924,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");
@@ -932,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);
@@ -955,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:
@@ -999,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 "
@@ -1008,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 605c4e8cd3..f732077a93 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 ff73caaf66..d0c6e18a54 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 46e4a0be45..515f0de5d1 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/qsqldriver.cpp b/src/sql/kernel/qsqldriver.cpp
index ddebe457c5..40bc0dfcf9 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 e763719ef4..8ac1471db1 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/models/qsqlrelationaltablemodel.cpp b/src/sql/models/qsqlrelationaltablemodel.cpp
index 935466bd4e..12eae84f24 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 2fb9b0fc42..c2442c57cf 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 0ee66ce9a1..2a5595f2b2 100644
--- a/src/src.pro
+++ b/src/src.pro
@@ -18,7 +18,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/qsvggenerator.cpp b/src/svg/qsvggenerator.cpp
index f7b2ae8a4b..e822da5f35 100644
--- a/src/svg/qsvggenerator.cpp
+++ b/src/svg/qsvggenerator.cpp
@@ -516,7 +516,34 @@ public:
\brief The QSvgGenerator class provides a paint device that is used to create SVG drawings.
\reentrant
- \sa QSvgRenderer, QSvgWidget
+ This paint device represents a Scalable Vector Graphics (SVG) drawing. Like QPrinter, it is
+ designed as a write-only device that generates output in a specific format.
+
+ To write an SVG file, you first need to configure the output by setting the \l fileName
+ or \l outputDevice properties. It is usually necessary to specify the size of the drawing
+ by setting the \l size property, and in some cases where the drawing will be included in
+ another, the \l viewBox property also needs to be set.
+
+ \snippet examples/painting/svggenerator/window.cpp configure SVG generator
+
+ Other meta-data can be specified by setting the \a title, \a description and \a resolution
+ properties.
+
+ As with other QPaintDevice subclasses, a QPainter object is used to paint onto an instance
+ of this class:
+
+ \snippet examples/painting/svggenerator/window.cpp begin painting
+ \dots
+ \snippet examples/painting/svggenerator/window.cpp end painting
+
+ Painting is performed in the same way as for any other paint device. However,
+ it is necessary to use the QPainter::begin() and \l{QPainter::}{end()} to
+ explicitly begin and end painting on the device.
+
+ The \l{SVG Generator Example} shows how the same painting commands can be used
+ for painting a widget and writing an SVG file.
+
+ \sa QSvgRenderer, QSvgWidget, {About SVG}
*/
/*!
diff --git a/src/svg/qsvghandler.cpp b/src/svg/qsvghandler.cpp
index 56dab5ffcf..433a3adc9b 100644
--- a/src/svg/qsvghandler.cpp
+++ b/src/svg/qsvghandler.cpp
@@ -2587,10 +2587,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 +2651,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 +2784,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 +2929,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 +2947,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 389f68f144..bd0804ca7c 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 ff4058b265..058ba3583d 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 a4200ca704..ac8595fbb2 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 d86626e846..27ba6da843 100644
--- a/src/testlib/qtestcase.cpp
+++ b/src/testlib/qtestcase.cpp
@@ -1486,7 +1486,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 ed060061e6..3d702ddf30 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->elementNormalOff()->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->elementNormalOff()->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->elementNormalOff()->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->elementNormalOff()->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->elementNormalOff()->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->elementNormalOff()->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->elementNormalOff()->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/tests/arthur/common/paintcommands.cpp b/tests/arthur/common/paintcommands.cpp
index 5de4a6b487..6c3d26be0a 100644
--- a/tests/arthur/common/paintcommands.cpp
+++ b/tests/arthur/common/paintcommands.cpp
@@ -1887,7 +1887,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));
@@ -1900,13 +1899,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));
@@ -1919,13 +1916,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));
@@ -1937,13 +1932,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));
@@ -1956,7 +1949,6 @@ void PaintCommands::command_brushShear(QRegExp re)
brush_matrix.shear(sx, sy);
new_brush.setTransform(brush_matrix);
m_painter->setBrush(new_brush);
-#endif
}
/***************************************************************************************************/
@@ -2327,10 +2319,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);
}
@@ -2376,10 +2366,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);
}
@@ -2401,10 +2389,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);
}
@@ -2449,7 +2435,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));
@@ -2462,9 +2447,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 5f0eab3a50..3288f527b5 100644
--- a/tests/arthur/common/qengines.cpp
+++ b/tests/arthur/common/qengines.cpp
@@ -246,11 +246,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/primitives.qps b/tests/arthur/data/qps/primitives.qps
index dcb651696d..c4cc92cf5d 100644
--- a/tests/arthur/data/qps/primitives.qps
+++ b/tests/arthur/data/qps/primitives.qps
@@ -177,3 +177,22 @@ repeat_block drawShapes
setPen black 4
translate 75 0
repeat_block drawShapes
+
+resetMatrix
+setRenderHint Antialiasing off
+setPen nopen
+translate 550 100
+setBrush #7f7f7fff
+drawRect -0.5 -0.5 21 21
+setBrush red
+drawEllipse 0 0 20 20
+setBrush nobrush
+setPen black
+drawEllipse 0 0 20 20
+
+translate 25 0
+setPen nopen
+setBrush #7f7f7fff
+drawRect 0 0 20 20
+setBrush red
+drawEllipse 0 0 20 20
diff --git a/tests/auto/auto.pro b/tests/auto/auto.pro
index 173867587b..aa7c1167ed 100644
--- a/tests/auto/auto.pro
+++ b/tests/auto/auto.pro
@@ -408,8 +408,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 e0f42f0acd..181c27587e 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 6d3d1dfc64..c05d8da276 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 232af553f1..1f5f479507 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/mediaobject/tst_mediaobject.cpp b/tests/auto/mediaobject/tst_mediaobject.cpp
index 96589b7e10..1b113b2c9f 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 a11793bbe0..370a3d0e2c 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 39f4f23812..afb31f6b14 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/q3accel/tst_q3accel.cpp b/tests/auto/q3accel/tst_q3accel.cpp
index c2ba9dd2fd..7b1c8aee77 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/q3cstring/tst_q3cstring.cpp b/tests/auto/q3cstring/tst_q3cstring.cpp
index f9bdf6bc2a..60a66a9a65 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/q3header/tst_q3header.cpp b/tests/auto/q3header/tst_q3header.cpp
index f0ad9d410a..fe290e8c43 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/q3ptrlist/tst_q3ptrlist.cpp b/tests/auto/q3ptrlist/tst_q3ptrlist.cpp
index 49b5a3ed9d..c3d8b16eb7 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/q3sqlcursor/tst_q3sqlcursor.cpp b/tests/auto/q3sqlcursor/tst_q3sqlcursor.cpp
index c06485d36c..2d9118642b 100644
--- a/tests/auto/q3sqlcursor/tst_q3sqlcursor.cpp
+++ b/tests/auto/q3sqlcursor/tst_q3sqlcursor.cpp
@@ -89,7 +89,7 @@ private slots:
void unicode();
void precision_data() { generic_data(); }
void precision();
- void insertORA_data();
+ void insertORA_data() { generic_data("QOCI"); }
void insertORA();
void batchInsert_data() { generic_data(); }
void batchInsert();
@@ -101,7 +101,7 @@ private slots:
void insertFieldNameContainsWS(); // For task 117996
private:
- void generic_data();
+ void generic_data(const QString &engine=QString());
void createTestTables( QSqlDatabase db );
void dropTestTables( QSqlDatabase db );
void populateTestTables( QSqlDatabase db );
@@ -117,10 +117,14 @@ tst_Q3SqlCursor::~tst_Q3SqlCursor()
{
}
-void tst_Q3SqlCursor::generic_data()
+void tst_Q3SqlCursor::generic_data(const QString &engine)
{
- if ( dbs.fillTestTable() == 0 )
- QSKIP( "No database drivers are available in this Qt configuration", SkipAll );
+ if ( dbs.fillTestTable(engine) == 0 ) {
+ if(engine.isEmpty())
+ QSKIP( "No database drivers are available in this Qt configuration", SkipAll );
+ else
+ QSKIP( (QString("No database drivers of type %1 are available in this Qt configuration").arg(engine)).toLocal8Bit(), SkipAll );
+ }
}
void tst_Q3SqlCursor::createTestTables( QSqlDatabase db )
@@ -429,12 +433,6 @@ static QString dumpUtf8( const QString& str )
return res;
}
-void tst_Q3SqlCursor::insertORA_data()
-{
- if ( dbs.fillTestTable( "QOCI" ) == 0 )
- QSKIP( "No Oracle database drivers are available in this Qt configuration", SkipAll );
-}
-
void tst_Q3SqlCursor::insertORA()
{
QFETCH( QString, dbName );
diff --git a/tests/auto/q3sqlselectcursor/tst_q3sqlselectcursor.cpp b/tests/auto/q3sqlselectcursor/tst_q3sqlselectcursor.cpp
index a8c59400f1..9ab74f039e 100644
--- a/tests/auto/q3sqlselectcursor/tst_q3sqlselectcursor.cpp
+++ b/tests/auto/q3sqlselectcursor/tst_q3sqlselectcursor.cpp
@@ -76,7 +76,7 @@ private slots:
void _exec();
private:
- void generic_data();
+ void generic_data(const QString &engine=QString());
void createTestTables( QSqlDatabase db );
void dropTestTables( QSqlDatabase db );
void populateTestTables( QSqlDatabase db );
@@ -92,10 +92,14 @@ tst_Q3SqlSelectCursor::~tst_Q3SqlSelectCursor()
{
}
-void tst_Q3SqlSelectCursor::generic_data()
+void tst_Q3SqlSelectCursor::generic_data(const QString& engine)
{
- if ( dbs.fillTestTable() == 0 )
- QSKIP( "No database drivers are available in this Qt configuration", SkipAll );
+ if ( dbs.fillTestTable(engine) == 0 ) {
+ if(engine.isEmpty())
+ QSKIP( "No database drivers are available in this Qt configuration", SkipAll );
+ else
+ QSKIP( (QString("No database drivers of type %1 are available in this Qt configuration").arg(engine)).toLocal8Bit(), SkipAll );
+ }
}
void tst_Q3SqlSelectCursor::createTestTables( QSqlDatabase db )
diff --git a/tests/auto/q3table/tst_q3table.cpp b/tests/auto/q3table/tst_q3table.cpp
index 2fab3eba0a..7db0a40f8d 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/q3textedit/tst_q3textedit.cpp b/tests/auto/q3textedit/tst_q3textedit.cpp
index 21bc8b59b4..1fcce7b441 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/tst_q3textstream.cpp b/tests/auto/q3textstream/tst_q3textstream.cpp
index 7932b79caf..b13e83f04e 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/tst_q3timeedit.cpp b/tests/auto/q3timeedit/tst_q3timeedit.cpp
index 967bb51d69..1cdd87c29b 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/q3valuelist/tst_q3valuelist.cpp b/tests/auto/q3valuelist/tst_q3valuelist.cpp
index 8abeee22ce..b10664aca0 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/qabstractitemmodel/tst_qabstractitemmodel.cpp b/tests/auto/qabstractitemmodel/tst_qabstractitemmodel.cpp
index b613b8190c..c0ffea034a 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 2d55ca1982..69b310c484 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=
@@ -211,6 +213,7 @@ private slots:
void setCurrentIndex();
void task221955_selectedEditor();
+ void task250754_fontChange();
};
class MyAbstractItemDelegate : public QAbstractItemDelegate
@@ -233,11 +236,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()
@@ -279,26 +279,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));
@@ -314,13 +294,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);
@@ -1186,8 +1164,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 9e3acb8e41..dc1c866a3f 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 d02355793b..df770b38fc 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 9c2fa50e5a..423cf69f33 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 10a4144f73..12fbdc3ce6 100644
--- a/tests/auto/qbitarray/tst_qbitarray.cpp
+++ b/tests/auto/qbitarray/tst_qbitarray.cpp
@@ -211,10 +211,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()
@@ -313,7 +311,7 @@ void tst_QBitArray::toggleBit_data()
}
void tst_QBitArray::toggleBit()
-{
+{
QFETCH(int,index);
QFETCH(QBitArray, input);
QFETCH(QBitArray, res);
@@ -321,7 +319,6 @@ void tst_QBitArray::toggleBit()
input.toggleBit(index);
QCOMPARE(input, res);
-
}
void tst_QBitArray::operator_andeq_data()
@@ -330,33 +327,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());
}
@@ -369,7 +366,6 @@ void tst_QBitArray::operator_andeq()
input1&=input2;
QCOMPARE(input1, res);
-
}
void tst_QBitArray::operator_oreq_data()
@@ -378,37 +374,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());
}
@@ -421,7 +417,6 @@ void tst_QBitArray::operator_oreq()
input1|=input2;
QCOMPARE(input1, res);
-
}
void tst_QBitArray::operator_xoreq_data()
@@ -429,36 +424,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());
}
@@ -471,7 +466,6 @@ void tst_QBitArray::operator_xoreq()
input1^=input2;
QCOMPARE(input1, res);
-
}
@@ -480,37 +474,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");
}
@@ -520,9 +514,8 @@ void tst_QBitArray::operator_neg()
QFETCH(QBitArray, res);
input = ~input;
-
- QCOMPARE(input, res);
+ QCOMPARE(input, res);
}
void tst_QBitArray::datastream_data()
@@ -553,7 +546,7 @@ void tst_QBitArray::datastream()
QFETCH(QString, bitField);
QFETCH(int, numBits);
QFETCH(int, onBits);
-
+
QBuffer buffer;
QVERIFY(buffer.open(QBuffer::ReadWrite));
QDataStream stream(&buffer);
@@ -565,11 +558,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();
@@ -582,10 +573,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);
@@ -594,7 +583,7 @@ void tst_QBitArray::datastream()
void tst_QBitArray::invertOnNull() const
{
- QBitArray a;
+ QBitArray a;
QCOMPARE(a = ~a, QBitArray());
}
@@ -604,28 +593,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 c38fb66747..15cca56ff6 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 0000000000..1618c3e18e
--- /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 0000000000..c3f2fd97aa
--- /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 f0d045450b..2b61467ff5 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/qcheckbox/tst_qcheckbox.cpp b/tests/auto/qcheckbox/tst_qcheckbox.cpp
index be1095a2a1..9ffeb07043 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/qcolordialog/tst_qcolordialog.cpp b/tests/auto/qcolordialog/tst_qcolordialog.cpp
index e51dfcc4c5..1b5babb632 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 223f4bc49f..e8814969ee 100644
--- a/tests/auto/qcombobox/tst_qcombobox.cpp
+++ b/tests/auto/qcombobox/tst_qcombobox.cpp
@@ -56,6 +56,7 @@
#include <qlistwidget.h>
#include <qtreewidget.h>
#include <qtablewidget.h>
+#include <qscrollbar.h>
#ifdef Q_WS_MAC
#include <qmacstyle_mac.h>
#elif defined Q_WS_X11
@@ -138,6 +139,8 @@ private slots:
void task248169_popupWithMinimalSize();
void task247863_keyBoardSelection();
void setModelColumn();
+ void noScrollbar_data();
+ void noScrollbar();
protected slots:
void onEditTextChanged( const QString &newString );
@@ -280,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()
@@ -303,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()
@@ -317,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();
@@ -342,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()
@@ -509,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"
@@ -532,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());
}
@@ -828,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
@@ -2132,7 +2109,7 @@ void tst_QComboBox::task248169_popupWithMinimalSize()
QFrame *container = qFindChild<QComboBoxPrivateContainer *>(&comboBox);
QVERIFY(container);
- QVERIFY(desktop.availableGeometry().contains(container->geometry()));
+ QVERIFY(desktop.screenGeometry(container).contains(container->geometry()));
}
void tst_QComboBox::task247863_keyBoardSelection()
@@ -2181,5 +2158,56 @@ void tst_QComboBox::setModelColumn()
QCOMPARE(box.currentText(), QString("zero"));
}
+void tst_QComboBox::noScrollbar_data()
+{
+ QTest::addColumn<QString>("stylesheet");
+
+ QTest::newRow("normal") << QString();
+ QTest::newRow("border") << QString::fromLatin1("QAbstractItemView { border: 12px solid blue;}");
+ QTest::newRow("margin") << QString::fromLatin1("QAbstractItemView { margin: 12px 15px 13px 10px; }");
+ QTest::newRow("padding") << QString::fromLatin1("QAbstractItemView { padding: 12px 15px 13px 10px;}");
+ QTest::newRow("everything") << QString::fromLatin1("QAbstractItemView { border: 12px solid blue; "
+ " padding: 12px 15px 13px 10px; margin: 12px 15px 13px 10px; }");
+ QTest::newRow("everything and more") << QString::fromLatin1("QAbstractItemView { border: 1px 3px 5px 1px solid blue; "
+ " padding: 2px 5px 3px 1px; margin: 2px 5px 3px 1px; } "
+ " QAbstractItemView::item { border: 2px solid green; "
+ " padding: 1px 1px 2px 2px margin: 1px; } " );
+}
+
+void tst_QComboBox::noScrollbar()
+{
+ QStringList initialContent;
+ initialContent << "foo" << "bar" << "foobar" << "moo";
+ QFETCH(QString, stylesheet);
+
+ {
+ QComboBox comboBox;
+ comboBox.setStyleSheet(stylesheet);
+ comboBox.addItems(initialContent);
+ comboBox.show();
+ comboBox.resize(200, comboBox.height());
+ QTest::qWait(100);
+ comboBox.showPopup();
+ QTest::qWait(100);
+ QVERIFY(!comboBox.view()->horizontalScrollBar()->isVisible());
+ QVERIFY(!comboBox.view()->verticalScrollBar()->isVisible());
+ }
+
+ {
+ QTableWidget *table = new QTableWidget(2,2);
+ QComboBox comboBox;
+ comboBox.setStyleSheet(stylesheet);
+ comboBox.setView(table);
+ comboBox.setModel(table->model());
+ comboBox.show();
+ QTest::qWait(100);
+ comboBox.resize(200, comboBox.height());
+ comboBox.showPopup();
+ QTest::qWait(100);
+ QVERIFY(!comboBox.view()->horizontalScrollBar()->isVisible());
+ QVERIFY(!comboBox.view()->verticalScrollBar()->isVisible());
+ }
+}
+
QTEST_MAIN(tst_QComboBox)
#include "tst_qcombobox.moc"
diff --git a/tests/auto/qcommandlinkbutton/tst_qcommandlinkbutton.cpp b/tests/auto/qcommandlinkbutton/tst_qcommandlinkbutton.cpp
index 5665e6e60e..45a430185e 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 3daa3a0130..f6f1a074e0 100644
--- a/tests/auto/qcompleter/tst_qcompleter.cpp
+++ b/tests/auto/qcompleter/tst_qcompleter.cpp
@@ -140,6 +140,8 @@ private slots:
// task-specific tests below me
void task178797_activatedOnReturn();
void task189564_omitNonSelectableItems();
+ void task246056_setCompletionPrefix();
+ void task250064_lostFocus();
private:
void filter();
@@ -1096,5 +1098,94 @@ void tst_QCompleter::task189564_omitNonSelectableItems()
QVERIFY(matches2.isEmpty());
}
+class task246056_ComboBox : public QComboBox
+{
+ Q_OBJECT
+public:
+ task246056_ComboBox()
+ {
+ setEditable(true);
+ setInsertPolicy(NoInsert);
+ Q_ASSERT(completer());
+ completer()->setCompletionMode(QCompleter::PopupCompletion);
+ completer()->setCompletionRole(Qt::DisplayRole);
+ connect(lineEdit(), SIGNAL(editingFinished()), SLOT(setCompletionPrefix()));
+ }
+private slots:
+ void setCompletionPrefix() { completer()->setCompletionPrefix(lineEdit()->text()); }
+};
+
+void tst_QCompleter::task246056_setCompletionPrefix()
+{
+ task246056_ComboBox *comboBox = new task246056_ComboBox;
+ comboBox->addItem("");
+ comboBox->addItem("a1");
+ comboBox->addItem("a2");
+ comboBox->show();
+ comboBox->setFocus();
+ QTest::qWait(100);
+ QTest::keyPress(comboBox, 'a');
+ QTest::keyPress(comboBox->completer()->popup(), Qt::Key_Down);
+ QTest::keyPress(comboBox->completer()->popup(), Qt::Key_Down);
+ 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);
+}
+
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 10a17de981..c3397ea1be 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
@@ -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;
@@ -1592,13 +1591,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 +1609,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 2ee4277d60..544c8c314e 100644
--- a/tests/auto/qdatastream/tst_qdatastream.cpp
+++ b/tests/auto/qdatastream/tst_qdatastream.cpp
@@ -170,10 +170,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();
@@ -2442,7 +2440,6 @@ private:
int offset;
};
-#if QT_VERSION >= 0x040100
void tst_QDataStream::skipRawData_data()
{
QTest::addColumn<QString>("deviceType");
@@ -2493,7 +2490,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 121167a2db..d4273d0e67 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 2e60aaa4e2..2f01d19a47 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/qdesktopservices/tst_qdesktopservices.cpp b/tests/auto/qdesktopservices/tst_qdesktopservices.cpp
index f1838b9792..467ae666e4 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>
@@ -375,5 +372,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 e77167eb6f..a1cf1c1eb8 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 7a33f4abce..19fee409fe 100644
--- a/tests/auto/qdir/tst_qdir.cpp
+++ b/tests/auto/qdir/tst_qdir.cpp
@@ -848,9 +848,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()
@@ -888,10 +886,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 567ec9e883..c4ff046183 100644
--- a/tests/auto/qdirmodel/tst_qdirmodel.cpp
+++ b/tests/auto/qdirmodel/tst_qdirmodel.cpp
@@ -628,7 +628,6 @@ void tst_QDirModel::task196768_sorting()
QCOMPARE(index.data(), index2.data());
}
-#if QT_VERSION >= 0x040102
void tst_QDirModel::filter()
{
QDirModel model;
@@ -639,7 +638,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 0000000000..c8a894a61d
--- /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 e9f8d7cc1b..b51eff6d7b 100644
--- a/tests/auto/qfile/test/test.pro
+++ b/tests/auto/qfile/test/test.pro
@@ -23,7 +23,7 @@ wince*:{
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 8f0e3f6d50..483e978406 100644
--- a/tests/auto/qfile/tst_qfile.cpp
+++ b/tests/auto/qfile/tst_qfile.cpp
@@ -79,10 +79,6 @@
# define SRCDIR ""
#endif
-#if QT_VERSION < 0x040200
-#define symLinkTarget readLink
-#endif
-
Q_DECLARE_METATYPE(QFile::FileError)
//TESTED_CLASS=
@@ -172,6 +168,8 @@ private slots:
void rename_data();
void rename();
void renameWithAtEndSpecialFile() const;
+ void renameFallback();
+ void renameMultiple();
void appendAndRead();
void miscWithUncPathAsCurrentDir();
void standarderror();
@@ -217,6 +215,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()
@@ -994,12 +1000,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());
@@ -1075,19 +1077,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 && !defined(Q_OS_SYMBIAN)
QVERIFY(QFile::link("ole/..", "myLink2.lnk"));
QCOMPARE(QFileInfo("myLink2.lnk").symLinkTarget(), QDir::currentPath());
-#endif
}
void tst_QFile::readTextFile_data()
@@ -1295,10 +1290,6 @@ void tst_QFile::bufferedRead()
QCOMPARE(file.pos(), qlonglong(2));
}
-#if QT_VERSION <= 0x040100
- QCOMPARE(int(ftell(stdFile)), 2);
-#endif
-
fclose(stdFile);
}
@@ -1618,12 +1609,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);
@@ -1852,10 +1838,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);
@@ -1999,9 +1981,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));
@@ -2119,6 +2099,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 4424ade36f..f554b6f192 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;
@@ -685,6 +687,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()
@@ -1533,6 +1551,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);
@@ -1544,6 +1598,17 @@ 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);
+
}
void tst_QFiledialog::task227930_correctNavigationKeyboardBehavior()
@@ -1799,5 +1864,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 6ec782dbfe..963fccc954 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>
#if defined(Q_OS_SYMBIAN)
# include <f32file.h>
@@ -312,6 +313,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());
@@ -320,6 +348,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 231ef06edd..9df483a874 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
@@ -406,5 +402,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 58e837ef62..e3a5ffc388 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 01d97afb78..a006462422 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/qgraphicsitem/tst_qgraphicsitem.cpp b/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp
index 0f2d6713e2..77b7948301 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>
@@ -162,6 +158,8 @@ private slots:
void mapFromToParent();
void mapFromToScene();
void mapFromToItem();
+ void mapRectFromToParent_data();
+ void mapRectFromToParent();
void isAncestorOf();
void commonAncestorItem();
void data();
@@ -216,10 +214,12 @@ private slots:
void tabChangesFocus();
void tabChangesFocus_data();
void cacheMode();
+ void updateCachedItemAfterMove();
// 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 +2515,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 +3655,8 @@ void tst_QGraphicsItem::defaultItemTest_QGraphicsEllipseItem()
class ItemChangeTester : public QGraphicsRectItem
{
public:
+ ItemChangeTester(){}
+ ItemChangeTester(QGraphicsItem *parent) : QGraphicsRectItem(parent) {}
QVariant itemChangeReturnValue;
QGraphicsScene *itemSceneChangeTargetScene;
@@ -3848,6 +3931,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 +4050,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 +4153,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 +5305,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
@@ -5888,6 +6074,46 @@ 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);
+}
+
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 d43d0ae440..6d2071683e 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 d1d18571ee..b99f111f6f 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 c166dc8d49..b741da6a30 100644
--- a/tests/auto/qgraphicsscene/tst_qgraphicsscene.cpp
+++ b/tests/auto/qgraphicsscene/tst_qgraphicsscene.cpp
@@ -45,10 +45,6 @@
#include <ceconfig.h>
#endif
-#if QT_VERSION < 0x040200
-QTEST_NOOP_MAIN
-#else
-
#include <QtGui>
#include <math.h>
@@ -253,6 +249,7 @@ private slots:
void task139782_containsItemBoundingRect();
void task176178_itemIndexMethodBreaksSceneRect();
void task160653_selectionChanged();
+ void task250680_childClip();
};
void tst_QGraphicsScene::initTestCase()
@@ -3394,6 +3391,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");
@@ -3573,4 +3595,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 f3708b53ab..7934781c68 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();
@@ -1310,6 +1308,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;
@@ -2993,4 +3050,3 @@ void tst_QGraphicsView::centerOnDirtyItem()
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 86d1acbc48..f25a079dad 100644
--- a/tests/auto/qgraphicswidget/tst_qgraphicswidget.cpp
+++ b/tests/auto/qgraphicswidget/tst_qgraphicswidget.cpp
@@ -259,6 +259,35 @@ void tst_QGraphicsWidget::cleanup()
{
}
+class SizeHinter : public QGraphicsWidget
+{
+public:
+ SizeHinter(QGraphicsItem *parent = 0, Qt::WindowFlags wFlags = 0,
+ const QSizeF &min = QSizeF(5,5),
+ const QSizeF &pref = QSizeF(50, 50),
+ const QSizeF &max = QSizeF(500, 500))
+ : QGraphicsWidget(parent, wFlags)
+ {
+ m_sizes[Qt::MinimumSize] = min;
+ m_sizes[Qt::PreferredSize] = pref;
+ m_sizes[Qt::MaximumSize] = max;
+
+ }
+ void setSizeHint(Qt::SizeHint which, const QSizeF &newSizeHint)
+ {
+ m_sizes[which] = newSizeHint;
+ }
+
+protected:
+ QSizeF sizeHint(Qt::SizeHint which, const QSizeF &constraint = QSizeF()) const
+ {
+ Q_UNUSED(constraint);
+ return m_sizes[which];
+ }
+private:
+ QSizeF m_sizes[4];
+};
+
void tst_QGraphicsWidget::qgraphicswidget()
{
SubQGraphicsWidget widget;
@@ -282,6 +311,12 @@ void tst_QGraphicsWidget::qgraphicswidget()
QCOMPARE(widget.type(), (int)QGraphicsWidget::Type);
QCOMPARE(widget.call_propertyChange(QString(), QVariant()), QVariant());
widget.call_sizeHint(Qt::PreferredSize, QSizeF());
+
+ QGraphicsScene scene;
+ QGraphicsWidget *parent = new QGraphicsWidget;
+ SizeHinter *child = new SizeHinter(parent);
+
+ QCOMPARE(child->minimumSize(), QSizeF(5, 5));
}
void tst_QGraphicsWidget::activation()
@@ -1516,35 +1551,6 @@ enum WhichSize {
None,
};
-class SizeHinter : public QGraphicsWidget
-{
-public:
- SizeHinter(QGraphicsItem *parent = 0, Qt::WindowFlags wFlags = 0,
- const QSizeF &min = QSizeF(5,5),
- const QSizeF &pref = QSizeF(50, 50),
- const QSizeF &max = QSizeF(500, 500))
- : QGraphicsWidget(parent, wFlags)
- {
- m_sizes[Qt::MinimumSize] = min;
- m_sizes[Qt::PreferredSize] = pref;
- m_sizes[Qt::MaximumSize] = max;
-
- }
- void setSizeHint(Qt::SizeHint which, const QSizeF &newSizeHint)
- {
- m_sizes[which] = newSizeHint;
- }
-
-protected:
- QSizeF sizeHint(Qt::SizeHint which, const QSizeF &constraint = QSizeF()) const
- {
- Q_UNUSED(constraint);
- return m_sizes[which];
- }
-private:
- QSizeF m_sizes[4];
-};
-
typedef QPair<int, QVariant> Inst;
Q_DECLARE_METATYPE(Inst)
diff --git a/tests/auto/qhash/tst_qhash.cpp b/tests/auto/qhash/tst_qhash.cpp
index 73dfe07526..5d6b91a53d 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=
@@ -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 0867e48a2b..6478854def 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/qhttp/tst_qhttp.cpp b/tests/auto/qhttp/tst_qhttp.cpp
index ad426a2976..093bc1e4f3 100644
--- a/tests/auto/qhttp/tst_qhttp.cpp
+++ b/tests/auto/qhttp/tst_qhttp.cpp
@@ -265,11 +265,9 @@ void tst_QHttp::constructing()
}
-#if QT_VERSION >= 0x040102
{
QHttpResponseHeader header(200);
}
-#endif
}
void tst_QHttp::invalidRequests()
diff --git a/tests/auto/qicoimageformat/tst_qticoimageformat.cpp b/tests/auto/qicoimageformat/tst_qticoimageformat.cpp
index 114ecb5be0..89a0505bbd 100644
--- a/tests/auto/qicoimageformat/tst_qticoimageformat.cpp
+++ b/tests/auto/qicoimageformat/tst_qticoimageformat.cpp
@@ -270,42 +270,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 a92232790c..c7bee475dc 100644
--- a/tests/auto/qicon/tst_qicon.cpp
+++ b/tests/auto/qicon/tst_qicon.cpp
@@ -188,10 +188,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 fcf99abf5e..3b04d56d09 100644
--- a/tests/auto/qimage/tst_qimage.cpp
+++ b/tests/auto/qimage/tst_qimage.cpp
@@ -99,9 +99,8 @@ private slots:
void rotate_data();
void rotate();
-#if QT_VERSION >= 0x040102
void copy();
-#endif
+
void setPixel_data();
void setPixel();
@@ -980,7 +979,6 @@ void tst_QImage::rotate()
QCOMPARE(original, dest);
}
-#if QT_VERSION >= 0x040102
void tst_QImage::copy()
{
// Task 99250
@@ -989,7 +987,6 @@ void tst_QImage::copy()
img.copy(QRect(1000,1,1,1));
}
}
-#endif
void tst_QImage::setPixel_data()
{
diff --git a/tests/auto/qimagereader/tst_qimagereader.cpp b/tests/auto/qimagereader/tst_qimagereader.cpp
index 20dd77f609..3da79f3cae 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
@@ -874,11 +856,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)) {
@@ -1177,7 +1155,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");
@@ -1205,6 +1182,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);
@@ -1216,14 +1194,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");
@@ -1266,7 +1242,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 e338db9b26..f55c6592c2 100644
--- a/tests/auto/qiodevice/tst_qiodevice.cpp
+++ b/tests/auto/qiodevice/tst_qiodevice.cpp
@@ -71,9 +71,7 @@ private slots:
void constructing_QFile();
void read_QByteArray();
void unget();
-#if QT_VERSION >= 0x040100
void peek();
-#endif // QT_VERSION
void getch();
void putch();
@@ -315,7 +313,6 @@ void tst_QIODevice::unget()
}
//--------------------------------------------------------------------
-#if QT_VERSION >= 0x040100
void tst_QIODevice::peek()
{
QBuffer buffer;
@@ -353,7 +350,6 @@ void tst_QIODevice::peek()
}
QFile::remove("peektestfile");
}
-#endif // QT_VERSION
void tst_QIODevice::getch()
{
@@ -446,7 +442,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);
@@ -456,7 +451,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 befe0eb176..27741e08fd 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 c12c583746..aa6939de21 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 61fc4800f9..2cd6048254 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/qitemview/tst_qitemview.cpp b/tests/auto/qitemview/tst_qitemview.cpp
index 41d7df5935..1b02873bbd 100644
--- a/tests/auto/qitemview/tst_qitemview.cpp
+++ b/tests/auto/qitemview/tst_qitemview.cpp
@@ -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);
@@ -462,12 +454,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) || defined(Q_OS_SYMBIAN)
@@ -499,12 +489,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();
@@ -529,12 +517,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
@@ -665,12 +651,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
@@ -701,12 +685,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 2a5017ddc4..943f0e1076 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 5a46bf7359..6dc1aebbce 100644
--- a/tests/auto/qlabel/tst_qlabel.cpp
+++ b/tests/auto/qlabel/tst_qlabel.cpp
@@ -266,10 +266,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 e588d3f581..bf326be8c0 100644
--- a/tests/auto/qlibrary/tst_qlibrary.cpp
+++ b/tests/auto/qlibrary/tst_qlibrary.cpp
@@ -191,7 +191,7 @@ void tst_QLibrary::version()
QFETCH( int, loadversion );
QFETCH( int, resultversion );
-#if QT_VERSION >= 0x040200 && !defined(Q_OS_AIX) && !defined(Q_OS_WIN) && !defined(Q_OS_SYMBIAN)
+#if !defined(Q_OS_AIX) && !defined(Q_OS_WIN) && !defined(Q_OS_SYMBIAN)
QString currDir = QDir::currentPath();
QLibrary library( currDir + QLatin1Char('/') + lib, loadversion );
bool ok = library.load();
@@ -226,7 +226,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) || defined(Q_OS_SYMBIAN)
QTest::newRow( "ok01 (with suffix)" ) << currDir + "/mylib.dll" << (bool)true;
QTest::newRow( "ok02 (with non-standard suffix)" ) << currDir + "/mylib.dl2" << (bool)true;
@@ -236,7 +235,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()
@@ -478,7 +476,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;
@@ -486,9 +484,7 @@ void tst_QLibrary::loadHints_data()
QTest::newRow( "ok03 (Archive member)" ) << "libGL.a(shr_64.o)" << int(QLibrary::LoadArchiveMemberHint) << (bool)TRUE;
#endif
}
-#endif // QT_VERSION
-
-#if QT_VERSION >= 0x040103
+#endif
#if defined(Q_OS_SYMBIAN)
QString currDir;
@@ -506,8 +502,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 53be2e8c14..ab0bd9bbbe 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)))
- << double(a.x1()) << double(a.y1()) << double(a.x2()) << double(a.y2())
- << double(b.x1()) << double(b.y1()) << double(b.x2()) << double(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 4042df6c36..d9005180f5 100644
--- a/tests/auto/qlineedit/tst_qlineedit.cpp
+++ b/tests/auto/qlineedit/tst_qlineedit.cpp
@@ -1466,14 +1466,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/qlocale/tst_qlocale.cpp b/tests/auto/qlocale/tst_qlocale.cpp
index 2bde2c334c..97b14939a5 100644
--- a/tests/auto/qlocale/tst_qlocale.cpp
+++ b/tests/auto/qlocale/tst_qlocale.cpp
@@ -599,6 +599,17 @@ void tst_QLocale::long_long_conversion_data()
QTest::newRow("de_DE 12345.67") << QString("de_DE") << "12345.67"<< false << (qlonglong) 0;
QTest::newRow("de_DE 123456.7") << QString("de_DE") << "123456.7"<< false << (qlonglong) 0;
QTest::newRow("de_DE 1.234.567") << QString("de_DE")<< "1.234.567"<< true << (qlonglong) 1234567;
+ QTest::newRow("de_DE 1.234.567 ldspcs") << QString("de_DE")<< " 1.234.567" << true << (qlonglong) 1234567;
+ QTest::newRow("de_DE 1.234.567 trspcs") << QString("de_DE")<< "1.234.567 "<< true << (qlonglong) 1234567;
+ QTest::newRow("de_DE 1.234.567 ldtrspcs") << QString("de_DE")<< " 1.234.567 "<< true << (qlonglong) 1234567;
+
+ // test that space is also accepted whenever QLocale::groupSeparator() == 0xa0 (which looks like space).
+ QTest::newRow("nb_NO 123 groupsep") << QString("nb_NO")<< QString("1")+QChar(0xa0)+QString("234") << true << (qlonglong) 1234;
+ QTest::newRow("nb_NO 123 groupsep_space") << QString("nb_NO")<< QString("1")+QChar(0x20)+QString("234") << true << (qlonglong) 1234;
+
+ QTest::newRow("nb_NO 123 ldspcs") << QString("nb_NO")<< " 123" << true << (qlonglong) 123;
+ QTest::newRow("nb_NO 123 trspcs") << QString("nb_NO")<< "123 "<< true << (qlonglong) 123;
+ QTest::newRow("nb_NO 123 ldtrspcs") << QString("nb_NO")<< " 123 "<< true << (qlonglong) 123;
QTest::newRow("C 1234") << QString("C") << " 1234" << true << (qlonglong) 1234;
QTest::newRow("C 1234 ") << QString("C") << "1234 " << true << (qlonglong) 1234;
diff --git a/tests/auto/qlocalsocket/test/test.pro b/tests/auto/qlocalsocket/test/test.pro
index 1d55fc9dd8..c58bfeee4b 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
@@ -17,14 +15,16 @@ symbian* {
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* | symbian* {
diff --git a/tests/auto/qlocalsocket/tst_qlocalsocket.cpp b/tests/auto/qlocalsocket/tst_qlocalsocket.cpp
index 031cc5093c..c289c245cc 100644
--- a/tests/auto/qlocalsocket/tst_qlocalsocket.cpp
+++ b/tests/auto/qlocalsocket/tst_qlocalsocket.cpp
@@ -100,6 +100,7 @@ private slots:
void longPath();
void waitForDisconnect();
+ void waitForDisconnectByServer();
void removeServer();
@@ -121,6 +122,8 @@ tst_QLocalSocket::tst_QLocalSocket()
#endif
))
qWarning() << "lackey executable doesn't exists!";
+
+ QLocalServer::removeServer("tst_localsocket");
}
tst_QLocalSocket::~tst_QLocalSocket()
@@ -820,6 +823,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 4529bd53ef..b16a62af89 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 59cc2bef86..8cae6bec56 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 bfc8905fa9..122a2b8217 100644
--- a/tests/auto/qmake/testcompiler.cpp
+++ b/tests/auto/qmake/testcompiler.cpp
@@ -39,49 +39,37 @@
**
****************************************************************************/
-
#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 != "") {
+ QStringList ver = QStringList::split(".", version);
+ targetName.append(ver.first());
+ }
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 +78,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 +96,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 +106,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 +119,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 +239,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 +254,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 597d440e08..41e51774f4 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 5ee5f51cd2..9ed92f960f 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 46017fc43e..15e48c043e 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 facf0bb666..70f1f3c6e1 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 ce413c5781..99efc80dc3 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 44a0ca7323..2ca04d1ceb 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*);
@@ -685,6 +686,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 4c458826d6..2b3e5e39fd 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
#ifdef Q_OS_SYMBIAN
QSKIP("On Symbian OS, native key events are needed to test menu action activation", SkipAll);
@@ -490,8 +490,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();
@@ -892,8 +892,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();
@@ -965,8 +965,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
@@ -1000,8 +1000,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
@@ -1034,8 +1034,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
@@ -1190,8 +1190,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();
@@ -1333,7 +1333,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();
@@ -1341,7 +1341,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");
@@ -1398,8 +1397,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
@@ -1434,7 +1433,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 b3b7f33f53..3d04a0f8f5 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 eccf7e6399..d71f470b10 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 dd24f97efb..23b057b075 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 cb5112dc5a..cc3e1442b1 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 337425744e..146bc7b3f7 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
@@ -707,7 +705,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 9010db41ee..36a4b458dd 100644
--- a/tests/auto/qnetworkcookie/tst_qnetworkcookie.cpp
+++ b/tests/auto/qnetworkcookie/tst_qnetworkcookie.cpp
@@ -286,8 +286,263 @@ void tst_QNetworkCookie::parseSingleCookie_data()
QTest::newRow("expiration3") << "a=b; expires=Wednesday, 09-Nov-1999 23:12:40 GMT " << cookie;
QTest::newRow("expiration-utc") << "a=b;expires=Wednesday, 09-Nov-1999 23:12:40 UTC" << cookie;
+ cookie.setExpirationDate(QDateTime(QDate(1989, 4, 14), QTime(3, 20, 0, 0), Qt::UTC));
+ QTest::newRow("time-0") << "a=b;expires=14 Apr 89 03:20" << cookie;
+ cookie.setExpirationDate(QDateTime(QDate(1989, 4, 14), QTime(3, 20, 12, 0), Qt::UTC));
+ QTest::newRow("time-1") << "a=b;expires=14 Apr 89 03:20:12" << cookie;
+ cookie.setExpirationDate(QDateTime(QDate(1989, 4, 14), QTime(3, 20, 12, 88), Qt::UTC));
+ QTest::newRow("time-2") << "a=b;expires=14 Apr 89 03:20:12.88" << cookie;
+ cookie.setExpirationDate(QDateTime(QDate(1989, 4, 14), QTime(3, 20, 12, 88), Qt::UTC));
+ QTest::newRow("time-3") << "a=b;expires=14 Apr 89 03:20:12.88am" << cookie;
+ cookie.setExpirationDate(QDateTime(QDate(1989, 4, 14), QTime(15, 20, 12, 88), Qt::UTC));
+ QTest::newRow("time-4") << "a=b;expires=14 Apr 89 03:20:12.88pm" << cookie;
+ cookie.setExpirationDate(QDateTime(QDate(1989, 4, 14), QTime(3, 20, 12, 88), Qt::UTC));
+ QTest::newRow("time-5") << "a=b;expires=14 Apr 89 03:20:12.88 Am" << cookie;
+ cookie.setExpirationDate(QDateTime(QDate(1989, 4, 14), QTime(15, 20, 12, 88), Qt::UTC));
+ QTest::newRow("time-6") << "a=b;expires=14 Apr 89 03:20:12.88 PM" << cookie;
+ cookie.setExpirationDate(QDateTime(QDate(1989, 4, 14), QTime(15, 20, 12, 88), Qt::UTC));
+ QTest::newRow("time-7") << "a=b;expires=14 Apr 89 3:20:12.88 PM" << cookie;
+
+ // normal months
+ cookie.setExpirationDate(QDateTime(QDate(1989, 1, 1), QTime(1, 1), Qt::UTC));
+ QTest::newRow("months-1") << "a=b;expires=Jan 1 89 1:1" << cookie;
+ cookie.setExpirationDate(QDateTime(QDate(1989, 2, 1), QTime(1, 1), Qt::UTC));
+ QTest::newRow("months-2") << "a=b;expires=Feb 1 89 1:1" << cookie;
+ cookie.setExpirationDate(QDateTime(QDate(1989, 3, 1), QTime(1, 1), Qt::UTC));
+ QTest::newRow("months-3") << "a=b;expires=mar 1 89 1:1" << cookie;
+ cookie.setExpirationDate(QDateTime(QDate(1989, 4, 1), QTime(1, 1), Qt::UTC));
+ QTest::newRow("months-4") << "a=b;expires=Apr 1 89 1:1" << cookie;
+ cookie.setExpirationDate(QDateTime(QDate(1989, 5, 1), QTime(1, 1), Qt::UTC));
+ QTest::newRow("months-5") << "a=b;expires=May 1 89 1:1" << cookie;
+ cookie.setExpirationDate(QDateTime(QDate(1989, 6, 1), QTime(1, 1), Qt::UTC));
+ QTest::newRow("months-6") << "a=b;expires=Jun 1 89 1:1" << cookie;
+ cookie.setExpirationDate(QDateTime(QDate(1989, 7, 1), QTime(1, 1), Qt::UTC));
+ QTest::newRow("months-7") << "a=b;expires=Jul 1 89 1:1" << cookie;
+ cookie.setExpirationDate(QDateTime(QDate(1989, 8, 1), QTime(1, 1), Qt::UTC));
+ QTest::newRow("months-8") << "a=b;expires=Aug 1 89 1:1" << cookie;
+ cookie.setExpirationDate(QDateTime(QDate(1989, 9, 1), QTime(1, 1), Qt::UTC));
+ QTest::newRow("months-9") << "a=b;expires=Sep 1 89 1:1" << cookie;
+ cookie.setExpirationDate(QDateTime(QDate(1989, 10, 1), QTime(1, 1), Qt::UTC));
+ QTest::newRow("months-10") << "a=b;expires=Oct 1 89 1:1" << cookie;
+ cookie.setExpirationDate(QDateTime(QDate(1989, 11, 1), QTime(1, 1), Qt::UTC));
+ QTest::newRow("months-11") << "a=b;expires=Nov 1 89 1:1" << cookie;
+ cookie.setExpirationDate(QDateTime(QDate(1989, 12, 1), QTime(1, 1), Qt::UTC));
+ QTest::newRow("months-12") << "a=b;expires=Dec 1 89 1:1" << cookie;
+
+ // extra months
+ cookie.setExpirationDate(QDateTime(QDate(1989, 12, 1), QTime(1, 1), Qt::UTC));
+ QTest::newRow("months-13") << "a=b;expires=December 1 89 1:1" << cookie;
+ QTest::newRow("months-14") << "a=b;expires=1 89 1:1 Dec" << cookie;
+ //cookie.setExpirationDate(QDateTime());
+ //QTest::newRow("months-15") << "a=b;expires=1 89 1:1 De" << cookie;
+ cookie.setExpirationDate(QDateTime(QDate(2024, 2, 29), QTime(1, 1), Qt::UTC));
+ QTest::newRow("months-16") << "a=b;expires=2024 29 Feb 1:1" << cookie;
+ cookie.setExpirationDate(QDateTime(QDate(2024, 2, 29), QTime(1, 1), Qt::UTC));
+ QTest::newRow("months-17") << "a=b;expires=Fri, 29-Feb-2024 01:01:00 GMT" << cookie;
+ QTest::newRow("months-18") << "a=b;expires=2024 29 Feb 1:1 GMT" << cookie;
+
+ // normal offsets
+ cookie.setExpirationDate(QDateTime(QDate(1989, 1, 1), QTime(0, 0), Qt::UTC));
+ QTest::newRow("zoneoffset-0") << "a=b;expires=Jan 1 89 8:0 PST" << cookie;
+ cookie.setExpirationDate(QDateTime(QDate(1989, 1, 1), QTime(0, 0), Qt::UTC));
+ QTest::newRow("zoneoffset-1") << "a=b;expires=Jan 1 89 8:0 PDT" << cookie;
+ cookie.setExpirationDate(QDateTime(QDate(1989, 1, 1), QTime(0, 0), Qt::UTC));
+ QTest::newRow("zoneoffset-2") << "a=b;expires=Jan 1 89 7:0 MST" << cookie;
+ cookie.setExpirationDate(QDateTime(QDate(1989, 1, 1), QTime(0, 0), Qt::UTC));
+ QTest::newRow("zoneoffset-3") << "a=b;expires=Jan 1 89 7:0 MDT" << cookie;
+ cookie.setExpirationDate(QDateTime(QDate(1989, 1, 1), QTime(0, 0), Qt::UTC));
+ QTest::newRow("zoneoffset-4") << "a=b;expires=Jan 1 89 6:0 CST" << cookie;
+ cookie.setExpirationDate(QDateTime(QDate(1989, 1, 1), QTime(0, 0), Qt::UTC));
+ QTest::newRow("zoneoffset-5") << "a=b;expires=Jan 1 89 6:0 CDT" << cookie;
+ cookie.setExpirationDate(QDateTime(QDate(1989, 1, 1), QTime(0, 0), Qt::UTC));
+ QTest::newRow("zoneoffset-6") << "a=b;expires=Jan 1 89 5:0 EST" << cookie;
+ cookie.setExpirationDate(QDateTime(QDate(1989, 1, 1), QTime(0, 0), Qt::UTC));
+ QTest::newRow("zoneoffset-7") << "a=b;expires=Jan 1 89 5:0 EDT" << cookie;
+ cookie.setExpirationDate(QDateTime(QDate(1989, 1, 1), QTime(0, 0), Qt::UTC));
+ QTest::newRow("zoneoffset-8") << "a=b;expires=Jan 1 89 4:0 AST" << cookie;
+ cookie.setExpirationDate(QDateTime(QDate(1989, 1, 1), QTime(0, 0), Qt::UTC));
+ QTest::newRow("zoneoffset-9") << "a=b;expires=Jan 1 89 3:0 NST" << cookie;
+ cookie.setExpirationDate(QDateTime(QDate(1989, 1, 1), QTime(0, 0), Qt::UTC));
+ QTest::newRow("zoneoffset-10") << "a=b;expires=Jan 1 89 0:0 GMT" << cookie;
+ cookie.setExpirationDate(QDateTime(QDate(1989, 1, 1), QTime(0, 0), Qt::UTC));
+ QTest::newRow("zoneoffset-11") << "a=b;expires=Jan 1 89 0:0 BST" << cookie;
+ cookie.setExpirationDate(QDateTime(QDate(1989, 1, 2), QTime(0, 0), Qt::UTC));
+ QTest::newRow("zoneoffset-12") << "a=b;expires=Jan 1 89 23:0 MET" << cookie;
+ cookie.setExpirationDate(QDateTime(QDate(1989, 1, 2), QTime(0, 0), Qt::UTC));
+ QTest::newRow("zoneoffset-13") << "a=b;expires=Jan 1 89 22:0 EET" << cookie;
+ cookie.setExpirationDate(QDateTime(QDate(1989, 1, 2), QTime(0, 0), Qt::UTC));
+ QTest::newRow("zoneoffset-14") << "a=b;expires=Jan 1 89 15:0 JST" << cookie;
+
+ // extra offsets
+ cookie.setExpirationDate(QDateTime(QDate(1989, 1, 2), QTime(0, 0), Qt::UTC));
+ QTest::newRow("zoneoffset-14") << "a=b;expires=Jan 1 89 15:0 JST+1" << cookie;
+ cookie.setExpirationDate(QDateTime(QDate(1989, 1, 1), QTime(1, 0), Qt::UTC));
+ QTest::newRow("zoneoffset-15") << "a=b;expires=Jan 1 89 0:0 GMT+1" << cookie;
+ cookie.setExpirationDate(QDateTime(QDate(1989, 1, 1), QTime(0, 0), Qt::UTC));
+ QTest::newRow("zoneoffset-15b") << "a=b;expires=Jan 1 89 1:0 GMT-1" << cookie;
+ cookie.setExpirationDate(QDateTime(QDate(1989, 1, 1), QTime(1, 0), Qt::UTC));
+ QTest::newRow("zoneoffset-16") << "a=b;expires=Jan 1 89 0:0 GMT+01" << cookie;
+ cookie.setExpirationDate(QDateTime(QDate(1989, 1, 1), QTime(1, 5), Qt::UTC));
+ QTest::newRow("zoneoffset-17") << "a=b;expires=Jan 1 89 0:0 GMT+0105" << cookie;
+ cookie.setExpirationDate(QDateTime(QDate(1989, 1, 1), QTime(0, 0), Qt::UTC));
+ QTest::newRow("zoneoffset-18") << "a=b;expires=Jan 1 89 0:0 GMT+015" << cookie;
+ cookie.setExpirationDate(QDateTime(QDate(1989, 1, 1), QTime(0, 0), Qt::UTC));
+ QTest::newRow("zoneoffset-19") << "a=b;expires=Jan 1 89 0:0 GM" << cookie;
+ cookie.setExpirationDate(QDateTime(QDate(1989, 1, 1), QTime(0, 0), Qt::UTC));
+ QTest::newRow("zoneoffset-19b") << "a=b;expires=Jan 1 89 0:0 GMT" << cookie;
+
+ // offsets from gmt
+ cookie.setExpirationDate(QDateTime(QDate(1989, 1, 1), QTime(1, 0), Qt::UTC));
+ QTest::newRow("zoneoffset-20") << "a=b;expires=Jan 1 89 0:0 +1" << cookie;
+ cookie.setExpirationDate(QDateTime(QDate(1989, 1, 1), QTime(1, 0), Qt::UTC));
+ QTest::newRow("zoneoffset-21") << "a=b;expires=Jan 1 89 0:0 +01" << cookie;
+ cookie.setExpirationDate(QDateTime(QDate(1989, 1, 1), QTime(1, 1), Qt::UTC));
+ QTest::newRow("zoneoffset-22") << "a=b;expires=Jan 1 89 0:0 +0101" << cookie;
+ cookie.setExpirationDate(QDateTime(QDate(1989, 1, 1), QTime(0, 0), Qt::UTC));
+ QTest::newRow("zoneoffset-23") << "a=b;expires=Jan 1 89 1:0 -1" << cookie;
+
+ // Y2k
+ cookie.setExpirationDate(QDateTime(QDate(2000, 1, 1), QTime(0, 0), Qt::UTC));
+ QTest::newRow("year-0") << "a=b;expires=Jan 1 00 0:0" << cookie;
+ cookie.setExpirationDate(QDateTime(QDate(1970, 1, 1), QTime(0, 0), Qt::UTC));
+ QTest::newRow("year-1") << "a=b;expires=Jan 1 70 0:0" << cookie;
+ cookie.setExpirationDate(QDateTime(QDate(1971, 1, 1), QTime(0, 0), Qt::UTC));
+ QTest::newRow("year-2") << "a=b;expires=Jan 1 71 0:0" << cookie;
+
+ // Day, month, year
+ cookie.setExpirationDate(QDateTime(QDate(2013, 1, 2), QTime(0, 0), Qt::UTC));
+ QTest::newRow("date-0") << "a=b;expires=Jan 2 13 0:0" << cookie;
+ QTest::newRow("date-1") << "a=b;expires=1-2-13 0:0" << cookie;
+ QTest::newRow("date-2") << "a=b;expires=1/2/13 0:0" << cookie;
+ QTest::newRow("date-3") << "a=b;expires=Jan 2 13 0:0" << cookie;
+ QTest::newRow("date-4") << "a=b;expires=Jan 2, 13 0:0" << cookie;
+ QTest::newRow("date-5") << "a=b;expires=1-2-13 0:0" << cookie;
+ QTest::newRow("date-6") << "a=b;expires=1/2/13 0:0" << cookie;
+
+ // Known Year, determine month and day
+ cookie.setExpirationDate(QDateTime(QDate(1995, 1, 13), QTime(0, 0), Qt::UTC));
+ QTest::newRow("knownyear-0") << "a=b;expires=13/1/95 0:0" << cookie;
+ QTest::newRow("knownyear-1") << "a=b;expires=95/13/1 0:0" << cookie;
+ QTest::newRow("knownyear-2") << "a=b;expires=1995/1/13 0:0" << cookie;
+ QTest::newRow("knownyear-3") << "a=b;expires=1995/13/1 0:0" << cookie;
+ cookie.setExpirationDate(QDateTime(QDate(1995, 1, 2), QTime(0, 0), Qt::UTC));
+ QTest::newRow("knownyear-4") << "a=b;expires=1/2/95 0:0" << cookie;
+ QTest::newRow("knownyear-5") << "a=b;expires=95/1/2 0:0" << cookie;
+
+ // Known Year, Known day, determining month
+ cookie.setExpirationDate(QDateTime(QDate(1995, 1, 13), QTime(0, 0), Qt::UTC));
+ QTest::newRow("knownYD-0") << "a=b;expires=13/1/95 0:0" << cookie;
+ QTest::newRow("knownYD-1") << "a=b;expires=1/13/95 0:0" << cookie;
+ QTest::newRow("knownYD-2") << "a=b;expires=95/13/1 0:0" << cookie;
+ QTest::newRow("knownYD-3") << "a=b;expires=95/1/13 0:0" << cookie;
+
+ // Month comes before Year
+ cookie.setExpirationDate(QDateTime(QDate(2021, 03, 26), QTime(0, 0), Qt::UTC));
+ QTest::newRow("month-0") << "a=b;expires=26/03/21 0:0" << cookie;
+ cookie.setExpirationDate(QDateTime(QDate(2015, 12, 30), QTime(16, 25, 0, 0), Qt::UTC));
+ QTest::newRow("month-1") << "a=b;expires=wed 16:25pm December 2015 30" << cookie;
+ cookie.setExpirationDate(QDateTime(QDate(2031, 11, 11), QTime(16, 25, 0, 0), Qt::UTC));
+ QTest::newRow("month-2") << "a=b;expires=16:25 11 31 11" << cookie;
+
+ // The very ambiguous cases
+ // Matching Firefox's behavior of guessing month, day, year in those cases
+ cookie.setExpirationDate(QDateTime(QDate(2013, 10, 2), QTime(0, 0), Qt::UTC));
+ QTest::newRow("ambiguousd-0") << "a=b;expires=10/2/13 0:0" << cookie;
+ cookie.setExpirationDate(QDateTime(QDate(2013, 2, 10), QTime(0, 0), Qt::UTC));
+ QTest::newRow("ambiguousd-1") << "a=b;expires=2/10/13 0:0" << cookie;
+ cookie.setExpirationDate(QDateTime(QDate(2010, 2, 3), QTime(0, 0), Qt::UTC));
+ QTest::newRow("ambiguousd-2") << "a=b;expires=2/3/10 0:0" << cookie;
+
+ // FYI If you try these in Firefox it wont set a cookie for the following two string
+ // because 03 is turned into the year at which point it is expired
+ cookie.setExpirationDate(QDateTime(QDate(2003, 2, 10), QTime(0, 0), Qt::UTC));
+ QTest::newRow("ambiguousd-3") << "a=b;expires=2/10/3 0:0" << cookie;
+ cookie.setExpirationDate(QDateTime(QDate(2003, 10, 2), QTime(0, 0), Qt::UTC));
+ QTest::newRow("ambiguousd-4") << "a=b;expires=10/2/3 0:0" << cookie;
+
+ // These are the cookies that firefox's source says it can parse
+ cookie.setExpirationDate(QDateTime(QDate(1989, 4, 14), QTime(3, 20, 0, 0), Qt::UTC));
+ QTest::newRow("firefox-0") << "a=b;expires=14 Apr 89 03:20" << cookie;
+
+ cookie.setExpirationDate(QDateTime(QDate(1989, 4, 14), QTime(3, 20, 0, 0), Qt::UTC));
+ QTest::newRow("firefox-1") << "a=b;expires=14 Apr 89 03:20 GMT" << cookie;
+
+ cookie.setExpirationDate(QDateTime(QDate(1989, 3, 17), QTime(4, 1, 33, 0), Qt::UTC));
+ QTest::newRow("firefox-2") << "a=b;expires=Fri, 17 Mar 89 4:01:33" << cookie;
+
+ cookie.setExpirationDate(QDateTime(QDate(1989, 3, 17), QTime(4, 1, 0, 0), Qt::UTC));
+ QTest::newRow("firefox-3") << "a=b;expires=Fri, 17 Mar 89 4:01 GMT" << cookie;
+
+ cookie.setExpirationDate(QDateTime(QDate(1989, 1, 16), QTime(16-8, 12, 0, 0), Qt::UTC));
+ QTest::newRow("firefox-4") << "a=b;expires=Mon Jan 16 16:12 PDT 1989" << cookie;
+
+ cookie.setExpirationDate(QDateTime(QDate(1989, 1, 16), QTime(17, 42, 0, 0), Qt::UTC));
+ QTest::newRow("firefox-5") << "a=b;expires=Mon Jan 16 16:12 +0130 1989" << cookie;
+
+ cookie.setExpirationDate(QDateTime(QDate(1992, 5, 6), QTime(16-9, 41, 0, 0), Qt::UTC));
+ QTest::newRow("firefox-6") << "a=b;expires=6 May 1992 16:41-JST (Wednesday)" << cookie;
+
+ cookie.setExpirationDate(QDateTime(QDate(1993, 8, 22), QTime(10, 59, 12, 82), Qt::UTC));
+ QTest::newRow("firefox-7") << "a=b;expires=22-AUG-1993 10:59:12.82" << cookie;
+
+ cookie.setExpirationDate(QDateTime(QDate(1993, 8, 22), QTime(22, 59, 0, 0), Qt::UTC));
+ QTest::newRow("firefox-8") << "a=b;expires=22-AUG-1993 10:59pm" << cookie;
+
+ cookie.setExpirationDate(QDateTime(QDate(1993, 8, 22), QTime(12, 59, 0, 0), Qt::UTC));
+ QTest::newRow("firefox-9") << "a=b;expires=22-AUG-1993 12:59am" << cookie;
+
+ cookie.setExpirationDate(QDateTime(QDate(1993, 8, 22), QTime(12, 59, 0, 0), Qt::UTC));
+ QTest::newRow("firefox-10") << "a=b;expires=22-AUG-1993 12:59 PM" << cookie;
+
+ cookie.setExpirationDate(QDateTime(QDate(1995, 8, 4), QTime(15, 54, 0, 0), Qt::UTC));
+ QTest::newRow("firefox-11") << "a=b;expires=Friday, August 04, 1995 3:54 PM" << cookie;
+
+ cookie.setExpirationDate(QDateTime(QDate(1995, 6, 21), QTime(16, 24, 34, 0), Qt::UTC));
+ QTest::newRow("firefox-12") << "a=b;expires=06/21/95 04:24:34 PM" << cookie;
+
+ cookie.setExpirationDate(QDateTime(QDate(1995, 6, 20), QTime(21, 7, 0, 0), Qt::UTC));
+ QTest::newRow("firefox-13") << "a=b;expires=20/06/95 21:07" << cookie;
+
+ cookie.setExpirationDate(QDateTime(QDate(1995, 6, 8), QTime(19-5, 32, 48, 0), Qt::UTC));
+ QTest::newRow("firefox-14") << "a=b;expires=95-06-08 19:32:48 EDT" << cookie;
+
+ // Edge cases caught by fuzzing
+ // These are about the default cause creates dates that don't exits
+ cookie.setExpirationDate(QDateTime(QDate(2030, 2, 25), QTime(1, 1, 0, 0), Qt::UTC));
+ QTest::newRow("fuzz-0") << "a=b; expires=30 -000002 1:1 25;" << cookie;
+
+ cookie.setExpirationDate(QDateTime(QDate(2031, 11, 20), QTime(1, 1, 0, 0), Qt::UTC));
+ QTest::newRow("fuzz-1") << "a=b; expires=31 11 20 1:1;" << cookie;
+
+ // April only has 30 days
+ cookie.setExpirationDate(QDateTime(QDate(2031, 4, 30), QTime(1, 1, 0, 0), Qt::UTC));
+ QTest::newRow("fuzz-2") << "a=b; expires=31 30 4 1:1" << cookie;
+
+ // 9 must be the month so 31 can't be the day
+ cookie.setExpirationDate(QDateTime(QDate(2031, 9, 21), QTime(1, 1, 0, 0), Qt::UTC));
+ QTest::newRow("fuzz-3") << "a=b; expires=31 21 9 1:1" << cookie;
+
+ // Year is known, then fallback to defaults of filling in month and day
+ cookie.setExpirationDate(QDateTime(QDate(2031, 11, 1), QTime(1, 1, 0, 0), Qt::UTC));
+ QTest::newRow("fuzz-4") << "a=b; expires=31 11 01 1:1" << cookie;
+
+ // 2 must be the month so 30 can't be the day
+ cookie.setExpirationDate(QDateTime(QDate(2030, 2, 20), QTime(1, 1, 0, 0), Qt::UTC));
+ QTest::newRow("fuzz-5") << "a=b; expires=30 02 20 1:1" << cookie;
+
+ cookie.setExpirationDate(QDateTime(QDate(2021, 12, 22), QTime(1, 1, 0, 0), Qt::UTC));
+ QTest::newRow("fuzz-6") << "a=b; expires=2021 12 22 1:1" << cookie;
+
+ cookie.setExpirationDate(QDateTime(QDate(2029, 2, 23), QTime(1, 1, 0, 0), Qt::UTC));
+ QTest::newRow("fuzz-7") << "a=b; expires=29 23 Feb 1:1" << cookie;
+
+ // 11 and 6 don't have 31 days
+ cookie.setExpirationDate(QDateTime(QDate(2031, 11, 06), QTime(1, 1, 0, 0), Qt::UTC));
+ QTest::newRow("fuzz-8") << "a=b; expires=31 11 06 1:1" << cookie;
+
// two-digit years:
// from 70 until 99, we assume 20th century
+ cookie.setExpirationDate(QDateTime(QDate(1999, 11, 9), QTime(23, 12, 40), Qt::UTC));
QTest::newRow("expiration-2digit1") << "a=b; expires=Wednesday, 09-Nov-99 23:12:40 GMT " << cookie;
cookie.setExpirationDate(QDateTime(QDate(1970, 1, 1), QTime(23, 12, 40), Qt::UTC));
QTest::newRow("expiration-2digit2") << "a=b; expires=Thursday, 01-Jan-70 23:12:40 GMT " << cookie;
@@ -315,6 +570,9 @@ void tst_QNetworkCookie::parseSingleCookie_data()
cookie.setExpirationDate(QDateTime(QDate(9999, 12, 31), QTime(23, 59, 59), Qt::UTC));
QTest::newRow("network2") << "__siteid=1; expires=Fri, 31-Dec-9999 23:59:59 GMT; path=/" << cookie;
+ cookie = QNetworkCookie("YM.LC", "v=2&m=9993_262838_159_1558_1063_0_5649_4012_3776161073,9426_260205_549_1295_1336_0_5141_4738_3922731647,6733_258196_952_1364_643_0_3560_-1_0,3677_237633_1294_1294_19267_0_3244_29483_4102206176,1315_235149_1693_1541_941_0_3224_1691_1861378060,1858_214311_2100_1298_19538_0_2873_30900_716411652,6258_212007_2506_1285_1017_0_2868_3606_4288540264,3743_207884_2895_1362_2759_0_2545_7114_3388520216,2654_205253_3257_1297_1332_0_2504_4682_3048534803,1891_184881_3660_1291_19079_0_978_29178_2592538685&f=1&n=20&s=date&o=down&e=1196548712&b=Inbox&u=removed");
+ cookie.setPath("/");
+ cookie.setDomain("mail.yahoo.com");
QTest::newRow("network3") << "YM.LC=v=2&m=9993_262838_159_1558_1063_0_5649_4012_3776161073,9426_260205_549_1295_1336_0_5141_4738_3922731647,6733_258196_952_1364_643_0_3560_-1_0,3677_237633_1294_1294_19267_0_3244_29483_4102206176,1315_235149_1693_1541_941_0_3224_1691_1861378060,1858_214311_2100_1298_19538_0_2873_30900_716411652,6258_212007_2506_1285_1017_0_2868_3606_4288540264,3743_207884_2895_1362_2759_0_2545_7114_3388520216,2654_205253_3257_1297_1332_0_2504_4682_3048534803,1891_184881_3660_1291_19079_0_978_29178_2592538685&f=1&n=20&s=date&o=down&e=1196548712&b=Inbox&u=removed; path=/; domain=mail.yahoo.com" << cookie;
cookie = QNetworkCookie("__ac", "c2hhdXNtYW46U2FTYW80Wm8%3D");
@@ -330,13 +588,22 @@ void tst_QNetworkCookie::parseSingleCookie()
QList<QNetworkCookie> result = QNetworkCookie::parseCookies(cookieString.toLatin1());
- QEXPECT_FAIL("network2", "QDateTime parsing problem: the date is beyond year 8000", Abort);
- QEXPECT_FAIL("network3", "Cookie value contains commas, violating the HTTP spec", Abort);
+ //QEXPECT_FAIL("network2", "QDateTime parsing problem: the date is beyond year 8000", Abort);
QCOMPARE(result.count(), 1);
+ QEXPECT_FAIL("network3", "Cookie value contains commas, violating the HTTP spec", Abort);
QCOMPARE(result.at(0), expectedCookie);
result = QNetworkCookie::parseCookies(result.at(0).toRawForm());
QCOMPARE(result.count(), 1);
+
+ // Drop any millisecond information, if there's any
+ QDateTime dt = expectedCookie.expirationDate();
+ if (dt.isValid()) {
+ QTime t = dt.time();
+ dt.setTime(t.addMSecs(-t.msec()));
+ expectedCookie.setExpirationDate(dt);
+ }
+
QCOMPARE(result.at(0), expectedCookie);
}
@@ -358,9 +625,7 @@ void tst_QNetworkCookie::parseMultipleCookies_data()
// reason: malformed NAME=VALUE pair
QTest::newRow("invalid-05") << "foo" << list;
QTest::newRow("invalid-06") << "=b" << list;
- QTest::newRow("invalid-08") << "a=b,foo" << list;
QTest::newRow("invalid-09") << "foo,a=b" << list;
- QTest::newRow("invalid-10") << "a=b,=b" << list;
QTest::newRow("invalid-11") << ";path=/" << list;
// reason: malformed expiration date string
@@ -369,8 +634,6 @@ void tst_QNetworkCookie::parseMultipleCookies_data()
QTest::newRow("invalid-14") << "a=b;expires=foobar, abc" << list;
QTest::newRow("invalid-15") << "a=b;expires=foobar, dd-mmm-yyyy hh:mm:ss GMT; path=/" << list;
QTest::newRow("invalid-16") << "a=b;expires=foobar, 32-Caz-1999 24:01:60 GMT; path=/" << list;
- QTest::newRow("invalid-17") << "a=b,c=d;expires=" << list;
- QTest::newRow("invalid-18") << "a=b, c=d; expires=foobar, 32-Caz-1999 24:01:60 GMT; path=/" << list;
QNetworkCookie cookie;
cookie.setName("a");
@@ -417,6 +680,26 @@ void tst_QNetworkCookie::parseMultipleCookies_data()
list << cookie;
QTest::newRow("network1") << "id=51706646077999719 bb=\"K14144t\"_AAQ\"ototrK_A_ttot44AQ4KwoRQtoto| adv=; Domain=.bluestreak.com; expires=Tuesday 05-Dec-2017 09:11:07 GMT; path=/;" << list;
+ QNetworkCookie cookieA;
+ cookieA.setName("a");
+ cookieA.setValue("b");
+
+ QNetworkCookie cookieB;
+ cookieB.setName("c");
+ cookieB.setValue("d");
+
+ // NewLine
+ cookieA.setExpirationDate(QDateTime(QDate(2009, 3, 10), QTime(7, 0, 0, 0), Qt::UTC));
+ cookieB.setExpirationDate(QDateTime(QDate(2009, 3, 20), QTime(7, 0, 0, 0), Qt::UTC));
+ list = QList<QNetworkCookie>() << cookieA << cookieB;
+ QTest::newRow("real-0") << "a=b; expires=Tue Mar 10 07:00:00 2009 GMT\nc=d; expires=Fri Mar 20 07:00:00 2009 GMT" << list;
+ QTest::newRow("real-1") << "a=b; expires=Tue Mar 10 07:00:00 2009 GMT\n\nc=d; expires=Fri Mar 20 07:00:00 2009 GMT" << list;
+ QTest::newRow("real-2") << "a=b; expires=Mar 10 07:00:00 2009 GMT, Tue\nc=d; expires=Fri Mar 20 07:00:00 2009 GMT" << list;
+
+ // Match firefox's behavior
+ cookieA.setPath("/foo");
+ list = QList<QNetworkCookie>() << cookieA << cookieB;
+ QTest::newRow("real-3") << "a=b; expires=Mar 10 07:00:00 2009 GMT, Tue; path=/foo\nc=d; expires=Fri Mar 20 07:00:00 2009 GMT" << list;
}
void tst_QNetworkCookie::parseMultipleCookies()
diff --git a/tests/auto/qnetworkinterface/tst_qnetworkinterface.cpp b/tests/auto/qnetworkinterface/tst_qnetworkinterface.cpp
index a87b9afdfe..a1bb573d1c 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>
@@ -217,5 +213,3 @@ void tst_QNetworkInterface::copyInvalidInterface()
QTEST_MAIN(tst_QNetworkInterface)
#include "tst_qnetworkinterface.moc"
-
-#endif
diff --git a/tests/auto/qnetworkreply/tst_qnetworkreply.cpp b/tests/auto/qnetworkreply/tst_qnetworkreply.cpp
index 2d4bc61639..d7faa7351a 100644
--- a/tests/auto/qnetworkreply/tst_qnetworkreply.cpp
+++ b/tests/auto/qnetworkreply/tst_qnetworkreply.cpp
@@ -2267,9 +2267,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)) {
@@ -2307,7 +2304,6 @@ void tst_QNetworkReply::ioPutToFileFromLocalSocket()
QCOMPARE(file.size(), qint64(data.size()));
QByteArray contents = file.readAll();
QCOMPARE(contents, data);
-#endif
}
void tst_QNetworkReply::ioPutToFileFromProcess_data()
diff --git a/tests/auto/qobject/tst_qobject.cpp b/tests/auto/qobject/tst_qobject.cpp
index dd65579884..ada4fcbd55 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/qpainter/tst_qpainter.cpp b/tests/auto/qpainter/tst_qpainter.cpp
index 12f0113243..0cb8346f08 100644
--- a/tests/auto/qpainter/tst_qpainter.cpp
+++ b/tests/auto/qpainter/tst_qpainter.cpp
@@ -207,6 +207,10 @@ private slots:
void drawImage_task217400_data();
void drawImage_task217400();
void drawRect_task215378();
+ void drawRect_task247505();
+
+ void drawImage_data();
+ void drawImage();
void clippedImage();
@@ -2572,23 +2576,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);
}
@@ -3589,6 +3576,97 @@ void tst_QPainter::drawRect_task215378()
QVERIFY(img.pixel(0, 0) != img.pixel(1, 1));
}
+void tst_QPainter::drawRect_task247505()
+{
+ QImage a(10, 10, QImage::Format_ARGB32_Premultiplied);
+ a.fill(0);
+ QImage b = a;
+
+ QPainter p(&a);
+ p.setPen(Qt::NoPen);
+ p.setBrush(Qt::black);
+ p.drawRect(QRectF(10, 0, -10, 10));
+ p.end();
+ p.begin(&b);
+ p.setPen(Qt::NoPen);
+ p.setBrush(Qt::black);
+ p.drawRect(QRectF(0, 0, 10, 10));
+ p.end();
+
+ QCOMPARE(a, b);
+}
+
+void tst_QPainter::drawImage_data()
+{
+ QTest::addColumn<int>("x");
+ QTest::addColumn<int>("y");
+ QTest::addColumn<int>("w");
+ QTest::addColumn<int>("h");
+ QTest::addColumn<QImage::Format>("srcFormat");
+ QTest::addColumn<QImage::Format>("dstFormat");
+
+ for (int srcFormat = QImage::Format_Mono; srcFormat < QImage::NImageFormats; ++srcFormat) {
+ for (int dstFormat = QImage::Format_Mono; dstFormat < QImage::NImageFormats; ++dstFormat) {
+ if (dstFormat == QImage::Format_Indexed8)
+ continue;
+ for (int odd_x = 0; odd_x <= 1; ++odd_x) {
+ for (int odd_width = 0; odd_width <= 1; ++odd_width) {
+ QString description =
+ QString("srcFormat %1, dstFormat %2, odd x: %3, odd width: %4")
+ .arg(srcFormat).arg(dstFormat).arg(odd_x).arg(odd_width);
+
+ QTest::newRow(qPrintable(description)) << (10 + odd_x) << 10 << (20 + odd_width) << 20
+ << QImage::Format(srcFormat)
+ << QImage::Format(dstFormat);
+ }
+ }
+ }
+ }
+}
+
+bool verifyImage(const QImage &img, int x, int y, int w, int h, uint background)
+{
+ int imgWidth = img.width();
+ int imgHeight = img.height();
+ for (int i = 0; i < imgHeight; ++i) {
+ for (int j = 0; j < imgWidth; ++j) {
+ uint pixel = img.pixel(j, i);
+ bool outside = j < x || j >= (x + w) || i < y || i >= (y + h);
+ if (outside != (pixel == background)) {
+ //printf("%d %d, expected %x, got %x, outside: %d\n", x, y, background, pixel, outside);
+ return false;
+ }
+ }
+ }
+
+ return true;
+}
+
+void tst_QPainter::drawImage()
+{
+ QFETCH(int, x);
+ QFETCH(int, y);
+ QFETCH(int, w);
+ QFETCH(int, h);
+ QFETCH(QImage::Format, srcFormat);
+ QFETCH(QImage::Format, dstFormat);
+
+ QImage dst(40, 40, QImage::Format_RGB32);
+ dst.fill(0xffffffff);
+
+ dst = dst.convertToFormat(dstFormat);
+ uint background = dst.pixel(0, 0);
+
+ QImage src(w, h, QImage::Format_RGB32);
+ src.fill(0xff000000);
+ src = src.convertToFormat(srcFormat);
+
+ QPainter p(&dst);
+ p.drawImage(x, y, src);
+ p.end();
+
+ QVERIFY(verifyImage(dst, x, y, w, h, background));
+}
void tst_QPainter::imageCoordinateLimit()
{
@@ -3717,8 +3795,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);
diff --git a/tests/auto/qpainterpath/tst_qpainterpath.cpp b/tests/auto/qpainterpath/tst_qpainterpath.cpp
index cff84e9f95..3d77f5ec19 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 43559e57fe..954be235fc 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/qpixmap/tst_qpixmap.cpp b/tests/auto/qpixmap/tst_qpixmap.cpp
index b8f3ca2f96..493333bd0a 100644
--- a/tests/auto/qpixmap/tst_qpixmap.cpp
+++ b/tests/auto/qpixmap/tst_qpixmap.cpp
@@ -105,6 +105,7 @@ private slots:
void grabWidget();
void grabWindow();
void isNull();
+ void task_246446();
#ifdef Q_WS_QWS
void convertFromImageNoDetach();
@@ -1028,5 +1029,20 @@ void tst_QPixmap::fromData()
QCOMPARE(img.pixel(0, 1), QRgb(0xff000000));
}
+void tst_QPixmap::task_246446()
+{
+ // This crashed without the bugfix in 246446
+ QPixmap pm(10, 10);
+ pm.fill(Qt::transparent); // force 32-bit depth
+ QBitmap bm;
+ pm.setMask(bm);
+ {
+ QPixmap pm2(pm);
+ }
+ QVERIFY(pm.width() == 10);
+ QVERIFY(pm.mask().isNull());
+}
+
+
QTEST_MAIN(tst_QPixmap)
#include "tst_qpixmap.moc"
diff --git a/tests/auto/qprinter/tst_qprinter.cpp b/tests/auto/qprinter/tst_qprinter.cpp
index 0febb87358..a598bfc2b1 100644
--- a/tests/auto/qprinter/tst_qprinter.cpp
+++ b/tests/auto/qprinter/tst_qprinter.cpp
@@ -121,9 +121,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 +182,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 +249,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 +319,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 +512,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;
diff --git a/tests/auto/qprocess/tst_qprocess.cpp b/tests/auto/qprocess/tst_qprocess.cpp
index 428cf41a0d..2610af9394 100644
--- a/tests/auto/qprocess/tst_qprocess.cpp
+++ b/tests/auto/qprocess/tst_qprocess.cpp
@@ -143,6 +143,8 @@ private slots:
void switchReadChannels();
void setWorkingDirectory();
void startFinishStartFinish();
+ void invalidProgramString_data();
+ void invalidProgramString();
// keep these at the end, since they use lots of processes and sometimes
// caused obscure failures to occur in tests that followed them (esp. on the Mac)
@@ -276,11 +278,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);
}
@@ -2219,5 +2219,29 @@ void tst_QProcess::startFinishStartFinish()
}
}
+//-----------------------------------------------------------------------------
+void tst_QProcess::invalidProgramString_data()
+{
+ QTest::addColumn<QString>("programString");
+ QTest::newRow("null string") << QString();
+ QTest::newRow("empty string") << QString("");
+ QTest::newRow("only blank string") << QString(" ");
+}
+
+void tst_QProcess::invalidProgramString()
+{
+ QFETCH(QString, programString);
+ QProcess process;
+
+ qRegisterMetaType<QProcess::ProcessError>("QProcess::ProcessError");
+ QSignalSpy spy(&process, SIGNAL(error(QProcess::ProcessError)));
+
+ process.start(programString);
+ QCOMPARE(process.error(), QProcess::FailedToStart);
+ QCOMPARE(spy.count(), 1);
+
+ QVERIFY(!QProcess::startDetached(programString));
+}
+
QTEST_MAIN(tst_QProcess)
#include "tst_qprocess.moc"
diff --git a/tests/auto/qpushbutton/tst_qpushbutton.cpp b/tests/auto/qpushbutton/tst_qpushbutton.cpp
index 34dd313225..27dec9d327 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 c650ff510e..a37f93ca0a 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 a459b7dd8e..51ef169c8d 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 647fe6d6a6..efafbe466f 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 2afeaedc06..003619b2ed 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/qscriptengine/tst_qscriptengine.cpp b/tests/auto/qscriptengine/tst_qscriptengine.cpp
index 0c359def0a..cd797d949c 100644
--- a/tests/auto/qscriptengine/tst_qscriptengine.cpp
+++ b/tests/auto/qscriptengine/tst_qscriptengine.cpp
@@ -1187,6 +1187,16 @@ static void fooFromScriptValue(const QScriptValue &value, Foo &foo)
foo.y = value.property("y").toInt32();
}
+static QScriptValue fooToScriptValueV2(QScriptEngine *eng, const Foo &foo)
+{
+ return QScriptValue(eng, foo.x);
+}
+
+static void fooFromScriptValueV2(const QScriptValue &value, Foo &foo)
+{
+ foo.x = value.toInt32();
+}
+
Q_DECLARE_METATYPE(QLinkedList<QString>)
Q_DECLARE_METATYPE(QList<Foo>)
Q_DECLARE_METATYPE(QVector<QChar>)
@@ -1427,6 +1437,24 @@ void tst_QScriptEngine::valueConversion()
QVERIFY(val.isVariant());
QCOMPARE(val.toVariant(), var);
}
+
+ // task 248802
+ qScriptRegisterMetaType<Foo>(&eng, fooToScriptValueV2, fooFromScriptValueV2);
+ {
+ QScriptValue num(&eng, 123);
+ Foo foo = qScriptValueToValue<Foo>(num);
+ QCOMPARE(foo.x, 123);
+ }
+ {
+ QScriptValue num(123);
+ Foo foo = qScriptValueToValue<Foo>(num);
+ QCOMPARE(foo.x, -1);
+ }
+ {
+ QScriptValue str(&eng, "123");
+ Foo foo = qScriptValueToValue<Foo>(str);
+ QCOMPARE(foo.x, 123);
+ }
}
static QScriptValue __import__(QScriptContext *ctx, QScriptEngine *eng)
diff --git a/tests/auto/qset/tst_qset.cpp b/tests/auto/qset/tst_qset.cpp
index 7afcd8457f..5601656ab2 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 cb49d17a13..bc2416adce 100644
--- a/tests/auto/qsettings/tst_qsettings.cpp
+++ b/tests/auto/qsettings/tst_qsettings.cpp
@@ -242,7 +242,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);
@@ -299,7 +298,6 @@ static bool writeCustom3File(QIODevice &device, const QSettings::SettingsMap &ma
out << "OK";
return true;
}
-#endif
static void populateWithFormats()
{
@@ -307,15 +305,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
@@ -324,7 +319,6 @@ tst_QSettings::tst_QSettings()
);
QVERIFY(custom1 == QSettings::CustomFormat1);
QVERIFY(custom2 == QSettings::CustomFormat2);
-#endif
}
void tst_QSettings::init()
@@ -1144,9 +1138,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);
@@ -2643,14 +2637,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:
;
}
@@ -3549,7 +3541,6 @@ void tst_QSettings::allKeys()
}
}
-#if QT_VERSION >= 0x040100
void tst_QSettings::registerFormat()
{
QSettings settings1(QSettings::IniFormat, QSettings::UserScope, "software.org", "KillerAPP");
@@ -3647,7 +3638,6 @@ void tst_QSettings::setPath()
TEST_PATH(i == 0, "custom2", CustomFormat2, SystemScope, "iota")
}
}
-#endif
void tst_QSettings::setDefaultFormat()
{
diff --git a/tests/auto/qsidebar/tst_qsidebar.cpp b/tests/auto/qsidebar/tst_qsidebar.cpp
index 7a262e6b1b..705e2227f1 100644
--- a/tests/auto/qsidebar/tst_qsidebar.cpp
+++ b/tests/auto/qsidebar/tst_qsidebar.cpp
@@ -176,6 +176,32 @@ 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);
+
+#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 7668491c48..c1a827b0e5 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/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp b/tests/auto/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp
index 9f92c37540..18aa5fca1a 100644
--- a/tests/auto/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp
+++ b/tests/auto/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp
@@ -129,6 +129,10 @@ private slots:
void task236755_hiddenColumns();
void task247867_insertRowsSort();
+ void task248868_staticSorting();
+ void task248868_dynamicSorting();
+ void task250023_fetchMore();
+ void task251296_hiddenChildren();
protected:
void buildHierarchy(const QStringList &data, QAbstractItemModel *model);
@@ -1505,9 +1509,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
}
@@ -1529,9 +1530,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
}
@@ -2479,5 +2477,246 @@ void tst_QSortFilterProxyModel::task247867_insertRowsSort()
QCOMPARE(proxyModel.sortColumn(), 0);
}
+void tst_QSortFilterProxyModel::task248868_staticSorting()
+{
+ QStandardItemModel model(0, 1);
+ QSortFilterProxyModel proxy;
+ proxy.setSourceModel(&model);
+ proxy.setDynamicSortFilter(false);
+ QStringList initial = QString("bateau avion dragon hirondelle flamme camion elephant").split(" ");
+
+ // prepare model
+ QStandardItem *root = model.invisibleRootItem ();
+ QList<QStandardItem *> items;
+ for (int i = 0; i < initial.count(); ++i) {
+ items.append(new QStandardItem(initial.at(i)));
+ }
+ root->insertRows(0, items);
+ QCOMPARE(model.rowCount(QModelIndex()), initial.count());
+ QCOMPARE(model.columnCount(QModelIndex()), 1);
+
+ // make sure the proxy is unsorted
+ QCOMPARE(proxy.columnCount(QModelIndex()), 1);
+ QCOMPARE(proxy.rowCount(QModelIndex()), initial.count());
+ for (int row = 0; row < proxy.rowCount(QModelIndex()); ++row) {
+ QModelIndex index = proxy.index(row, 0, QModelIndex());
+ QCOMPARE(proxy.data(index, Qt::DisplayRole).toString(), initial.at(row));
+ }
+
+ // sort
+ proxy.sort(0);
+
+ QStringList expected = initial;
+ expected.sort();
+ // make sure the proxy is sorted
+ for (int row = 0; row < proxy.rowCount(QModelIndex()); ++row) {
+ QModelIndex index = proxy.index(row, 0, QModelIndex());
+ QCOMPARE(proxy.data(index, Qt::DisplayRole).toString(), expected.at(row));
+ }
+
+ //update one item.
+ model.setItem(0, 0, new QStandardItem("girafe"));
+
+ // make sure the proxy is updated but not sorted
+ expected.replaceInStrings("bateau", "girafe");
+ for (int row = 0; row < proxy.rowCount(QModelIndex()); ++row) {
+ QModelIndex index = proxy.index(row, 0, QModelIndex());
+ QCOMPARE(proxy.data(index, Qt::DisplayRole).toString(), expected.at(row));
+ }
+
+ // sort again
+ proxy.sort(0);
+ expected.sort();
+
+ // make sure the proxy is sorted
+ for (int row = 0; row < proxy.rowCount(QModelIndex()); ++row) {
+ QModelIndex index = proxy.index(row, 0, QModelIndex());
+ QCOMPARE(proxy.data(index, Qt::DisplayRole).toString(), expected.at(row));
+ }
+
+}
+
+void tst_QSortFilterProxyModel::task248868_dynamicSorting()
+{
+ QStringListModel model1;
+ const QStringList initial = QString("bateau avion dragon hirondelle flamme camion elephant").split(" ");
+ model1.setStringList(initial);
+ QSortFilterProxyModel proxy1;
+ proxy1.sort(0);
+ proxy1.setSourceModel(&model1);
+
+ QCOMPARE(proxy1.columnCount(QModelIndex()), 1);
+ //the model should not be sorted because sorting has not been set to dynamic yet.
+ QCOMPARE(proxy1.rowCount(QModelIndex()), initial.count());
+ for (int row = 0; row < proxy1.rowCount(QModelIndex()); ++row) {
+ QModelIndex index = proxy1.index(row, 0, QModelIndex());
+ QCOMPARE(proxy1.data(index, Qt::DisplayRole).toString(), initial.at(row));
+ }
+
+ proxy1.setDynamicSortFilter(true);
+
+ //now the model should be sorted.
+ QStringList expected = initial;
+ expected.sort();
+ for (int row = 0; row < proxy1.rowCount(QModelIndex()); ++row) {
+ QModelIndex index = proxy1.index(row, 0, QModelIndex());
+ QCOMPARE(proxy1.data(index, Qt::DisplayRole).toString(), expected.at(row));
+ }
+
+ QStringList initial2 = initial;
+ initial2.replaceInStrings("bateau", "girafe");
+ model1.setStringList(initial2); //this will cause a reset
+
+ QStringList expected2 = initial2;
+ expected2.sort();
+
+ //now the model should still be sorted.
+ for (int row = 0; row < proxy1.rowCount(QModelIndex()); ++row) {
+ QModelIndex index = proxy1.index(row, 0, QModelIndex());
+ QCOMPARE(proxy1.data(index, Qt::DisplayRole).toString(), expected2.at(row));
+ }
+
+ QStringListModel model2(initial);
+ proxy1.setSourceModel(&model2);
+
+ //the model should again be sorted
+ for (int row = 0; row < proxy1.rowCount(QModelIndex()); ++row) {
+ QModelIndex index = proxy1.index(row, 0, QModelIndex());
+ QCOMPARE(proxy1.data(index, Qt::DisplayRole).toString(), expected.at(row));
+ }
+}
+
+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 {
+ 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"));
+}
+
+
QTEST_MAIN(tst_QSortFilterProxyModel)
#include "tst_qsortfilterproxymodel.moc"
diff --git a/tests/auto/qsqldatabase/tst_databases.h b/tests/auto/qsqldatabase/tst_databases.h
index b529b7e652..ef51285667 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 28c9e8ecc0..665cfde3b3 100644
--- a/tests/auto/qsqldatabase/tst_qsqldatabase.cpp
+++ b/tests/auto/qsqldatabase/tst_qsqldatabase.cpp
@@ -93,28 +93,28 @@ private slots:
void addDatabase();
//database specific tests
- void recordMySQL_data();
+ void recordMySQL_data() { generic_data("QMYSQL"); }
void recordMySQL();
- void recordPSQL_data();
+ void recordPSQL_data() { generic_data("QPSQL"); }
void recordPSQL();
- void recordOCI_data();
+ void recordOCI_data() { generic_data("QOCI"); }
void recordOCI();
- void recordTDS_data();
+ void recordTDS_data() { generic_data("QTDS"); }
void recordTDS();
- void recordDB2_data();
+ void recordDB2_data() { generic_data("QDB2"); }
void recordDB2();
- void recordSQLite_data();
+ void recordSQLite_data() { generic_data("QSQLITE"); }
void recordSQLite();
- void recordAccess_data();
+ void recordAccess_data() { generic_data("QODBC"); }
void recordAccess();
- void recordSQLServer_data();
+ void recordSQLServer_data() { generic_data("QODBC"); }
void recordSQLServer();
- void recordIBase_data();
+ void recordIBase_data() {generic_data("QIBASE"); }
void recordIBase();
- void eventNotificationIBase_data() { generic_data(); }
+ void eventNotificationIBase_data() { generic_data("QIBASE"); }
void eventNotificationIBase();
- void eventNotificationPSQL_data() { generic_data(); }
+ void eventNotificationPSQL_data() { generic_data("QPSQL"); }
void eventNotificationPSQL();
//database specific 64 bit integer test
@@ -141,59 +141,65 @@ private slots:
void precisionPolicy_data() { generic_data(); }
void precisionPolicy();
- void db2_valueCacheUpdate_data() { generic_data(); }
+ void db2_valueCacheUpdate_data() { generic_data("QDB2"); }
void db2_valueCacheUpdate();
- void psql_schemas_data();
+ void psql_schemas_data() { generic_data("QPSQL"); }
void psql_schemas();
- void psql_escapedIdentifiers_data(){ psql_schemas_data(); }
+ void psql_escapedIdentifiers_data() { generic_data("QPSQL"); }
void psql_escapedIdentifiers();
- void psql_escapeBytea_data() { generic_data(); }
+ void psql_escapeBytea_data() { generic_data("QPSQL"); }
void psql_escapeBytea();
+ void bug_249059_data() { generic_data("QPSQL"); }
+ void bug_249059();
void mysqlOdbc_unsignedIntegers_data() { generic_data(); }
void mysqlOdbc_unsignedIntegers();
- void mysql_multiselect_data() { generic_data(); }
+ void mysql_multiselect_data() { generic_data("QMYSQL"); }
void mysql_multiselect(); // For task 144331
void accessOdbc_strings_data() { generic_data(); }
void accessOdbc_strings();
- void ibase_numericFields_data() { generic_data(); }
+ void ibase_numericFields_data() { generic_data("QIBASE"); }
void ibase_numericFields(); // For task 125053
- void ibase_fetchBlobs_data() { generic_data(); }
+ void ibase_fetchBlobs_data() { generic_data("QIBASE"); }
void ibase_fetchBlobs(); // For task 143471
- void ibase_useCustomCharset_data() { generic_data(); }
+ void ibase_useCustomCharset_data() { generic_data("QIBASE"); }
void ibase_useCustomCharset(); // For task 134608
- void ibase_procWithoutReturnValues_data() { generic_data(); } // For task 165423
+ void ibase_procWithoutReturnValues_data() { generic_data("QIBASE"); } // For task 165423
void ibase_procWithoutReturnValues();
- void ibase_procWithReturnValues_data() { generic_data(); } // For task 177530
+ void ibase_procWithReturnValues_data() { generic_data("QIBASE"); } // For task 177530
void ibase_procWithReturnValues();
- void odbc_reopenDatabase_data() { generic_data(); }
+ void odbc_reopenDatabase_data() { generic_data("QODBC"); }
void odbc_reopenDatabase();
- void odbc_uniqueidentifier_data() { generic_data(); }
+ void odbc_uniqueidentifier_data() { generic_data("QODBC"); }
void odbc_uniqueidentifier(); // For task 141822
- void odbc_uintfield_data() { generic_data(); }
+ void odbc_uintfield_data() { generic_data("QODBC"); }
void odbc_uintfield();
- void odbc_bindBoolean_data() { generic_data(); }
+ void odbc_bindBoolean_data() { generic_data("QODBC"); }
void odbc_bindBoolean();
- void oci_serverDetach_data() { generic_data(); }
+ void oci_serverDetach_data() { generic_data("QOCI"); }
void oci_serverDetach(); // For task 154518
- void oci_xmltypeSupport_data() { generic_data(); }
+ void oci_xmltypeSupport_data() { generic_data("QOCI"); }
void oci_xmltypeSupport();
- void oci_fieldLength_data() { generic_data(); }
+ void oci_fieldLength_data() { generic_data("QOCI"); }
void oci_fieldLength();
- void sqlite_bindAndFetchUInt_data() { generic_data(); }
+ 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);
void populateTestTables(QSqlDatabase db);
- void generic_data();
+ void generic_data(const QString &engine=QString());
#ifdef QT3_SUPPORT
void testRecordInfo(const FieldDef fieldDefs[], const Q3SqlRecordInfo& inf);
@@ -337,7 +343,8 @@ void tst_QSqlDatabase::dropTestTables(QSqlDatabase db)
<< qTableName("qtestBindBool")
<< qTableName("qtest_sqlguid")
<< qTableName("uint_table")
- << qTableName("uint_test");
+ << qTableName("uint_test")
+ << qTableName("bug_249059");
QSqlQuery q(0, db);
if (db.driverName().startsWith("QPSQL"))
@@ -360,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()
@@ -394,70 +402,14 @@ void tst_QSqlDatabase::cleanup()
{
}
-void tst_QSqlDatabase::recordOCI_data()
-{
- if (dbs.fillTestTable("QOCI") == 0)
- QSKIP("No Oracle database drivers are available in this Qt configuration", SkipAll);
-}
-
-void tst_QSqlDatabase::recordPSQL_data()
-{
- if (dbs.fillTestTable("QPSQL") == 0)
- QSKIP("No PostgreSQL database drivers are available in this Qt configuration", SkipAll);
-}
-
-void tst_QSqlDatabase::recordMySQL_data()
-{
- if (dbs.fillTestTable("QMYSQL") == 0)
- QSKIP("No MySQL database drivers are available in this Qt configuration", SkipAll);
-}
-
-void tst_QSqlDatabase::recordTDS_data()
-{
- if (dbs.fillTestTable("QTDS") == 0)
- QSKIP("No TDS database drivers are available in this Qt configuration", SkipAll);
-}
-
-void tst_QSqlDatabase::recordDB2_data()
+void tst_QSqlDatabase::generic_data(const QString& engine)
{
- if (dbs.fillTestTable("QDB2") == 0)
- QSKIP("No DB2 database drivers are available in this Qt configuration", SkipAll);
-}
-
-void tst_QSqlDatabase::recordSQLite_data()
-{
- if (dbs.fillTestTable("QSQLITE") == 0)
- QSKIP("No SQLite database drivers are available in this Qt configuration", SkipAll);
-}
-
-void tst_QSqlDatabase::recordAccess_data()
-{
- if (dbs.fillTestTable("QODBC") == 0)
- QSKIP("No ODBC database drivers are available in this Qt configuration", SkipAll);
-}
-
-void tst_QSqlDatabase::recordSQLServer_data()
-{
- if (dbs.fillTestTable("QODBC") == 0)
- QSKIP("No ODBC database drivers are available in this Qt configuration", SkipAll);
-}
-
-void tst_QSqlDatabase::recordIBase_data()
-{
- if (dbs.fillTestTable("QIBASE") == 0)
- QSKIP("No Interbase database drivers are available in this Qt configuration", SkipAll);
-}
-
-void tst_QSqlDatabase::psql_schemas_data()
-{
- if (dbs.fillTestTable("QPSQL") == 0)
- QSKIP("No Postgres database drivers are available in this Qt configuration", SkipAll);
-}
-
-void tst_QSqlDatabase::generic_data()
-{
- if (dbs.fillTestTable() == 0)
- QSKIP("No database drivers are available in this Qt configuration", SkipAll);
+ if ( dbs.fillTestTable(engine) == 0 ) {
+ if(engine.isEmpty())
+ QSKIP( "No database drivers are available in this Qt configuration", SkipAll );
+ else
+ QSKIP( (QString("No database drivers of type %1 are available in this Qt configuration").arg(engine)).toLocal8Bit(), SkipAll );
+ }
}
void tst_QSqlDatabase::addDatabase()
@@ -885,7 +837,6 @@ void tst_QSqlDatabase::recordTDS()
QFETCH(QString, dbName);
QSqlDatabase db = QSqlDatabase::database(dbName);
CHECK_DATABASE(db);
- DBMS_SPECIFIC(db, "QTDS");
static const FieldDef fieldDefs[] = {
FieldDef("tinyint", QVariant::Int, 255),
@@ -934,7 +885,6 @@ void tst_QSqlDatabase::recordOCI()
QFETCH(QString, dbName);
QSqlDatabase db = QSqlDatabase::database(dbName);
CHECK_DATABASE(db);
- DBMS_SPECIFIC(db, "QOCI");
// runtime check for Oracle version since V8 doesn't support TIMESTAMPs
if (tst_Databases::getOraVersion(db) >= 9) {
@@ -1010,7 +960,6 @@ void tst_QSqlDatabase::recordPSQL()
QFETCH(QString, dbName);
QSqlDatabase db = QSqlDatabase::database(dbName);
CHECK_DATABASE(db);
- DBMS_SPECIFIC(db, "QPSQL");
FieldDef byteadef;
if (db.driver()->hasFeature(QSqlDriver::BLOB))
@@ -1095,13 +1044,13 @@ void tst_QSqlDatabase::recordMySQL()
QFETCH(QString, dbName);
QSqlDatabase db = QSqlDatabase::database(dbName);
CHECK_DATABASE(db);
- DBMS_SPECIFIC(db, "QMYSQL");
FieldDef bin10, varbin10;
int major = tst_Databases::getMySqlVersion( db ).section( QChar('.'), 0, 0 ).toInt();
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
@@ -1176,7 +1125,6 @@ void tst_QSqlDatabase::recordDB2()
QFETCH(QString, dbName);
QSqlDatabase db = QSqlDatabase::database(dbName);
CHECK_DATABASE(db);
- DBMS_SPECIFIC(db, "QDB2");
static const FieldDef fieldDefs[] = {
FieldDef("char(20)", QVariant::String, QString("Blah1")),
@@ -1222,7 +1170,6 @@ void tst_QSqlDatabase::recordIBase()
QFETCH(QString, dbName);
QSqlDatabase db = QSqlDatabase::database(dbName);
CHECK_DATABASE(db);
- DBMS_SPECIFIC(db, "QIBASE");
static const FieldDef fieldDefs[] = {
FieldDef("char(20)", QVariant::String, QString("Blah1"), false),
@@ -1253,7 +1200,6 @@ void tst_QSqlDatabase::recordSQLite()
QFETCH(QString, dbName);
QSqlDatabase db = QSqlDatabase::database(dbName);
CHECK_DATABASE(db);
- DBMS_SPECIFIC(db, "QSQLITE");
static const FieldDef fieldDefs[] = {
// The affinity of these fields are TEXT so SQLite should give us strings, not ints or doubles.
@@ -1596,7 +1542,6 @@ void tst_QSqlDatabase::psql_escapeBytea()
QFETCH(QString, dbName);
QSqlDatabase db = QSqlDatabase::database(dbName);
CHECK_DATABASE(db);
- DBMS_SPECIFIC(db, "QPSQL");
const char dta[4] = {'\x71', '\x14', '\x32', '\x81'};
QByteArray ba(dta, 4);
@@ -1623,6 +1568,38 @@ void tst_QSqlDatabase::psql_escapeBytea()
QCOMPARE(i, 4);
}
+void tst_QSqlDatabase::bug_249059()
+{
+ QFETCH(QString, dbName);
+ QSqlDatabase db = QSqlDatabase::database(dbName);
+ CHECK_DATABASE(db);
+
+ QSqlQuery q(db);
+ QString tableName = qTableName("bug_249059");
+ QVERIFY_SQL(q, exec(QString("CREATE TABLE %1 (dt timestamp, t time)").arg(tableName)));
+
+ QSqlQuery iq(db);
+ QVERIFY_SQL(iq, prepare(QString("INSERT INTO %1 VALUES (?, ?)").arg(tableName)));
+ iq.bindValue(0, QVariant(QString("2001-09-09 04:05:06.789 -5:00")));
+ iq.bindValue(1, QVariant(QString("04:05:06.789 -5:00")));
+ QVERIFY_SQL(iq, exec());
+ iq.bindValue(0, QVariant(QString("2001-09-09 04:05:06.789 +5:00")));
+ iq.bindValue(1, QVariant(QString("04:05:06.789 +5:00")));
+ QVERIFY_SQL(iq, exec());
+
+ QVERIFY_SQL(q, exec(QString("SELECT dt, t FROM %1").arg(tableName)));
+ QVERIFY_SQL(q, next());
+ QDateTime dt1=q.value(0).toDateTime();
+ QTime t1=q.value(1).toTime();
+ QVERIFY_SQL(q, next());
+ QDateTime dt2=q.value(0).toDateTime();
+ QTime t2=q.value(1).toTime();
+
+ // These will fail when timezone support is added, when that's the case, set the second record to 14:05:06.789 and it should work correctly
+ QCOMPARE(dt1, dt2);
+ QCOMPARE(t1, t2);
+}
+
// This test should be rewritten to work with Oracle as well - or the Oracle driver
// should be fixed to make this test pass (handle overflows)
void tst_QSqlDatabase::precisionPolicy()
@@ -1769,7 +1746,6 @@ void tst_QSqlDatabase::ibase_numericFields()
QFETCH(QString, dbName);
QSqlDatabase db = QSqlDatabase::database(dbName);
CHECK_DATABASE(db);
- DBMS_SPECIFIC(db, "QIBASE");
QSqlQuery q(db);
QString tableName = qTableName("numericfields");
@@ -1843,7 +1819,6 @@ void tst_QSqlDatabase::ibase_fetchBlobs()
QFETCH(QString, dbName);
QSqlDatabase db = QSqlDatabase::database(dbName);
CHECK_DATABASE(db);
- DBMS_SPECIFIC(db, "QIBASE");
QString tableName = qTableName("qtest_ibaseblobs");
QSqlQuery q(db);
@@ -1876,7 +1851,6 @@ void tst_QSqlDatabase::ibase_procWithoutReturnValues()
QFETCH(QString, dbName);
QSqlDatabase db = QSqlDatabase::database(dbName);
CHECK_DATABASE(db);
- DBMS_SPECIFIC(db, "QIBASE");
QSqlQuery q(db);
QString procName = qTableName("qtest_proc1");
@@ -1957,11 +1931,6 @@ void tst_QSqlDatabase::odbc_reopenDatabase()
QSqlDatabase db = QSqlDatabase::database(dbName);
CHECK_DATABASE(db);
- if (!tst_Databases::isSqlServer(db)) {
- QSKIP("SQL Server (ODBC) specific test", SkipSingle);
- return;
- }
-
QSqlQuery q(db);
QVERIFY_SQL(q, exec("SELECT * from " + qTableName("qtest")));
QVERIFY_SQL(q, next());
@@ -1976,7 +1945,6 @@ void tst_QSqlDatabase::odbc_bindBoolean()
QFETCH(QString, dbName);
QSqlDatabase db = QSqlDatabase::database(dbName);
CHECK_DATABASE(db);
- DBMS_SPECIFIC(db, "QODBC");
QSqlQuery q(db);
QVERIFY_SQL(q, exec("CREATE TABLE " + qTableName("qtestBindBool") + "(id int, boolvalue bit)"));
@@ -2005,7 +1973,6 @@ void tst_QSqlDatabase::mysql_multiselect()
QFETCH(QString, dbName);
QSqlDatabase db = QSqlDatabase::database(dbName);
CHECK_DATABASE(db);
- DBMS_SPECIFIC(db, "QMYSQL");
QSqlQuery q(db);
QVERIFY_SQL(q, exec("select version()"));
@@ -2027,7 +1994,6 @@ void tst_QSqlDatabase::ibase_useCustomCharset()
QFETCH(QString, dbName);
QSqlDatabase db = QSqlDatabase::database(dbName);
CHECK_DATABASE(db);
- DBMS_SPECIFIC(db, "QIBASE");
QString nonlatin1string("��");
db.close();
@@ -2051,7 +2017,6 @@ void tst_QSqlDatabase::oci_serverDetach()
QFETCH(QString, dbName);
QSqlDatabase db = QSqlDatabase::database(dbName);
CHECK_DATABASE(db);
- DBMS_SPECIFIC(db, "QOCI");
for (int i = 0; i < 2; i++) {
db.close();
@@ -2072,7 +2037,6 @@ void tst_QSqlDatabase::oci_xmltypeSupport()
QFETCH(QString, dbName);
QSqlDatabase db = QSqlDatabase::database(dbName);
CHECK_DATABASE(db);
- DBMS_SPECIFIC(db, "QOCI");
QString tableName = qTableName("qtest_xmltype");
QString xml("<?xml version=\"1.0\"?><TABLE_NAME>MY_TABLE</TABLE_NAME>");
@@ -2101,7 +2065,6 @@ void tst_QSqlDatabase::oci_fieldLength()
QFETCH(QString, dbName);
QSqlDatabase db = QSqlDatabase::database(dbName);
CHECK_DATABASE(db);
- DBMS_SPECIFIC(db, "QOCI");
QString tableName = qTableName("qtest");
QSqlQuery q(db);
@@ -2166,7 +2129,6 @@ void tst_QSqlDatabase::odbc_uintfield()
QFETCH(QString, dbName);
QSqlDatabase db = QSqlDatabase::database(dbName);
CHECK_DATABASE(db);
- DBMS_SPECIFIC(db, "QODBC");
QString tableName = qTableName("uint_table");
unsigned int val = 4294967295U;
@@ -2228,7 +2190,6 @@ void tst_QSqlDatabase::eventNotificationIBase()
QFETCH(QString, dbName);
QSqlDatabase db = QSqlDatabase::database(dbName);
CHECK_DATABASE(db);
- DBMS_SPECIFIC(db, "QIBASE");
QString procedureName = qTableName("posteventProc");
QSqlDriver *driver=db.driver();
@@ -2258,7 +2219,6 @@ void tst_QSqlDatabase::eventNotificationPSQL()
QFETCH(QString, dbName);
QSqlDatabase db = QSqlDatabase::database(dbName);
CHECK_DATABASE(db);
- DBMS_SPECIFIC(db, "QPSQL");
QSqlQuery query(db);
QString procedureName = qTableName("posteventProc");
@@ -2279,7 +2239,6 @@ void tst_QSqlDatabase::sqlite_bindAndFetchUInt()
QFETCH(QString, dbName);
QSqlDatabase db = QSqlDatabase::database(dbName);
CHECK_DATABASE(db);
- DBMS_SPECIFIC(db, "QSQLITE3");
QSqlQuery q(db);
QString tableName = qTableName("uint_test");
@@ -2301,7 +2260,6 @@ void tst_QSqlDatabase::db2_valueCacheUpdate()
QFETCH(QString, dbName);
QSqlDatabase db = QSqlDatabase::database(dbName);
CHECK_DATABASE(db);
- DBMS_SPECIFIC(db, "QDB2");
QString tableName = qTableName("qtest");
QSqlQuery q(db);
@@ -2317,5 +2275,28 @@ void tst_QSqlDatabase::db2_valueCacheUpdate()
QCOMPARE(c1.toString(), q.value(0).toString());
}
+void tst_QSqlDatabase::sqlStatementUseIsNull_189093()
+{
+ // NULL = NULL is unknow, 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 0000000000..0024841e12
--- /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 0000000000..bbd7483212
--- /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 684d6ac94a..074f16fab4 100644
--- a/tests/auto/qsqlquery/tst_qsqlquery.cpp
+++ b/tests/auto/qsqlquery/tst_qsqlquery.cpp
@@ -93,7 +93,7 @@ private slots:
void transaction();
void record_data() { generic_data(); }
void record();
- void record_sqlite_data() { generic_data(); }
+ void record_sqlite_data() { generic_data("QSQLITE"); }
void record_sqlite();
void finish_data() { generic_data(); }
void finish();
@@ -107,13 +107,13 @@ private slots:
void forwardOnly();
// bug specific tests
- void bitField_data();
+ void bitField_data() {generic_data("QTDS"); }
void bitField();
- void nullBlob_data();
+ void nullBlob_data() { generic_data("QOCI"); }
void nullBlob();
void blob_data() { generic_data(); }
void blob();
- void rawField_data();
+ void rawField_data() { generic_data("QOCI"); }
void rawField();
void precision_data() { generic_data(); }
void precision();
@@ -129,19 +129,19 @@ private slots:
void char1SelectUnicode();
void synonyms_data() { generic_data(); }
void synonyms();
- void oraOutValues_data();
+ void oraOutValues_data() { generic_data("QOCI"); }
void oraOutValues();
- void mysqlOutValues_data();
+ void mysqlOutValues_data() { generic_data("QMYSQL"); }
void mysqlOutValues();
- void oraClob_data() { oraOutValues_data(); }
+ void oraClob_data() { generic_data("QOCI"); }
void oraClob();
- void oraLong_data() { oraOutValues_data(); }
+ void oraLong_data() { generic_data("QOCI"); }
void oraLong();
- void outValuesDB2_data();
+ void outValuesDB2_data() { generic_data("QDB2"); }
void outValuesDB2();
- void storedProceduresIBase_data();
+ void storedProceduresIBase_data() {generic_data("QIBASE"); }
void storedProceduresIBase();
- void oraRowId_data();
+ void oraRowId_data() { generic_data("QOCI"); }
void oraRowId();
void prepare_bind_exec_data() { generic_data(); }
void prepare_bind_exec();
@@ -175,13 +175,17 @@ private slots:
void emptyTableNavigate();
#ifdef NOT_READY_YET
- void bug217003_data() { generic_data(); }
- void bug217003();
+ void task_217003_data() { generic_data(); }
+ void task_217003();
#endif
+ void task_250026_data() { generic_data("QODBC"); }
+ void task_250026();
+
+
private:
// returns all database connections
- void generic_data();
+ void generic_data(const QString &engine=QString());
void dropTestTables( QSqlDatabase db );
void createTestTables( QSqlDatabase db );
void populateTestTables( QSqlDatabase db );
@@ -247,28 +251,14 @@ void tst_QSqlQuery::cleanup()
}
}
-void tst_QSqlQuery::bitField_data()
-{
- if ( dbs.fillTestTable( "QTDS" ) == 0 )
- QSKIP( "No TDS database drivers are available in this Qt configuration", SkipAll );
-}
-
-void tst_QSqlQuery::nullBlob_data()
-{
- if ( dbs.fillTestTable( "QOCI" ) == 0 )
- QSKIP( "No Oracle database drivers are available in this Qt configuration", SkipAll );
-}
-
-void tst_QSqlQuery::rawField_data()
-{
- if ( dbs.fillTestTable( "QOCI" ) == 0 )
- QSKIP( "No Oracle database drivers are available in this Qt configuration", SkipAll );
-}
-
-void tst_QSqlQuery::generic_data()
+void tst_QSqlQuery::generic_data(const QString& engine)
{
- if ( dbs.fillTestTable() == 0 )
- QSKIP( "No database drivers are available in this Qt configuration", SkipAll );
+ if ( dbs.fillTestTable(engine) == 0 ) {
+ if(engine.isEmpty())
+ QSKIP( "No database drivers are available in this Qt configuration", SkipAll );
+ else
+ QSKIP( (QString("No database drivers of type %1 are available in this Qt configuration").arg(engine)).toLocal8Bit(), SkipAll );
+ }
}
void tst_QSqlQuery::dropTestTables( QSqlDatabase db )
@@ -307,6 +297,7 @@ void tst_QSqlQuery::dropTestTables( QSqlDatabase db )
#ifdef NOT_READY_YET
tablenames << qTableName( "Planet" );
#endif
+ tablenames << qTableName( "task_250026" );
tst_Databases::safeDropTables( db, tablenames );
}
@@ -421,12 +412,6 @@ void tst_QSqlQuery::char1SelectUnicode()
QSKIP( "Database not unicode capable", SkipSingle );
}
-void tst_QSqlQuery::oraRowId_data()
-{
- if ( dbs.fillTestTable( "QOCI" ) == 0 )
- QSKIP( "No Oracle database drivers are available in this Qt configuration", SkipAll );
-}
-
void tst_QSqlQuery::oraRowId()
{
QFETCH( QString, dbName );
@@ -461,12 +446,6 @@ void tst_QSqlQuery::oraRowId()
QCOMPARE( q.value( 0 ).toString(), QString( "b" ) );
}
-void tst_QSqlQuery::mysqlOutValues_data()
-{
- if ( dbs.fillTestTable( "QMYSQL" ) == 0 )
- QSKIP( "No MySQL database drivers are available in this Qt configuration", SkipAll );
-}
-
void tst_QSqlQuery::mysqlOutValues()
{
QFETCH( QString, dbName );
@@ -517,12 +496,6 @@ void tst_QSqlQuery::mysqlOutValues()
QVERIFY_SQL( q, exec( "drop procedure " + qTableName( "qtestproc" ) ) );
}
-void tst_QSqlQuery::oraOutValues_data()
-{
- if ( dbs.fillTestTable( "QOCI" ) == 0 )
- QSKIP( "No Oracle database drivers are available in this Qt configuration", SkipAll );
-}
-
void tst_QSqlQuery::oraOutValues()
{
QFETCH( QString, dbName );
@@ -670,18 +643,11 @@ void tst_QSqlQuery::oraClob()
QVERIFY( q.value( 1 ).toByteArray() == loong.toLatin1() );
}
-void tst_QSqlQuery::storedProceduresIBase_data()
-{
- if ( dbs.fillTestTable( "QIBASE" ) == 0 )
- QSKIP( "No Interbase database drivers are available in this Qt configuration", SkipAll );
-}
-
void tst_QSqlQuery::storedProceduresIBase()
{
QFETCH( QString, dbName );
QSqlDatabase db = QSqlDatabase::database( dbName );
CHECK_DATABASE( db );
- DBMS_SPECIFIC( db, "QIBASE" );
QSqlQuery q( db );
q.exec( "drop procedure " + qTableName( "TESTPROC" ) );
@@ -713,12 +679,6 @@ void tst_QSqlQuery::storedProceduresIBase()
q.exec( "drop procedure " + qTableName( "TestProc" ) );
}
-void tst_QSqlQuery::outValuesDB2_data()
-{
- if ( dbs.fillTestTable( "QDB2" ) == 0 )
- QSKIP( "No DB2 database drivers are available in this Qt configuration", SkipAll );
-}
-
void tst_QSqlQuery::outValuesDB2()
{
QFETCH( QString, dbName );
@@ -1355,7 +1315,6 @@ void tst_QSqlQuery::nullBlob()
QFETCH( QString, dbName );
QSqlDatabase db = QSqlDatabase::database( dbName );
CHECK_DATABASE( db );
- DBMS_SPECIFIC( db, "QOCI" );
QSqlQuery q( db );
QVERIFY_SQL( q, exec( "create table " + qTableName( "qtest_nullblob" ) + " (id int primary key, bb blob)" ) );
@@ -1385,7 +1344,6 @@ void tst_QSqlQuery::rawField()
QFETCH( QString, dbName );
QSqlDatabase db = QSqlDatabase::database( dbName );
CHECK_DATABASE( db );
- DBMS_SPECIFIC( db, "QOCI" );
QSqlQuery q( db );
q.setForwardOnly( true );
@@ -2103,7 +2061,6 @@ void tst_QSqlQuery::record_sqlite()
QFETCH( QString, dbName );
QSqlDatabase db = QSqlDatabase::database( dbName );
CHECK_DATABASE( db );
- DBMS_SPECIFIC( db, "QSQLITE" );
QSqlQuery q( db );
@@ -2131,7 +2088,6 @@ void tst_QSqlQuery::oraLong()
QFETCH( QString, dbName );
QSqlDatabase db = QSqlDatabase::database( dbName );
CHECK_DATABASE( db );
- DBMS_SPECIFIC( db, "QOCI" );
QSqlQuery q( db );
@@ -2158,7 +2114,7 @@ void tst_QSqlQuery::execErrorRecovery()
QSqlQuery q( db );
- QVERIFY_SQL( q, exec( "create table " + qTableName( "qtest_exerr" ) + " (id int primary key)" ) );
+ QVERIFY_SQL( q, exec( "create table " + qTableName( "qtest_exerr" ) + " (id int not null primary key)" ) );
QVERIFY_SQL( q, prepare( "insert into " + qTableName( "qtest_exerr" ) + " values (?)" ) );
q.addBindValue( 1 );
@@ -2698,7 +2654,7 @@ void tst_QSqlQuery::emptyTableNavigate()
}
#ifdef NOT_READY_YET
-void tst_QSqlQuery::bug217003()
+void tst_QSqlQuery::task_217003()
{
QFETCH( QString, dbName );
QSqlDatabase db = QSqlDatabase::database( dbName );
@@ -2726,5 +2682,34 @@ void tst_QSqlQuery::bug217003()
}
#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() );
+}
+
QTEST_MAIN( tst_QSqlQuery )
#include "tst_qsqlquery.moc"
diff --git a/tests/auto/qsqlquerymodel/tst_qsqlquerymodel.cpp b/tests/auto/qsqlquerymodel/tst_qsqlquerymodel.cpp
index 63202f8b44..88b5770572 100644
--- a/tests/auto/qsqlquerymodel/tst_qsqlquerymodel.cpp
+++ b/tests/auto/qsqlquerymodel/tst_qsqlquerymodel.cpp
@@ -95,7 +95,7 @@ private slots:
void setQueryWithNoRowsInResultSet();
private:
- void generic_data();
+ void generic_data(const QString &engine=QString());
void dropTestTables(QSqlDatabase db);
void createTestTables(QSqlDatabase db);
void populateTestTables(QSqlDatabase db);
@@ -202,10 +202,14 @@ void tst_QSqlQueryModel::populateTestTables(QSqlDatabase db)
tst_Databases::safeDropTables(db, QStringList() << qTableName("manytmp") << qTableName("test3tmp"));
}
-void tst_QSqlQueryModel::generic_data()
+void tst_QSqlQueryModel::generic_data(const QString& engine)
{
- if (dbs.fillTestTable() == 0)
- QSKIP("No database drivers are available in this Qt configuration", SkipAll);
+ if ( dbs.fillTestTable(engine) == 0 ) {
+ if(engine.isEmpty())
+ QSKIP( "No database drivers are available in this Qt configuration", SkipAll );
+ else
+ QSKIP( (QString("No database drivers of type %1 are available in this Qt configuration").arg(engine)).toLocal8Bit(), SkipAll );
+ }
}
void tst_QSqlQueryModel::init()
diff --git a/tests/auto/qsqlrelationaltablemodel/tst_qsqlrelationaltablemodel.cpp b/tests/auto/qsqlrelationaltablemodel/tst_qsqlrelationaltablemodel.cpp
index 76785c339a..bb2cdddd52 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 6015d1c2ee..0e7355e71d 100644
--- a/tests/auto/qsqltablemodel/tst_qsqltablemodel.cpp
+++ b/tests/auto/qsqltablemodel/tst_qsqltablemodel.cpp
@@ -66,38 +66,59 @@ public:
tst_Databases dbs;
public slots:
- void initTestCase_data();
void initTestCase();
void cleanupTestCase();
void init();
void cleanup();
private slots:
+ void select_data() { generic_data(); }
void select();
+ void submitAll_data() { generic_data(); }
void submitAll();
- void setRecord_data();
+ void setRecord_data() { generic_data(); }
void setRecord();
+ void insertRow_data() { generic_data(); }
void insertRow();
+ void insertRecord_data() { generic_data(); }
void insertRecord();
+ void insertMultiRecords_data() { generic_data(); }
void insertMultiRecords();
+ void removeRow_data() { generic_data(); }
void removeRow();
+ void removeRows_data() { generic_data(); }
void removeRows();
+ void removeInsertedRow_data() { generic_data(); }
void removeInsertedRow();
+ void setFilter_data() { generic_data(); }
void setFilter();
+ void setInvalidFilter_data() { generic_data(); }
void setInvalidFilter();
+ void emptyTable_data() { generic_data(); }
void emptyTable();
+ void tablesAndSchemas_data() { generic_data("QPSQL"); }
void tablesAndSchemas();
+ void whitespaceInIdentifiers_data() { generic_data(); }
void whitespaceInIdentifiers();
+ void primaryKeyOrder_data() { generic_data("QSQLITE"); }
void primaryKeyOrder();
+ void sqlite_bigTable_data() { generic_data("QSQLITE"); }
void sqlite_bigTable();
// bug specific tests
+ void insertRecordBeforeSelect_data() { generic_data(); }
void insertRecordBeforeSelect();
+ void submitAllOnInvalidTable_data() { generic_data(); }
void submitAllOnInvalidTable();
+ void insertRecordsInLoop_data() { generic_data(); }
void insertRecordsInLoop();
+ void sqlite_attachedDatabase_data() { generic_data("QSQLITE"); }
void sqlite_attachedDatabase(); // For task 130799
+
+private:
+ void generic_data(const QString& engine=QString());
};
tst_QSqlTableModel::tst_QSqlTableModel()
@@ -121,9 +142,10 @@ void tst_QSqlTableModel::dropTestTables()
<< qTableName("test2")
<< qTableName("test3")
<< qTableName("emptytable")
- << qTableName("bigtable");
+ << qTableName("bigtable")
+ << qTableName("foo");
if (testWhiteSpaceNames(db.driverName()))
- tableNames << qTableName("qtestw hitespace");
+ tableNames << qTableName("qtestw hitespace", db.driver());
tst_Databases::safeDropTables(db, tableNames);
@@ -160,16 +182,16 @@ void tst_QSqlTableModel::repopulateTestTables()
QSqlDatabase db = QSqlDatabase::database(dbs.dbNames.at(i));
QSqlQuery q(db);
- QVERIFY_SQL( q, exec("delete from " + qTableName("test")));
+ q.exec("delete from " + qTableName("test"));
QVERIFY_SQL( q, exec("insert into " + qTableName("test") + " values(1, 'harry', 1)"));
QVERIFY_SQL( q, exec("insert into " + qTableName("test") + " values(2, 'trond', 2)"));
QVERIFY_SQL( q, exec("insert into " + qTableName("test") + " values(3, 'vohi', 3)"));
- QVERIFY_SQL( q, exec("delete from " + qTableName("test2")));
+ q.exec("delete from " + qTableName("test2"));
QVERIFY_SQL( q, exec("insert into " + qTableName("test2") + " values(1, 'herr')"));
QVERIFY_SQL( q, exec("insert into " + qTableName("test2") + " values(2, 'mister')"));
- QVERIFY_SQL( q, exec("delete from " + qTableName("test3")));
+ q.exec("delete from " + qTableName("test3"));
QVERIFY_SQL( q, exec("insert into " + qTableName("test3") + " values(1, 'foo', 'bar')"));
QVERIFY_SQL( q, exec("insert into " + qTableName("test3") + " values(2, 'baz', 'joe')"));
}
@@ -182,11 +204,13 @@ void tst_QSqlTableModel::recreateTestTables()
repopulateTestTables();
}
-void tst_QSqlTableModel::initTestCase_data()
+void tst_QSqlTableModel::generic_data(const QString &engine)
{
- if (dbs.fillTestTable() == 0) {
- qWarning("NO DATABASES");
- QSKIP("No database drivers are available in this Qt configuration", SkipAll);
+ if ( dbs.fillTestTable(engine) == 0 ) {
+ if(engine.isEmpty())
+ QSKIP( "No database drivers are available in this Qt configuration", SkipAll );
+ else
+ QSKIP( (QString("No database drivers of type %1 are available in this Qt configuration").arg(engine)).toLocal8Bit(), SkipAll );
}
}
@@ -212,7 +236,7 @@ void tst_QSqlTableModel::cleanup()
void tst_QSqlTableModel::select()
{
- QFETCH_GLOBAL(QString, dbName);
+ QFETCH(QString, dbName);
QSqlDatabase db = QSqlDatabase::database(dbName);
CHECK_DATABASE(db);
@@ -245,58 +269,56 @@ void tst_QSqlTableModel::select()
QCOMPARE(model.data(model.index(3, 3)), QVariant());
}
-void tst_QSqlTableModel::setRecord_data()
-{
- QTest::addColumn<uint>("submitpolicy");
- QTest::newRow("OnFieldChange") << (uint)QSqlTableModel::OnFieldChange;
- QTest::newRow("OnRowChange") << (uint)QSqlTableModel::OnRowChange;
- QTest::newRow("OnManualSubmit") << (uint)QSqlTableModel::OnManualSubmit;
-}
-
void tst_QSqlTableModel::setRecord()
{
- // This needs to be tested with ODBC, which requires a manual change to qsqldatabase\tst_databases.h
- // to ensure an ODBC db is added
-
- QFETCH_GLOBAL(QString, dbName);
- QFETCH(uint, submitpolicy);
+ QFETCH(QString, dbName);
QSqlDatabase db = QSqlDatabase::database(dbName);
CHECK_DATABASE(db);
- QSqlTableModel model(0, db);
- model.setEditStrategy((QSqlTableModel::EditStrategy)submitpolicy);
- model.setTable(qTableName("test3"));
- model.setSort(0, Qt::AscendingOrder);
- QVERIFY_SQL(model, select());
+ QList<QSqlTableModel::EditStrategy> policies = QList<QSqlTableModel::EditStrategy>() << QSqlTableModel::OnFieldChange << QSqlTableModel::OnRowChange << QSqlTableModel::OnManualSubmit;
+
+ QString Xsuffix;
+ foreach( QSqlTableModel::EditStrategy submitpolicy, policies) {
- for (int i = 0; i < model.rowCount(); ++i) {
- QSignalSpy spy(&model, SIGNAL(dataChanged(QModelIndex,QModelIndex)));
-
- QSqlRecord rec = model.record(i);
- rec.setValue(1, rec.value(1).toString() + 'X');
- rec.setValue(2, rec.value(2).toString() + 'X');
- QVERIFY(model.setRecord(i, rec));
-
- if ((QSqlTableModel::EditStrategy)submitpolicy == QSqlTableModel::OnManualSubmit)
- QVERIFY(model.submitAll());
- else {
- // dataChanged() is not emitted when submitAll() is called
- QCOMPARE(spy.count(), 2);
- QCOMPARE(spy.at(0).count(), 2);
- QCOMPARE(qvariant_cast<QModelIndex>(spy.at(0).at(0)), model.index(i, 1));
- QCOMPARE(qvariant_cast<QModelIndex>(spy.at(0).at(1)), model.index(i, 1));
+ QSqlTableModel model(0, db);
+ model.setEditStrategy((QSqlTableModel::EditStrategy)submitpolicy);
+ model.setTable(qTableName("test3"));
+ model.setSort(0, Qt::AscendingOrder);
+ QVERIFY_SQL(model, select());
+
+ for (int i = 0; i < model.rowCount(); ++i) {
+ QSignalSpy spy(&model, SIGNAL(dataChanged(QModelIndex,QModelIndex)));
+
+ QSqlRecord rec = model.record(i);
+ rec.setValue(1, rec.value(1).toString() + 'X');
+ rec.setValue(2, rec.value(2).toString() + 'X');
+ QVERIFY(model.setRecord(i, rec));
+
+ 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);
+ QCOMPARE(spy.at(0).count(), 2);
+ QCOMPARE(qvariant_cast<QModelIndex>(spy.at(0).at(0)), model.index(i, 1));
+ QCOMPARE(qvariant_cast<QModelIndex>(spy.at(0).at(1)), model.index(i, 1));
+ }
}
- }
- 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));
+ }
}
void tst_QSqlTableModel::insertRow()
{
- QFETCH_GLOBAL(QString, dbName);
+ QFETCH(QString, dbName);
QSqlDatabase db = QSqlDatabase::database(dbName);
CHECK_DATABASE(db);
@@ -321,7 +343,7 @@ void tst_QSqlTableModel::insertRow()
void tst_QSqlTableModel::insertRecord()
{
- QFETCH_GLOBAL(QString, dbName);
+ QFETCH(QString, dbName);
QSqlDatabase db = QSqlDatabase::database(dbName);
CHECK_DATABASE(db);
@@ -354,7 +376,7 @@ void tst_QSqlTableModel::insertRecord()
void tst_QSqlTableModel::insertMultiRecords()
{
- QFETCH_GLOBAL(QString, dbName);
+ QFETCH(QString, dbName);
QSqlDatabase db = QSqlDatabase::database(dbName);
CHECK_DATABASE(db);
@@ -403,7 +425,7 @@ void tst_QSqlTableModel::insertMultiRecords()
void tst_QSqlTableModel::submitAll()
{
- QFETCH_GLOBAL(QString, dbName);
+ QFETCH(QString, dbName);
QSqlDatabase db = QSqlDatabase::database(dbName);
CHECK_DATABASE(db);
@@ -438,7 +460,7 @@ void tst_QSqlTableModel::submitAll()
void tst_QSqlTableModel::removeRow()
{
- QFETCH_GLOBAL(QString, dbName);
+ QFETCH(QString, dbName);
QSqlDatabase db = QSqlDatabase::database(dbName);
CHECK_DATABASE(db);
@@ -484,7 +506,7 @@ void tst_QSqlTableModel::removeRow()
void tst_QSqlTableModel::removeRows()
{
- QFETCH_GLOBAL(QString, dbName);
+ QFETCH(QString, dbName);
QSqlDatabase db = QSqlDatabase::database(dbName);
CHECK_DATABASE(db);
@@ -533,7 +555,7 @@ void tst_QSqlTableModel::removeRows()
void tst_QSqlTableModel::removeInsertedRow()
{
- QFETCH_GLOBAL(QString, dbName);
+ QFETCH(QString, dbName);
QSqlDatabase db = QSqlDatabase::database(dbName);
CHECK_DATABASE(db);
@@ -565,7 +587,7 @@ void tst_QSqlTableModel::removeInsertedRow()
void tst_QSqlTableModel::emptyTable()
{
- QFETCH_GLOBAL(QString, dbName);
+ QFETCH(QString, dbName);
QSqlDatabase db = QSqlDatabase::database(dbName);
CHECK_DATABASE(db);
@@ -584,12 +606,10 @@ void tst_QSqlTableModel::emptyTable()
void tst_QSqlTableModel::tablesAndSchemas()
{
- QFETCH_GLOBAL(QString, dbName);
+ QFETCH(QString, dbName);
QSqlDatabase db = QSqlDatabase::database(dbName);
CHECK_DATABASE(db);
- DBMS_SPECIFIC(db, "QPSQL");
-
QSqlQuery q(db);
q.exec("DROP SCHEMA " + qTableName("testschema") + " CASCADE");
QVERIFY_SQL( q, exec("create schema " + qTableName("testschema")));
@@ -607,7 +627,7 @@ void tst_QSqlTableModel::tablesAndSchemas()
void tst_QSqlTableModel::whitespaceInIdentifiers()
{
- QFETCH_GLOBAL(QString, dbName);
+ QFETCH(QString, dbName);
QSqlDatabase db = QSqlDatabase::database(dbName);
CHECK_DATABASE(db);
@@ -623,16 +643,16 @@ void tst_QSqlTableModel::whitespaceInIdentifiers()
void tst_QSqlTableModel::primaryKeyOrder()
{
- QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE", "primaryKeyOrderTest");
- db.setDatabaseName(":memory:");
- QVERIFY_SQL(db, open());
+ QFETCH(QString, dbName);
+ QSqlDatabase db = QSqlDatabase::database(dbName);
+ CHECK_DATABASE(db);
QSqlQuery q(db);
- QVERIFY_SQL( q, exec("create table foo(a varchar(20), id int primary key, b varchar(20))"));
+ QVERIFY_SQL( q, exec("create table "+qTableName("foo")+"(a varchar(20), id int not null primary key, b varchar(20))"));
QSqlTableModel model(0, db);
- model.setTable("foo");
+ model.setTable(qTableName("foo"));
QSqlIndex pk = model.primaryKey();
QCOMPARE(pk.count(), 1);
@@ -652,7 +672,7 @@ void tst_QSqlTableModel::primaryKeyOrder()
void tst_QSqlTableModel::setInvalidFilter()
{
- QFETCH_GLOBAL(QString, dbName);
+ QFETCH(QString, dbName);
QSqlDatabase db = QSqlDatabase::database(dbName);
CHECK_DATABASE(db);
@@ -671,7 +691,7 @@ void tst_QSqlTableModel::setInvalidFilter()
void tst_QSqlTableModel::setFilter()
{
- QFETCH_GLOBAL(QString, dbName);
+ QFETCH(QString, dbName);
QSqlDatabase db = QSqlDatabase::database(dbName);
CHECK_DATABASE(db);
@@ -724,12 +744,10 @@ void tst_QSqlTableModel::setFilter()
void tst_QSqlTableModel::sqlite_bigTable()
{
- QFETCH_GLOBAL(QString, dbName);
+ QFETCH(QString, dbName);
QSqlDatabase db = QSqlDatabase::database(dbName);
CHECK_DATABASE(db);
- DBMS_SPECIFIC(db, "QSQLITE");
-
bool hasTransactions = db.driver()->hasFeature(QSqlDriver::Transactions);
if (hasTransactions) QVERIFY(db.transaction());
QSqlQuery q(db);
@@ -763,7 +781,7 @@ void tst_QSqlTableModel::sqlite_bigTable()
// had first been called.
void tst_QSqlTableModel::insertRecordBeforeSelect()
{
- QFETCH_GLOBAL(QString, dbName);
+ QFETCH(QString, dbName);
QSqlDatabase db = QSqlDatabase::database(dbName);
CHECK_DATABASE(db);
@@ -796,7 +814,7 @@ void tst_QSqlTableModel::insertRecordBeforeSelect()
// are inserted and submitted on a non-existing table.
void tst_QSqlTableModel::submitAllOnInvalidTable()
{
- QFETCH_GLOBAL(QString, dbName);
+ QFETCH(QString, dbName);
QSqlDatabase db = QSqlDatabase::database(dbName);
CHECK_DATABASE(db);
@@ -828,7 +846,7 @@ void tst_QSqlTableModel::submitAllOnInvalidTable()
// For task 147575: the rowsRemoved signal emitted from the model was lying
void tst_QSqlTableModel::insertRecordsInLoop()
{
- QFETCH_GLOBAL(QString, dbName);
+ QFETCH(QString, dbName);
QSqlDatabase db = QSqlDatabase::database(dbName);
CHECK_DATABASE(db);
@@ -866,12 +884,10 @@ void tst_QSqlTableModel::insertRecordsInLoop()
void tst_QSqlTableModel::sqlite_attachedDatabase()
{
- QFETCH_GLOBAL(QString, dbName);
+ QFETCH(QString, dbName);
QSqlDatabase db = QSqlDatabase::database(dbName);
CHECK_DATABASE(db);
- DBMS_SPECIFIC(db, "QSQLITE");
-
QSqlDatabase attachedDb = QSqlDatabase::cloneDatabase(db, db.driverName() + QLatin1String("attached"));
attachedDb.setDatabaseName(db.databaseName()+QLatin1String("attached.dat"));
QVERIFY_SQL(attachedDb, open());
diff --git a/tests/auto/qsqlthread/tst_qsqlthread.cpp b/tests/auto/qsqlthread/tst_qsqlthread.cpp
index 94e0f9845c..8b8fc6516f 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:
@@ -286,10 +286,14 @@ tst_QSqlThread::~tst_QSqlThread()
{
}
-void tst_QSqlThread::generic_data()
+void tst_QSqlThread::generic_data(const QString& engine)
{
- if (dbs.fillTestTable() == 0)
- QSKIP("No database drivers are available in this Qt configuration", SkipAll);
+ if ( dbs.fillTestTable(engine) == 0 ) {
+ if(engine.isEmpty())
+ QSKIP( "No database drivers are available in this Qt configuration", SkipAll );
+ else
+ QSKIP( (QString("No database drivers of type %1 are available in this Qt configuration").arg(engine)).toLocal8Bit(), SkipAll );
+ }
}
void tst_QSqlThread::dropTestTables()
diff --git a/tests/auto/qstandarditemmodel/tst_qstandarditemmodel.cpp b/tests/auto/qstandarditemmodel/tst_qstandarditemmodel.cpp
index ec27e96b77..a53032365d 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);
@@ -1428,7 +1419,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;
}
@@ -1440,19 +1431,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) {
@@ -1472,9 +1463,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)
};
@@ -1482,7 +1473,7 @@ void tst_QStandardItemModel::treeDragAndDrop()
{
const int nRow = 5;
const int nCol = 3;
-
+
QStandardItemModel model;
QStandardItemModel checkModel;
@@ -1491,13 +1482,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 ++)
@@ -1506,21 +1497,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 ++)
@@ -1529,9 +1518,9 @@ void tst_QStandardItemModel::treeDragAndDrop()
}
}
}
-
+
QVERIFY(compareModels(&model, &checkModel));
-
+
FriendlyTreeView view;
view.setModel(&model);
view.expandAll();
@@ -1560,7 +1549,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));
@@ -1568,7 +1557,6 @@ void tst_QStandardItemModel::treeDragAndDrop()
QVERIFY(compareModels(&model, &checkModel));
}
-
//
// step2 drag "item 3" and "item 3/0" into "item 4"
//
@@ -1576,10 +1564,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 e777a399a8..e9c12c64cc 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 c84218673a..e020f9e5b6 100644
--- a/tests/auto/qstyle/tst_qstyle.cpp
+++ b/tests/auto/qstyle/tst_qstyle.cpp
@@ -74,9 +74,7 @@
#define SRCDIR "."
#endif
-#if QT_VERSION >= 0x040200
#include <QCleanlooksStyle>
-#endif
#ifdef Q_WS_MAC
#include <QMacStyle>
@@ -362,7 +360,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);
diff --git a/tests/auto/qstylesheetstyle/tst_qstylesheetstyle.cpp b/tests/auto/qstylesheetstyle/tst_qstylesheetstyle.cpp
index 7954d0062c..aa63753d88 100644
--- a/tests/auto/qstylesheetstyle/tst_qstylesheetstyle.cpp
+++ b/tests/auto/qstylesheetstyle/tst_qstylesheetstyle.cpp
@@ -94,6 +94,7 @@ private slots:
void embeddedFonts();
void opaquePaintEvent_data();
void opaquePaintEvent();
+ void task188195_baseBackground();
//at the end because it mess with the style.
void widgetStyle();
@@ -1354,6 +1355,28 @@ void tst_QStyleSheetStyle::opaquePaintEvent()
QCOMPARE(cl.autoFillBackground(), !styled );
}
+void tst_QStyleSheetStyle::task188195_baseBackground()
+{
+ QTreeView tree;
+ tree.setStyleSheet( "QTreeView:disabled { background-color:#ab1251; }" );
+ tree.show();
+ QTest::qWait(20);
+ QImage image(tree.width(), tree.height(), QImage::Format_ARGB32);
+
+ tree.render(&image);
+ QVERIFY(testForColors(image, tree.palette().base().color()));
+ QVERIFY(!testForColors(image, QColor(0xab, 0x12, 0x51)));
+
+ tree.setEnabled(false);
+ tree.render(&image);
+ QVERIFY(testForColors(image, QColor(0xab, 0x12, 0x51)));
+
+ tree.setEnabled(true);
+ tree.render(&image);
+ QVERIFY(testForColors(image, tree.palette().base().color()));
+ QVERIFY(!testForColors(image, QColor(0xab, 0x12, 0x51)));
+}
+
QTEST_MAIN(tst_QStyleSheetStyle)
diff --git a/tests/auto/qsvgdevice/tst_qsvgdevice.cpp b/tests/auto/qsvgdevice/tst_qsvgdevice.cpp
index 713b3faf4e..4f16e7e62e 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 4a170312c1..4da99da7f5 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 7ce30aac66..8c5da7b2b7 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 13a33d351b..7cf708cac3 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/qtemporaryfile/tst_qtemporaryfile.cpp b/tests/auto/qtemporaryfile/tst_qtemporaryfile.cpp
index 9b78cefefa..c5afe0478a 100644
--- a/tests/auto/qtemporaryfile/tst_qtemporaryfile.cpp
+++ b/tests/auto/qtemporaryfile/tst_qtemporaryfile.cpp
@@ -77,6 +77,7 @@ private slots:
void resize();
void openOnRootDrives();
void stressTest();
+ void rename();
public:
};
@@ -143,7 +144,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 +156,6 @@ void tst_QTemporaryFile::fileTemplate()
QCOMPARE(file.fileName().right(suffix.length()), suffix);
file.close();
-#endif
}
@@ -233,9 +232,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
@@ -335,5 +331,30 @@ 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"));
+}
+
QTEST_MAIN(tst_QTemporaryFile)
#include "tst_qtemporaryfile.moc"
diff --git a/tests/auto/qtextcodec/test/test.pro b/tests/auto/qtextcodec/test/test.pro
index d7373c643c..69cd1dd5d0 100644
--- a/tests/auto/qtextcodec/test/test.pro
+++ b/tests/auto/qtextcodec/test/test.pro
@@ -5,6 +5,7 @@ wince*|symbian {
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 c7e39a8fcc..ff4b4bbefc 100644
--- a/tests/auto/qtextcodec/tst_qtextcodec.cpp
+++ b/tests/auto/qtextcodec/tst_qtextcodec.cpp
@@ -69,6 +69,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 48212a462b..86b253f254 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 58cc019ca8..4ef5299a04 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 bace7b4e9d..46f5f0c5ac 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 534c7b04dc..4ea3e2f38d 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/qtextobject/tst_qtextobject.cpp b/tests/auto/qtextobject/tst_qtextobject.cpp
index 4fbc155a12..4d1d4b20fd 100644
--- a/tests/auto/qtextobject/tst_qtextobject.cpp
+++ b/tests/auto/qtextobject/tst_qtextobject.cpp
@@ -62,6 +62,7 @@ public:
private slots:
void getSetCheck();
+ void testStandAloneTextObject();
};
tst_QTextObject::tst_QTextObject()
@@ -105,5 +106,23 @@ void tst_QTextObject::getSetCheck()
QCOMPARE(INT_MAX, obj2.userState());
}
+class TestTextObject : public QTextObject
+{
+public:
+ TestTextObject(QTextDocument *document) : QTextObject(document) {}
+};
+
+void tst_QTextObject::testStandAloneTextObject()
+{
+ QTextDocument document;
+ TestTextObject textObject(&document);
+
+ QCOMPARE(textObject.document(), &document);
+ // don't crash
+ textObject.format();
+ textObject.formatIndex();
+ QCOMPARE(textObject.objectIndex(), -1);
+}
+
QTEST_MAIN(tst_QTextObject)
#include "tst_qtextobject.moc"
diff --git a/tests/auto/qtextscriptengine/tst_qtextscriptengine.cpp b/tests/auto/qtextscriptengine/tst_qtextscriptengine.cpp
index f70082d8cf..c60e0bf7e8 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 fa1eda621d..d70f6780f6 100644
--- a/tests/auto/qtextstream/tst_qtextstream.cpp
+++ b/tests/auto/qtextstream/tst_qtextstream.cpp
@@ -60,6 +60,8 @@
#include <QTextCodec>
#include <QProcess>
+#include "../network-settings.h"
+
static const char *TestFileName = "testfile";
Q_DECLARE_METATYPE(qlonglong)
@@ -102,10 +104,8 @@ private slots:
void readLineFromTextDevice_data();
void readLineFromTextDevice();
void readLineUntilNull();
-#if QT_VERSION >= 0x040103
void readLineMaxlen_data();
void readLineMaxlen();
-#endif
void readLinesFromBufferCRCR();
// all
@@ -222,13 +222,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();
@@ -1233,7 +1231,7 @@ void tst_QTextStream::stillOpenWhenAtEnd()
QSKIP("Qt/CE: Cannot test network on emulator", SkipAll);
#endif
QTcpSocket socket;
- socket.connectToHost(FTP_TEST_SERVER_NAME_1, 21);
+ socket.connectToHost(QtNetworkSettings::serverName(), 143);
#if defined(Q_OS_SYMBIAN)
QVERIFY(socket.waitForReadyRead(30000));
#else
diff --git a/tests/auto/qthread/tst_qthread.cpp b/tests/auto/qthread/tst_qthread.cpp
index e2624b72dd..239328e518 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/qtime/tst_qtime.cpp b/tests/auto/qtime/tst_qtime.cpp
index ea4700dd7e..cc91e9db4d 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 e35f4066b7..957619377d 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 d962301286..cde2765a3b 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 8516ddb200..74c405e1b8 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/qtreeview/tst_qtreeview.cpp b/tests/auto/qtreeview/tst_qtreeview.cpp
index 0e22a895b5..3612f2e495 100644
--- a/tests/auto/qtreeview/tst_qtreeview.cpp
+++ b/tests/auto/qtreeview/tst_qtreeview.cpp
@@ -213,6 +213,8 @@ private slots:
void indexRowSizeHint();
void addRowsWhileSectionsAreHidden();
+ void filterProxyModelCrash();
+
// task-specific tests:
void task174627_moveLeftToRoot();
void task171902_expandWith1stColHidden();
@@ -478,11 +480,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));
@@ -1011,11 +1009,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;
@@ -1690,9 +1684,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);
@@ -1872,14 +1873,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()
@@ -2839,6 +2834,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
@@ -3264,6 +3282,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 b21b240910..c3595c2c46 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 ec05b49882..fa16c9d8b4 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 88bb345d97..a8dffe9f53 100644
--- a/tests/auto/qudpsocket/tst_qudpsocket.cpp
+++ b/tests/auto/qudpsocket/tst_qudpsocket.cpp
@@ -537,9 +537,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;
@@ -607,7 +604,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 3b938f2b47..5a797927a8 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/Matriel");
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 78d597e423..d15f9c819b 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 ab3c65effa..ce3ac1ec6e 100644
--- a/tests/auto/qwaitcondition/tst_qwaitcondition.cpp
+++ b/tests/auto/qwaitcondition/tst_qwaitcondition.cpp
@@ -167,9 +167,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) {
{
@@ -246,7 +243,6 @@ void tst_QWaitCondition::wait_QMutex()
}
}
}
-#endif
}
void tst_QWaitCondition::wait_QReadWriteLock()
@@ -457,9 +453,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) {
@@ -606,9 +599,9 @@ void tst_QWaitCondition::wakeOne()
QCOMPARE(wake_Thread::count, 0);
- // QReadWriteLock
- QReadWriteLock readWriteLock;
- wake_Thread_2 rwthread[ThreadCount];
+ // QReadWriteLock
+ QReadWriteLock readWriteLock;
+ wake_Thread_2 rwthread[ThreadCount];
readWriteLock.lockForWrite();
for (x = 0; x < ThreadCount; ++x) {
@@ -652,14 +645,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;
@@ -726,7 +715,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 9fb5fa3952..d493219309 100644
--- a/tests/auto/qwidget/tst_qwidget.cpp
+++ b/tests/auto/qwidget/tst_qwidget.cpp
@@ -350,6 +350,7 @@ private slots:
void paintOutsidePaintEvent();
#endif
void updateOnDestroyedSignal();
+ void toplevelLineEditFocus();
private:
bool ensureScreenSize(int width, int height);
@@ -2584,9 +2585,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
@@ -2596,43 +2594,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
@@ -5385,7 +5367,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);
@@ -8797,5 +8779,20 @@ void tst_QWidget::updateOnDestroyedSignal()
QTest::qWait(200);
}
+void tst_QWidget::toplevelLineEditFocus()
+{
+ testWidget->hide();
+
+ QLineEdit w;
+ w.show();
+#ifdef Q_WS_X11
+ qt_x11_wait_for_window_manager(&w);
+#endif
+ QTest::qWait(200);
+
+ QCOMPARE(QApplication::activeWindow(), &w);
+ QCOMPARE(QApplication::focusWidget(), &w);
+}
+
QTEST_MAIN(tst_QWidget)
#include "tst_qwidget.moc"
diff --git a/tests/auto/qwmatrix/tst_qwmatrix.cpp b/tests/auto/qwmatrix/tst_qwmatrix.cpp
index 47fd41f105..4a816a8731 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 21bfa8a7e2..258309d06b 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/rcc/tst_rcc.cpp b/tests/auto/rcc/tst_rcc.cpp
index 3297b2b118..57649b481a 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/selftests/alive/alive.pro b/tests/auto/selftests/alive/alive.pro
index 4a6b788dc7..08cf358036 100644
--- a/tests/auto/selftests/alive/alive.pro
+++ b/tests/auto/selftests/alive/alive.pro
@@ -5,3 +5,4 @@ mac:CONFIG -= app_bundle
CONFIG -= debug_and_release_target
+TARGET = alive
diff --git a/tests/auto/selftests/assert/assert.pro b/tests/auto/selftests/assert/assert.pro
index 87513d479c..0e48375784 100644
--- a/tests/auto/selftests/assert/assert.pro
+++ b/tests/auto/selftests/assert/assert.pro
@@ -8,3 +8,4 @@ CONFIG -= debug_and_release_target
!win32:CONFIG += debug
+TARGET = assert
diff --git a/tests/auto/selftests/benchlibcallgrind/benchlibcallgrind.pro b/tests/auto/selftests/benchlibcallgrind/benchlibcallgrind.pro
index 34a43d0c0a..c9ec7e237f 100644
--- a/tests/auto/selftests/benchlibcallgrind/benchlibcallgrind.pro
+++ b/tests/auto/selftests/benchlibcallgrind/benchlibcallgrind.pro
@@ -6,3 +6,4 @@ mac:CONFIG -= app_bundle
CONFIG -= debug_and_release_target
+TARGET = benchlibcallgrind
diff --git a/tests/auto/selftests/benchlibeventcounter/benchlibeventcounter.pro b/tests/auto/selftests/benchlibeventcounter/benchlibeventcounter.pro
index 41e090ef91..44b02953b4 100644
--- a/tests/auto/selftests/benchlibeventcounter/benchlibeventcounter.pro
+++ b/tests/auto/selftests/benchlibeventcounter/benchlibeventcounter.pro
@@ -6,3 +6,4 @@ mac:CONFIG -= app_bundle
CONFIG -= debug_and_release_target
+TARGET = benchlibeventcounter
diff --git a/tests/auto/selftests/benchliboptions/benchliboptions.pro b/tests/auto/selftests/benchliboptions/benchliboptions.pro
index 2f02eef0c8..4dee69fa5a 100644
--- a/tests/auto/selftests/benchliboptions/benchliboptions.pro
+++ b/tests/auto/selftests/benchliboptions/benchliboptions.pro
@@ -6,3 +6,4 @@ mac:CONFIG -= app_bundle
CONFIG -= debug_and_release_target
+TARGET = benchliboptions
diff --git a/tests/auto/selftests/benchlibtickcounter/benchlibtickcounter.pro b/tests/auto/selftests/benchlibtickcounter/benchlibtickcounter.pro
index 3d8cbfa9e2..3621449862 100644
--- a/tests/auto/selftests/benchlibtickcounter/benchlibtickcounter.pro
+++ b/tests/auto/selftests/benchlibtickcounter/benchlibtickcounter.pro
@@ -6,3 +6,4 @@ mac:CONFIG -= app_bundle
CONFIG -= debug_and_release_target
+TARGET = benchlibtickcounter
diff --git a/tests/auto/selftests/benchlibwalltime/benchlibwalltime.pro b/tests/auto/selftests/benchlibwalltime/benchlibwalltime.pro
index 364e80b74f..f4694b59ad 100644
--- a/tests/auto/selftests/benchlibwalltime/benchlibwalltime.pro
+++ b/tests/auto/selftests/benchlibwalltime/benchlibwalltime.pro
@@ -6,3 +6,4 @@ mac:CONFIG -= app_bundle
CONFIG -= debug_and_release_target
+TARGET = benchlibwalltime
diff --git a/tests/auto/selftests/cmptest/cmptest.pro b/tests/auto/selftests/cmptest/cmptest.pro
index c19a77a941..8b2df1c923 100644
--- a/tests/auto/selftests/cmptest/cmptest.pro
+++ b/tests/auto/selftests/cmptest/cmptest.pro
@@ -6,3 +6,4 @@ mac:CONFIG -= app_bundle
CONFIG -= debug_and_release_target
+TARGET = cmptest
diff --git a/tests/auto/selftests/commandlinedata/commandlinedata.pro b/tests/auto/selftests/commandlinedata/commandlinedata.pro
index c900fc8ea4..96bfa5b9d3 100644
--- a/tests/auto/selftests/commandlinedata/commandlinedata.pro
+++ b/tests/auto/selftests/commandlinedata/commandlinedata.pro
@@ -6,3 +6,4 @@ mac:CONFIG -= app_bundle
CONFIG -= debug_and_release_target
+TARGET = commandlinedata
diff --git a/tests/auto/selftests/crashes/crashes.pro b/tests/auto/selftests/crashes/crashes.pro
index 57eb4c71c6..7eec6eacb1 100644
--- a/tests/auto/selftests/crashes/crashes.pro
+++ b/tests/auto/selftests/crashes/crashes.pro
@@ -7,3 +7,4 @@ mac:CONFIG -= app_bundle
CONFIG -= debug_and_release_target
+TARGET = crashes
diff --git a/tests/auto/selftests/datatable/datatable.pro b/tests/auto/selftests/datatable/datatable.pro
index 69aed7a8b0..98f04d6864 100644
--- a/tests/auto/selftests/datatable/datatable.pro
+++ b/tests/auto/selftests/datatable/datatable.pro
@@ -6,3 +6,4 @@ mac:CONFIG -= app_bundle
CONFIG -= debug_and_release_target
+TARGET = datatable
diff --git a/tests/auto/selftests/datetime/datetime.pro b/tests/auto/selftests/datetime/datetime.pro
index 489e5cbc51..b015661371 100644
--- a/tests/auto/selftests/datetime/datetime.pro
+++ b/tests/auto/selftests/datetime/datetime.pro
@@ -6,3 +6,4 @@ mac:CONFIG -= app_bundle
CONFIG -= debug_and_release_target
+TARGET = datetime
diff --git a/tests/auto/selftests/differentexec/differentexec.pro b/tests/auto/selftests/differentexec/differentexec.pro
index e78964927a..c11b0d3608 100644
--- a/tests/auto/selftests/differentexec/differentexec.pro
+++ b/tests/auto/selftests/differentexec/differentexec.pro
@@ -6,3 +6,4 @@ mac:CONFIG -= app_bundle
CONFIG -= debug_and_release_target
+TARGET = differentexec
diff --git a/tests/auto/selftests/exception/exception.pro b/tests/auto/selftests/exception/exception.pro
index 14d8c7fe27..65705c685d 100644
--- a/tests/auto/selftests/exception/exception.pro
+++ b/tests/auto/selftests/exception/exception.pro
@@ -6,3 +6,4 @@ mac:CONFIG -= app_bundle
CONFIG -= debug_and_release_target
+TARGET = exception
diff --git a/tests/auto/selftests/expectfail/expectfail.pro b/tests/auto/selftests/expectfail/expectfail.pro
index c4111992f7..97a35607ef 100644
--- a/tests/auto/selftests/expectfail/expectfail.pro
+++ b/tests/auto/selftests/expectfail/expectfail.pro
@@ -6,3 +6,4 @@ mac:CONFIG -= app_bundle
CONFIG -= debug_and_release_target
+TARGET = expectfail
diff --git a/tests/auto/selftests/failinit/failinit.pro b/tests/auto/selftests/failinit/failinit.pro
index 729cf74fb0..e3d54c860c 100644
--- a/tests/auto/selftests/failinit/failinit.pro
+++ b/tests/auto/selftests/failinit/failinit.pro
@@ -6,3 +6,4 @@ mac:CONFIG -= app_bundle
CONFIG -= debug_and_release_target
+TARGET = failinit
diff --git a/tests/auto/selftests/failinitdata/failinitdata.pro b/tests/auto/selftests/failinitdata/failinitdata.pro
index 6b48af115d..1ff96f74eb 100644
--- a/tests/auto/selftests/failinitdata/failinitdata.pro
+++ b/tests/auto/selftests/failinitdata/failinitdata.pro
@@ -6,3 +6,4 @@ mac:CONFIG -= app_bundle
CONFIG -= debug_and_release_target
+TARGET = failinitdata
diff --git a/tests/auto/selftests/fetchbogus/fetchbogus.pro b/tests/auto/selftests/fetchbogus/fetchbogus.pro
index badb6369e5..3a5d13b78e 100644
--- a/tests/auto/selftests/fetchbogus/fetchbogus.pro
+++ b/tests/auto/selftests/fetchbogus/fetchbogus.pro
@@ -6,3 +6,4 @@ mac:CONFIG -= app_bundle
CONFIG -= debug_and_release_target
+TARGET = fetchbogus
diff --git a/tests/auto/selftests/globaldata/globaldata.pro b/tests/auto/selftests/globaldata/globaldata.pro
index eb3b4548f5..1bdcf07890 100644
--- a/tests/auto/selftests/globaldata/globaldata.pro
+++ b/tests/auto/selftests/globaldata/globaldata.pro
@@ -6,3 +6,4 @@ mac:CONFIG -= app_bundle
CONFIG -= debug_and_release_target
+TARGET = globaldata
diff --git a/tests/auto/selftests/maxwarnings/maxwarnings.pro b/tests/auto/selftests/maxwarnings/maxwarnings.pro
index b43affecb2..393a96464c 100644
--- a/tests/auto/selftests/maxwarnings/maxwarnings.pro
+++ b/tests/auto/selftests/maxwarnings/maxwarnings.pro
@@ -6,3 +6,4 @@ mac:CONFIG -= app_bundle
CONFIG -= debug_and_release_target
+TARGET = maxwarnings
diff --git a/tests/auto/selftests/multiexec/multiexec.pro b/tests/auto/selftests/multiexec/multiexec.pro
index 723f56f250..639b9b8e5f 100644
--- a/tests/auto/selftests/multiexec/multiexec.pro
+++ b/tests/auto/selftests/multiexec/multiexec.pro
@@ -6,3 +6,4 @@ mac:CONFIG -= app_bundle
CONFIG -= debug_and_release_target
+TARGET = multiexec
diff --git a/tests/auto/selftests/qexecstringlist/qexecstringlist.pro b/tests/auto/selftests/qexecstringlist/qexecstringlist.pro
index 27afcb2550..73bdaca06e 100644
--- a/tests/auto/selftests/qexecstringlist/qexecstringlist.pro
+++ b/tests/auto/selftests/qexecstringlist/qexecstringlist.pro
@@ -6,3 +6,4 @@ mac:CONFIG -= app_bundle
CONFIG -= debug_and_release_target
+TARGET = qexecstringlist
diff --git a/tests/auto/selftests/singleskip/singleskip.pro b/tests/auto/selftests/singleskip/singleskip.pro
index 0d66f6813f..9762c97a09 100644
--- a/tests/auto/selftests/singleskip/singleskip.pro
+++ b/tests/auto/selftests/singleskip/singleskip.pro
@@ -6,3 +6,4 @@ mac:CONFIG -= app_bundle
CONFIG -= debug_and_release_target
+TARGET = singleskip
diff --git a/tests/auto/selftests/skip/skip.pro b/tests/auto/selftests/skip/skip.pro
index 545a579f7f..989fdeb627 100644
--- a/tests/auto/selftests/skip/skip.pro
+++ b/tests/auto/selftests/skip/skip.pro
@@ -6,3 +6,4 @@ mac:CONFIG -= app_bundle
CONFIG -= debug_and_release_target
+TARGET = skip
diff --git a/tests/auto/selftests/skipglobal/skipglobal.pro b/tests/auto/selftests/skipglobal/skipglobal.pro
index 97553c6551..0205a88e2f 100644
--- a/tests/auto/selftests/skipglobal/skipglobal.pro
+++ b/tests/auto/selftests/skipglobal/skipglobal.pro
@@ -6,3 +6,4 @@ mac:CONFIG -= app_bundle
CONFIG -= debug_and_release_target
+TARGET = skipglobal
diff --git a/tests/auto/selftests/skipinit/skipinit.pro b/tests/auto/selftests/skipinit/skipinit.pro
index d8ee13ec8f..691218312b 100644
--- a/tests/auto/selftests/skipinit/skipinit.pro
+++ b/tests/auto/selftests/skipinit/skipinit.pro
@@ -6,3 +6,4 @@ mac:CONFIG -= app_bundle
CONFIG -= debug_and_release_target
+TARGET = skipinit
diff --git a/tests/auto/selftests/skipinitdata/skipinitdata.pro b/tests/auto/selftests/skipinitdata/skipinitdata.pro
index 8da653ea3b..206ed11f73 100644
--- a/tests/auto/selftests/skipinitdata/skipinitdata.pro
+++ b/tests/auto/selftests/skipinitdata/skipinitdata.pro
@@ -6,3 +6,4 @@ mac:CONFIG -= app_bundle
CONFIG -= debug_and_release_target
+TARGET = skipinitdata
diff --git a/tests/auto/selftests/sleep/sleep.pro b/tests/auto/selftests/sleep/sleep.pro
index 7b28ccc983..0bd322549f 100644
--- a/tests/auto/selftests/sleep/sleep.pro
+++ b/tests/auto/selftests/sleep/sleep.pro
@@ -6,3 +6,4 @@ mac:CONFIG -= app_bundle
CONFIG -= debug_and_release_target
+TARGET = sleep
diff --git a/tests/auto/selftests/strcmp/strcmp.pro b/tests/auto/selftests/strcmp/strcmp.pro
index 489211c5b7..3121c25a1b 100644
--- a/tests/auto/selftests/strcmp/strcmp.pro
+++ b/tests/auto/selftests/strcmp/strcmp.pro
@@ -6,3 +6,4 @@ mac:CONFIG -= app_bundle
CONFIG -= debug_and_release_target
+TARGET = strcmp
diff --git a/tests/auto/selftests/subtest/subtest.pro b/tests/auto/selftests/subtest/subtest.pro
index 4d258eeaa9..fe3cafa14a 100644
--- a/tests/auto/selftests/subtest/subtest.pro
+++ b/tests/auto/selftests/subtest/subtest.pro
@@ -6,3 +6,4 @@ mac:CONFIG -= app_bundle
CONFIG -= debug_and_release_target
+TARGET = subtest
diff --git a/tests/auto/selftests/tst_selftests.cpp b/tests/auto/selftests/tst_selftests.cpp
index 4243612b0e..103fd79bbc 100644
--- a/tests/auto/selftests/tst_selftests.cpp
+++ b/tests/auto/selftests/tst_selftests.cpp
@@ -195,7 +195,7 @@ void tst_Selftests::runSubTest()
QProcess proc;
proc.setEnvironment(QStringList(""));
- proc.start(subdir + "/tst_" + subdir, arguments);
+ proc.start(subdir + "/" + subdir, arguments);
QVERIFY(proc.waitForFinished());
const QByteArray out(proc.readAllStandardOutput());
@@ -309,7 +309,7 @@ void tst_Selftests::checkXML() const
QProcess proc;
proc.setEnvironment(QStringList(""));
- proc.start(subdir + "/tst_" + subdir, arguments);
+ proc.start(subdir + "/" + subdir, arguments);
QVERIFY(proc.waitForFinished());
QByteArray out(proc.readAllStandardOutput());
diff --git a/tests/auto/selftests/updateBaselines.sh b/tests/auto/selftests/updateBaselines.sh
deleted file mode 100755
index a0f22e666d..0000000000
--- a/tests/auto/selftests/updateBaselines.sh
+++ /dev/null
@@ -1,34 +0,0 @@
-# Be *really* sure that your fix is right, before running this script.
-
-tests=" \
- cmptest \
- cmptest \
- cmptest \
- datatable \
- datetime \
- expectfail \
- expectfail \
- globaldata \
- globaldata \
- maxwarnings \
- multiexec \
- singleskip \
- qexecstringlist \
- differentexec \
- skip \
- skip \
- skipglobal \
- sleep \
- strcmp \
- subtest \
- warnings"
-
-for test in $tests; do
- echo "Updating $test"
- cd $test
- baseline="../expected_"$test".txt"
- p4 edit $baseline
- ./tst_$test > ../expected_"$test".txt
- p4 revert -a $baseline
- cd ..
-done
diff --git a/tests/auto/selftests/waitwithoutgui/waitwithoutgui.pro b/tests/auto/selftests/waitwithoutgui/waitwithoutgui.pro
index 8cdf7cc144..cf3098ddcf 100644
--- a/tests/auto/selftests/waitwithoutgui/waitwithoutgui.pro
+++ b/tests/auto/selftests/waitwithoutgui/waitwithoutgui.pro
@@ -6,3 +6,4 @@ mac:CONFIG -= app_bundle
CONFIG -= debug_and_release_target
+TARGET = waitwithoutgui
diff --git a/tests/auto/selftests/warnings/warnings.pro b/tests/auto/selftests/warnings/warnings.pro
index 9ae22d31ab..eaf06b41d8 100644
--- a/tests/auto/selftests/warnings/warnings.pro
+++ b/tests/auto/selftests/warnings/warnings.pro
@@ -6,3 +6,4 @@ mac:CONFIG -= app_bundle
CONFIG -= debug_and_release_target
+TARGET = warnings
diff --git a/tests/benchmarks/qgraphicswidget/qgraphicswidget.pro b/tests/benchmarks/qgraphicswidget/qgraphicswidget.pro
new file mode 100644
index 0000000000..f1ec54ef4e
--- /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 0000000000..97837e287d
--- /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 ae7ecb27e9..1b5acb4e28 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 cd8b142f22..65833b8aa4 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 af2c412932..60c099b4e5 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 a0e7de3599..c50010c84b 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 65759ade6c..9f91f9b2e1 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/lib/qhelpsearchindexreader_clucene.cpp b/tools/assistant/lib/qhelpsearchindexreader_clucene.cpp
index 82a3a17d3f..a1ba0019e1 100644
--- a/tools/assistant/lib/qhelpsearchindexreader_clucene.cpp
+++ b/tools/assistant/lib/qhelpsearchindexreader_clucene.cpp
@@ -83,9 +83,8 @@ void QHelpSearchIndexReader::cancelSearching()
mutex.unlock();
}
-void QHelpSearchIndexReader::search(const QString &collectionFile,
- const QString &indexFilesFolder,
- const QList<QHelpSearchQuery> &queryList)
+void QHelpSearchIndexReader::search(const QString &collectionFile, const QString &indexFilesFolder,
+ const QList<QHelpSearchQuery> &queryList)
{
QMutexLocker lock(&mutex);
@@ -147,17 +146,16 @@ void QHelpSearchIndexReader::run()
try {
#endif
QCLuceneBooleanQuery booleanQuery;
- if (!buildQuery(booleanQuery, queryList)) {
+ QCLuceneStandardAnalyzer analyzer;
+ if (!buildQuery(booleanQuery, queryList, analyzer)) {
emit searchingFinished(0);
return;
}
const QStringList attribList = engine.filterAttributes(engine.currentFilter());
if (!attribList.isEmpty()) {
- QCLuceneStandardAnalyzer analyzer;
QCLuceneQuery* query = QCLuceneQueryParser::parse(QLatin1String("+")
- + attribList.join(QLatin1String(" +")), QLatin1String("attribute"),
- analyzer);
+ + attribList.join(QLatin1String(" +")), QLatin1String("attribute"), analyzer);
if (!query) {
emit searchingFinished(0);
@@ -168,10 +166,26 @@ void QHelpSearchIndexReader::run()
QCLuceneIndexSearcher indexSearcher(indexPath);
QCLuceneHits hits = indexSearcher.search(booleanQuery);
- const QStringList namespaceList = engine.registeredDocumentations();
+
+ bool boost = true;
+ QCLuceneBooleanQuery tryHarderQuery;
+ if (hits.length() == 0) {
+ if (buildTryHarderQuery(tryHarderQuery, queryList, analyzer)) {
+ if (!attribList.isEmpty()) {
+ QCLuceneQuery* query = QCLuceneQueryParser::parse(QLatin1String("+")
+ + attribList.join(QLatin1String(" +")), QLatin1String("attribute"),
+ analyzer);
+ tryHarderQuery.add(query, true, true, false);
+ }
+ hits = indexSearcher.search(tryHarderQuery);
+ boost = (hits.length() == 0);
+ }
+ }
QSet<QString> pathSet;
QCLuceneDocument document;
+ const QStringList namespaceList = engine.registeredDocumentations();
+
for (qint32 i = 0; i < hits.length(); i++) {
document = hits.document(i);
const QString path = document.get(QLatin1String("path"));
@@ -192,8 +206,8 @@ void QHelpSearchIndexReader::run()
}
indexSearcher.close();
- int count = hitList.count();
- if (count > 0)
+ const int count = hitList.count();
+ if ((count > 0) && boost)
boostSearchHits(engine, hitList, queryList);
emit searchingFinished(hitList.count());
@@ -206,11 +220,9 @@ void QHelpSearchIndexReader::run()
}
}
-bool QHelpSearchIndexReader::defaultQuery(const QString &term,
- QCLuceneBooleanQuery &booleanQuery)
+bool QHelpSearchIndexReader::defaultQuery(const QString &term, QCLuceneBooleanQuery &booleanQuery,
+ QCLuceneStandardAnalyzer &analyzer)
{
- QCLuceneStandardAnalyzer analyzer;
-
const QLatin1String c("content");
const QLatin1String t("titleTokenized");
@@ -226,21 +238,23 @@ bool QHelpSearchIndexReader::defaultQuery(const QString &term,
}
bool QHelpSearchIndexReader::buildQuery(QCLuceneBooleanQuery &booleanQuery,
- const QList<QHelpSearchQuery> &queryList)
+ const QList<QHelpSearchQuery> &queryList, QCLuceneStandardAnalyzer &analyzer)
{
foreach (const QHelpSearchQuery query, queryList) {
switch (query.fieldName) {
case QHelpSearchQuery::FUZZY: {
const QLatin1String fuzzy("~");
- foreach (const QString term, query.wordList) {
- if (term.isEmpty() || !defaultQuery(term.toLower() + fuzzy, booleanQuery))
+ foreach (const QString &term, query.wordList) {
+ if (term.isEmpty()
+ || !defaultQuery(term.toLower() + fuzzy, booleanQuery, analyzer)) {
return false;
+ }
}
} break;
case QHelpSearchQuery::WITHOUT: {
QStringList stopWords = QCLuceneStopAnalyzer().englishStopWords();
- foreach (const QString term, query.wordList) {
+ foreach (const QString &term, query.wordList) {
if (stopWords.contains(term, Qt::CaseInsensitive))
continue;
@@ -259,14 +273,14 @@ bool QHelpSearchIndexReader::buildQuery(QCLuceneBooleanQuery &booleanQuery,
} break;
case QHelpSearchQuery::PHRASE: {
- const QString term = query.wordList.at(0).toLower();
+ const QString &term = query.wordList.at(0).toLower();
if (term.contains(QLatin1Char(' '))) {
QStringList termList = term.split(QLatin1String(" "));
QCLucenePhraseQuery *q = new QCLucenePhraseQuery();
QStringList stopWords = QCLuceneStopAnalyzer().englishStopWords();
- foreach (const QString t, termList) {
- if (!stopWords.contains(t, Qt::CaseInsensitive))
- q->addTerm(QCLuceneTerm(QLatin1String("content"), t.toLower()));
+ foreach (const QString &term, termList) {
+ if (!stopWords.contains(term, Qt::CaseInsensitive))
+ q->addTerm(QCLuceneTerm(QLatin1String("content"), term.toLower()));
}
booleanQuery.add(q, true, true, false);
} else {
@@ -286,7 +300,7 @@ bool QHelpSearchIndexReader::buildQuery(QCLuceneBooleanQuery &booleanQuery,
case QHelpSearchQuery::ALL: {
QStringList stopWords = QCLuceneStopAnalyzer().englishStopWords();
- foreach (const QString term, query.wordList) {
+ foreach (const QString &term, query.wordList) {
if (stopWords.contains(term, Qt::CaseInsensitive))
continue;
@@ -302,9 +316,8 @@ bool QHelpSearchIndexReader::buildQuery(QCLuceneBooleanQuery &booleanQuery,
} break;
case QHelpSearchQuery::DEFAULT: {
- QCLuceneStandardAnalyzer analyzer;
- foreach (const QString t, query.wordList) {
- QCLuceneQuery *query = QCLuceneQueryParser::parse(t.toLower(),
+ foreach (const QString &term, query.wordList) {
+ QCLuceneQuery *query = QCLuceneQueryParser::parse(term.toLower(),
QLatin1String("content"), analyzer);
if (query)
@@ -313,8 +326,8 @@ bool QHelpSearchIndexReader::buildQuery(QCLuceneBooleanQuery &booleanQuery,
} break;
case QHelpSearchQuery::ATLEAST: {
- foreach (const QString term, query.wordList) {
- if (term.isEmpty() || !defaultQuery(term.toLower(), booleanQuery))
+ foreach (const QString &term, query.wordList) {
+ if (term.isEmpty() || !defaultQuery(term.toLower(), booleanQuery, analyzer))
return false;
}
}
@@ -324,16 +337,38 @@ bool QHelpSearchIndexReader::buildQuery(QCLuceneBooleanQuery &booleanQuery,
return true;
}
+bool QHelpSearchIndexReader::buildTryHarderQuery(QCLuceneBooleanQuery &booleanQuery,
+ const QList<QHelpSearchQuery> &queryList, QCLuceneStandardAnalyzer &analyzer)
+{
+ bool retVal = false;
+ foreach (const QHelpSearchQuery query, queryList) {
+ switch (query.fieldName) {
+ default: break;
+ case QHelpSearchQuery::DEFAULT: {
+ foreach (const QString &term, query.wordList) {
+ QCLuceneQuery *query = QCLuceneQueryParser::parse(term.toLower(),
+ QLatin1String("content"), analyzer);
+
+ if (query) {
+ retVal = true;
+ booleanQuery.add(query, true, false, false);
+ }
+ }
+ } break;
+ }
+ }
+ return retVal;
+}
+
void QHelpSearchIndexReader::boostSearchHits(const QHelpEngineCore &engine,
- QList<QHelpSearchEngine::SearchHit> &hitList,
- const QList<QHelpSearchQuery> &queryList)
+ QList<QHelpSearchEngine::SearchHit> &hitList, const QList<QHelpSearchQuery> &queryList)
{
foreach (const QHelpSearchQuery query, queryList) {
if (query.fieldName != QHelpSearchQuery::DEFAULT)
continue;
QString joinedQuery = query.wordList.join(QLatin1String(" "));
-
+
QCLuceneStandardAnalyzer analyzer;
QCLuceneQuery *parsedQuery = QCLuceneQueryParser::parse(
joinedQuery, QLatin1String("content"), analyzer);
@@ -351,8 +386,7 @@ void QHelpSearchIndexReader::boostSearchHits(const QHelpEngineCore &engine,
QStringList searchTerms;
while (index != -1) {
nextIndex = joinedQuery.indexOf(QLatin1String("content:"), index + 1);
- term = joinedQuery.mid(index + length, nextIndex - (length + index))
- .simplified();
+ term = joinedQuery.mid(index + length, nextIndex - (length + index)).simplified();
if (term.startsWith(QLatin1String("\""))
&& term.endsWith(QLatin1String("\""))) {
searchTerms.append(term.remove(QLatin1String("\"")));
@@ -370,17 +404,19 @@ void QHelpSearchIndexReader::boostSearchHits(const QHelpEngineCore &engine,
QString data = QString::fromUtf8(engine.fileData(hit.first));
int counter = 0;
- foreach (const QString& term, searchTerms)
+ foreach (const QString &term, searchTerms)
counter += data.count(term, Qt::CaseInsensitive);
hitMap.insertMulti(counter, hit);
}
QList<QHelpSearchEngine::SearchHit> boostedList;
- QMap<int, QHelpSearchEngine::SearchHit>::const_iterator i;
- for (i = hitMap.constEnd(), --i; i != hitMap.constBegin(); --i)
- boostedList.append(i.value());
- boostedList += hitList.mid(count - 1, hitList.count());
-
+ QMap<int, QHelpSearchEngine::SearchHit>::const_iterator it = hitMap.constEnd();
+ do {
+ --it;
+ boostedList.append(it.value());
+ } while (it != hitMap.constBegin());
+ boostedList += hitList.mid(count, hitList.count());
+
hitList = boostedList;
}
}
diff --git a/tools/assistant/lib/qhelpsearchindexreader_clucene_p.h b/tools/assistant/lib/qhelpsearchindexreader_clucene_p.h
index 892c4e67fd..f7536e9725 100644
--- a/tools/assistant/lib/qhelpsearchindexreader_clucene_p.h
+++ b/tools/assistant/lib/qhelpsearchindexreader_clucene_p.h
@@ -54,6 +54,8 @@
//
#include "qhelpsearchengine.h"
+
+#include "fulltextsearch/qanalyzer_p.h"
#include "fulltextsearch/qquery_p.h"
#include <QtCore/QList>
@@ -93,12 +95,13 @@ signals:
private:
void run();
- bool defaultQuery(const QString &term,
- QCLuceneBooleanQuery &booleanQuery);
- bool buildQuery(QCLuceneBooleanQuery &booleanQuery,
- const QList<QHelpSearchQuery> &queryList);
- void boostSearchHits(const QHelpEngineCore &engine,
- QList<QHelpSearchEngine::SearchHit> &hitList,
+ bool defaultQuery(const QString &term, QCLuceneBooleanQuery &booleanQuery,
+ QCLuceneStandardAnalyzer &analyzer);
+ bool buildQuery(QCLuceneBooleanQuery &booleanQuery, const QList<QHelpSearchQuery> &queryList,
+ QCLuceneStandardAnalyzer &analyzer);
+ bool buildTryHarderQuery(QCLuceneBooleanQuery &booleanQuery,
+ const QList<QHelpSearchQuery> &queryList, QCLuceneStandardAnalyzer &analyzer);
+ void boostSearchHits(const QHelpEngineCore &engine, QList<QHelpSearchEngine::SearchHit> &hitList,
const QList<QHelpSearchQuery> &queryList);
private:
diff --git a/tools/assistant/lib/qhelpsearchindexwriter_clucene.cpp b/tools/assistant/lib/qhelpsearchindexwriter_clucene.cpp
index e53bbaecdf..195c4907a2 100644
--- a/tools/assistant/lib/qhelpsearchindexwriter_clucene.cpp
+++ b/tools/assistant/lib/qhelpsearchindexwriter_clucene.cpp
@@ -59,16 +59,340 @@
#include <QtNetwork/QLocalSocket>
#include <QtNetwork/QLocalServer>
+#include "private/qfunctions_p.h"
+
QT_BEGIN_NAMESPACE
namespace qt {
namespace fulltextsearch {
namespace clucene {
+// taken from qtexthtmlparser
+static const struct QTextHtmlEntity
+{
+ const char *name;
+ quint16 code;
+} entities[] = {
+ { "AElig", 0x00c6 },
+ { "AMP", 38 },
+ { "Aacute", 0x00c1 },
+ { "Acirc", 0x00c2 },
+ { "Agrave", 0x00c0 },
+ { "Alpha", 0x0391 },
+ { "Aring", 0x00c5 },
+ { "Atilde", 0x00c3 },
+ { "Auml", 0x00c4 },
+ { "Beta", 0x0392 },
+ { "Ccedil", 0x00c7 },
+ { "Chi", 0x03a7 },
+ { "Dagger", 0x2021 },
+ { "Delta", 0x0394 },
+ { "ETH", 0x00d0 },
+ { "Eacute", 0x00c9 },
+ { "Ecirc", 0x00ca },
+ { "Egrave", 0x00c8 },
+ { "Epsilon", 0x0395 },
+ { "Eta", 0x0397 },
+ { "Euml", 0x00cb },
+ { "GT", 62 },
+ { "Gamma", 0x0393 },
+ { "Iacute", 0x00cd },
+ { "Icirc", 0x00ce },
+ { "Igrave", 0x00cc },
+ { "Iota", 0x0399 },
+ { "Iuml", 0x00cf },
+ { "Kappa", 0x039a },
+ { "LT", 60 },
+ { "Lambda", 0x039b },
+ { "Mu", 0x039c },
+ { "Ntilde", 0x00d1 },
+ { "Nu", 0x039d },
+ { "OElig", 0x0152 },
+ { "Oacute", 0x00d3 },
+ { "Ocirc", 0x00d4 },
+ { "Ograve", 0x00d2 },
+ { "Omega", 0x03a9 },
+ { "Omicron", 0x039f },
+ { "Oslash", 0x00d8 },
+ { "Otilde", 0x00d5 },
+ { "Ouml", 0x00d6 },
+ { "Phi", 0x03a6 },
+ { "Pi", 0x03a0 },
+ { "Prime", 0x2033 },
+ { "Psi", 0x03a8 },
+ { "QUOT", 34 },
+ { "Rho", 0x03a1 },
+ { "Scaron", 0x0160 },
+ { "Sigma", 0x03a3 },
+ { "THORN", 0x00de },
+ { "Tau", 0x03a4 },
+ { "Theta", 0x0398 },
+ { "Uacute", 0x00da },
+ { "Ucirc", 0x00db },
+ { "Ugrave", 0x00d9 },
+ { "Upsilon", 0x03a5 },
+ { "Uuml", 0x00dc },
+ { "Xi", 0x039e },
+ { "Yacute", 0x00dd },
+ { "Yuml", 0x0178 },
+ { "Zeta", 0x0396 },
+ { "aacute", 0x00e1 },
+ { "acirc", 0x00e2 },
+ { "acute", 0x00b4 },
+ { "aelig", 0x00e6 },
+ { "agrave", 0x00e0 },
+ { "alefsym", 0x2135 },
+ { "alpha", 0x03b1 },
+ { "amp", 38 },
+ { "and", 0x22a5 },
+ { "ang", 0x2220 },
+ { "apos", 0x0027 },
+ { "aring", 0x00e5 },
+ { "asymp", 0x2248 },
+ { "atilde", 0x00e3 },
+ { "auml", 0x00e4 },
+ { "bdquo", 0x201e },
+ { "beta", 0x03b2 },
+ { "brvbar", 0x00a6 },
+ { "bull", 0x2022 },
+ { "cap", 0x2229 },
+ { "ccedil", 0x00e7 },
+ { "cedil", 0x00b8 },
+ { "cent", 0x00a2 },
+ { "chi", 0x03c7 },
+ { "circ", 0x02c6 },
+ { "clubs", 0x2663 },
+ { "cong", 0x2245 },
+ { "copy", 0x00a9 },
+ { "crarr", 0x21b5 },
+ { "cup", 0x222a },
+ { "curren", 0x00a4 },
+ { "dArr", 0x21d3 },
+ { "dagger", 0x2020 },
+ { "darr", 0x2193 },
+ { "deg", 0x00b0 },
+ { "delta", 0x03b4 },
+ { "diams", 0x2666 },
+ { "divide", 0x00f7 },
+ { "eacute", 0x00e9 },
+ { "ecirc", 0x00ea },
+ { "egrave", 0x00e8 },
+ { "empty", 0x2205 },
+ { "emsp", 0x2003 },
+ { "ensp", 0x2002 },
+ { "epsilon", 0x03b5 },
+ { "equiv", 0x2261 },
+ { "eta", 0x03b7 },
+ { "eth", 0x00f0 },
+ { "euml", 0x00eb },
+ { "euro", 0x20ac },
+ { "exist", 0x2203 },
+ { "fnof", 0x0192 },
+ { "forall", 0x2200 },
+ { "frac12", 0x00bd },
+ { "frac14", 0x00bc },
+ { "frac34", 0x00be },
+ { "frasl", 0x2044 },
+ { "gamma", 0x03b3 },
+ { "ge", 0x2265 },
+ { "gt", 62 },
+ { "hArr", 0x21d4 },
+ { "harr", 0x2194 },
+ { "hearts", 0x2665 },
+ { "hellip", 0x2026 },
+ { "iacute", 0x00ed },
+ { "icirc", 0x00ee },
+ { "iexcl", 0x00a1 },
+ { "igrave", 0x00ec },
+ { "image", 0x2111 },
+ { "infin", 0x221e },
+ { "int", 0x222b },
+ { "iota", 0x03b9 },
+ { "iquest", 0x00bf },
+ { "isin", 0x2208 },
+ { "iuml", 0x00ef },
+ { "kappa", 0x03ba },
+ { "lArr", 0x21d0 },
+ { "lambda", 0x03bb },
+ { "lang", 0x2329 },
+ { "laquo", 0x00ab },
+ { "larr", 0x2190 },
+ { "lceil", 0x2308 },
+ { "ldquo", 0x201c },
+ { "le", 0x2264 },
+ { "lfloor", 0x230a },
+ { "lowast", 0x2217 },
+ { "loz", 0x25ca },
+ { "lrm", 0x200e },
+ { "lsaquo", 0x2039 },
+ { "lsquo", 0x2018 },
+ { "lt", 60 },
+ { "macr", 0x00af },
+ { "mdash", 0x2014 },
+ { "micro", 0x00b5 },
+ { "middot", 0x00b7 },
+ { "minus", 0x2212 },
+ { "mu", 0x03bc },
+ { "nabla", 0x2207 },
+ { "nbsp", 0x00a0 },
+ { "ndash", 0x2013 },
+ { "ne", 0x2260 },
+ { "ni", 0x220b },
+ { "not", 0x00ac },
+ { "notin", 0x2209 },
+ { "nsub", 0x2284 },
+ { "ntilde", 0x00f1 },
+ { "nu", 0x03bd },
+ { "oacute", 0x00f3 },
+ { "ocirc", 0x00f4 },
+ { "oelig", 0x0153 },
+ { "ograve", 0x00f2 },
+ { "oline", 0x203e },
+ { "omega", 0x03c9 },
+ { "omicron", 0x03bf },
+ { "oplus", 0x2295 },
+ { "or", 0x22a6 },
+ { "ordf", 0x00aa },
+ { "ordm", 0x00ba },
+ { "oslash", 0x00f8 },
+ { "otilde", 0x00f5 },
+ { "otimes", 0x2297 },
+ { "ouml", 0x00f6 },
+ { "para", 0x00b6 },
+ { "part", 0x2202 },
+ { "percnt", 0x0025 },
+ { "permil", 0x2030 },
+ { "perp", 0x22a5 },
+ { "phi", 0x03c6 },
+ { "pi", 0x03c0 },
+ { "piv", 0x03d6 },
+ { "plusmn", 0x00b1 },
+ { "pound", 0x00a3 },
+ { "prime", 0x2032 },
+ { "prod", 0x220f },
+ { "prop", 0x221d },
+ { "psi", 0x03c8 },
+ { "quot", 34 },
+ { "rArr", 0x21d2 },
+ { "radic", 0x221a },
+ { "rang", 0x232a },
+ { "raquo", 0x00bb },
+ { "rarr", 0x2192 },
+ { "rceil", 0x2309 },
+ { "rdquo", 0x201d },
+ { "real", 0x211c },
+ { "reg", 0x00ae },
+ { "rfloor", 0x230b },
+ { "rho", 0x03c1 },
+ { "rlm", 0x200f },
+ { "rsaquo", 0x203a },
+ { "rsquo", 0x2019 },
+ { "sbquo", 0x201a },
+ { "scaron", 0x0161 },
+ { "sdot", 0x22c5 },
+ { "sect", 0x00a7 },
+ { "shy", 0x00ad },
+ { "sigma", 0x03c3 },
+ { "sigmaf", 0x03c2 },
+ { "sim", 0x223c },
+ { "spades", 0x2660 },
+ { "sub", 0x2282 },
+ { "sube", 0x2286 },
+ { "sum", 0x2211 },
+ { "sup", 0x2283 },
+ { "sup1", 0x00b9 },
+ { "sup2", 0x00b2 },
+ { "sup3", 0x00b3 },
+ { "supe", 0x2287 },
+ { "szlig", 0x00df },
+ { "tau", 0x03c4 },
+ { "there4", 0x2234 },
+ { "theta", 0x03b8 },
+ { "thetasym", 0x03d1 },
+ { "thinsp", 0x2009 },
+ { "thorn", 0x00fe },
+ { "tilde", 0x02dc },
+ { "times", 0x00d7 },
+ { "trade", 0x2122 },
+ { "uArr", 0x21d1 },
+ { "uacute", 0x00fa },
+ { "uarr", 0x2191 },
+ { "ucirc", 0x00fb },
+ { "ugrave", 0x00f9 },
+ { "uml", 0x00a8 },
+ { "upsih", 0x03d2 },
+ { "upsilon", 0x03c5 },
+ { "uuml", 0x00fc },
+ { "weierp", 0x2118 },
+ { "xi", 0x03be },
+ { "yacute", 0x00fd },
+ { "yen", 0x00a5 },
+ { "yuml", 0x00ff },
+ { "zeta", 0x03b6 },
+ { "zwj", 0x200d },
+ { "zwnj", 0x200c }
+};
+
+Q_STATIC_GLOBAL_OPERATOR bool operator<(const QString &entityStr, const QTextHtmlEntity &entity)
+{
+ return entityStr < QLatin1String(entity.name);
+}
+
+Q_STATIC_GLOBAL_OPERATOR bool operator<(const QTextHtmlEntity &entity, const QString &entityStr)
+{
+ return QLatin1String(entity.name) < entityStr;
+}
+
+static QChar resolveEntity(const QString &entity)
+{
+ const QTextHtmlEntity *start = &entities[0];
+ const QTextHtmlEntity *end = &entities[(sizeof(entities) / sizeof(entities[0]))];
+ const QTextHtmlEntity *e = qBinaryFind(start, end, entity);
+ if (e == end)
+ return QChar();
+ return e->code;
+}
+
+static const uint latin1Extended[0xA0 - 0x80] = {
+ 0x20ac, // 0x80
+ 0x0081, // 0x81 direct mapping
+ 0x201a, // 0x82
+ 0x0192, // 0x83
+ 0x201e, // 0x84
+ 0x2026, // 0x85
+ 0x2020, // 0x86
+ 0x2021, // 0x87
+ 0x02C6, // 0x88
+ 0x2030, // 0x89
+ 0x0160, // 0x8A
+ 0x2039, // 0x8B
+ 0x0152, // 0x8C
+ 0x008D, // 0x8D direct mapping
+ 0x017D, // 0x8E
+ 0x008F, // 0x8F directmapping
+ 0x0090, // 0x90 directmapping
+ 0x2018, // 0x91
+ 0x2019, // 0x92
+ 0x201C, // 0x93
+ 0X201D, // 0x94
+ 0x2022, // 0x95
+ 0x2013, // 0x96
+ 0x2014, // 0x97
+ 0x02DC, // 0x98
+ 0x2122, // 0x99
+ 0x0161, // 0x9A
+ 0x203A, // 0x9B
+ 0x0153, // 0x9C
+ 0x009D, // 0x9D direct mapping
+ 0x017E, // 0x9E
+ 0x0178 // 0x9F
+};
+// end taken from qtexthtmlparser
+
class DocumentHelper
{
public:
- DocumentHelper(const QString& fileName, const QByteArray &data)
+ DocumentHelper(const QString &fileName, const QByteArray &data)
: fileName(fileName) , data(readData(data)) {}
~DocumentHelper() {}
@@ -131,8 +455,15 @@ private:
while (j < length) {
c = buf[j++];
if (c == QLatin1Char('<') || c == QLatin1Char('&')) {
- if (count > 1)
+ if (count > 1 && c != QLatin1Char('&'))
parsedContent.append(QLatin1Char(' '));
+ else if (c == QLatin1Char('&')) {
+ // Note: this will modify the counter j, in case we sucessful parsed the entity
+ // we will have modified the counter to stay 1 before the closing ';', so
+ // the following if condition will be met with if (c == QLatin1Char(';'))
+ parsedContent.append(parseEntity(length, buf, j));
+ }
+
count = 0;
valid = false;
continue;
@@ -157,6 +488,63 @@ private:
return parsedContent;
}
+ // taken from qtexthtmlparser
+ // parses an entity after "&", and returns it
+ QString parseEntity(int len, const QChar *buf, int &pos) const
+ {
+ int recover = pos;
+ QString entity;
+ while (pos < len) {
+ QChar c = buf[pos++];
+ if (c.isSpace() || pos - recover > 9) {
+ goto error;
+ }
+ if (c == QLatin1Char(';')) {
+ pos--;
+ break;
+ }
+ entity += c;
+ }
+ {
+ QChar resolved = resolveEntity(entity);
+ if (!resolved.isNull())
+ return QString(resolved);
+ }
+ if (entity.length() > 1 && entity.at(0) == QLatin1Char('#')) {
+ entity.remove(0, 1); // removing leading #
+
+ int base = 10;
+ bool ok = false;
+
+ if (entity.at(0).toLower() == QLatin1Char('x')) { // hex entity?
+ entity.remove(0, 1);
+ base = 16;
+ }
+
+ uint uc = entity.toUInt(&ok, base);
+ if (ok) {
+ if (uc >= 0x80 && uc < 0x80 + (sizeof(latin1Extended) / sizeof(latin1Extended[0])))
+ uc = latin1Extended[uc - 0x80]; // windows latin 1 extended
+ QString str;
+ if (uc > 0xffff) {
+ // surrogate pair
+ uc -= 0x10000;
+ ushort high = uc/0x400 + 0xd800;
+ ushort low = uc%0x400 + 0xdc00;
+ str.append(QChar(high));
+ str.append(QChar(low));
+ } else {
+ str.append(QChar(uc));
+ }
+ return str;
+ }
+ }
+ error:
+ pos = recover;
+ return QLatin1String(" ");
+ }
+ // end taken from qtexthtmlparser
+
private:
QString fileName;
QString data;
@@ -239,7 +627,7 @@ void QHelpSearchIndexWriter::run()
// old style qhc file < 4.4.2, need to convert...
const QStringList indexedNamespaces = engine.customValue(oldKey).
toString().split(QLatin1String("|"), QString::SkipEmptyParts);
- foreach (const QString& nameSpace, indexedNamespaces)
+ foreach (const QString &nameSpace, indexedNamespaces)
indexMap.insert(nameSpace, QDateTime());
engine.removeCustomValue(oldKey);
} else {
@@ -294,7 +682,7 @@ void QHelpSearchIndexWriter::run()
}
if (QCLuceneIndexReader::indexExists(indexPath) && !reindex) {
- foreach(const QString& namespaceName, registeredDocs) {
+ foreach(const QString &namespaceName, registeredDocs) {
mutexLocker.relock();
if (m_cancel) {
emit indexingFinished();
@@ -342,7 +730,7 @@ void QHelpSearchIndexWriter::run()
writer->setMaxFieldLength(QCLuceneIndexWriter::DEFAULT_MAX_FIELD_LENGTH);
QStringList namespaces;
- foreach(const QString& namespaceName, registeredDocs) {
+ foreach(const QString &namespaceName, registeredDocs) {
mutexLocker.relock();
if (m_cancel) {
writer->close();
@@ -367,7 +755,7 @@ void QHelpSearchIndexWriter::run()
break;
} else {
bool bail = false;
- foreach (const QStringList& attributes, attributeSets) {
+ foreach (const QStringList &attributes, attributeSets) {
const QList<QUrl> docFiles = indexableFiles(&engine,
namespaceName, attributes);
if (!addDocuments(docFiles, engine, attributes, namespaceName,
@@ -397,7 +785,7 @@ void QHelpSearchIndexWriter::run()
mutexLocker.unlock();
QStringList indexedNamespaces = indexMap.keys();
- foreach(const QString& namespaceName, indexedNamespaces) {
+ foreach(const QString &namespaceName, indexedNamespaces) {
mutexLocker.relock();
if (m_cancel)
break;
@@ -422,7 +810,7 @@ bool QHelpSearchIndexWriter::addDocuments(const QList<QUrl> docFiles,
const QString attrList = attributes.join(QLatin1String(" "));
locker.unlock();
- foreach(const QUrl& url, docFiles) {
+ foreach(const QUrl &url, docFiles) {
QCLuceneDocument document;
DocumentHelper helper(url.toString(), engine.fileData(url));
if (helper.addFieldsToDocument(&document, namespaceName, attrList))
@@ -450,8 +838,8 @@ void QHelpSearchIndexWriter::removeDocuments(const QString &indexPath,
reader.close();
}
-bool QHelpSearchIndexWriter::writeIndexMap(QHelpEngineCore& engine,
- const QMap<QString, QDateTime>& indexMap)
+bool QHelpSearchIndexWriter::writeIndexMap(QHelpEngineCore &engine,
+ const QMap<QString, QDateTime> &indexMap)
{
QByteArray bArray;
diff --git a/tools/assistant/tools/assistant/assistant.qch b/tools/assistant/tools/assistant/assistant.qch
index 550cd898fb..64763f769f 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/centralwidget.cpp b/tools/assistant/tools/assistant/centralwidget.cpp
index 1b0e6712ff..633747af02 100644
--- a/tools/assistant/tools/assistant/centralwidget.cpp
+++ b/tools/assistant/tools/assistant/centralwidget.cpp
@@ -277,7 +277,11 @@ CentralWidget *CentralWidget::instance()
void CentralWidget::newTab()
{
HelpViewer* viewer = currentHelpViewer();
+#if !defined(QT_NO_WEBKIT)
+ if (viewer && viewer->hasLoadFinished())
+#else
if (viewer)
+#endif
setSourceInNewTab(viewer->source());
}
diff --git a/tools/assistant/tools/assistant/contentwindow.cpp b/tools/assistant/tools/assistant/contentwindow.cpp
index ef272e8ca7..89060bd069 100644
--- a/tools/assistant/tools/assistant/contentwindow.cpp
+++ b/tools/assistant/tools/assistant/contentwindow.cpp
@@ -118,19 +118,24 @@ 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();
+
+ if (index.isValid() && (sm && sm->isSelected(index))) {
+ if (me->button() == Qt::LeftButton) {
+ itemClicked(index);
+ } else if (me->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());
+ }
+ }
}
}
return QWidget::eventFilter(o, e);
@@ -141,16 +146,19 @@ 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 +168,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 ab8f8ddeb6..ddc3e7c025 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 0e5b67b6e8..a0143479e2 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 50f18c0e76..aca97edfb9 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 9817f23dae..5ce6e1417a 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,15 +211,33 @@ 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)) {
- if (url.path().endsWith(QLatin1String("pdf"))) {
- QString fileName = url.toString();
- fileName = QDir::tempPath() + QDir::separator() + fileName.right
- (fileName.length() - fileName.lastIndexOf(QChar('/')));
+ const QString& path = url.path();
+ if (path.endsWith(QLatin1String(".pdf"))) {
+ const int lastDash = path.lastIndexOf(QChar('/'));
+ QString fileName = QDir::tempPath() + QDir::separator();
+ if (lastDash < 0)
+ fileName += path;
+ else
+ fileName += path.mid(lastDash + 1, path.length());
QFile tmpFile(QDir::cleanPath(fileName));
if (tmpFile.open(QIODevice::ReadWrite)) {
@@ -212,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;
}
@@ -222,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);
@@ -248,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")));
@@ -328,6 +380,21 @@ 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;
+}
+
#else // !defined(QT_NO_WEBKIT)
HelpViewer::HelpViewer(QHelpEngine *engine, CentralWidget *parent)
@@ -396,15 +463,19 @@ void HelpViewer::zoomOut(int range)
bool HelpViewer::launchedWithExternalApp(const QUrl &url)
{
- bool isPdf = url.path().endsWith(QLatin1String("pdf"));
+ bool isPdf = url.path().endsWith(QLatin1String(".pdf"));
if (url.scheme() == QLatin1String("http")
|| url.scheme() == QLatin1String("ftp")
|| url.scheme() == QLatin1String("mailto") || isPdf) {
bool launched = false;
if (isPdf && url.scheme() == QLatin1String("qthelp")) {
- QString fileName = url.toString();
- fileName = QDir::tempPath() + QDir::separator() + fileName.right
- (fileName.length() - fileName.lastIndexOf(QLatin1Char('/')));
+ const QString& path = url.path();
+ const int lastDash = path.lastIndexOf(QChar('/'));
+ QString fileName = QDir::tempPath() + QDir::separator();
+ if (lastDash < 0)
+ fileName += path;
+ else
+ fileName += path.mid(lastDash + 1, path.length());
QFile tmpFile(QDir::cleanPath(fileName));
if (tmpFile.open(QIODevice::ReadWrite)) {
diff --git a/tools/assistant/tools/assistant/helpviewer.h b/tools/assistant/tools/assistant/helpviewer.h
index af5c1976cf..c66b69cab2 100644
--- a/tools/assistant/tools/assistant/helpviewer.h
+++ b/tools/assistant/tools/assistant/helpviewer.h
@@ -92,6 +92,8 @@ public:
{ return pageAction(QWebPage::Forward)->isEnabled(); }
inline bool isBackwardAvailable() const
{ return pageAction(QWebPage::Back)->isEnabled(); }
+ inline bool hasLoadFinished() const
+ { return loadFinished; }
public Q_SLOTS:
void home();
@@ -107,13 +109,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 e7575fa140..a2c0950ed1 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,44 +139,15 @@ 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() && mouseEvent->button()==Qt::MidButton)
+ open(m_indexWidget, idx);
}
#ifdef Q_OS_MAC
else if (obj == m_indexWidget && e->type() == QEvent::KeyPress) {
@@ -213,4 +183,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 f1f57f9442..14ed83c510 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/mainwindow.cpp b/tools/assistant/tools/assistant/mainwindow.cpp
index 0f246bead0..6e224135bc 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,7 @@ 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
QString defWindowTitle = tr("Qt Assistant");
setWindowTitle(defWindowTitle);
@@ -186,9 +173,11 @@ MainWindow::MainWindow(CmdLineParser *cmdLine, QWidget *parent)
m_helpEngine->setCustomValue(QLatin1String("useAppFont"), false);
m_helpEngine->setCustomValue(QLatin1String("useBrowserFont"), false);
m_helpEngine->setCustomValue(QLatin1String("appFont"), qApp->font());
- m_helpEngine->setCustomValue(QLatin1String("appWritingSystem"), QFontDatabase::Latin);
+ m_helpEngine->setCustomValue(QLatin1String("appWritingSystem"),
+ QFontDatabase::Latin);
m_helpEngine->setCustomValue(QLatin1String("browserFont"), qApp->font());
- m_helpEngine->setCustomValue(QLatin1String("browserWritingSystem"), QFontDatabase::Latin);
+ m_helpEngine->setCustomValue(QLatin1String("browserWritingSystem"),
+ QFontDatabase::Latin);
} else {
updateApplicationFont();
}
@@ -226,6 +215,20 @@ 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
@@ -302,6 +305,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);
@@ -316,10 +320,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));
@@ -351,8 +355,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 {
@@ -377,118 +381,107 @@ void MainWindow::insertLastPages()
void MainWindow::setupActions()
{
- QString system = QLatin1String("win");
+ QString resourcePath = QLatin1String(":/trolltech/assistant/images/");
#ifdef Q_OS_MAC
- system = QLatin1String("mac");
setUnifiedTitleAndToolBarOnMac(true);
+ resourcePath.append(QLatin1String("mac"));
+#else
+ resourcePath.append(QLatin1String("win"));
#endif
QMenu *menu = menuBar()->addMenu(tr("&File"));
- m_pageSetupAction = menu->addAction(tr("Page Set&up..."), m_centralWidget, SLOT(pageSetup()));
- m_printPreviewAction = menu->addAction(tr("Print Preview..."), m_centralWidget, SLOT(printPreview()));
+ m_pageSetupAction = menu->addAction(tr("Page Set&up..."), m_centralWidget,
+ SLOT(pageSetup()));
+ m_printPreviewAction = menu->addAction(tr("Print Preview..."), m_centralWidget,
+ SLOT(printPreview()));
+
m_printAction = menu->addAction(tr("&Print..."), m_centralWidget, SLOT(print()));
- m_printAction->setIcon(QIcon(
- QString::fromUtf8(":/trolltech/assistant/images/%1/print.png").arg(system)));
- m_printAction->setShortcut(tr("CTRL+P"));
+ m_printAction->setIcon(QIcon(resourcePath + QLatin1String("/print.png")));
+ m_printAction->setShortcut(QKeySequence::Print);
menu->addSeparator();
m_newTabAction = menu->addAction(tr("New &Tab"), m_centralWidget, SLOT(newTab()));
- m_newTabAction->setShortcut(tr("CTRL+T"));
- m_closeTabAction = menu->addAction(tr("&Close Tab"), m_centralWidget, SLOT(closeTab()));
- m_closeTabAction->setShortcut(tr("CTRL+W"));
+ m_newTabAction->setShortcut(QKeySequence::AddTab);
+
+ m_closeTabAction = menu->addAction(tr("&Close Tab"), m_centralWidget,
+ SLOT(closeTab()));
+ m_closeTabAction->setShortcuts(QKeySequence::Close);
QAction *tmp = menu->addAction(tr("&Quit"), this, SLOT(close()));
tmp->setShortcut(tr("CTRL+Q"));
tmp->setMenuRole(QAction::QuitRole);
menu = menuBar()->addMenu(tr("&Edit"));
- m_copyAction = menu->addAction(tr("&Copy selected Text"),
- m_centralWidget, SLOT(copySelection()));
- m_copyAction->setIcon(QIcon(
- QString::fromUtf8(":/trolltech/assistant/images/%1/editcopy.png").arg(system)));
- m_copyAction->setShortcut(tr("Ctrl+C"));
+ m_copyAction = menu->addAction(tr("&Copy selected Text"), m_centralWidget,
+ SLOT(copySelection()));
+ m_copyAction->setIcon(QIcon(resourcePath + QLatin1String("/editcopy.png")));
+ m_copyAction->setShortcuts(QKeySequence::Copy);
m_copyAction->setEnabled(false);
- m_findAction = menu->addAction(tr("&Find in Text..."),
- m_centralWidget, SLOT(showTextSearch()));
- m_findAction->setIcon(QIcon(
- QString::fromUtf8(":/trolltech/assistant/images/%1/find.png").arg(system)));
- m_findAction->setShortcut(tr("Ctrl+F"));
- m_findAction->setShortcut(QKeySequence::Find);
+ m_findAction = menu->addAction(tr("&Find in Text..."), m_centralWidget,
+ SLOT(showTextSearch()));
+ m_findAction->setIcon(QIcon(resourcePath + QLatin1String("/find.png")));
+ m_findAction->setShortcuts(QKeySequence::Find);
- QAction *findNextAction = menu->addAction(tr("Find &Next"),
- m_centralWidget, SLOT(findNext()));
- findNextAction->setShortcuts(QList<QKeySequence>() << QKeySequence(tr("F3"))
- << QKeySequence(tr("CTRL+G")));
+ QAction *findNextAction = menu->addAction(tr("Find &Next"), m_centralWidget,
+ SLOT(findNext()));
+ findNextAction->setShortcuts(QKeySequence::FindNext);
QAction *findPreviousAction = menu->addAction(tr("Find &Previous"),
m_centralWidget, SLOT(findPrevious()));
- findPreviousAction->setShortcuts(QList<QKeySequence>() <<
- QKeySequence(tr("Shift+F3")) << QKeySequence(tr("CTRL+SHIFT+G")));
+ findPreviousAction->setShortcuts(QKeySequence::FindPrevious);
menu->addSeparator();
tmp = menu->addAction(tr("Preferences..."), this, SLOT(showPreferences()));
tmp->setMenuRole(QAction::PreferencesRole);
m_viewMenu = menuBar()->addMenu(tr("&View"));
- m_zoomInAction = m_viewMenu->addAction(tr("Zoom &in"),
- m_centralWidget, SLOT(zoomIn()));
- m_zoomInAction->setIcon(QIcon(
- QString::fromUtf8(":/trolltech/assistant/images/%1/zoomin.png").arg(system)));
- m_zoomInAction->setShortcut(tr("Ctrl++"));
-
- m_zoomOutAction = m_viewMenu->addAction(tr("Zoom &out"),
- m_centralWidget, SLOT(zoomOut()));
- m_zoomOutAction->setIcon(QIcon(
- QString::fromUtf8(":/trolltech/assistant/images/%1/zoomout.png").arg(system)));
- m_zoomOutAction->setShortcut(tr("Ctrl+-"));
-
- m_resetZoomAction = m_viewMenu->addAction(tr("Normal &Size"),
- m_centralWidget, SLOT(resetZoom()));
- m_resetZoomAction->setIcon(QIcon(
- QString::fromUtf8(":/trolltech/assistant/images/%1/resetzoom.png").arg(system)));
+ m_zoomInAction = m_viewMenu->addAction(tr("Zoom &in"), m_centralWidget,
+ SLOT(zoomIn()));
+ m_zoomInAction->setIcon(QIcon(resourcePath + QLatin1String("/zoomin.png")));
+ m_zoomInAction->setShortcut(QKeySequence::ZoomIn);
+
+ m_zoomOutAction = m_viewMenu->addAction(tr("Zoom &out"), m_centralWidget,
+ SLOT(zoomOut()));
+ m_zoomOutAction->setIcon(QIcon(resourcePath + QLatin1String("/zoomout.png")));
+ m_zoomOutAction->setShortcut(QKeySequence::ZoomOut);
+
+ m_resetZoomAction = m_viewMenu->addAction(tr("Normal &Size"), m_centralWidget,
+ SLOT(resetZoom()));
+ m_resetZoomAction->setIcon(QIcon(resourcePath + QLatin1String("/resetzoom.png")));
m_resetZoomAction->setShortcut(tr("Ctrl+0"));
m_viewMenu->addSeparator();
- m_viewMenu->addAction(tr("Contents"), this,
- SLOT(showContents()), QKeySequence(tr("ALT+C")));
- m_viewMenu->addAction(tr("Index"), this,
- SLOT(showIndex()), QKeySequence(tr("ALT+I")));
- m_viewMenu->addAction(tr("Bookmarks"), this,
- SLOT(showBookmarks()), QKeySequence(tr("ALT+O")));
- m_viewMenu->addAction(tr("Search"), this,
- SLOT(showSearch()), QKeySequence(tr("ALT+S")));
+ m_viewMenu->addAction(tr("Contents"), this, SLOT(showContents()),
+ QKeySequence(tr("ALT+C")));
+ m_viewMenu->addAction(tr("Index"), this, SLOT(showIndex()),
+ QKeySequence(tr("ALT+I")));
+ m_viewMenu->addAction(tr("Bookmarks"), this, SLOT(showBookmarks()),
+ QKeySequence(tr("ALT+O")));
+ m_viewMenu->addAction(tr("Search"), this, SLOT(showSearch()),
+ QKeySequence(tr("ALT+S")));
menu = menuBar()->addMenu(tr("&Go"));
- m_homeAction = menu->addAction(tr("&Home"),
- m_centralWidget, SLOT(home()));
+ m_homeAction = menu->addAction(tr("&Home"), m_centralWidget, SLOT(home()));
m_homeAction->setShortcut(tr("Ctrl+Home"));
- m_homeAction->setIcon(QIcon(
- QString::fromUtf8(":/trolltech/assistant/images/%1/home.png").arg(system)));
+ m_homeAction->setIcon(QIcon(resourcePath + QLatin1String("/home.png")));
- m_backAction = menu->addAction(tr("&Back"),
- m_centralWidget, SLOT(backward()));
+ m_backAction = menu->addAction(tr("&Back"), m_centralWidget, SLOT(backward()));
m_backAction->setEnabled(false);
- m_backAction->setShortcuts(QList<QKeySequence>()
- << QKeySequence(Qt::CTRL|Qt::Key_Left) << QKeySequence::Back);
- m_backAction->setIcon(QIcon(
- QString::fromUtf8(":/trolltech/assistant/images/%1/previous.png").arg(system)));
+ m_backAction->setShortcuts(QKeySequence::Back);
+ m_backAction->setIcon(QIcon(resourcePath + QLatin1String("/previous.png")));
- m_nextAction = menu->addAction(tr("&Forward"),
- m_centralWidget, SLOT(forward()));
+ m_nextAction = menu->addAction(tr("&Forward"), m_centralWidget, SLOT(forward()));
m_nextAction->setEnabled(false);
- m_nextAction->setShortcuts(QList<QKeySequence>()
- << QKeySequence(Qt::CTRL|Qt::Key_Right) << QKeySequence::Forward);
- m_nextAction->setIcon(QIcon(
- QString::fromUtf8(":/trolltech/assistant/images/%1/next.png").arg(system)));
+ m_nextAction->setShortcuts(QKeySequence::Forward);
+ m_nextAction->setIcon(QIcon(resourcePath + QLatin1String("/next.png")));
- m_syncAction = menu->addAction(tr("Sync with Table of Contents"),
- this, SLOT(syncContents()));
- m_syncAction->setIcon(QIcon(
- QString::fromUtf8(":/trolltech/assistant/images/%1/synctoc.png").arg(system)));
+ m_syncAction = menu->addAction(tr("Sync with Table of Contents"), this,
+ SLOT(syncContents()));
+ m_syncAction->setIcon(QIcon(resourcePath + QLatin1String("/synctoc.png")));
menu->addSeparator();
@@ -496,8 +489,7 @@ void MainWindow::setupActions()
tmp->setShortcuts(QList<QKeySequence>() << QKeySequence(tr("Ctrl+Alt+Right"))
<< QKeySequence(Qt::CTRL + Qt::Key_PageDown));
- tmp = menu->addAction(tr("Previous Page"),
- m_centralWidget, SLOT(previousPage()));
+ tmp = menu->addAction(tr("Previous Page"), m_centralWidget, SLOT(previousPage()));
tmp->setShortcuts(QList<QKeySequence>() << QKeySequence(tr("Ctrl+Alt+Left"))
<< QKeySequence(Qt::CTRL + Qt::Key_PageUp));
@@ -525,53 +517,52 @@ void MainWindow::setupActions()
navigationBar->addAction(m_resetZoomAction);
QList<QAction*> actionList;
- actionList << m_backAction << m_nextAction << m_homeAction;
- actionList << sep << m_zoomInAction << m_zoomOutAction;
- actionList << sep2 << m_copyAction << m_printAction << m_findAction;
+ actionList << m_backAction << m_nextAction << m_homeAction << sep
+ << m_zoomInAction << m_zoomOutAction << sep2 << m_copyAction
+ << m_printAction << m_findAction;
m_centralWidget->setGlobalActions(actionList);
#if defined(Q_WS_MAC)
QMenu *windowMenu = new QMenu(tr("&Window"), this);
menuBar()->insertMenu(menu->menuAction(), windowMenu);
- windowMenu->addAction(tr("Minimize"), this,
- SLOT(showMinimized()), QKeySequence(tr("Ctrl+M")));
- windowMenu->addAction(tr("Zoom"), this,
- SLOT(showMaximized()));
+ windowMenu->addAction(tr("Zoom"), this, SLOT(showMaximized()));
+ windowMenu->addAction(tr("Minimize"), this, SLOT(showMinimized()),
+ QKeySequence(tr("Ctrl+M")));
#endif
// content viewer connections
- connect(m_centralWidget, SIGNAL(copyAvailable(bool)),
- this, SLOT(copyAvailable(bool)));
- connect(m_centralWidget, SIGNAL(currentViewerChanged()),
- this, SLOT(updateNavigationItems()));
- connect(m_centralWidget, SIGNAL(forwardAvailable(bool)),
- this, SLOT(updateNavigationItems()));
- connect(m_centralWidget, SIGNAL(backwardAvailable(bool)),
- this, SLOT(updateNavigationItems()));
- connect(m_centralWidget, SIGNAL(highlighted(const QString&)),
- statusBar(), SLOT(showMessage(const QString&)));
- connect(m_centralWidget, SIGNAL(addNewBookmark(const QString&,
- const QString&)), this, SLOT(addNewBookmark(const QString&, const QString&)));
+ connect(m_centralWidget, SIGNAL(copyAvailable(bool)), this,
+ SLOT(copyAvailable(bool)));
+ connect(m_centralWidget, SIGNAL(currentViewerChanged()), this,
+ SLOT(updateNavigationItems()));
+ connect(m_centralWidget, SIGNAL(forwardAvailable(bool)), this,
+ SLOT(updateNavigationItems()));
+ connect(m_centralWidget, SIGNAL(backwardAvailable(bool)), this,
+ SLOT(updateNavigationItems()));
+ connect(m_centralWidget, SIGNAL(highlighted(QString)), statusBar(),
+ SLOT(showMessage(QString)));
+ connect(m_centralWidget, SIGNAL(addNewBookmark(QString, QString)), this,
+ SLOT(addNewBookmark(QString, QString)));
// bookmarks
- connect(m_bookmarkWidget, SIGNAL(requestShowLink(const QUrl&)),
- m_centralWidget, SLOT(setSource(const QUrl&)));
- connect(m_bookmarkWidget, SIGNAL(escapePressed()),
- this, SLOT(activateCurrentCentralWidgetTab()));
+ connect(m_bookmarkWidget, SIGNAL(requestShowLink(QUrl)), m_centralWidget,
+ SLOT(setSource(QUrl)));
+ connect(m_bookmarkWidget, SIGNAL(escapePressed()), this,
+ SLOT(activateCurrentCentralWidgetTab()));
// index window
- connect(m_indexWindow, SIGNAL(linkActivated(const QUrl&)),
- m_centralWidget, SLOT(setSource(const QUrl&)));
- connect(m_indexWindow, SIGNAL(linksActivated(const QMap<QString, QUrl>&, const QString&)),
- this, SLOT(showTopicChooser(const QMap<QString, QUrl>&, const QString&)));
- connect(m_indexWindow, SIGNAL(escapePressed()),
- this, SLOT(activateCurrentCentralWidgetTab()));
+ connect(m_indexWindow, SIGNAL(linkActivated(QUrl)), m_centralWidget,
+ SLOT(setSource(QUrl)));
+ connect(m_indexWindow, SIGNAL(linksActivated(QMap<QString, QUrl>, QString)),
+ this, SLOT(showTopicChooser(QMap<QString, QUrl>, QString)));
+ connect(m_indexWindow, SIGNAL(escapePressed()), this,
+ SLOT(activateCurrentCentralWidgetTab()));
// content window
- connect(m_contentWindow, SIGNAL(linkActivated(const QUrl&)),
- m_centralWidget, SLOT(setSource(const QUrl&)));
- connect(m_contentWindow, SIGNAL(escapePressed()),
- this, SLOT(activateCurrentCentralWidgetTab()));
+ connect(m_contentWindow, SIGNAL(linkActivated(QUrl)), m_centralWidget,
+ SLOT(setSource(QUrl)));
+ connect(m_contentWindow, SIGNAL(escapePressed()), this,
+ SLOT(activateCurrentCentralWidgetTab()));
#if defined(QT_NO_PRINTER)
m_pageSetupAction->setVisible(false);
@@ -601,17 +592,19 @@ void MainWindow::setupFilterToolbar()
QToolBar *filterToolBar = addToolBar(tr("Filter Toolbar"));
filterToolBar->setObjectName(QLatin1String("FilterToolBar"));
- filterToolBar->addWidget(new QLabel(tr("Filtered by:").append(QLatin1String(" ")), this));
+ filterToolBar->addWidget(new QLabel(tr("Filtered by:").append(QLatin1Char(' ')),
+ this));
filterToolBar->addWidget(m_filterCombo);
- if (m_helpEngine->customValue(QLatin1String("HideFilterFunctionality"), true).toBool())
+ const QLatin1String hideFilter("HideFilterFunctionality");
+ if (m_helpEngine->customValue(hideFilter, true).toBool())
filterToolBar->hide();
toolBarMenu()->addAction(filterToolBar->toggleViewAction());
- connect(m_helpEngine, SIGNAL(setupFinished()),
- this, SLOT(setupFilterCombo()));
- connect(m_filterCombo, SIGNAL(activated(const QString&)),
- this, SLOT(filterDocumentation(const QString&)));
+ connect(m_helpEngine, SIGNAL(setupFinished()), this,
+ SLOT(setupFilterCombo()));
+ connect(m_filterCombo, SIGNAL(activated(QString)), this,
+ SLOT(filterDocumentation(QString)));
setupFilterCombo();
}
@@ -626,7 +619,8 @@ void MainWindow::setupAddressToolbar()
addressToolBar->setObjectName(QLatin1String("AddressToolBar"));
insertToolBarBreak(addressToolBar);
- addressToolBar->addWidget(new QLabel(tr("Address:").append(QLatin1String(" ")), this));
+ addressToolBar->addWidget(new QLabel(tr("Address:").append(QLatin1String(" ")),
+ this));
addressToolBar->addWidget(m_addressLineEdit);
if (m_helpEngine->customValue(QLatin1String("HideAddressBar"), true).toBool())
@@ -634,12 +628,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()
@@ -684,7 +678,8 @@ void MainWindow::showNewAddress(const QUrl &url)
void MainWindow::addBookmark()
{
- addNewBookmark(m_centralWidget->currentTitle(), m_centralWidget->currentSource().toString());
+ addNewBookmark(m_centralWidget->currentTitle(),
+ m_centralWidget->currentSource().toString());
}
void MainWindow::gotoAddress()
@@ -719,10 +714,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();
}
@@ -784,7 +779,8 @@ void MainWindow::showAboutDialog()
if (!contents.isEmpty()) {
iconArray = m_helpEngine->customValue(QLatin1String("AboutIcon"),
QByteArray()).toByteArray();
- QByteArray resources = m_helpEngine->customValue(QLatin1String("AboutImages"),
+ QByteArray resources =
+ m_helpEngine->customValue(QLatin1String("AboutImages"),
QByteArray()).toByteArray();
QPixmap pix;
pix.loadFromData(iconArray);
@@ -793,36 +789,25 @@ 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>"
"<p>Version %2 %3</p></center>"
"<p>%4</p>"
"<p>%5</p>"
- "<p>Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).</p>"
- "<p>The program is provided AS IS with NO WARRANTY OF ANY KIND,"
+ "<p>Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies)"
+ ".</p><p>The program is provided AS IS with NO WARRANTY OF ANY KIND,"
" INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A"
" PARTICULAR PURPOSE.<p/>")
.arg(tr("Qt Assistant")).arg(QLatin1String(QT_VERSION_STR))
.arg(edition).arg(info).arg(moreInfo), resources);
- aboutDia.setPixmap(QString::fromLatin1(":/trolltech/assistant/images/assistant-128.png"));
+ QLatin1String path(":/trolltech/assistant/images/assistant-128.png");
+ aboutDia.setPixmap(QString(path));
}
if (aboutDia.windowTitle().isEmpty())
aboutDia.setWindowTitle(tr("About %1").arg(windowTitle()));
@@ -886,19 +871,12 @@ void MainWindow::activateCurrentCentralWidgetTab()
void MainWindow::showSearch()
{
- if (m_searchWidget)
- activateDockWidget(m_searchWidget);
- else
- m_centralWidget->activateSearch();
+ m_centralWidget->activateSearch();
}
void MainWindow::hideSearch()
{
- if (m_searchWidget) {
- m_searchWidget->parentWidget()->parentWidget()->hide();
- } else {
- m_centralWidget->removeSearchWidget();
- }
+ m_centralWidget->removeSearchWidget();
}
void MainWindow::updateApplicationFont()
@@ -967,27 +945,25 @@ 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;
}
QString MainWindow::collectionFileDirectory(bool createDir, const QString &cacheDir)
{
- QString collectionPath = QDesktopServices::storageLocation(QDesktopServices::DataLocation);
+ QString collectionPath =
+ QDesktopServices::storageLocation(QDesktopServices::DataLocation);
if (collectionPath.isEmpty()) {
if (cacheDir.isEmpty())
collectionPath = QDir::homePath() + QDir::separator()
+ QLatin1String(".assistant");
else
- collectionPath = QDir::homePath() + QLatin1String("/.")
- + cacheDir;
+ collectionPath = QDir::homePath() + QLatin1String("/.") + cacheDir;
} else {
if (cacheDir.isEmpty())
collectionPath = collectionPath + QLatin1String("/Trolltech/Assistant");
else
- collectionPath = collectionPath + QDir::separator()
- + cacheDir;
+ collectionPath = collectionPath + QDir::separator() + cacheDir;
}
collectionPath = QDir::cleanPath(collectionPath);
if (createDir) {
@@ -1001,8 +977,8 @@ QString MainWindow::collectionFileDirectory(bool createDir, const QString &cache
QString MainWindow::defaultHelpCollectionFileName()
{
return collectionFileDirectory() + QDir::separator() +
- QString(QLatin1String("qthelpcollection_%1.qhc")).
- arg(QLatin1String(QT_VERSION_STR));
+ QString(QLatin1String("qthelpcollection_%1.qhc")).
+ arg(QLatin1String(QT_VERSION_STR));
}
QT_END_NAMESPACE
diff --git a/tools/assistant/tools/assistant/mainwindow.h b/tools/assistant/tools/assistant/mainwindow.h
index 8b87b7b9ea..1bd8005c6b 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
@@ -72,7 +70,7 @@ public:
MainWindow(CmdLineParser *cmdLine, QWidget *parent = 0);
~MainWindow();
- static void activateCurrentBrowser();
+ static void activateCurrentBrowser();
static QString collectionFileDirectory(bool createDir = false,
const QString &cacheDir = QString());
static QString defaultHelpCollectionFileName();
@@ -103,12 +101,12 @@ private slots:
void gotoAddress();
void showPreferences();
void showNewAddress();
- void showAboutDialog();
+ void showAboutDialog();
void copyAvailable(bool yes);
void updateNavigationItems();
void showNewAddress(const QUrl &url);
void addNewBookmark(const QString &title, const QString &url);
- void showTopicChooser(const QMap<QString, QUrl> &links, const QString &keyword);
+ void showTopicChooser(const QMap<QString, QUrl> &links, const QString &keyword);
void updateApplicationFont();
void filterDocumentation(const QString &customFilter);
void setupFilterCombo();
@@ -128,7 +126,7 @@ private:
void setupFilterToolbar();
void setupAddressToolbar();
QMenu *toolBarMenu();
- QWidget *setupBookmarkWidget();
+ QWidget *setupBookmarkWidget();
QHelpEngine *m_helpEngine;
CentralWidget *m_centralWidget;
@@ -159,7 +157,6 @@ private:
QMenu *m_toolBarMenu;
CmdLineParser *m_cmdLine;
- SearchWidget *m_searchWidget;
QWidget *m_progressWidget;
QtDocInstaller *m_qtDocInstaller;
diff --git a/tools/assistant/tools/assistant/searchwidget.cpp b/tools/assistant/tools/assistant/searchwidget.cpp
index 000c73daf7..677e18ee9b 100644
--- a/tools/assistant/tools/assistant/searchwidget.cpp
+++ b/tools/assistant/tools/assistant/searchwidget.cpp
@@ -70,16 +70,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 +94,6 @@ SearchWidget::~SearchWidget()
void SearchWidget::zoomIn()
{
-#ifndef QT_CLUCENE_SUPPORT
- return;
-#endif
-
QTextBrowser* browser = qFindChild<QTextBrowser*>(resultWidget);
if (browser && zoomCount != 10) {
zoomCount++;
@@ -105,10 +103,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 +112,6 @@ void SearchWidget::zoomOut()
void SearchWidget::resetZoom()
{
-#ifndef QT_CLUCENE_SUPPORT
- return;
-#endif
-
if (zoomCount == 0)
return;
@@ -152,7 +142,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 +170,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 +180,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 +215,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/translations/qt_help.pro b/tools/assistant/translations/qt_help.pro
index 1684ac5b9d..efad6bf34b 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 84bde8c0b6..58de554479 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 f6ab62ed16..e3edca4a5e 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 1d4b616e84..717f5c95e9 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 96efe125ab..43201df5b8 100644
--- a/tools/configure/configureapp.cpp
+++ b/tools/configure/configureapp.cpp
@@ -476,6 +476,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";
@@ -689,6 +692,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" )
@@ -1729,6 +1735,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");
// Qt\Symbian only options go below here -----------------------------------------------------------------------------
@@ -1896,6 +1903,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")
@@ -2391,6 +2400,10 @@ void Configure::generateOutputVars()
qtConfig += "opengles1";
}
+ if ( dictionary["OPENGL_ES_2"] == "yes" ) {
+ qtConfig += "opengles2";
+ }
+
if ( dictionary["OPENGL_ES_CL"] == "yes" ) {
qtConfig += "opengles1cl";
}
@@ -2815,9 +2828,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";
@@ -3662,7 +3677,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 ae1ecdadcd..2649d4419e 100644
--- a/tools/configure/tools.cpp
+++ b/tools/configure/tools.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the tools applications 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 "tools.h"
#include <QDir>
@@ -17,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";
@@ -101,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()
@@ -129,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/configure/tools.h b/tools/configure/tools.h
index e95ff13f08..68a439a663 100644
--- a/tools/configure/tools.h
+++ b/tools/configure/tools.h
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the tools applications 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 _TOOLS_H_
#define _TOOLS_H_
diff --git a/tools/designer/src/components/propertyeditor/designerpropertymanager.cpp b/tools/designer/src/components/propertyeditor/designerpropertymanager.cpp
index 1b267aa7ae..346da182c9 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/designer/versiondialog.cpp b/tools/designer/src/designer/versiondialog.cpp
index a129a4dde8..c21912bd9b 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 6a664423e0..7f96a152ad 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 941a9ba7cd..1b638c345f 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 9d1af5aadf..66d77ce0eb 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/newactiondialog.cpp b/tools/designer/src/lib/shared/newactiondialog.cpp
index 53aec4b441..bb163d6152 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 c8bd34c5f3..d4e9b5b125 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/plugindialog_p.h b/tools/designer/src/lib/shared/plugindialog_p.h
index d50a804cd5..a2601d42c7 100644
--- a/tools/designer/src/lib/shared/plugindialog_p.h
+++ b/tools/designer/src/lib/shared/plugindialog_p.h
@@ -42,6 +42,17 @@
#ifndef PLUGINDIALOG_H
#define PLUGINDIALOG_H
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists purely as an
+// implementation detail. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
+
#include "ui_plugindialog.h"
QT_BEGIN_NAMESPACE
diff --git a/tools/designer/src/lib/shared/qdesigner_utils.cpp b/tools/designer/src/lib/shared/qdesigner_utils.cpp
index d2f092eba6..75fa1805fc 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/shared/textpropertyeditor.cpp b/tools/designer/src/lib/shared/textpropertyeditor.cpp
index cf12842edd..95a9f85b3b 100644
--- a/tools/designer/src/lib/shared/textpropertyeditor.cpp
+++ b/tools/designer/src/lib/shared/textpropertyeditor.cpp
@@ -293,6 +293,7 @@ namespace qdesigner_internal {
}
setFocusProxy(m_lineEdit);
+ setText(m_cachedText);
markIntermediateState();
}
diff --git a/tools/designer/src/lib/uilib/resourcebuilder.cpp b/tools/designer/src/lib/uilib/resourcebuilder.cpp
index 3679f92048..5df10e9842 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 d3d1d54489..67bd29cfc6 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);
}
diff --git a/tools/designer/translations/translations.pro b/tools/designer/translations/translations.pro
index 7294956b11..839525923c 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 2842bc7c56..9ccc60e304 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/formpreviewview.cpp b/tools/linguist/linguist/formpreviewview.cpp
index 990414b0cd..184f01bc11 100644
--- a/tools/linguist/linguist/formpreviewview.cpp
+++ b/tools/linguist/linguist/formpreviewview.cpp
@@ -473,7 +473,7 @@ void FormPreviewView::setSourceContext(int model, MessageItem *messageItem)
}
QDir dir = QFileInfo(m_dataModel->srcFileName(model)).dir();
- QString fileName = dir.absoluteFilePath(messageItem->fileName());
+ QString fileName = QDir::cleanPath(dir.absoluteFilePath(messageItem->fileName()));
if (m_lastFormName != fileName) {
delete m_form;
m_form = 0;
diff --git a/tools/linguist/linguist/linguist.pro b/tools/linguist/linguist/linguist.pro
index 417ef67f5c..968293a56b 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 e0a8a56712..5157fbe8ff 100644
--- a/tools/linguist/linguist/mainwindow.cpp
+++ b/tools/linguist/linguist/mainwindow.cpp
@@ -188,7 +188,7 @@ private:
static const QVariant &pxObsolete()
{
- static const QVariant v =
+ static const QVariant v =
qVariantFromValue(QPixmap(QLatin1String(":/images/s_check_obsolete.png")));
return v;
}
@@ -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 "
@@ -1535,7 +1515,7 @@ void MainWindow::selectedMessageChanged(const QModelIndex &sortedIndex, const QM
} else {
m_sourceAndFormView->setCurrentWidget(m_sourceCodeView);
QDir dir = QFileInfo(m_dataModel->srcFileName(model)).dir();
- QString fileName = dir.absoluteFilePath(m->fileName());
+ QString fileName = QDir::cleanPath(dir.absoluteFilePath(m->fileName()));
m_sourceCodeView->setSourceContext(fileName, m->lineNumber());
}
m_errorsView->setEnabled(true);
diff --git a/tools/linguist/linguist/messageeditor.cpp b/tools/linguist/linguist/messageeditor.cpp
index f8c679ca75..53cbbea212 100644
--- a/tools/linguist/linguist/messageeditor.cpp
+++ b/tools/linguist/linguist/messageeditor.cpp
@@ -67,7 +67,7 @@ QT_BEGIN_NAMESPACE
// Allow translators to provide localized names for QLocale::languageToString
// At least the own language should be translated ... This is a "hack" until
// functionality is provided within Qt (see task 196275).
-static const char * language_strings[] =
+static const char * language_strings[] =
{
QT_TRANSLATE_NOOP("MessageEditor", "German"),
QT_TRANSLATE_NOOP("MessageEditor", "Japanese"),
@@ -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);
@@ -786,6 +779,7 @@ void MessageEditor::selectAll()
void MessageEditor::emitTranslationChanged()
{
+ static_cast<FormWidget *>(sender())->getEditor()->setFocus(); // DND proofness
updateBeginFromSource();
updateUndoRedo();
emit translationChanged(translations(m_currentModel));
@@ -793,6 +787,7 @@ void MessageEditor::emitTranslationChanged()
void MessageEditor::emitTranslatorCommentChanged()
{
+ static_cast<FormWidget *>(sender())->getEditor()->setFocus(); // DND proofness
updateUndoRedo();
emit translatorCommentChanged(m_editors[m_currentModel].transCommentText->getTranslation());
}
diff --git a/tools/linguist/linguist/messagemodel.cpp b/tools/linguist/linguist/messagemodel.cpp
index a7053cf911..7a8063bb74 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);
}
@@ -460,7 +460,7 @@ QString DataModel::prettifyFileName(const QString &fn)
/******************************************************************************
*
- * DataModelIterator
+ * DataModelIterator
*
*****************************************************************************/
@@ -1109,7 +1109,7 @@ void MultiDataModel::updateCountsOnRemove(int model, bool writable)
/******************************************************************************
*
- * MultiDataModelIterator
+ * MultiDataModelIterator
*
*****************************************************************************/
@@ -1214,17 +1214,17 @@ int MessageModel::columnCount(const QModelIndex &) const
QVariant MessageModel::data(const QModelIndex &index, int role) const
{
- static QVariant pxOn =
+ static QVariant pxOn =
qVariantFromValue(QPixmap(QLatin1String(":/images/s_check_on.png")));
- static QVariant pxOff =
+ static QVariant pxOff =
qVariantFromValue(QPixmap(QLatin1String(":/images/s_check_off.png")));
- static QVariant pxObsolete =
+ static QVariant pxObsolete =
qVariantFromValue(QPixmap(QLatin1String(":/images/s_check_obsolete.png")));
static QVariant pxDanger =
qVariantFromValue(QPixmap(QLatin1String(":/images/s_check_danger.png")));
static QVariant pxWarning =
qVariantFromValue(QPixmap(QLatin1String(":/images/s_check_warning.png")));
- static QVariant pxEmpty =
+ static QVariant pxEmpty =
qVariantFromValue(QPixmap(QLatin1String(":/images/s_check_empty.png")));
int row = index.row();
diff --git a/tools/linguist/linguist/phrase.cpp b/tools/linguist/linguist/phrase.cpp
index 563c72d8a6..300f6e8dc7 100644
--- a/tools/linguist/linguist/phrase.cpp
+++ b/tools/linguist/linguist/phrase.cpp
@@ -243,7 +243,7 @@ bool PhraseBook::load(const QString &fileName, bool *langGuessed)
// don't click on these!
reader.setFeature(QLatin1String("http://xml.org/sax/features/namespaces"), false);
reader.setFeature(QLatin1String("http://xml.org/sax/features/namespace-prefixes"), true);
- reader.setFeature(QLatin1String("http://qtsoftware.com/xml/features/report-whitespace"
+ reader.setFeature(QLatin1String("http://trolltech.com/xml/features/report-whitespace"
"-only-CharData"), false);
QphHandler *hand = new QphHandler(this);
reader.setContentHandler(hand);
diff --git a/tools/linguist/linguist/phraseview.cpp b/tools/linguist/linguist/phraseview.cpp
index 78c91511ba..72c27dcc15 100644
--- a/tools/linguist/linguist/phraseview.cpp
+++ b/tools/linguist/linguist/phraseview.cpp
@@ -135,7 +135,7 @@ void PhraseView::contextMenuEvent(QContextMenuEvent *event)
void PhraseView::mouseDoubleClickEvent(QMouseEvent *event)
{
QModelIndex index = indexAt(event->pos());
- if (!index.isValid())
+ if (!index.isValid())
return;
emit phraseSelected(m_modelIndex, m_phraseModel->phrase(index)->target());
diff --git a/tools/linguist/linguist/translationsettingsdialog.h b/tools/linguist/linguist/translationsettingsdialog.h
index 8a633d9e1b..a7ed1b4538 100644
--- a/tools/linguist/linguist/translationsettingsdialog.h
+++ b/tools/linguist/linguist/translationsettingsdialog.h
@@ -76,4 +76,4 @@ private:
QT_END_NAMESPACE
-#endif // TRANSLATIONSETTINGSDIALOG_H
+#endif // TRANSLATIONSETTINGSDIALOG_H
diff --git a/tools/linguist/lrelease/main.cpp b/tools/linguist/lrelease/main.cpp
index f1fdb3af49..3bcc998f7b 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 e7865d5858..b537b6e4c2 100644
--- a/tools/linguist/lupdate/main.cpp
+++ b/tools/linguist/lupdate/main.cpp
@@ -73,7 +73,7 @@ static void recursiveFileInfoList(const QDir &dir,
if (fname != QLatin1String(".") && fname != QLatin1String("..")) {
if (it->isDir())
recursiveFileInfoList(QDir(it->absoluteFilePath()), nameFilters, filter, recursive, fileinfolist);
- else
+ else
fileinfolist->append(*it);
}
}
@@ -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/cpp.cpp b/tools/linguist/shared/cpp.cpp
index 28616cc4bb..2e137cfa6f 100644
--- a/tools/linguist/shared/cpp.cpp
+++ b/tools/linguist/shared/cpp.cpp
@@ -130,12 +130,19 @@ static int yyInPos;
static uint getChar()
{
- if (yyInPos >= yyInStr.size())
- return EOF;
- QChar c = yyInStr[yyInPos++];
- if (c.unicode() == '\n')
- ++yyCurLineNo;
- return c.unicode();
+ forever {
+ if (yyInPos >= yyInStr.size())
+ return EOF;
+ uint c = yyInStr[yyInPos++].unicode();
+ if (c == '\\' && yyInPos < yyInStr.size() && yyInStr[yyInPos].unicode() == '\n') {
+ ++yyCurLineNo;
+ ++yyInPos;
+ continue;
+ }
+ if (c == '\n')
+ ++yyCurLineNo;
+ return c;
+ }
}
static uint getToken()
@@ -784,7 +791,7 @@ static void parse(Translator *tor, const QString &initialContext, const QString
if (yyTok == Tok_ColonColon)
fullName.append(QString());
while (yyTok == Tok_ColonColon || yyTok == Tok_Ident) {
- if (yyTok == Tok_Ident)
+ if (yyTok == Tok_Ident)
fullName.append(yyIdent);
yyTok = getToken();
}
diff --git a/tools/linguist/shared/po.cpp b/tools/linguist/shared/po.cpp
index e9375e96f1..5842771a55 100644
--- a/tools/linguist/shared/po.cpp
+++ b/tools/linguist/shared/po.cpp
@@ -389,7 +389,7 @@ bool loadPO(Translator &translator, QIODevice &dev, ConversionData &cd)
for (; l != lines.size(); ++l) {
QString line = lines.at(l);
if (line.isEmpty())
- continue;
+ continue;
if (isTranslationLine(line)) {
bool isObsolete = line.startsWith(QLatin1String("#~ msgstr"));
const QString prefix = QLatin1String(isObsolete ? "#~ " : "");
diff --git a/tools/linguist/shared/profileevaluator.cpp b/tools/linguist/shared/profileevaluator.cpp
index 1e91f92ced..544075234e 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);
@@ -711,7 +713,7 @@ QStringList ProFileEvaluator::Private::qmakeFeaturePaths()
// if (!specdir.cdUp() || specdir.isRoot())
// break;
// if (QFile::exists(specdir.path() + QDir::separator() + "features")) {
- // foreach (const QString &concat_it, concat)
+ // foreach (const QString &concat_it, concat)
// feature_roots << (specdir.path() + concat_it);
// break;
// }
@@ -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: {
@@ -1373,7 +1377,7 @@ bool ProFileEvaluator::Private::evaluateConditionalFunction(const QString &funct
parents.append(proFile->fileName());
if (!parents.isEmpty())
parents.takeLast();
- if (parents.isEmpty())
+ if (parents.isEmpty())
q->fileMessage(format("Project ERROR: %1").arg(msg));
else
q->fileMessage(format("Project ERROR: %1. File was included from: '%2'")
@@ -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 c197e2b1f2..5563ac5743 100644
--- a/tools/linguist/shared/qm.cpp
+++ b/tools/linguist/shared/qm.cpp
@@ -103,6 +103,43 @@ static uint elfHash(const QByteArray &ba)
return h;
}
+class ByteTranslatorMessage
+{
+public:
+ ByteTranslatorMessage(
+ const QByteArray &context,
+ const QByteArray &sourceText,
+ const QByteArray &comment,
+ const QStringList &translations) :
+ m_context(context),
+ m_sourcetext(sourceText),
+ m_comment(comment),
+ m_translations(translations)
+ {}
+ const QByteArray &context() const { return m_context; }
+ const QByteArray &sourceText() const { return m_sourcetext; }
+ const QByteArray &comment() const { return m_comment; }
+ const QStringList &translations() const { return m_translations; }
+ bool operator<(const ByteTranslatorMessage& m) const;
+
+private:
+ QByteArray m_context;
+ QByteArray m_sourcetext;
+ QByteArray m_comment;
+ QStringList m_translations;
+};
+
+Q_DECLARE_TYPEINFO(ByteTranslatorMessage, Q_MOVABLE_TYPE);
+
+bool ByteTranslatorMessage::operator<(const ByteTranslatorMessage& m) const
+{
+ if (m_context != m.m_context)
+ return m_context < m.m_context;
+ if (m_sourcetext != m.m_sourcetext)
+ return m_sourcetext < m.m_sourcetext;
+ return m_comment < m.m_comment;
+}
+
class Releaser
{
public:
@@ -133,27 +170,12 @@ public:
m_codec = QTextCodec::codecForName(codecName);
}
- TranslatorMessage findMessage(const QString &context,
- const QString &sourceText, const QString &comment,
- const QString &fileName = QString(), int lineNumber = -1) const;
-
bool save(QIODevice *iod);
- void insert(const TranslatorMessage &);
- void remove(const TranslatorMessage &);
-
- bool contains(const QString &context, const QString &sourceText,
- const QString & comment) const;
-
- bool contains(const QString &context, const QString &comment,
- const QString &fileName, int lineNumber) const;
+ void insert(const TranslatorMessage &msg, bool forceComment);
void squeeze(TranslatorSaveMode mode);
- QList<TranslatorMessage> messages() const;
-
- bool isEmpty() const;
-
void setNumerusRules(const QByteArray &rules);
private:
@@ -163,18 +185,20 @@ private:
// on turn should be the same as passed to the actual tr(...) calls
QByteArray originalBytes(const QString &str, bool isUtf8) const;
- Prefix commonPrefix(const TranslatorMessage &m1, const TranslatorMessage &m2) const;
+ void insertInternal(const TranslatorMessage &message, bool forceComment, bool isUtf8);
+
+ static Prefix commonPrefix(const ByteTranslatorMessage &m1, const ByteTranslatorMessage &m2);
- uint msgHash(const TranslatorMessage &msg) const;
+ static uint msgHash(const ByteTranslatorMessage &msg);
- void writeMessage(const TranslatorMessage & msg, QDataStream & stream,
+ void writeMessage(const ByteTranslatorMessage & msg, QDataStream & stream,
TranslatorSaveMode strip, Prefix prefix) const;
// for squeezed but non-file data, this is what needs to be deleted
QByteArray m_messageArray;
QByteArray m_offsetArray;
QByteArray m_contextArray;
- QMap<TranslatorMessage, void *> m_messages;
+ QMap<ByteTranslatorMessage, void *> m_messages;
QByteArray m_numerusRules;
// Used to reproduce the original bytes
@@ -193,12 +217,12 @@ QByteArray Releaser::originalBytes(const QString &str, bool isUtf8) const
return m_codec ? m_codec->fromUnicode(str) : str.toLatin1();
}
-uint Releaser::msgHash(const TranslatorMessage &msg) const
+uint Releaser::msgHash(const ByteTranslatorMessage &msg)
{
- return elfHash(originalBytes(msg.sourceText() + msg.comment(), msg.isUtf8()));
+ return elfHash(msg.sourceText() + msg.comment());
}
-Prefix Releaser::commonPrefix(const TranslatorMessage &m1, const TranslatorMessage &m2) const
+Prefix Releaser::commonPrefix(const ByteTranslatorMessage &m1, const ByteTranslatorMessage &m2)
{
if (msgHash(m1) != msgHash(m2))
return NoPrefix;
@@ -211,7 +235,7 @@ Prefix Releaser::commonPrefix(const TranslatorMessage &m1, const TranslatorMessa
return HashContextSourceTextComment;
}
-void Releaser::writeMessage(const TranslatorMessage & msg, QDataStream & stream,
+void Releaser::writeMessage(const ByteTranslatorMessage &msg, QDataStream &stream,
TranslatorSaveMode mode, Prefix prefix) const
{
for (int i = 0; i < msg.translations().count(); ++i) {
@@ -228,14 +252,14 @@ void Releaser::writeMessage(const TranslatorMessage & msg, QDataStream & stream,
switch (prefix) {
default:
case HashContextSourceTextComment:
- stream << quint8(Tag_Comment) << originalBytes(msg.comment(), msg.isUtf8());
+ stream << quint8(Tag_Comment) << msg.comment();
// fall through
case HashContextSourceText:
- stream << quint8(Tag_SourceText) << originalBytes(msg.sourceText(), msg.isUtf8());
+ stream << quint8(Tag_SourceText) << msg.sourceText();
// fall through
case HashContext:
- stream << quint8(Tag_Context) << originalBytes(msg.context(), msg.isUtf8());
- ;
+ stream << quint8(Tag_Context) << msg.context();
+ break;
}
stream << quint8(Tag_End);
@@ -275,7 +299,7 @@ void Releaser::squeeze(TranslatorSaveMode mode)
if (m_messages.isEmpty() && mode == SaveEverything)
return;
- QMap<TranslatorMessage, void *> messages = m_messages;
+ QMap<ByteTranslatorMessage, void *> messages = m_messages;
// re-build contents
m_messageArray.clear();
@@ -286,7 +310,7 @@ void Releaser::squeeze(TranslatorSaveMode mode)
QMap<Offset, void *> offsets;
QDataStream ms(&m_messageArray, QIODevice::WriteOnly);
- QMap<TranslatorMessage, void *>::const_iterator it, next;
+ QMap<ByteTranslatorMessage, void *>::const_iterator it, next;
int cpPrev = 0, cpNext = 0;
for (it = messages.constBegin(); it != messages.constEnd(); ++it) {
cpPrev = cpNext;
@@ -310,7 +334,7 @@ void Releaser::squeeze(TranslatorSaveMode mode)
}
if (mode == SaveStripped) {
- QMap<QString, int> contextSet;
+ QMap<QByteArray, int> contextSet;
for (it = messages.constBegin(); it != messages.constEnd(); ++it)
++contextSet[it.key().context()];
@@ -322,10 +346,10 @@ void Releaser::squeeze(TranslatorSaveMode mode)
else
hTableSize = (contextSet.size() < 10000) ? 15013 : 3 * contextSet.size() / 2;
- QMultiMap<int, QString> hashMap;
- QMap<QString, int>::const_iterator c;
+ QMultiMap<int, QByteArray> hashMap;
+ QMap<QByteArray, int>::const_iterator c;
for (c = contextSet.constBegin(); c != contextSet.constEnd(); ++c)
- hashMap.insert(elfHash(originalBytes(c.key(), false /*FIXME*/)) % hTableSize, c.key());
+ hashMap.insert(elfHash(c.key()) % hTableSize, c.key());
/*
The contexts found in this translator are stored in a hash
@@ -360,16 +384,14 @@ void Releaser::squeeze(TranslatorSaveMode mode)
t << quint16(0); // the entry at offset 0 cannot be used
uint upto = 2;
- QMap<int, QString>::const_iterator entry = hashMap.constBegin();
+ QMap<int, QByteArray>::const_iterator entry = hashMap.constBegin();
while (entry != hashMap.constEnd()) {
int i = entry.key();
hTable[i] = quint16(upto >> 1);
do {
- QString context = entry.value();
- QByteArray ba = context.toUtf8();
- const char *con = ba.data();
- uint len = uint(qstrlen(con));
+ const char *con = entry.value().constData();
+ uint len = uint(entry.value().length());
len = qMin(len, 255u);
t << quint8(len);
t.writeRawData(con, len);
@@ -394,68 +416,28 @@ void Releaser::squeeze(TranslatorSaveMode mode)
}
}
-bool Releaser::contains(const QString &context, const QString &sourceText,
- const QString &comment) const
-{
- return !findMessage(context, sourceText, comment).translation().isNull();
-}
-
-bool Releaser::contains(const QString &context, const QString &comment,
- const QString &fileName, int lineNumber) const
-{
- return !findMessage(context, QString(), comment, fileName, lineNumber).isNull();
-}
-
-void Releaser::insert(const TranslatorMessage &message)
-{
- m_messages.insert(message, 0);
-}
-
-void Releaser::remove(const TranslatorMessage &message)
+void Releaser::insertInternal(const TranslatorMessage &message, bool forceComment, bool isUtf8)
{
- m_messages.remove(message);
-}
-
-
-TranslatorMessage Releaser::findMessage(const QString &context,
- const QString &sourceText, const QString &comment,
- const QString &fileName, int lineNumber) const
-{
- if (m_messages.isEmpty())
- return TranslatorMessage();
-
- QMap<TranslatorMessage, void *>::const_iterator it;
-
- // Either we want to find an item that matches context, sourcetext
- // (and optionally comment) Or we want to find an item that
- // matches context, filename, linenumber (and optionally comment)
- TranslatorMessage msg(context, sourceText, comment, QString(), fileName, lineNumber);
- it = m_messages.constFind(msg);
- if (it != m_messages.constEnd())
- return it.key();
-
- if (!comment.isEmpty()) {
- it = m_messages.constFind(TranslatorMessage(context, sourceText, QString(), QString(), fileName, lineNumber));
- if (it != m_messages.constEnd())
- return it.key();
+ ByteTranslatorMessage bmsg(originalBytes(message.context(), isUtf8),
+ originalBytes(message.sourceText(), isUtf8),
+ originalBytes(message.comment(), isUtf8),
+ message.translations());
+ if (!forceComment) {
+ ByteTranslatorMessage bmsg2(
+ bmsg.context(), bmsg.sourceText(), QByteArray(""), bmsg.translations());
+ if (!m_messages.contains(bmsg2)) {
+ m_messages.insert(bmsg2, 0);
+ return;
+ }
}
-
- it = m_messages.constFind(TranslatorMessage(context, QString(), comment, QString(), fileName, lineNumber));
- if (it != m_messages.constEnd())
- return it.key();
- if (comment.isEmpty())
- return TranslatorMessage();
-
- it = m_messages.constFind(TranslatorMessage(context, QString(), QString(), QString(), fileName, lineNumber));
- if (it != m_messages.constEnd())
- return it.key();
- return TranslatorMessage();
+ m_messages.insert(bmsg, 0);
}
-bool Releaser::isEmpty() const
+void Releaser::insert(const TranslatorMessage &message, bool forceComment)
{
- return m_messageArray.isEmpty() && m_offsetArray.isEmpty()
- && m_contextArray.isEmpty() && m_messages.isEmpty();
+ insertInternal(message, forceComment, message.isUtf8());
+ if (message.isUtf8() && message.isNonUtf8())
+ insertInternal(message, forceComment, false);
}
void Releaser::setNumerusRules(const QByteArray &rules)
@@ -463,11 +445,6 @@ void Releaser::setNumerusRules(const QByteArray &rules)
m_numerusRules = rules;
}
-QList<TranslatorMessage> Releaser::messages() const
-{
- return m_messages.keys();
-}
-
static quint8 read8(const uchar *data)
{
return *data;
@@ -478,6 +455,31 @@ static quint32 read32(const uchar *data)
return (data[0] << 24) | (data[1] << 16) | (data[2] << 8) | (data[3]);
}
+static void fromBytes(const char *str, int len, QTextCodec *codec, QTextCodec *utf8Codec,
+ QString *out, QString *utf8Out,
+ bool *isSystem, bool *isUtf8, bool *needs8Bit)
+{
+ for (int i = 0; i < len; ++i)
+ if (str[i] & 0x80) {
+ if (utf8Codec) {
+ QTextCodec::ConverterState cvtState;
+ *utf8Out = utf8Codec->toUnicode(str, len, &cvtState);
+ *isUtf8 = !cvtState.invalidChars;
+ }
+ QTextCodec::ConverterState cvtState;
+ *out = codec->toUnicode(str, len, &cvtState);
+ *isSystem = !cvtState.invalidChars;
+ *needs8Bit = true;
+ return;
+ }
+ *out = QString::fromLatin1(str, len);
+ *isSystem = true;
+ if (utf8Codec) {
+ *utf8Out = *out;
+ *isUtf8 = true;
+ }
+ *needs8Bit = false;
+}
bool loadQM(Translator &translator, QIODevice &dev, ConversionData &cd)
{
@@ -543,10 +545,19 @@ bool loadQM(Translator &translator, QIODevice &dev, ConversionData &cd)
size_t numItems = offsetLength / (2 * sizeof(quint32));
//qDebug() << "NUMITEMS: " << numItems;
- TranslatorMessage msg;
-
// FIXME: that's just a guess, the original locale data is lost...
QTextCodec *codec = QTextCodec::codecForLocale();
+ QTextCodec *utf8Codec = 0;
+ if (codec->name() != "UTF-8")
+ utf8Codec = QTextCodec::codecForName("UTF-8");
+
+ QString context, contextUtf8;
+ bool contextIsSystem, contextIsUtf8, contextNeeds8Bit;
+ QString sourcetext, sourcetextUtf8;
+ bool sourcetextIsSystem, sourcetextIsUtf8, sourcetextNeeds8Bit;
+ QString comment, commentUtf8;
+ bool commentIsSystem, commentIsUtf8, commentNeeds8Bit;
+ QStringList translations;
for (const uchar *start = offsetArray; start != offsetArray + (numItems << 3); start += 8) {
//quint32 hash = read32(start);
@@ -575,7 +586,7 @@ bool loadQM(Translator &translator, QIODevice &dev, ConversionData &cd)
}
str.replace(QChar(Translator::InternalVariantSeparator),
QChar(Translator::DefaultVariantSeparator));
- msg.appendTranslation(str);
+ translations << str;
m += len;
break;
}
@@ -588,7 +599,9 @@ bool loadQM(Translator &translator, QIODevice &dev, ConversionData &cd)
m += 4;
//qDebug() << "SOURCE LEN: " << len;
//qDebug() << "SOURCE: " << QByteArray((const char*)m, len);
- msg.setSourceText(codec->toUnicode(QByteArray((const char*)m, len)));
+ fromBytes((const char*)m, len, codec, utf8Codec,
+ &sourcetext, &sourcetextUtf8,
+ &sourcetextIsSystem, &sourcetextIsUtf8, &sourcetextNeeds8Bit);
m += len;
break;
}
@@ -597,7 +610,9 @@ bool loadQM(Translator &translator, QIODevice &dev, ConversionData &cd)
m += 4;
//qDebug() << "CONTEXT LEN: " << len;
//qDebug() << "CONTEXT: " << QByteArray((const char*)m, len);
- msg.setContext(codec->toUnicode(QByteArray((const char*)m, len)));
+ fromBytes((const char*)m, len, codec, utf8Codec,
+ &context, &contextUtf8,
+ &contextIsSystem, &contextIsUtf8, &contextNeeds8Bit);
m += len;
break;
}
@@ -606,7 +621,9 @@ bool loadQM(Translator &translator, QIODevice &dev, ConversionData &cd)
m += 4;
//qDebug() << "COMMENT LEN: " << len;
//qDebug() << "COMMENT: " << QByteArray((const char*)m, len);
- msg.setComment(codec->toUnicode(QByteArray((const char*)m, len)));
+ fromBytes((const char*)m, len, codec, utf8Codec,
+ &comment, &commentUtf8,
+ &commentIsSystem, &commentIsUtf8, &commentNeeds8Bit);
m += len;
break;
}
@@ -616,10 +633,31 @@ bool loadQM(Translator &translator, QIODevice &dev, ConversionData &cd)
}
}
end:;
+ TranslatorMessage msg;
msg.setType(TranslatorMessage::Finished);
+ msg.setTranslations(translations);
+ translations.clear();
+ if (contextNeeds8Bit || sourcetextNeeds8Bit || commentNeeds8Bit) {
+ if (utf8Codec && contextIsUtf8 && sourcetextIsUtf8 && commentIsUtf8) {
+ // The message is utf-8, but file is not.
+ msg.setUtf8(true);
+ msg.setContext(contextUtf8);
+ msg.setSourceText(sourcetextUtf8);
+ msg.setComment(commentUtf8);
+ translator.append(msg);
+ continue;
+ }
+ if (!(contextIsSystem && sourcetextIsSystem && commentIsSystem)) {
+ cd.appendError(QLatin1String(
+ "Cannot read file with current system character codec"));
+ return false;
+ }
+ // The message is 8-bit in the file's encoding (utf-8 or not).
+ }
+ msg.setContext(context);
+ msg.setSourceText(sourcetext);
+ msg.setComment(comment);
translator.append(msg);
- //qDebug() << "\nHASH:" << hash << msg.sourceText() << msg.context();
- msg.setTranslations(QStringList());
}
return ok;
}
@@ -646,39 +684,27 @@ static bool saveQM(const Translator &translator, QIODevice &dev, ConversionData
TranslatorMessage::Type typ = msg.type();
if (typ != TranslatorMessage::Obsolete) {
if (typ == TranslatorMessage::Unfinished) {
- if (msg.translation().isEmpty())
+ if (msg.translation().isEmpty()) {
++untranslated;
- else
+ continue;
+ } else {
+ if (cd.ignoreUnfinished())
+ continue;
++unfinished;
+ }
} else {
++finished;
}
- QString context = msg.context();
- QString sourceText = msg.sourceText();
- QString comment = msg.comment();
- QStringList translations = msg.translations();
-
- if (!cd.ignoreUnfinished() || typ != TranslatorMessage::Unfinished) {
- /*
- Drop the comment in (context, sourceText, comment),
- unless the context is empty,
- unless (context, sourceText, "") already exists or
- unless we already dropped the comment of (context,
- sourceText, comment0).
- */
- if (comment.isEmpty()
- || context.isEmpty()
- || translator.contains(context, sourceText, QString())
- || !releaser.findMessage(context, sourceText, QString()).translation()
- .isNull() ) {
- releaser.insert(msg);
- } else {
- TranslatorMessage tm(context, sourceText, QString(),
- QString(), QString(), -1, translations);
- //filename and lineNumbers will be ignored from now.
- releaser.insert(tm);
- }
- }
+ // Drop the comment in (context, sourceText, comment),
+ // unless the context is empty,
+ // unless (context, sourceText, "") already exists or
+ // unless we already dropped the comment of (context,
+ // sourceText, comment0).
+ bool forceComment =
+ msg.comment().isEmpty()
+ || msg.context().isEmpty()
+ || translator.contains(msg.context(), msg.sourceText(), QString());
+ releaser.insert(msg, forceComment);
}
}
diff --git a/tools/linguist/shared/qph.cpp b/tools/linguist/shared/qph.cpp
index 45d3a20a28..799bf7dd83 100644
--- a/tools/linguist/shared/qph.cpp
+++ b/tools/linguist/shared/qph.cpp
@@ -101,7 +101,7 @@ bool QPHReader::read(Translator &translator)
m_currentField = TargetField;
else if (name() == QLatin1String("definition"))
m_currentField = DefinitionField;
- else
+ else
m_currentField = NoField;
} else if (isWhiteSpace()) {
// ignore these
@@ -133,14 +133,47 @@ static bool loadQPH(Translator &translator, QIODevice &dev, ConversionData &cd)
return reader.read(translator);
}
-static bool saveQPH(const Translator &translator, QIODevice &dev, ConversionData &cd)
+static QString protect(const QString &str)
+{
+ QString result;
+ result.reserve(str.length() * 12 / 10);
+ for (int i = 0; i != str.size(); ++i) {
+ uint c = str.at(i).unicode();
+ switch (c) {
+ case '\"':
+ result += QLatin1String("&quot;");
+ break;
+ case '&':
+ result += QLatin1String("&amp;");
+ break;
+ case '>':
+ result += QLatin1String("&gt;");
+ break;
+ case '<':
+ result += QLatin1String("&lt;");
+ break;
+ case '\'':
+ result += QLatin1String("&apos;");
+ break;
+ default:
+ if (c < 0x20 && c != '\r' && c != '\n' && c != '\t')
+ result += QString(QLatin1String("&#%1;")).arg(c);
+ else // this also covers surrogates
+ result += QChar(c);
+ }
+ }
+ return result;
+}
+
+static bool saveQPH(const Translator &translator, QIODevice &dev, ConversionData &)
{
QTextStream t(&dev);
- t << "<!DOCTYPE QPH><QPH>\n";
+ t.setCodec(QTextCodec::codecForName("UTF-8"));
+ t << "<!DOCTYPE QPH>\n<QPH>\n";
foreach (const TranslatorMessage &msg, translator.messages()) {
t << "<phrase>\n";
- t << " <source>" << msg.sourceText() << "</source>\n";
- t << " <target>" << msg.translations().join(QLatin1String("@"))
+ t << " <source>" << protect(msg.sourceText()) << "</source>\n";
+ t << " <target>" << protect(msg.translations().join(QLatin1String("@")))
<< "</target>\n";
if (!msg.context().isEmpty() || !msg.comment().isEmpty())
t << " <definition>" << msg.context() << msg.comment()
diff --git a/tools/linguist/shared/qscript.cpp b/tools/linguist/shared/qscript.cpp
index 9ab5e160fd..7377cba61d 100644
--- a/tools/linguist/shared/qscript.cpp
+++ b/tools/linguist/shared/qscript.cpp
@@ -2382,7 +2382,7 @@ bool loadQScript(Translator &translator, QIODevice &dev, ConversionData &cd)
return true;
}
-bool saveQScript(const Translator &translator, QIODevice &dev, ConversionData &cd)
+bool saveQScript(const Translator &translator, QIODevice &dev, ConversionData &cd)
{
Q_UNUSED(dev);
Q_UNUSED(translator);
diff --git a/tools/linguist/shared/qscript.g b/tools/linguist/shared/qscript.g
index c7ee80db70..8d332779a9 100644
--- a/tools/linguist/shared/qscript.g
+++ b/tools/linguist/shared/qscript.g
@@ -2012,7 +2012,7 @@ bool loadQScript(Translator &translator, QIODevice &dev, ConversionData &cd)
return true;
}
-bool saveQScript(const Translator &translator, QIODevice &dev, ConversionData &cd)
+bool saveQScript(const Translator &translator, QIODevice &dev, ConversionData &cd)
{
Q_UNUSED(dev);
Q_UNUSED(translator);
diff --git a/tools/linguist/shared/translator.cpp b/tools/linguist/shared/translator.cpp
index 3b5e8f3fba..312bb7116c 100644
--- a/tools/linguist/shared/translator.cpp
+++ b/tools/linguist/shared/translator.cpp
@@ -105,13 +105,18 @@ void Translator::extend(const TranslatorMessage &msg)
if (index == -1) {
m_messages.append(msg);
} else {
- m_messages[index].addReferenceUniq(msg.fileName(), msg.lineNumber());
+ TranslatorMessage &emsg = m_messages[index];
+ emsg.addReferenceUniq(msg.fileName(), msg.lineNumber());
if (!msg.extraComment().isEmpty()) {
- QString cmt = m_messages[index].extraComment();
+ QString cmt = emsg.extraComment();
if (!cmt.isEmpty())
cmt.append(QLatin1String("\n----------\n"));
cmt.append(msg.extraComment());
- m_messages[index].setExtraComment(cmt);
+ emsg.setExtraComment(cmt);
+ }
+ if (msg.isUtf8() != emsg.isUtf8()) {
+ emsg.setUtf8(true);
+ emsg.setNonUtf8(true);
}
}
}
@@ -411,17 +416,53 @@ void Translator::dropTranslations()
}
}
-QList<TranslatorMessage> Translator::findDuplicates() const
+QSet<TranslatorMessagePtr> Translator::resolveDuplicates()
+{
+ QSet<TranslatorMessagePtr> dups;
+ QHash<TranslatorMessagePtr, int> refs;
+ for (int i = 0; i < m_messages.count();) {
+ const TranslatorMessage &msg = m_messages.at(i);
+ 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);
+ } else {
+ // Duplicate
+ dups.insert(omsg);
+ }
+ if (!omsg.isTranslated() && msg.isTranslated())
+ omsg.setTranslations(msg.translations());
+ m_messages.removeAt(i);
+ } else {
+ refs[msg] = i;
+ ++i;
+ }
+ }
+ return dups;
+}
+
+void Translator::reportDuplicates(const QSet<TranslatorMessagePtr> &dupes,
+ const QString &fileName, bool verbose)
{
- 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;
+ 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();
+ }
+ }
}
// Used by lupdate to be able to search using absolute paths during merging
@@ -544,7 +585,7 @@ void Translator::setCodecName(const QByteArray &name)
if (!codec) {
if (!name.isEmpty())
qWarning("No QTextCodec for %s available. Using Latin1\n", name.constData());
- m_codecName.clear();
+ m_codecName = "ISO-8859-1";
} else {
m_codecName = codec->name();
}
diff --git a/tools/linguist/shared/translator.h b/tools/linguist/shared/translator.h
index f4279da436..6b88b23a0e 100644
--- a/tools/linguist/shared/translator.h
+++ b/tools/linguist/shared/translator.h
@@ -52,8 +52,6 @@
QT_BEGIN_NAMESPACE
-Q_DECLARE_TYPEINFO(TranslatorMessage, Q_MOVABLE_TYPE);
-
class QIODevice;
// A struct of "interesting" data passed to and from the load and save routines
@@ -88,7 +86,7 @@ public:
QString m_targetFileName;
QDir m_sourceDir;
QDir m_targetDir; // FIXME: TS spefic
- QStringList m_dropTags; // tags to be dropped
+ QStringList m_dropTags; // tags to be dropped
QStringList m_errors;
bool m_verbose;
bool m_ignoreUnfinished;
@@ -129,8 +127,10 @@ public:
void stripNonPluralForms();
void stripIdenticalSourceTranslations();
void dropTranslations();
- QList<TranslatorMessage> findDuplicates() const;
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.cpp b/tools/linguist/shared/translatormessage.cpp
index ab4301fbb3..afe66fe888 100644
--- a/tools/linguist/shared/translatormessage.cpp
+++ b/tools/linguist/shared/translatormessage.cpp
@@ -54,7 +54,7 @@
QT_BEGIN_NAMESPACE
TranslatorMessage::TranslatorMessage()
- : m_lineNumber(-1), m_type(Unfinished), m_utf8(false), m_plural(false)
+ : m_lineNumber(-1), m_type(Unfinished), m_utf8(false), m_nonUtf8(false), m_plural(false)
{
}
@@ -66,7 +66,7 @@ TranslatorMessage::TranslatorMessage(const QString &context,
: m_context(context), m_sourcetext(sourceText), m_comment(comment),
m_userData(userData),
m_translations(translations), m_fileName(fileName), m_lineNumber(lineNumber),
- m_type(type), m_utf8(false), m_plural(plural)
+ m_type(type), m_utf8(false), m_nonUtf8(false), m_plural(plural)
{
}
diff --git a/tools/linguist/shared/translatormessage.h b/tools/linguist/shared/translatormessage.h
index fa37ff5ce7..9f847b0ee0 100644
--- a/tools/linguist/shared/translatormessage.h
+++ b/tools/linguist/shared/translatormessage.h
@@ -136,6 +136,8 @@ public:
void setType(Type t) { m_type = t; }
bool isUtf8() const { return m_utf8; } // codecForTr override
void setUtf8(bool on) { m_utf8 = on; }
+ bool isNonUtf8() const { return m_nonUtf8; } // codecForTr override
+ void setNonUtf8(bool on) { m_nonUtf8 = on; }
bool isPlural() const { return m_plural; }
void setPlural(bool isplural) { m_plural = isplural; }
@@ -169,11 +171,40 @@ private:
Type m_type;
bool m_utf8;
+ bool m_nonUtf8;
bool m_plural;
};
+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/translatortools.cpp b/tools/linguist/shared/translatortools.cpp
index dcff5468b4..96301d5d50 100644
--- a/tools/linguist/shared/translatortools.cpp
+++ b/tools/linguist/shared/translatortools.cpp
@@ -69,7 +69,7 @@ static int numberLength(const QString &s, int i)
int pos = i;
do {
++i;
- } while (i < s.size()
+ } while (i < s.size()
&& (s.at(i).isDigit()
|| (isDigitFriendly(s[i])
&& i + 1 < s.size()
@@ -445,7 +445,7 @@ Translator merge(const Translator &tor, const Translator &virginTor,
if (mv.sourceText().isEmpty()) {
if (tor.contains(mv.context()))
continue;
- } else {
+ } else {
if (tor.contains(mv.context(), mv.sourceText(), mv.comment()))
continue;
if (options & HeuristicSimilarText) {
diff --git a/tools/linguist/shared/ts.cpp b/tools/linguist/shared/ts.cpp
index 2e7d40f331..22f2a1b147 100644
--- a/tools/linguist/shared/ts.cpp
+++ b/tools/linguist/shared/ts.cpp
@@ -212,6 +212,7 @@ QString TSReader::readTransContents()
bool TSReader::read(Translator &translator)
{
+ STRING(both);
STRING(byte);
STRING(comment);
STRING(context);
@@ -241,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-"));
@@ -277,7 +278,9 @@ bool TSReader::read(Translator &translator)
// ignore these, just whitespace
} else if (elementStarts(strdefaultcodec)) {
// <defaultcodec>
- translator.setCodecName(readElementText().toLatin1());
+ const QString &codec = readElementText();
+ if (!codec.isEmpty())
+ translator.setCodecName(codec.toLatin1());
// </defaultcodec>
} else if (isStartElement()
&& name().toString().startsWith(strextrans)) {
@@ -309,7 +312,9 @@ bool TSReader::read(Translator &translator)
msg.setContext(context);
msg.setType(TranslatorMessage::Finished);
msg.setPlural(attributes().value(strnumerus) == stryes);
- msg.setUtf8(attributes().value(strutf8) == strtrue
+ const QStringRef &utf8Attr = attributes().value(strutf8);
+ msg.setNonUtf8(utf8Attr == strboth);
+ msg.setUtf8(msg.isNonUtf8() || utf8Attr == strtrue
|| attributes().value(strencoding) == strUtf8);
while (!atEnd()) {
readNext();
@@ -373,7 +378,7 @@ bool TSReader::read(Translator &translator)
} else if (elementStarts(strtranslation)) {
// <translation>
QXmlStreamAttributes atts = attributes();
- QStringRef type = atts.value(strtype);
+ QStringRef type = atts.value(strtype);
if (type == strunfinished)
msg.setType(TranslatorMessage::Unfinished);
else if (type == strobsolete)
@@ -440,7 +445,7 @@ static QString protect(const QString &str)
QString result;
result.reserve(str.length() * 12 / 10);
for (int i = 0; i != str.size(); ++i) {
- uint c = str.at(i).unicode();
+ uint c = str.at(i).unicode();
switch (c) {
case '\"':
result += QLatin1String("&quot;");
@@ -592,107 +597,126 @@ bool saveTS(const Translator &translator, QIODevice &dev, ConversionData &cd, in
foreach (const TranslatorMessage &msg, messageOrder[context]) {
//msg.dump();
- t << " <message";
- if (!msg.id().isEmpty())
- t << " id=\"" << msg.id() << "\"";
- if (format == 11 && !trIsUtf8 && msg.isUtf8())
- t << " encoding=\"UTF-8\"";
- if (format == 20 && !trIsUtf8 && msg.isUtf8())
- t << " utf8=\"true\"";
- if (msg.isPlural())
- t << " numerus=\"yes\"";
- t << ">\n";
- if (translator.locationsType() != Translator::NoLocations) {
- QString cfile = currentFile;
- bool first = true;
- foreach (const TranslatorMessage::Reference &ref, msg.allReferences()) {
- QString fn = cd.m_targetDir.relativeFilePath(ref.fileName())
- .replace(QLatin1Char('\\'),QLatin1Char('/'));
- int ln = ref.lineNumber();
- QString ld;
- if (translator.locationsType() == Translator::RelativeLocations) {
- if (ln != -1) {
- int dlt = ln - currentLine[fn];
- if (dlt >= 0)
- ld.append(QLatin1Char('+'));
- ld.append(QString::number(dlt));
- currentLine[fn] = ln;
+ bool isUtf8 = msg.isUtf8();
+ bool second = false;
+ forever {
+
+ t << " <message";
+ if (!msg.id().isEmpty())
+ t << " id=\"" << msg.id() << "\"";
+ if (!trIsUtf8) {
+ if (format == 11) {
+ if (isUtf8)
+ t << " encoding=\"UTF-8\"";
+ } else {
+ if (msg.isUtf8()) {
+ if (msg.isNonUtf8())
+ t << " utf8=\"both\"";
+ else
+ t << " utf8=\"true\"";
}
+ }
+ }
+ if (msg.isPlural())
+ t << " numerus=\"yes\"";
+ t << ">\n";
+ if (translator.locationsType() != Translator::NoLocations) {
+ QString cfile = currentFile;
+ bool first = true;
+ foreach (const TranslatorMessage::Reference &ref, msg.allReferences()) {
+ QString fn = cd.m_targetDir.relativeFilePath(ref.fileName())
+ .replace(QLatin1Char('\\'),QLatin1Char('/'));
+ int ln = ref.lineNumber();
+ QString ld;
+ if (translator.locationsType() == Translator::RelativeLocations) {
+ if (ln != -1) {
+ int dlt = ln - currentLine[fn];
+ if (dlt >= 0)
+ ld.append(QLatin1Char('+'));
+ ld.append(QString::number(dlt));
+ currentLine[fn] = ln;
+ }
- if (fn != cfile) {
- if (first)
- currentFile = fn;
- cfile = fn;
+ if (fn != cfile) {
+ if (first)
+ currentFile = fn;
+ cfile = fn;
+ } else {
+ fn.clear();
+ }
+ first = false;
} else {
- fn.clear();
+ if (ln != -1)
+ ld = QString::number(ln);
}
- first = false;
- } else {
- if (ln != -1)
- ld = QString::number(ln);
+ t << " <location";
+ if (!fn.isEmpty())
+ t << " filename=\"" << fn << "\"";
+ if (!ld.isEmpty())
+ t << " line=\"" << ld << "\"";
+ t << "/>\n";
}
- t << " <location";
- if (!fn.isEmpty())
- t << " filename=\"" << fn << "\"";
- if (!ld.isEmpty())
- t << " line=\"" << ld << "\"";
- t << "/>\n";
}
- }
- t << " <source>"
- << evilBytes(msg.sourceText(), msg.isUtf8(), format, codecName)
- << "</source>\n";
+ t << " <source>"
+ << evilBytes(msg.sourceText(), isUtf8, format, codecName)
+ << "</source>\n";
- if (format != 11 && !msg.oldSourceText().isEmpty())
- t << " <oldsource>" << protect(msg.oldSourceText()) << "</oldsource>\n";
+ if (format != 11 && !msg.oldSourceText().isEmpty())
+ t << " <oldsource>" << protect(msg.oldSourceText()) << "</oldsource>\n";
- if (!msg.comment().isEmpty()) {
- t << " <comment>"
- << evilBytes(msg.comment(), msg.isUtf8(), format, codecName)
- << "</comment>\n";
- }
+ if (!msg.comment().isEmpty()) {
+ t << " <comment>"
+ << evilBytes(msg.comment(), isUtf8, format, codecName)
+ << "</comment>\n";
+ }
- if (format != 11) {
+ if (format != 11) {
- if (!msg.oldComment().isEmpty())
- t << " <oldcomment>" << protect(msg.oldComment()) << "</oldcomment>\n";
+ if (!msg.oldComment().isEmpty())
+ t << " <oldcomment>" << protect(msg.oldComment()) << "</oldcomment>\n";
- if (!msg.extraComment().isEmpty())
- t << " <extracomment>" << protect(msg.extraComment())
- << "</extracomment>\n";
+ if (!msg.extraComment().isEmpty())
+ t << " <extracomment>" << protect(msg.extraComment())
+ << "</extracomment>\n";
- if (!msg.translatorComment().isEmpty())
- t << " <translatorcomment>" << protect(msg.translatorComment())
- << "</translatorcomment>\n";
+ if (!msg.translatorComment().isEmpty())
+ t << " <translatorcomment>" << protect(msg.translatorComment())
+ << "</translatorcomment>\n";
- }
+ }
- t << " <translation";
- if (msg.type() == TranslatorMessage::Unfinished)
- t << " type=\"unfinished\"";
- else if (msg.type() == TranslatorMessage::Obsolete)
- t << " type=\"obsolete\"";
- if (msg.isPlural()) {
- t << ">";
- QStringList translns = translator.normalizedTranslations(msg, cd, &result);
- for (int j = 0; j < qMax(1, translns.count()); ++j) {
- t << "\n <numerusform";
- writeVariants(t, " ", translns[j]);
- t << "</numerusform>";
+ t << " <translation";
+ if (msg.type() == TranslatorMessage::Unfinished)
+ t << " type=\"unfinished\"";
+ else if (msg.type() == TranslatorMessage::Obsolete)
+ t << " type=\"obsolete\"";
+ if (msg.isPlural()) {
+ t << ">";
+ QStringList translns = translator.normalizedTranslations(msg, cd, &result);
+ for (int j = 0; j < qMax(1, translns.count()); ++j) {
+ t << "\n <numerusform";
+ writeVariants(t, " ", translns[j]);
+ t << "</numerusform>";
+ }
+ t << "\n ";
+ } else {
+ writeVariants(t, " ", msg.translation());
}
- t << "\n ";
- } else {
- writeVariants(t, " ", msg.translation());
- }
- t << "</translation>\n";
+ t << "</translation>\n";
+
+ if (format != 11)
+ writeExtras(t, " ", msg.extras(), drops);
- if (format != 11)
- writeExtras(t, " ", msg.extras(), drops);
+ if (!msg.userData().isEmpty())
+ t << " <userdata>" << msg.userData() << "</userdata>\n";
+ t << " </message>\n";
- if (!msg.userData().isEmpty())
- t << " <userdata>" << msg.userData() << "</userdata>\n";
- t << " </message>\n";
+ if (format != 11 || second || !msg.isUtf8() || !msg.isNonUtf8())
+ break;
+ isUtf8 = false;
+ second = true;
+ }
}
t << "</context>\n";
}
@@ -708,12 +732,12 @@ bool loadTS(Translator &translator, QIODevice &dev, ConversionData &cd)
return reader.read(translator);
}
-bool saveTS11(const Translator &translator, QIODevice &dev, ConversionData &cd)
+bool saveTS11(const Translator &translator, QIODevice &dev, ConversionData &cd)
{
return saveTS(translator, dev, cd, 11);
}
-bool saveTS20(const Translator &translator, QIODevice &dev, ConversionData &cd)
+bool saveTS20(const Translator &translator, QIODevice &dev, ConversionData &cd)
{
return saveTS(translator, dev, cd, 20);
}
diff --git a/tools/linguist/shared/ui.cpp b/tools/linguist/shared/ui.cpp
index 4b86714ee1..ff98a9044c 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();
@@ -151,7 +157,7 @@ bool UiReader::fatalError(const QXmlParseException &exception)
msg.sprintf("XML error: Parse error at line %d, column %d (%s).",
exception.lineNumber(), exception.columnNumber(),
exception.message().toLatin1().data());
- m_cd.appendError(msg);
+ m_cd.appendError(msg);
return false;
}
@@ -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)
@@ -188,7 +196,7 @@ bool loadUI(Translator &translator, QIODevice &dev, ConversionData &cd)
return result;
}
-bool saveUI(const Translator &translator, QIODevice &dev, ConversionData &cd)
+bool saveUI(const Translator &translator, QIODevice &dev, ConversionData &cd)
{
Q_UNUSED(dev);
Q_UNUSED(translator);
diff --git a/tools/macdeployqt/macdeployqt/main.cpp b/tools/macdeployqt/macdeployqt/main.cpp
index d6f7e5f7b7..0026c40c4d 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/qdbus/qdbusviewer/qdbusviewer.cpp b/tools/qdbus/qdbusviewer/qdbusviewer.cpp
index e8ac3a688d..9c25a895ea 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/qdoc3/qdoc3.pro b/tools/qdoc3/qdoc3.pro
index 3268585aab..2bba8fb464 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 7bb6bbfaf4..67f1ecbf24 100644
--- a/tools/qdoc3/test/assistant.qdocconf
+++ b/tools/qdoc3/test/assistant.qdocconf
@@ -13,11 +13,11 @@ 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.451
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 683048d98e..7fe489e174 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.trolltech.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/classic.css b/tools/qdoc3/test/classic.css
index 0d0b664d32..6cf7377490 100644
--- a/tools/qdoc3/test/classic.css
+++ b/tools/qdoc3/test/classic.css
@@ -99,6 +99,14 @@ body pre
color: black
}
+table tr.qt-code pre
+{
+ padding: 0.2em;
+ border: #e7e7e7 1px solid;
+ background: #f1f1f1;
+ color: black
+}
+
span.preprocessor, span.preprocessor a
{
color: darkblue;
diff --git a/tools/qdoc3/test/designer.qdocconf b/tools/qdoc3/test/designer.qdocconf
index 26636cd953..3e916a2189 100644
--- a/tools/qdoc3/test/designer.qdocconf
+++ b/tools/qdoc3/test/designer.qdocconf
@@ -13,11 +13,11 @@ 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.451
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/jambi.qdocconf b/tools/qdoc3/test/jambi.qdocconf
index 3644b69988..5288b22770 100644
--- a/tools/qdoc3/test/jambi.qdocconf
+++ b/tools/qdoc3/test/jambi.qdocconf
@@ -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 5e889a8e32..adb8c20fbd 100644
--- a/tools/qdoc3/test/linguist.qdocconf
+++ b/tools/qdoc3/test/linguist.qdocconf
@@ -13,11 +13,11 @@ 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.451
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/macros.qdocconf b/tools/qdoc3/test/macros.qdocconf
index d14f80aeae..85fe1dbde9 100644
--- a/tools/qdoc3/test/macros.qdocconf
+++ b/tools/qdoc3/test/macros.qdocconf
@@ -23,5 +23,7 @@ macro.rarrow.HTML = "&rarr;"
macro.reg.HTML = "<sup>&reg;</sup>"
macro.return = "Returns"
macro.starslash = "\\c{*/}"
+macro.begincomment = "\\c{/*}"
+macro.endcomment = "\\c{*/}"
macro.uuml.HTML = "&uuml;"
macro.mdash.HTML = "&mdash;"
diff --git a/tools/qdoc3/test/qmake.qdocconf b/tools/qdoc3/test/qmake.qdocconf
index c357cfb76c..aa7e1adcd6 100644
--- a/tools/qdoc3/test/qmake.qdocconf
+++ b/tools/qdoc3/test/qmake.qdocconf
@@ -13,11 +13,11 @@ 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.451
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-api-only.qdocconf b/tools/qdoc3/test/qt-api-only.qdocconf
index 2e91ba2122..bc5656ba5a 100644
--- a/tools/qdoc3/test/qt-api-only.qdocconf
+++ b/tools/qdoc3/test/qt-api-only.qdocconf
@@ -9,7 +9,7 @@ url = ./
# Ensures that the documentation for the tools is not included in the generated
# .qhp file.
-qhp.Qt.excluded = $QT_SOURCE_TREE/doc/src/assistant-manual.qdoc \
+qhp.Qt.excluded += $QT_SOURCE_TREE/doc/src/assistant-manual.qdoc \
$QT_SOURCE_TREE/doc/src/examples/simpletextviewer.qdoc \
$QT_SOURCE_TREE/doc/src/designer-manual.qdoc \
$QT_SOURCE_TREE/doc/src/examples/calculatorbuilder.qdoc \
diff --git a/tools/qdoc3/test/qt-build-docs.qdocconf b/tools/qdoc3/test/qt-build-docs.qdocconf
index a08576808d..a1baf2f875 100644
--- a/tools/qdoc3/test/qt-build-docs.qdocconf
+++ b/tools/qdoc3/test/qt-build-docs.qdocconf
@@ -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.451
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
@@ -92,7 +92,11 @@ excludedirs = $QT_SOURCE_TREE/src/3rdparty/clucene \
$QT_SOURCE_TREE/src/3rdparty/webkit/WebCore \
$QT_SOURCE_TREE/src/3rdparty/wintab \
$QT_SOURCE_TREE/src/3rdparty/zlib \
- $QT_SOURCE_TREE/doc/src/snippets
+ $QT_SOURCE_TREE/doc/src/snippets \
+ $QT_SOURCE_TREE/src/3rdparty/phonon/gstreamer \
+ $QT_SOURCE_TREE/src/3rdparty/phonon/ds9 \
+ $QT_SOURCE_TREE/src/3rdparty/phonon/qt7 \
+ $QT_SOURCE_TREE/src/3rdparty/phonon/waveout
sources.fileextensions = "*.cpp *.qdoc *.mm"
examples.fileextensions = "*.cpp *.h *.js *.xq *.svg *.xml *.ui *.qhp *.qhcp"
@@ -101,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 f09192a592..dc027d0bc0 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 97893dc064..7255a67048 100644
--- a/tools/qdoc3/test/qt-inc.qdocconf
+++ b/tools/qdoc3/test/qt-inc.qdocconf
@@ -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 298311e820..8859511a0a 100644
--- a/tools/qdoc3/test/qt.qdocconf
+++ b/tools/qdoc3/test/qt.qdocconf
@@ -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.451
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 c3c429188a..08b6070b92 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.trolltech.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 498a6b6197..47b1417bee 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 b6a715c1d4..62149a1952 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 ecdaf16a4a..09394e734a 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 0833c2d123..0238f5c613 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 3e9336ff82..a2e391722e 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 044dd5eea3..d86f9f6b93 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 d7c8f0b596..9ac9744f6e 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 29422bd810..6d1b2b13cf 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 72542454ff..cca082d061 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 649a9e3931..20ffb81089 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 d689e603a0..94b0285790 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 2eab3c8e7d..fe8c6d1557 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 8b84eb9fae..47b8c9bcd4 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 90fe5c02b1..2fb69bfae7 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 ed262e50ec..1ad3f6b591 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 63bd7f621b..813e050f86 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 7e1975e08a..f712ba6c05 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 91397d8f43..9253809464 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 ffc5d63217..3325a57cbc 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 c92d6f9aa1..db2005abe0 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 0a4b209c92..312f00ff53 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 3a802444c0..de0c71c94d 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 52cc26cef3..e6c927ab18 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 656a59885d..62354b34be 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 ced339e135..7fd1738ea6 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.ts b/translations/assistant_de.ts
index 0bb0e66653..0411ef1727 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="+195"/>
<source>Add new page</source>
<translation>Neue Seite hinzufügen</translation>
</message>
@@ -173,12 +173,12 @@
<translation>Aktuelle Seite schließen</translation>
</message>
<message>
- <location line="+266"/>
+ <location line="+265"/>
<source>Print Document</source>
<translation>Drucken</translation>
</message>
<message>
- <location line="+124"/>
+ <location line="+147"/>
<location line="+2"/>
<source>unknown</source>
<translation>unbekannt</translation>
@@ -204,7 +204,7 @@
<translation>Lesezeichen für diese Seite hinzufügen...</translation>
</message>
<message>
- <location line="+227"/>
+ <location line="+257"/>
<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,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>Vorherige</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="+481"/>
<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="-267"/>
<source>Open Link in New Tab</source>
<translation>Link in neuem Tab öffnen</translation>
</message>
<message>
- <location line="+128"/>
+ <location line="+201"/>
<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,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>Index</translation>
</message>
<message>
- <location line="-339"/>
- <location line="+337"/>
+ <location line="-344"/>
+ <location line="+342"/>
<source>Contents</source>
<translation>Inhalt</translation>
</message>
<message>
- <location line="-332"/>
- <location line="+336"/>
+ <location line="-337"/>
+ <location line="+341"/>
<source>Bookmarks</source>
<translation>Lesezeichen</translation>
</message>
<message>
- <location line="-324"/>
- <location line="+326"/>
+ <location line="-329"/>
+ <location line="+331"/>
<source>Search</source>
<translation>Suchen</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>Ohne Filter</translation>
@@ -503,47 +503,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 +559,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 +604,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 +655,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 +690,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 +718,7 @@
<translation>Navigationsleiste</translation>
</message>
<message>
- <location line="+75"/>
+ <location line="+74"/>
<source>Toolbars</source>
<translation>Werkzeugleisten</translation>
</message>
@@ -742,7 +733,7 @@
<translation>Filter:</translation>
</message>
<message>
- <location line="+21"/>
+ <location line="+23"/>
<source>Address Toolbar</source>
<translation>Adressleiste</translation>
</message>
@@ -752,31 +743,28 @@
<translation>Adresse:</translation>
</message>
<message>
- <location line="+108"/>
+ <location line="+110"/>
<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>
@@ -786,17 +774,17 @@
<translation>Suchindex wird aufgebaut</translation>
</message>
<message>
- <location line="-614"/>
+ <location line="-597"/>
<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 +794,7 @@
<translation>CTRL+M</translation>
</message>
<message>
- <location line="+1"/>
+ <location line="-2"/>
<source>Zoom</source>
<translation>Zoom</translation>
</message>
@@ -819,27 +807,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 +837,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,7 +862,7 @@
<translation type="obsolete">Von Helpserver herunterladen...</translation>
</message>
<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>
@@ -897,7 +884,27 @@
<translation>Der Namespace %1 ist bereits registriert!</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">Abbrechen</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>Benutze erweiterte Einstellungen</translation>
</message>
@@ -975,24 +982,20 @@
<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/>
@@ -1022,7 +1025,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="+110"/>
<source>The specified collection file does not exist!</source>
<translation>Die angegeben Katalogdatei (collection file) konnte nicht gefunden werden!</translation>
</message>
@@ -1068,6 +1071,11 @@
<translation>Fehlende Hilfedatei!</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>Unbekannte Option: %1</translation>
@@ -1079,7 +1087,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
@@ -1093,7 +1101,7 @@ Reason:
<translation>Dokumentation erfolgreich registriert.</translation>
</message>
<message>
- <location line="+6"/>
+ <location line="+11"/>
<source>Could not unregister documentation file
%1
@@ -1102,12 +1110,12 @@ 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="+18"/>
<source>Cannot load sqlite database driver!</source>
<translation type="unfinished"></translation>
</message>
@@ -1126,7 +1134,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 +1147,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;Kopieren</translation>
</message>
@@ -1168,7 +1176,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>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 55522729a2..185315533a 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 4985b72f02..f84bad2863 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 55522729a2..185315533a 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 0384c47cf4..a1f763f213 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 179b69cc44..df6b82712e 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.ts b/translations/designer_de.ts
index cac8afb455..4cd9914720 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 type="unfinished"></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>
- <message>
- <location filename="../tools/designer/src/designer/plugindialog.cpp" line="+40"/>
- <source>Components</source>
- <translation>Komponenten</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>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>
+ <translation type="unfinished">Plugins</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 type="unfinished">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>
@@ -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 a403b8d23d..1bcb801447 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 6ae369f052..5b63f66e28 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 209d871d92..16663630a2 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 0024ea365e..5a78afaa26 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 6dfd546911..83c3c66e28 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.ts b/translations/linguist_de.ts
index 925b6c2299..712f75d6ee 100644
--- a/translations/linguist_de.ts
+++ b/translations/linguist_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></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>
@@ -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,7 +27,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>
@@ -118,7 +118,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>
@@ -138,10 +138,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>
@@ -201,7 +212,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>
@@ -373,7 +384,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>
@@ -922,9 +933,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 +960,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,13 +1162,13 @@ 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>
</message>
@@ -1212,32 +1221,32 @@ 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>
</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>
@@ -1245,7 +1254,7 @@ Skip loading the first named file?</source>
</translation>
</message>
<message>
- <location line="+92"/>
+ <location line="+93"/>
<source>Related files (%1);;</source>
<translation type="unfinished"></translation>
</message>
@@ -1255,20 +1264,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">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>
</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)
@@ -1332,7 +1341,7 @@ Alle Dateien (*)</translation>
<message>
<location line="+17"/>
<location line="+278"/>
- <location line="+60"/>
+ <location line="+40"/>
<location line="+24"/>
<location line="+22"/>
<location line="+516"/>
@@ -1344,7 +1353,7 @@ 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>
@@ -1449,27 +1458,11 @@ Alle Dateien (*)</translation>
<translation type="unfinished">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>
</message>
@@ -1652,7 +1645,7 @@ Alle Dateien (*)</translation>
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+312"/>
+ <location line="+314"/>
<source>All</source>
<translation type="unfinished"></translation>
</message>
@@ -1672,7 +1665,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,11 +1688,21 @@ 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>
</message>
@@ -1834,7 +1837,7 @@ 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>
</message>
@@ -1864,7 +1867,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="-579"/>
<source></source>
<comment>This is the right panel of the main window.</comment>
<translation></translation>
@@ -1877,13 +1880,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>
@@ -2002,7 +2005,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 +2023,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,7 +2051,7 @@ 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>
</message>
@@ -2058,37 +2061,38 @@ Zeile: %2</translation>
<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>
@@ -2099,11 +2103,11 @@ Zeile: %2</translation>
</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>
@@ -2113,10 +2117,15 @@ Zeile: %2</translation>
<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>
@@ -2155,7 +2164,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>
@@ -2710,7 +2719,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>
diff --git a/translations/linguist_fr.ts b/translations/linguist_fr.ts
index ad346bfe92..b8317b2719 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 41c24caaf5..7af3ebb0b9 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 12b98d52ab..efed849001 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 5690378c0c..ae3ff20a1f 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 a9ecdb63e5..3a81543006 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 47aff95f5a..7bb7e57a14 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 76a1956677..b5a60e232e 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.ts b/translations/qt_de.ts
index 640ad40aed..70cf6f3660 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="+2251"/>
<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="+864"/>
<source>Copy or Move a File</source>
<translation>Datei kopieren oder verschieben</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="+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>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="+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>
@@ -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 type="unfinished"></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="+515"/>
+ <location line="+444"/>
<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="-461"/>
<source>Open</source>
<translation>Öffnen</translation>
</message>
@@ -1454,26 +1458,26 @@ nach
<translation>Speichern unter</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;Öffnen</translation>
</message>
<message>
- <location line="-1565"/>
+ <location line="-1596"/>
<location line="+50"/>
<source>&amp;Save</source>
<translation>S&amp;peichern</translation>
</message>
<message>
- <location line="+1790"/>
+ <location line="+1822"/>
<source>Recent Places</source>
<translation>Zuletzt besucht</translation>
</message>
<message>
- <location line="-2464"/>
+ <location line="-2521"/>
<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="+1964"/>
<source>New Folder</source>
<translation>Neues Verzeichnis</translation>
</message>
<message>
- <location line="-1943"/>
+ <location line="-1999"/>
<source>Find Directory</source>
<translation>Verzeichnis suchen</translation>
</message>
<message>
- <location line="+660"/>
+ <location line="+685"/>
<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="-644"/>
+ <location line="+648"/>
<source>Directory:</source>
<translation>Verzeichnis:</translation>
</message>
<message>
- <location line="+807"/>
+ <location line="+828"/>
<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="+862"/>
<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="-2118"/>
<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="+656"/>
<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="+418"/>
<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="-687"/>
+ <location line="+652"/>
<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="+234"/>
<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="+876"/>
+ <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 type="unfinished"></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="+1428"/>
<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="+231"/>
<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="+1231"/>
<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,7 +2766,7 @@ Möchten sie die Datei trotzdem löschen?</translation>
<context>
<name>QMYSQLResult</name>
<message>
- <location line="-917"/>
+ <location line="-922"/>
<source>Unable to fetch data</source>
<translation>Es konnten keine Daten abgeholt werden</translation>
</message>
@@ -2772,7 +2781,7 @@ Möchten sie die Datei trotzdem löschen?</translation>
<translation>Das Ergebnis konnte nicht gespeichert werden</translation>
</message>
<message>
- <location line="+189"/>
+ <location line="+190"/>
<location line="+8"/>
<source>Unable to prepare statement</source>
<translation>Der Befehl konnte nicht initialisiert werden</translation>
@@ -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="-1097"/>
<source>Show Details...</source>
<translation>Details einblenden...</translation>
</message>
@@ -2974,19 +2982,14 @@ Möchten sie die Datei trotzdem löschen?</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>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="+1785"/>
<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="+1195"/>
<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>
@@ -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 type="unfinished"></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>
@@ -6064,7 +6070,7 @@ 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>
@@ -6140,6 +6146,11 @@ Bitte wählen Sie einen anderen Dateinamen.</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>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 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>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="+5326"/>
<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="+347"/>
<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,14 +7497,18 @@ 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>Im Konstruktor eines Namensraums darf der Wert des Namensraumes keine leere Zeichenkette sein.</translation>
+ <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 type="unfinished"></translation>
</message>
<message>
<location line="+11"/>
@@ -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 294b009d34..ee1e88c1df 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 2408e8b927..37b334bcf2 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.ts b/translations/qt_help_de.ts
index 45ddf03dc4..ed8a3c3afb 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,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>Das &quot;Collection File&quot; ist noch nicht eingerichtet.</translation>
</message>
@@ -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 01ef4828ac..5702cfd1e2 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 1b586bc766..c85b46cb2b 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 01ef4828ac..5702cfd1e2 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 0f2d3edffb..cc100b7f8a 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 e2609d7f10..2e9340e88a 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 3eea6ddaeb..3b4897d241 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
new file mode 100644
index 0000000000..7c8b874b0c
--- /dev/null
+++ b/translations/qt_ja_JP.ts
@@ -0,0 +1,7966 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="ja">
+<context>
+ <name>AudioOutput</name>
+ <message>
+ <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>
+ <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 type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Revert back to device &apos;%1&apos;</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>CloseButton</name>
+ <message>
+ <location filename="../src/gui/widgets/qtabbar.cpp" line="+2251"/>
+ <source>Close Tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>PPDOptionsModel</name>
+ <message>
+ <source>Name</source>
+ <translation type="obsolete">名前</translation>
+ </message>
+ <message>
+ <source>Value</source>
+ <translation type="obsolete">値</translation>
+ </message>
+</context>
+<context>
+ <name>Phonon::</name>
+ <message>
+ <location filename="../src/3rdparty/phonon/phonon/phononnamespace.cpp" line="+55"/>
+ <source>Notifications</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Music</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Video</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Communication</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Games</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Accessibility</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>Phonon::Gstreamer::Backend</name>
+ <message>
+ <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 type="unfinished"></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 type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>Phonon::Gstreamer::MediaObject</name>
+ <message>
+ <location filename="../src/3rdparty/phonon/gstreamer/mediaobject.cpp" line="+90"/>
+ <source>Cannot start playback.
+
+Check your Gstreamer installation and make sure you
+have libgstreamer-plugins-base installed.</source>
+ <translation type="unfinished"></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 type="unfinished"></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 type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="-403"/>
+ <source>Invalid source type.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+377"/>
+ <source>Could not locate media source.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+10"/>
+ <source>Could not open audio device. The device is already in use.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+13"/>
+ <source>Could not decode media source.</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>Phonon::VolumeSlider</name>
+ <message>
+ <location filename="../src/3rdparty/phonon/phonon/volumeslider.cpp" line="+42"/>
+ <location line="+18"/>
+ <source>Volume: %1%</source>
+ <translation type="unfinished"></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 type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>Q3Accel</name>
+ <message>
+ <location filename="../src/qt3support/other/q3accel.cpp" line="+481"/>
+ <source>%1, %2 not defined</source>
+ <translation>%1, %2 は定義されていません</translation>
+ </message>
+ <message>
+ <location line="+36"/>
+ <source>Ambiguous %1 not handled</source>
+ <translation>曖昧な %1 は扱えません</translation>
+ </message>
+</context>
+<context>
+ <name>Q3DataTable</name>
+ <message>
+ <location filename="../src/qt3support/sql/q3datatable.cpp" line="+285"/>
+ <source>True</source>
+ <translation>True</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>False</source>
+ <translation>False</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>
+</context>
+<context>
+ <name>Q3FileDialog</name>
+ <message>
+ <location filename="../src/qt3support/dialogs/q3filedialog_win.cpp" line="+132"/>
+ <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>
+ <message>
+ <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 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>OK(&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>1つ上のディレクトリへ移動</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>ファイルへのSymlink</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Symlink to Directory</source>
+ <translation>ディレクトリへのSymlink</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Symlink to Special</source>
+ <translation>スペシャルへのSymlink</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 line="+704"/>
+ <location line="+2100"/>
+ <location filename="../src/qt3support/dialogs/q3filedialog_win.cpp" line="-325"/>
+ <source>Open</source>
+ <translation>オープン</translation>
+ </message>
+ <message>
+ <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>Symlink</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「%2」を削除しますか?&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>
+ <translation>%1
+ファイルが見つかりませんでした。
+パスおよびファイル名を確認してください。</translation>
+ </message>
+</context>
+<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
+%2</source>
+ <translation>名前を変更できませんでした
+%1
+へ
+%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>書き込めませんでした
+%1</translation>
+ </message>
+</context>
+<context>
+ <name>Q3MainWindow</name>
+ <message>
+ <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>
+</context>
+<context>
+ <name>Q3NetworkProtocol</name>
+ <message>
+ <location filename="../src/qt3support/network/q3networkprotocol.cpp" line="+854"/>
+ <source>Operation stopped by the user</source>
+ <translation>操作がユーザによって停止されました</translation>
+ </message>
+</context>
+<context>
+ <name>Q3ProgressDialog</name>
+ <message>
+ <location filename="../src/qt3support/dialogs/q3progressdialog.cpp" line="+224"/>
+ <location line="+61"/>
+ <source>Cancel</source>
+ <translation>キャンセル</translation>
+ </message>
+</context>
+<context>
+ <name>Q3TabDialog</name>
+ <message>
+ <location filename="../src/qt3support/dialogs/q3tabdialog.cpp" line="+189"/>
+ <location line="+814"/>
+ <source>OK</source>
+ <translation>OK</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>
+</context>
+<context>
+ <name>Q3TextEdit</name>
+ <message>
+ <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>
+</context>
+<context>
+ <name>Q3TitleBar</name>
+ <message>
+ <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>
+</context>
+<context>
+ <name>Q3ToolBar</name>
+ <message>
+ <location filename="../src/qt3support/widgets/q3toolbar.cpp" line="+692"/>
+ <source>More...</source>
+ <translation>その他...</translation>
+ </message>
+</context>
+<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>
+</context>
+<context>
+ <name>Q3Wizard</name>
+ <message>
+ <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>&lt; 戻る(&amp;B)</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>&amp;Next &gt;</source>
+ <translation>次へ(&amp;N) &gt;</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>
+</context>
+<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 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 type="unfinished">接続がタイムアウトしました</translation>
+ </message>
+ <message>
+ <location line="-547"/>
+ <location line="+787"/>
+ <location line="+208"/>
+ <source>Operation on socket is not supported</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+137"/>
+ <source>Socket operation timed out</source>
+ <translation>ソケット操作がタイムアウトしました</translation>
+ </message>
+ <message>
+ <location line="+380"/>
+ <source>Socket is not connected</source>
+ <translation>ソケットが接続されていません</translation>
+ </message>
+ <message>
+ <location filename="../src/network/socket/qsocks5socketengine.cpp" line="-8"/>
+ <source>Network unreachable</source>
+ <translation type="unfinished">ネットワークへ到達できません</translation>
+ </message>
+</context>
+<context>
+ <name>QAbstractSpinBox</name>
+ <message>
+ <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 type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QApplication</name>
+ <message>
+ <location filename="../src/gui/accessible/qaccessibleobject.cpp" line="+376"/>
+ <source>Activate</source>
+ <translation>アクティブに</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Activates the program&apos;s main window</source>
+ <translation>メインウィンドウをアクティブにする</translation>
+ </message>
+ <message>
+ <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>
+ <message>
+ <location line="+2"/>
+ <source>Incompatible Qt Library Error</source>
+ <translation>互換性のないQtライブラリエラー</translation>
+ </message>
+ <message>
+ <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>
+</context>
+<context>
+ <name>QAxSelect</name>
+ <message>
+ <location filename="../src/activeqt/container/qaxselect.ui"/>
+ <source>Select ActiveX Control</source>
+ <translation>ActiveX Control を選択</translation>
+ </message>
+ <message>
+ <location/>
+ <source>OK</source>
+ <translation>OK</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>
+</context>
+<context>
+ <name>QCheckBox</name>
+ <message>
+ <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>
+</context>
+<context>
+ <name>QColorDialog</name>
+ <message>
+ <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>アルファチャネル(&amp;L):</translation>
+ </message>
+ <message>
+ <location line="+101"/>
+ <source>Select Color</source>
+ <translation type="unfinished"></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>
+ <message>
+ <source>&amp;Define Custom Colors &gt;&gt;</source>
+ <translation type="obsolete">カスタムカラーの定義(&amp;D) &gt;&gt;</translation>
+ </message>
+ <message>
+ <source>OK</source>
+ <translation type="obsolete">OK</translation>
+ </message>
+ <message>
+ <source>Cancel</source>
+ <translation type="obsolete">キャンセル</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>&amp;Add to Custom Colors</source>
+ <translation>カスタムカラーに追加(&amp;A)</translation>
+ </message>
+ <message>
+ <source>Select color</source>
+ <translation type="obsolete">カラーの選択</translation>
+ </message>
+</context>
+<context>
+ <name>QComboBox</name>
+ <message>
+ <location filename="../src/plugins/accessible/widgets/complexwidgets.cpp" line="+1771"/>
+ <location line="+65"/>
+ <source>Open</source>
+ <translation>オープン</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/itemviews/qitemeditorfactory.cpp" line="+544"/>
+ <source>False</source>
+ <translation type="unfinished">False</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>True</source>
+ <translation type="unfinished">True</translation>
+ </message>
+ <message>
+ <location filename="../src/plugins/accessible/widgets/complexwidgets.cpp" line="+0"/>
+ <source>Close</source>
+ <translation type="unfinished">閉じる</translation>
+ </message>
+</context>
+<context>
+ <name>QCoreApplication</name>
+ <message>
+ <location filename="../src/corelib/kernel/qsystemsemaphore_unix.cpp" line="+119"/>
+ <source>%1: key is empty</source>
+ <comment>QSystemSemaphore</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+12"/>
+ <source>%1: unable to make key</source>
+ <comment>QSystemSemaphore</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>%1: ftok failed</source>
+ <comment>QSystemSemaphore</comment>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QDB2Driver</name>
+ <message>
+ <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>
+</context>
+<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>
+</context>
+<context>
+ <name>QDateTimeEdit</name>
+ <message>
+ <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>
+</context>
+<context>
+ <name>QDial</name>
+ <message>
+ <location filename="../src/plugins/accessible/widgets/rangecontrols.cpp" line="+951"/>
+ <source>QDial</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>SpeedoMeter</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>SliderHandle</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QDialog</name>
+ <message>
+ <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 type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QDialogButtonBox</name>
+ <message>
+ <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>OK</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/widgets/qdialogbuttonbox.cpp" line="+9"/>
+ <source>Cancel</source>
+ <translation type="unfinished">キャンセル</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Apply</source>
+ <translation>適用</translation>
+ </message>
+ <message>
+ <location line="+38"/>
+ <source>Ignore</source>
+ <translation>無視</translation>
+ </message>
+ <message>
+ <location line="-3"/>
+ <source>Retry</source>
+ <translation>再試行</translation>
+ </message>
+ <message>
+ <location line="-3"/>
+ <source>Abort</source>
+ <translation>中止</translation>
+ </message>
+ <message>
+ <location line="-26"/>
+ <source>Help</source>
+ <translation>ヘルプ</translation>
+ </message>
+ <message>
+ <location line="-18"/>
+ <source>Save</source>
+ <translation type="unfinished">保存</translation>
+ </message>
+ <message>
+ <location line="+0"/>
+ <source>&amp;Save</source>
+ <translation type="unfinished">保存(&amp;S)</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Open</source>
+ <translation>オープン</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished">キャンセル(&amp;C)</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Close</source>
+ <translation type="unfinished">閉じる</translation>
+ </message>
+ <message>
+ <location line="+0"/>
+ <source>&amp;Close</source>
+ <translation type="unfinished">閉じる(&amp;C)</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Reset</source>
+ <translation>リセット</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Don&apos;t Save</source>
+ <translation>保存しない</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Close without Saving</source>
+ <translation>保存せずに閉じる</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <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="+12"/>
+ <source>Restore Defaults</source>
+ <translation>デフォルトに戻す</translation>
+ </message>
+ <message>
+ <location line="-56"/>
+ <source>&amp;OK</source>
+ <translation type="unfinished">OK(&amp;O)</translation>
+ </message>
+</context>
+<context>
+ <name>QDirModel</name>
+ <message>
+ <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="+11"/>
+ <source>Date Modified</source>
+ <translation>更新日</translation>
+ </message>
+ <message>
+ <location line="-8"/>
+ <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>
+</context>
+<context>
+ <name>QDockWidget</name>
+ <message>
+ <location filename="../src/plugins/accessible/widgets/qaccessiblewidgets.cpp" line="+1239"/>
+ <source>Close</source>
+ <translation type="unfinished">閉じる</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Dock</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Float</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QDoubleSpinBox</name>
+ <message>
+ <location filename="../src/plugins/accessible/widgets/rangecontrols.cpp" line="-537"/>
+ <source>More</source>
+ <translation type="unfinished">増やす</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Less</source>
+ <translation type="unfinished">減らす</translation>
+ </message>
+</context>
+<context>
+ <name>QErrorMessage</name>
+ <message>
+ <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>OK(&amp;O)</translation>
+ </message>
+</context>
+<context>
+ <name>QFile</name>
+ <message>
+ <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="-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>
+ <message>
+ <location line="+17"/>
+ <source>Cannot open for output</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+10"/>
+ <source>Failure to write block</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+13"/>
+ <source>Cannot create %1 for output</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<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="-644"/>
+ <location line="+648"/>
+ <source>Directory:</source>
+ <translation>ディレクトリ:</translation>
+ </message>
+ <message>
+ <location line="-646"/>
+ <location line="+652"/>
+ <source>File &amp;name:</source>
+ <translation>ファイル名:</translation>
+ </message>
+ <message>
+ <location line="-13"/>
+ <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>
+ <source>Save</source>
+ <translation type="obsolete">保存</translation>
+ </message>
+ <message>
+ <source>
+File not found.
+Please verify the correct file name was given</source>
+ <translation type="obsolete">
+ファイルが見つかりません。
+正しいファイル名が入力されたかどうか確認してください</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>
+ <translation>%1
+ファイルが見つかりません。
+正しいファイル名が入力されたかどうか確認してください。</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/itemviews/qdirmodel.cpp" line="+408"/>
+ <source>My Computer</source>
+ <translation>マイ コンピュータ</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-54"/>
+ <location line="+862"/>
+ <source>%1
+Directory not found.
+Please verify the correct directory name was given.</source>
+ <translation>%1
+ディレクトリが見つかりません。
+正しいディレクトリ名が入力されたかどうか確認してください。</translation>
+ </message>
+ <message>
+ <source>Sort</source>
+ <translation type="obsolete">ソート</translation>
+ </message>
+ <message>
+ <location line="-2312"/>
+ <source>&amp;Rename</source>
+ <translation>名前の変更(&amp;R)</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>&amp;Delete</source>
+ <translation>削除(&amp;D)</translation>
+ </message>
+ <message>
+ <source>&amp;Reload</source>
+ <translation type="obsolete">リロード(&amp;R)</translation>
+ </message>
+ <message>
+ <source>Sort by &amp;Name</source>
+ <translation type="obsolete">名前順にソート(&amp;N)</translation>
+ </message>
+ <message>
+ <source>Sort by &amp;Size</source>
+ <translation type="obsolete">サイズ順にソート(&amp;S)</translation>
+ </message>
+ <message>
+ <source>Sort by &amp;Date</source>
+ <translation type="obsolete">日付順にソート(&amp;D)</translation>
+ </message>
+ <message>
+ <source>&amp;Unsorted</source>
+ <translation type="obsolete">ソート解除(&amp;U)</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>Create New Folder</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>Look in:</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/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_win.cpp" line="+160"/>
+ <source>All Files (*.*)</source>
+ <translation type="unfinished">すべてのファイル(*.*)</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-31"/>
+ <source>Save As</source>
+ <translation>名前を付けて保存</translation>
+ </message>
+ <message>
+ <source>Open </source>
+ <translation type="obsolete">オープン</translation>
+ </message>
+ <message>
+ <source>Select a Directory</source>
+ <translation type="obsolete">ディレクトリを選択</translation>
+ </message>
+ <message>
+ <location line="+2123"/>
+ <source>&apos;%1&apos; is write protected.
+Do you want to delete it anyway?</source>
+ <translation>&apos;%1&apos; は書き込みが禁止されています。
+本当に削除しますか?</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Are sure you want to delete &apos;%1&apos;?</source>
+ <translation>&apos;%1&apos; を本当に削除しますか?</translation>
+ </message>
+ <message>
+ <location line="+15"/>
+ <source>Could not delete directory.</source>
+ <translation>ディレクトリを削除できませんでした。</translation>
+ </message>
+ <message>
+ <location line="-2147"/>
+ <source>Find Directory</source>
+ <translation type="unfinished">ディレクトリの検索</translation>
+ </message>
+ <message>
+ <location line="+29"/>
+ <source>Show </source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>&amp;New Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+656"/>
+ <location line="+38"/>
+ <source>&amp;Choose</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1269"/>
+ <source>New Folder</source>
+ <translation type="unfinished">新しいフォルダ</translation>
+ </message>
+ <message>
+ <location line="+555"/>
+ <source>Recent Places</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qfiledialog.ui"/>
+ <location filename="../src/gui/dialogs/qfiledialog_wince.ui"/>
+ <source>Forward</source>
+ <translation type="unfinished">進む</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qsidebar.cpp" line="+418"/>
+ <source>Remove</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QFileSystemModel</name>
+ <message>
+ <location filename="../src/gui/dialogs/qfilesystemmodel.cpp" line="+892"/>
+ <source>Name</source>
+ <translation>名前</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Size</source>
+ <translation>サイズ</translation>
+ </message>
+ <message>
+ <location line="+13"/>
+ <source>Date Modified</source>
+ <translation>更新日</translation>
+ </message>
+ <message>
+ <location line="-9"/>
+ <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="-156"/>
+ <source>%1 TB</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>%1 GB</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>%1 MB</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>%1 KB</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>%1 bytes</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+77"/>
+ <source>Invalid filename</source>
+ <translation type="unfinished"></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 type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qfilesystemmodel_p.h" line="+234"/>
+ <source>My Computer</source>
+ <translation type="unfinished">マイ コンピュータ</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Computer</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QFontDatabase</name>
+ <message>
+ <location filename="../src/gui/text/qfontdatabase.cpp" line="+90"/>
+ <location line="+1176"/>
+ <source>Normal</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="-1173"/>
+ <location line="+12"/>
+ <location line="+1149"/>
+ <source>Bold</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="-1158"/>
+ <location line="+1160"/>
+ <source>Demi Bold</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="-1157"/>
+ <location line="+18"/>
+ <location line="+1135"/>
+ <source>Black</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="-1145"/>
+ <source>Demi</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <location line="+1145"/>
+ <source>Light</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="-1004"/>
+ <location line="+1007"/>
+ <source>Italic</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="-1004"/>
+ <location line="+1006"/>
+ <source>Oblique</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+705"/>
+ <source>Any</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Latin</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Greek</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Cyrillic</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Armenian</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Hebrew</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Arabic</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Syriac</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Thaana</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Devanagari</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Bengali</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Gurmukhi</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Gujarati</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Oriya</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Tamil</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Telugu</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Kannada</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Malayalam</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Sinhala</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Thai</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Lao</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Tibetan</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Myanmar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Georgian</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Khmer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Simplified Chinese</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Traditional Chinese</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Japanese</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Korean</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Vietnamese</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Symbol</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Ogham</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Runic</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QFontDialog</name>
+ <message>
+ <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>
+</context>
+<context>
+ <name>QFtp</name>
+ <message>
+ <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 line="+65"/>
+ <location filename="../src/qt3support/network/q3ftp.cpp" line="+65"/>
+ <source>Host %1 not found</source>
+ <translation>ホスト %1 が見つかりませんでした</translation>
+ </message>
+ <message>
+ <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 type="unfinished"></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 line="+889"/>
+ <location filename="../src/qt3support/network/q3ftp.cpp" line="+77"/>
+ <source>Connecting to host failed:
+%1</source>
+ <translation>ホストへの接続に失敗しました:
+%1</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <location filename="../src/qt3support/network/q3ftp.cpp" line="+3"/>
+ <source>Login failed:
+%1</source>
+ <translation>ログインに失敗しました:
+%1</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <location filename="../src/qt3support/network/q3ftp.cpp" line="+3"/>
+ <source>Listing directory failed:
+%1</source>
+ <translation>ディレクトリのリストに失敗しました:
+%1</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <location filename="../src/qt3support/network/q3ftp.cpp" line="+3"/>
+ <source>Changing directory failed:
+%1</source>
+ <translation>ディレクトリの変更に失敗しました:
+%1</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <location filename="../src/qt3support/network/q3ftp.cpp" line="+3"/>
+ <source>Downloading file failed:
+%1</source>
+ <translation>ファイルのダウンロードに失敗しました:
+%1</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <location filename="../src/qt3support/network/q3ftp.cpp" line="+3"/>
+ <source>Uploading file failed:
+%1</source>
+ <translation>ファイルのアップロードに失敗しました:
+%1</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <location filename="../src/qt3support/network/q3ftp.cpp" line="+3"/>
+ <source>Removing file failed:
+%1</source>
+ <translation>ファイルの削除に失敗しました:
+%1</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <location filename="../src/qt3support/network/q3ftp.cpp" line="+3"/>
+ <source>Creating directory failed:
+%1</source>
+ <translation>ディレクトリの作成に失敗しました:
+%1</translation>
+ </message>
+ <message>
+ <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>
+</context>
+<context>
+ <name>QHostInfo</name>
+ <message>
+ <location filename="../src/network/kernel/qhostinfo_p.h" line="+183"/>
+ <source>Unknown error</source>
+ <translation>不明なエラー</translation>
+ </message>
+</context>
+<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>
+</context>
+<context>
+ <name>QHttp</name>
+ <message>
+ <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="+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 line="+579"/>
+ <location filename="../src/qt3support/network/q3http.cpp" line="+381"/>
+ <source>No server set to connect to</source>
+ <translation>接続が設定されているサーバがありません</translation>
+ </message>
+ <message>
+ <location line="+164"/>
+ <location filename="../src/qt3support/network/q3http.cpp" line="+56"/>
+ <source>Wrong content length</source>
+ <translation>コンテンツの長さが正しくありません</translation>
+ </message>
+ <message>
+ <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 type="unfinished"></translation>
+ </message>
+ <message>
+ <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="-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 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 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"/>
+ <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/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 type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Authentication required</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="-138"/>
+ <source>Connection refused (or timed out)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/network/access/qhttpnetworkconnection.cpp" line="+6"/>
+ <source>Proxy requires authentication</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Host requires authentication</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Data corrupted</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Unknown protocol specified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>SSL handshake failed</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QHttpSocketEngine</name>
+ <message>
+ <location filename="../src/network/socket/qhttpsocketengine.cpp" line="-89"/>
+ <source>Did not receive HTTP response from proxy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+25"/>
+ <source>Error parsing authentication request from proxy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+31"/>
+ <source>Authentication required</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+27"/>
+ <source>Proxy denied connection</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+10"/>
+ <source>Error communicating with HTTP proxy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+23"/>
+ <source>Proxy server not found</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Proxy connection refused</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Proxy server connection timed out</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Proxy connection closed prematurely</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QIBaseDriver</name>
+ <message>
+ <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>
+</context>
+<context>
+ <name>QIBaseResult</name>
+ <message>
+ <location line="-1097"/>
+ <source>Unable to create BLOB</source>
+ <translation>バイナリラージオブジェクトを作成できません</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Unable to write BLOB</source>
+ <translation>バイナリラージオブジェクトを書き込めません</translation>
+ </message>
+ <message>
+ <location line="+14"/>
+ <source>Unable to open BLOB</source>
+ <translation>バイナリラージオブジェクトをオープンできません</translation>
+ </message>
+ <message>
+ <location line="+16"/>
+ <source>Unable to read BLOB</source>
+ <translation>バイナリラージオブジェクトを読み込めません</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>INPUT ステートメントの情報を取得できませんでした</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>
+</context>
+<context>
+ <name>QIODevice</name>
+ <message>
+ <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="+1536"/>
+ <source>Unknown error</source>
+ <translation>不明なエラー</translation>
+ </message>
+</context>
+<context>
+ <name>QInputContext</name>
+ <message>
+ <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>
+</context>
+<context>
+ <name>QInputDialog</name>
+ <message>
+ <location filename="../src/gui/dialogs/qinputdialog.cpp" line="+223"/>
+ <source>Enter a value:</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QLibrary</name>
+ <message>
+ <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>
+ <message>
+ <location line="+22"/>
+ <source>Plugin verification data mismatch in &apos;%1&apos;</source>
+ <translation>&apos;%1&apos; でプラグイン検証データが一致しません</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Could not unmap &apos;%1&apos;: %2</source>
+ <translation>&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>プラグイン &apos;%1&apos; は、互換性のない 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>プラグイン &apos;%1&apos; は、互換性のない Qt ライブラリを使用しています。ビルドキー &quot;%2&quot; が必要ですが、&quot;%3&quot; しかありません </translation>
+ </message>
+ <message>
+ <location line="+340"/>
+ <source>Unknown error</source>
+ <translation>不明なエラー</translation>
+ </message>
+ <message>
+ <source>QLibrary::load_sys: Cannot load %1 (%2)</source>
+ <translation type="obsolete">QLibrary::load_sys: %1 をロードできません (%2)</translation>
+ </message>
+ <message>
+ <source>QLibrary::unload_sys: Cannot unload %1 (%2)</source>
+ <translation type="obsolete">QLibrary::unload_sys: %1 をアンロードできません (%2)</translation>
+ </message>
+ <message>
+ <source>QLibrary::resolve_sys: Symbol &quot;%1&quot; undefined in %2 (%3)</source>
+ <translation type="obsolete">QLibrary::resolve_sys: シンボル &quot;%1&quot; は %2 で定義されていません (%3)</translation>
+ </message>
+ <message>
+ <location line="-377"/>
+ <location filename="../src/corelib/plugin/qpluginloader.cpp" line="+280"/>
+ <source>The shared library was not found.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>The file &apos;%1&apos; is not a valid Qt plugin.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+43"/>
+ <source>The plugin &apos;%1&apos; uses incompatible Qt library. (Cannot mix debug and release libraries.)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <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>
+ <message>
+ <location line="+16"/>
+ <location filename="../src/corelib/plugin/qlibrary_win.cpp" line="+26"/>
+ <source>Cannot unload library %1: %2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <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 type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QLineEdit</name>
+ <message>
+ <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>
+</context>
+<context>
+ <name>QLocalServer</name>
+ <message>
+ <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>
+ <message>
+ <location filename="../src/network/socket/qlocalserver_unix.cpp" line="-8"/>
+ <source>%1: Permission denied</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+12"/>
+ <source>%1: Address in use</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <location filename="../src/network/socket/qlocalserver_win.cpp" line="+158"/>
+ <source>%1: Unknown error %2</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QLocalSocket</name>
+ <message>
+ <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>
+ <message>
+ <location line="+3"/>
+ <location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+3"/>
+ <source>%1: Remote closed</source>
+ <translation type="unfinished"></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 type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+3"/>
+ <source>%1: Socket access error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+3"/>
+ <source>%1: Socket resource error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+3"/>
+ <source>%1: Socket operation timed out</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+3"/>
+ <source>%1: Datagram too large</source>
+ <translation type="unfinished"></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 type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+3"/>
+ <source>%1: The socket operation is not supported</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>%1: Unknown error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <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 type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QMYSQLDriver</name>
+ <message>
+ <location filename="../src/sql/drivers/mysql/qsql_mysql.cpp" line="+1231"/>
+ <source>Unable to open database &apos;</source>
+ <translation>データベースをオープンできません &apos;</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>
+</context>
+<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 type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+10"/>
+ <source>Unable to store next result</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QMdiArea</name>
+ <message>
+ <location filename="../src/gui/widgets/qmdiarea.cpp" line="+290"/>
+ <source>(Untitled)</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QMdiSubWindow</name>
+ <message>
+ <location filename="../src/gui/widgets/qmdisubwindow.cpp" line="+280"/>
+ <source>%1 - [%2]</source>
+ <translation type="unfinished">%1 - [%2]</translation>
+ </message>
+ <message>
+ <location line="+72"/>
+ <source>Close</source>
+ <translation type="unfinished">閉じる</translation>
+ </message>
+ <message>
+ <location line="-18"/>
+ <source>Minimize</source>
+ <translation type="unfinished">最小化</translation>
+ </message>
+ <message>
+ <location line="+13"/>
+ <source>Restore Down</source>
+ <translation type="unfinished">元に戻す</translation>
+ </message>
+ <message>
+ <location line="+707"/>
+ <source>&amp;Restore</source>
+ <translation type="unfinished">元に戻す(&amp;R)</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>&amp;Move</source>
+ <translation type="unfinished">移動(&amp;M)</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>&amp;Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Mi&amp;nimize</source>
+ <translation type="unfinished">最小化(&amp;N)</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Ma&amp;ximize</source>
+ <translation type="unfinished">最大化(&amp;X)</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Stay on &amp;Top</source>
+ <translation type="unfinished">常に手前に表示(&amp;T)</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>&amp;Close</source>
+ <translation type="unfinished">閉じる(&amp;C)</translation>
+ </message>
+ <message>
+ <location line="-787"/>
+ <source>- [%1]</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+58"/>
+ <source>Maximize</source>
+ <translation type="unfinished">最大化</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Unshade</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Shade</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Restore</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Help</source>
+ <translation type="unfinished">ヘルプ</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Menu</source>
+ <translation type="unfinished">メニュー</translation>
+ </message>
+</context>
+<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>
+</context>
+<context>
+ <name>QMenuBar</name>
+ <message>
+ <source>About Qt</source>
+ <translation type="obsolete">Qt について</translation>
+ </message>
+</context>
+<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>OK</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派生版でソースコード互換を実現します。また、Qtopia Coreのように、内蔵デバイスでも利用可能です。&lt;/p&gt;
+&lt;p&gt;QtはTrolltechの商品です。詳細は&lt;tt&gt;http://qtsoftware.com/qt/&lt;/tt&gt;を参照してください。&lt;/p&gt;</translation>
+ </message>
+ <message>
+ <source>&lt;p&gt;This program uses Qt version %1.&lt;/p&gt;</source>
+ <translation type="obsolete">&lt;p&gt;このプログラムは Qt バージョン %1 を使用しています。&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 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="+509"/>
+ <source>About Qt</source>
+ <translation>Qt について</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>
+</context>
+<context>
+ <name>QMultiInputContext</name>
+ <message>
+ <location filename="../src/plugins/inputmethods/imsw-multi/qmultiinputcontext.cpp" line="+88"/>
+ <source>Select IM</source>
+ <translation>入力メソッドを選択</translation>
+ </message>
+</context>
+<context>
+ <name>QMultiInputContextPlugin</name>
+ <message>
+ <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>
+</context>
+<context>
+ <name>QNativeSocketEngine</name>
+ <message>
+ <location filename="../src/network/socket/qnativesocketengine.cpp" line="+197"/>
+ <source>Unable to initialize non-blocking socket</source>
+ <translation>ノンブロッキングソケットを初期化できません</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Unable to initialize broadcast socket</source>
+ <translation>ブロードキャストソケットを初期化できません</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Attempt to use IPv6 socket on a platform with no IPv6 support</source>
+ <translation>IPv6 がサポートされていないプラットフォームで IPv6 ソケットを使用しようとしています</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <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>サポートされていないソケット操作です</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>無効なソケット記述子です</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Host unreachable</source>
+ <translation>ホストへ到達できません</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <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="+3"/>
+ <source>Datagram was too large to send</source>
+ <translation>データグラムが大き過ぎて送信できませんでした</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <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>別のソケットが同じポートで既に待ち受けています</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Operation on non-socket</source>
+ <translation>非ソケットに対する操作です</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 type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QNetworkAccessCacheBackend</name>
+ <message>
+ <location filename="../src/network/access/qnetworkaccesscachebackend.cpp" line="+65"/>
+ <source>Error opening %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QNetworkAccessFileBackend</name>
+ <message>
+ <location filename="../src/network/access/qnetworkaccessfilebackend.cpp" line="+99"/>
+ <source>Request for opening non-local file %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+42"/>
+ <source>Error opening %1: %2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+56"/>
+ <source>Write error writing to %1: %2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+33"/>
+ <source>Cannot open %1: Path is a directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+21"/>
+ <source>Read error reading from %1: %2</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QNetworkAccessFtpBackend</name>
+ <message>
+ <location filename="../src/network/access/qnetworkaccessftpbackend.cpp" line="+165"/>
+ <source>No suitable proxy found</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+14"/>
+ <source>Cannot open %1: is a directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+130"/>
+ <source>Logging in to %1 failed: authentication required</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+39"/>
+ <source>Error while downloading %1: %2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Error while uploading %1: %2</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QNetworkAccessHttpBackend</name>
+ <message>
+ <location filename="../src/network/access/qnetworkaccesshttpbackend.cpp" line="+597"/>
+ <source>No suitable proxy found</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QNetworkReply</name>
+ <message>
+ <location line="+128"/>
+ <source>Error downloading %1 - server replied: %2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/network/access/qnetworkreplyimpl.cpp" line="+68"/>
+ <source>Protocol &quot;%1&quot; is unknown</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QNetworkReplyImpl</name>
+ <message>
+ <location line="+432"/>
+ <location line="+22"/>
+ <source>Operation canceled</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QOCIDriver</name>
+ <message>
+ <location filename="../src/sql/drivers/oci/qsql_oci.cpp" line="+1925"/>
+ <source>Unable to initialize</source>
+ <comment>QOCIDriver</comment>
+ <translation>初期化できません</translation>
+ </message>
+ <message>
+ <location line="+144"/>
+ <source>Unable to logon</source>
+ <translation>ログオンできません</translation>
+ </message>
+ <message>
+ <location line="+71"/>
+ <source>Unable to begin transaction</source>
+ <translation type="unfinished">トランザクションを開始できません</translation>
+ </message>
+ <message>
+ <location line="+19"/>
+ <source>Unable to commit transaction</source>
+ <translation type="unfinished">トランザクションをコミットできません</translation>
+ </message>
+ <message>
+ <location line="+19"/>
+ <source>Unable to rollback transaction</source>
+ <translation type="unfinished">トランザクションをロールバックできません</translation>
+ </message>
+</context>
+<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 type="obsolete">SELECT ステートメントを実行できません</translation>
+ </message>
+ <message>
+ <location line="+19"/>
+ <source>Unable to execute statement</source>
+ <translation>ステートメントを実行できません</translation>
+ </message>
+</context>
+<context>
+ <name>QODBCDriver</name>
+ <message>
+ <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>
+</context>
+<context>
+ <name>QODBCResult</name>
+ <message>
+ <location line="-1201"/>
+ <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 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>
+ </message>
+ <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="+578"/>
+ <source>Unable to fetch last</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="-672"/>
+ <source>Unable to fetch</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+44"/>
+ <source>Unable to fetch first</source>
+ <translation type="unfinished">最初のレコードをフェッチできません</translation>
+ </message>
+ <message>
+ <location line="+19"/>
+ <source>Unable to fetch previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QObject</name>
+ <message>
+ <source>False</source>
+ <translation type="obsolete">False</translation>
+ </message>
+ <message>
+ <source>True</source>
+ <translation type="obsolete">True</translation>
+ </message>
+ <message>
+ <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="+74"/>
+ <source>Operation not supported on %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+53"/>
+ <source>Invalid URI: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/network/access/qnetworkaccessdebugpipebackend.cpp" line="+175"/>
+ <source>Write error writing to %1: %2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+57"/>
+ <source>Read error reading from %1: %2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+31"/>
+ <source>Socket error on %1: %2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+15"/>
+ <source>Remote host closed the connection prematurely on %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+53"/>
+ <source>Protocol error: packet of size 0 received</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/network/kernel/qhostinfo.cpp" line="+177"/>
+ <location line="+57"/>
+ <source>No host name given</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QPPDOptionsModel</name>
+ <message>
+ <location filename="../src/gui/dialogs/qprintdialog_unix.cpp" line="+1195"/>
+ <source>Name</source>
+ <translation type="unfinished">名前</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Value</source>
+ <translation type="unfinished">値</translation>
+ </message>
+</context>
+<context>
+ <name>QPSQLDriver</name>
+ <message>
+ <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 type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+32"/>
+ <source>Unable to unsubscribe</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<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 type="unfinished">プリペアステートメントを使えません</translation>
+ </message>
+</context>
+<context>
+ <name>QPageSetupWidget</name>
+ <message>
+ <location filename="../src/gui/dialogs/qpagesetupdialog_unix.cpp" line="+304"/>
+ <source>Centimeters (cm)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+0"/>
+ <source>Millimeters (mm)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+0"/>
+ <source>Inches (in)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+0"/>
+ <source>Points (pt)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qpagesetupwidget.ui"/>
+ <source>Form</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location/>
+ <source>Paper</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location/>
+ <source>Page size:</source>
+ <translation type="unfinished">ページサイズ:</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Width:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location/>
+ <source>Height:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location/>
+ <source>Paper source:</source>
+ <translation type="unfinished">給紙装置:</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Orientation</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location/>
+ <source>Portrait</source>
+ <translation type="unfinished">縦</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Landscape</source>
+ <translation type="unfinished">横</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Reverse landscape</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location/>
+ <source>Reverse portrait</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location/>
+ <source>Margins</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location/>
+ <source>top margin</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location/>
+ <source>left margin</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location/>
+ <source>right margin</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location/>
+ <source>bottom margin</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QPluginLoader</name>
+ <message>
+ <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 type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QPrintDialog</name>
+ <message>
+ <source>Page size:</source>
+ <translation type="obsolete">ページサイズ:</translation>
+ </message>
+ <message>
+ <source>Orientation:</source>
+ <translation type="obsolete">方向:</translation>
+ </message>
+ <message>
+ <source>Paper source:</source>
+ <translation type="obsolete">給紙装置:</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qprintdialog_win.cpp" line="+268"/>
+ <source>OK</source>
+ <translation>OK</translation>
+ </message>
+ <message>
+ <source>Cancel</source>
+ <translation type="obsolete">キャンセル</translation>
+ </message>
+ <message>
+ <source>Portrait</source>
+ <translation type="obsolete">縦</translation>
+ </message>
+ <message>
+ <source>Landscape</source>
+ <translation type="obsolete">横</translation>
+ </message>
+ <message>
+ <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>
+ <message>
+ <source>Print in color if available</source>
+ <translation type="obsolete">可能であればカラーで印刷</translation>
+ </message>
+ <message>
+ <source>Print to file</source>
+ <translation type="obsolete">ファイルに出力:</translation>
+ </message>
+ <message>
+ <source>Browse</source>
+ <translation type="obsolete">参照...</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qprintdialog_qws.cpp" line="+375"/>
+ <source>Print all</source>
+ <translation>すべて印刷</translation>
+ </message>
+ <message>
+ <source>Selection</source>
+ <translation type="obsolete">選択した部分を印刷</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Print range</source>
+ <translation>印刷範囲</translation>
+ </message>
+ <message>
+ <source>Pages from</source>
+ <translation type="obsolete">先頭のページ:</translation>
+ </message>
+ <message>
+ <source>to</source>
+ <translation type="obsolete">末尾のページ:</translation>
+ </message>
+ <message>
+ <source>Print last page first</source>
+ <translation type="obsolete">末尾のページから印刷</translation>
+ </message>
+ <message>
+ <source>Number of copies:</source>
+ <translation type="obsolete">部数:</translation>
+ </message>
+ <message>
+ <source>Paper format</source>
+ <translation type="obsolete">用紙の形式</translation>
+ </message>
+ <message>
+ <location line="-48"/>
+ <source>A0 (841 x 1189 mm)</source>
+ <translation>A0 (841 x 1189mm)</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>A1 (594 x 841 mm)</source>
+ <translation>A1 (594 x 841mm)</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>A2 (420 x 594 mm)</source>
+ <translation>A2 (420 x 594mm)</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>A3 (297 x 420 mm)</source>
+ <translation>A3 (297 x 420mm)</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>A4 (210 x 297 mm, 8.26 x 11.7 inches)</source>
+ <translation>A4 (210 x 297mm、8.26 x 11.7インチ)</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>A5 (148 x 210 mm)</source>
+ <translation>A5 (148 x 210mm)</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>A6 (105 x 148 mm)</source>
+ <translation>A6 (105 x 148mm)</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>A7 (74 x 105 mm)</source>
+ <translation>A7 (74 x 105mm)</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>A8 (52 x 74 mm)</source>
+ <translation>A8 (52 x 74mm)</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>A9 (37 x 52 mm)</source>
+ <translation>A9 (37 x 52mm)</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>B0 (1000 x 1414 mm)</source>
+ <translation>B0 (1000 x 1414mm)</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>B1 (707 x 1000 mm)</source>
+ <translation>B1 (707 x 1000mm)</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>B2 (500 x 707 mm)</source>
+ <translation>B2 (500 x 707mm)</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>B3 (353 x 500 mm)</source>
+ <translation>B3 (353 x 500mm)</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>B4 (250 x 353 mm)</source>
+ <translation>B4 (250 x 353mm)</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>B5 (176 x 250 mm, 6.93 x 9.84 inches)</source>
+ <translation>B5 (176 x 250mm、6.93 x 9.84インチ)</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>B6 (125 x 176 mm)</source>
+ <translation>B6 (125 x 176mm)</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>B7 (88 x 125 mm)</source>
+ <translation>B7 (88 x 125mm)</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>B8 (62 x 88 mm)</source>
+ <translation>B8 (62 x 88mm)</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>B9 (44 x 62 mm)</source>
+ <translation>B9 (44 x 62mm)</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>B10 (31 x 44 mm)</source>
+ <translation>B10 (31 x 44mm)</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>C5E (163 x 229 mm)</source>
+ <translation>C5E (163 x 229mm)</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>DLE (110 x 220 mm)</source>
+ <translation>DLE (110 x 220mm)</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 254mm)</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Folio (210 x 330 mm)</source>
+ <translation>Folio (210 x 330mm)</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Ledger (432 x 279 mm)</source>
+ <translation>Ledger (432 x 279mm)</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 356mm)</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 279mm)</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Tabloid (279 x 432 mm)</source>
+ <translation>Tabloid (279 x 432mm)</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>US Common #10 Envelope (105 x 241 mm)</source>
+ <translation>US Common #10 Envelope (105 x 241mm)</translation>
+ </message>
+ <message>
+ <source>Print dialog</source>
+ <translation type="obsolete">プリントダイアログ</translation>
+ </message>
+ <message>
+ <source>Size:</source>
+ <translation type="obsolete">サイズ:</translation>
+ </message>
+ <message>
+ <source>Printer</source>
+ <translation type="obsolete">プリンタ</translation>
+ </message>
+ <message>
+ <source>Properties</source>
+ <translation type="obsolete">プロパティ</translation>
+ </message>
+ <message>
+ <source>Printer info:</source>
+ <translation type="obsolete">プリンタ情報:</translation>
+ </message>
+ <message>
+ <source>Copies</source>
+ <translation type="obsolete">印刷部数</translation>
+ </message>
+ <message>
+ <source>Collate</source>
+ <translation type="obsolete">丁合い</translation>
+ </message>
+ <message>
+ <source>Other</source>
+ <translation type="obsolete">その他</translation>
+ </message>
+ <message>
+ <source>Double side printing</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>
+ <message>
+ <source>File</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>
+ <message>
+ <location 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="-210"/>
+ <source>File exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>&lt;qt&gt;Do you want to overwrite it?&lt;/qt&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+227"/>
+ <source>Print selection</source>
+ <translation type="unfinished"></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 type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qpagesetupdialog_unix.cpp" line="-232"/>
+ <source>A0</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>A1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>A2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>A3</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>A4</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>A5</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>A6</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>A7</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>A8</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>A9</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>B0</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>B1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>B2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>B3</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>B4</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>B5</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>B6</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>B7</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>B8</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>B9</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>B10</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>C5E</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>DLE</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Executive</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Folio</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Ledger</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Legal</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Letter</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Tabloid</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>US Common #10 Envelope</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Custom</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qprintdialog_unix.cpp" line="-522"/>
+ <location line="+68"/>
+ <source>&amp;Options &gt;&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="-63"/>
+ <source>&amp;Print</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+67"/>
+ <source>&amp;Options &lt;&lt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+253"/>
+ <source>Print to File (PDF)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Print to File (Postscript)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+45"/>
+ <source>Local file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Write %1 file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qprintdialog_win.cpp" line="+1"/>
+ <source>The &apos;From&apos; value cannot be greater than the &apos;To&apos; value.</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QPrintPreviewDialog</name>
+ <message>
+ <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="+252"/>
+ <source>%1%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+79"/>
+ <source>Print Preview</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+29"/>
+ <source>Next page</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Previous page</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>First page</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Last page</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>Fit width</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Fit page</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+11"/>
+ <source>Zoom in</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Zoom out</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Portrait</source>
+ <translation type="unfinished">縦</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Landscape</source>
+ <translation type="unfinished">横</translation>
+ </message>
+ <message>
+ <location line="+10"/>
+ <source>Show single page</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Show facing pages</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Show overview of all pages</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+15"/>
+ <source>Print</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Page setup</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Close</source>
+ <translation type="unfinished">閉じる</translation>
+ </message>
+ <message>
+ <location line="+151"/>
+ <source>Export to PDF</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Export to PostScript</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QPrintPropertiesDialog</name>
+ <message>
+ <source>PPD Properties</source>
+ <translation type="obsolete">印刷プロパティのダイアログのプロパティ</translation>
+ </message>
+ <message>
+ <source>Save</source>
+ <translation type="obsolete">保存</translation>
+ </message>
+ <message>
+ <source>OK</source>
+ <translation type="obsolete">OK</translation>
+ </message>
+</context>
+<context>
+ <name>QPrintPropertiesWidget</name>
+ <message>
+ <location filename="../src/gui/dialogs/qprintpropertieswidget.ui"/>
+ <source>Form</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location/>
+ <source>Page</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location/>
+ <source>Advanced</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QPrintSettingsOutput</name>
+ <message>
+ <location filename="../src/gui/dialogs/qprintsettingsoutput.ui"/>
+ <source>Form</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location/>
+ <source>Copies</source>
+ <translation type="unfinished">印刷部数</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Print range</source>
+ <translation type="unfinished">印刷範囲</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Print all</source>
+ <translation type="unfinished">すべて印刷</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Pages from</source>
+ <translation type="unfinished">先頭のページ:</translation>
+ </message>
+ <message>
+ <location/>
+ <source>to</source>
+ <translation type="unfinished">末尾のページ:</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Selection</source>
+ <translation type="unfinished">選択した部分を印刷</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Output Settings</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location/>
+ <source>Copies:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location/>
+ <source>Collate</source>
+ <translation type="unfinished">丁合い</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Reverse</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location/>
+ <source>Options</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location/>
+ <source>Color Mode</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location/>
+ <source>Color</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location/>
+ <source>Grayscale</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location/>
+ <source>Duplex Printing</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location/>
+ <source>None</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location/>
+ <source>Long side</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location/>
+ <source>Short side</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QPrintWidget</name>
+ <message>
+ <location filename="../src/gui/dialogs/qprintwidget.ui"/>
+ <source>Form</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location/>
+ <source>Printer</source>
+ <translation type="unfinished">プリンタ</translation>
+ </message>
+ <message>
+ <location/>
+ <source>&amp;Name:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location/>
+ <source>P&amp;roperties</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location/>
+ <source>Location:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location/>
+ <source>Preview</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location/>
+ <source>Type:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location/>
+ <source>Output &amp;file:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location/>
+ <source>...</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QProcess</name>
+ <message>
+ <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>
+ <message>
+ <location line="+12"/>
+ <location filename="../src/corelib/io/qprocess_win.cpp" line="+36"/>
+ <source>Could not open output redirection for writing</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+235"/>
+ <source>Resource error (fork failure): %1</source>
+ <translation type="unfinished"></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 type="unfinished"></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 type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+47"/>
+ <location line="+779"/>
+ <location filename="../src/corelib/io/qprocess_win.cpp" line="+140"/>
+ <source>Error writing to process</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="-709"/>
+ <source>Process crashed</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>
+ </message>
+</context>
+<context>
+ <name>QProgressDialog</name>
+ <message>
+ <location filename="../src/gui/dialogs/qprogressdialog.cpp" line="+182"/>
+ <source>Cancel</source>
+ <translation>キャンセル</translation>
+ </message>
+</context>
+<context>
+ <name>QPushButton</name>
+ <message>
+ <location filename="../src/plugins/accessible/widgets/simplewidgets.cpp" line="-8"/>
+ <source>Open</source>
+ <translation>オープン</translation>
+ </message>
+</context>
+<context>
+ <name>QRadioButton</name>
+ <message>
+ <location line="+12"/>
+ <source>Check</source>
+ <translation>選択</translation>
+ </message>
+</context>
+<context>
+ <name>QRegExp</name>
+ <message>
+ <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>不正なcharクラス構文</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>不正なrepetition構文</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>invalid octal value</source>
+ <translation>無効な8進値</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>
+</context>
+<context>
+ <name>QSQLite2Driver</name>
+ <message>
+ <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>
+</context>
+<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>
+</context>
+<context>
+ <name>QSQLiteDriver</name>
+ <message>
+ <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>
+ <message>
+ <source>Unable to roll back transaction</source>
+ <translation type="obsolete">トランザクションをロールバックできません</translation>
+ </message>
+ <message>
+ <location line="+15"/>
+ <source>Unable to rollback transaction</source>
+ <translation type="unfinished">トランザクションをロールバックできません</translation>
+ </message>
+</context>
+<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 type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QScrollBar</name>
+ <message>
+ <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>1ページ左へスクロール</translation>
+ </message>
+ <message>
+ <location line="+0"/>
+ <location filename="../src/plugins/accessible/widgets/rangecontrols.cpp" line="+143"/>
+ <source>Page up</source>
+ <translation>1ページ戻る</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Page right</source>
+ <translation>1ページ右へスクロール</translation>
+ </message>
+ <message>
+ <location line="+0"/>
+ <location filename="../src/plugins/accessible/widgets/rangecontrols.cpp" line="+4"/>
+ <source>Page down</source>
+ <translation>1ページ進む</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>1行上へ</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Position</source>
+ <translation>位置</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Line down</source>
+ <translation>1行下へ</translation>
+ </message>
+</context>
+<context>
+ <name>QSharedMemory</name>
+ <message>
+ <location filename="../src/corelib/kernel/qsharedmemory.cpp" line="+207"/>
+ <source>%1: unable to set key on lock</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+81"/>
+ <source>%1: create size is less then 0</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+168"/>
+ <location filename="../src/corelib/kernel/qsharedmemory_p.h" line="+148"/>
+ <source>%1: unable to lock</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+22"/>
+ <source>%1: unable to unlock</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <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>
+ <message>
+ <location line="+4"/>
+ <location filename="../src/corelib/kernel/qsharedmemory_win.cpp" line="-22"/>
+ <source>%1: already exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <location filename="../src/corelib/kernel/qsharedmemory_win.cpp" line="+9"/>
+ <source>%1: doesn&apos;t exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <location filename="../src/corelib/kernel/qsharedmemory_win.cpp" line="+9"/>
+ <source>%1: out of resources</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <location filename="../src/corelib/kernel/qsharedmemory_win.cpp" line="+7"/>
+ <source>%1: unknown error %2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+21"/>
+ <source>%1: key is empty</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>%1: unix key file doesn&apos;t exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>%1: ftok failed</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+51"/>
+ <location filename="../src/corelib/kernel/qsharedmemory_win.cpp" line="+15"/>
+ <source>%1: unable to make key</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+20"/>
+ <source>%1: system-imposed size restrictions</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+53"/>
+ <source>%1: not attached</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/corelib/kernel/qsharedmemory_win.cpp" line="-27"/>
+ <source>%1: invalid size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+68"/>
+ <source>%1: key error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+38"/>
+ <source>%1: size query failed</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QShortcut</name>
+ <message>
+ <location filename="../src/gui/kernel/qkeysequence.cpp" line="+373"/>
+ <source>Space</source>
+ <translation>Space</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>CapsLock</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>NumLock</source>
+ <translation>NumLock</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>ScrollLock</source>
+ <translation>ScrollLock</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>低音を上げる</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Bass Down</source>
+ <translation>低音を下げる</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Treble Up</source>
+ <translation>高音を上げる</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Treble Down</source>
+ <translation>高音を下げる</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="+1"/>
+ <source>Home Page</source>
+ <translation>ホームページ</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <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>URLを開く</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>Print Screen</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Page Up</source>
+ <translation>Page Up</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Page Down</source>
+ <translation>Page Down</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Caps Lock</source>
+ <translation>Caps Lock</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Num Lock</source>
+ <translation>Num Lock</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Number Lock</source>
+ <translation>Number Lock</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Scroll Lock</source>
+ <translation>Scroll Lock</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Insert</source>
+ <translation>Insert</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Delete</source>
+ <translation>Delete</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Escape</source>
+ <translation>Escape</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>System Request</source>
+ <translation>System Request</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Select</source>
+ <translation>Select</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>Context1</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Context2</source>
+ <translation>Context2</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Context3</source>
+ <translation>Context3</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Context4</source>
+ <translation>Context4</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Call</source>
+ <translation>Call</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Hangup</source>
+ <translation>Hangup</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Flip</source>
+ <translation>Flip</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>
+</context>
+<context>
+ <name>QSlider</name>
+ <message>
+ <location filename="../src/plugins/accessible/widgets/rangecontrols.cpp" line="+151"/>
+ <source>Page left</source>
+ <translation>1ページ左へスクロール</translation>
+ </message>
+ <message>
+ <location line="+0"/>
+ <source>Page up</source>
+ <translation>1ページ戻る</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Position</source>
+ <translation>位置</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Page right</source>
+ <translation>1ページ右へスクロール
+</translation>
+ </message>
+ <message>
+ <location line="+0"/>
+ <source>Page down</source>
+ <translation>1ページ進む</translation>
+ </message>
+</context>
+<context>
+ <name>QSocks5SocketEngine</name>
+ <message>
+ <location filename="../src/network/socket/qsocks5socketengine.cpp" line="-67"/>
+ <source>Connection to proxy refused</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Connection to proxy closed prematurely</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Proxy host not found</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Connection to proxy timed out</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+17"/>
+ <source>Proxy authentication failed</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Proxy authentication failed: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>SOCKS version 5 protocol error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+19"/>
+ <source>General SOCKSv5 server failure</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Connection not allowed by SOCKSv5 server</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+16"/>
+ <source>TTL expired</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>SOCKSv5 command not supported</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Address type not supported</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Unknown SOCKSv5 proxy error code 0x%1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Socks5 timeout error connecting to socks server</source>
+ <translation type="obsolete">Socks5 はソックスサーバ接続しようとしてタイムアウトになりました</translation>
+ </message>
+ <message>
+ <location line="+685"/>
+ <source>Network operation timed out</source>
+ <translation type="unfinished">ネットワーク操作がタイムアウトしました</translation>
+ </message>
+</context>
+<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>
+</context>
+<context>
+ <name>QSql</name>
+ <message>
+ <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>
+</context>
+<context>
+ <name>QSslSocket</name>
+ <message>
+ <location filename="../src/network/ssl/qsslsocket_openssl.cpp" line="+260"/>
+ <source>Error creating SSL context (%1)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+25"/>
+ <source>Invalid or empty cipher list (%1)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+16"/>
+ <source>Cannot provide a certificate with no key, %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Error loading local certificate, %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+12"/>
+ <source>Error loading private key, %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Private key does not certificate public key, %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+20"/>
+ <source>Error creating SSL session, %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+15"/>
+ <source>Error creating SSL session: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+207"/>
+ <source>Unable to write data: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+119"/>
+ <source>Error while reading: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+96"/>
+ <source>Error during SSL handshake: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QSystemSemaphore</name>
+ <message>
+ <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 type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="-13"/>
+ <location filename="../src/corelib/kernel/qsystemsemaphore_win.cpp" line="+4"/>
+ <source>%1: permission denied</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>%1: already exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>%1: does not exist</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <location filename="../src/corelib/kernel/qsystemsemaphore_win.cpp" line="+3"/>
+ <source>%1: unknown error %2</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QTDSDriver</name>
+ <message>
+ <location filename="../src/sql/drivers/tds/qsql_tds.cpp" line="+584"/>
+ <source>Unable to open connection</source>
+ <translation>接続をオープンできません</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Unable to use database</source>
+ <translation>データベースを使用できません</translation>
+ </message>
+</context>
+<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>
+</context>
+<context>
+ <name>QTcpServer</name>
+ <message>
+ <source>Socket operation unsupported</source>
+ <translation type="obsolete">ソケット操作はサポートされていません</translation>
+ </message>
+ <message>
+ <location filename="../src/network/socket/qtcpserver.cpp" line="+282"/>
+ <source>Operation on socket is not supported</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QTextControl</name>
+ <message>
+ <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>
+</context>
+<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>
+</context>
+<context>
+ <name>QUdpSocket</name>
+ <message>
+ <location filename="../src/network/socket/qudpsocket.cpp" line="+169"/>
+ <source>This platform does not support IPv6</source>
+ <translation>このプラットフォームは IPv6 をサポートしていません</translation>
+ </message>
+</context>
+<context>
+ <name>QUndoGroup</name>
+ <message>
+ <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>
+</context>
+<context>
+ <name>QUndoModel</name>
+ <message>
+ <location filename="../src/gui/util/qundoview.cpp" line="+101"/>
+ <source>&lt;empty&gt;</source>
+ <translation>&lt;空&gt;</translation>
+ </message>
+</context>
+<context>
+ <name>QUndoStack</name>
+ <message>
+ <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>
+</context>
+<context>
+ <name>QUnicodeControlCharacterMenu</name>
+ <message>
+ <location filename="../src/gui/text/qtextcontrol.cpp" line="+884"/>
+ <source>LRM Left-to-right mark</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>RLM Right-to-left mark</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>ZWJ Zero width joiner</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>ZWNJ Zero width non-joiner</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>ZWSP Zero width space</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>LRE Start of left-to-right embedding</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>RLE Start of right-to-left embedding</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>LRO Start of left-to-right override</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>RLO Start of right-to-left override</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>PDF Pop directional formatting</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Insert Unicode control character</source>
+ <translation>Unicode制御文字を挿入</translation>
+ </message>
+</context>
+<context>
+ <name>QWebFrame</name>
+ <message>
+ <location filename="../src/3rdparty/webkit/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp" line="+692"/>
+ <source>Request cancelled</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+17"/>
+ <source>Request blocked</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Cannot show URL</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Frame load interruped by policy change</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Cannot show mimetype</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>File does not exist</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QWebPage</name>
+ <message>
+ <location filename="../src/3rdparty/webkit/WebCore/platform/network/qt/QNetworkReplyHandler.cpp" line="+382"/>
+ <source>Bad HTTP request</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/3rdparty/webkit/WebCore/platform/qt/Localizations.cpp" line="+42"/>
+ <source>Submit</source>
+ <comment>default label for Submit buttons in forms on web pages</comment>
+ <translation type="unfinished"></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 type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Reset</source>
+ <comment>default label for Reset buttons in forms on web pages</comment>
+ <translation type="unfinished">リセット</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 type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Choose File</source>
+ <comment>title for file button used in HTML forms</comment>
+ <translation type="unfinished"></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 type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Open in New Window</source>
+ <comment>Open in New Window context menu item</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Save Link...</source>
+ <comment>Download Linked File context menu item</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Copy Link</source>
+ <comment>Copy Link context menu item</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Open Image</source>
+ <comment>Open Image in New Window context menu item</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Save Image</source>
+ <comment>Download Image context menu item</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Copy Image</source>
+ <comment>Copy Link context menu item</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Open Frame</source>
+ <comment>Open Frame in New Window context menu item</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Copy</source>
+ <comment>Copy context menu item</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Go Back</source>
+ <comment>Back context menu item</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Go Forward</source>
+ <comment>Forward context menu item</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Stop</source>
+ <comment>Stop context menu item</comment>
+ <translation type="unfinished">停止</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Reload</source>
+ <comment>Reload context menu item</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Cut</source>
+ <comment>Cut context menu item</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Paste</source>
+ <comment>Paste context menu item</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>No Guesses Found</source>
+ <comment>No Guesses Found context menu item</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Ignore</source>
+ <comment>Ignore Spelling context menu item</comment>
+ <translation type="unfinished">無視</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Add To Dictionary</source>
+ <comment>Learn Spelling context menu item</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Search The Web</source>
+ <comment>Search The Web context menu item</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Look Up In Dictionary</source>
+ <comment>Look Up in Dictionary context menu item</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Open Link</source>
+ <comment>Open Link context menu item</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Ignore</source>
+ <comment>Ignore Grammar context menu item</comment>
+ <translation type="unfinished">無視</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Spelling</source>
+ <comment>Spelling and Grammar context sub-menu item</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Show Spelling and Grammar</source>
+ <comment>menu item title</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Hide Spelling and Grammar</source>
+ <comment>menu item title</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Check Spelling</source>
+ <comment>Check spelling context menu item</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Check Spelling While Typing</source>
+ <comment>Check spelling while typing context menu item</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Check Grammar With Spelling</source>
+ <comment>Check grammar with spelling context menu item</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Fonts</source>
+ <comment>Font context sub-menu item</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Bold</source>
+ <comment>Bold context menu item</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Italic</source>
+ <comment>Italic context menu item</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Underline</source>
+ <comment>Underline context menu item</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Outline</source>
+ <comment>Outline context menu item</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Direction</source>
+ <comment>Writing direction context sub-menu item</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Text Direction</source>
+ <comment>Text direction context sub-menu item</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Default</source>
+ <comment>Default writing direction context menu item</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>LTR</source>
+ <comment>Left to Right context menu item</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>RTL</source>
+ <comment>Right to Left context menu item</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Inspect</source>
+ <comment>Inspect Element context menu item</comment>
+ <translation type="unfinished"></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 type="unfinished"></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 type="unfinished"></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 type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+75"/>
+ <source>Unknown</source>
+ <comment>Unknown filesize FTP directory listing item</comment>
+ <translation type="unfinished">不明</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>%1 (%2x%3 pixels)</source>
+ <comment>Title string for images</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/3rdparty/webkit/WebKit/qt/WebCoreSupport/InspectorClientQt.cpp" line="+185"/>
+ <source>Web Inspector - %2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/3rdparty/webkit/WebCore/platform/qt/ScrollbarQt.cpp" line="+58"/>
+ <source>Scroll here</source>
+ <translation type="unfinished">ここにスクロール</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Left edge</source>
+ <translation type="unfinished">左端</translation>
+ </message>
+ <message>
+ <location line="+0"/>
+ <source>Top</source>
+ <translation type="unfinished">上端</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Right edge</source>
+ <translation type="unfinished">右端</translation>
+ </message>
+ <message>
+ <location line="+0"/>
+ <source>Bottom</source>
+ <translation type="unfinished">下端</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Page left</source>
+ <translation type="unfinished">1ページ左へスクロール</translation>
+ </message>
+ <message>
+ <location line="+0"/>
+ <source>Page up</source>
+ <translation type="unfinished">1ページ戻る</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Page right</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+0"/>
+ <source>Page down</source>
+ <translation type="unfinished">1ページ進む</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Scroll left</source>
+ <translation type="unfinished">左へスクロール</translation>
+ </message>
+ <message>
+ <location line="+0"/>
+ <source>Scroll up</source>
+ <translation type="unfinished">上へスクロール</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Scroll right</source>
+ <translation type="unfinished">右へスクロール</translation>
+ </message>
+ <message>
+ <location line="+0"/>
+ <source>Scroll down</source>
+ <translation type="unfinished">下へスクロール</translation>
+ </message>
+ <message numerus="yes">
+ <location filename="../src/3rdparty/webkit/WebCore/platform/qt/FileChooserQt.cpp" line="+45"/>
+ <source>%n file(s)</source>
+ <comment>number of chosen file</comment>
+ <translation type="unfinished">
+ <numerusform></numerusform>
+ </translation>
+ </message>
+ <message>
+ <location filename="../src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp" line="+1322"/>
+ <source>JavaScript Alert - %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+15"/>
+ <source>JavaScript Confirm - %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+17"/>
+ <source>JavaScript Prompt - %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+333"/>
+ <source>Move the cursor to the next character</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Move the cursor to the previous character</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Move the cursor to the next word</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Move the cursor to the previous word</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Move the cursor to the next line</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Move the cursor to the previous line</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Move the cursor to the start of the line</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Move the cursor to the end of the line</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Move the cursor to the start of the block</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Move the cursor to the end of the block</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Move the cursor to the start of the document</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Move the cursor to the end of the document</source>
+ <translation type="unfinished"></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>
+ <message>
+ <location line="+3"/>
+ <source>Select to the previous character</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Select to the next word</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Select to the previous word</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Select to the next line</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Select to the previous line</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Select to the start of the line</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Select to the end of the line</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Select to the start of the block</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Select to the end of the block</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Select to the start of the document</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Select to the end of the document</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Delete to the start of the word</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <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="+522"/>
+ <source>What&apos;s This?</source>
+ <translation>ヒント</translation>
+ </message>
+</context>
+<context>
+ <name>QWidget</name>
+ <message>
+ <location filename="../src/gui/kernel/qwidget.cpp" line="+5326"/>
+ <source>*</source>
+ <translation>*</translation>
+ </message>
+</context>
+<context>
+ <name>QWizard</name>
+ <message>
+ <location filename="../src/gui/dialogs/qwizard.cpp" line="+637"/>
+ <source>Go Back</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Continue</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Commit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Done</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Help</source>
+ <translation type="unfinished">ヘルプ</translation>
+ </message>
+ <message>
+ <location line="-14"/>
+ <source>&lt; &amp;Back</source>
+ <translation type="unfinished">&lt; 戻る(&amp;B)</translation>
+ </message>
+ <message>
+ <location line="+10"/>
+ <source>&amp;Finish</source>
+ <translation type="unfinished">完了(&amp;F)</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Cancel</source>
+ <translation type="unfinished">キャンセル</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>&amp;Help</source>
+ <translation type="unfinished">ヘルプ(&amp;H)</translation>
+ </message>
+ <message>
+ <location line="-8"/>
+ <source>&amp;Next</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+0"/>
+ <source>&amp;Next &gt;</source>
+ <translation type="unfinished">次へ(&amp;N) &gt;</translation>
+ </message>
+</context>
+<context>
+ <name>QWorkspace</name>
+ <message>
+ <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>
+</context>
+<context>
+ <name>QXml</name>
+ <message>
+ <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>
+</context>
+<context>
+ <name>QXmlStream</name>
+ <message>
+ <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>
+ <message>
+ <location line="+222"/>
+ <source>Invalid entity value.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+107"/>
+ <source>Invalid XML character.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+259"/>
+ <source>Sequence &apos;]]&gt;&apos; not allowed in content.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+279"/>
+ <location filename="../src/corelib/xml/qxmlstream_p.h" line="-691"/>
+ <source>Encountered incorrectly encoded content.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+30"/>
+ <source>Namespace prefix &apos;%1&apos; not declared</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+78"/>
+ <source>Attribute redefined.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+115"/>
+ <source>Unexpected character &apos;%1&apos; in public id literal.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+28"/>
+ <source>Invalid XML version string.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Unsupported XML version.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+21"/>
+ <source>The standalone pseudo attribute must appear after the encoding.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>%1 is an invalid encoding name.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Encoding %1 is unsupported</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+16"/>
+ <source>Standalone accepts only yes or no.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Invalid attribute in XML declaration.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+16"/>
+ <source>Premature end of document.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Invalid document.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+40"/>
+ <source>Expected </source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+11"/>
+ <source>, but got &apos;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Unexpected &apos;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+210"/>
+ <source>Expected character data.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/corelib/xml/qxmlstream_p.h" line="-304"/>
+ <source>Recursive entity detected.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+516"/>
+ <source>Start tag expected.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+191"/>
+ <source>NDATA in parameter entity declaration.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+31"/>
+ <source>XML declaration not at start of document.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>%1 is an invalid processing instruction name.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+11"/>
+ <source>Invalid processing instruction name.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+114"/>
+ <source>%1 is an invalid PUBLIC identifier.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/corelib/xml/qxmlstream.cpp" line="-521"/>
+ <location line="+12"/>
+ <location filename="../src/corelib/xml/qxmlstream_p.h" line="+50"/>
+ <location line="+53"/>
+ <source>Illegal namespace declaration.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/corelib/xml/qxmlstream_p.h" line="+15"/>
+ <source>Invalid XML name.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+23"/>
+ <source>Opening and ending tag mismatch.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+18"/>
+ <source>Reference to unparsed entity &apos;%1&apos;.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="-13"/>
+ <location line="+61"/>
+ <location line="+40"/>
+ <source>Entity &apos;%1&apos; not declared.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="-26"/>
+ <source>Reference to external entity &apos;%1&apos; in attribute value.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+40"/>
+ <source>Invalid character reference.</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QtXmlPatterns</name>
+ <message>
+ <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>
+ <message>
+ <location line="+13"/>
+ <source>An %1-attribute must have a valid %2 as value, which %3 isn&apos;t.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <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="+320"/>
+ <source>Element %1 can&apos;t be serialized because it appears outside the document element.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+60"/>
+ <source>Attribute %1 can&apos;t be serialized because it appears at the top level.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <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>
+ <message>
+ <location line="+19"/>
+ <source>Day %1 is outside the range %2..%3.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Month %1 is outside the range %2..%3.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+10"/>
+ <source>Overflow: Can&apos;t represent date %1.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>Day %1 is invalid for month %2.</source>
+ <translation type="unfinished"></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 type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+13"/>
+ <source>Time %1:%2:%3.%4 is invalid.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+115"/>
+ <source>Overflow: Date can&apos;t be represented.</source>
+ <translation type="unfinished"></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 type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="-7"/>
+ <source>At least one time component must appear after the %1-delimiter.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <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>
+ <message>
+ <location line="+7"/>
+ <source>The first operand in an integer division, %1, cannot be infinity (%2).</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>The second operand in a division, %1, cannot be zero (%2).</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/data/qanyuri_p.h" line="+132"/>
+ <source>%1 is not a valid value of type %2.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/data/qatomiccasters_p.h" line="+223"/>
+ <source>When casting to %1 from %2, the source value cannot be %3.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/data/qatomicmathematicians.cpp" line="+65"/>
+ <source>Integer division (%1) by zero (%2) is undefined.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Division (%1) by zero (%2) is undefined.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Modulus division (%1) by zero (%2) is undefined.</source>
+ <translation type="unfinished"></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 type="unfinished"></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 type="unfinished"></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 type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/data/qatomicvalue.cpp" line="+79"/>
+ <source>A value of type %1 cannot have an Effective Boolean Value.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/data/qboolean.cpp" line="+78"/>
+ <source>Effective Boolean Value cannot be calculated for a sequence containing two or more atomic values.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <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>
+ <message>
+ <location line="+9"/>
+ <source>Value %1 of type %2 is below minimum (%3).</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/data/qhexbinary.cpp" line="+91"/>
+ <source>A value of type %1 must contain an even number of digits. The value %2 does not.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+19"/>
+ <source>%1 is not valid as a value of type %2.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/expr/qarithmeticexpression.cpp" line="+207"/>
+ <source>Operator %1 cannot be used on type %2.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+17"/>
+ <source>Operator %1 cannot be used on atomic values of type %2 and %3.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <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>
+ <message>
+ <location line="+9"/>
+ <source>The name for a computed attribute cannot have the namespace URI %1 with the local name %2.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/expr/qcastas.cpp" line="+88"/>
+ <source>Type error in cast, expected %1, received %2.</source>
+ <translation type="unfinished"></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 type="unfinished"></translation>
+ </message>
+ <message>
+ <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>
+ <message>
+ <location line="+15"/>
+ <source>It is not possible to cast from %1 to %2.</source>
+ <translation type="unfinished"></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 type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+23"/>
+ <source>It&apos;s not possible to cast the value %1 of type %2 to %3</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>Failure when casting from %1 to %2: %3</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/expr/qcommentconstructor.cpp" line="+67"/>
+ <source>A comment cannot contain %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>A comment cannot end with a %1.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <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>
+ <message>
+ <location line="+14"/>
+ <source>Operator %1 is not available between atomic values of type %2 and %3.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/expr/qdocumentcontentvalidator.cpp" line="+86"/>
+ <source>An attribute node cannot be a child of a document node. Therefore, the attribute %1 is out of place.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <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>
+ <message>
+ <location line="+40"/>
+ <source>No template by name %1 exists.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <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>
+ <message>
+ <location line="+32"/>
+ <source>A positional predicate must evaluate to a single numeric value.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/expr/qncnameconstructor_p.h" line="+113"/>
+ <source>The target name in a processing instruction cannot be %1 in any combination of upper and lower case. Therefore, is %2 invalid.</source>
+ <translation type="unfinished"></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 type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/expr/qpath.cpp" line="+109"/>
+ <source>The last step in a path must contain either nodes or atomic values. It cannot be a mixture between the two.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/expr/qprocessinginstructionconstructor.cpp" line="+84"/>
+ <source>The data of a processing instruction cannot contain the string %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <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="+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="+69"/>
+ <source>%1 is an invalid %2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message numerus="yes">
+ <location filename="../src/xmlpatterns/functions/qabstractfunctionfactory.cpp" line="+77"/>
+ <source>%1 takes at most %n argument(s). %2 is therefore invalid.</source>
+ <translation type="unfinished">
+ <numerusform></numerusform>
+ </translation>
+ </message>
+ <message numerus="yes">
+ <location line="+11"/>
+ <source>%1 requires at least %n argument(s). %2 is therefore invalid.</source>
+ <translation type="unfinished">
+ <numerusform></numerusform>
+ </translation>
+ </message>
+ <message>
+ <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>
+ <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 type="unfinished"></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 type="unfinished"></translation>
+ </message>
+ <message>
+ <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="+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="+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="+61"/>
+ <source>%1 was called.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <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>
+ <message>
+ <location line="+39"/>
+ <source>In the replacement string, %1 must be followed by at least one digit when not escaped.</source>
+ <translation type="unfinished"></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 type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/functions/qpatternplatform.cpp" line="+92"/>
+ <source>%1 matches newline characters</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>%1 and %2 match the start and end of a line.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Matches are case insensitive</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Whitespace characters are removed, except when they appear in character classes</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+99"/>
+ <source>%1 is an invalid regular expression pattern: %2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+30"/>
+ <source>%1 is an invalid flag for regular expressions. Valid flags are:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <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 type="unfinished"></translation>
+ </message>
+ <message>
+ <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="+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="+279"/>
+ <source>The default collection is undefined</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+13"/>
+ <source>%1 cannot be retrieved</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/functions/qstringvaluefns.cpp" line="+252"/>
+ <source>The normalization form %1 is unsupported. The supported forms are %2, %3, %4, and %5, and none, i.e. the empty string (no normalization).</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/functions/qtimezonefns.cpp" line="+87"/>
+ <source>A zone offset must be in the range %1..%2 inclusive. %3 is out of range.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+12"/>
+ <source>%1 is not a whole number of minutes.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <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="+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="+379"/>
+ <location line="+7253"/>
+ <source>%1 is an unknown schema type.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="-6971"/>
+ <source>Only one %1 declaration can occur in the query prolog.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+188"/>
+ <source>The initialization of variable %1 depends on itself</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+63"/>
+ <source>No variable by name %1 exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/parser/qparsercontext.cpp" line="+93"/>
+ <source>The variable %1 is unused</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="+2841"/>
+ <source>Version %1 is not supported. The supported XQuery version is 1.0.</source>
+ <translation type="unfinished"></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 type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+55"/>
+ <source>No function with signature %1 is available</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+72"/>
+ <location line="+10"/>
+ <source>A default namespace declaration must occur before function, variable, and option declarations.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+10"/>
+ <source>Namespace declarations must occur before function, variable, and option declarations.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+11"/>
+ <source>Module imports must occur before function, variable, and option declarations.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+200"/>
+ <source>It is not possible to redeclare prefix %1.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+18"/>
+ <source>Prefix %1 is already declared in the prolog.</source>
+ <translation type="unfinished"></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 type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+171"/>
+ <source>The Schema Import feature is not supported, and therefore %1 declarations cannot occur.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+13"/>
+ <source>The target namespace of a %1 cannot be empty.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>The module import feature is not supported</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+52"/>
+ <source>No value is available for the external variable by name %1.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="-4154"/>
+ <source>A construct was encountered which only is allowed in XQuery.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+118"/>
+ <source>A template by name %1 has already been declared.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3581"/>
+ <source>The keyword %1 cannot occur with any other mode name.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+29"/>
+ <source>The value of attribute %1 must of type %2, which %3 isn&apos;t.</source>
+ <translation type="unfinished"></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 type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+312"/>
+ <source>A variable by name %1 has already been declared.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+135"/>
+ <source>A stylesheet function must have a prefixed name.</source>
+ <translation type="unfinished"></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 type="unfinished"></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 type="unfinished"></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 type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+34"/>
+ <source>A function already exists with the signature %1.</source>
+ <translation type="unfinished"></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 type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+37"/>
+ <source>An argument by name %1 has already been declared. Every argument name must be unique.</source>
+ <translation type="unfinished"></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 type="unfinished"></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 type="unfinished"></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 type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>In an XSL-T pattern, function %1 cannot have a third argument.</source>
+ <translation type="unfinished"></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 type="unfinished"></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 type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+126"/>
+ <source>%1 is an invalid template mode name.</source>
+ <translation type="unfinished"></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 type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+758"/>
+ <source>The Schema Validation Feature is not supported. Hence, %1-expressions may not be used.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+39"/>
+ <source>None of the pragma expressions are supported. Therefore, a fallback expression must be present</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+267"/>
+ <source>Each name of a template parameter must be unique; %1 is duplicated.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+129"/>
+ <source>The %1-axis is unsupported in XQuery</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1150"/>
+ <source>%1 is not a valid name for a processing-instruction.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="-7029"/>
+ <source>%1 is not a valid numeric literal.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+6165"/>
+ <source>No function by name %1 is available.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+102"/>
+ <source>The namespace URI cannot be the empty string when binding to a prefix, %1.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>%1 is an invalid namespace URI.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>It is not possible to bind to the prefix %1</source>
+ <translation type="unfinished"></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 type="unfinished"></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 type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+15"/>
+ <source>Two namespace declaration attributes have the same name: %1.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+89"/>
+ <source>The namespace URI must be a constant and cannot use enclosed expressions.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+16"/>
+ <source>An attribute by name %1 has already appeared on this element.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+61"/>
+ <source>A direct element constructor is not well-formed. %1 is ended with %2.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+458"/>
+ <source>The name %1 does not refer to any schema type.</source>
+ <translation type="unfinished"></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 type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>%1 is not an atomic type. Casting is only possible to atomic types.</source>
+ <translation type="unfinished"></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 type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+48"/>
+ <source>The name of an extension expression must be in a namespace.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/type/qcardinality.cpp" line="+55"/>
+ <source>empty</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>zero or one</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>exactly one</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>one or more</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>zero or more</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/type/qtypechecker.cpp" line="+63"/>
+ <source>Required type is %1, but %2 was found.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+44"/>
+ <source>Promoting %1 to %2 may cause loss of precision.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+49"/>
+ <source>The focus is undefined.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <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>
+ <message>
+ <location line="+7"/>
+ <source>An attribute by name %1 has already been created.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/utils/qxpathhelper_p.h" line="+120"/>
+ <source>Only the Unicode Codepoint Collation is supported(%1). %2 is unsupported.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/acceltree/qacceltreeresourceloader.cpp" line="+314"/>
+ <source>%1 is an unsupported encoding.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+16"/>
+ <source>%1 contains octets which are disallowed in the requested encoding %2.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+18"/>
+ <source>The codepoint %1, occurring in %2 using encoding %3, is an invalid XML character.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <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="+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 type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+14"/>
+ <source>The prefix %1 cannot be bound.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+10"/>
+ <source>Only the prefix %1 can be bound to %2 and vice versa.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <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="+145"/>
+ <source>The parameter %1 is required, but no corresponding %2 is supplied.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="-71"/>
+ <source>The parameter %1 is passed, but no corresponding %2 exists.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <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="+519"/>
+ <source>Element %1 is not allowed at this location.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>Text nodes are not allowed at this location.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+20"/>
+ <source>Parse error: %1</source>
+ <translation type="unfinished"></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 type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+20"/>
+ <source>Running an XSL-T 1.0 stylesheet with a 2.0 processor.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+108"/>
+ <source>Unknown XSL-T attribute %1.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+23"/>
+ <source>Attribute %1 and %2 are mutually exclusive.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+166"/>
+ <source>In a simplified stylesheet module, attribute %1 must be present.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+72"/>
+ <source>If element %1 has no attribute %2, it cannot have attribute %3 or %4.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>Element %1 must have at least one of the attributes %2 or %3.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+28"/>
+ <source>At least one mode must be specified in the %1-attribute on element %2.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <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>
+ <message>
+ <location line="+6"/>
+ <source>Attribute %1 cannot appear on the element %2. Only %3 is allowed, and the standard attributes.</source>
+ <translation type="unfinished"></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 type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>Attribute %1 cannot appear on the element %2. Allowed is %3, and the standard attributes.</source>
+ <translation type="unfinished"></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 type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+12"/>
+ <source>The attribute %1 must appear on element %2.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>The element with local name %1 does not exist in XSL-T.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/parser/qxslttokenizer.cpp" line="+123"/>
+ <source>Element %1 must come last.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+24"/>
+ <source>At least one %1-element must occur before %2.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Only one %1-element can appear.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+31"/>
+ <source>At least one %1-element must occur inside %2.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+58"/>
+ <source>When attribute %1 is present on %2, a sequence constructor cannot be used.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+13"/>
+ <source>Element %1 must have either a %2-attribute or a sequence constructor.</source>
+ <translation type="unfinished"></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 type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+270"/>
+ <source>Element %1 cannot have children.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+434"/>
+ <source>Element %1 cannot have a sequence constructor.</source>
+ <translation type="unfinished"></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 type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+15"/>
+ <source>A parameter in a function cannot be declared to be a tunnel.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+149"/>
+ <source>This processor is not Schema-aware and therefore %1 cannot be used.</source>
+ <translation type="unfinished"></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 type="unfinished"></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 type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+20"/>
+ <source>Attribute %1 cannot have the value %2.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+58"/>
+ <source>The attribute %1 can only appear on the first %2 element.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+99"/>
+ <source>At least one %1 element must appear as child of %2.</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>VolumeSlider</name>
+ <message>
+ <location filename="../src/3rdparty/phonon/phonon/volumeslider.cpp" line="+67"/>
+ <source>Muted</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <location line="+15"/>
+ <source>Volume: %1%</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/translations/qt_pl.ts b/translations/qt_pl.ts
index b7b9cb76b2..7f9ec8d4ce 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 c04456ad18..b00aaa0e7d 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 3d05b71383..28e786bc48 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 f681d1b499..1bf53e7f82 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 f27480d2c8..d6affce68d 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 c16a645045..9c1b1f448a 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 cbedebaf64..35a2802247 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 14ec1cdd6c..b0a794707a 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 5fccebf245..bcb6f8db49 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 cff5eb1199..cafc022649 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 09f8985e80..e0f85c328f 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 90d3e6bc44..63e198c592 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 88f9bb08fd..d55614dd77 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 ac425036ae..a5baaed945 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 0f7522751c..cc181324ee 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 cbccfe396a..d9c816de31 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 a48aae49f3..b789479a47 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/qlalr/doc/qlalr.qdocconf b/util/qlalr/doc/qlalr.qdocconf
index d97ff7d217..a97ef6a89e 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 c43464975e..5ca8c88a21 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 1268b5e70d..d4e6d9e0f2 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 &&
@@ -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 &&